NEWS
Growatt Wechselrichter über Modbus auslesen - gelöst -
-
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 NodeMCUDie 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 AdapterAlle 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:

Bevor ich mich jetzt dransetze eine eigene Platine mit ESP8266, einem MAX3232 und ein bisschen Hühnerfutter zu basteln schaute ich mir mal den für ~20€ mitgelieferten Growatt WIFI-S genauer an.
Der Stick meldete sich als Client an meinem UnifiController mit einem ESP Typischen Namen an.
Das weckte natürlich mein Interesse🧐
Also kurzerhand das teil abgebaut, unter ner leicht verklebten Moosgummidichtung 4 kleine Schrauben rausgeschraubt und dann diese schöne Platine entdeckt.Meint ihr, die wäre mit einer alternativen Firmware in der Lage, mir die vom Wechselrichter gelieferten Daten zu senden?
Über putty konnte ich bereits den boot des ESPs bai 115200Baud verfolgen. Danach aber nur noch Hieroglyphen.

-
Bevor ich mich jetzt dransetze eine eigene Platine mit ESP8266, einem MAX3232 und ein bisschen Hühnerfutter zu basteln schaute ich mir mal den für ~20€ mitgelieferten Growatt WIFI-S genauer an.
Der Stick meldete sich als Client an meinem UnifiController mit einem ESP Typischen Namen an.
Das weckte natürlich mein Interesse🧐
Also kurzerhand das teil abgebaut, unter ner leicht verklebten Moosgummidichtung 4 kleine Schrauben rausgeschraubt und dann diese schöne Platine entdeckt.Meint ihr, die wäre mit einer alternativen Firmware in der Lage, mir die vom Wechselrichter gelieferten Daten zu senden?
Über putty konnte ich bereits den boot des ESPs bai 115200Baud verfolgen. Danach aber nur noch Hieroglyphen.

@markbinary das ding macht nichts anderes als der Wemo D1 mini mit nem Serial Adapter and rx und tx...
Die firmware darauf ist der unterschied.
wenn du das ding mit der vonmir oben genannten firmware flashst, bekommst bestimmt auch über mqtt die Daten in den iobroker.Es gibt auch schon Ansätze das originalprotokoll abzugreifen in dem der Informationsfluß über ein Raspi umgeleitet und dann zum server geht.
Aber ich bleibe lieber offline. Die Variante mit der ino aus meinem oberen link ist für mich aktuell noch die Beste.
-
Bevor ich mich jetzt dransetze eine eigene Platine mit ESP8266, einem MAX3232 und ein bisschen Hühnerfutter zu basteln schaute ich mir mal den für ~20€ mitgelieferten Growatt WIFI-S genauer an.
Der Stick meldete sich als Client an meinem UnifiController mit einem ESP Typischen Namen an.
Das weckte natürlich mein Interesse🧐
Also kurzerhand das teil abgebaut, unter ner leicht verklebten Moosgummidichtung 4 kleine Schrauben rausgeschraubt und dann diese schöne Platine entdeckt.Meint ihr, die wäre mit einer alternativen Firmware in der Lage, mir die vom Wechselrichter gelieferten Daten zu senden?
Über putty konnte ich bereits den boot des ESPs bai 115200Baud verfolgen. Danach aber nur noch Hieroglyphen.

Sehr interessant da mal einen Blick drauf zu werfen. Wie schon angemerkt, gleicher Aufbau wie ein Wemos, allerdings mit ESP 07s Chip. Nur 1 MB flash Speicher anstatt 4 MB. Link ESP 07s
Wenn man den ESP in den flash Modus bringen kann, dann sollte jedes Script drauf laufen, sofern die Größe passt.......
-
Laut diverser Seiten gibt es den ESP-07s mit 32MBit Flash, d.h. mit 4MB. Hat mittlerweile jemand von Euch den Shine-Stick umgeflasht?
-
Wie und womit stellt ihr die Werte aus dem Wechselrichter eigentlich dar?
Würde mich freuen, wenn ihr ein paar Screenshots Eurer PV-Anlage hier hochladet...
-
Wie und womit stellt ihr die Werte aus dem Wechselrichter eigentlich dar?
Würde mich freuen, wenn ihr ein paar Screenshots Eurer PV-Anlage hier hochladet...
-
Nur mal nachgefragt: Funktioniert das Auslesen bei allen Growatt Wechselrichter? Hab hier schon 1500 gelesen und ich hab den 2000S
-
Hi
Welche Einstellungen habt ihr denn mittlerweile? Ich habe zweimal den modbus-Adapter laufen mit zwei Wechselrichter, aber die gleichen Einstellungen funktionieren nicht.
Modbus.1

