NEWS
[HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)
-
Ich habe das selbe Setup (RasPi 4 Modell B, 8GB), habe aber keine Meldungen bezüglich Timeouts.
Gefühlt habe ich jedoch auch recht viele Clients im Netzwerk. -
@franzosenfranz
Danke dir! Und nutzt den Flow, den ich gepostet habe? -
Entschuldige, nein den von badsnoopy667 hier aus dem Forum.
-
@madmat17 Hallo Madmat. Erstmal vielen dank für deine erklärung. So langsam steige ich bei deinem Flow etwas dahinter.
Ich hatte tatsächlich das Problem mit dem Error, als ich deinen Flow genutzt habe.
node-red.0 2023-11-18 11:01:18.833 error 18 Nov 11:01:18 - [error] [modbus-getter:Inverter Data 32000-32116 Inverter 1] Error: Timed out at /opt/iobroker/iobroker-data/node-red/node_modules/node-red-contrib-modbus/modbus/maps/core/core/modbus-client-core.js:79:156 node-red.0 2023-11-18 11:01:18.832 warn 18 Nov 11:01:18 - [warn] [modbus-getter:Battery Charging Power 37001] Modbus Failure On State sending Get More About It By Logging node-red.0 2023-11-18 11:01:18.831 warn 18 Nov 11:01:18 - [warn] [modbus-getter:Input Power & Inverter Active Power Inverter 1] Modbus Failure On State sending Get More About It By Logging node-red.0 2023-11-18 11:00:07.336 warn 18 Nov 11:00:07 - [warn] [modbus-getter:Input Power & Inverter Active Power Inverter 1] Getter -> Inject while node is not ready for input.
Ich nutze aktuell wieder den Flow, wo mehrere Register gleichzeitig abgerufen werden.
Seit ich mal mit dem Register für Force Charge gespielt habe, ist mein Dongel eine richtige Diva geworden. Ich konnte davor alle Register in einem 8 Sekunden Intervall abrufen.
Seit dem Rumspielen bin ich jetzt bei alle 20 Sekunden und zwischen den Registern noch 5 Sekunden Pause. Trotzdem bekomme ich ab und an die Meldung, Node is not ready. Das selbe Problem habe ich auch, mit dem Flow im Eingangspost.Bei deinem Flow kommt leider noch der error mit timeout und diw Warnung mit Sending more about logging.
Wie ich dieses Diva verhalten des Dongels wieder löse, weiß ich leider nicht. Ich bin schon mit meinem Raspberry Pi 4 4gb von einem USB stick auf eine SSD umgezogen. Hat aber leider keinen unterschied gemacht.
Gibt es vielleicht in Nodered eine Möglichkeit, wenn er mit der ersten Node die abfrage macht, erst zur zweiten node geht, wenn er bei der ersten die Daten erhalten hat?
-
@doom-86
Die Firmware auf dem Dongle ist einfach der letzte Mist.
Bei mir hat sich das Teil komplett weggehängt, als ich das Netzwerk manuell umkonfiguriert habe (und ich weiß, was ich da tue).Ich habe mittlerweile hab eich die node-Warnungen (Inject before ready) nicht mehr und auch nur noch ganz sporadische Timeout-Error. Sporadisch heißt in dem Fall rund alle 30 Minuten einmal einen Error (= 0,06% aller Abfragen bei einem 5-Sekunden-Intervall). Das ist meiner Meinung nach noch vertretbar.
Was ich gemacht habe:
- Meinen Dongle wieder auf die eingeschränkte Modbus TCP Kommunikation umgestellt, sodass nur noch Pakete von einer Client-IP (= ioBroker) akzeptiert werden.
Ich weiß nicht warum, aber scheinbar war der Dongle mit den UDP- und IxMP-Paketen überfordert. Warum das so ist, geht mir nicht ganz ein, aber sei es drum... - Den Dongle vom WR komplett abgesteckt, das gesamte Netzwerk neu durchgestartet, ioBroker neu gestartet, Dongle wieder angeschlossen
Die Firmware dürfte auf bestimmte Dinge ganz allergisch reagieren und braucht dann einen Reset.
Aber wie das zu deinem Problem mit dem Force Charge passt, kann ich nicht sagen. Das kann mit dem Dongle (meiner bescheidenen Meinung nach) nichts zu tun haben, weil der Dongle ja nur die Pakete zum Wechselrichter durchreicht.@doom-86 said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
Gibt es vielleicht in Nodered eine Möglichkeit, wenn er mit der ersten Node die abfrage macht, erst zur zweiten node geht, wenn er bei der ersten die Daten erhalten hat?
Den Effekt sollte man in node-red immer dann erreichen, wenn ein nodem dem anderen nachgereiht ist.
Der Output des ersten Nodes liefert erst eine Message, wenn er seine Aufgabe abgeschlossen hat. Diese Message nutzt man bei Bedarf, um den nachgelagerten Node über den Input zu triggern.LG,
Mat - Meinen Dongle wieder auf die eingeschränkte Modbus TCP Kommunikation umgestellt, sodass nur noch Pakete von einer Client-IP (= ioBroker) akzeptiert werden.
-
@madmat17
Ich habe keine Ahnung, was ich gemacht habe, ich habe jetzt an meinem Flow so lange rumgespielt, bis mir auch meine Influxdb beschrieben wird. Siehe da, inzwischen bin ich wieder auf meinem 10 Sekunden Intervall.Gestern hatte ich noch mein Netzwerk neu gestartet (so wie du es beschrieben hattest), den Raspberry direkt an die Fritzbox gehängt, weil dort schon der Dongel angeschlossen war (Wollte ausschließen, dass durch den switch irgendetwas untergeht oder verzögert wird). Die beiden Wechselrichter und die Luna hatte ich für ca. 15 - 20 Minuten komplett ausgeschaltet.
Das ganze hat Gestern Abend nur leider nichts gebracht.Für Interessenten hier der Flow: Huawei NodeRed.txt
Es ist eine Mischung aus dem Flow von Mat und dem Flow, wo mehrere Register gleichzeitig abgefragt werde.
Die Mischung deswegen, weil ich wie von Mat die Daten in einer Influxdb haben wollte, aber zum anderen nicht auf meine aktuellen Datenpunkte verzichten. Ansonsten hätte ich einiges im Iobroker noch ändern müssen.Aktuell versuche ich den Teil mit Solecast in einem Seperaten Flow zum kaufen zu bringen. Erstmal nur das Abfragen und schrieben in die Influxdb. Senden an Solecast soll kommen, wenn der erste Teil funktioniert.
Genau da habe ich auch mein Problem. ich habe keinerlei Meldungen, aber Es wurden nur mal 4 Datenpunkte mit Estimate in die Influxdb geschrieben. Auch nur einmal. Von Forecast absolut gar nichts.
Vielleicht kannst du mir dort noch weiterhelfen?
LG,
Flo -
Wenn du von Solcast nur die "Estimated Actuals" retour bekommst und davon nur 4, dann vermute ich, dass mit dem Probieren des Flows über die Zeit die Anzahl der kostenlosen API-Calls/Tag (müssten 20 sein, wenn ich nicht irre) aufgebraucht sein.
So fern du deine Daten in den beiden hervorgehobenen Query-Nodes korrekt eingetragen hast und auch sonst alles passt, kann ich mir nur das als Ursache vorstellen.Bzw. checke noch einmal, ob du in dem HTTP-Call ("Solcast API - get LIve+Forecast JSON") die URL zu deiner PV-Anlage und auch den API-Key unter Token korrekt eingetragen hast:
LG,
Mat -
@madmat17 Hallo Mat,
Ich habe meine Verwirrung gefunden.
Ich habe erwartet, dass in der Influxdb Punkte mit forecast auftauchen. Dies ist nicht geschehen.Ich habe mir inzwischen die change node nach bewege msg.payload.forecast angeschaut:
In dieser steht
[[ {"value": $.payload.pv_estimate * 1000, "time": $toMillis($.payload.period_end)}, {"topic": "pv_initial_estimate"} ], [ {"value": $.payload.pv_estimate * 1000, "time": $toMillis($.payload.period_end)}, {"topic": "pv_estimate"} ], [ {"value": $.payload.pv_estimate10 * 1000, "time": $toMillis($.payload.period_end)}, {"topic": "pv_estimate10"} ], [ {"value": $.payload.pv_estimate90 * 1000, "time": $toMillis($.payload.period_end)}, {"topic": "pv_estimate90"} ] ]
Somit funktioniert das auch, nur ich hatte einen andere Beschreibung erwartet.
Wie heißt es so schön: Meistens sitzt das Problem zwischen Bildschirm und Stuhl.
-
@doom-86
Hauptsache ist, dass alles passt.
Freut mich, wenn es funktioniert! -
Hallo Leute,
ich habe versucht alles zu lesen und zu verstehen aber bei mir funktioniert nicht (ich kriege keine Werte gezeigt und im Debug kommt immer weider Getter -> Inject while node is not ready for input.)
Ich habe den Flow aus dem ersten Beitrag mit meinem WR-IP geändert und Unit-ID 1 Port 502 (Verbindstyp: DEFAULT) genommen.
Die Datenpunkten musste ich händisch anlegen - ging nicht auch wenn das Häckchen in der Node-RED Instanz gesetzt war.
Könnt ihr mir weiter helfen ?
DAnke. -
@geo-ioan said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
Hallo Leute,
ich habe versucht alles zu lesen und zu verstehen aber bei mir funktioniert nicht (ich kriege keine Werte gezeigt und im Debug kommt immer weider Getter -> Inject while node is not ready for input.)
Ich habe den Flow aus dem ersten Beitrag mit meinem WR-IP geändert und Unit-ID 1 Port 502 (Verbindstyp: DEFAULT) genommen.
Die Datenpunkten musste ich händisch anlegen - ging nicht auch wenn das Häckchen in der Node-RED Instanz gesetzt war.
Könnt ihr mir weiter helfen ?
DAnke.2023-11-28 02:44:56.400 - warn: node-red.0 (1008) 28 Nov 02:44:56 - [warn] [modbus-getter:30000] Getter -> Inject while node is not ready for input.
-
@geo-ioan said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
Ich habe den Flow aus dem ersten Beitrag mit meinem WR-IP geändert und Unit-ID 1 Port 502 (Verbindstyp: DEFAULT) genommen.
Hast Du die ID auch in allen Modbus Nodes geändert? Das sind die ganzen orangen Nodes vorne mit den Registernummern drin.
-
-
@geo-ioan
Hast Du mal versucht den Großteil des Flows zu deaktivieren und nur ganz wenige Register abzufragen? Oder das Abfrageintervall deutlich zu erhöhen? Geht es dann? Die Fehlermeldung klingt mir ein bisschen nach zu vielen Anfragen. -
@badsnoopy667
Ich habe gerade das auch versucht. Ich kriege aber gar keine Info in den Objekten (hat noch keine Werte ausgelesen).
Die Objekte sind richtig angelegt und Verlinkt in den Flows.
Zeigt er auch den gleichen Fehler wenn keine Daten von WR kommen ?
Habe ich vielleicht eine andere UnitID oder Port ?Danke dir.
-
@geo-ioan
Hmmm. Jetzt kommt der Fehler nicht mehr jede Minute (Abfrage Intervall) sondern nur am Anfang.
Ich kriege trotzdem keine Daten. -
@geo-ioan
Läuft bei dir noch irgendwas anderes, was per Modbus auf den WR zugreift? Das kann immer nur eine Verbindung gleichzeitig. -
@badsnoopy667
Da ist nichts anderes verbunden ... -
@geo-ioan Hast Du mal die ID 0 versucht? Oder 2 oder 16?
Ich würde wieder nur einen Teil des Flows testen, dann musst du weniger Nodes ändern.
Bzw. mal im WR nachsehen, welche ID eingetragen ist?
Modbus TCP ist aktiviert im WR? -
@badsnoopy667
Bleibt Port 502 ?