NEWS
[HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)
-
@mickym
Danke für den Hinweis bzw. Warnung, aber npm checkt offensichtlich, wo die Packages sind. Outdated zeigt auch aus dem c:\iobroker Verzeichnis heraus, welche node_modules veraltet sind - siehe Bild oben. Und das Update hab ich von dort aus gemacht.
Der Baum ist lt. list ok - soweit ich das erkennen kann:

VG@joschipp Ok - ich will dich nicht zu irgendwas überreden. Aber im iobroker root - Verzeichnis sollten eigentlich sowieso nur iobroker module zu sehen sein. Wahrscheinlich hast du dann unter dem Baum ein Haufen extraneous Einträge.
Ich hab zwar mein iobroker auf dem Raspberry und nicht auf einem Windowssystem laufen - aber npm bzw. nodejs bleibt ja in der Regel nodejs. Wenn ich meinen Baum anschauen, dann schaut der halt relativ clean aus.
pi@mwhome:/opt/iobroker $ npm list iobroker.inst@3.0.0 /opt/iobroker ├── iobroker.admin@6.3.5 ├── iobroker.backitup@2.5.12 ├── iobroker.dwd@2.8.3 ├── iobroker.flot@1.11.0 ├── iobroker.info@1.9.19 ├── iobroker.javascript@7.0.3 (git+ssh://git@github.com/ioBroker/ioBroker.javascript.git#e142e623597a2f593faf9fe328797b453eb82ce2) ├── iobroker.js-controller@4.0.24 ├── iobroker.linux-control@1.1.3 ├── iobroker.mercedesme@0.1.1 (git+ssh://git@github.com/TA2k/ioBroker.mercedesme.git#982f60a77258877119465ee09fbd881677b93375) ├── iobroker.mqtt@4.0.7 ├── iobroker.node-red@4.0.0 (git+ssh://git@github.com/ioBroker/ioBroker.node-red.git#049d7bdddc747071fc7379551d4bd7a66d690c57) ├── iobroker.pi-hole@1.3.4 ├── iobroker.ping@1.5.3 ├── iobroker.simple-api@2.7.2 ├── iobroker.socketio@4.2.0 ├── iobroker.sourceanalytix@0.4.14 ├── iobroker.sql@2.2.0 ├── iobroker.tr-064@4.2.18 ├── iobroker.tuya@3.13.1 ├── iobroker.vis-hqwidgets@1.3.0 ├── iobroker.vis@1.4.15 ├── iobroker.web@4.3.0 └── iobroker.yahka@0.17.0 pi@mwhome:/opt/iobroker $Ich denke aber, dass diese Diskussion hier in dem Thread wahrscheinlich nichts zu suchen hat. Musst ggf. einen eigenen Thread aufmachen und halt ein Komplettbackup oder Image machen - bevor Du da was machst.
-
@joschipp Ok - ich will dich nicht zu irgendwas überreden. Aber im iobroker root - Verzeichnis sollten eigentlich sowieso nur iobroker module zu sehen sein. Wahrscheinlich hast du dann unter dem Baum ein Haufen extraneous Einträge.
Ich hab zwar mein iobroker auf dem Raspberry und nicht auf einem Windowssystem laufen - aber npm bzw. nodejs bleibt ja in der Regel nodejs. Wenn ich meinen Baum anschauen, dann schaut der halt relativ clean aus.
pi@mwhome:/opt/iobroker $ npm list iobroker.inst@3.0.0 /opt/iobroker ├── iobroker.admin@6.3.5 ├── iobroker.backitup@2.5.12 ├── iobroker.dwd@2.8.3 ├── iobroker.flot@1.11.0 ├── iobroker.info@1.9.19 ├── iobroker.javascript@7.0.3 (git+ssh://git@github.com/ioBroker/ioBroker.javascript.git#e142e623597a2f593faf9fe328797b453eb82ce2) ├── iobroker.js-controller@4.0.24 ├── iobroker.linux-control@1.1.3 ├── iobroker.mercedesme@0.1.1 (git+ssh://git@github.com/TA2k/ioBroker.mercedesme.git#982f60a77258877119465ee09fbd881677b93375) ├── iobroker.mqtt@4.0.7 ├── iobroker.node-red@4.0.0 (git+ssh://git@github.com/ioBroker/ioBroker.node-red.git#049d7bdddc747071fc7379551d4bd7a66d690c57) ├── iobroker.pi-hole@1.3.4 ├── iobroker.ping@1.5.3 ├── iobroker.simple-api@2.7.2 ├── iobroker.socketio@4.2.0 ├── iobroker.sourceanalytix@0.4.14 ├── iobroker.sql@2.2.0 ├── iobroker.tr-064@4.2.18 ├── iobroker.tuya@3.13.1 ├── iobroker.vis-hqwidgets@1.3.0 ├── iobroker.vis@1.4.15 ├── iobroker.web@4.3.0 └── iobroker.yahka@0.17.0 pi@mwhome:/opt/iobroker $Ich denke aber, dass diese Diskussion hier in dem Thread wahrscheinlich nichts zu suchen hat. Musst ggf. einen eigenen Thread aufmachen und halt ein Komplettbackup oder Image machen - bevor Du da was machst.
-
@joschipp na wie gesagt, dass sollte man eher in einem eigenen Thread besprechen. Und bei windows bin ich mir auch nicht 100% sicher. Wie gesagt wenn Du Hand anlegen willst, dann mach vorher ein komplett Backup und ein Image - sodass Du auf den Stand von jetzt wieder zurückkehren kannst.
Du hast haufenweise deduped Einträge - das sind mehrfach installierte Bibliotheken und die können Dir schon irgendwann mal unvorhersehbare Probleme machen.

Und Dein Riesenbaum ist alles andere als normal.
Hiermal die originale Beschreibung zu deduped: https://docs.npmjs.com/cli/v7/commands/npm-dedupe
Bereinigen kannst Du das mit npm prune - aber wie gesagt - mach es nur mit Netz und doppeltem Boden. Und mach eher einen eigenen Thread auf. Vielleicht kann auch @Thomas-Braun noch was dazu sagen - nicht zu Windows ;) - das hasst er - aber zum nodejs und den modulen.
-
@madmat17
Sehr schöne Idee. Danke dir.In meinem Fall nutze ich InfluxDB nicht und bin darauf angewiesen alle Daten einzeln in Datenpunkte zu schreiben.
Wie kann ich mit Node-Red die gesammelten Daten aufteilen und dann einzeln wegschreiben?
Jemand dabei, der Helfen kann?Danke euch.
-
@madmat17
Sehr schöne Idee. Danke dir.In meinem Fall nutze ich InfluxDB nicht und bin darauf angewiesen alle Daten einzeln in Datenpunkte zu schreiben.
Wie kann ich mit Node-Red die gesammelten Daten aufteilen und dann einzeln wegschreiben?
Jemand dabei, der Helfen kann?Danke euch.
@a1uca2d Wenn Du Objekte hast und möchtest unbedingt einzelne Datenpunkte - kannst Dir ja mal meinen Subflow anschauen: https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen
wenn ich dir sonst allgemein mit Node-Red was helfen kann, dann halt melden.
-
@zizu29 Du meinst beim Importieren des Flows in node-red?
Kann mir nur vorstellen, dass Du nicht den ganzen Flow markiert hast ausversehen und da jetzt z.B. das Ende fehlt. Guck dir das mal an, eine andere Idee habe ich gerade nicht.Was mir gerade noch auffällt: Deine Error-Message enthält das Wort "falsch". Das taucht aber im gesamten Flow nicht auf. Nur das englische Wort "false". Kann es sein, dass dein Browser Englisch automatisch übersetzt? Dann wäre der Flow nämlich nicht zu gebrauchen. Lade den Flow mal runter und öffne ihn in einem Textdokument, nicht im Browser.
@badsnoopy667 genau das war es, mein Browser hat Automatisch übersetzt. Jetzt muss ich nur noch raus finden wo ich die IP eintragen muss.
-
@zizu29 Du meinst beim Importieren des Flows in node-red?
Kann mir nur vorstellen, dass Du nicht den ganzen Flow markiert hast ausversehen und da jetzt z.B. das Ende fehlt. Guck dir das mal an, eine andere Idee habe ich gerade nicht.Was mir gerade noch auffällt: Deine Error-Message enthält das Wort "falsch". Das taucht aber im gesamten Flow nicht auf. Nur das englische Wort "false". Kann es sein, dass dein Browser Englisch automatisch übersetzt? Dann wäre der Flow nämlich nicht zu gebrauchen. Lade den Flow mal runter und öffne ihn in einem Textdokument, nicht im Browser.
@badsnoopy667 Der Arbeitsbereich enthält einige unbekannte Node-Typen:
ioBroker out
Sind Sie sicher, dass übernommen werden soll (deploy)?kannst du mit diesem Fehler was anfangen? Ich bekomme es einfach nicht zum laufen
-
@badsnoopy667 Der Arbeitsbereich enthält einige unbekannte Node-Typen:
ioBroker out
Sind Sie sicher, dass übernommen werden soll (deploy)?kannst du mit diesem Fehler was anfangen? Ich bekomme es einfach nicht zum laufen
-
@zizu29 Diese Nodes gibt es nicht in Standalone Installationen von Node-Red, sondern nur im Node-Red Adapter unter iobroker.
-
@zizu29 Du hast den Flow in einer Standalone Installation von Node-Red installiert. Damit hast Du keinen Zugriff auf den iobroker. Wenn Du bereits den iobroker hast, dann installliert man nicht NodeRed - wahrscheinlich über Videos oder keine Ahnung, sondern einfach den Node-Red Adapter. Der enthält eine vollständige Node-Red version.
-
@zizu29 Du hast den Flow in einer Standalone Installation von Node-Red installiert. Damit hast Du keinen Zugriff auf den iobroker. Wenn Du bereits den iobroker hast, dann installliert man nicht NodeRed - wahrscheinlich über Videos oder keine Ahnung, sondern einfach den Node-Red Adapter. Der enthält eine vollständige Node-Red version.
-
@mickym ok, verstanden. Dann werde ich mich da mal abmelden- Komisch nur das ich über den IOBroker ja auf Nodered gehe
-
@zizu29 Das ist eine völlig andere NodeRed Installation, als die die Du vorher installiert hast. Mit der solltest Du auch den Flow importieren können. Die andere Stand-Alone Installation kannst dann wieder löschen.
-
@mickym guten Morgen, versteh es nicht, hab den Node-Red adapter per ssh gelöscht und den Adaper neu Installiert. Er zeigt mir aber wieder den selber Fehler auf
Der Arbeitsbereich enthält einige unbekannte Node-Typen:ioBroker out
Sind Sie sicher, dass übernommen werden soll (deploy)?Ich versteh es nicht
-
@mickym guten Morgen, versteh es nicht, hab den Node-Red adapter per ssh gelöscht und den Adaper neu Installiert. Er zeigt mir aber wieder den selber Fehler auf
Der Arbeitsbereich enthält einige unbekannte Node-Typen:ioBroker out
Sind Sie sicher, dass übernommen werden soll (deploy)?Ich versteh es nicht
-
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.Hallo,
danke für deinen Node-Red Flow!
Habe damit, trotz wenig Erfahrung, alles zügig an laufen bekommen.jetzt habe ich diesen Thread einigermaßen gründlich durchsucht, aber mein Problem nicht lösen können:
Ich habe 5 Optimierer in meiner PV-Anlage, weiß aber nicht wie ich deren Daten auslesen kann.
Mit der Adresse 37200 kann ich die Anzahl der Optimierer auslesen,
mehr Adressen für die einzelnen Daten der 5 Optimierer finde ich aber nirgends.Gibt es da eigentlich Adressen für? Oder wie liest man die Daten aus?
Gruß, die Kakamaus.
-
Hallo,
danke für deinen Node-Red Flow!
Habe damit, trotz wenig Erfahrung, alles zügig an laufen bekommen.jetzt habe ich diesen Thread einigermaßen gründlich durchsucht, aber mein Problem nicht lösen können:
Ich habe 5 Optimierer in meiner PV-Anlage, weiß aber nicht wie ich deren Daten auslesen kann.
Mit der Adresse 37200 kann ich die Anzahl der Optimierer auslesen,
mehr Adressen für die einzelnen Daten der 5 Optimierer finde ich aber nirgends.Gibt es da eigentlich Adressen für? Oder wie liest man die Daten aus?
Gruß, die Kakamaus.
@kakamaus Wenn du DAS rausbekommen hast, sag Bescheid :)
Spaß bei Seite, das scheint theoretisch wohl zu gehen, praktisch scheitert das daran, dass die korrekte Abfrage dazu in den modbus-interface-definitions mMn nicht beschrieben wird. Es reicht nicht, ein Register abzufragen. Soweit ich das verstanden habe muss man da eine komplizierte Anfrage an den Wechselrichter senden. -
@a1uca2d Wenn Du Objekte hast und möchtest unbedingt einzelne Datenpunkte - kannst Dir ja mal meinen Subflow anschauen: https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen
wenn ich dir sonst allgemein mit Node-Red was helfen kann, dann halt melden.
@mickym
Hallo michym.ich habe dein Skript importiert und es funktioniert wirklich gut.
Hilft mir gefühlt aber nicht.
Wenn ich nun die Sammelabfrage gemacht habe und die Daten in Node-Red vorhanden sind, wie bekomme ich die dann in meine Objekte aufgeteilt. So wie ich das verstehe ist meine Herausforderung unabhängig von der sonstigen Umgebung zu sehen. Mir fehlt das Wissen welche Node-Red Funktion dafür verwendet werden kann.
Ich habe mal versucht mein Problem mit den Bildern aus den bekannten Skripten abzubilden:

