NEWS
Growatt Wechselrichter über Modbus auslesen - gelöst -
-
@wi hallo ... ich habe das dokument auf scribt gefunden brauchst du es noch ? lg rtax
-
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". -
@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? -
@haubada So weit bin ich noch nicht. Ich hatte bisher ja nur den Passthrough WR > TCP/IP Wandler -> TCP/IP-Wandler -> SmartMeter erfolglos getestet.
Sobald ich einen ESP-Sketch habe, kann ich ihn dir ja hier veröffentlichen.
-
@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. -
@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!
-
@homoran Problem wurde mittlerweile gelöst:
-
Hallo, ich habe gerade eure Posts gelesen den SDM630 per IOBroker zu emulieren. Ich bin aktuell auch auf der Suche nach einer Lösung. Lese mein Smartmeter per IR aus und habe die Werte im IO Broker. Nun möchte ich einen ModBus Adapter an den Growatt 600 auf dem Balkon anschließen und dort das SDM630 "emulieren", damit ich eine Nulleinspeisung hinbekomme. Mein Plan ist ein EW11a zu kaufen und irgendwie die Daten über IOBroker in den Modbus zu schreiben. Habt ihr schon eine funktionierende Lösung gefunden oder sonstige Versuche gestartet. Danke und viele Grüße
-
@sneida Hast du es jetzt schon ans Laufen bekommen? Falls ja würden mich die Einstellungen und Register interessieren.
Vielen Dank!
Gruß, AnDiBaCkE -
@mane444 Ich nutzte auch ein TCP Gateway aber bekomme auf den 30000er Register keine plausiblen Daten. Welche Register nutzt du?
Vielen Dank!
Gruß, AnDiBaCkE -
@andibacke Hallo, hier meine Einstellungen:
Eingangsregister:_address name description unit type len factor offset formula role room cw isScale 30109 RemoteCtrlEn uint16be 2 1 0 level false false 30110 RemoteCtrlPow uint16be 2 1 0 level false false 30120 Battery Type 0 Lead acid 1 Lithium battery uint16be 2 1 0 level false false 33001 Inverter Status 0:warten; 1:normal; 3:Fehler " " uint16be 1 1 0 level false false 33002 Ppv Eingangsleistung PV W uint32be 2 0.1 0 level false false 33004 Upv1 Spannung PV1 V uint16be 1 0.1 0 level false false 33005 Ipv1 Strom PV1 A uint16be 1 0.1 0 level false false 33006 Ppv1 Eingangsleistung PV1 W uint32be 2 0.1 0 level false false 33008 Upv2 Spannung PV2 V uint16be 1 0.1 0 level false false 33009 Ipv2 Strom PV2 A uint16be 1 0.1 0 level false false 33010 Ppv2 Eingangsleistung W uint32be 2 0.1 0 level false false 33024 Pac Ausgangsleistung AC W int32be 2 0.1 0 level false false 33026 Fac Ausgangsfrequenz Hz uint16be 2 0.01 0 level false false 33027 Vac1 Spannung L1 V uint16be 1 0.1 0 level false false 33028 Iac1 Strom L1 A uint16be 1 0.1 0 level false false 33029 Pac1 Leistung L1 VA uint32be 2 0.1 0 level false false 33031 Vac2 Spannung L2 V uint16be 1 0.1 0 level false false 33032 Iac2 Strom L2 A uint16be 1 0.1 0 level false false 33033 Pac2 Leistung L2 VA uint32be 2 0.1 0 level false false 33035 Vac3 Spannung L3 V uint16be 1 0.1 0 level false false 33036 Iac3 Strom L3 A uint16be 1 0.1 0 level false false 33037 Pac3 Leistung L3 VA uint32be 2 0.1 0 level false false 33039 Vac12 Spannung L1-L2 V uint16be 1 0.1 0 level false false 33040 Vac23 Spannung L2-L3 V uint16be 1 0.1 0 level false false 33041 Vac31 Spannung L3-L1 V uint16be 1 0.1 0 level false false 33042 Ptouser Ausgangsleistung Verbrauch AC W uint32be 2 0.1 0 level false false 33044 Ptogrid Ausgangsleistung Netz AC W uint32be 2 0.1 0 level false false 33046 Ptoload Ausgangsleistung Laden AC W uint32be 2 0.1 0 level false false 33048 Time_total Betriebszeit s uint32be 2 0.5 0 level false false 33050 Eac_today Wirklarbeit Heute kWh uint32be 2 0.1 0 level false false 33053 Eac_total Wirkarbeit gesamt kWh uint16be 2 0.1 0 level false false 33055 Epv_total Wirkarbeit PV gesamt kWh uint16be 2 0.1 0 level false false 33057 Epv1_today Wirkarbeit Heute PV1 kWh uint16be 2 0.1 0 level false false 33059 Epv1_total Wirkarbeit gesamt PV1 kWh uint16be 2 0.1 0 level false false 33061 Epv2_today Wirkarbeit Heute PV2 kWh uint16be 2 0.1 0 level false false 33063 Epv2_total Wirkarbeit gesamt PV2 kWh uint16be 2 0.1 0 level false false 33087 DeratingMode uint16be 1 1 0 level false false 33088 PVISO PVISOValue kOhm uint16be 1 1 0 level false false 33089 L1 DCI L1 DCI mA uint16be 1 0.1 0 level false false 33090 L3 DCI L2 DCI mA uint16be 1 0.1 0 level false false 33091 L3 DCI L3 DCI mA uint16be 1 0.1 0 level false false 33094 Temp1 Inverter IPM Temperatur °C uint16be 1 0.1 0 level false false 33095 Temp2 Inverter Temperatur °C uint16be 1 0.1 0 level false false 33096 Temp3 Boost Temperatur °C uint16be 1 0.1 0 level false false 33097 Temp4 Reserve Temperatur °C uint16be 1 0.1 0 level false false 33098 Temp5 Commmunication broad Temperatur °C uint16be 1 0.1 0 level false false 33099 P Bus Voltage P Bus interne Spannung V uint16be 1 0.1 0 level false false 33100 N Bus Voltage N Bus interne Spannung V uint16be 1 0.1 0 level false false 33101 IPF Inverter Ausgang PF uint16be 1 1 0 level false false 33102 RealOPPercent Ausgangsleistung % % uint16be 1 1 0 level false false 33104 OPFullwatt Ausgansleistung Limit max W uint16be 2 0.1 0 level false false 33106 Fault code Fehlercode uint16be 1 1 0 level false false 33107 Warn code Warnungscode uint16be 1 1 0 level false false
Holding Register:
_address name description unit type len factor offset formula role room poll wp cw isScale 40001 FernEinAus Ein aus über Fernsteuerung uint16be 1 1 0 level true false false false 40004 Active P Rate Inverter Max output active power percent % uint16be 1 1 0 level true false false false 40005 Reactve P Rate Inverter Max output reactive power percent % uint16be 1 1 0 level true false false false 40006 Power factor Inverter output power factor's 10000 times s uint16be 1 1 0 level true false false false 40008 Pmax Normal Power VA uint16be 2 0.1 0 level true false false false 40009 Vnormal Normal work PV voltage V uint16be 1 0.1 0 level true false false false 40049 Sys Std System Zeit Stunden std uint16be 1 1 0 level true false false false 40050 Sys Min System Zeit Sekunden min uint16be 1 1 0 level true false false false 40051 Sys Sec System Zeit Sekunden sec uint16be 1 1 0 level true false false false 40089 ModbusVersion ModbusVersion uint16be 1 1 0 level true false false false 40123 ExportLimit ExportLimit enabled uint16be 1 1 0 switch true false false false 40124 ExportLimitPowerrate ExportLimitPowerRate % uint16be 1 0.1 0 level true false false false 43001 ExportLimitFailedPowerRate Export Limit Failed PowerRate % uint16be 1 0.1 0 level true false false false
Ich hoffe du kannst damit was anfangen.
-
@mane444 Moin! Vielen Dank!
Ich habe es mal ausprobiert aber auch leider kein Erfolg gehabt. Holding Register mag er gar nicht. Bei den Eingangsregistern funktioniert immer nur das erste Register und der Adapter wird grün aber die Werte auf dem Register sind nicht plausibel, z.B.: 0...2740...0...512...0 usw. Kennst du das Phänomen?
Hast du bei dir diesen außergewöhnlichen Port (4196) auch so im Waveshare hinterlegt? Ich nutze zwar kein Waveshare aber die Oberfläche und Einstellungen sehen ziemlich identisch aus.
Hast du auf der anderen Seite der Modbus Strecke auch noch den SDM dran oder laufen die WR Daten ausschließlich in den IOBroker rein? Bei habe ich es bisher nur parallel versucht.
Gruß, AnDiBaCkE -
@andibacke Du kannst an einem Modbus keine zwei Master haben. An dem Anschluss beim WR an dem der SDM dranhängt kannst du nicht den WR auslesen, hier liest der WR den Zähler aus. Bei mir hängt das IP-Interface beim WR an den Klemmen 3 und 4.
-
@mane444 Ja das mit dem Master ist mir schon bewusst aber als TCP Slave hat es auch nicht funktioniert. Als TCP Master hat er wenigstens Daten abgefragt auch wenn die Daten nicht plausibel waren.
Meine Konstellation sieht folgend aus:
Das linke Gateway am SDM habe ich erfolgreich angezapft aber beim rechten Gateway welches am Growatt dran ist, hat es bisher nicht funktioniert.
Grundsätzlich funktioniert die Kommunikation zwischen Zähler und WR über die Gateways auch.
Gruß, AnDiBaCkE -
@andibacke Wenn ich das richtig verstehe benutzt du diese Gateways damit der WR seine Daten vom >Zähler beziehen kann und du schaltest dich mit IOB auf und möchtest diese Daten abgreifen.
Die Growatt Mod...TL3-XH haben 3 Modbus Anschlüsse, siehe mein Bild vom vorherigen Post.- Pin 3 und 4 Hier kannst du wie Ich die Daten abrufen und auch beschreiben.
- Pin 5 und 6 hiermit holt der WR seine Messdaten vom Zähler. (Ich denke hier ist dein Gateway angeschlossen)
- Pin 7 und 9 ist für die Kommunikation mit dem Batteriespeicher
-
@mane444 Ah, jetzt kommen wir der Sache näher
Du nutzt den Kommunikationsanschluss für den Shinebus. Das hat natürlich ein paar Vorteile für die Kommunikation. Ich wollte ja für meine nicht gut funktionierende Nulleinspeisung die Werte des SDM manipulieren und das brauch man dann ja nicht mehr und sendet auf dem Shinebus Port einfach die eigenen Leistungs- Solldaten.
Hast du damit auch so etwas realisiert?
Mein MIN hat auch diesen Anschluss (Pin 3+4):
Sehr schön, dann habe ich einen neuen Ansatz.
Vielen Dank!
Gruß, AnDiBaCkE -
@andibacke mit dem MIN habe ich keine Erfahrung. Ich regle meinen WR auch nicht, da ich Überschuss wenns mal vor kommt einspeise. Ich hoffe du hast Erfolg, viel Glück.
-
@mane444 Kurze Erfolgsmeldung von meiner Seite. Ich habe mir einen Waveshare bei Amazon geholt und auf Pin 3+4 angeschlossen.
Nach ein wenig Fummelei mit dem Gateway Einstellungen läuft nun die Nulleinspeisung
Vielen Dank noch einmal für die Register! Da hätte ich mich ja tot gesucht. Bei meinem MIN funktionieren jedoch nicht alle aber das ist nicht schlimm.
Bei Bedarf sende ich gerne noch ein paar Details.
Gruß,AnDiBaCkE