NEWS
[HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)
-
@badsnoopy667 Joa, hätte ja klappen können. Wirklich besten Dank. Daten kommen nun bereits bei den neuangelegten Datenpunkten an :+1:
@kep42010
Sehr gut!
Nur mal direkt als Hinweis: Die Daten müssen gepuffert werden. Wenn Du die Daten abrufst kommen sie nicht genau (!) gleichzeitig an. Das führt dann bei der Berechnung von Erzeugung, Batterieladung, Eigenverbrauch etc. zu ziemlichen Abweichungen, vor allem bei wolkigem Wetter.
Daher schreibe ich alle Werte die kommen erstmal für ca. 20 Sekunden in Listen und bilde dann den Mittelwert der Liste. Und zwar genau im gleichen Moment (über Timer). Somit habe ich dann alle 20 Sekunden Mittelwerte die zusammenpassen. Damit kann man dann gut weiterrechnen und auch nette Diagramme basteln:
Grau: Hausverbauch
Blau: Akku- Laden
Hellblau: Akku- Entladen
Gelb: Wallbox
Grün: Einspeisung -
@kep42010
Sehr gut!
Nur mal direkt als Hinweis: Die Daten müssen gepuffert werden. Wenn Du die Daten abrufst kommen sie nicht genau (!) gleichzeitig an. Das führt dann bei der Berechnung von Erzeugung, Batterieladung, Eigenverbrauch etc. zu ziemlichen Abweichungen, vor allem bei wolkigem Wetter.
Daher schreibe ich alle Werte die kommen erstmal für ca. 20 Sekunden in Listen und bilde dann den Mittelwert der Liste. Und zwar genau im gleichen Moment (über Timer). Somit habe ich dann alle 20 Sekunden Mittelwerte die zusammenpassen. Damit kann man dann gut weiterrechnen und auch nette Diagramme basteln:
Grau: Hausverbauch
Blau: Akku- Laden
Hellblau: Akku- Entladen
Gelb: Wallbox
Grün: Einspeisung@badsnoopy667 Mega, genau das ist auch was ich vorhab. Wallbox gezielt ansteuern und einige Hausverbraucher smart zuschalten :clap:
-
@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 Ist es möglich dein Grafana Dashboard als als import in mein Grafana zu bekommen ? Ich danke dir um deine Unterstützung. Lg Daniel
-
@badsnoopy667
Wie kommst du an die kWh Verbräuche?
Suche da noch die passenden Adressen für, damit ich das in Influx schieben kann und später zu visualisieren.
In Fusion Solar stehen die zumindest drin. -
@badsnoopy667
Wie kommst du an die kWh Verbräuche?
Suche da noch die passenden Adressen für, damit ich das in Influx schieben kann und später zu visualisieren.
In Fusion Solar stehen die zumindest drin.@ple
Die Werte für z.B. Eigenverbrauch, Erzeugung usw. (in kWh) bekomme ich nicht über Modbus. Dafür gibt es keine Register (außer für den Tagesetrtrag, der schließt aber Batterieentladung mit ein, also unnütz).
Die Werte berechne ich mir selber. Dazu zähle ich sie alle 10 Sekunden hoch:
Kann das irgendwie schlecht in Worte fassen, ich hoffe man erkennt es auf dem Bild. Die Werte in kWh werden alle 10 Sekunden um den Wert in W ergänzt, geteilt durch 360000 Millisekunden. Dann stimmt die Einheit.
"Sind die Werte nicht total ungenau, wenn man nur alle 10 Sekunden aktualisiert?" Nicht wirklich. 0.2-0.3 kWh am Tag hat man bestimmt Abweichung, aber das ist mir völlig egal.
-
@ple
Die Werte für z.B. Eigenverbrauch, Erzeugung usw. (in kWh) bekomme ich nicht über Modbus. Dafür gibt es keine Register (außer für den Tagesetrtrag, der schließt aber Batterieentladung mit ein, also unnütz).
Die Werte berechne ich mir selber. Dazu zähle ich sie alle 10 Sekunden hoch:
Kann das irgendwie schlecht in Worte fassen, ich hoffe man erkennt es auf dem Bild. Die Werte in kWh werden alle 10 Sekunden um den Wert in W ergänzt, geteilt durch 360000 Millisekunden. Dann stimmt die Einheit.
"Sind die Werte nicht total ungenau, wenn man nur alle 10 Sekunden aktualisiert?" Nicht wirklich. 0.2-0.3 kWh am Tag hat man bestimmt Abweichung, aber das ist mir völlig egal.
@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 -
Kann mir jemand erklären wie wo genau ich diese Daten eintragen muss?
Bin leider ganz neu bei Node Red und blicke gerade nicht durch.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 die ClientID (typischerweise 1) eintragen. (Port ist 502)

