Die Wechselrichter haben jeweils nur 1x RJ45 Anschluss, an dem Der jeweilige Dongle eingesteckt wird. An dem Dongle ist auch wieder ein RJ45 Steckanschluss => Dort wird das Lankabel eingesteckt.
Modbus direkt via Lan, ohne RTU Adapter oder öhnliches. Dies kann direkt via IP-Adresse vom Dongle erfolgen - eine andere IP Adresse für den Wechselrichter separat wird nicht erzeugt, auch nicht wenn ich den Dongle ausstecke und den Lan Stecker direkt am Port am Wechselrichter verbinde.
Das Register passt auch - ich lese die Datenpunkte mit dem Register, wie man es auch im Netz findet:
https://gist.github.com/dnoegel/543c72e ... d0bb43e222
OpenWB und HA laufen im Parallelbetrieb.
Anbei mal Screenshots von den PV Daten:
1x
Sungrow Cloud => SH15 "Total DC Power" und "Total Active Power"
1x
Sungrow Cloud => Batteriespeicher Lade und Entladeleistung
1x Home Assistant, Datenimport via Modbus von "Total DC Power"
1x Home Assistant, Datenimport via Modbus von "Total Active Power"
1x Home Assistant, Datenimport via Modbus von "Battery Power Raw" => Werte ohne Vorzeichen, also immer positiv
Was kann man aus den ausgelesenen Werten interpretieren:
1) Logik Berechnung von Total DC Power und Total Active Power
Sungrow Interpretiert "Total Active Power" als "Total DC Power" plus "Batterie Ladeleistung". In diesem Beispiel mal exemplarisch die Daten aus der CLoud:
1,6 kw (Total DC Power)
+-2,6 kw (Battery Charging Power)
= -1,2 kW (Total Active Power)
2) Ausgabe der notwendigen Datenpunkte/Register via Modbus
Alle Daten lassen sich korrekt via Modbus auslesen. Bis auf kleine zeitliche Abweichung passen die Daten in Homeassistant v ia Modbus zu denen aus der Cloud. Viel wichtiger: Es lassen sich überhaupt Werte ausleden, sie sind also vorhanden und werden via Modbus ausgegeben
3) Datenpunkt PV Erzeugung
Die OpenWb zieht sich nicht den Wert "Total DC Power" (Datenpunkt/Register 5016) sondern "Total Active Power" (Datenpunkt/Register 13033)
4) Batterie Lade- und Entladeleistung
Die Lade-/Entladeleistung wird von
Sungrow via Modbus immer positiv angeben. (Datenpunkt/Register 13021)
Um zu erkennen, ob der Batteriespeicher gerade mit dem ausgelesenen Wert geladen oder entladen wird muss noch ein weiterer Datenpunkt mit bewertet werden: "13000_Running_State"
Dieser beinhaltet 8 Bits, davon interessieren uns:
Bit1 Battery charging
Bit1 == 0 Not charging
Bit1 == 1 Charging
Bit2 Battery discharging
Bit2 == 0 Not discharging
Bit2 == 1 Discharging
Daraus ableitung kann interpretiert werden, ob die Batterieladung, welche immer positiv ist, gerade in den Speicher geladen oder entnommen wird.
Zusammenfassend sind also alle genannten Themen reine Schnittstellen Themen von OpenWB, bei der die gezogenen Datenpunkte/Register geändert werden müssen und im Falle der Batteriespeicher noch eine Logik / Verknüpfung mit dem Register 13000 ergänzt werden muss.