Modbus.2

Ich ändere immer die Poll delay, dann funktioniert es wieder eine Weile. Also Modbus.1 funktioniert, .2 macht Probleme ...
-
Version 3.0.0, direkt von Github installiert.
Solar Log hängt per Kabel an deinem IoBroker PC ?
-
@wiednitz Hast Du zuffalig noch die dokumente von Growatt PV Inverter Modbus RTU Protocol V3.00, ich brauche es fuer meine Growatt Inverter zu kontrollieren, besten Dank
-
Hallo,
hat sich einmal jemand damit beschäftigt ein Energiemessgerät SDM630 durch den IOBroker zu ersetzen?
Ich lese meinen Stromzähler mit einem Infrarot Lesekopf aus und habe alle Daten im IOBroker zur verfügung.
Wäre es nicht möglich, dass man dem Growatt Modbus Master einen Modbus Adapter als SDM630 Slave vormachen könnte.
Wenn im richtigen Register die richtigen Werte stehen würden, könnte das doch funktionieren, oder?Grüße,
Haubada -
Hallo,
hat sich einmal jemand damit beschäftigt ein Energiemessgerät SDM630 durch den IOBroker zu ersetzen?
Ich lese meinen Stromzähler mit einem Infrarot Lesekopf aus und habe alle Daten im IOBroker zur verfügung.
Wäre es nicht möglich, dass man dem Growatt Modbus Master einen Modbus Adapter als SDM630 Slave vormachen könnte.
Wenn im richtigen Register die richtigen Werte stehen würden, könnte das doch funktionieren, oder?Grüße,
Haubada@haubada Ich bin gerade dabei so eine Lösung zu bauen, denn ich möchte nicht, dass mein E-Auto von der Haus-Batterie geladen wird. Das Problem ist aber vom Growatt, dass er im 250ms Bereich abtastet, also 4x in der Sekunde. Und er wartet nicht. Ich habe aktuell lauter Kollisionen. Wenn ich die Antwort schicke, ist er schon bei der nächsten Abfrage und auf dem Bus-System kommt es zu Überschneidungen von RX/TX.
Hier ist die Implementierung von Growatt schuld.. Normalerweise müsste er nach der vollständigen Antwort 250ms warten und dann erst wieder einen Request absenden. Und solange er keine Antwort bekommt, muss er ein Timeout abwarten, bis die Antwort einfach nicht gekommen ist. Normalerweise 1-5 Sekunden.
Aber hingegen normaler Programmierung wird alle 250ms HART einen Request raus gesendet, egal was gerade auf dem Bus-System passiert.
Ich versuche zwei ModBus-TCP Geräte miteinander zu verbinden und die Kommunikation zwischen digitalen Stromzähler und dem Growatt über eine weite Strecke zu verbinden. IP-Verbindung ist vorhanden, aber einen zweidraht zwischen beiden Punkten zu verlegen ist quasi unmöglich.
Bei mir ist es aktuell so, dass die Latenz zwischen der Anfrage vom Growatt und der Antwort vom Stomzähler über den TCP/IP Weg zu groß ist, dass der Growatt schon eine neue Anfrage schickt, während noch die Antwort übermittelt wird und es so zu einer Kollision auf dem Bus kommt.
Einzige Lösung die ich mir vorstellen kann
Beim Growatt einen ESP32 mit einem TTL-to-RS485 Wandler hinbauen. Dem ESP32 das Register beibringen und das von extern zu bespielen. Und wenn der Growatt eine Anfrage stellt, dann einfach aus dem Memory die aktuellen Zustände übermitteln. Vom ioBroker aus kannst du ja deine vom IR Lesekopf empfangenen Daten an den ESP32 schicken und dort die Register "nachbauen". -
@haubada Ich bin gerade dabei so eine Lösung zu bauen, denn ich möchte nicht, dass mein E-Auto von der Haus-Batterie geladen wird. Das Problem ist aber vom Growatt, dass er im 250ms Bereich abtastet, also 4x in der Sekunde. Und er wartet nicht. Ich habe aktuell lauter Kollisionen. Wenn ich die Antwort schicke, ist er schon bei der nächsten Abfrage und auf dem Bus-System kommt es zu Überschneidungen von RX/TX.
Hier ist die Implementierung von Growatt schuld.. Normalerweise müsste er nach der vollständigen Antwort 250ms warten und dann erst wieder einen Request absenden. Und solange er keine Antwort bekommt, muss er ein Timeout abwarten, bis die Antwort einfach nicht gekommen ist. Normalerweise 1-5 Sekunden.
Aber hingegen normaler Programmierung wird alle 250ms HART einen Request raus gesendet, egal was gerade auf dem Bus-System passiert.
Ich versuche zwei ModBus-TCP Geräte miteinander zu verbinden und die Kommunikation zwischen digitalen Stromzähler und dem Growatt über eine weite Strecke zu verbinden. IP-Verbindung ist vorhanden, aber einen zweidraht zwischen beiden Punkten zu verlegen ist quasi unmöglich.
Bei mir ist es aktuell so, dass die Latenz zwischen der Anfrage vom Growatt und der Antwort vom Stomzähler über den TCP/IP Weg zu groß ist, dass der Growatt schon eine neue Anfrage schickt, während noch die Antwort übermittelt wird und es so zu einer Kollision auf dem Bus kommt.
Einzige Lösung die ich mir vorstellen kann
Beim Growatt einen ESP32 mit einem TTL-to-RS485 Wandler hinbauen. Dem ESP32 das Register beibringen und das von extern zu bespielen. Und wenn der Growatt eine Anfrage stellt, dann einfach aus dem Memory die aktuellen Zustände übermitteln. Vom ioBroker aus kannst du ja deine vom IR Lesekopf empfangenen Daten an den ESP32 schicken und dort die Register "nachbauen".@rcrack2k
Besten Dank für die informative Antwort und Deinen Tipp.
Der Lösungsvorschlag klingt interessant, ich werde mich da mal genauer damit beschäftigen.
Könntest Du mir bitte noch sagen welche Register Du aktuell zum Growatt sendest bzw. welche er abfragt? -
@rcrack2k
Besten Dank für die informative Antwort und Deinen Tipp.
Der Lösungsvorschlag klingt interessant, ich werde mich da mal genauer damit beschäftigen.
Könntest Du mir bitte noch sagen welche Register Du aktuell zum Growatt sendest bzw. welche er abfragt? -
Moin ins Forum,
habe gerade testweise eine IOBroker-Instanz an meinem Wechselrichter hängen und versuche mich an dem Modbus-Adapter.
Angeschlossen ist der WR über ein USB-RS232-Kabel, über einen Windows-PC und die zugehörige Software kommen Daten.Der WR soll laut Doku Modbus auf der Schnittstelle sprechen. Ich breche mir jetzt seit Stunden die Finger, vielleicht kann jemand der Pros helfen. Bis jetzt bekomme ich im Log nur:
modbus.0 2019-02-17 11:08:15.750 warn On error: {} modbus.0 2019-02-17 11:08:15.749 warn On error: {} modbus.0 2019-02-17 11:08:15.748 info Disconnected from slave modbus.0 2019-02-17 11:08:14.365 warn Poll error count: 1 code: {"err":"timeout"} modbus.0 2019-02-17 11:08:14.364 error Request timed out. modbus.0 2019-02-17 11:08:14.362 warn Error: undefinedVersuche mich gerade an den Holding Registern, vermute, hier stehen die benötigten Daten.
Die Komm-Doku zum WR habe ich mal angehangen.
Gruß
Matze
Growatt PV Inverter Modbus RS485 RTU Protocol V3.05--客户版.pdf@matzebhv Kannst du mir infos über den Wechselrichter geben? Ich versuche gerade einen MIC 2500 TL-X auszulesen.
Egal welche Eingangsregister ich abfrage, bekomme die gleiche nichtssagende Fehlermeldung wie du. Der WR scheint nicht auf meine Anfragen zu antworten. Am WR selber kann ich keine Einstellung zur aktivierung vom RS485 Interface finden.


