Seite 2 von 3

Re: Integration Sungrow Wechselrichter SH15 + SG10 + Speicher SBH150

Verfasst: So Sep 15, 2024 4:31 pm
von Tobiwan
ich bin mir nicht ganz sicher, ob wir uns richtig verstehen ... :-)

Beide Wechselrichter haben einen Sungrow WiNet Dongle verbaut. Der SG10 hat einen WiNet-S - Ser Sungrow SH15 einen WiNet S2.
An beiden Wechselrichtern geht das Lan Kabel in den Dongle, nicht in den Wechselrichter direkt.

Die Cloud ist mir auch egal, aus der Lese ich selber auch keine Daten aus. Ich lese auch direkt via Modbus die Datenpunkte aus, spiele diese in meine Home Assistant Instanz auf dem Homeserver ein und kann alle Datenpunkte korrekt und Logisch sehen.

Die Obenwb zieht über eben genau die gleiche Schnittstelle, nicht über die Cloud, sondern über Modbus, die Daten. Nur eben offensichtlich den falschen Datenpunkt.

Bei den "alten" Sungrow Hybridwechselrichtern wurde empfohlen, den separaten Lan Anschluss am Wechselrichter für die Modbus Daten zu verwenden. Das wurde bei den "neuen" Sungrow Modellen SH15, 20 und 25 offensichtlich behoben. Der Datenpunkt wird korrekt von Sungrow bereitgestellt, nur eben nicht richtig von der OpenWb gezogen.

Re: Integration Sungrow Wechselrichter SH15 + SG10 + Speicher SBH150

Verfasst: So Sep 15, 2024 4:39 pm
von aiole
ModbusTCP an LAN direkt oder ModbusRTU (RS485) mit LAN-Adapter = Huawei-Var.?
Dongle ist extra (für cloud)? Auch mit LAN?

Generell leiden fast alle echten China-WR an miserabler Doku. Dahingehend kann es je nach WR-Serie auch zu Registerabweichungen/problemen kommen.

Nutzt du openWB und HA im Parallelbetrieb?

Screenshots des Status vom WR/Speicher wären hilfreich. Fürs Debugging sicher auch logs.

Re: Integration Sungrow Wechselrichter SH15 + SG10 + Speicher SBH150

Verfasst: Mo Sep 16, 2024 9:46 am
von Tobiwan
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.

Re: Integration Sungrow Wechselrichter SH15 + SG10 + Speicher SBH150

Verfasst: Fr Sep 20, 2024 4:22 pm
von Maxify23
Moin

Also zu 4)
Die Auslesung wird durchgeführt
https://github.com/openWB/core/blob/mas ... row/bat.py

Vorher war das Problem, dass er nur über den Anschluss am SH hinter dem Wii Net vernünftige Werte ausgegeben hat. Bei mir und bei dir ließt OpenWB am Wii net nur 00000000 aus.
Die Frage ist wo liegt das Problem
Warum kann dein Homeassistent das ?
Sind die Abfragen zu schnell nacheinander ?

Zu 3 / 1
Da habe ich ein ähnliches Problem und deine Erklärung gibt Aufschluss darüber warum :
https://forum.openwb.de/viewtopic.php?p ... ow#p116667

Hier ist der Code bezüglich der PV Auslesung
https://github.com/openWB/core/blob/mas ... nverter.py

Beim SH mussten wir damals einen Workaround machen weil das mit der angegeben Modbus ID nicht geklappt hat.
Scheint gefixt zu sein.

Aber mit deiner Formulierung könntest du recht haben das würde mein Problem auch erklären.

Hast du eine aktuelle Modbus Doku die das ganze untermauert?

Wenn die Werte bei dir passen dann schlag gerne Änderungen am Code vor.

VG und danke für die Arbeit

Maxim

PS: Sungrow Modbus: a Never Ending Story

Re: Integration Sungrow Wechselrichter SH15 + SG10 + Speicher SBH150

