NEWS
[HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)
-
Ich bin zwar mit Grafana noch nicht ganz fertig, aber das sollte dir bereits helfen.
Die Variablen Preise für Strom import/export müsstest noch anpassen. Ich bin mir nicht sicher ob die im Panel direkt hinterlegt sind.
Die erste Zeile im Grafana sind die aktuellen Werte. Wochen/Monats/Jahreauswertung bin ich noch dran, dauert aber noch.
Fehler könnten auch noch vorhanden sein, müssten mal validieren.Gruß

-
Ich bin zwar mit Grafana noch nicht ganz fertig, aber das sollte dir bereits helfen.
Die Variablen Preise für Strom import/export müsstest noch anpassen. Ich bin mir nicht sicher ob die im Panel direkt hinterlegt sind.
Die erste Zeile im Grafana sind die aktuellen Werte. Wochen/Monats/Jahreauswertung bin ich noch dran, dauert aber noch.
Fehler könnten auch noch vorhanden sein, müssten mal validieren.Gruß

@ple
Ohne die entsprechenden Blockly Berechnungen wirds schwierig oder nicht?
trotzdem Danke für den Export -
@ple
Ohne die entsprechenden Blockly Berechnungen wirds schwierig oder nicht?
trotzdem Danke für den Export@fridolin01
Das wird alles in Grafana gemacht, kein blockly, kein Java. Das ist schon echt cool was man mit Grafana so machen kann.
Also wenn du meine Flow nimmst+ mein Dashboard und die Variablen für Stromkosten angelegt sind, müsste das so klappen.
Einzig im Flow müsstest du die pv Stränge ändern, da bei mir pv1,2,4,6,7,8 belegt sind. -
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.vielen, vielen Dank für die tolle Anleitung. Hat damit alles perfekt geklappt. Jetzt benötige ich nur noch eine(n) Idee/Tipp von Dir.
Ich habe einen Huawei mit 10 Kw Speicher. Im Moment lese ich die Energie-Daten mit node-red aus einem anderem System aus und würde diese gerne verwenden um die Huawei Batterie zu laden und zu entladen. Finde aber nicht die richtige Adresse um dies anzusteuern. Könnte ich mit den Ladewerten arbeiten? Hast Du eine Idee ?
Wäre sehr nett von Dir wenn Du mir Feedback gibst, danke
Michael -
vielen, vielen Dank für die tolle Anleitung. Hat damit alles perfekt geklappt. Jetzt benötige ich nur noch eine(n) Idee/Tipp von Dir.
Ich habe einen Huawei mit 10 Kw Speicher. Im Moment lese ich die Energie-Daten mit node-red aus einem anderem System aus und würde diese gerne verwenden um die Huawei Batterie zu laden und zu entladen. Finde aber nicht die richtige Adresse um dies anzusteuern. Könnte ich mit den Ladewerten arbeiten? Hast Du eine Idee ?
Wäre sehr nett von Dir wenn Du mir Feedback gibst, danke
Michael@softfruits
Hi. Ich bin mir nicht sicher, was Du meinst? Willst Du der Batterie sagen, wann sie laden und wann sie entladen soll?
Das macht sie ja eigentlich selber. Sobald Überschuss da ist, geht der in den Akku. Wenn Strom gebraucht wird, entlädt der Akku. Man kann die maximale Lade- und Entladeleistung festlegen, damit z.B. der Akku nicht entlädt, wenn man ein eAuto anklemmt. Aber soweit ich weiß kann man dem Akku nicht sagen: Hey, jetzt bitte aufladen.
Kannst Du nochmal genauer sagen was du möchtest? -
Ich bin zwar mit Grafana noch nicht ganz fertig, aber das sollte dir bereits helfen.
Die Variablen Preise für Strom import/export müsstest noch anpassen. Ich bin mir nicht sicher ob die im Panel direkt hinterlegt sind.
Die erste Zeile im Grafana sind die aktuellen Werte. Wochen/Monats/Jahreauswertung bin ich noch dran, dauert aber noch.
Fehler könnten auch noch vorhanden sein, müssten mal validieren.Gruß

@ple
Habe mich mal mit deinem Grafana Export beschäftigt.
Das Problem ist das alle deine Datenpunkte bei mir garnicht existieren.
Lese ich nicht genug Daten aus dem WR per Node Red?
Verstehe nicht wie du an die Datenpunkte kommst.
Das sind meine und auch die einzigen.

-
@ple
Habe mich mal mit deinem Grafana Export beschäftigt.
Das Problem ist das alle deine Datenpunkte bei mir garnicht existieren.
Lese ich nicht genug Daten aus dem WR per Node Red?
Verstehe nicht wie du an die Datenpunkte kommst.
Das sind meine und auch die einzigen.

@fridolin01
Du müsstest meinen Flow dafür nehmen. Ich weiß jetzt nicht wie man hier im thread den ersten Beitrag editieren kann, dann könnte man alles zusammen sammeln. Gibt ja noch etliche huawei Besitzer und vielen strömen wohl hier rüber -
@fridolin01
Du müsstest meinen Flow dafür nehmen. Ich weiß jetzt nicht wie man hier im thread den ersten Beitrag editieren kann, dann könnte man alles zusammen sammeln. Gibt ja noch etliche huawei Besitzer und vielen strömen wohl hier rüber@ple
Wenn du mir deinen Flow teilen würdest dann geht das sicher
Du meinst den in Node Red oder?
Oder hattest du den hier schonmal hinterlassen ? -
@ple
Wenn du mir deinen Flow teilen würdest dann geht das sicher
Du meinst den in Node Red oder?
Oder hattest du den hier schonmal hinterlassen ?@fridolin01
Ja, das mach ich heute Abend eben. -
@fridolin01
Ja, das mach ich heute Abend eben.@ple Perfekt Danke
-
@ple Perfekt Danke
@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. -
@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.@ple
So habe deinen node Red flow und die grafana Übersicht für mich angepasst und getestet.
Leider funktioniert das für mich nicht ausreichend stabil.
Es kommt immer wieder vor das anstelle der Tageswerte die Wochen oder Monatswerte in der Übersicht auftauchen.
Auch die fehlende Redundanz also sprich irgendwelche Tages, Wochen, Monatswerte werden nirgends niedergeschrieben.
Werde versuchen die Werte mittels source Analytics abzubilden und einzubinden.
Schauen wir mal wie das funktioniert und ob das besser funktioniert.
Trotzdem danke für das bereitstellen der Daten und Übersicht. -
@ple
So habe deinen node Red flow und die grafana Übersicht für mich angepasst und getestet.
Leider funktioniert das für mich nicht ausreichend stabil.
Es kommt immer wieder vor das anstelle der Tageswerte die Wochen oder Monatswerte in der Übersicht auftauchen.
Auch die fehlende Redundanz also sprich irgendwelche Tages, Wochen, Monatswerte werden nirgends niedergeschrieben.
Werde versuchen die Werte mittels source Analytics abzubilden und einzubinden.
Schauen wir mal wie das funktioniert und ob das besser funktioniert.
Trotzdem danke für das bereitstellen der Daten und Übersicht.@fridolin01
Das check ich noch nicht ganz.
Die View, da funktioniert erst mal nur die Übersicht, die anderen Row darunter sind nur zum testen, bin mir noch nicht sicher wie ich es aufbauen will und gerade ein paar andere Baustellen noch :-)
Aber grundsätzlich.
wenn du den Zeitraum anklickst, dann kannst du wählen zwischen aktuellen Tag, 7, 14, 30 Tage und Jahr.
Wenn der Zeitrahmen über start aufzeichnungen herrausgeht, dann klappt es noch nicht. Muss noch umgebaut werden. Ansonsten, wenn drin gezoomt wird, dann muss man erst oben rechts wieder irgend ein Zeitraum einstellen. keine Ahung warum das so ist.Gruß
-
@fridolin01
Das check ich noch nicht ganz.
Die View, da funktioniert erst mal nur die Übersicht, die anderen Row darunter sind nur zum testen, bin mir noch nicht sicher wie ich es aufbauen will und gerade ein paar andere Baustellen noch :-)
Aber grundsätzlich.
wenn du den Zeitraum anklickst, dann kannst du wählen zwischen aktuellen Tag, 7, 14, 30 Tage und Jahr.
Wenn der Zeitrahmen über start aufzeichnungen herrausgeht, dann klappt es noch nicht. Muss noch umgebaut werden. Ansonsten, wenn drin gezoomt wird, dann muss man erst oben rechts wieder irgend ein Zeitraum einstellen. keine Ahung warum das so ist.Gruß
@ple
Um das zu erklären hänge ich heute Nachmittag mal ein paar Screenshots an.
Kann dieses Verhalten auch noch gar nicht nachvollziehen.
Bin aber auch gar nicht so fit in Grafana als das ich den Fehler eingrenzen könnte. -
@ple
Um das zu erklären hänge ich heute Nachmittag mal ein paar Screenshots an.
Kann dieses Verhalten auch noch gar nicht nachvollziehen.
Bin aber auch gar nicht so fit in Grafana als das ich den Fehler eingrenzen könnte.@fridolin01 Screenshots wären echt coool. ich bekommen nixx zum laufen, Dongle angepasst, Flow importiert,
-
@badsnoopy667
so hat mir keine Ruhe gelassen.
Mit dem Update des dongle auf die 130 gibt es neue Register, nun braucht man nicht mehr rumrechnen für aktuelle Leistung Bezug, Einspeisung, Batterie (habe keine) und Hausverbauch.

