growatt-bridge
Ein Hybrid-Wechselrichter spricht mit Home Assistant, zu meinen Bedingungen.
Eine selbstgebaute Modbus-Bridge zwischen einem privaten Hybrid-Solar-Wechselrichter und Home Assistant: liest Leistungs-, Batterie- und Netzdaten per Modbus und veröffentlicht sie via MQTT-Auto-Discovery, mit dokumentierter, aus dem Code generierter Registerkarte und Mock-Modus für Entwicklung ohne echte Hardware.
Standort-/Netzwerkdetails sind hier bewusst generisch gehalten – beschrieben wird der Mechanismus, nicht die konkrete Anlage.
- Stack
- Python · Modbus TCP · MQTT (Home-Assistant-Discovery) · Docker · pytest
- Zeitrahmen
- Designdokument 25.07.2026 → live an der echten Anlage 03.08.2026.
- Rolle
- Solo-Build — Design bis Deployment.
- Umfang
- 16 Python-Dateien · ~3.840 Zeilen · 60 Tests (Zählung 16.09.2026).
Vermeidung von Cloud-Abhängigkeiten und Bus-Konflikten
Die offizielle Integration des Growatt SPH 10 kW Hybrid-Wechselrichters läuft über die Hersteller-Cloud und wird bewusst vermieden. Lokale Integrationen funktionieren technisch, scheitern jedoch an der Bus-Arbitrierung, da die RS485-Seite genau einen Modbus-Master zulässt. Zwei Clients am selben Gateway erzeugen kollidierende Transaktionen und Timeouts, die wie Verkabelungsfehler wirken. Die eigene Bridge gewinnt dieses Entweder-oder durch eine gegen genau diese Firmware verifizierte Registerkarte und den abgesicherten Schreibpfad.
Architektur: Modbus, MQTT und Discovery
Ein Python-Dienst liest den Wechselrichter per Modbus aus und veröffentlicht die Daten an einen MQTT-Broker. Home Assistant legt die Sensoren über MQTT Discovery selbst an. Der MQTT-Zwischenschritt stellt sicher, dass der Poller HA-Neustarts überlebt und der Schreibpfad als einziger, protokollierter Pfad bleibt. Kein Add-on wird verwendet, da die Bridge bei einer Blackout-Übung der einzige Leser bleibt und ein Add-on mit Home Assistant stirbt, genau dann, wenn die Daten zählen.
Von Design und Mock zu Hardware
Das Design wurde vor dem Code erstellt, gefolgt vom Mock-Modus am 25.07.2026 und der Anbindung an den echten Wechselrichter am 03.08.2026. Die Rechnung aus PV 440 W plus Batterieentladung 170 W ergibt exakt die Last von 610 W. Diese Summe stimmt nur dann, wenn sowohl die Adresse als auch die Skalierung aller drei Register korrekt sind. Der Abgleich mit dem Display des Wechselrichters bestätigte die Werte bis auf die Dezimalstelle.
Softwarestruktur und automatisierte Validierung
Die Software umfasst 16 Python-Dateien, rund 3.840 Zeilen und 60 pytest-Testfunktionen. Das Registerdokument wird aus dem Code generiert, wobei ein Test bei jeder Abweichung sofort fehlschlägt. Ein Mock-Modus ermöglicht die Entwicklung ohne Hardware, während ein Sweep-Werkzeug bei gestoppter Bridge Registerblöcke kartiert. Ein Timer prüft alle 6 Stunden auf Änderungen, baut den Docker-Container bei Bedarf neu und rollt bei Fehlschlag automatisch zurück.
Fünffach abgesicherter Schreibpfad
Der Schreibpfad ist mit Whitelist, Readback-Verify, Rate-Limit, Status-Gate und Audit-Log fünffach abgesichert. Er bleibt jedoch per Konfiguration gesperrt, da das Statusregister nur den konfigurierten Modus und nicht den realen Energiefluss meldet. Zudem zeigte die AC-Ausgangsspannung im kontrollierten Test am 04.08.2026 bei abgeschaltetem Netz weiterhin rund 230 V. Solange kein Register den Inselbetrieb zuverlässig anzeigt, bleibt der Schreibpfad aus.
Datenfluss zum Dashboard
Es werden 105 Entitäten direkt aus dem Wechselrichter, 5 von der Bridge berechnete Werte und 16 Template-Sensoren in Home Assistant übertragen. Ein weiterer Sensor trägt die Build-Identität der Bridge. Das daraus generierte Sensordokument definiert die Herkunft und Einheit jedes Wertes; Daten ohne verlässliche Messung werden dekodiert, aber nicht veröffentlicht.
Kontakt
Interesse an einem Walkthrough?
Der Quellcode ist privat — Architektur und Code gehe ich aber gern in einem Gespräch mit Ihnen durch, NDA-freundlich.
Kontakt