Growatt WR Modbus Auslesen für HomeAssistant

Moin,
ich versuche seit längerem den Modbus meines Growatt MOD 10KTL-XH auszulesen um die Werte des Wechselrichters in HomeAssistant anzeigen zu lassen.
Dafür habe ich ein Waveshare RS485 TO ETH (B) verbaut. Da HomeAssistant und andere Programme keine sinnvollen Werte auslesen, versuche ich in Step 1 mit dem Programm Simply Modbus Client erstmal herauszufinden, wo ich anfangen muss und welche Adressen richtig sind.

Ich finde aber absolut keine richtige Einstellung. Alle Werte sind Kauderwelsch, die ich angezeigt bekomme.

Einmal habe ich mit einem ausgelesenen Wert Glück gehabt und alles wurde angezeigt. Leider kann ich es nicht Reproduzieren :frowning: Weiß jemand was ich noch versuchen kann ?

Werte, bei denen ich weiß, dass sie richtig sind, da ich sie auslesen konnte:
16 Bit Register, 32bit Float Interpretierung, Bit Rate 9600, Databits 8, Parity none, Stopbits 1, Slave ID 1 WR, Slave ID 2 Meter, Function Code 4 bei 30000er nummern.

Werte bei denen ich mir nicht sicher bin, aber sie schon ausprobiert habe:
Register 30000/1, Offset 30000/1 oder 0, 2 Byte ID,

Würde auch jemanden suchen, der mit hilf, den ich dafür entlohnen kann. Ich saß schon so lange an dem Zeug und komme nicht weiter :confused:


1 „Gefällt mir“

Ich kann dir zwar nicht helfen, aber vielleicht bringt dich diese HACS Integration weiter? Zumindest geht es in der FAQ auch um Growatt. Homeassistant SolaX modbus integration

Danke, aber die Anwendungen wie Solax oder Modbus(Homeassistant Erweiterung) hängen sich auf, wenn ich die Einstellungen konfigurieren will. Ich vermute, da alle Werte Kauderwelsch sind.

Ich habe schon die Erweiterungen probiert: SolaX , Modbus (HomeAssistant Paket), Growatt Erweiterung (Eigenentwicklung für HomeAssistant).
Keine dieser Erweiterungen gibt auch nur einen Wert aus. Alle bleiben beim Konfigurieren hängen. Auch wenn ich HA neu aufsetze. Auch die hauseigene ModBus Erweiterung bleibt sofort hängen, wenn ich auch nur ein Wert angebe. Chat GPT meint, dass es an den nicht plausiblen Werten liegt. Diese kann HA nicht verbreiten und hängt sich auf.

Hallo,

ich habe kein HomeAssistant und habe das auch noch nie ausprobiert, aber ich habe 3 Growatt WR an einem Waveshare RS485 to ETH Wandler. Ich nutze IOBroker :grinning_face:

Hier mal meine Liste, mit funktionierenden Adressen:

1 3 Ppv1 W uint32be 2 0.1 level false false
3 3 Vpv1 V uint16be 1 0.1 0 level false false
4 3 Ipv1 A uint16be 1 0.1 0 level false false
5 3 Ppv_String_1 W uint32be 2 0.1 level false false
9 3 Ppv_String_2 W uint32be 2 0.1 level false false
38 3 Vac1 V uint16be 1 0.1 level false false
42 3 Vac2 V uint16be 1 0.1 level false false
46 3 Vac3 V uint16be 1 0.1 level false false
53 3 Eac_Today KWh uint32be 2 0.1 0 level false false
55 3 Eac_Total KWh uint32be 2 0.1 0 level false false
93 3 Temp1_pv1 °C uint16be 1 0.1 0 level false false
95 3 Temp1_pv2 °C uint16be 1 0.1 0 level false false
105 3 Fault_Code uint16be 1 1 0 level false false
106 3 Inverter fault code high uint16be 1 1 0 level false false
107 3 Inverter fault code low uint16be 1 1 0 level false false
110 3 Warning bit H uint16be 1 1 level false false
111 3 Warn Subcode uint16be 1 1 level false false
112 3 Warn Maincode uint16be 1 1 level false false
200 3 PV_Iso kOhm uint16be 1 0.1 level false false
  1. Register Adresse
  2. Adresse vom Wechselrichter
  3. Name des Register
  4. Einheit
  5. Datentyp

Bei Modbus muss man manchmal die Registerart dazurechnen, also 30000 für Eingangsregister und 40000 für Holding Register. Aber ich weiß nicht ob man das bei HomeAssitant machen muss. Aber du hast mal paar funktionierende Adresse, dait kannst du spielen.

Noch paar Fragen:

  • Welche Adresse hast du deinem Wechselrichter verpasst?
  • Hast du den richtigen RS485 Port genommen? Der hat 3!
  • Hast du auch mal die beiden Kabeladern getauscht? Ein dreher ist fix gemacht :innocent:

  • Welche Version von der Modbus Beschreibung hast du? Da gibt es viel im Netz, aber bei vielen stimmen die Register nicht.

Die Konfiguration des Waveshare kann ich dir mal am Wochenende hochladen. Da habe ich aktuell kein Bild von da.

Sach Bescheid ob dir das was geholfen hat :vulcan_salute:

Grüße,
Arno

Danke für deine Ausführliche Antwort.

  • Die Adresse Des WR ist 1 und des Smart Meter 2. Das kann ich auf dem Display sehen
  • Der RS485toETH Adapter sitzt in der Verteilung neben dem Smart Meter. Die Anlage läuft seit Jahren und funktioniert perfekt mit Akku und PV.
  • Kabeladern tauschen bringt die Anlage komplett durcheinander. Der WR schiebt dann den ganzen Akku ins Netz, weil die Last als unendlich angesehen wird. Also keine gute Idee :smiley:
  • Ich versuche im ersten Step überhaupt eine sinnvolle Adresse zu finden. Ich habe die 30000er, 40000er, 0er, 100er ... probiert aber nichts hat geholfen.

Ein sehr interessanter Punkt ist mir aufgefallen !!! Das Programm sollte ab 30000 abfragen, aber in der Log-Datei steht 30001. Die Werte stimmen aber überein, aber für andere Ports :open_mouth:
Siehe Bild.
Somit bin ich noch auf der Suche nach wenigstens einem richtigen Wert damit ich weiß, wo ich anfangen kann.

Da ich ein einziges mal ab Adresse 30001 eine richtigen ausleser hatte und die ersten 9 Werte mit 32bit Float richtig ausgegeben wurden, gehe ich von einer richtigen Startadresse 30001 aus.

Was mir gerade auch auffällt, von den 6 Abfragen hier, ist nur einer Erfolgreich gewesen (unten rechts im bild) . Und diese eine ist richtig. Somit liegt das Problem nicht am Start Werte oder ähnliches, sondern am Modbus und dass er Zeitüberschreitungen hat. Dadurch wird die Abfrage abgehakt und der CRC Check schlägt fehl.
Somit gibt es ein Problem mit dem Adpater und dass er, warum auch immer, die Signale nicht rechtzeitig zur Verfügung stellen kann.... Die Adapter Einstellungen habe ich mehrmals mit Chat GPT überprüft. Diese sind oben zu sehen.

Moin,

Ja, bei Modbus ist das immer etwas kniffelig. Ein feiner Fehler sind Hex und Dez Werte. Manche Programm wollen die in Hex und andere in Dez. Manchmal muss man bei den Adressen +1 rechnen manchmal -1. Da musste etwas rumprobieren. Daher mal meine funktionierenden Adressen damit du ein Anhaltspunkt hast.
Man kann das auch manchmal mit dem Registern umschalten, dass der Holding (40000) und Read (30000) automatisch setzt und man dann nur mit 0 und nicht 30000 arbeiten muss. Kannste auch mal ausprobieren :smiley:

Ich bin morgen wieder zu Hause, da schau ich mal auf den Wandler und mach dir ein Screenshot.

Viele Grüße,
Arno

So, hier mal die ganzen Einstellungen, mit den ich die Growatts auslese:

  • und hier die Eingansregister die funktionieren:
_address deviceId name description unit type len factor offset formula role room cw isScale
30001 2 Status uint16be 1 1 level false false
30002 2 Ppv W uint32be 2 0.1 level false false
30004 2 Vpv V uint16be 1 0.1 level false false
30005 2 Ipv A uint16be 1 0.1 level false false
30006 2 Ppv_String_1 W uint32be 2 0.1 level false false
30010 2 Ppv_String_2 W uint32be 2 0.1 level false false
30054 2 Eac_Today KWh uint32be 2 0.1 level false false
30056 2 Eac_Total KWh uint32be 2 0.1 240 level false false
30094 2 Temp2_pv1 °C uint16be 1 0.1 level false false
30095 2 Temp_Booster °C uint16be 1 0.1 level false false
30096 2 Temp2_pv2 °C uint16be 1 0.1 level false false
30106 2 Fault_Code_pv2 uint16be 1 1 level false false
30107 2 Inverter_Fault_Code_PV2_high uint16be 1 1 level false false
30108 2 Inverter_Fault_Code_PV2_low uint16be 1 1 level false false
30111 2 Warning bit H uint16be 1 1 level false false
30112 2 Warn Subcode uint16be 1 1 level false false
30113 2 Warn Maincode uint16be 1 1 level false false
30201 2 PV_Iso KOhm uint16be 1 0.1 level false false
30002 3 Ppv W uint32be 2 0.1 level false false
30002 4 Ppv W uint32be 2 0.1 level false false

Ich habe den 4 fach Waveshare. Da hängt jeder Growatt an einem extra Anschluß. Ich habe mitbekommen, dass die Growatts nicht abschalten wenn die sonne weg ist, weil an dem einen hängt der Hausakku dran. Da hält scheinbar die anderen vom schlummern ab. Jetzt wenn jeder sein eigenen RS485 hat, funktioniert das StandBy wieder.

Hoffe das hilft dir weiter.

Grüße,
Arno

Moin Danke fürs Beschreiben.
Die VirCom.exe nutze ich auch. Die Einstellungen waren nahezu gleich bis auf die Waiting Times. Dies habe ich an deine angepasst, aber keine Änderung.
Mein Programm zum Testen "Simply Modbus TCP" gibt immer noch sinnlose Zahlen aus und der CRC Check schlägt fehl :frowning:


Online gibt es die MODbus specs von Growatt. Ist das hier die neueste Version?
Das mit den RS485toEth, kann man damit auch nur Sniffen? Gibt ja leider nur einen Server wenn auch mehrere Slaves

https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://community.symcon.de/uploads/short-url/jFo2xrUpTus03y9fWeYrp0Dbfng.pdf&ved=2ahUKEwiH04zpyYiRAxV5Q_EDHRZHNpAQFnoECAwQAQ&usg=AOvVaw1G2_MYpQYzIOJxMG456aIB