NEWS
-
-
Hallo zusammen,
ich habe zum wiederholten male das Problem, dass zwar alles connected ist, aber keine Werte kommen. Lief fast ein Jahr ohne Komplikationen und nun immer mal wieder dieses Problem. Geändert an der Hardware wurde nichts.


verstehe leider nicht, warum es auf einmal nicht mehr gehen soll....
Tips und Ideen?
Vielen Dank
@joogibaer ich bin in meiner Zeit vorraus, wie kann ich einen Beitrag mit Daten von heute am 09.03. posten. Aber das Problem besteht auch schon seit dem 09.03

Jemand eine Idee? Siehe 531 weiter oben
-
@joogibaer ich bin in meiner Zeit vorraus, wie kann ich einen Beitrag mit Daten von heute am 09.03. posten. Aber das Problem besteht auch schon seit dem 09.03

Jemand eine Idee? Siehe 531 weiter oben
@joogibaer Hallo, bei mir gab es auch probleme. Ich habe deshalb jetzt die Firmware:
Dongle:
V100R001C00SPC133Wechselrichter:
V100R001C00SPC159dann hat alles wieder Funktioniert.
LG
-
@joogibaer Hallo, bei mir gab es auch probleme. Ich habe deshalb jetzt die Firmware:
Dongle:
V100R001C00SPC133Wechselrichter:
V100R001C00SPC159dann hat alles wieder Funktioniert.
LG
-
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
Danke für die Anleitung, ich hab das alles so umgesetzt, jetzt wollte ich fragen ob es noch einen passenden Grafana Flow mit Fluxquery dazu gibt? Hab bisher nur einen Flow auf Basis von InfluxQL gefunden.
Wenn jamend einen hat den er mir zur verfügung stellen würde wäre ich sehr dankbar. -
Hallo zusammen,
weiß jemand wieso ich folgenden Fehler bekomme seit heute?
Node-RED: 23 Apr 18:02:22 - [warn] [modbus-getter:37113] Getter -> Inject while node is not ready for input.
habe nichts geändert. -
Hallo Zusammen,
ich wollte nochmal fragn ob jemand inzwischen einen Grafana Flow mit FluxQuery für dies Node Red erstellt hat. Wäre klasse, bin selbst nicht in der Lage und hab leider InfluxDB 2 installiert und mit FluxQuery laufen.Kurzes Update nach sechs Monaten. Ich habe die EnPal Box aus unserer. HUAWEI Konfirmation demontiert und bekomme alle Daten meines WR SUN2000 jetzt mittels MODBUS via dem Adapter https://www.iobroker.net/#en/adapters/adapterref/iobroker.sun2000/README.md … funktioniert super
-
weiß jemand welche Datenpunkte ich für "Netzbezug aktuell" benötige?
errechnen via Blockly (falls nicht direkt ausgelesen werden kann) kein Problem, aber da die App zeitverzögert und nicht wie in Nodered alle paar Sekunden aktualisiert ist es schwierig welche Datenpunkte ich benötige.
Ist es evtl. Load_power ?

Danke vorab.
-
weiß jemand welche Datenpunkte ich für "Netzbezug aktuell" benötige?
errechnen via Blockly (falls nicht direkt ausgelesen werden kann) kein Problem, aber da die App zeitverzögert und nicht wie in Nodered alle paar Sekunden aktualisiert ist es schwierig welche Datenpunkte ich benötige.
Ist es evtl. Load_power ?

Danke vorab.
@marcelinho es müsste Grid Power sein (>0 : Netzbezug, <0 : Netzeinspeisung). Du findest die notwendigen Informationen in den Interface definitions https://github.com/bolliy/ioBroker.sun2000/blob/main/docs/definitions.md
Stephan
-
Hallo, nachdem ich geschätzt 2000 Kommentare gelesen habe, konnte ich keine Lösung für mein Problem finden. Ich habe mir einen zweiten Wechselrichter zugelegt und kaskadiert. Als Master dient ein 4 KTL und als Slave ein 5 KTL. In den Einstellung hat der 4 KTL als Master bei bei RS485 die Komm-Adresse 1 und der 5 KTL hat die 2. In der FusionSolar App wird dies auch alles richtig angezeigt und zusammengerechnet. Im Node Red konnte ich vorher die Daten aus dem 4 KTL auch entsprechend auslesen. Jetzt habe ich natürlich den 5 KTL in Node Red hinzugfügt und die Units sind auch entsprechend mit 1 und 2 gesetzt. Server ist der 4 KTL mit der Unit 1. Wenn ich alles richtig verstanden habe, sollten jetzt alle Werte, auch die vom zweiten WR über den Master abgefragt werden. Jedoch wurden mir bei beiden Units unter beiden 32080 immer nur die Werte vom Master angezeigt. Ich habe auch mit den Abfrageintervallen sehr großzügig ausprobiert, jedoch ohne erfolg. Wenn ich jedoch bei dem 5 KTL einen zweiten Server mit der Unit 2 hinzufüge, und dann dort die Unit 2 vom WR auslese dann klappt es. Ist das so richtig oder sollte das nur mit einem Server klappen? Jetzt bekomme ich nämlich jede Minute ca. 10 Warnmeldungen, wo ich leider völlig überfordert bin.
Falls mir jemand helfen kann, würde ich mich sehr freuen. Danke


-
Hallo, nachdem ich geschätzt 2000 Kommentare gelesen habe, konnte ich keine Lösung für mein Problem finden. Ich habe mir einen zweiten Wechselrichter zugelegt und kaskadiert. Als Master dient ein 4 KTL und als Slave ein 5 KTL. In den Einstellung hat der 4 KTL als Master bei bei RS485 die Komm-Adresse 1 und der 5 KTL hat die 2. In der FusionSolar App wird dies auch alles richtig angezeigt und zusammengerechnet. Im Node Red konnte ich vorher die Daten aus dem 4 KTL auch entsprechend auslesen. Jetzt habe ich natürlich den 5 KTL in Node Red hinzugfügt und die Units sind auch entsprechend mit 1 und 2 gesetzt. Server ist der 4 KTL mit der Unit 1. Wenn ich alles richtig verstanden habe, sollten jetzt alle Werte, auch die vom zweiten WR über den Master abgefragt werden. Jedoch wurden mir bei beiden Units unter beiden 32080 immer nur die Werte vom Master angezeigt. Ich habe auch mit den Abfrageintervallen sehr großzügig ausprobiert, jedoch ohne erfolg. Wenn ich jedoch bei dem 5 KTL einen zweiten Server mit der Unit 2 hinzufüge, und dann dort die Unit 2 vom WR auslese dann klappt es. Ist das so richtig oder sollte das nur mit einem Server klappen? Jetzt bekomme ich nämlich jede Minute ca. 10 Warnmeldungen, wo ich leider völlig überfordert bin.
Falls mir jemand helfen kann, würde ich mich sehr freuen. Danke


@hilfsbedürftiger
Logs bitte als Text in Code-Tags </> einbetten und nicht als Screenshot. Diese Mäusekino Screenshots kann man auch nicht vernünftig lesen, wenn man nicht gerade vor einem fetten 4K Monitor sitzt, sondern nur mobil unterwegs ist. -
node-red.0 2024-08-28 23:46:45.275 warn Node-RED: 28 Aug 23:46:45 - [warn] [modbus-client:2er WR] Client -> fsm connected after state init Get More About It By Logging TCP@192.168.178.80:502 default Unit-Id: 2 node-red.0 2024-08-28 23:46:43.271 warn Node-RED: 28 Aug 23:46:43 - [warn] [modbus-client:2er WR] Client -> fsm init in 2000 ms TCP@192.168.178.80:502 default Unit-Id: 2 node-red.0 2024-08-28 23:46:43.269 warn Node-RED: 28 Aug 23:46:43 - [warn] [modbus-client:2er WR] Client -> fsm init state after reconnecting TCP@192.168.178.80:502 default Unit-Id: 2 node-red.0 2024-08-28 23:46:41.266 warn Node-RED: 28 Aug 23:46:41 - [warn] [modbus-client:2er WR] Client -> fsm broken state after failed Get More About It By Logging TCP@192.168.178.80:502 default Unit-Id: 228 Aug 23:46:41 - [warn] [modbus-client:2er WR] Client -> fsm reconnect state after broken Get More About It By Logging TCP@192.168.178.80:502 default Unit-Id: 2 node-red.0 2024-08-28 23:46:41.265 warn Node-RED: 28 Aug 23:46:41 - [warn] [modbus-client:2er WR] Client -> fsm failed state after sending Get More About It By Logging TCP@192.168.178.80:502 default Unit-Id: 2 node-red.0 2024-08-28 23:46:15.678 warn Node-RED: 28 Aug 23:46:15 - [warn] [modbus-client:2er WR] Client -> fsm connected after state init Get More About It By Logging TCP@192.168.178.80:502 default Unit-Id: 2 node-red.0 2024-08-28 23:46:13.668 warn Node-RED: 28 Aug 23:46:13 - [warn] [modbus-client:2er WR] Client -> fsm init state after reconnecting TCP@192.168.178.80:502 default Unit-Id: 228 Aug 23:46:13 - [warn] [modbus-client:2er WR] Client -> fsm init in 2000 ms TCP@192.168.178.80:502 default Unit-Id: 2 node-red.0 2024-08-28 23:46:11.667 warn Node-RED: 28 Aug 23:46:11 - [warn] [modbus-client:2er WR] Client -> fsm failed state after sending Get More About It By Logging TCP@192.168.178.80:502 default Unit-Id: 228 Aug 23:46:11 - [warn] [modbus-client:2er WR] Client -> fsm broken state after failed Get More About It By Logging TCP@192.168.178.80:502 default Unit-Id: 228 Aug 23:46:11 - [warn] [modbus-client:2er WR] Client -> fsm reconnect state after broken Get More About It By Logging TCP@192.168.178.80:502 default Unit-Id: 2 node-red.0 2024-08-28 23:46:00.729 warn Node-RED: 28 Aug 23:46:00 - [warn] [modbus-client:2er WR] Client -> fsm connected after state init Get More About It By Logging TCP@192.168.178.80:502 default Unit-Id: 2 -
Hallo, nachdem ich geschätzt 2000 Kommentare gelesen habe, konnte ich keine Lösung für mein Problem finden. Ich habe mir einen zweiten Wechselrichter zugelegt und kaskadiert. Als Master dient ein 4 KTL und als Slave ein 5 KTL. In den Einstellung hat der 4 KTL als Master bei bei RS485 die Komm-Adresse 1 und der 5 KTL hat die 2. In der FusionSolar App wird dies auch alles richtig angezeigt und zusammengerechnet. Im Node Red konnte ich vorher die Daten aus dem 4 KTL auch entsprechend auslesen. Jetzt habe ich natürlich den 5 KTL in Node Red hinzugfügt und die Units sind auch entsprechend mit 1 und 2 gesetzt. Server ist der 4 KTL mit der Unit 1. Wenn ich alles richtig verstanden habe, sollten jetzt alle Werte, auch die vom zweiten WR über den Master abgefragt werden. Jedoch wurden mir bei beiden Units unter beiden 32080 immer nur die Werte vom Master angezeigt. Ich habe auch mit den Abfrageintervallen sehr großzügig ausprobiert, jedoch ohne erfolg. Wenn ich jedoch bei dem 5 KTL einen zweiten Server mit der Unit 2 hinzufüge, und dann dort die Unit 2 vom WR auslese dann klappt es. Ist das so richtig oder sollte das nur mit einem Server klappen? Jetzt bekomme ich nämlich jede Minute ca. 10 Warnmeldungen, wo ich leider völlig überfordert bin.
Falls mir jemand helfen kann, würde ich mich sehr freuen. Danke


Hast Du mal den "Flow mit Multi-Abfrage" aus meinem 1. Post probiert? Das mit dem 2. WR kann ich leider immer nicht selber testen, habe nur einen. Aber da müsste ein Beispiel drin sein.
Und wenn ich mich richtig erinnere, bedeutet die Warnmeldung erstmal nur, dass zu viele Daten abgefragt wurden und das System am Limit ist. Die Daten kommen aber alle, oder?
-
Hast Du mal den "Flow mit Multi-Abfrage" aus meinem 1. Post probiert? Das mit dem 2. WR kann ich leider immer nicht selber testen, habe nur einen. Aber da müsste ein Beispiel drin sein.
Und wenn ich mich richtig erinnere, bedeutet die Warnmeldung erstmal nur, dass zu viele Daten abgefragt wurden und das System am Limit ist. Die Daten kommen aber alle, oder?
Hallo, den Multiflow habe ich probiert, da habe ich das gleiche Problem, das beim zweiten WR die gleichen Werte wie beim ersten WR angezeigt werden. Die Warnmeldung von zu vielen Abfragen kann doch nicht sein, ich frage ja nur drei Werte ab pro WR ab. Diese werden auch richtig angezeigt.
-
Hallo @badsnoopy667,
bin gerade dabei den Punkt 4.1 Zeitgesteuertes Laden .. zu implementieren, alle Punkte nach Anleitung durchgeführt, btw. Danke dafür den Flow der läuft nun seit 2 Jahren problemlos bei mir.
Das aktivieren von TOU in der APP funktioniert und die LUNA beginnt das Laden aus dem Netz.
Das schreiben auf das Register 47086 funktioniert bei mir leider nicht nicht. Wert wird nicht auf 5 geändert.

Würde das gerne aus einem Script triggern da ich aWattar-Kunde bin und zum günstigsten Zeitpunkt die Batterlie laden möchten.
-
Hallo @badsnoopy667,
bin gerade dabei den Punkt 4.1 Zeitgesteuertes Laden .. zu implementieren, alle Punkte nach Anleitung durchgeführt, btw. Danke dafür den Flow der läuft nun seit 2 Jahren problemlos bei mir.
Das aktivieren von TOU in der APP funktioniert und die LUNA beginnt das Laden aus dem Netz.
Das schreiben auf das Register 47086 funktioniert bei mir leider nicht nicht. Wert wird nicht auf 5 geändert.

Würde das gerne aus einem Script triggern da ich aWattar-Kunde bin und zum günstigsten Zeitpunkt die Batterlie laden möchten.
@johgre said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
steuertes Laden .. zu implementieren, alle Punkte nach Anleitung durchgeführt, btw. Danke dafür den Flow der läuft nun seit 2 Jahren problemlos bei mir.
Was steht denn in Deiner function-Node? Bei mir steht da:
var sa = 50; // Startadresse des Registers var address = 1; // Adressen des Registers var value = msg.payload; // Wert, den du schreiben möchtest (16-Bit) var buf = Buffer.alloc(2); buf.writeUInt16BE(value); // Schreibe den 16-Bit Wert in den Buffer msg.payload = { 'fc': 6, // Funktion 6 für das Schreiben eines einzelnen Registers 'unitid': 2, // Modbus-Geräte-ID 'value': buf.readUInt16BE(0) // Lese den Wert aus dem Buffer }; return msg;Die Orange-Node ist vom Typ "FC6: Preset Single Register"
Was mir sonst noch einfällt wenn alles korrekt ist: Das Schreiben funktioniert bei mir nur, wenn ich während des Schreibens für ein paar Sekunden das Lesen beende. Anscheinend reicht die Bandbreite für beides nicht aus. Weiß gerade nicht, ob diese "setze flow.pause" funktion schon implementiert ist bei dir.
PS: Korrekte Unit-ID eingetragen?
-
@johgre said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
steuertes Laden .. zu implementieren, alle Punkte nach Anleitung durchgeführt, btw. Danke dafür den Flow der läuft nun seit 2 Jahren problemlos bei mir.
Was steht denn in Deiner function-Node? Bei mir steht da:
var sa = 50; // Startadresse des Registers var address = 1; // Adressen des Registers var value = msg.payload; // Wert, den du schreiben möchtest (16-Bit) var buf = Buffer.alloc(2); buf.writeUInt16BE(value); // Schreibe den 16-Bit Wert in den Buffer msg.payload = { 'fc': 6, // Funktion 6 für das Schreiben eines einzelnen Registers 'unitid': 2, // Modbus-Geräte-ID 'value': buf.readUInt16BE(0) // Lese den Wert aus dem Buffer }; return msg;Die Orange-Node ist vom Typ "FC6: Preset Single Register"
Was mir sonst noch einfällt wenn alles korrekt ist: Das Schreiben funktioniert bei mir nur, wenn ich während des Schreibens für ein paar Sekunden das Lesen beende. Anscheinend reicht die Bandbreite für beides nicht aus. Weiß gerade nicht, ob diese "setze flow.pause" funktion schon implementiert ist bei dir.
PS: Korrekte Unit-ID eingetragen?
@badsnoopy667
Hi, danke für die schnelle Antwort.
function-Node Code sieht exact gleich aus, wobei mir jetzt einfällt ich habe ja Unit-ID 1. dh. ich muss die da jetzt im function-Node auch ändern?