Verfasst: Mo Sep 23, 2024 7:56 am
von Heavendenied
Ich hänge mich mal mit hier dran.

Ich wollte gerade mal wieder einen Versuch starten von openWB 1.9 auf 2.x umzustellen (da ja in einer Woche die Cloud für die 1.9 leider abgeschaltet wird...)

Nun habe ich das Problem, dass die PV Leistung des SH10RT völlig falsch angezeigt wird.
Getestet habe ich mit der openWB Release 2024-09-17 und der Master 2024-09-23
Ich habe es ebenso sowohl mit der Anbindung über den Lanport am SH10RT wie auch über die Anbindung über Winet-S versucht.
Als PV Leistung im Status wird dann ein Wert von einigen 100 Watt angezeigt (mal positiv und mal negativ), obwohl aktuell z.B. knappe 1400 Watt richtig wären (bzw -1400 da die openWB 2.x die PV Leistung im Status ja negativ darstellt)
Habe testweise ein "Downgrade" auf die Master 2.1.3-Patch 1 gemacht (die habe ich bei einem Bekannten der ebenfalls den Sungrow SH10RT hat am laufen) und damit werden absolut saubere Werte angezeigt.

Was ist denn da schief gelaufen, dass das mit der alten 2.1.3 sauber läuft und mit allen aktuellen Ständen nicht mehr?
Wurde da versucht die neuen SHxxT Wechselrichter zu integrieren und dabei wurde die alte Integration für die SHxxRT zerschossen?

Ich muss jetzt zwangsläufig erstmal wieder komplett auf die openWB 1.9 Software zurück. Muss mal schauen, ob ich mir noch nen Raspberry Pi besorgen kann um wieder ne Testinstallation mit 2.x zu machen.


EDIT:
Hab jetzt mal nen Raspberry den ich eigentlich für was anderes brauche als Testinstallation für openWB 2.x verwendet...
Irgendwie scheint es so zu sein, dass diese PV Leistung berechnet wird oder so.
Im Screenshot sieht man, dass die PV Leistung die ganze Zeit negativ ist. Um 11:46 Uhr habe ich die max Ladeleistung des Speichers von 1500 W auf 4000 W erhöht. In dem Moment ist dann auch die angeblich PV Leistung noch weiter negativ geworden... Um 11:51 Uhr wurden ein paar Verbraucher im Haus eingeschaltet und plötzlich wird positive PV Leistung angezeigt, die aber auch vom Wert her nicht stimmt...
Screenshot 2024-09-23 115657.png
(125.83 KiB) Noch nie heruntergeladen
(Erläuterung: Anfangs gibts im Screenshot Aussetzer, wahrscheinlich kommt der Modbus des Sungrow nicht mit den vielen Anfragen klar, weil meine produktive openWB ja auch noch drauf zugreift. Daher hab ich dann um 11:44 auf den Modbus Proxy umgestellt, ab dann flüssige Werte.
In Wirklichkeit gibts noch zwei SMA Wechselrichter die mit einspeisen. Die habe ich aktuell erstmal raus gelassen. Aber auch wenn ich die mit rein nehme stimmen die Werte der Sungrow Anlage vorne und hinten nicht.)

Re: Integration Sungrow Wechselrichter SH15 + SG10 + Speicher SBH150

Verfasst: Mo Sep 23, 2024 11:02 am
von Maxify23
Des Rätsels Lösung:
Bezugnahme auf die Veränderungen des Sungrow Codes aus diesem Forenbereich:
https://forum.openwb.de/viewtopic.php?p=116866#p116866

Ich bin der Meinung das eventuell bei
https://github.com/openWB/core/blob/Rel ... nverter.py

hier ist die falsche Modbus ID für den SH drinnen steht
In inverter wird die PV Leistung ausgelesen.
Aktuell mit den jetzigen Registern die gesamte Werkleistung des WR.

DH beim SH Ausgangsleistung = PV +- Batterlieent/ladeleistung
Beim SG hat das denke ich keine Auswirkung.