Man muss dazu wissen, das man die Unit id 100 dafür eintragen muss beim Register, welches man auslesen möchte. Die globale bleibt weiterhin auf 1 stehen.
Leider gibt es noch keine Register für kWh, habe mal ein paar durchprobiert aber nichts gefunden. Denke aber das kommt noch von Huawei, wäre auch sonst echt blöd. Ich habe mal angefragt.
Ansonsten teile ich hier noch meinen Flow, der kann auch die Leistung in W pro String rausgeben. Habe die dann noch summiert für die Dachflächen SO und NW. Man kann gut sehen wie NW einspringt wenn SO abnimmt.

Ich habe viel mit NodeRed rumgespielt, keine Ahnung ob es noch besser geht.
Flow.txt@ple
Erstmal vielen Dank an ALLE, die sich die Mühe gemacht haben alles zu dokumentieren. Davon haben unzählige Leute profitiert :+1:Bei den Adressen:
- 37498
- 37500
- 37502
- 37504
kommt die Aktualisierung alle 3-7 Minuten, unabhängig davon, was ich einstelle.
Arbeite ich mit anderen Adressen wie z.B.: - 37001
- 37004
- 32080
dann aktualisiert Node Red tatsächlich auch so oft, wie in "inject" eingestellt.
Wie bringe ich die ersten 4 Adressen dazu öfter die Werte zu liefern ???
-
@ple
Erstmal vielen Dank an ALLE, die sich die Mühe gemacht haben alles zu dokumentieren. Davon haben unzählige Leute profitiert :+1:Bei den Adressen:
- 37498
- 37500
- 37502
- 37504
kommt die Aktualisierung alle 3-7 Minuten, unabhängig davon, was ich einstelle.
Arbeite ich mit anderen Adressen wie z.B.: - 37001
- 37004
- 32080
dann aktualisiert Node Red tatsächlich auch so oft, wie in "inject" eingestellt.
Wie bringe ich die ersten 4 Adressen dazu öfter die Werte zu liefern ???
Was sind denn das für Adressen? Ich finde die gar nicht in den Modbus Register Auflistungen von Huawei.
Edit: okay, das sind Register vom Dongle, nicht vom Wechselrichter selbst. Vielleicht sendet der Dongle einfach seltener? Hast du die UnitID 100 eingetragen für diese Register? Das hat hier im Thread jemand geschrieben.
-
Was sind denn das für Adressen? Ich finde die gar nicht in den Modbus Register Auflistungen von Huawei.
Edit: okay, das sind Register vom Dongle, nicht vom Wechselrichter selbst. Vielleicht sendet der Dongle einfach seltener? Hast du die UnitID 100 eingetragen für diese Register? Das hat hier im Thread jemand geschrieben.
@badsnoopy667
Die beziehen sich wahrscheinlich auf den Dongle.
Die 4 Werte sind identisch mit FusionSolar und wären für mich perfekt, wenn sie nur öfters aktualisiert würden.