NEWS
[HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)
-
@christof-lewandowski sagte in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
zwar weg, funktionieren tut es trotzdem noch nicht :D.
Hab nun die Meldung:der Port ist 6607 wenn du den Wechselrichter abrufst.
502 wenn du den Dongle abrufst.@atifan
Danke. Habs jetzt mit dem modbus-proxy "gelöst". Damit kann mein Solarmanager UND node-red Daten per ModbusTCP abgreifen.
Gestern liefs zumindest noch, heute möchte Node-red den Flow nicht mehr starten... -
Achtung: Verbindung mit Modbus Adapter klappt nicht, node-red klappt.
Hier eine Anleitung um den SUN2000 Wechselrichter incl. Batterie und Power Meter per node-red auszulesen und Werte zu schreiben:
1. Wechselrichter korrekt konfigurieren:
Im Wechselrichter muss die Konfiguration per Modbus (TCP) aktiviert sein. Das kann der Installateur direkt erledigen. Alternativ lädt man sich die SUN2000 App auf's Handy und verbindet sich damit über das WLAN des Wechselrichters (also davorstehend im Keller) mit dem WR und stellt das ein. (Unter Kommunikationseinstellungen glaube ich, die Menüs sind ziemlich unübersichtlich mMn.)
Zum Login in die App als Installateur braucht man ein Passwort: 00000a
Eventuell braucht man zum Verbinden auf das WLAN des Wechselrichters auch ein Passwort: Changeme2. Node-Red installieren und Flow importieren:
Man muss im ioBroker node-red installieren. Außerdem muss man in node-red noch drei zusätzliche NPM Module installieren (geht bei den Instanzeinstellungen):
• node-red-contrib-calc
• node-red-contrib-buffer-parser
• node-red-contrib-modbusHat man das erledigt, kann man diesen Flow importieren:
Huawei_SUN2000_node_red_flow_read_write_2023-11.txt
Achtung, weil das hier schon ein paar Mal zu Problemen geführt hat: Man muss die Client-ID in allen Modbus-Nodes korrekt eintragen. Bei mir steht da 2, weil mein Wechselrichter schonmal getauscht wurde. Das muss überall auf den richtigen Wert (meistens 1) geändert werden damit Daten kommen!
Nachdem man den Flow importiert hat muss man ganz rechts im Menü unter "Globale-Konfigurations-Nodes" beim modbus-client noch die IP Adresse vom Wechselrichter und wieder die richtige Client-ID (typischerweise 1) eintragen. (Port ist 502)3. Hinweise:
Dann sollte die Verbindung eigentlich schon funktionieren. Bei mir war dann noch das Problem, das node-red gemeckert hat, dass die Objekte in iobroker nicht existieren in die er schreiben will.
Um das zu fixen habe ich im Flow alle Output-Nodes (die graublauen Boxen rechts) einmal doppeltgeklickt und dort bei "Auto-create --> Create states if not exist" ausgewählt. Dann kann man noch die Einheit und den Typ festlegen und dann werden die States automatisch beim ersten Lesen angelegt. Hierfür ist es erforderlich, dass in den node-red Instanzeinstellungen noch der Hacken bei "Erstellung von Fremd-Objekten zulassen" aktiviert wird.
Zusätzlich habe ich noch den Wert "Readonly --> Object is writeable" gesetzt. K.a. ob das nötig ist, aber ich hatte den Eindruck, dass die Werte sonst nicht korrekt aktualisiert werden.Zum Nachlesen gibt es hier noch die Huawei SUN2000 Modbus Register Übersicht:
Solar Inverter Modbus Interface Definitions V5.pdf (Stand 2023)
Im Flow werden die wichtigsten Größen aber schon abgefragt.4. Modbus-Register schreiben:
Man kann auch Register schreiben! Damit kann man z.B. die Batterie-Entladung auf 0W setzen wenn das eAuto lädt. Damit entlädt sich die Batterie dann nicht unnötig, wenn man das Auto mit Netzstrom lädt im Winter oder Nachts.
Man kann auch TOU (Zeitgesteuertes Laden) aktivieren. Damit kann man wenn man Tibber oder Awattar nutzt zu den günstigen Stunden den Akku aufladen. Um die günstigsten Stunden auszulesen gibt es hier im Forum entsprechende Skripte.4.1 Zeitgesteuertes Laden korrekt konfigurieren und schreiben:
• AC-Laden muss auf 1 stehen (Register 47087). Kann auch mMn permanent auf 1 bleiben.
• Battery Working Mode (Register 47086) kann zwischen 2 (Maximaler Eigenverbrauch) und 5 (TOU, zeitgesteuert Laden) umgestellt werden.
• Man definiert dann in der Huawei FusionSolar App unter Geräte - Dongle - Parametereinstellungen (die 4 Punkte oben rechts) einfach eine Zeit von 0:00 bis 23:59 jeden Tag "laden" (also den ganzen Tag). Dafür muss die Batterie auf TOU (5) gestellt sein.
• Sobald man jetzt per Modbus das Register 47086 von 2 auf 5 umschaltet, fängt die Batterie aus dem Netz an zu laden.
• Maximaler Ladestrom kann über Register 47075 eingestellt werden.
• Stellt man den Working Mode wieder zurück auf 2, hört das Netzladen auf und die Batterie verhält sich wieder "normal".Die nötigen ioBroker Datenpunkte muss man noch anlegen. Also zB. Battery_Max_Charge_Power_SET oder Workingmode_Change.
5. Weiteres
5.1 Mehrere Wechselrichter abfragen
Es gibt noch weitere Möglichkeiten den Flow aufzubauen. Man kann mehrere Adressbereiche auf einmal abfragen, das ist ggf. etwas effizienter. Den Flow dazu habe ich aber nicht getestet:Außerdem enthält der Flow ein Beispiel für die Abfrage mehrerer Wechselrichter in Kaskade. Im Prinzip muss man nur die korrekten IDs pro Wechselrichter eintragen und nicht zu viele Register abfragen, sonst kommen keine Daten mehr. Damit lassen sich auch 3 Wechselrichter (oder ggf. sogar mehr) in einem Flow abfragen.
5.2 Aktuelle Firmware / Modbus Interface Definitions
Hier noch ein Link zu den aktuellen Firmware Versionen:
SUN2000 FirmwareVielen Dank an alle, die den Input geliefert haben!
Ich hoffe es hilf, wenn ich es hier einmal zusammengefasst habe.@badsnoopy667 Hallo, vielen Dank für die Anleitung, habe es eingerichtet und es funktioniert (Node-red Anfänger). Es werden nur nicht alle Werte erfasst. Im Node-red sind die Kästchen heller….. Ist das normal? Die wichtigsten Werte sind ja vorhanden…… ich hänge es mal als Bilder an, sollte hoffentlich zu sehen sein…….
Vielen Dank





