Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write)

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      Franzosenfranz last edited by

      Hallo zusammen,

      ich habe den Flow bei mir nun auch am Laufen und kann alle für mich erforderlichen Werte Lesen und Schreiben.
      Danke an alle und vor allem an badsnoopy667 für die super Arbeit hier.

      Ich hätte jedoch noch eine lästige Sache. Im LOG laufen nachfolgende drei Meldungen laufend auf:

      2023-11-20 11:39:44.793 info State value to set for "0_userdata.0.Huawei.Battery.ChargeFromGridFunction" has to be one of type "string", "number", "boolean" but received type "object"
      2023-11-20 11:39:41.335 info State value to set for "0_userdata.0.Huawei.Battery.Battery_TOU_mode" has to be stringified but received type "object"
      2023-11-20 11:39:39.491 info State value to set for "0_userdata.0.Huawei.Battery.Battery_Max_Discharge_Power_TEST" has to be stringified but received type "object"

      Ich hatte diese Meldungen noch bei mehr Objekten und habe das dann per Einstellungen in den Objekten die meisten Meldungen wegbekommen. Nur bei diesen 3 schaffe ich es nicht, das es Ruhe im Log gibt. Merkwürdig ist aber auch, das die Werte dieser 3 Objekten in eckicken Klammern (z.B. [2]) dargestellt werden. Keine Ahnung wo die herkommen. Kann jemand helfen?

      Gruß
      Franz

      B 1 Reply Last reply Reply Quote 0
      • M
        madmat17 @Doom.86 last edited by madmat17

        @doom-86
        Das Schreiben ins Register 47078 nutze ich nicht - das ist einfach 1:1 aus dem Flow des allerersten Posts von @badsnoopy667 übernommen. 😉
        Irgendwo im Verlauf steht auch, wie man mehrere Inverter abfrägt, wenn ich mich nicht irre. Wenn ich nicht ganz falsch liege, brauchst du für jeden Wechselrichter jeweils einen eigenen Modbus-node (da sich die Unit-IDs der Wechselrichter unterscheiden müssen) und auch eine Server-Konfiguration je Wechselrichter (da dort auch die Unit-ID hinterlegt ist).

        Warum dein node-red den Inverter gar nicht erreicht kann viele Ursachen haben. Als erstes würde ich einmal folgendes checken:

        • Modbus TCP ist auf dem Dongle aktiv (und fall im eingeschränkten Modus die korrekte Client-IP hinterlegt)?
        • Der Dongle wird im LAN erkannt
        • Server-Konfiguration für die Modbus-Abfrage in node-red ist korrekt? (IP, Port, Device-ID)
        • Device-ID in den Modbus-nodes des Flows ist korrekt?

        LG,
        Mat

        B D 2 Replies Last reply Reply Quote 0
        • B
          badsnoopy667 @Franzosenfranz last edited by

          @franzosenfranz said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):

          2023-11-20 11:39:44.793 info State value to set for "0_userdata.0.Huawei.Battery.ChargeFromGridFunction" has to be one of type "string", "number", "boolean" but received type "object"
          2023-11-20 11:39:41.335 info State value to set for "0_userdata.0.Huawei.Battery.Battery_TOU_mode" has to be stringified but received type "object"
          2023-11-20 11:39:39.491 info State value to set for "0_userdata.0.Huawei.Battery.Battery_Max_Discharge_Power_TEST" has to be stringified but received type "object"

          Stell "0_userdata.0.Huawei.Battery.Battery_Max_Discharge_Power_TEST" mal auf "type": "number", damit geht es bei mir.
          Die anderen beiden Objekte habe ich gar nicht. Kommen die überhaupt aus meinem Flow? Sonst ggf. mal löschen?

          1 Reply Last reply Reply Quote 0
          • B
            badsnoopy667 @madmat17 last edited by

            @doom-86 @madmat17 said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):

            Server-Konfiguration je Wechselrichter (da dort auch die Unit-ID hinterlegt ist).

            Ist nach meiner Erfahrung nicht nötig. Eine Server Konfiguration reicht (mit der IP-Adresse des Dongles und der ID des Wechselrichters an dem der Dongle hängt.)
            Dann aber wie Du gesagt hast jeweils eigene nodes mit den korrekten IDs pro WR für die einzelnen Register.
            Und nicht zu viel und schnell auf einmal abfragen, dann kommt nix!
            Erstmal mit 1-2 nodes testen bis es läuft, dann erweitern.

            1 Reply Last reply Reply Quote 1
            • D
              Doom.86 @madmat17 last edited by

              @madmat17 ich habe aktuell einen flow laufen, der auch schon mal hier stand. Allerdings kommt da auch ab und an, dass die node nicht bereit ist.

              Mit der IP des dongels braucht es in meinem Fall die unit ID 2 für den zweiten wechselrichter.

              Ich wollte eigentlich auf deinen flow umsteigen, aber verstehe nicht ganz, wie ich den flow für den zweiten wechselrichter hinzufügen kann. Auch nicht, wie ich diese in separate datenpunkte schreiben kann.

              B 1 Reply Last reply Reply Quote 0
              • B
                badsnoopy667 @Doom.86 last edited by

                @doom-86
                Du kopierst einfach die nodes die du beim 2. WR abfragen willst. Da trägst du die korrekte ID vom 2. WR ein.
                Und bezüglich des schreibens in Datenpunkte: Du musst neue Objekte anlegen (oder durch node-red anlegen lassen). Die nennst du dann halt z.B. "Active_Power_Interter_2". Da lässt du dann die Daten reinschreiben.
                Aber wie gesagt: Wenn Du jetzt schon ab und zu die Nachricht bekommst, dass die node nicht bereit ist, dann vermute ich, dass du zu viele Daten abfragst, oder zu schnell. Gerade bei mehreren WR scheint Modbus bei Huawei sehr schnell an seine Grenzen zu kommen. Ich würde empfehlen wirklich nur die nötigsten Daten abzufragen.

                D 1 Reply Last reply Reply Quote 0
                • kmxak
                  kmxak Most Active last edited by

                  ist das bekannt das in den logs immer has to be stringified but received type "number" kommt?

                  B 1 Reply Last reply Reply Quote 0
                  • B
                    badsnoopy667 @kmxak last edited by

                    @kmxak
                    Bei einigen Leuten passiert das wohl. Bei mir nicht. Um welches Objekt geht es?

                    1 Reply Last reply Reply Quote 0
                    • D
                      Doom.86 @badsnoopy667 last edited by

                      @badsnoopy667 Das mit den Node kopieren ist mir noch klar. aber mir ist in deinem Flow nicht klar, wo ich die Datenpunkte angebe? Ich habe die einzelnen Nodes schon angeschaut, aber nichts gefunden oder übersehen.

                      Bei dem Flow des Eingangstrades, ist es mir klar, da steht in der iobroker out der Datenpunkt. Aber bei deinem Flow verstehe ich das noch nicht so richtig.

                      Ich hatte meinen aktuellen Flow schon mit 8 Sekunden Abfrageintervall ohne Probleme laufen. dann habe ich noch mit anderen Registern rum gespielt und bin zu dem fehler mit node is not ready gekommen. Daraufhin habe ich alles wieder in der vorherigen zustand versetzt, aber die 8 Sekunden wollte er nicht mehr.

                      B 1 Reply Last reply Reply Quote 0
                      • B
                        badsnoopy667 @Doom.86 last edited by badsnoopy667

                        @doom-86

                        datenpunkte.png

                        Edit: Mein Flow ist der aus Thema 1. Und zwar der erste, nicht der untere mit den mehreren WR. Den habe ich nicht getestet.
                        Nimm den 1., der funktioniert.

                        D 1 Reply Last reply Reply Quote 0
                        • D
                          Doom.86 @badsnoopy667 last edited by

                          @badsnoopy667 sollte eigentlich an @madmat17. Mit seinem flow. Ich hatte mich da echt verschaut. 😁

                          M 1 Reply Last reply Reply Quote 0
                          • M
                            madmat17 @Doom.86 last edited by madmat17

                            @doom-86 said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):

                            @badsnoopy667 sollte eigentlich an @madmat17. Mit seinem flow. Ich hatte mich da echt verschaut.

                            OK - das ist bei mir etwas anders gelöst.
                            Screenshot 2023-11-22 172602.png

                            Bei mir werden ja mehrere Register gleichzeitig abgefragt und von den Parsern (die blauen nodes) wird dann je Register ein Objekt erstellt. Da ich 3 Abfragen habe, ich deren Resultate aber alle auf einmal in eine Datenbank schreiben will, werden die noch mit einem join-node in einer Message gesammelt. Sobald die 43 Objekte beisammen sind, übergibt der join-node diese an den Sub-Flow "JSON or Obj to IOBroker" (der baut die Message so um, dass sie direkt in ein ioBroker-Objekt geschrieben werden kann) und in diesem Node wird auch definiert, wo der nachgelagerte ioBroker Out-Node "IoB write value" hinschreiben soll.
                            Ich habe in meinem Flow das Top Huawei0 angegeben:
                            Screenshot 2023-11-22 174341.png

                            Und da das Stammverzeichnis für die ioBroker Out Nodes immer 0_userdata.0 ist, legt der Node daher die Objekte im Verzeichnis 0_userdata.0.Huawei0 an:
                            Screenshot 2023-11-22 174102.png

                            Wenn du die Namen der Datenpunkte ändern möchstes, musst du das direkt in den Parsern machen:
                            Screenshot 2023-11-22 174623.png

                            LG,
                            Mat

                            1 Reply Last reply Reply Quote 0
                            • kmxak
                              kmxak Most Active last edited by

                              @badsnoopy667 hier die logs:

                              node-red.0
                              2023-11-22 18:40:01.019	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-11-22 18:40:00.550	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-11-22 18:39:56.640	info	State value to set for "0_userdata.0.Huawei.Inverter.Input_Power" has to be stringified but received type "number"
                              

                              An sich sind es ja auch nur Zahlen die kommen

                              B 1 Reply Last reply Reply Quote 0
                              • B
                                badsnoopy667 @kmxak last edited by

                                @kmxak

                                active_power.png

                                Sind Deine Objekte korrekt konfiguriert?

                                kmxak M 2 Replies Last reply Reply Quote 0
                                • kmxak
                                  kmxak Most Active @badsnoopy667 last edited by

                                  @badsnoopy667
                                  das ist so wie es der flow erzeugt hat. Manuell kann ich es natürlich ändern.

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    madmat17 @badsnoopy667 last edited by

                                    @badsnoopy667 was hat's mit deinem Inverter, dass der eine so niedrige Efficiency ausspuckt?
                                    Oder muss ich mir sorgen über falsche Werte machen, weil bei mir immer 100% angezeigt werden (was ja eigentlich auch Quatsch ist - 100% Effizenz gibt es bei so einem Teil nicht). 🤔

                                    B 1 Reply Last reply Reply Quote 0
                                    • B
                                      badsnoopy667 @madmat17 last edited by

                                      @madmat17
                                      Ach, Efficiency kommt bei mir irgendwie kein brauchbarer Wert mehr. Habe das deaktiviert und den Datenpunkt aber nicht gelöscht. 😉

                                      1 Reply Last reply Reply Quote 0
                                      • M
                                        madmat17 @madmat17 last edited by madmat17

                                        @badsnoopy667 said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):

                                        Ach, Efficiency kommt bei mir irgendwie kein brauchbarer Wert mehr. Habe das deaktiviert und den Datenpunkt aber nicht gelöscht.

                                        Ich habe das bei mir bislang auch geflissentlich ignoriert. Vielleicht ist es an der Zeit, den Datenpunkt komplett rauszuschmeißen...
                                        .
                                        .

                                        @madmat17 said in [HowTo] Huawei SUN2000 WR Modbus mit node-red (read + write):

                                        Es gibt noch ein Problem mit dem Timing. Die Abfragen über meine alte node-red Instanz (lief auf einem x86 FreeBSD-Derivat) war in dieser Konfiguration problemlos; im aktuellen Setup (node-red im ioBroker auf einem RasPi) wirft extrem viele Time-Outs und Warning (Inject Node not ready). Wenn ich auf die Lösung gekommen bin, gibt es ein Update zu meinem Flow...

                                        Aktuell habe ich noch kein Muster in den Timeouts erkannt, wenn sie auftreten.
                                        ABER manchmal bekomme ich innerhalb von 1 Minute duzende und manchmal ganz sporadisch. Was aber besonders interessant ist: Wenn weniger Netzwerk-Clients aktiv sind (zwischen 23 Uhr und 5 Uhr morgens) gibt es keine Timeouts.
                                        Zudem haben die Timeouts abgenommen, seitdem der RasPi (auf dem ioBroker / node-red läuft) aus dem WLAN ins Ethernet gewander ist.

                                        FRAGE:
                                        Hat jemand ein ähnliches Setup (ioBroker auf einem RasPi) und nutzt meinen Flow und sieht Timeout-Meldungen vom Modbus?
                                        Eventuell liegt es gar nicht am Flow, sondern an meiner Netzwerkkonfiguration. Sollte der Flow bei anderen dieses Verhalten nicht zeigen, wäre das zumindest schon ein Indikator.

                                        LG,
                                        Mat

                                        F D 2 Replies Last reply Reply Quote 0
                                        • F
                                          Franzosenfranz @madmat17 last edited by

                                          @madmat17

                                          Ich habe das selbe Setup (RasPi 4 Modell B, 8GB), habe aber keine Meldungen bezüglich Timeouts.
                                          Gefühlt habe ich jedoch auch recht viele Clients im Netzwerk. 😊

                                          M 1 Reply Last reply Reply Quote 0
                                          • M
                                            madmat17 @Franzosenfranz last edited by

                                            @franzosenfranz
                                            Danke dir! Und nutzt den Flow, den ich gepostet habe?

                                            F 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            110
                                            573
                                            176543
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo