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 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
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.
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
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
Register Adresse
Adresse vom Wechselrichter
Name des Register
Einheit
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
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
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
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.
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
Ich bin morgen wieder zu Hause, da schau ich mal auf den Wandler und mach dir ein Screenshot.
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.
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
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