-
@badsnoopy667 Hallo, vielen Dank für die Anleitung, habe es eingerichtet und es funktioniert (Node-red Anfänger). Es werden nur nicht alle Werte erfasst. Im Node-red sind die Kästchen heller….. Ist das normal? Die wichtigsten Werte sind ja vorhanden…… ich hänge es mal als Bilder an, sollte hoffentlich zu sehen sein…….
Vielen Dank





@svenh75
die helleren Kästchen sind deaktiviert. Ich glaube da kann man drauf klicken und dann unten in der Ecke auf aktivieren oder so klicken. -
@svenh75
die helleren Kästchen sind deaktiviert. Ich glaube da kann man drauf klicken und dann unten in der Ecke auf aktivieren oder so klicken.@badsnoopy667 Dankeschön, genau so ist es

-
Hallo zusammen. Ich habe zwei SUN2000 und eine Luna2000. Darf ich mir eine Node von Euch runterladen, damit ich die dann an meine Anlage anpassen kann? Bin Node-RED-Anfänger. Muss leider auch blöd Fragen: Wie kann ich denn eine Node runterladen? Vielen herzlichen Dank im voraus.
-
Hallo zusammen. Ich habe zwei SUN2000 und eine Luna2000. Darf ich mir eine Node von Euch runterladen, damit ich die dann an meine Anlage anpassen kann? Bin Node-RED-Anfänger. Muss leider auch blöd Fragen: Wie kann ich denn eine Node runterladen? Vielen herzlichen Dank im voraus.
@harald0708
Du musst den Flow aus Post 1 runterladen und in node-red importieren. Das ist eine Textdatei.
Dann kannst du die Nodes (also die kleinen bunten Kästchen), die sich in diesem Flow befinden, anpassen wie im Post 1 beschrieben (also mit der Unit-ID usw.) -
@harald0708
Du musst den Flow aus Post 1 runterladen und in node-red importieren. Das ist eine Textdatei.
Dann kannst du die Nodes (also die kleinen bunten Kästchen), die sich in diesem Flow befinden, anpassen wie im Post 1 beschrieben (also mit der Unit-ID usw.)@badsnoopy667 Servus, das hab ich erledigt, bin mal so frech, und hänge mich an diese Frage dran. Wie kann ich jetzt dann die Werte im IOBroker verwenden? Brauche die Werte, dass ich meine Wallbox mit den Keba-connect adapter steuern kann. Bitte um Hilfe. danke und schönen Nachmittag
-
@badsnoopy667 Servus, das hab ich erledigt, bin mal so frech, und hänge mich an diese Frage dran. Wie kann ich jetzt dann die Werte im IOBroker verwenden? Brauche die Werte, dass ich meine Wallbox mit den Keba-connect adapter steuern kann. Bitte um Hilfe. danke und schönen Nachmittag
@stefanwidmann ??? in dem Flow schreibst Du doch die Werte über die iobroker-Out Nodes in Datenpunkte?
-
@harald0708
Du musst den Flow aus Post 1 runterladen und in node-red importieren. Das ist eine Textdatei.
Dann kannst du die Nodes (also die kleinen bunten Kästchen), die sich in diesem Flow befinden, anpassen wie im Post 1 beschrieben (also mit der Unit-ID usw.)@badsnoopy667 Vielen Dank für Deine Anwort. Leider stell ich mich so dämlich an. Wo ist der Post1 und wo kann ich den Flow runterladen? Bitte nochmals um Hilfe. Die Textdatei (Flow) in Node-Red importieren ist kein Problem.
-
@badsnoopy667 Vielen Dank für Deine Anwort. Leider stell ich mich so dämlich an. Wo ist der Post1 und wo kann ich den Flow runterladen? Bitte nochmals um Hilfe. Die Textdatei (Flow) in Node-Red importieren ist kein Problem.
@harald0708 Der erste Post ist der Älteste und lest ihr nicht?

