NEWS
[HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)
-
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
Moin Moin,
ich hänge gerade dabei meinen ktl30-m3 und den Dongle in den iobroker zu bekommen.
Anscheinend bekomme ich jedoch keine Verbindung, und ehrlich, ich bin mir nicht sicher, welche Einstellungen in Fusion solar gemacht werden müssen. Kannst du deine vielleicht mal posten?Gruß und Danke
node-red.0 2022-03-08 09:51:01.663 warn 8 Mar 08:51:01 - [warn] [modbus-client:WLAN-FE] Client -> fsm init in 2000 ms TCP@10.10.10.21:502 default Unit-Id: 1 node-red.0 2022-03-08 09:51:01.662 warn 8 Mar 08:51:01 - [warn] [modbus-client:WLAN-FE] Client -> fsm init state after reconnecting TCP@10.10.10.21:502 default Unit-Id: 1 node-red.0 2022-03-08 09:50:59.661 warn 8 Mar 08:50:59 - [warn] [modbus-client:WLAN-FE] Client -> fsm reconnect state after closed Get More About It By Logging TCP@10.10.10.21:502 default Unit-Id: 1 node-red.0 2022-03-08 09:50:59.660 warn 8 Mar 08:50:59 - [warn] [modbus-client:WLAN-FE] Client -> fsm failed state after sending Get More About It By Logging TCP@10.10.10.21:502 default Unit-Id: 1 8 Mar 08:50:59 - [warn] [modbus-client:WLAN-FE] Client -> fsm broken state after failed Get More About It By Logging TCP@10.10.10.21:502 default Unit-Id: 1 node-red.0 2022-03-08 09:50:58.666 warn 8 Mar 08:50:58 - [warn] [modbus-client:WLAN-FE] Client -> fsm broken state after init Get More About It By Logging TCP@10.10.10.21:502 default Unit-Id: 1 node-red.0 2022-03-08 09:50:56.663 warn 8 Mar 08:50:56 - [warn] [modbus-client:WLAN-FE] Client -> fsm init in 2000 ms TCP@10.10.10.21:502 default Unit-Id: 1 node-red.0 2022-03-08 09:50:56.662 warn 8 Mar 08:50:56 - [warn] [modbus-client:WLAN-FE] Client -> fsm init state after reconnecting TCP@10.10.10.21:502 default Unit-Id: 1 node-red.0 2022-03-08 09:50:54.660 warn 8 Mar 08:50:54 - [warn] [modbus-client:WLAN-FE] Client -> fsm broken state after failed Get More About It By Logging TCP@10.10.10.21:502 default Unit-Id: 1 8 Mar 08:50:54 - [warn] [modbus-client:WLAN-FE] Client -> fsm reconnect state after closed Get More About It By Logging TCP@10.10.10.21:502 default Unit-Id: 1 node-red.0 2022-03-08 09:50:54.659 warn 8 Mar 08:50:54 - [warn] [modbus-client:WLAN-FE] Client -> fsm failed state after sending Get More About It By Logging TCP@10.10.10.21:502 default Unit-Id: 1
-
@ple
Hallo ple! Achtung: Du musst die SUN2000 App benutzen, NICHT die FusionSolar App. Das sind zwei verschiedene Apps!Mein Wechselrichter hat sich leider abgeschossen (Hardware Defekt), deshalb kann ich nicht so richtig darauf zugreifen... aber ich habe in paar Screenshots gemacht von den Einstellungen.
Bei mir gibt es, wenn ich vor dem Wechselrichter stehe zwei WLAN Netze, auf die ich mich verbinden kann. Einmal "SDongle..." und einmal "SUN2000".
Auf das "SDongle" komme ich gerade nicht drauf, aber ich meine, man muss ich mit beiden Netzen verbinden um a) den Dongle und b) den Wechselrichter selbst zu konfigurieren.Hier die Screenshots vom Wechselrichter (Netwerk SUN2000...):
Im Dongle muss man glaube ich noch "Modbus TCP" aktivieren und da kann man auch die Unit-ID festlegen. Guck mal nach, ob die wirklich 1 ist, so wie es in Deinem Log steht.
Achso: Das Verbinden mit dem Netzwerk und der App klappt manchmal nur so lala. Bei mir geht es am Besten wenn ich:
- Die App starte und auf "Manuell Verbinden" klicke
- Auf das Bildchen mit dem Wechselrichter klicke in der APP
- In die WLAN Einstellungen vom Handy wechsel und dann das WLAN vom Wechselrichter auswähle
- In der App dann unten auf "Verbinden" klicke.
Dann sollte er einem das Auswahlmenü anbieten, ob man Installateur oder Benutzer ist. Die Einstellungen kann man nur im Modus Installateur vornehmen.
-
@badsnoopy667
Also auf den Wechselrichter kommt ich als Installateur, ich guck mir das nachher noch mal an, was da genau steht.Gruß und Danke
-
Was mir gerade noch einfällt: Bei mir war Anfangs die Firmware des Dongles nicht aktuell. Mit der alten Firmware habe ich auch keine Verbindung bekommen. Der Installateur hat die Firmware dann über das FusionSolar Online Portal geupdatet und dann ging es!
-
@badsnoopy667 vielen Dank für diese tolle Anleitung! Ist es eigentlich auch möglich den PV-Überschuss im Flow auszugeben?
Grüße! -
@hase_92
Den Überschuss gibt der Wechselrichter selbst nicht mit aus soweit ich das bisher verstanden habe.
Ich berechne mir den aber selber. Ich habe mir dafür ein Blockly geschrieben.
Da die Werte vom Wechselrichter nicht genau synchron übermittelt werden schreibe ich die Werte 20 Sekunden lang in Listen und bilde dann alle 20 Sekunden den Mittelwert. Mit den Mittelwerten kann man dann weiterrechnen.
Ich packe das Skript mal hier rein, es benötigt aber eine ganze Menge Datenpunkte die man wohl erstmal alle anlegen muss.
Aber vielleicht hilft es ja zum Verständnis. Das im Detail zu erklären fällt mir schwer, bin teilweise selbst froh, dass es einfach funktioniert. Das warum ist dann manchmal zweitrangig.Blockly Export:
Blockly Export.txt -
@badsnoopy667 said in [Solved] Huawei SUN2000 Wechselrichter Modbus mit node-red:
@hase_92
Den Überschuss gibt der Wechselrichter selbst nicht mit aus soweit ich das bisher verstanden habe.
Ich berechne mir den aber selber. Ich habe mir dafür ein Blockly geschrieben.
Da die Werte vom Wechselrichter nicht genau synchron übermittelt werden schreibe ich die Werte 20 Sekunden lang in Listen und bilde dann alle 20 Sekunden den Mittelwert. Mit den Mittelwerten kann man dann weiterrechnen.
Ich packe das Skript mal hier rein, es benötigt aber eine ganze Menge Datenpunkte die man wohl erstmal alle anlegen muss.
Aber vielleicht hilft es ja zum Verständnis. Das im Detail zu erklären fällt mir schwer, bin teilweise selbst froh, dass es einfach funktioniert. Das warum ist dann manchmal zweitrangig.Blockly Export:
Blockly Export.txtHi badsnoopy667, vielen Dank für den Flow. Ich versuche schon seit Monaten den Wechselrichter auszulesen. Huawei macht es einem da nicht gerade einfach. Aber nun läuft es.
Zum Thema Überschuss, es gibt das Objekt "Active_Power" dort steht doch die Leistung die eingespeist oder bezogen wird. Wenn der Wert positiv ist speise ich ein und die Zahl ist doch dann auch mein Überschuss? Oder habe ich hier einen Denkfehler?
-
@biervoegelhasso
Ja, Du hast Recht. Der Datenpunkt Active_Power_METER (!) gibt an, ob gerade eingespeist oder bezogen wird aus dem Netz. Damit berechne ich mir auch meine Einspeisung und Bezugswerte. Diese dann einfach alle 10 Sekunden einmal aufaddieren und durch 360000 teilen, siehe Screenshot. Das reicht für mich von der Genauigkeit.Was ich meinte war "PV-Erzeugung". Damit stehe ich noch auf Kriegsfuß. Das ging solange gut, bis ich die Batterie bekommen habe. Es gibt ja den Datenpunkt "Daily Energy Yield" im Inverter. Aber wenn man eine Batterie hat, dann zählt der Inverter auch weiter hoch, wenn der Strom aus der Batterie und nicht mehr vom Dach kommt.
Dann gibt es noch "Input Power". Das ist das, was vom Dach kommt. Aber anscheinend ohne Berücksichtigung des Wirkungsgrades. Leider gibt mir der Inverter den Wirkungsgrad unter "Efficiency" nicht mehr korrekt aus. Da steht immer 41.35%.. Ist das bei Dir auch so, oder kommt der Wert nur bei mir nicht korrekt? Da der Wirkungsgrad gerade bei schwankender Erzeugung schonmal ziemlich mau ist, ist der Wert ohne Wirkungsgrad leider ziemlich optimistisch im Vergleich zu dem Ertrag den FusionSolar anzeigt am Handy. -
@badsnoopy667
Ich habe keinen Akku daher nutze ich "Input Power". Mit dem Wirkungsgrad habe ich noch keine Erfahrung. Bei mir werden Werte von 261-299 angezeigt.
Ich werte alles mit Grafana aus. Geht wirklich super. -
@biervoegelhasso
Wenn Du keinen Akku hast, dann müsste der Wert "Active Power Inverter" Dein PV Ertrag incl. Wirkungsgrad sein. "Input Power" ist mMn der Wert ohne den Abzug vom Wirkungsgrad.
Mit Akku ist "Active Power Inverter" nur noch das, was der Inverter an den Stromkasten liefert, Batterieladung schon abgezogen, bzw. Batterieentladung schon addiert.Dein Grafana ist sehr schön! An Grafana hab ich mich noch nicht rangetraut, nutze noch Flot. Steht aber auf der Liste. Muss aber erstmal rausfinden, wie man das installiert und einrichtet.
Kann man bei Grafana den View Exportieren? Dann könntest Du Deinen View hier als Vorlage vielleicht hochladen? -
@badsnoopy667 said in [Solved] Huawei SUN2000 Wechselrichter Modbus mit node-red:
@ple
Hallo ple! Achtung: Du musst die SUN2000 App benutzen, NICHT die FusionSolar App. Das sind zwei verschiedene Apps!Hallo,
diese Information ist nicht richtig. Das geht sehr wohl mit der FusionSolar App.
Starte sie ganz normal und tippe dann auf ich (unten rechts)
Tippe im folgenden Menü auf "Inbetriebnahme des Geräts" und du bist dort wo hin musst. Keine Angst, das Gerät wird nicht neu konfiguriert. Das Menü kommt dir von SUN2000 vertraut vor. -
@suvfepp said in [Solved] Huawei SUN2000 Wechselrichter Modbus mit node-red:
ppe im folgenden Menü auf "Inbetriebnahme des Geräts" und du bist dort wo hin musst. Keine Angst, das Gerät wird nicht neu konfi
Ach wie geil! Gut zu wissen! Danke!
-
Ich krieg den ollen Wechselrichter nicht verbunden, keine Ahnung warum.
Welche Firmwareversionen habt ihr auf den WR und Dongle?
Ich habe
WR = V100R001C20SPC112
Dongle= V100R001C00SPC127ich habe mich mal direkt mit den WR verbunden sowie auch Dongle und mal ein wenig nach den Einstellungen geguckt, sieht mir aber so aus, als ob alles soweit richtig wäre.
-
Ich hab folgende Firmware drauf:
WR: V100R001C00SPC141
Dongle: V100R001C00SPC126Deine Screenshots zeigen bei mir nix. Ist da was schiefgelaufen beim Upload?
-
Neuer Versuch, das war so alles was ich gefunden habe.
-
@ple
Im zweiten und vierten Screenshot steht "Modbus RTU". Da muss aber "Modbus TCP" stehen glaube ich. Sonst wird das nix! Stell das mal um, dann sollte es eigentlich gehen. -
@badsnoopy667
bin jetzt mal hier nach gegangen
https://forum.huawei.com/enterprise/en/modbus-tcp-guide/thread/789585-100027?page=3#comments-area
scheint so, als ob der dongle kein Modbus aktuell so kann.
ich spiele mal auf die 126 zurück.War der Dongle per Wlan oder Kabel angeschlossen? Hatte mal was gelesen, das Modbus nur per Wlan geht, finds aber gerade nicht wieder.
-
@ple
Bei mir ist der Dongle per WLan angeschlossen. -
@ple Hast Du auf Modbus TCP umgestellt?