Growatt Modbus Daten per RS232 Wifi Bridge an Iobroker senden
Ziel war es die Daten per Wifi an Iobroker zu senden. Die vom Modbus verarbeiteten Daten stelle ich dann auf dem Tochscreen im Flur dar,
die Aktualisierung erfolgt etwa aller 10 Sekunden mit Shine Stick, ohne Stick stellt man den Intervall im Modbus Adapter ein.
Benötigte Hardware:
-1 x RS232 Stecker mit Mainboard Anschlusskabel und Buchse
-1 x RS232 Stecker Männlich
-1 x RS232 Buchse Weiblich oder Stecker mit Gender Changer
-MAX3232 RS232 Schnittstelle auf TTL Konverter Modul
-LM317 mit R1 240 Ohm und R2 720 Ohm
-Lochrasterplatine, Jumperkabel, Stiftleiste
-WEMOS D1 mini oder NodeMCU
Die RS232 Anschlüsse, den LM317 und die Widerstände habe ich aus alter PC Hardware gewonnen, das TTL Modul und den WEMOS in China bestellt. Der Inverter stellt am RS232 Pin9 8 Volt Spannung bereit, der LM317 macht mit den beiden Widerständen 5 Volt daraus. Die werden an VIn des WEMOS gegeben, dessen 3,3 Volt Anschluss versorgt den TTL Wandler, damit der 3,3 Volt Pegel an TX und RX für den WEMOS bereitstellt. Man kann die Spannungsversorgung natürlich auch mit einem USB Netzteil realisieren.
Pin2 am RS232 Anschluss des Inverter ist TX, Pin3 ist RX, Pin5 GND, Pin9 Spannung. Diese werden 1:1 mit der RS232 Buchse für den Shine Stick verbunden, sofern dieser mit genutzt werden soll.
Soll der Shine Wifi Stick genutzt werden, gelten folgende Verbindungen: TX Leitung vom Inverter an RX Pin3 am RS232 Stecker für TTL Wandler, RX vom TTL an RX am WEMOS. Die RX Leitung vom Inverter hat keine Verbindung zum TTL, respektive zum WEMOS. Der Modbus Adapter empfängt dann nur die Daten mit, die vom Shine Stick angefordert werden. Ist die RX Leitung mit verbunden, funktioniert der Shine Stick nicht. Bei dieser Variante kommt es jedoch zu Fehlermeldungen im Log des Iobroker/Modbus, die Daten werden jedoch meist korrekt gelesen, ab und zu jedoch auch Nonsens, dann steht zum Beispiel bei Inverter Status "20000" als Wert.
Soll der Shine Wifi Stick NICHT genutzt werden, gelten folgende Verbindungen: TX Leitung vom Inverter an RX Pin3 am RS232 Stecker für TTL Wandler, RX Leitung vom Inverter an TX Pin2 am RS232 Stecker für TTL Wandler, RX vom TTL an RX am WEMOS, TX vom TTL an TX am WEMOS.
Fertig sieht das dann so aus,
über das Layout lässt sich streiten, aber es funktioniert erstmal.
Benötige Software:
-ESP Link auf Github
-ESPRESSIF Flash Download Tool Download Page
-Iobroker
-Modbus Adapter
Alle Arduino Sketche die ich für Growatt oder Serial to Wifi gefunden hatte, haben keinen Erfolg gebracht. Nur die ESP Link Software hat funktioniert.
Flash Einstellungen siehe Bild:
Im esp-link Programm "Pin assignment" auf "esp-12" setzen und nach Anleitung auf der Homepage für das heimische Wifi konfigurieren. Diese stellt dann die Daten des Inverters an der IP des WEMOS am Port 23 bereit. Abfragen kann man diese mit dem Modbus Adapter im Iobroker, Einstellungen siehe Bild:
Mit "Poll delay" stellt man die Abfragezeit ein, mit der die Werte aktualisiert werden, sofern kein Stick angeschlossen ist. Wenn ein Stick angeschlossen ist, beinflusst dieser Wert die Häufigkeit der auftretenden Abfragefehler. Da bin ich noch am testen, um die Häufigkeit zu reduzieren.
Die Eingansregister sind wie abgebildet in dieser Reihenfolge einzutragen. Das gilt insbesondere für die Register "Generated Power", da sonst die Werte nicht korrekt angezeigt werden, auch wenn bei Register 27 und 29 "0 Kwh" steht.
Ist die Hardware korrekt angeschlossen, sollte die Blaue LED des WEMOS blinken und die Konsole (9600 baud und 8N1 einstellen) vom ESP Link (IP vom WEMOS im Browser) folgendes Bild zeigen (hier mit Shine Stick):
QNB3920002 ist die Seriennummer, GEAD1022 und BG.2.0 die Firmware Version.
Werte im Iobroker: