Nun habe ich meinen Flow fertig, den ich hier gerne teile.
Abfrage der Werte des Huawei Sun2000 Wechselrichters
Folgendes stand hier im Vordergrund:
- Aufgrund der Trägheit des Huawei-Dongles die Anzahl der Abfragen so weit es geht reduzieren und damit die Geschwindigkeit erhöhen - daher werden die Register gesammelt abgefragt (aufgrund der Adressabstände mit insgesamt nur 3 Aufrufen je Abfrage)
- Da die Werte auch in eine Datenbank (InfluxDB) geschrieben werden, sollten ebenfalls so viele Register wie möglich gleichzeitig abgefragt werden (um so weit wie möglich die Datenkonsistenz zu wahren)
- Von einem 5-Sekunden-Heartbeat ausgehend werden im IOBroker alle 5 Sekunden die relevantesten Werte aktualisiert und in die IOBroker-Objekte geschrieben (so weit nicht neu) - die Objekte werden übrigens ordentlich von node-red angelegt. Nach jedem 12. Beat (also alle 60 Sekunden) werden statt nur(!) der relevantesten Werte alle benötigten Werte (inklusive der relevantesten) vom Modbus gelesen, in die IOBroker-Objekte geschrieben und in eine InfluxDB geschrieben.
Mein Basis-Flow kommt mit denselben node-red Modulen (node-red-contrib-calc, node-red-contrib-buffer-parser, node-red-contrib-buffer-parser) wie von @badsnoopy667 im allerersten Post angeführt aus.
Für das Schreiben in die InfluxDB (falls erwünscht) wird noch das Modul node-red-contrib-influxdb benötigt und für den PV-Forecast (siehe weiter unten) noch das Modul node-red-contrib-sun-position.
Der Basis-Flow mit InfluxDB-Integration und den Elementen zum Schreiben der Register (aus dem ersten Post).
PV-Forecast
Des weiteren werden auch Forecast-Daten von Solcast abgerufen und in die InfluxDB geschrieben, sowie die tatsächlichen Werte an Solcast zurückgeschrieben (Solcast lernt aus den zurückgelieferten Werten und die Freunde können so ihren Dienst verbessern.
Leider kann ich mich beim besten Willen nicht mehr erinnern, wo ich den Flow her habe (er stammt NICHT aus meiner Feder). ABER ihr braucht dafür einen Solcast-Account, eine in eurem Account angelegte PV-Anlage und einen API-Key zum Abfragen der Werte.
Nach dem Anlegen der PV-Anlage (Position, Dimensionierung, Ausrichtung, ...) bekommt die Anlage eine ID, über welche die auf die Anlage bezogenen Forecast-Werte abgerufen werden können. Diese URL ist im Flow in den nodes "Solcast API - get Live+Forecast JSON", "Solcast API - get Past + Estimated Actuals" und "Solcast API - post measurements" abzulegen. Ebenfalls in diesen Nodes ist unter "Token" euer API-Key (nicht zu verwechseln mit der Anlagen-ID!) zu hinterlegen.
Änderung der Namen der Datenpunkte:
Wird in diesem Post erläutert: https://forum.iobroker.net/post/1084664
Viel Spaß damit.
Huawei_Sun2000_InfluxDB_Solcast.txt
LG,
Mat
EDIT:
Es gibt noch ein Problem mit dem Timing. Die Abfragen über meine alte node-red Instanz (lief auf einem x86 FreeBSD-Derivat) war in dieser Konfiguration problemlos; im aktuellen Setup (node-red im ioBroker auf einem RasPi) wirft extrem viele Time-Outs und Warning (Inject Node not ready). Wenn ich auf die Lösung gekommen bin, gibt es ein Update zu meinem Flow...
Das Problem mit den Timeouts hat sich in Wohlgefallen aufgelöst. Mehr dazu hier: https://forum.iobroker.net/topic/51639/howto-huawei-sun2000-wr-modbus-mit-node-red-read-write/485