NEWS
Test Adapter sun2000 v0.1.x - Huawei Wechselrichter
-
@melonea ja, das sind zur Zeit alle optimizer Informationen.
Weitere Optimizer Daten müssen über ein file upload erfolgen. Siehe issue https://github.com/bolliy/ioBroker.sun2000/issues/22
Da möchte sich ein contributer einbringen um dieses umzusetzen. Das wird aber sicherlich dauern, da ein Unterstützer sich erst in die Adapterprogrammierung einarbeiten muss.Stephan
-
Energieertrag:
Der/dem einen oder anderen ist sicherlich schon aufgefallen, dass der Energieertrag (Yield today) aus der App und dem FusionSolar Portal nicht mit dem sun2000.0.collected.dailyEnergyYield übeinstimmt. Der dailyEnergieYield (Register 32114) beschreibt die Energie (AC, Wechselstrom), die aus dem Wechselrichter in Richtung Hausstromkreis für heute übertragen wurde. Also nicht - wie der Name vielleich suggeriert - der Tagesenergieertrag. Huawei hat sich allerdings für den Energieertrag (Yield today) eine tolle Formel ausgedacht:
Yield today = dailyEnergyYield + currentDayChargeCapacity - currentDayDischargeCapacity - Energieverlust des Speichers
Nach meiner Auffassung erfüllt diese Berechnung von Huawei nicht der Erwartung der NutzerInnen.
Deshalb habe ich mich entschlossen, über den InputPower (genauer: inputPowerWithEfficiencyLoss) mit einem sog. Riemannsches Integral (https://de.wikipedia.org/wiki/Riemannsches_Integral) den SolarErtrag aufzusummieren und im State dailySolarYield zu speichern. Es versteht sich von selbst, dass das Riemannsches Integral einen ganzen Sonnentag benötigt um den korrekten dailySolarYield anzeigen zu können.Der Wert Yield today von Huawei wird unter Berücksichtung von 3% Energieverlust des Speichers berechnet und im State dailyInputYield abgelegt.
Links:
https://community.home-assistant.io/t/integration-solar-inverter-huawei-2000l/132350/1432
https://github.com/wlcrs/huawei_solar/wiki/Daily-Solar-YieldIch freue mich auf eine rege Diskussion
-
Hi,
ich nutze den Adapter sehr gerne.
Wäre es möglich ein größeren Timeout zu setzen wenn die Verbindung zum Dongle nicht geklappt hat?
Heute Abend war meine Logs voll von Verbindungsversuchensun2000.0 2024-01-25 23:14:18.033 warn Error while reading from 192.168.178.45: [32000|116] id: 1 '' with : Timed out sun2000.0 2024-01-25 23:14:08.015 info Connected Modbus IP to: 192.168.178.45 /PORT 502 sun2000.0 2024-01-25 23:14:07.012 info Open Connection... sun2000.0 2024-01-25 23:14:07.010 warn Error while reading from 192.168.178.45: [37765|2] id: 1 '' with : Timed out sun2000.0 2024-01-25 23:14:01.505 info Connected Modbus IP to: 192.168.178.45 /PORT 502 sun2000.0 2024-01-25 23:14:00.502 info Open Connection...
Ich versuche mich in die Entwicklung der Adapter einzuarbeiten und lese fleißig die Python Implementierungen um die Optimierer zu unterstützen. Falls jemand bezüglich Modbus Custom Functions Erfahrungen hat bitte melden.
Grüße
Alex -
@googie Hi, ist dein WR vielleicht in den Standby Mode gegangen? Wenn der SOC der Batterie auf den sun2000.0.inverter.0.battery.dischargeCutoffCapacity entladen hat und AC laden ausgeschaltet ist, geht die Batterie und ggf. der WR auf Standby. Dann kommt es zu den Timeouts am Abend.
Lg Stephan
-
erstmal klasse Arbeit zu dem Adapter sun2000.
habe eine etwas andere spezifikation. Verwende keinen Dongle am Master WR, sondern den SmartLogger3000. Funktioniert fast perfekt, es können nur ein paar ModbusRegister nicht gelesen werden .
-
@kauli hallo vielen dank
Beim Dongle wäre:
37000/37113 der Smart Meter
37770 die BatterieDen SmartLogger 3000 unterstüzt der Adapter leider nicht.
Vielleicht könnte man den SmartLogger 3000 später einpflanzen.Zur Zeit möchte ich aber erst mal den Adapter ins Repo bringen.
Ansonsten schreib doch ein issue (https://github.com/bolliy/ioBroker.sun2000/issues), damit ich es nicht vergesseLg Stephan
-
Hallo bolliy,
danke für das Plugin. Ich habe das bei mir laufen aber renne immer wieder in Probleme so, dass ich z.T. Timeouts bekomme. Ich habe zwei Wechselrichter und habe deren IDs (1,2) auch korrekt eingegeben. Am Wechselrichter mit der ID 2 hängt eine Batterie und der hat auch Zugriff auf den Smartmeter.
Das Abfrageintervall habe ich schon auf 60s gesetzt! Trotzdem bekomme ich sogar bei diesem Intervall vereinzelt folgende Meldungen im Protokoll:Error while reading from 192.168.1.x: [37000|68] id: 2 '' with : Modbus exception 6: Slave device busy (retry request again later)
...
Error while reading from 192.168.1.x: [47081|8] id: 2 '' with : Port Not Open
...
Error while reading from 192.168.1.x: [37765|2] id: 1 '' with : Timed out
...Habt ihr bei euch auch dieses Problem oder gibt es ein Tipp wie man es lösen kann? Der Effekt tritt auch auf wenn ich das mit dem anderem SUN2000_modbus Plugin teste und ich sehe Verbindungsabbrüche wenn ich z.B. mit der NRGKick App drauf zugreifen will. Das Netzwerk ist aber ok, die Error Meldungen z.B. mit "Slave device busy" kommt ja auch direkt vom Wechselrichter.
Wenn ich Daten abfrage, bemerke ich auch, dass die Antwortzeit hier auch stark variiert. Im SUN2000_modbus Plugin habe ich z.B. gesehen, dass die SLOW Abfrage (Abfrage aller möglichen Register) > 50s dauerte. Bis eben zu Meldungen wie Timeout oder Slave is Busy.
Das ModBus Feature wurde zum Test auch mal deaktiviert und wieder aktiviert mit der Hoffnung, dass sich da vielleicht was neu startet.Hat vielleicht wer anderes auch diese Probleme bei sich beobachtet oder konnte diese ggf. schon lösen?
Gruß
lcars -
@lcars Hallo Lars,
Normalerweise hängt am Master der Dongle, der Smartmeter und die erste Batterieeinheit. Insofern könnte es sein, das die ID 2 der Master ist. Dann müsste die Einstellung für die Ids = 2,1 lauten.
In deinem andern Post hast du ein Fehler beim Zugriff auf 37700 aufgezeigt. Das wäre die SN der 2ten Battery Unit., die du u.U. nicht hast.Sofern du mit mehreren Clients auf den Modus (seriell) zugreifen möchtest, benötigst du einen sog. modbus proxy. In einem anderen Projekt (Home Assistant) wird auf den https://pypi.org/project/modbus-proxy/ verwiesen. Den Proxy habe ich allerdings noch nicht eingesetzt.
Wichtig ist es auch die Software von den WR und dem Dongle auf den neusten Stand upzudaten.
Stephan
-
@bolliy Das mit der geänderten Angabe der IDs habe ich gleich getestet und mal das Abfrageintervall verkürzt auf 10s aber seht selbst:
So sehen die Einstellungen bei mir aus:
-
@lcars Werden denn einige Daten gelesen oder nichts?
-
@bolliy Die Daten kommen schon rein, ich musste aber das Intervall auf 60s setzen. EinAusschnitt der Daten sieht so aus:
Das Log jetzt mit 60s Intervall und den IDs 2,1:
Sogar jetzt Timeouts.
Ok werde ggf. mal am Wochenende alles (Wechselrichter) neustarten und schauen ob sich da was ändert. -
@lcars Da einige Dongle mit der hohen Datenabfragerate anscheinend Probleme haben, baue ich gerade an einer neuen Test-Version (kein Release). Dort kann man einige Einstellungen zum modbus Timing vornehmen.
Ich melde mich bei dir, sofern die Test-Version fertig ist.
Stephan -
Da bei einigen immer wieder timeout- oder busy-Fehlermeldungen im Log auftauchen, habe ich jetzt gerade eine neue Entwickler-Version auf github hochgeladen.
Nun kann man beim sun2000 Adapter unter dem Reiter „MODBUS TIMING“ Einfluß auf das zeitliche Verhalten der modbus-Verbindung nehmen.
timeout (s) : Die Zeit um auf eine modbus-Anfrage seitens des Dongles zuantworten. Default = 5)
delay (ms) : Zeitverzögerung zwischen den modbus-Anfragen. Default = 0
connect delay (ms) : Zeitverzögerung nachdem eine modbus-Verbindung aufgebaut wurde. Default = 2000Besonders mit dem delay Wert sollte gespielt werden. Vielleicht erstmal mit einem hohen Wert (zb. 5000) starten und danach sukzessive nach unter korrigieren bis keine Fehler mehr auftauchen.
Die Installation erfolgt über den Expertenmodus. Danach auf die „Krakenkatze“ klicken und dann die benutzerdefinierte Url
https://github.com/bolliy/ioBroker.sun2000/tarball/dev
eingeben und die Installation starten.
Bitte mir eine Rückmeldung geben - ob es funktioniert – und beim welcher Einstellung die Funktion gegeben ist. -
@bolliy Klasse. Das ist mit dem Timing ist schonmal Prima. Da ich zwei Wechselrichter habe, hatte er immer den zweiten nie gleichzeitg abfragen können. Derzeit läuft bei mir im nodered noch die Register Abfrage, auch ähnlich mit dem Verzögerung.
Allerdings kommen bei mir nun ein Fehler beim WR2:
Error while reading from 192.168.2.16 [Reg: 37700, Len: 10, modbusID: 2] with: Modbus exception 2: Illegal data address (register not supported by device) -
@dragst3r hallo,
mit der Abfrage (Reg 37700 "SN") versuche ich die Anzahl der vorhandenen Battery units zuermitteln. Bei meinem WR (ich habe nur 1 WR) kommt der "Illegal data address" Fehler nicht.Vielleicht muss ich mir eine andere Möglichkeit suchen um herauszufinden wie viele Battery Units an einem WR angeschlossen sind. Ich wollte den Nutzer nicht mit weiteren Settings langweilen.
Mit welchen Modbus-Timing-Einstellungen funktioniert dein Setup?
Dann könnte ich die Daten als default Einstellungen zur Verfügung stellen.Stephan
-
@bolliy Die Slave WR haben doch meist keine Batterie, vielleicht in den Settings fragen ob Batterie vorhanden und wenn ja, bei welcher ID?
Als Einstellung habe ich derzeit: alle 10sek, wobei Debug sagt: Interval 13.254 sec. Habe heute erst deinen Adapter verwendet und muss meine Skripte umschreiben.
timeout: 5000ms
delay: 1000ms (hatte ich bei NodeRed auch)
connect: 5000msPS: Vielleicht kannst du noch als Setting den Netzbezug (Grid) berechnen. InputPower (loss) - HouseConsumption. Den brauch man z.B. bei evcc
Gruß
Steffen -
@dragst3r hi Steffen,
für den "Illegal data address" habe ich schon eine Lösung.
Falls ich eine Dev-Version fertig habe - gebe ich Bescheid.
Würdest du den neuen State Netzbezug ein issue https://github.com/bolliy/ioBroker.sun2000/issues erstellen. Dann vergesse ich dein Anliegen nicht. -
@dragst3r hi Steffen,
habe gerade eine neue Dev-Version hochgeladen.Intallation wie oben beschrieben. Allerdings muss der Adapter manuell neugestartet werden, da dieses nicht auto. funktioniert.
Der Intervall wird vom Adapter ggf. angepasst. Dann findest du folgendes im log:
warn Please check your configuration! warn The interval is too small. The value has been changed on 6 sec.
Die Fehlermeldung zu Reg 37700 wird nun ignoriert und nicht neu angefragt. Was ggf. auch zu Verzögerung (13 Sekunden Intervall) geführt haben könnte.
Ich freue mich auf deine/eure Rückmeldung.
P.S.
Zur Zeit kann ich keine neue Versionen veröffentlichen, da der Adaper noch in der Validierung durch das ioBroker Core Team steckt.Stephan
-
@dragst3r der Post https://forum.iobroker.net/post/1123119 war eigentlich für dich bestimmt.
-
@bolliy danke, der Fehler zu 37700 ist weg, jedoch habe ich noch
Error while reading from 192.168.2.16 [Reg: 37200, Len: 3, modbusID: 2] with: Modbus exception 2: Illegal data address (register not supported by device)
Scheinbar nun auch der einzige.