modbus.0 2023-04-27 14:10:30.395 info Disconnected from slave 192.168.0.6 modbus.0 2023-04-27 14:10:29.594 warn Poll error count: 5 code: "App Timeout" modbus.0 2023-04-27 14:10:29.395 error Client in error state. modbus.0 2023-04-27 14:10:29.394 error Request timed out. modbus.0 2023-04-27 14:10:29.394 warn Error: undefined modbus.0 2023-04-27 14:10:25.295 warn Poll error count: 4 code: "App Timeout" modbus.0 2023-04-27 14:10:24.393 info Connected to slave 192.168.0.6 -
@matzebhv Kannst du mir infos über den Wechselrichter geben? Ich versuche gerade einen MIC 2500 TL-X auszulesen.
Egal welche Eingangsregister ich abfrage, bekomme die gleiche nichtssagende Fehlermeldung wie du. Der WR scheint nicht auf meine Anfragen zu antworten. Am WR selber kann ich keine Einstellung zur aktivierung vom RS485 Interface finden.


modbus.0 2023-04-27 14:10:30.395 info Disconnected from slave 192.168.0.6 modbus.0 2023-04-27 14:10:29.594 warn Poll error count: 5 code: "App Timeout" modbus.0 2023-04-27 14:10:29.395 error Client in error state. modbus.0 2023-04-27 14:10:29.394 error Request timed out. modbus.0 2023-04-27 14:10:29.394 warn Error: undefined modbus.0 2023-04-27 14:10:25.295 warn Poll error count: 4 code: "App Timeout" modbus.0 2023-04-27 14:10:24.393 info Connected to slave 192.168.0.6@sneida Hallo, ich hab zwar einen MOD5000 TL3-XH mit Waveshare und hab mal meine Einstellungen verglichen.
Am Wavershare ist bei mir folgendes anders eingestellt.
Die Modbusregister sind bei mir auch komplett anders aber ich denke das liegt am anderen Typ des Wechselrichters. -
@matzebhv Kannst du mir infos über den Wechselrichter geben? Ich versuche gerade einen MIC 2500 TL-X auszulesen.
Egal welche Eingangsregister ich abfrage, bekomme die gleiche nichtssagende Fehlermeldung wie du. Der WR scheint nicht auf meine Anfragen zu antworten. Am WR selber kann ich keine Einstellung zur aktivierung vom RS485 Interface finden.


modbus.0 2023-04-27 14:10:30.395 info Disconnected from slave 192.168.0.6 modbus.0 2023-04-27 14:10:29.594 warn Poll error count: 5 code: "App Timeout" modbus.0 2023-04-27 14:10:29.395 error Client in error state. modbus.0 2023-04-27 14:10:29.394 error Request timed out. modbus.0 2023-04-27 14:10:29.394 warn Error: undefined modbus.0 2023-04-27 14:10:25.295 warn Poll error count: 4 code: "App Timeout" modbus.0 2023-04-27 14:10:24.393 info Connected to slave 192.168.0.6@sneida sagte in Growatt Wechselrichter über Modbus auslesen - gelöst -:
bekomme die gleiche nichtssagende Fehlermeldung wie du.
ist das nicht erledigt?
bitte Doppelposts auch doppelt pflegen!

