diff --git a/README.md b/README.md index 32b219e..cf94bb0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # ShineBridge -Lokale Solar-Wechselrichter-Integration für Home Assistant — ohne Cloud, ohne Hersteller-App. Modbus TCP via ShineLAN-X, MQTT Discovery, persistente History. +Lokale Solar-Wechselrichter-Integration für Home Assistant — ohne Cloud, ohne Hersteller-App. Modbus TCP via ShineLAN-X, MQTT Discovery, persistente History, PV-Überschussladen. > **Repository:** `https://gitea.bitfire.work/retr0/shinebridge` @@ -10,7 +10,7 @@ Lokale Solar-Wechselrichter-Integration für Home Assistant — ohne Cloud, ohne | Komponente | Beschreibung | Status | |---|---|---| -| **ShineBridge Add-on** | HAOS Add-on: Modbus TCP → MQTT Discovery | ✅ v1.3.0 | +| **ShineBridge Add-on** | HAOS Add-on: Modbus TCP / UDP → MQTT Discovery | ✅ v1.5.3 | | **ShineLAN-X Firmware** | NuttX auf STM32F103: Modbus RTU ↔ TCP | ✅ Produktiv | | **ShineWifi-X ESPHome** | ESPHome-Configs für ESP8266-Stick | ✅ Getestet | | **ShineDiag** | Portables Vor-Ort-Diagnose-Tool (Pi 3B) | ✅ Bereit | @@ -23,24 +23,31 @@ Lokale Solar-Wechselrichter-Integration für Home Assistant — ohne Cloud, ohne ``` Wechselrichter / Energiezähler - │ USB oder RS485 (Modbus RTU) + │ Modbus RTU (RS485 / USB) [ShineLAN-X] ← STM32F103, NuttX, Modbus RTU ↔ TCP │ Modbus TCP Port 502 (LAN) + │ + │ UDP/8899 (Goodwe) + │ Modbus TCP Port 502 (Kathrein Wallbox) + │ [ShineBridge Add-on] - ├── Modbus TCP lesen (pymodbus) + ├── Modbus TCP / Goodwe UDP / Kathrein Wallbox lesen + ├── EMS-Controller: PV-Überschussladen + Zwangsladen ├── MQTT Discovery → Home Assistant Sensoren ├── Aggregat-Gerät „ShineBridge Gesamt" ├── Persistente History (SQLite, 7 Tage) - └── Web UI: Geräte verwalten, Live-Daten, Sparklines + └── Web UI: Geräte verwalten, Live-Daten, Sparklines, EMS-Konfig ``` ### Features -- **Multi-Gerät** — beliebig viele Wechselrichter + Zähler, jeder als eigenes HA-Gerät +- **Multi-Gerät** — beliebig viele Wechselrichter + Zähler + Wallbox, jeder als eigenes HA-Gerät - **MQTT Discovery** — Sensoren erscheinen automatisch in HA - **Aggregat-Gerät** — summiert alle Geräte für das HA Energie-Dashboard - **Persistente History** — Messwerte überleben Add-on-Neustarts (SQLite, 7 Tage) - **Sparklines** — Live-Graphen der letzten 5 Minuten pro Sensor +- **EMS-Controller** — PV-Überschussladen der Kathrein Wallbox, Zwangsladen-Fallback +- **Konfig-Export/Import** — JSON im Einstellungen-Tab - **Kein Cloud-Zwang** — vollständig lokal ### Unterstützte Geräte @@ -50,7 +57,36 @@ Wechselrichter / Energiezähler | Growatt MIC 1500/2000 TL-X | PV 1-phasig | 10 | Modbus FC04 | | Growatt SPH 5000 TL3-BH-UP | Hybrid 3-phasig + Batterie | 28 | Modbus FC04 | | Growatt MOD 6000 TL3-XH | PV 3-phasig | 17 | Modbus FC04 | -| Eastron SDM-630 | Drehstromzähler | 16 | Modbus FC04, Float32 | +| Eastron SDM-630 | Drehstromzähler | 16 | Modbus FC03, Float32 | +| Goodwe GW10KN-ET | Hybrid 3-phasig + Batterie | 39 | UDP/8899 (goodwe lib) | +| Kathrein Wallbox | EVSE + Meter + EMS | 18 | Modbus FC03, TCP/502 | + +### EMS — PV-Überschussladen (Kathrein Wallbox) + +Der EMS-Controller regelt den Ladestrom der Kathrein Wallbox anhand des PV-Überschusses: + +1. **PV-Laden** — Überschuss ≥ Mindestleistung (Standard: 1400 W = 6 A × 230 V): Ladestrom = verfügbare PV-Leistung / Phasen +2. **Warten** — Kein ausreichender Überschuss: Laden pausiert, Timer läuft +3. **Zwangsladen** — Nach Timeout ohne PV (Standard: 4 h): Laden mit Maximalstrom bis zur Zielzeit (Standard: 06:00 Uhr) + +Konfigurierbar pro Gerät im Web UI: + +| Parameter | Beschreibung | Standard | +|---|---|---| +| Mindest-PV-Überschuss | Untergrenze für PV-Laden | 1400 W | +| Timeout ohne PV | Stunden bis Zwangsladen | 4 h | +| Vollladung bis | Zielzeit für Zwangsladen | 06:00 | +| Anzahl Phasen | 1 / 2 / 3-phasig | 3 | + +> **Hinweis:** Die EMS-Funktion muss in der Kathrein easyOperate-App aktiviert sein. + +### Netzleistung (grid_power) + +Der Sensor `grid_power` (Goodwe) zeigt die Netzleistung intuitiv: +- **Positiv** = Netzbezug (Strom vom Netz) +- **Negativ** = Einspeisung (Strom ins Netz) + +Bei reinen Growatt-Anlagen (ohne Goodwe) wird `power_to_grid` als Proxy verwendet (nur Einspeisung bekannt). ### Installation @@ -77,7 +113,8 @@ SWD-Pinbelegung: `PA13=SWDIO PA14=SWCLK GND 3.3V` **Schritt 3 — Gerät konfigurieren** Im Web UI → „+ Gerät hinzufügen": -- Name, Modell, IP des ShineLAN-X, MQTT Topic-Präfix +- Name, Modell, IP, Port, Modbus-Adresse, MQTT Topic-Präfix, Abfrageintervall +- Bei Kathrein Wallbox: EMS-Parameter konfigurieren Sensoren erscheinen danach unter **Einstellungen → Geräte & Dienste → MQTT**. @@ -88,10 +125,10 @@ Das Aggregat-Gerät „ShineBridge Gesamt" stellt folgende Sensoren bereit: | Sensor | Beschreibung | |---|---| | PV Gesamtleistung | Summe aller PV-Eingänge (W) | -| AC Gesamtleistung | Summe aller AC-Ausgänge (W) | -| Netzleistung | Netzbezug/Einspeisung via SDM-630 (W) | +| Netzleistung | Netzbezug (+) / Einspeisung (−) am Hausanschluss (W) | | Netzbezug / Einspeisung Gesamt | kWh-Zähler für Energie-Dashboard | | Batterie Ladezustand Ø | Durchschnitt aller Batterien (%) | +| Batterie Lade-/Entladeleistung | Summe (W) | ### History API @@ -188,8 +225,11 @@ shinebridge/ │ ├── config.yaml │ ├── Dockerfile │ └── src/ -│ ├── main.py # Flask, Poll-Threads, REST API +│ ├── main.py # Flask, Poll-Threads, REST API, Aggregation │ ├── modbus_client.py # Modbus TCP, Float32-Dekodierung +│ ├── goodwe_client.py # Goodwe UDP/8899 via goodwe-Bibliothek +│ ├── wallbox_client.py # Kathrein Wallbox Modbus TCP +│ ├── ems_controller.py # PV-Überschussladen + Zwangsladen │ ├── mqtt_publisher.py # MQTT Discovery + Aggregat │ ├── inverters.py # Register-Maps aller Geräte │ ├── history.py # SQLite Persistenz @@ -201,10 +241,6 @@ shinebridge/ ├── ShineWifi-X/ ← ESPHome Configs ├── tools/ │ └── shinediag/ ← Vor-Ort-Diagnose-Tool -│ ├── diagnose.py -│ ├── web/index.html -│ └── setup/ # Pi-Konfiguration + install.sh -├── ROADMAP.md └── repository.yaml ```