Führt im Grunde genommen zum falschen PV Wert beim SH.

Ich kenne die genaue Berücksichtigung von Batterie und PV Leistung beim Laden nicht aber einige Nutzer melden erstmal falsche Werte in der Auswertung, was hiermit erklärt wäre.
Es wird in der Nacht die Batterieentladung des SH als positive PV Leistung angezeigt und sobald etwas mit der Batterie passiert ein falscher PV Wert ausgegeben.

Mein Vorschlag Zeile 32 Änderung von 13033 auf 5016.

Danke für die vorangegangene Arbeit.

Re: Integration Sungrow Wechselrichter SH15 + SG10 + Speicher SBH150

Verfasst: Mo Sep 23, 2024 11:38 am
von Heavendenied
Ich verstehe gar nicht, warum da überhaupt was berechnet wird?
Das Register 5016 liefert doch die korrekten Werte und war vermutlich auch bei den älteren openWB 2.1.x Versionen die Grundlage für die PV Leistung.
In HA wird auch dieses Register verwendet und zeigt immer korrekte Werte an.
Also warum wurde das geändert?

P.S.:
Wahrscheinlich fällt der Fehler tatsächlich bei Anlagen, die nur den Sungrow Hybrid mit Speicher haben kaum oder gar nicht auf. Aber es kann ja nicht Sinn der Sache sein, dass man nur noch solche Fälle betrachtet. Der Vorteil bei openWB ist ja eben, dass man sehr gemischte "Landschaften" bedienen kann.

EDIT:
OK, man muss die Lastmanagement Struktur ändern! Das ist natürlich schon "tricky", denn in alten Versionen musste man den Speicher parallel zum WR einsortieren und nun muss er unter den WR.
Jetzt scheinen die Werte auf den ersten Blick OK zu sein...

Re: Integration Sungrow Wechselrichter SH15 + SG10 + Speicher SBH150

Verfasst: Mo Sep 23, 2024 12:31 pm
von Maxify23
Parallel ist mir auch eine Lösung für die SH Benutzer mit nur dem Wi net eingefallen, damit der Baterieladezustand ermittelt werden kann.

Änderung an
https://github.com/openWB/core/blob/mas ... row/bat.py

Weiterer Import
from modules.devices.sungrow.sungrow.version import Version

Ab Zeile 26

Code: Alles auswählen


def update(self, pv_power: float):
     unit = self.device_config.configuration.modbus_id
     soc = int(self.__tcp_client.read_input_registers(13022, ModbusDataType.INT_16, unit=unit) / 10)
     power = self.__tcp_client.read_input_registers(13021, ModbusDataType.INT_16, unit=unit)
     if self.device_config.configuration.version in (Version.SH_winet_dongle):
        total_inverter_power = self.__tcp_client.read_input_registers(13033, ModbusDataType.INT_32, wordorder=Endian.Little, unit=unit) 
        if total_inverter_power < pv_power:
          bat_state = 0
          power = power * -1
        else
          bat_state = 1  
        
     else:      
        resp = self.__tcp_client._delegate.read_input_registers(13000, 1, unit=unit)
        binary = bin(resp.registers[0])[2:].zfill(8)
        if binary[5] == "1":
           power = power * -1
           bat_state = 0
        else
          bat_state = 1 

Es kann einen kleinen vorzeichendreher geben aber das lässt sich im Rahmen der Alpha leicht herausfinden.

Damit kann dann auch bei den Leuten ohne den hinteren LAN Anschluss nur mit dem Wii net die Batterieladestatus ermittelt werden.

Zur Unterscheidung
SH direkt am wiinet (LAN oder WLAN IP) Fall 1
SH am lan Schluss hinter dem wiinet Fall 2

Re: Integration Sungrow Wechselrichter SH15 + SG10 + Speicher SBH150