So sieht das bei mir aus.
Verstehe aber nicht wo ich die IP usw. eintragen muss -
Kann mir jemand erklären wie wo genau ich diese Daten eintragen muss?
Bin leider ganz neu bei Node Red und blicke gerade nicht durch.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 die ClientID (typischerweise 1) eintragen. (Port ist 502)

So sieht das bei mir aus.
Verstehe aber nicht wo ich die IP usw. eintragen muss@fridolin01
Bei mir gibt es unter dem Menüpunkt "modbus-client" noch einen weiteren Punkt "WLAN-FE", siehe Screenshot. WEnn man da doppelklickt kann man die benötigten Daten eingeben.Hast Du die zusätzlichen node-red Pakete installiert?
EDIT: Bin mir sicher, Du hast die zusätzlichen Module nicht installiert. In deinem Screenshot sieht man links ja: "unknown: calculator". Also bitte die drei fehlenden Module installieren:Man muss bei 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-modbusSieht für mich ein bisschen so aus, als würde da was fehlen.
PS: Die Client-ID muss in allen Modbus Nodes korrekt eingetragen werden, das also dann auch nochmal prüfen.

-
Hallo zusammen,
Ich habe leider das selbe Problem.
Ich habe den flow Import und der Typ Modus-client ist unbekannt.
iobroker Version 5.3.8
Node-red Version 3.3.1


Könnt ihr mir weiterhelfen?
Viele Grüße
@mickym Das klingt doch nach einer Frage für Dich, oder?
-
Hallo zusammen,
Ich habe leider das selbe Problem.
Ich habe den flow Import und der Typ Modus-client ist unbekannt.
iobroker Version 5.3.8
Node-red Version 3.3.1


Könnt ihr mir weiterhelfen?
Viele Grüße
@martyl Hast Du die Node-Red Instanz neu gestartet?
Wieder ein Grund warum ich das Eintragen zusätzlicher Nodes in der Adapterkonfig nicht mag, sondern lieber den Paletten-Manager nutze. Was ich Dir empfehlen würde, wenn der Neustart der Node-Red Instanz nichts gebracht hat.
Am fehlenden Backup mit zusätzlichen Nodes hoffe ich stark, dass da bei den Entwicklern sich was tut und man auf die Konfiguration im Adapter verzichten kann. Wenn man derzeit die Projektfunktion in NodeRed nutzt, wird nämlich nichts gesichert: https://forum.iobroker.net/topic/57022/neuaufbau-kein-recovery-nodered-mit-backitup-möglich/3
-
@martyl Hast Du die Node-Red Instanz neu gestartet?
Wieder ein Grund warum ich das Eintragen zusätzlicher Nodes in der Adapterkonfig nicht mag, sondern lieber den Paletten-Manager nutze. Was ich Dir empfehlen würde, wenn der Neustart der Node-Red Instanz nichts gebracht hat.
Am fehlenden Backup mit zusätzlichen Nodes hoffe ich stark, dass da bei den Entwicklern sich was tut und man auf die Konfiguration im Adapter verzichten kann. Wenn man derzeit die Projektfunktion in NodeRed nutzt, wird nämlich nichts gesichert: https://forum.iobroker.net/topic/57022/neuaufbau-kein-recovery-nodered-mit-backitup-möglich/3
-
Hey, ja ich hatte es neugestartet.
Direkt in Node-red fehlt mir leider der Palettenmanager.
Habt ihr noch einen Tipp?
-
@mickym Das klingt doch nach einer Frage für Dich, oder?
Moin zusammen
So meine Werte bekomme ich nun in den IOBroker vom WR
probiere leider Erfolglos seit 2 Tagen und unzähligen Anläufen meine Autarkie zu berechnen und in Grafana anzuzeigen.
Eigentlich sollten hierzu alle Werte bereit stehen.
Kannst du mir erklären wie das Blockly dafür aussehen müsste?
Meine Rechnung sieht wie folgt aus
1-Eigenverbrauch(Täglich)/Gesamtverbrauch(Täglich)Daten sind vorhanden, da Hausverbauch per Shelly 3EM aufgezeichnet werden.
Rest sollte aus dem WR kommen oder nicht?
Dazu rechne ich aktuelle WR Leistung - aktueller Verbrauch = aktuelle Einspeisung
Oder gibt der WR die aktuelle Einspeiung direkt aus?
Habe noch kein Huawei Smart Meter verbaut, und deswegen keine Daten zum Vergleich -
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.

