Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. ecoflow-connector-Script zur dynamischen Leistungsanpassung

    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.

    ecoflow-connector-Script zur dynamischen Leistungsanpassung

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      sirdir @sirdir last edited by

      @sirdir hab das mit dem logM jetzt mal gemacht, ist ja keine so grosse Sache… Wenn du nicht magst kann ich das auch bei neuen Versionen wieder machen 😉 ... Eine Frage hätte ich noch.
      Verstehe den Sinn von AdditionalPower in deinem Script nicht wirklich. Vielleicht halt weil ich ja keinen Sensor am Zähler hab sondern ein eigenes Script nutze (hab grad gesehen du hast ja nun für Tibber wohl auch sowas). Wenn du nen Sensor am Zähler hat, liefert dir der doch schon den Überschuss aller anderen Solaranlagen? Was bringt es, die noch zu konfigurieren?

      W 1 Reply Last reply Reply Quote 0
      • W
        Waly_de @sirdir last edited by Waly_de

        @sirdir sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

        hab das mit dem logM jetzt mal gemacht, ist ja keine so grosse Sache… Wenn du nicht magst kann ich das auch bei neuen Versionen wieder machen

        ist ne gute Idee.. ich versuch dran zu denken 😉

        @sirdir sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

        Verstehe den Sinn von AdditionalPower in deinem Script nicht wirklich. Vielleicht halt weil ich ja keinen Sensor am Zähler hab sondern ein eigenes Script nutze (hab grad gesehen du hast ja nun für Tibber wohl auch sowas). Wenn du nen Sensor am Zähler hat, liefert dir der doch schon den Überschuss aller anderen Solaranlagen? Was bringt es, die noch zu konfigurieren?

        Naja, das ist grundsätzlich wichtig um die Zusammensetzung des Verbrauchs zu analysieren und damit zu bestimmen, wie viel in die Batterien geht und die Statistiken sauber zu führen. Der Zähler gibt ja nur Summen aus (mein Zähler gibt auch aktuell nur einen einzigen Wert in Watt zurück.)

        Realpower, das ist der Eigentlich Verbrauch, ohne Einspeisungen und Speicherleistung, ist z.B.:

        Smartmeterwert - Einspeisung der PS - AdditionalPower + Überschussladung

        Realpower - BasePowerOffset ist dann der Gesamtbedarf dem es zu decken gilt oder der den Überschuss darstellt.
        Um zu wissen, ob und wie viel ich davon aus den Batterien ziehen muss, brauche ich PV-Total in dem auch AdditionalPower enthalten ist.
        Der Batbedarf ist nämlich der Gesamtbedarf - PV-Total.

        Die Überschussladung könnte auch ohne das auskommen. Aber dann bekommt die Regelung der Ladeleistung über die PS Probleme und die Verbrauchsstatistik würde nicht stimmen.

        S 2 Replies Last reply Reply Quote 0
        • S
          sirdir @Waly_de last edited by

          @waly_de Hmm, da muss ich mir direkt überlegen, was das genau bedeutet. Naja, glaube probieren geht über studieren, ich trage meine Systeme mal ein.

          1 Reply Last reply Reply Quote 0
          • S
            sirdir @Waly_de last edited by sirdir

            @waly_de sorry, also hab die Systeme eingetragen. Solar kommt jetzt natürlich nichts mehr rein, aber hab noch nen grid tie inverter mit ner batterie, der gerade 95W liefert. Dein script sagt totalPV: 10…?

                { name: "Grid tie inverter",
                    id: "shelly.0.SHSW-25#10D0C2#1.Relay0.Power",
                    factor: 1
                },       // Der Objektpfad zu dem Leistungswert in Watt (W)
            

            So sieht der Eintrag aus… Warum 10?\

            Edit:
            Ah ich seh schon, das kommt in additionalpowersum nicht in totalPV und der wert wird auch nicht ausgegeben im log…

            W 1 Reply Last reply Reply Quote 0
            • W
              Waly_de @sirdir last edited by Waly_de

              @sirdir im Regelkreis werden immer 10W zur Solarleistung addiert, damit der PS nicht abregelt wenn die Batterie voll ist. Das siehst du in den mlog ausgaben. Aber in den States sollte es richtig stehen:
              0_userdata.0.ecoflow.totalPV
              und
              0_userdata.0.ecoflow.AdditionalPowerSum

              S 1 Reply Last reply Reply Quote 0
              • F
                foxthefox Developer @aherby last edited by

                @aherby sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

                @foxthefox es gab ja jetzt wieder ein Update vom Powerstream, mal schauen was da so durch passiert.
                mit den Smartplugs und Haushaltslast, könnte es hier in diesem set-Befehlen stecken?

                /set:0a3b0a020801102018352001280138034002488e015002580170d7b5d02e800113880101ba0103696f73ca0110485735325a4448345346363636353855
                2023-11-25 09:33:55.889 - warn: javascript.0 (32899) script.js.EcoflowScript_1_1_6_1: Nicht definierter cmd_func-Wert. [SmartPlug 1] cmdId:142 cmdFunc:2
                              /set:0a35102018352001280138034002488e01580170e5bed02e800113880101ba0103696f73ca0110485735325a4448345346363636353855
                2023-11-25 09:33:57.057 - warn: javascript.0 (32899) script.js.EcoflowScript_1_1_6_1: Nicht definierter cmd_func-Wert. [SmartPlug 1] cmdId:142 cmdFunc:2
                

                außer einem EIN/AUS-schalten ist hier nichts drin.
                Wann kam denn dieses Log zustande? Welche Aktion in der APP hat das ausgelöst?
                Evtl. muß man einen Datenpunkt aufmachen, der nicht im jetzigen plug_heartbeat drin ist.

                Noch eine andere Frage:

                • kann man auch den maximalen Strom und Helligkeit in der App ändern?

                Wenn ja wäre ein Mitschnit vom /set wieder interessant.

                Hab leider keinen Smart Plug zum testen.

                1 Reply Last reply Reply Quote 0
                • S
                  sirdir @Waly_de last edited by

                  @waly_de Ja seh schon. Manchmal mach ich mir das Leben auch zu schwer. War unsicher ob ich ein Problem bekomme it realPower wenn ich die Solarsysteme eintrage und hab jetzt erst gemerkt, dass ich schon mit nem wert 'realPower' arbeite, aber ich hab auch zufällig nen Wert so genannt, hat nichts mit deinem 'realPower' zu tun… Phew…

                  W 1 Reply Last reply Reply Quote 0
                  • W
                    Waly_de @sirdir last edited by

                    @sirdir 😄 Ja, Sowas kann schnell zu Irritationen führen...

                    @foxthefox sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

                    außer einem EIN/AUS-schalten ist hier nichts drin.

                    es ist die cmdId 142 die hier geschaltet wird. Hast du zu dieser cmdId schon eine gesicherte Funktion? Und was genau ist diese Funktion?

                    F S 2 Replies Last reply Reply Quote 0
                    • F
                      foxthefox Developer @Waly_de last edited by

                      @waly_de sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

                      @foxthefox sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

                      außer einem EIN/AUS-schalten ist hier nichts drin.

                      es ist die cmdId 142 die hier geschaltet wird. Hast du zu dieser cmdId schon eine gesicherte Funktion? Und was genau ist diese Funktion?

                      das müsste @aherby beantworten, unter welchen Umständen dieser Mitschnitt entstanden ist.
                      Das es cmdId 142 ist, hab ich schon gesehen, tendenziell müsste damit auch das heartbeat größer geworden sein.
                      Hab leider kein Plug um hier mehr zu recherchieren.

                      A 1 Reply Last reply Reply Quote 0
                      • M
                        Micha 6 @Waly_de last edited by

                        @waly_de Hallo,
                        ich hatte auch den Fehler und dank des Löschens läuft das Script jetzt auch.
                        Hab auch schon gespendet, denn da steckt viel Arbeit drin. Danke.
                        Hab aber beim Start des Scripts immer diese Warn
                        IO_Broker_Fehler.jpg
                        Was kann ich da tun?

                        W 1 Reply Last reply Reply Quote 0
                        • W
                          Waly_de @Micha 6 last edited by

                          @micha-6 sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

                          ich hatte auch den Fehler und dank des Löschens läuft das Script jetzt auch.
                          Hab auch schon gespendet, denn da steckt viel Arbeit drin. Danke.
                          Hab aber beim Start des Scripts immer diese Warn

                          Erst mal vielen Dank für die Spende! Das hilft mir sehr 🙂

                          Bitte klick mal auf "Protokolle" da sollten die Fehlermeldung etwas mehr Inhalt haben.
                          Bitte kopier die Komplete orange Meldung (und ein paar Zeilen davor und danach) und füge sie hier als Text, bzw Code ein:

                          Das geht so mit dem Knopf </> über dem Eingebafeld... und dann zwischen den Marken einfügen.
                          
                          
                          M 1 Reply Last reply Reply Quote 0
                          • S
                            sirdir @Waly_de last edited by

                            @waly_de Hmm, aber ich blick halt doch noch nicht so ganz durch. Hatte ja meine weiteren Inverter eingetragen. Nun meinte dein Script, es gäbe einen überschuss von 800W obwohl es nur 200W Überschuss gab.
                            Ich blick langsam nicht mehr durch.
                            Sagen wir das Haus verbraucht 500W und externe Solarsysteme erzeugen 600W, dann meldet der Zähler doch -100W, richtig? Also hast du 100W Überschuss und nicht 600W oder was auch immer… aber sowas scheint zu passieren, wenn ich deinem Script meine weiteren Inverter bekannt mache.
                            Wenn ich die Solarsysteme wieder auskommentiere, stimmt es einiergmassen, auch wenn ich -50W Offset angegeben habe und trotzdem manchmal einige W mehr angefordert wurden als zur Verfügung stehen.

                            Auch seltsam, jetzt ist die Batterie auf 100%, PS speist ein und das Script versucht die Batterie weiterhin zu laden, obwohl eben der Ladestand 100% ist.
                            (2023-12-10 14:07:43.012 - info: javascript.0 (1787) script.js.Powerstream_v_1_2: Überschuss Einschalten:586 Plus ExcessChargeOffsetPower: -50)

                            Lesen tu ich den SOC aus 0_userdata.0.xxx.data.InverterHeartbeat.batSoc, das sollte doch auch gehen (so muss man die Delta2 Max nicht abonnieren). Wozu will er eigentlich das den SOC haben?
                            Also so ganz blick ich da noch nicht durch.

                            Dann noch eine Sache, ich hab versurcht den Offset oder die maximale Ladelesitung aus nem externen Objekt zu laden. Typ hatte ich auf number gesetzt, aber dann hat er den Wert wohl als string gelesen, plötzlich wollte er die Ladegeschwindigkeit auf z.B '100-10' setzen statt auf 90. Wenn ich, da wo du ConfigData.ExcessChargeOffsetPower liest in toInt() setze, klappt es. Vielleicht wäre das ja sowieso ne gute Idee… Ansonsten, kennst du irgend ne Möglichkeit, sicherzustellen, dass der Wert eines Objektes INT ist und nicht plötzlich als String interpretiert wird?

                            W 1 Reply Last reply Reply Quote 0
                            • M
                              Micha 6 @Waly_de last edited by

                              @waly_de said in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

                              @micha-6 sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

                              ich hatte auch den Fehler und dank des Löschens läuft das Script jetzt auch.
                              Hab auch schon gespendet, denn da steckt viel Arbeit drin. Danke.
                              Hab aber beim Start des Scripts immer diese Warn

                              Erst mal vielen Dank für die Spende! Das hilft mir sehr 🙂

                              Bitte klick mal auf "Protokolle" da sollten die Fehlermeldung etwas mehr Inhalt haben.
                              Bitte kopier die Komplete orange Meldung (und ein paar Zeilen davor und danach) und füge sie hier als Text, bzw Code ein:

                              Das geht so mit dem Knopf </> über dem Eingebafeld... und dann zwischen den Marken einfügen.
                              
                              	2023-12-10 17:37:45.687	info	script.js.Nulleinspeisung: Verbunden mit dem Ecoflow MQTT-Broker
                              
                              javascript.1
                              2023-12-10 17:37:45.368	info	script.js.Nulleinspeisung: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                              
                              javascript.1
                              2023-12-10 17:37:45.355	warn	at script.js.Nulleinspeisung:2826:3
                              
                              javascript.1
                              2023-12-10 17:37:45.355	warn	at script.js.Nulleinspeisung:365:14
                              
                              javascript.1
                              2023-12-10 17:37:45.354	warn	at Array.forEach (<anonymous>)
                              
                              javascript.1
                              2023-12-10 17:37:45.354	warn	at script.js.Nulleinspeisung:366:5
                              
                              javascript.1
                              2023-12-10 17:37:45.354	warn	at setConfigValueFromId (script.js.Nulleinspeisung:359:21)
                              
                              javascript.1
                              2023-12-10 17:37:45.350	warn	getState "0_userdata.0.ecoflow.ExStateTest" not found (3) states[id]=null
                              
                              javascript.1
                              2023-12-10 17:37:45.316	info	Start javascript script.js.Nulleinspeisung
                              
                              javascript.1
                              2023-12-10 17:37:39.224	info	script.js.Nulleinspeisung: Ecoflow MQTT-Client beendet
                              
                              javascript.1
                              2023-12-10 17:37:39.221	info	Stop script script.js.Nulleinspeisung
                              W 1 Reply Last reply Reply Quote 0
                              • W
                                Waly_de @Micha 6 last edited by Waly_de

                                @micha-6 Hmm Ok, das ist nichts kritisches. Mich wundert aber das du solche Warnungen bekommst, denn die sind im Code abgefangen. (Du nutzt die neuste Version, richtig?)

                                Du kannst das aber ignorieren, oder den Part für externe States auskommentieren, oder den fehlenden State selbst anlegen.:

                                //  EXTERNE STATES zum Manipulieren von Konfigurationsvariablen 
                                var externConfig = [
                                    //############# Diesen Abschnitt für jeden einzelne Wert anlegen ################
                                //    {
                                //        VarName: "seriennummern[0].lowBatLimitPozOn",       //Variabelname aus "ConfigData" bei Aufzählungen [0...X] in der Reihenfolge der Angaben 
                                //        id: "0_userdata.0.ecoflow.ExStateTest"              //Das Objekt (State) das den Wert für diese Variable enthalten soll. Muss manuell angelegt werden. 
                                //    },
                                //#######################################################################
                                ];
                                //#######################################################################
                                
                                
                                1 Reply Last reply Reply Quote 0
                                • W
                                  Waly_de @sirdir last edited by Waly_de

                                  @sirdir sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

                                  Sagen wir das Haus verbraucht 500W und externe Solarsysteme erzeugen 600W, dann meldet der Zähler doch -100W, richtig? Also hast du 100W Überschuss und nicht 600W oder was auch immer…

                                  Richtig. Das sollte das Script so machten. Bei Dir ist das etwas schwierig von außen zu beurteilen. Was mir einfällt: Du hast ja bisher den Zähler mit Deinem Script simuliert. Dabei hast Du doch vermutlich schon die Einspeiseleistung Deiner anderen Inverter herausgerechnet. Passiert das jetzt vielleicht doppelt?

                                  SOC wird noch nicht ausgewertet, was nicht so wild ist, denn in die Batterien geht eben nichts mehr rein. Für die Regelung wird aber die echte Leistungsaufnahme der Speicher gemessen. Ich hab hier so wenig Sonne, Da konnte ich dieses Fall noch nicht erleben 😉 Ich bau aber in Zukunft noch eine Abschaltung bei Ladestand x ein.

                                  Das mit den States ist ein guter Hinweis. Baue ich ein. Leider kann man den Typ nicht genau festlegen, schon garnicht, wenn die Sates von unbekannter Quelle kommen. Aber das ist leicht abzufangen.

                                  In den Settings achte darauf numerische Werte nicht in "" zu setzen und keine Einheiten wie "W" dahinter zu schreiben.

                                  S 1 Reply Last reply Reply Quote 0
                                  • S
                                    sirdir @Waly_de last edited by

                                    @waly_de Das ist eben das, was ich nicht ganz verstehe. Klar rechne ich die Solaranlagen raus. Aber das macht ein Sensor am physikalischen Zähler ja genau so… ?! Das ist eben der Punkt, wo ich noch nen Knoten habe…
                                    Was ich auch nicht ganz verstehe ist der ExcessChargeOffsetPower, was da wo in welche Richtung dazugerechnet wird. Die Ladeleistung wird einfach um den Wert erhöht, resp verkleinert?
                                    Gestern - da hab ich aber auch viel gebastelt, kann sein dass da was durcheinander kam - hab ich mal festgestellt, dass dein script mit 20W zu laden versucht hat (vielleicht eben wegen dem Offset), was natürlich nicht geht.
                                    Was die States angeht, ich hab gestern Stunden verbraten. Wenn man die States mit { type: 'boolean' } oder { type: 'number'} etc. anlegt, geht das. Was ich aber nicht hingekriegt habe, ist den Typ aus ner variable zu ziehen, also man kann das {} Konstrukt nicht als String übergeben.. Und ich bin wohl in JavaScript zu wenig bewandert… (hab da sonst nie was gemacht). Hab jetzt einfach 3 Funktionen gemacht, eine zum Anlegen eines strings, eine zum Anlegen einer number und eine zum Anlegen eines boolean… Das ginge sicher einfacher, aber eben, hab nicht rausgefunden wie.

                                    W 1 Reply Last reply Reply Quote 0
                                    • W
                                      Waly_de @sirdir last edited by Waly_de

                                      @sirdir

                                      Vielleicht hilft dir diese Funktion aus dem Script:

                                      Sie ermittelt den Typ von value und legt einen entsprechenden State an.
                                      Den Typ kannst du aber auch in 'const state' als String wie im Kommentar übergeben, oder
                                      nach der Definition mit state.type = 'boolean' überschreiben

                                      async function createMyState(name, value) {
                                          const stateName = name;
                                          let valueType = typeof initValue;
                                          if (!(await existsObjectAsync(stateName))) {
                                              const state = {
                                                  name: name.split('.').pop(),
                                                  role: 'state',
                                                  type: valueType // 'string', 'number', 'boolean', usw.
                                                  read: true,
                                                  write: true,
                                              };
                                              // @ts-ignore
                                              await createStateAsync(stateName, value, false, state);
                                          }
                                      }
                                      
                                      

                                      ExcessChargeOffsetPower wir tatsächlich einfach zum Überschuss addiert, solange der > 0 ist. bei Überschuss 0 wird auch 0 geschickt. die Deltas laden eh immer mit min. 70 W, auch wenn du 0 schickst.

                                      S 2 Replies Last reply Reply Quote 0
                                      • S
                                        sirdir @Waly_de last edited by

                                        @waly_de danke ich schau mir das mal an. Das mit dem überschuss, ja eben das lief dann auseinander… hatte das Gefühl es wird einfach manchmal geladen wenn schon nicht mehr geladen werden sollte. Aber ist halt auch alles etwas komplex. Kommt noch genug überschuss von den PS Solarpanels? Aber auch dann, der Ueberschuss sollte ja dann besser direkt in die Batterie als eingespeist zu werden um die Batterie mit AC zu laden… aber wenn du Batterie schon voll war geht’s nicht anders bevor sie zu nem gewissen Punkt entladen wurde… Bin da jeweils nicht sicher ob das passiert, was gewollt war oder nicht 🙂

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          sirdir @Waly_de last edited by sirdir

                                          @waly_de das ist das was ich meinte: Erstens scheint das Script erst mal etwas, was 'null' ist als Ladeleistung zu setzen, bevor es die Ladung einschaltet (nicht so schlimm, aber vielleicht interessant). Dann wenn es mit dem Überschuss knapp wird, versucht er die Ladeleistung runter zu regeln, was aber ja nicht geht, da die Ecoflow immer mit ˜88W oder so lädt, auch wenn du 19 schickst (wobei ich schon ExcessChargeOffsetPower auf -100 habe, sonst würde dauernd mehr geladen als überschuss da ist). Dann wird effektiv Netzstrom verbraucht, die Ladung wird aber nicht abgebrochen, es wird aber auch nicht eingespeist. Ist das das gewünschte Verhalten?!
                                          IMG_1960.pngIMG_1962.png

                                          W 1 Reply Last reply Reply Quote 0
                                          • A
                                            aherby last edited by

                                            @foxthefox Hey meinst du die Helligkeit der LED-Beleuchtung vom Smartplug?
                                            Ja die kann man über die App ändern.

                                            ist es möglich, das es hier drin ist?

                                            /thing/property/set:0a36102018352001280138034002488201580170ddbb9d8006800113880101ba0103696f73ca0110485735325a4448345346363636353838
                                            

                                            Und man kann den Überlastschutz wählen zwischen 1000 W und 2500W

                                            /thing/property/set:
                                            0a3d0a0308e8071020183520012801380340024889015003580170858cae8006800113880101ba0103696f73ca0110485735325a4448345346363636353838
                                            

                                            kann damit was angefangen werden?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            808
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            126
                                            1630
                                            500637
                                            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