Verfasst: Mo Sep 23, 2024 2:19 pm
von Manub
Heavendenied hat geschrieben: Mo Sep 23, 2024 11:38 am Ich verstehe gar nicht, warum da überhaupt was berechnet wird?
Das Register 5016 liefert doch die korrekten Werte und war vermutlich auch bei den älteren openWB 2.1.x Versionen die Grundlage für die PV Leistung.
In HA wird auch dieses Register verwendet und zeigt immer korrekte Werte an.
Also warum wurde das geändert?

P.S.:
Wahrscheinlich fällt der Fehler tatsächlich bei Anlagen, die nur den Sungrow Hybrid mit Speicher haben kaum oder gar nicht auf. Aber es kann ja nicht Sinn der Sache sein, dass man nur noch solche Fälle betrachtet. Der Vorteil bei openWB ist ja eben, dass man sehr gemischte "Landschaften" bedienen kann.

EDIT:
OK, man muss die Lastmanagement Struktur ändern! Das ist natürlich schon "tricky", denn in alten Versionen musste man den Speicher parallel zum WR einsortieren und nun muss er unter den WR.
Jetzt scheinen die Werte auf den ersten Blick OK zu sein...
Das wurde geändert, da die brutto DC-Leistung aus Register 5016 nicht der für openWB verfügbaren Leistung entspricht, am AC-Ausgang des WR zum Netz ist die Wirkleistung verfügbar, also DC-Leistung abzüglich Verluste und Blindleistung. Das führt ansonsten dazu, dass die WB zwar den Überschuss korrekt errechnet, aber der Hausverbrauch zu niedrig angezeigt wird. Zudem stimmen die Werte zwischen openWB und iSolarCloud nicht überein, was auch bei neuen Nutzern immer wieder zu Fragen führt. Genaueres nachzulesen im Thread https://forum.openwb.de/viewtopic.php?t=7804 und am PR https://github.com/openWB/core/pull/1537

Wenn im HA Register 5016 verwendet wird, sind dort auch die brutto DC Werte zu sehen, nicht die nutzbare Leistung

Re: Integration Sungrow Wechselrichter SH15 + SG10 + Speicher SBH150

Verfasst: Mo Sep 23, 2024 2:36 pm
von Manub
Maxify23 hat geschrieben: Mo Sep 23, 2024 12:31 pm Parallel ist mir auch eine Lösung für die SH Benutzer mit nur dem Wi net eingefallen, damit der Baterieladezustand ermittelt werden kann.

Änderung an
https://github.com/openWB/core/blob/mas ... row/bat.py

Weiterer Import
from modules.devices.sungrow.sungrow.version import Version

Ab Zeile 26

Code: Alles auswählen


def update(self, pv_power: float):
     unit = self.device_config.configuration.modbus_id
     soc = int(self.__tcp_client.read_input_registers(13022, ModbusDataType.INT_16, unit=unit) / 10)
     power = self.__tcp_client.read_input_registers(13021, ModbusDataType.INT_16, unit=unit)
     if self.device_config.configuration.version in (Version.SH_winet_dongle):
        total_inverter_power = self.__tcp_client.read_input_registers(13033, ModbusDataType.INT_32, wordorder=Endian.Little, unit=unit) 
        if total_inverter_power < pv_power:
          power = power * -1
        
     else:      
        resp = self.__tcp_client._delegate.read_input_registers(13000, 1, unit=unit)
        binary = bin(resp.registers[0])[2:].zfill(8)
        if binary[5] == "1":
            power = power * -1

Es kann einen kleinen vorzeichendreher geben aber das lässt sich im Rahmen der Alpha leicht herausfinden.

Damit kann dann auch bei den Leuten ohne den hinteren LAN Anschluss nur mit dem Wii net die Batterieladestatus ermittelt werden.

Zur Unterscheidung
SH direkt am wiinet (LAN oder WLAN IP) Fall 1
SH am lan Schluss hinter dem wiinet Fall 2
Bitte die korrekte Anschlussversion in der Gerätekonfiguration auswählen, dann sind alle Werte vorhanden:
Screenshot 2024-09-23 162938.png
(68.15 KiB) Noch nie heruntergeladen