Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Huawei Sun2000 & ioBroker via JS script funktioniert

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Huawei Sun2000 & ioBroker via JS script funktioniert

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      ple @KornSW last edited by

      @kornsw
      uhi, das muss ich mal am Wochenende testen 🙂 Vielen Dank dafür schon mal im vorraus.
      In Kombi wäre das schon richtig gut.
      Gruß

      1 Reply Last reply Reply Quote 0
      • JohGre
        JohGre last edited by

        @KornSW Schaue ich mir gerne an, hab eben den API Zugang angefordert.
        Danke schon mal für deine Mühe

        JohGre 1 Reply Last reply Reply Quote 0
        • JohGre
          JohGre @JohGre last edited by

          @KornSW Huawei hat mir zurückgeschrieben, dass den Open-API Account nur ein Installateur beantragen kann. Wie hat das bei dir funktioniert?

          1 Reply Last reply Reply Quote 0
          • M
            majawe last edited by majawe

            EDIT: Fehler gefunden...geht...

            Funktioniert das script noch? Bekomme folgenden fehler:
            Verwende einen Huawei Sun2000-8ktl-M1

            Als FW habe ich die versionen:
            Inverter: V100R001C00SPC148
            Dongle: V100R001C00SPC130
            MBUS: V100R001C00SPC330

            Screenshot 2022-12-11 120754.png

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

              Es hat leider nur 1 mal funktioniert (als die Ordner angelegt wurden), er liesst zwar die Daten aktuallisiert Sie aber nicht unter Objekte, jemand eine Idee?

              Screenshot 2022-12-11 133427.png

              S 1 Reply Last reply Reply Quote 0
              • S
                Skoltrinker @majawe last edited by

                @majawe
                Ich hatte das gleiche Problem. Hat anfangs problemlos funktioniert und dann mit einem Versionsupgrade (ich glaube vom js-adapter) ging es plötzlich nicht mehr. Ich habe dann den folgenden Code Teil auskommentiert und dann hat es wieder funktioniert. Warum und wieso erschließt sich mir aber nicht ganz.

                function forcesetState(objectname, value, options) {
                    **//Problem mit existsState -> aus irgendeinem Grund funktioniert es nicht mehr. 
                    //if(!existsState(objectname)) {
                    //    createState(objectname, value, options);        
                    //}
                    //else {**
                        setState(objectname, value);
                    **//}**
                }  
                

                Ich habe auch den Verbindungsaufbau in eine function ausgelagert:

                function connectModBus() {
                    console.log("Init connection to: " + ModBusHost +":" + ModBusPort);
                    // set requests parameters
                    client.setTimeout (10000);
                    // try to connect
                    client.connectTCP (ModBusHost, { port: ModBusPort })
                        .then(function()
                        {
                            console.log("Connected, wait for reading...");
                        })
                        .catch(function(e)
                        {
                            console.log(e);
                        });
                }
                

                Und dann eine provisorisch eine Prüfung hinzugefügt ob das Lesen der Daten erfolgreich war und ob die MODBUS Verbindung noch offen ist. Da ich immer wieder das Problem hatte, wenn die Verbindung verloren gegangen ist, dass dann keine Daten mehr gelesen werden konnten (da kein Wiederaufbau der Verbindung stattgefunden hat).

                setInterval(function() {
                    if (!getDataSuccessful){
                        if (!client.isOpen){
                            connectModBus();
                        }
                    } ...
                

                @majawe said in Huawei Sun2000 & ioBroker via JS script funktioniert:

                Es hat leider nur 1 mal funktioniert (als die Ordner angelegt wurden), er liesst zwar die Daten aktuallisiert Sie aber nicht unter Objekte, jemand eine Idee?

                Screenshot 2022-12-11 133427.png

                und n

                1 Reply Last reply Reply Quote 0
                • Z
                  zoid1988 @Kachel last edited by zoid1988

                  @kachel

                  Danke für die Mühe, aber ich bekomme immer die Fehlermeldungen Cannot find module 'modbus-serial' und ModbusRTU is not a constructor

                  Mit npm install modbus-serial hab ich vorher das Modus NPM Modul installiert.

                  Könnt ihr mir hier kurz auf die Sprünge helfen bitte ?

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

                    @zoid1988 hast du es im Adapter hinzugefügt?
                    Screenshot 2022-12-29 135310.png

                    Z 1 Reply Last reply Reply Quote 0
                    • Z
                      zoid1988 @majawe last edited by

                      @majawe

                      Vielen Dank, wusste garnicht das man das machen kann ... Wieder etwas gelernt ...

                      Das Script startet jetzt, aber ich bekomme leider keine Daten ausgelesen.

                      Habe die Werte bei mir jetzt so angepasst (ich habe leider - noch - keinen Akku):

                      client.connectTCP("10.168.1.111", { port: 502 });
                      const ModBusIDs = [1];
                      const PowerMeterID = 0;
                      const BatteryUnits = [[0, 0]];

                      Folgende Infos find ich im Log:

                      30.12.2022, 11:33:51.829 [info ]: javascript.0 (1120689) script.js.PV: Triggering read of inverter 1 at address 35300 with length 40
                      30.12.2022, 11:33:51.830 [warn ]: javascript.0 (1120689) script.js.PV: Error received reading address 35300 from id: 1 with error: undefined
                      30.12.2022, 11:33:53.829 [info ]: javascript.0 (1120689) script.js.PV: Processing new data...
                      30.12.2022, 11:33:53.832 [info ]: javascript.0 (1120689) script.js.PV: Processing done!
                      30.12.2022, 11:33:53.833 [info ]: javascript.0 (1120689) script.js.PV: Triggering read of inverter 1 at address 30000 with length 81
                      30.12.2022, 11:33:53.833 [warn ]: javascript.0 (1120689) script.js.PV: Error received reading address 30000 from id: 1 with error: undefined
                      30.12.2022, 11:33:55.830 [info ]: javascript.0 (1120689) script.js.PV: Triggering read of inverter 1 at address 37100 with length 114
                      30.12.2022, 11:33:55.830 [warn ]: javascript.0 (1120689) script.js.PV: Error received reading address 37100 from id: 1 with error: undefined
                      30.12.2022, 11:33:57.830 [info ]: javascript.0 (1120689) script.js.PV: Triggering read of inverter 1 at address 32000 with length 116
                      30.12.2022, 11:33:57.830 [warn ]: javascript.0 (1120689) script.js.PV: Error received reading address 32000 from id: 1 with error: undefined
                      30.12.2022, 11:33:59.830 [info ]: javascript.0 (1120689) script.js.PV: Triggering read of inverter 1 at address 37000 with length 68
                      30.12.2022, 11:33:59.831 [warn ]: javascript.0 (1120689) script.js.PV: Error received reading address 37000 from id: 1 with error: undefined
                      30.12.2022, 11:34:01.830 [info ]: javascript.0 (1120689) script.js.PV: Triggering read of inverter 1 at address 37700 with length 100
                      30.12.2022, 11:34:01.831 [warn ]: javascript.0 (1120689) script.js.PV: Error received reading address 37700 from id: 1 with error: undefined
                      30.12.2022, 11:34:03.831 [info ]: javascript.0 (1120689) script.js.PV: Triggering read of inverter 1 at address 37800 with length 100
                      30.12.2022, 11:34:03.831 [warn ]: javascript.0 (1120689) script.js.PV: Error received reading address 37800 from id: 1 with error: undefined
                      30.12.2022, 11:34:05.831 [info ]: javascript.0 (1120689) script.js.PV: Triggering read of inverter 1 at address 38200 with length 100
                      30.12.2022, 11:34:05.832 [warn ]: javascript.0 (1120689) script.js.PV: Error received reading address 38200 from id: 1 with error: undefined
                      30.12.2022, 11:34:07.832 [info ]: javascript.0 (1120689) script.js.PV: Triggering read of inverter 1 at address 38300 with length 100
                      30.12.2022, 11:34:07.833 [warn ]: javascript.0 (1120689) script.js.PV: Error received reading address 38300 from id: 1 with error: undefined
                      30.12.2022, 11:34:08.028 [info ]: javascript.0 (1120689) Stop script script.js.PV

                      Z oswibz 2 Replies Last reply Reply Quote 0
                      • Z
                        zoid1988 @zoid1988 last edited by

                        @zoid1988
                        So, ich muss mich kurz selbst korrigieren.
                        Ich habe bereits die Lösung mit Node-red im Einsatz und hab jetzt mal den Node-red Adapter gestoppt und nun haben sich die Einträge im Log verändert.

                        Bildschirmfoto 2022-12-30 um 11.45.31.png

                        Scheinbar kann er jetzt erfolgreich was abfragen, aber in den Objekten stehen immer noch alle Werte auf 0.

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

                          @badsnoopy667 Klappt super den Wert zu ändern, hast du evtl eine Idee wie ich den Akku laden lassen kann? habe es mit 47100 (1) probiert aber es funktioniert nicht......9c46b519-9196-42f1-ae9b-17da6d60c51b-image.png

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

                            @majawe
                            Nein, das habe ich noch nicht probiert, da ich keinen variablen Stromtarif habe... aber darüber nachgedacht, ob es geht, habe ich auch schon. Falls Du also etwas rausbekommen solltest, sag gerne Bescheid! 🙂

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

                              @majawe
                              Kurzes Update: Über Modbus habe ich es noch nicht geschafft den Akku laden zu lassen. Ich vermute übrigens, Du hast nicht die letzte Version (V3) Der "modbus-interface-definitions"
                              Link: solar-inverter-modbus-interface-definitions-v3.0.pdf .
                              Das Register was Du da zeigst gibt es da nicht mehr. Es gibt aber ein Register [Energy storage unit] Time-of-use electricity price periods - 47200. Da kann man wohl die Lade- und Entladezeiten eintragen für den Akku. Da das Ding aber 41 Zeichen lang ist, habe ich keinen Plan, wie das korrekte Format aussehen muss. Ich habe mal den Huawei Support angeschrieben.
                              Aber: Was ich gerade mal getestet habe: Mit der SUN2000 App (Nicht FusionSolar, geht aber vll auch, k.a.) habe ich mich auf den Wechselrichter als Installateur verbunden (über das SDongle WLan im Keller) und habe die Betriebsweise das Akkus auf "TOU" gestellt. Also zeitgesteuertes Laden. Wenn man da dann eine Ladezeit einträgt, fängt das Ding auch an aus dem Netz zu laden.
                              Daher meine fixe Idee als Workaround: In der App eine Ladezeit einstelle (z.B. von 23:00 - 6:00 Uhr Nachts, in der Annahme das Nachts die günstigesten Preise vorliegen). Und dann das Register [Energy storage unit] Maximum charging power - 47075 entsprechend auf 0 setzen, zu Zeiten wenn man nicht laden will und auf 5000 (für 5000W, bei mind. 10kWh Akku, sonst weniger), wenn man laden möchte in dieser Zeit. Morgens natürlich dann wieder hochsetzen. Habe ich aber noch nicht ausprobiert. Könnte mir aber vorstellen, dass es klappt. Bin mir nur nicht sicher, ob er dann noch entlädt (in der Zeit wo die Ladeleistung 0 ist, aber die Ladezeit gesetzt ist).

                              M 2 Replies Last reply Reply Quote 0
                              • M
                                majawe @badsnoopy667 last edited by

                                @badsnoopy667 said in Huawei Sun2000 & ioBroker via JS script funktioniert:

                                [Energy storage unit] Maximum charging power - 47075

                                Die Idee hatte ich auch schon, leider bekomme ich es nicht hin das er die 0 annimmt bzw überträgt

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

                                  @majawe
                                  Das sollte ja das kleinste Problem sein. Der Wert wird genauso geschrieben wie das Register 47077 (Max. Entladeleistung). Hab's gerade probiert. Wenn ich im Flow die Adresse von 47077 auf 47075 ändere (und sonst alles gleich lasse), kann ich die Ladeleistung einstellen. "0" habe ich nicht probiert, aber 4999 und 5000W hat geklappt.

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

                                    @badsnoopy667 könntest du mir den flow mal exportieren oder ein scrennshot der karte bitte machen?🙏

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

                                      @majawe
                                      Hier der Flow für beide Zustände (Charge und Discharge)
                                      flows_read_write_charge_discharge.json
                                      Sobald du eines der beiden Objekte "_SET" änderst (vorher anlegen!), wird das entsprechende Register geschrieben.
                                      Und wie immer bei meinem Flow: Achte auf die Unit-ID. Bei mir ist die 2, bei dir vermutlich nicht! Mein WR war mal defekt.

                                      Hast Du darauf geachtet beim Ändern nicht nur den Namen, sondern wirklich die Adresse zu ändern? Das hab ich schon ein paar mal durcheinander gebracht. Der Name allein hilft nicht, der ist sowieso völlig beliebig.

                                      karte_modbus.png

                                      M B 2 Replies Last reply Reply Quote 0
                                      • M
                                        majawe @badsnoopy667 last edited by

                                        @badsnoopy667 Funktioniert heute auf Anhieb komischer weise 🙂 ich denke es lag am Dongle update

                                        Tou kannst du auch online umstellen unter, https://region02eu5.fusionsolar.huawei.com, Dongle, EMS Control oder direkt am Handy unter Dongel, Parametereinstellung, Arbeitsmodus Tou.

                                        Also brauchst dich nicht direkt am Wechselrichter einloggen

                                        tou.png
                                        tou handy.png

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

                                          @badsnoopy667 Super 👍 👍 👍 👍 👍 so wird es gemacht
                                          Danke🙏

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

                                            @majawe
                                            Schön, dass es klappt! Aber ENT-laden im Ladezeitraum tut er nicht, oder? Das ist nämlich vermutlich noch der Haken. Den Zeitraum würde ich ja immer (in der Nacht) stehen lassen und über die Ladeleistung dann quasi aktivieren und deaktivieren.
                                            Wobei man streiten kann, ob das ein Problem ist, im Winter ist der Akku Nachts sowieso fast immer leer. Dann spielt es keine Rolle. Und im Sommer brauche ich ihn ihn nicht extern laden.

                                            Zu der FusionSolar Seite: Wo geht das denn? Bei mir kann ich da gar nix einstellen. Welche Dongle Firmware ist das? Oder hast Du da Installateur Zugriff auf FusionSolar?

                                            M 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            900
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            59
                                            471
                                            79564
                                            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