NEWS
[HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)
-
@ple
Welche APP benutzt Du denn? SUN2000 oder FusionSolar? Vielleicht macht das ja einen Unterschied. Ich hab's mit SUN2000 gemacht, da gibt es (zumindest bei mir) den Punkt "Modbus TCP".@badsnoopy667
@badsnoopy667
ich habs mit beiden getestet.
Könnte mir höchstens noch vorstellen, dass es ein Iphone ist und kein Android.
Naja, ich warte noch mal weiter auf Antwort von Huawei, sonst müsste ich mein ein zurücksetzen testen. Irgendwie muss man doch das Modbus TCP über den Dongle per Wlan oder Lan am laufen bekommen. -
@badsnoopy667
@badsnoopy667
ich habs mit beiden getestet.
Könnte mir höchstens noch vorstellen, dass es ein Iphone ist und kein Android.
Naja, ich warte noch mal weiter auf Antwort von Huawei, sonst müsste ich mein ein zurücksetzen testen. Irgendwie muss man doch das Modbus TCP über den Dongle per Wlan oder Lan am laufen bekommen.@ple Ich hab auch ein iPhone, daran scheint es nicht zu liegen.
-
Habe gerade folgende Antwort von Huawei Support bekommen! Bezüglich Firmware und Modbus TCP
Bitte stellen Sie sicher, dass Sie die neuesten Firmware-Versionen für Wechselrichter und für SDongle haben( dongle spc127 und WR spc141)
-
Habe gerade folgende Antwort von Huawei Support bekommen! Bezüglich Firmware und Modbus TCP
Bitte stellen Sie sicher, dass Sie die neuesten Firmware-Versionen für Wechselrichter und für SDongle haben( dongle spc127 und WR spc141)
@captainchaos666
Sdongle gehe ich gerade wieder zurück auf die 127.
Für meine WR KTL30-M3 ist diese hier die aktuelleste.
V100R001C20SPC112Mal abwarten was von Huawei noch so kommt.
-
@captainchaos666
Sdongle gehe ich gerade wieder zurück auf die 127.
Für meine WR KTL30-M3 ist diese hier die aktuelleste.
V100R001C20SPC112Mal abwarten was von Huawei noch so kommt.
@ple
Sdongel: V100R001C00SPC123
SUN2000-8KTL-M0 : V100R001C00SPC140Ich lese per WLAN aus. Per Lan ging es auch.
Ich hatte gerade versucht die Daten mit dem EVCC auszulesen. Das bekomme ich nicht zum laufen. Bis jetzt hatte ich nur mit Node-Red erfolgt. -
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, ich benötige Hilfe. Irgendwie bekomme ich es nicht hin. Ich habe am SUN2000 Die Modbus TCP Verbindung auf Aktivieren (uneingeschränkt) gestellt. Ich kann die IP des WR auch anpingen.
Allerdings bekomme ich das mit Node-red nicht hin. Ich habe einen Flow mit Modus-Getter erstellt.

Hier habe ich folgende Einstellungen gemacht:
UnitID: 1
Adresse: 32016

Und hier noch die Servereinstellungen
IP und Port vom WR.

Allerdings kommt immer die Meldung
Error: Client Not Ready To Read At State initWas könnte ich noch falsch gemacht haben?
-
@badsnoopy667 Hallo, ich benötige Hilfe. Irgendwie bekomme ich es nicht hin. Ich habe am SUN2000 Die Modbus TCP Verbindung auf Aktivieren (uneingeschränkt) gestellt. Ich kann die IP des WR auch anpingen.
Allerdings bekomme ich das mit Node-red nicht hin. Ich habe einen Flow mit Modus-Getter erstellt.

Hier habe ich folgende Einstellungen gemacht:
UnitID: 1
Adresse: 32016

Und hier noch die Servereinstellungen
IP und Port vom WR.

Allerdings kommt immer die Meldung
Error: Client Not Ready To Read At State initWas könnte ich noch falsch gemacht haben?
@murokey Hi!
Hast Du es mal mit meinem Flow von oben probiert? Auf den ersten Blick sehe ich bei Dir zwar keinen Fehler, aber ich weiß nicht, ob man diese "buffer parser" nodes nicht doch braucht. In denen wird ja eingestellt in welcher Form die Daten kommen, z.B. Int16 oder Int32.
Nimm doch mal meinen Flow und davon dann nur einen Teil und trag da Deine UnitID und IP überall ein. Geht es dann auch nicht? -
@murokey Hi!
Hast Du es mal mit meinem Flow von oben probiert? Auf den ersten Blick sehe ich bei Dir zwar keinen Fehler, aber ich weiß nicht, ob man diese "buffer parser" nodes nicht doch braucht. In denen wird ja eingestellt in welcher Form die Daten kommen, z.B. Int16 oder Int32.
Nimm doch mal meinen Flow und davon dann nur einen Teil und trag da Deine UnitID und IP überall ein. Geht es dann auch nicht?@badsnoopy667 Leider funktioniert es dann immer noch nicht. Kann es sein das ich noch irgendwie einen Port freischalten muss?

Allerdings sollte hier alles passen.

Kann es an der UnitID liegen? Die muss ja im Modbus-Getter und im Modbus-Client gepflegt werden. Entspricht die UnitID der im RS4851_1 Menu unter Komm.adresse definierten Nummer?
Und eine weitere Frage? Gibt es eine Aussage zur APP? Funktioniert es mit der FusionSolar, mit der SUN2000 oder mit beiden?
Ich konnte bisher nur Einstellungen mit der FusionSolar machen, da ich mit der anderen keine Verbindung hin bekommen habe. -
@badsnoopy667 Leider funktioniert es dann immer noch nicht. Kann es sein das ich noch irgendwie einen Port freischalten muss?

Allerdings sollte hier alles passen.

Kann es an der UnitID liegen? Die muss ja im Modbus-Getter und im Modbus-Client gepflegt werden. Entspricht die UnitID der im RS4851_1 Menu unter Komm.adresse definierten Nummer?
Und eine weitere Frage? Gibt es eine Aussage zur APP? Funktioniert es mit der FusionSolar, mit der SUN2000 oder mit beiden?
Ich konnte bisher nur Einstellungen mit der FusionSolar machen, da ich mit der anderen keine Verbindung hin bekommen habe.@murokey
Du hast nicht zufällig parallel noch den Modbus Adapter oder ein anderes Programm das per Modbus auf den WR zugreift laufen, oder? Mein Halbwissen sagt mir, das der Client immer nur eine Verbindung gleichzeitig aufbauen kann.Zur App, ich hab es mit SUN2000 eingestellt (bzw. mein Elektriker). FusionSolar habe ich nicht probiert. Nachdem es bei einigen ja doch Probleme gibt habe ich mir überlegt, ich gehe da auch erstmal nicht mehr dran. Hier funktioniert es ja. 🙈
-
@badsnoopy667 Leider funktioniert es dann immer noch nicht. Kann es sein das ich noch irgendwie einen Port freischalten muss?

Allerdings sollte hier alles passen.

Kann es an der UnitID liegen? Die muss ja im Modbus-Getter und im Modbus-Client gepflegt werden. Entspricht die UnitID der im RS4851_1 Menu unter Komm.adresse definierten Nummer?
Und eine weitere Frage? Gibt es eine Aussage zur APP? Funktioniert es mit der FusionSolar, mit der SUN2000 oder mit beiden?
Ich konnte bisher nur Einstellungen mit der FusionSolar machen, da ich mit der anderen keine Verbindung hin bekommen habe.@murokey
Ja schau ob noch ob etwas anderes auf den Modbus zugreift.
Ausserdem muss auch die Registernummer stimmen. Die ist bei Huawei nicht immer gleich.
Hier mal meine Einstellungen. Ich habe den SUN2000-8KTL-M0. Der SUN2000-8KTL-M1 hat glaube ich andere Registernummern. Ausserdem hatte ich ich zum testen den Stecker, der zum Smartmeter geht, abgezogen. Keine Ahnung ob das geholfen hat. Aber mit einmal ging es ab da. Nun läuft es auch mit Stecker.
Ich habe keine Ports Freigegeben. NodeRed läuft im Iobroker auf einem Nuc. Nuc hängt im LAN an einer Fritzbox.
Wechselrichter hängt im WLAN.

-
Hallo,
bekomme so halbherzig Daten mit Node-Red raus. Habe mit meinem Spieltrieb parallel dazu den Modbus-Adapter gestartet. Und siehe da, es kommen jetzt auch hier plausible Daten rein. Leider bricht die Verbindung hier nach einem Zyklus wieder abMit Node-Red habe ich das Problem, dass ich vom 2ten WR nur ein paar Daten bekomme. Die aktualsierung der Daten hört mitten drin auf, zwischen den Register 32018 und 32019. Dann kann ich noch ein für mich nichtssagendes Fehlerprotokoll anbieten


-
@murokey
Ja schau ob noch ob etwas anderes auf den Modbus zugreift.
Ausserdem muss auch die Registernummer stimmen. Die ist bei Huawei nicht immer gleich.
Hier mal meine Einstellungen. Ich habe den SUN2000-8KTL-M0. Der SUN2000-8KTL-M1 hat glaube ich andere Registernummern. Ausserdem hatte ich ich zum testen den Stecker, der zum Smartmeter geht, abgezogen. Keine Ahnung ob das geholfen hat. Aber mit einmal ging es ab da. Nun läuft es auch mit Stecker.
Ich habe keine Ports Freigegeben. NodeRed läuft im Iobroker auf einem Nuc. Nuc hängt im LAN an einer Fritzbox.
Wechselrichter hängt im WLAN.

@biervoegelhasso Wie kann ich herausfinden welche Unit-Id ich für den Wechselrichter (SUN2000-10KTL-M1) einstellen muss? In deinen beiden Bildern ist ja einmal 2 und einmal 3 konfiguriert.
-
@biervoegelhasso Wie kann ich herausfinden welche Unit-Id ich für den Wechselrichter (SUN2000-10KTL-M1) einstellen muss? In deinen beiden Bildern ist ja einmal 2 und einmal 3 konfiguriert.
@murokey Bei der Unit ID war ich mir auch nie 100% sicher. Mir ist auch nicht aufgefallen das ich in dem Script unterschiedliche IDs vergeben habe. Ich habe das Script nun korrigiert. Meine ID ist die 2. Verändere ich auch nur bei einem Register die ID auf 3 bricht die ganze Verbindung ab. Nur mal als Tipp.
Mit zwei Programmen auf den Bus zuzugreifen ist mist. Das kann nicht funktionieren. -
Hallo,
bekomme so halbherzig Daten mit Node-Red raus. Habe mit meinem Spieltrieb parallel dazu den Modbus-Adapter gestartet. Und siehe da, es kommen jetzt auch hier plausible Daten rein. Leider bricht die Verbindung hier nach einem Zyklus wieder abMit Node-Red habe ich das Problem, dass ich vom 2ten WR nur ein paar Daten bekomme. Die aktualsierung der Daten hört mitten drin auf, zwischen den Register 32018 und 32019. Dann kann ich noch ein für mich nichtssagendes Fehlerprotokoll anbieten


@captainchaos666
Kann es vielleicht sein, dass Dein Abfrageintervall für die Menge an Registern zu kurz ist? Der ließt die ja alle schön nacheinander ein. Vielleicht wird er einfach nicht fertig. Die wenigsten dieser Daten braucht man ja "live". Ich frage nur eine handvoll Daten im 5 Sekunden Takt ab, den Rest 1x pro Minute.
Und ja, die UnitID muss überall stimmen.
In der Übersicht der Modbus Register von Huawei (Version 3) steht:
"Based on the TCP communications host, unit 0 is used by default to access the
directly connected slave node, and other addresses are used to access the
downstream devices of the slave node. The default address of the slave node is 0.
The address is adjustable."
Kann also auch 0 sein, fängt nicht mit 1 an! -
@captainchaos666
Kann es vielleicht sein, dass Dein Abfrageintervall für die Menge an Registern zu kurz ist? Der ließt die ja alle schön nacheinander ein. Vielleicht wird er einfach nicht fertig. Die wenigsten dieser Daten braucht man ja "live". Ich frage nur eine handvoll Daten im 5 Sekunden Takt ab, den Rest 1x pro Minute.
Und ja, die UnitID muss überall stimmen.
In der Übersicht der Modbus Register von Huawei (Version 3) steht:
"Based on the TCP communications host, unit 0 is used by default to access the
directly connected slave node, and other addresses are used to access the
downstream devices of the slave node. The default address of the slave node is 0.
The address is adjustable."
Kann also auch 0 sein, fängt nicht mit 1 an!@badsnoopy667 Ich möchte mich vorab schonmal für die vielen hilfreichen Antworten bedanken. Mittlerweile konnte ich erstmal eine Verbindung herstellen.
Nach Kontakt mit Huawei war das Problem eine veraltete Firmware des Dongles. Nachdem ich den Dongle auf Version SPC127 geupdated habe funktioniert es soweit ich das bis jetzt beurteilen kann.Ich möchte hier meine Erkenntnisse zusammenfassen:
-
Laut Huawei muss der Dongle mindesten Firmwarestand SPC123 haben
-
Für ein Update muss sich mit der FusionSolarApp mit dem Dongle (nicht dem WR) verbunden werden. Das hat bei mir erst funktioniert als ich den Dongle per USB-Ladegerät angesteckt habe, da ich ihn am WR angesteckt nicht im WLAN finden konnte.
Anleitung im Spoiler:
-
Anschließend wie schon oben immer Beschrieben mit der FusionSolarApp auf den WR verbinden und unter Einstellungen -> Kommunikationkonfiguration -> Dongle-Parametereinstellungen Modbus TCP aktivieren und ggf. in den RS485_1 Einstellungen die Komm.adresse anpassen. Diese entspricht später der UnitID in Node-Red.
-
-
@badsnoopy667 Ich möchte mich vorab schonmal für die vielen hilfreichen Antworten bedanken. Mittlerweile konnte ich erstmal eine Verbindung herstellen.
Nach Kontakt mit Huawei war das Problem eine veraltete Firmware des Dongles. Nachdem ich den Dongle auf Version SPC127 geupdated habe funktioniert es soweit ich das bis jetzt beurteilen kann.Ich möchte hier meine Erkenntnisse zusammenfassen:
-
Laut Huawei muss der Dongle mindesten Firmwarestand SPC123 haben
-
Für ein Update muss sich mit der FusionSolarApp mit dem Dongle (nicht dem WR) verbunden werden. Das hat bei mir erst funktioniert als ich den Dongle per USB-Ladegerät angesteckt habe, da ich ihn am WR angesteckt nicht im WLAN finden konnte.
Anleitung im Spoiler:
-
Anschließend wie schon oben immer Beschrieben mit der FusionSolarApp auf den WR verbinden und unter Einstellungen -> Kommunikationkonfiguration -> Dongle-Parametereinstellungen Modbus TCP aktivieren und ggf. in den RS485_1 Einstellungen die Komm.adresse anpassen. Diese entspricht später der UnitID in Node-Red.
@murokey
Ich dachte mit der Firmenware des Dongles weißt du. Das du dich mit dem Dongle nicht verbinden konntest lag bestimmt an einer zu alten Firmenware. Das Problem hatte ich auch. (The SDongle that needs to be upgraded should have firmware version SDongleV100R001C00SPC115 or later, otherwise the upgrade cannot be performed locally.)
Der Huawei Support hat dann per Fernwartung ein Update gemacht. -
-
@murokey
Ich dachte mit der Firmenware des Dongles weißt du. Das du dich mit dem Dongle nicht verbinden konntest lag bestimmt an einer zu alten Firmenware. Das Problem hatte ich auch. (The SDongle that needs to be upgraded should have firmware version SDongleV100R001C00SPC115 or later, otherwise the upgrade cannot be performed locally.)
Der Huawei Support hat dann per Fernwartung ein Update gemacht.Arbeitet ihr allgemein mit Node-red als separater Installation oder mir dem Node-Red Adapter des ioBroker?
Ich habe Node-red separat installiert und finde irgendwie keine Möglichkeit wie ich die iobroker in und iobroker out nodes herbekomme.
-
Arbeitet ihr allgemein mit Node-red als separater Installation oder mir dem Node-Red Adapter des ioBroker?
Ich habe Node-red separat installiert und finde irgendwie keine Möglichkeit wie ich die iobroker in und iobroker out nodes herbekomme.
@murokey ich habe den Adapter installiert. Wusste nicht mal, dass das auch anders geht.
Bisher nutze ich es auch ausschließlich für den Huawei WR. Und dafür funktioniert es einwandfrei. -
So, ich habe neue Infos, der ktl 30-m3 kann anscheinend kein Modbus TCP mit dem Dongle, es soll angeblich ein Firmware update geben irgendwann mal. Na toll.
habt ihr alle hier kleinere Modelle vom ktl m3?gruß