-
@harald0708 Der erste Post ist der Älteste und lest ihr nicht?

@mickym Danke für die Antwort. Ganz hochscrollen hat wohl nicht gleich funktioniert. Nun hab ich es gefunden und importiert. Vielen Dank.
-
Das Thema mit den Abfragen kannst du auch anders umschiffen.
Du kannst mehrere Register auf einmal abfragen (ich habe zB in 2 Abfragen alles drinnen - da ein recht großer Adressbereich für mich nicht so interessant ist):-
Register 32000-32116:

Die Abfrage triggert dann die zweite Abfrage

-
Register 37000-37125:

Die Daten laufen dann durch einen edit puffer-parser node, werden in einem join-node zusammengefügt und (in meinem Fall) auf einmal in eine InfluxDB geschrieben:

Nur als Anregung bzw. Idee, wenn man den Overhead der Register-Anfragen reduzieren möchte.

Gruß,
Mat@madmat17 said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
Das Thema mit den Abfragen kannst du auch anders umschiffen.
Du kannst mehrere Register auf einmal abfragen (ich habe zB in 2 Abfragen alles drinnen - da ein recht großer Adressbereich für mich nicht so interessant ist):-
Register 32000-32116:

Die Abfrage triggert dann die zweite Abfrage

-
Register 37000-37125:

Die Daten laufen dann durch einen edit puffer-parser node, werden in einem join-node zusammengefügt und (in meinem Fall) auf einmal in eine InfluxDB geschrieben:

Nur als Anregung bzw. Idee, wenn man den Overhead der Register-Anfragen reduzieren möchte.

