NEWS
[HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)
-
Momentan bekommst Du das als Ergebnis raus, also ein Array mit einem Element.
Ein Array kommt deshalb raus, weil Du es so in Deiner Ausgabe spezifiziert hast.
Also dem Element 0. Wenn Du aus dem Array nur den String als payload in die iobroker Out Node schreiben willst, dann extrahierst Du dieses Element mit einer Change NOde.
So schreibst Du nur das 1. Element (Index 0) in Deine iobroker Out Node. Nun ist es KEIN Objekt mehr sondern nur der String.
Wenn Du mehrere Ausgaben hast, weil Du mehr parsed und Du willst das Array oder Objekt in einen Datenbunkt schreiben dann machst Du eine JSON Node davor - dann wird Dein Array stringifiziert - also ein JSON String erzeugt.
So kannst Du Objekte in einen iobroker Datenpunkt schreiben, wenn Du ein komplexeres Objekt hast.
===========================================================================================
DIE EINFACHSTE LÖSUNG ist, wenn Du Dir einfach mehrfache Ergebnisse ausgeben lässt. Da Du nur EINES hast, brauchst Du dann gar KEINE Node mehr dazwischen. So kannst Du das Ergebnis direkt in die iobroker-Out Node schreiben.
Wenn Du Dir also mehrfache Ergebnisse ausgeben lässt, dann macht die Buffer Node Dir einzelne Nachrichten und in diesem Fall direkt den String.
Ich hoffe ich konnte nun KLARHEIT in die Funktionsweise der Parser Node und deren Ausgabe bringen.
Nur zur Info, wenn Du einzelne Nachrichten haben willst - Du aber mehrfache hast kannst Du auch das topic setzen und in das Nachrichtenobjekt mit aufnehmen lassen.
Nun könntest Du auch mehrere Ausgaben haben und diese mit EINER iobroker-Out Node in mehrere Datenpunkte schreiben.
Statt das topic nun Model und Bezeichnung zu nennen, könntest Du nun als Topic den Pfad zum Datenpunkt angeben. Wenn Du also in der iobroker-Out Node das topic weglässt, kann es auch aus dem Nachrichtenobjekt genommen werden:
Ich würde auch ReadOnly nehmen und value - dann werden die Datenpunkte auch erstellt, wenn Du es in der Adapterkonfiguration zulässt. So kannst Du quasi direkt aus der Buffer Parser Node mehrere Datenpunkte gleichzeitig beschreiben:Wie Du siehst funktioniert das einwandfrei:
So ich glaube nun solltest Du genügend Anregung haben. Zur besseren Übersichtlichkeit könnte man aber auch die Namen Model und Bezeichnung lassen und den Pfad zum Datenpunkt mit einer Change Node ergänzen. Aber hier gibt es einfach mehrere Wege die zum Ziel führen und sind dann auch Geschmackssache.
=========================================================================
Ich will Dich aber nicht verwirren - für Dein Problem - einfach die Parser Node wie anfangs beschrieben einfach umstellen:
Das topic brauchst Du dann nicht - da Du es ja in Deiner iobroker-Out Node eingegeben hast.
-
@jwedenig said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
Habe seit gestern Probleme, meine Daten auszulesen!
Kennt wer diese Fehlermeldung?:Gibt es hierfür eine Lösung, ? habe gesehen, das bei mir auch einige Werte nicht mehr geschrieben werden seit längere Zeit....
Ab Register 32072 taucht das Problem auf? Wurde eventuell beim Update die Register geändert?
-
@drlange said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
PV-Gesamtertrag: 32106 Accumulated energy yield
Der Wert passt bei mir nicht.
Ich habe jeweils die Differenz von einem Tag zum nächsten genommen und bekomme unplausible Werte.
Jetzt habe ich mal für ein paar Tage die Daten aus der Datenbank (oben) und aus der App (unten) verglichen. Ich verstehe nicht, was 32106 bei mir bedeutet. Hat jemand eine Idee?
#edit: ein Problem ist identifiziert. Nicht alle Wechselrichter schicken ihre Daten
-
Um Klarheit zu schaffen habe ich nun auch noch die Tagesleistung hinzugefügt und die berechnete Leistung aus Arbeit * Zeit. Leider führt das nur zu noch mehr Verwirrung.
Hat schon jemand das Rätsel gelöst und es tatsächlich geschafft die Daten mit der App in Deckung zu bringen?
#edit: ein Problem ist identifiziert. Nicht alle Wechselrichter schicken ihre Daten
-
Seit ein paar Tagen habe ich ein PV-Anlage des Anbieters EnPAL mit dem SUN2000. Ich bin seither auf der Suche nach einer Lösung um die wesentlichen Daten (Erzeugung, Einspeisung etc) auslesen zu können. Bin in dem Bereich aber noch sehr neu und habe bisher um Node-red einen großen Bogen gemacht und bin auf diesen Thread gekommen.
Funktioniert diese Lösung grundsätzlich auch mit EnPAL Installationen ? Die installieren ja auch ein Kommunikationsmodul und werten die WR Daten in ihrem RZ aus.
Kann ich den WLAN-FE-Dongle nach meinen Bedürfnissen verändern oder ist der schon von EnPal im Gebrauch ? Aktuell sendet der WLAN-FE auf 192.168.200.2 (nicht mein WLAN)
Kann jemand zu der Thematik was sagen ? -
also ein Problem habe ich identifiziert: Der Inverter 2 liefert keine Daten. (dann ist ganz logisch, dass der Gesamtertrag nicht passt)
Ich konnte allerdings noch nicht klären, warum ich von Inverter 2 keine Daten bekomme. Die Einstellungen im Modbus-Getter müssten identisch sein und nur die Unit-ID eins mehr - oder?
Unit-ID 0 oder 3 liefert auch nix - habe ich probiert.Kann das noch ein Einstellungsproblem in Node-Red sein oder liegt der Fehler im Inverter?
-
Ich möchte mich rechtzeitig herzlich bei Euch allen, besonders beim Threadersteller, Spexx und mickym bedanken.
Dank diesem Thread war es ein Leichtes, die Daten in den ioBrocker zu bekommen.
Bisher habe ich mir die Daten der PV-Anlage zwecks Überschuss-Steuerung mehr oder weniger zuverlässig über das Projekt „Solaranzeige“ gezogen und mit Homematic weiterverarbeitet.Mit dieser Lösung hier stehen aber viel einfacher viel mehr Daten zuverlässig zur Verfügung. TOP!!
Viele Grüße
Maik -
Moin zusammen,
erst einmal mega vielen Dank für diesen tollen Thread und die Infos, die ihr bereit gesetllt werden.
Habe soweit vieles für meinen Sun2000-KTL30-M3 übernhemen können und es lief auch erst ganz gut.
Nun wollte ich die Daten innerhalb vom ioBroker verarbeiten und da viel mir auf, dass sie überhaupt nicht mehr aktuell sind.
Nach vielen hin und her habe ich gemerkt, dass das Node-Red skript ca 7 mal Daten liefert und dann nicht mehr. Habt ihr eine Ahnung woran das liegen könnte?Gruß
-
Ich habe das "Problem" glaube ich gefunden - für alle die, die ein ähnliches Verhalten haben.
Mein Wechelrichter erlaubt wohl nur eine Modbus Verbindung. Da ich diese schon mit "Solaranzeige" abgreife, war das mit Node-Red wohl "zu viel". Heißt, die beiden haben sich immer um die Verbindung "gestritten". Bei Solaranzeige zeigte sich das mit 0-Werten.Also wenn man mehrere Verbindungen benötigt, muss man sich mal Modbus-Proxy ansehen.
-
@hant0r Ja, Solaranzeige und iobroker gleichzeitig funktioniert nicht.
Ich habe seit einiger Zeit das hier im Thread optimierte Programm laufen.
Dabei werden alles Daten aus dem Wechselrichter minütlich ausgelesen.
Mit 30 Sekunden Versatz werden dann alle Daten vom Akku/Smartmeter gelesen.
Das Ganze funktioniert bisher völlig fehlerfrei und zuverlässig. Bei Solaranzeige hatte ich immer die Probleme, das nicht alle Daten zuverlässig gelesen wurden. Zudem konnten nur 10 Werte an Homematic übergeben werden.Diese Lösung hier ist deutlich besser !
-
@opamaik danke dir.
Habe es nun mit MQTT gelöst. Solaranzeige sendet alle paar Sekunden alle Werte an den ioBroker.
Brauche da die Daten, um den Hausverbrauch zu errechnen und wieder in die DB zu protokollieren. So kann ich in Grafana alles anzeigen. -
@christiansr said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):
also ein Problem habe ich identifiziert: Der Inverter 2 liefert keine Daten. (dann ist ganz logisch, dass der Gesamtertrag nicht passt)
Ich konnte allerdings noch nicht klären, warum ich von Inverter 2 keine Daten bekomme. Die Einstellungen im Modbus-Getter müssten identisch sein und nur die Unit-ID eins mehr - oder?
Unit-ID 0 oder 3 liefert auch nix - habe ich probiert.Kann das noch ein Einstellungsproblem in Node-Red sein oder liegt der Fehler im Inverter?
Bei kaskadierten Wechselrichtern bekommt der Master-WR und der SmartMeter offenbar die UnitID 16.
-
Erst einmal vielen Dank für das Teilen des Flows und den vielen Hilfestellungen.
Wird es problematisch den Abfragezyklus zu verkürzen wenn man nur 3 Datensätze abruft? (L1-L3) da ich hiermit einen Victron Multiplus 2 steuern möchte und ja, es wäre kein Problem eine Minute mehr Strom aus dem Speicher ins Netz zu speisen oder eben ein bisschen zu wenig ins Hausnetz aber ich würde natürlich versuchen es so weit wie möglich optimieren zu wollen
-
@torbennw
Was meinst Du genau? Die "wichtigen" Daten (Erzeugung, Einspeisung, etc.) werden doch schon alle 5 Sekunden abgerufen. Oder meinst Du was anderes? -
@badsnoopy667 ich habe aus dem ersten Thread noch das Script, das ist ja deutlich umfangreicher mit 2 WR + SmartMeter und Batterie. Das ganze bräuchte ich gar nicht, mir reicht die FusionSolar App zum gucken, beim abrufen der Daten geht es bei mir rein um die Überschussspeicherung.
Dein Script sieht deutlich kleiner aus -
@torbennw
Versuch mal den Flow aus Post 1 Update 2:Update 2: Ich habe den Flow noch angepasst und z.B. um die Batterie-Daten erweitert. Außerdem frage ich die unwichtigen Sachen wie Seriennummer etc. nur 1x pro Minute ab, dafür aber die wichtigen Dinge wie Erzeugung und Verbrauch alle 3 Sekunden. Hier der neue Flow:
node-red-SUN2000.txt
-
Brauche kurz eure Hilfe
Mein Nodered spamt mir den Log voll mit folgenden Meldungen.node-red.0 2023-09-01 21:21:03.115 info State value to set for "0_userdata.0.Huawei.Dongle.Load_power" has to be type "string" but received type "number" node-red.0 2023-09-01 21:21:03.063 info State value to set for "0_userdata.0.Huawei.Dongle.Total_input_power" has to be type "string" but received type "number" node-red.0 2023-09-01 21:21:00.569 info State value to set for "0_userdata.0.Huawei.Meter.Active_Power" has to be stringified but received type "number" node-red.0 2023-09-01 21:20:55.675 info State value to set for "0_userdata.0.Huawei.Inverter.Peak_Active_Power_of_current_Day" has to be stringified but received type "number" node-red.0 2023-09-01 21:20:53.798 info State value to set for "0_userdata.0.Huawei.Inverter.Power_Grid_Current" has to be stringified but received type "number" node-red.0 2023-09-01 21:20:53.181 info State value to set for "0_userdata.0.Huawei.Inverter.Power_Grid_Voltage" has to be stringified but received type "number" node-red.0 2023-09-01 21:20:52.511 info State value to set for "0_userdata.0.Huawei.Dongle.Total_active_power" has to be type "string" but received type "number" node-red.0 2023-09-01 21:20:52.493 info State value to set for "0_userdata.0.Huawei.Dongle.Grid_power" has to be type "string" but received type "number" node-red.0 2023-09-01 21:20:52.439 info State value to set for "0_userdata.0.Huawei.Dongle.Load_power" has to be type "string" but received type "number" node-red.0 2023-09-01 21:20:52.396 info State value to set for "0_userdata.0.Huawei.Dongle.Total_input_power" has to be type "string" but received type "number" node-red.0 2023-09-01 21:20:46.342 info State value to set for "0_userdata.0.Huawei.Inverter.Input_Power" has to be stringified but received type "number" node-red.0 2023-09-01 21:20:42.775 info State value to set for "0_userdata.0.Huawei.Dongle.Total_active_power" has to be type "string" but received type "number" node-red.0 2023-09-01 21:20:42.714 info State value to set for "0_userdata.0.Huawei.Dongle.Grid_power" has to be type "string" but received type "number" node-red.0 2023-09-01 21:20:42.614 info State value to set for "0_userdata.0.Huawei.Dongle.Load_power" has to be type "string" but received type "number" node-red.0 2023-09-01 21:20:42.574 info State value to set for "0_userdata.0.Huawei.Dongle.Total_input_power" has to be type "string" but received type "number" node-red.0 2023-09-01 21:20:35.957 info State value to set for "0_userdata.0.Huawei.Inverter.Peak_Active_Power_of_current_Day" has to be stringified but received type "number" node-red.0 2023-09-01 21:20:34.209 info State value to set for "0_userdata.0.Huawei.Inverter.Power_Grid_Current" has to be stringified but received type "number" node-red.0 2023-09-01 21:20:33.203 info State value to set for "0_userdata.0.Huawei.Inverter.Power_Grid_Voltage" has to be stringified but received type "number"
Was genau muss ich ändern damit die Werte passend empfangen werden?
Danke -
@fridolin01 Du hast die ganzen Datenpunkte als Strings deklariert, schreibst aber Zahlen da rein. Also den Typ ändern.
-
Hallo,
ich bin noch neu bei iobroker und neuer als neu bei node red. Ich habe eines der Skripte nun bei Node Red importiert, die IP-Adresse des WR angepasst und auch Übernahme (deploy) geklickt.
Es passiert allerdings nichts. Unter 0_userdata.0 wird nichts angelegt. Im Protokoll sieht es folgendemaßen aus:"Verschlüsselte Credentials nicht gefunden" klingt so als müsste ich noch Logindaten angeben?
-
Nein hat damit nichts zu tun. Du musst das Erstellen von Fremdobjekten im Adapter zulassen