diff --git a/README.md b/README.md index 985c9a4..3d4f3f4 100644 --- a/README.md +++ b/README.md @@ -1,169 +1,185 @@ # Growatt Wechselrichter → Home Assistant (ohne Cloud) -Dieses Repository enthält ESPHome-Konfigurationen für Growatt Wechselrichter, die über den **Growatt SuniStick** (ESP8266) per Modbus RTU direkt in Home Assistant OS integriert werden — vollständig ohne die Growatt-App oder Cloud. +Lokale Integration von Growatt Wechselrichtern in Home Assistant OS — vollständig ohne Growatt-App oder Cloud. Dieses Repository enthält zwei unabhängige Lösungen je nach Hardware: + +| Hardware | Lösung | Status | +|---|---|---| +| **Growatt ShineLAN-X** (LAN-Stick, STM32) | NuttX-Firmware + HAOS Add-on | ✅ Produktiv | +| **Growatt ShineWifi-X** (WLAN-Stick, ESP8266) | ESPHome-Konfigurationen | ✅ Getestet | --- -## Funktionsprinzip +## Lösung 1: ShineLAN-X + HAOS Add-on (empfohlen) + +Der **Growatt ShineLAN-X** ist ein LAN-Monitoring-Stick mit einem STM32F103-Mikrocontroller. Er steckt im USB-Port des Wechselrichters und kommuniziert via Modbus RTU. + +### Wie es funktioniert ``` -PV-Anlage - │ -[Growatt Wechselrichter] - │ RS485 / Modbus RTU -[Growatt SuniStick] ← ESP8266 mit ESPHome-Firmware - │ Wi-Fi -[Home Assistant OS] +Growatt Wechselrichter + │ USB (Modbus RTU) +[ShineLAN-X] ← STM32F103 mit NuttX-Firmware + │ Modbus TCP Port 502 (Ethernet) +[HAOS Add-on] + ├── liest Sensordaten per Modbus TCP + ├── publiziert via MQTT Discovery → Home Assistant Sensoren + └── Web UI (Wechselrichter verwalten, Live-Daten, Verlaufsgraphen) ``` -Der SuniStick steckt im RS485-Port des Wechselrichters und kommuniziert per **Modbus RTU** (115200 Baud). ESPHome liest die Register aus und stellt sie als Sensoren in HAOS bereit. Keine Cloud, keine App, kein Intermediär. +### Features ---- +- **Mehrere Wechselrichter** — beliebig viele, jeder mit eigenem HA-Gerät +- **MQTT Discovery** — Sensoren erscheinen automatisch in HA (kein manuelles Anlegen) +- **Web UI** — Wechselrichter hinzufügen/bearbeiten, Live-Daten mit Sparklines (5 Min) +- **OTA-Updates** — NuttX-Firmware via USB DFU aktualisierbar (kein ST-Link nötig) +- **Kein Cloud-Zwang** — alles lokal im Heimnetz -## Unterstützte Modelle +### Unterstützte Wechselrichter-Modelle -| Modell | Typ | Phasen | Batterie | Status | -|--------|-----|--------|----------|--------| -| [Growatt MIC 1500 TL-X](./Growatt%20MIC%201500%20TL-X/) | String-WR | 1-phasig | Nein | Getestet ✓ | -| [Growatt SPH 5000 TL3-BH-UP](./Growatt%20SPH%205000%20TL3/) | Hybrid-WR | 3-phasig | Ja | Getestet ✓ | +| Modell | Typ | Sensoren | +|---|---|---| +| Growatt MIC 1500/2000 TL-X | 1-phasig | 10 | +| Growatt SPH 5000 TL3-BH-UP | 3-phasig + Batterie | 28 | +| Growatt MOD 6000 TL3-XH | 3-phasig | 17 | -Andere Growatt-Modelle verwenden teilweise dieselben Register — die Konfigurationen können als Ausgangsbasis dienen, die Adressen müssen aber anhand des jeweiligen Datenblatts geprüft werden. +### Installation (HAOS Add-on) ---- - -## Hardware: Growatt SuniStick - -Der SuniStick ist ein offizielles Growatt-Zubehör und enthält einen **ESP8266-Chip** (Board: `esp07s`). Er wird direkt in den RS485-Port des Wechselrichters gesteckt. - -**UART-Pinbelegung (intern):** -- TX: GPIO 1 -- RX: GPIO 3 -- Baud: 115200 - -**LED-Pinbelegung:** -- Blau: GPIO 16 -- Grün: GPIO 0 -- Rot: GPIO 2 - ---- - -## SuniStick flashen - -> Der SuniStick muss einmalig mit ESPHome-Firmware geflasht werden. Danach sind OTA-Updates möglich. - -### Voraussetzungen - -- [ESPHome](https://esphome.io) installiert (z.B. als HAOS Add-on oder per pip) -- USB-zu-Serial-Adapter (3,3 V!) zum erstmaligen Flashen -- SuniStick geöffnet (4 Schrauben) und mit dem Adapter verbunden - -### Verkabelung zum Flashen - -| SuniStick | USB-Serial-Adapter | -|-----------|--------------------| -| TX | RX | -| RX | TX | -| GND | GND | -| 3,3 V | 3,3 V | - -GPIO 0 muss beim Start auf GND gezogen werden (Flash-Modus). - -### YAML vorbereiten - -1. Passende YAML aus diesem Repository kopieren -2. Die vier markierten Platzhalter durch eigene Werte ersetzen: - -```yaml -api: - encryption: - key: "HIER_API_KEY_EINTRAGEN" # In der ESPHome-UI auf "Generate" klicken → Key kopieren - -ota: - - platform: esphome - password: "HIER_OTA_PASSWORT_EINTRAGEN" # Frei wählbar, z.B. "meinOTApasswort123" - -wifi: - ssid: "HIER_WLAN_NAME_EINTRAGEN" # Genauer WLAN-Name (Groß-/Kleinschreibung beachten) - password: "HIER_WLAN_PASSWORT_EINTRAGEN" # WLAN-Passwort - ap: - password: "HIER_HOTSPOT_PASSWORT_EINTRAGEN" # Min. 8 Zeichen — für den Notfall-Hotspot -``` - -> Der API-Key wird in der ESPHome-UI automatisch generiert, wenn man eine neue Config anlegt. Alternativ kann man einen beliebigen 32-Byte Base64-String verwenden. - -### Flashen (Erstinstallation) +**Schritt 1 — NuttX auf den ShineLAN-X flashen** *(einmalig, ST-Link nötig)* ```bash -esphome run growatt-mic-1500.yaml +# dapboot Bootloader (0x08000000) +~/.platformio/packages/tool-stm32duino/stlink/st-flash write \ + ShineLAN-X/releases/dapboot.bin 0x08000000 + +# NuttX Firmware (0x08002000) +~/.platformio/packages/tool-stm32duino/stlink/st-flash write \ + ShineLAN-X/releases/nuttx-mbusd-shinelanx-dfu.bin 0x08002000 ``` -oder über die ESPHome-Web-UI im HAOS Add-on. +SWD-Pinbelegung: PA13=SWDIO, PA14=SWCLK, GND, 3.3V -Nach dem ersten Flash sind alle weiteren Updates per **OTA über Wi-Fi** möglich — kein Aufschrauben mehr nötig. +**Schritt 2 — Add-on in Home Assistant installieren** + +1. **Einstellungen → Add-ons → Add-on-Store → ⋮ → Repositories** +2. URL eintragen: `https://gitea.bitfire.work/retr0/Growatt-Wechselrichter-HAOS` +3. „Growatt ShineLAN-X" → Installieren +4. MQTT-Zugangsdaten in der Add-on-Konfiguration eintragen +5. Starten → Web UI öffnen → Wechselrichter hinzufügen + +**Schritt 3 — Wechselrichter im Web UI konfigurieren** + +Im Tab „Wechselrichter" → „+ Wechselrichter hinzufügen": +- Name (z.B. „Dach Süd") +- Modell auswählen +- IP-Adresse des ShineLAN-X +- MQTT Topic-Präfix (z.B. `growatt/dach`) + +Sensoren erscheinen danach automatisch in HA unter **Einstellungen → Geräte & Dienste → MQTT**. + +### Flash-Layout NuttX + +``` +0x08000000 dapboot (7 KB) ← Bootloader, ermöglicht OTA via USB DFU +0x08002000 NuttX (93 KB) ← Modbus RTU ↔ TCP Gateway auf Port 502 +``` + +### Hardware ShineLAN-X + +| Komponente | Details | +|---|---| +| MCU | STM32F103RC (256 kB Flash, 64 kB RAM) | +| Ethernet | ENC28J60 (SPI2) | +| USB | PA11=D−, PA12=D+, PA8=Pullup | +| Debug UART | USART1, PA9=TX, PA10=RX, 115200 Baud | +| SWD | PA13=SWDIO, PA14=SWCLK | +| LEDs | PC7 (blau intern), PB1 (rot), PB0 (grün), PC5 (blau RGB) | --- -## Integration in Home Assistant +## Lösung 2: ShineWifi-X (ESPHome) -Nach dem ersten Start verbindet sich ESPHome automatisch mit HAOS. Home Assistant erkennt das Gerät per mDNS und zeigt eine Benachrichtigung zur Integration an. +Der **Growatt ShineWifi-X** ist ein WLAN-Monitoring-Stick mit ESP8266. Er steckt im RS485-Port des Wechselrichters. ESPHome liest die Register direkt aus und meldet sie an Home Assistant. -**Einstellungen → Geräte & Dienste → ESPHome → Gerät hinzufügen** +``` +Growatt Wechselrichter + │ RS485 / Modbus RTU +[ShineWifi-X] ← ESP8266 mit ESPHome-Firmware + │ WLAN +[Home Assistant OS] ← native ESPHome-Integration +``` -Alle konfigurierten Sensoren erscheinen danach automatisch als Entitäten. +### Unterstützte Modelle (ShineWifi-X) -### Energie-Dashboard +| Modell | YAML | +|---|---| +| Growatt MIC 1500 TL-X | `ShineWifi-X/Growatt MIC 1500 TL-X/` | +| Growatt MIC 2000 TL-X | `ShineWifi-X/Growatt MIC 2000 TL-X/` | +| Growatt SPH 5000 TL3-BH-UP | `ShineWifi-X/Growatt SPH 5000 TL3/` | +| Growatt MOD 6000 TL3-XH | `ShineWifi-X/Growatt MOD 6000 TL3-XH/` | -Für das HA Energie-Dashboard werden kumulative kWh-Sensoren benötigt (`state_class: total_increasing`). Diese sind in den Konfigurationen bereits korrekt gesetzt. +### ShineWifi-X flashen -**Einstellungen → Energie → Konfigurieren:** +> Erstinstallation benötigt einen USB-zu-Serial-Adapter (3,3 V). Danach OTA über WLAN möglich. -| Dashboard-Feld | Sensor (SPH) | Sensor (MIC) | -|----------------|-------------|--------------| -| Solar-Erzeugung | `Energy Total` | `EnergyTotal` | -| Netzbezug | `Energy Import Total` | — | -| Netzeinspeisung | `Energy Export Total` | — | -| Batterie laden | `Battery Charge Total` | — | -| Batterie entladen | `Battery Discharge Total` | — | +1. YAML aus dem passenden Modell-Ordner kopieren +2. WLAN-Zugangsdaten und API-Key eintragen +3. Erstinstallation via seriell: +```bash +esphome run ShineWifi-X/Growatt\ MIC\ 1500\ TL-X/*.yaml +``` + +UART-Pinbelegung ShineWifi-X: TX→GPIO1, RX→GPIO3, Baud 115200 --- -## Modbus-Adressen: Modellunterschiede - -Growatt verwendet je nach Wechselrichter-Serie unterschiedliche Register-Maps. Die Adressen aus einer Config lassen sich **nicht 1:1 auf andere Modelle übertragen**. - -| Serie | Typische Modelle | Besonderheit | -|-------|-----------------|--------------| -| MIC | MIC 600–2000 TL-X | 1-phasig, kein Batterie-Bereich | -| MIN | MIN 2500–6000 TL-XH | 1-phasig, Hybrid | -| SPH | SPH 3000–6000 TL3-BH | 3-phasig, Hybrid, Batterie im 1000er-Bereich | -| MOD | MOD 5000–15000 TL3-XH | 3-phasig, Hybrid, abweichende Map | - ---- - -## Struktur des Repositories +## Repository-Struktur ``` . -├── README.md ← Diese Datei -├── Growatt MIC 1500 TL-X/ -│ └── Growatt MIC 1500 TL-X.yaml ← ESPHome Config -└── Growatt SPH 5000 TL3/ - ├── Growatt SPH 5000 TL3-BH-UP.yaml - └── README.md ← Modbus-Registertabelle +├── README.md +├── haos-addon/ ← HAOS Add-on (ShineLAN-X) +│ ├── config.yaml # Add-on Manifest +│ ├── Dockerfile +│ ├── build.yaml +│ └── src/ +│ ├── main.py # Flask + Poll-Threads +│ ├── modbus_client.py # pymodbus Modbus TCP +│ ├── mqtt_publisher.py # MQTT Discovery +│ ├── inverters.py # Register-Definitionen +│ └── web/index.html # Web UI +├── ShineLAN-X/ +│ ├── firmware/ # Arduino-Stack (aufgegeben, rx=0) +│ └── releases/ +│ ├── nuttx-mbusd-shinelanx.bin # NuttX ohne DFU +│ └── nuttx-mbusd-shinelanx-dfu.bin # NuttX mit dapboot (empfohlen) +├── ShineWifi-X/ ← ESPHome Configs +│ ├── Growatt MIC 1500 TL-X/ +│ ├── Growatt MIC 2000 TL-X/ +│ ├── Growatt SPH 5000 TL3/ +│ └── Growatt MOD 6000 TL3-XH/ +└── shinelanx-modbus/ ← mwalle NuttX Board-Support + └── contrib/dapboot/dapboot.bin ``` --- -## Beitragen +## Modbus-Registerübersicht (Growatt, FC04) -Wer eine eigene Growatt-Config ergänzen möchte: - -1. Neuen Ordner nach Schema `Growatt MODELL/` anlegen -2. YAML-Config mit korrekten Modbus-Adressen (aus dem offiziellen Datenblatt oder verifiziert) einfügen -3. README mit Registertabelle dazulegen (Vorlage: [Growatt SPH 5000 TL3/README.md](./Growatt%20SPH%205000%20TL3/README.md)) +| Register | Sensor | Modelle | Scale | +|---|---|---|---| +| 3 | PV Spannung | alle | ×0.1 V | +| 4 | PV Strom | alle | ×0.1 A | +| 5–6 | PV Leistung | alle | ×0.1 W | +| 37 | Netz-Frequenz | alle | ×0.01 Hz | +| 38 | Netz-Spannung | alle | ×0.1 V | +| 40–41 | AC Ausgangsleistung | alle | ×0.1 W | +| 53–54 | Energie Heute | alle | ×0.1 kWh | +| 55–56 | Energie Gesamt | alle | ×0.1 kWh | +| 93 | Temperatur | alle | ×0.1 °C | +| 1009–1058 | Batterie + Netz | SPH | ×0.1 | --- ## Lizenz -Frei verwendbar und anpassbar. Passwörter, API-Keys und WLAN-Daten sind in allen Configs durch sprechende Platzhalter (`HIER_..._EINTRAGEN`) markiert — diese müssen vor dem Einsatz individuell gesetzt werden. +Frei verwendbar und anpassbar. Keine Garantie für Richtigkeit der Modbus-Register — immer gegen das offizielle Growatt-Datenblatt des jeweiligen Modells prüfen.