Gruß,
MatDas sieht sehr interessant aus. Kämpfe auch gerade mit zu vielen Abfragen...Wie würde man denn in Node Red nun die Ergebnisse der Registerabfragen in die ioBroker Datenpunkte schreiben?
-
-
@madmat17 said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
Das Thema mit den Abfragen kannst du auch anders umschiffen.
Du kannst mehrere Register auf einmal abfragen (ich habe zB in 2 Abfragen alles drinnen - da ein recht großer Adressbereich für mich nicht so interessant ist):-
Register 32000-32116:

Die Abfrage triggert dann die zweite Abfrage

-
Register 37000-37125:

Die Daten laufen dann durch einen edit puffer-parser node, werden in einem join-node zusammengefügt und (in meinem Fall) auf einmal in eine InfluxDB geschrieben:

Nur als Anregung bzw. Idee, wenn man den Overhead der Register-Anfragen reduzieren möchte.

Gruß,
MatDas sieht sehr interessant aus. Kämpfe auch gerade mit zu vielen Abfragen...Wie würde man denn in Node Red nun die Ergebnisse der Registerabfragen in die ioBroker Datenpunkte schreiben?
@christof-lewandowski sagte in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
Wie würde man denn in Node Red nun die Ergebnisse der Registerabfragen in die ioBroker Datenpunkte schreiben?
Mit einer iobroker-Out Node. Das Topic enthält den Pfad zum Datenpunkt.
-
-
@christof-lewandowski sagte in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
Wie würde man denn in Node Red nun die Ergebnisse der Registerabfragen in die ioBroker Datenpunkte schreiben?
Mit einer iobroker-Out Node. Das Topic enthält den Pfad zum Datenpunkt.
@mickym said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
@christof-lewandowski sagte in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
Wie würde man denn in Node Red nun die Ergebnisse der Registerabfragen in die ioBroker Datenpunkte schreiben?
Mit einer iobroker-Out Node. Das Topic enthält den Pfad zum Datenpunkt.
Ein Beispiel hierzu wäre klasse

Eher dann aber zu den buffer-parser und join nodes. Die iobroker-Out Nodes sollten ja die selben wie aus den mehrfach verlinkten Flows hier sein.
-
@mickym said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
@christof-lewandowski sagte in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
Wie würde man denn in Node Red nun die Ergebnisse der Registerabfragen in die ioBroker Datenpunkte schreiben?
Mit einer iobroker-Out Node. Das Topic enthält den Pfad zum Datenpunkt.
Ein Beispiel hierzu wäre klasse

Eher dann aber zu den buffer-parser und join nodes. Die iobroker-Out Nodes sollten ja die selben wie aus den mehrfach verlinkten Flows hier sein.
@christof-lewandowski Du - dann musst Du ein konkretes Beispiel liefern. Stelle hier in CodeTags das ein was aus einer Modbus Node rauskommt und was Du dann in einen Datenpunkt schreiben willst - also wie das aussehen soll. Die Join Node brauchst du nicht unbedingt.
Mehrfache Analysen kannst bereits in einem Objekt zusammenfassen, wenn Du den parser entsprechend konfigurierst.

Beispiele zu den Buffer-Nodes werden in Beispielen bereits mitgeliefert.

Hier noch ein paar Beispiele, die ich mir selbst gemacht habe, um das Ganze zu verstehen;
Ich empfehle Dir auch diesen Thread - in dem alles im Detail anhand von Beispielen erklärt wird:
-
@fridolin01
So hier mal mein Export.
die Variablen, da musst mal gucken ob die mit exportiert wurden, ansonsten noch mal melden.
Wenn du Fehler findest, gib mal eben Bescheid.Guten Morgen @ple
ich habe Deinen Flow importiert. Die Datenpunkte zum Dongle wurden angelegt und Werte kommen im iOBroker an.
Aber beim zweiten Pfad tut sich nichts. Es werden keine Datenpunkte angelegt und es kommen auch keine Werte an.
Hast Du eine Idee?
Liegt es daran, dass ich nur zwei Strings habe? Was für einen WR nutzt Du - ich habe einen SUN2000 6KT1 ….. werden die richtigen Register abgefragt.?
LG
Andreas S.

-
Guten Morgen @ple
ich habe Deinen Flow importiert. Die Datenpunkte zum Dongle wurden angelegt und Werte kommen im iOBroker an.
Aber beim zweiten Pfad tut sich nichts. Es werden keine Datenpunkte angelegt und es kommen auch keine Werte an.
Hast Du eine Idee?
Liegt es daran, dass ich nur zwei Strings habe? Was für einen WR nutzt Du - ich habe einen SUN2000 6KT1 ….. werden die richtigen Register abgefragt.?
LG
Andreas S.

@ple, ich habe dann mal weiter recherchiert, denn leider sehe noch immer keine Werte für den unteren Teil des Flows :-(.
Herausgefunden habe ich, dass der obere Teil auf die Register zugreift, die auch in diesem Dokument beschrieben sind SDongle MODBUS TCP Guide https://www.photovoltaikforum.com/core/attachment/260120-sdonglea-05-modbus-tcp-guide-pdf/
Die Register, die im unteren Teil verwendet werden, sind im folgenden Dokument beschrieben Solar Inverter Modbus Interface Definitions (V3.0)
https://www.photovoltaikforum.com/core/attachment/180219-solar-inverter-modbus-interface-definitions-v3-0-pdf/.Da die Dokumente auch für meine Hardware zutreffen, sollten die im Flow verwendeten Register alle richtig sein …. aber trotzdem kommt zum unteren Teil, dem zweiten und dritten Trigger nichts an. Warum geht es bei anderen? Warum geht es bei mir nicht?
-
@ple, ich habe dann mal weiter recherchiert, denn leider sehe noch immer keine Werte für den unteren Teil des Flows :-(.
Herausgefunden habe ich, dass der obere Teil auf die Register zugreift, die auch in diesem Dokument beschrieben sind SDongle MODBUS TCP Guide https://www.photovoltaikforum.com/core/attachment/260120-sdonglea-05-modbus-tcp-guide-pdf/
Die Register, die im unteren Teil verwendet werden, sind im folgenden Dokument beschrieben Solar Inverter Modbus Interface Definitions (V3.0)
https://www.photovoltaikforum.com/core/attachment/180219-solar-inverter-modbus-interface-definitions-v3-0-pdf/.Da die Dokumente auch für meine Hardware zutreffen, sollten die im Flow verwendeten Register alle richtig sein …. aber trotzdem kommt zum unteren Teil, dem zweiten und dritten Trigger nichts an. Warum geht es bei anderen? Warum geht es bei mir nicht?
@leonundjulie
Puh, ist schon ein wenig her bei mir. Hier mal mein aktueller Flow.
Wie du schon erkannt hast, habe ich für den oberen Teil die Adressen direkt vom Dongle genommen, mit der neusten Software kann man die auch schneller abfragen.
Der untere Teil betrifft nur den Inverter, da musst du die passenden Strings wählen. Kann sein, dass dein WR andere verwendet.
Meine Hardware besteht aus KTL30-m3, powersensor und dongle. -
Hallo zusammen,
hat einer eine Idee warum auf einmal, meine active Last, also mein Hausverbrauch (32080) identisch ist mit der Dachproduktion? Das war vorher nie so

Danke für Eure Ideen


@joogibaer
Ich glaube der Fehler liegt in der Annahme, das "Active Power" der Hausverbrauch wäre. Das ist definitiv nicht so. Den Hausverbrauch muss man sich selber berechnen. Kann Dir gerade nicht genau sagen, was "Active Power" dann sein soll, aber ich glaube das ist eher das, was gerade über den Wechselrichter läuft. Also nachts dann auch das, was aus der Batterie kommt.
Bei mir sind die beiden Werte aktuell auch gleich. Ich speise ein. Sobald die Batterie ge- oder entladen wird, sind die beiden Werte nicht mehr gleich.
Ich habe weiter oben mein Blockly Skript zur Berechnung des Verbrauchs gepostet. Ist etwas komplizierter, aber guck Dir das mal an.
Hab jetzt nochmal nachgesehen, aber ohne Gewähr:
PV-Erzeugung = Active Power Inverter + Battery Power
Hausverbrauch = Active Power Inverter - Active Power Meter
Netzbezug/Einspeisung = Active Power Meter (Vorzeichen beachten!)