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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    ecoflow-connector-Script zur dynamischen Leistungsanpassung

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      foxthefox Developer @Ponti92 last edited by foxthefox

      @ponti92
      Danke für die Aufklärung wie es derzeitig läuft.
      Es ist klar, daß ein ein Shelly3EM nicht direkt wie ein Stecker behandelt werden kann. Mindestens muß die derzeitig abgegebene Leistung mit berücksichtigt werden.
      Hätte halt gedacht, daß dies schon so passiert. Aber woher soll es auch kommen.
      Wenn man den shelly als mqtt über EF abboniert scheint ja der originale output übermittelt zu werden. Also braucht es einen Umsetzer, der aber zeitgleich noch die aktuelle Leistung braucht.
      Wäre interessant ob es nunmehr ein ganz unbekanntes Gerät zu abbonieren gibt. Genaugenommen müsste das dann auch nicht JSON sein, sondern protobuf, da ja der powerstream nichts anderes kennt.

      PS.
      danke für die logs.
      Hab mal ein paar angeschaut und dort stehen noch mehr Daten drin als die heutige protobuf Definition kennt.
      Die Definition geht bisher bis Feld 61 und da gibt es nun Daten mit höheren Feldnummern!
      Da braucht es noch ein paar unknownXX.

      Edit.
      In dem einen sind die Energiedaten drin und siehe da, nicht nur die bekannten watth1..7, sondern auch "watth16":729,"watth17":866,"watth18":866
      Da muß man noch rausfinden, was die bedeuten könnten.

      1 Reply Last reply Reply Quote 0
      • A
        Accu @MikeRow last edited by

        @mikerow ich habe hinter meiner Delta Pro mit ZA einen Shelly 1 PM plus sitzen. Diesen habe ich dem Skript bekannt gemacht in der Sektion Überschussladung. Wenn überschussladung auf TRUE ist, dann schaltet das Skript den Shelly automatisch an und aus und reguliert die AC Ladeleistung in Abhängigkeit vom Hausstrom verbrauch.

        Du müsstest jetzt eigentlich nur noch irgendwie einen Datenpunkt haben, der deinen PV Batteriespeicher misst. Und kannst ja dann eine Bedingung basteln. WENN PV Speciher voll DANN schalte Überschussladung auf TRUE.

        Weiter oben hier im Thread gibs ein Codeschnipsel wie man den Überschussladeparameter umsetzt.

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

          @accu OK, Danke, da setze ich mal an. Vielen Dank

          1 Reply Last reply Reply Quote 0
          • A
            Accu last edited by

            @Waly_de ich hatte jetzt paar mal den Fall dass abends meine PS nicht eingespeist hat. Hatte dann festgestellt dass auf "Stromspeicher Priorisieren" gestellt war. Ich hatte dann per Hand auf "Stromversorgung priorisieren" umgestellt und sofort ging's wieder.
            Das Problem scheint aber sporadisch aufzutreten. Bzw. konnte ich noch kein Muster dafür erkennen. Hast Du einen Rat?

            A 1 Reply Last reply Reply Quote 0
            • D
              DerSmily last edited by DerSmily

              Ich versuche gerade das Skript mal wieder zum Laufen zu bringen:

              Wie bekomme ich diesen Fehler weg?
              javascript.0 11:31:21.934 info script.js.Ecoflow.DL: Fehler beim Abrufen des niedrigsten Werts: timeout
              javascript.0 11:31:36.912 info script.js.Ecoflow.DL: getLowestValue-error: timeout

              Zur Info vielleicht: Ich habe eine PS und nur einen Zusatzakku Delta

              Thomas Bucher M 2 Replies Last reply Reply Quote 0
              • A
                aherby @Accu last edited by

                @accu Hey kannst du das Verhalten näher beschreiben? Ich habe auch etwas das Gefühl das abends nicht mehr alles so funktioniert wie es soll. Durch meinen Aufbau sollte eigentlich auch bis Mitternacht odr länger quasi über Solar eingespeißt werden. Aber hin und wieder "steht" zwar eine Solarspannung an aber es kommt kein Strom. Dann nach Veränderungen, Warten plötzlich funktionert es dann wieder.

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

                  @aherby da gibt es eigentlich nicht viel zu beschreiben. Ich hatte ca. 3mal bisher das Problem dass der PS nach Sonnenuntergang nicht eingespeist hat. Hatte erst ewig gesucht und Geräte abgestöpselt aber dann festgestellt, dass der PS in der Setting Batterie bevorzugen stand. Habs dann manuell umgestellt und alles lief wieder. Keine Ahnung ob das im Skript irgendwo getriggert wurde und der Befehl es dann wieder zurück zu setzen nicht funktioniert hat. Wie gesagt kommt äußerst selten vor. Bei mir bisher 3x seitdem ich das Skript nutze.

                  1 Reply Last reply Reply Quote 0
                  • M
                    MikeRow @Maik Becker last edited by

                    @maik-becker Ich kann das bei meiner Delta Pro auch feststellen. Konntest du das Problem lösen?

                    Maik Becker 1 Reply Last reply Reply Quote 0
                    • A
                      Accu last edited by

                      ich meine hier mal was gelesen zu haben, dass jmd die EF outdoor Batterie mit dem PS betreibt. Kann hier jemand mal paar Erfarhungsberichte posten zum Gerät und vorallem in Verbindung mit dem Skript. Erkennt das Skript die neue EF 2KWH Outdoorbatterie? wie läuft das dann wenn man schon eine delta mit PS im einsatz hat. Kann das skript beide PS steuern vorallem dann auch beim Einspeisen?

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

                        Wenn ich im einspeise Script den wer von 1 auf 0.5 stelle wäre das dann alle 30 Sekunden
                        MinValueMin 0.5

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

                          @accu Ich habe die Outdoor Batterie (2 Kwh). Das Skript funktioniert damit. Allerdings werden die Ganzen Werte (Akkustand etc.) direkt vom PowerStream geliefert. Zu deiner anderen Frage mit der Delta kann ich dir keine Auskunft geben.

                          A 1 Reply Last reply Reply Quote 0
                          • Maik Becker
                            Maik Becker @MikeRow last edited by

                            @MikeRow ja ich habe die werte noch einmal wo anderes her geholt.

                            1 Reply Last reply Reply Quote 0
                            • Maik Becker
                              Maik Becker last edited by

                              Hallo,

                              ich habe jetzt eine Delta Pro und eine Delta Max mit je einem Powerstream und einer Sellysteckdose zum einschalten der AC Ladung, wie kann ich die Überschussladung für beide Geräte einstellen?

                              1 Reply Last reply Reply Quote 0
                              • A
                                Accu @Mario1995 last edited by

                                @mario1995 scheint leider ausverkauft zu sein 😞

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

                                  Hallo, irgendwie bekomme ich das Script nicht zum laufen. Die an AC angeschlossene Fritz Dect wird nicht geschaltet!

                                  Ich habe eine existierende PV Anlage und habe den WR unter Additional Power angelegt. Als Smartmeter ist der Tibber Pulse angegeben. Am AC Eingang der Delta Pro ist eine Fritz Dect angeschlossen. Ich habe das Script nun schon mehrfach geprüft und die Videos kann ich fast auswendig. Egal was ich einstelle, die Fritz Dect wird nicht geschaltet. Hat jemand eine Idee für mich? @Waly_de kannst du dir mal vielleicht die angehängte Config ansehen. Ich bin sonst mit meinem Latein am Ende 😞

                                  Screenshot 2024-06-18 130625.png

                                  email: "XXXXXX@outlook.de",                             // Die App-Zugangsdaten von ecoFlow
                                  passwort: "XXXXXX",
                                  SmartmeterID: "tibberlink.0.Homes.XXXXXX.LiveMeasurement.power",     // State, der den aktuellen Gesamtverbrauch in Watt anzeigt
                                  seriennummern: [
                                      //############# Diesen Abschnitt für jedes einzelne Gerät anlegen ################
                                      {
                                          seriennummer: "XXXXXXXXXXXXX",              // Die Seriennummer des Gerätes
                                          name: "PowerStream",                        // beliebiger Name
                                          MaxPower: 600,                              // Der höchstmögliche Wert in Watt für die Einspeiseleistung
                                          subscribe: true,                            // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt
                                          typ: "PS",                                  // Welches Gerät ist es: PowerStream:"PS"; DeltaMax:"DM"; Delta2: "D2" ; Delta2 Max/Delta Pro: "D2M"; SmartPlug: "SM"; Andere: "NA" 
                                          // Parameter an hier nur für PowerStream.     
                                          regulation: true,                           // "true": Dieser PowerStream soll vom Script reguliert werden
                                          RegulationOffPower: -1,                     // Wird die Regulation per State abgestellt, wird die Einspeiseleistung des ersten Powerstreams auf diesen Wert gesetzt (-1 = keine Änderung, -2 = Batterie Priomodus)
                                          hasBat: true,                               // "true": Eine Batterie ist angeschlossen. Nur für PowerStream relevant.
                                          battPozOn: 100, battPozOff: 97,              // Wenn die Batterie bei battPozOn ist, Einspeisung auf MaxPower. Bei BattPozOff Normalbetrieb
                                          battOnSwitchPrio: true,                     // "true": Bei battPozOn wird in den Batterie-Prioritätsmodus gewechselt
                                          prioOffOnDemand: 30,                        // Wattwert des Bedarfs, bei dem zurück in den Strom-Priomodus geschaltet wird. 0 für kein Rückschalten.   
                                          lowBatLimitPozOn: 5, lowBatLimitPozOff: 15, // Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf 
                                          lowBatLimit: 250,                           // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist
                                      },
                                      //#######################################################################
                                      {
                                          seriennummer: "XXXXXXX",
                                          name: "DELTA PRO",
                                          typ: "D2M",
                                          subscribe: true,                            // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt
                                      },
                                      //#######################################################################
                                      {
                                          seriennummer: "XXXXXXXXXXXXX",
                                          name: "SmartPlug 1",
                                          typ: "SM",
                                          subscribe: true,                            // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt
                                      },
                                      //#######################################################################
                                  ],
                                  AdditionalPowerAvgPeriod: 15000,                    // Zeitraum in ms in denen ein Durchschittswert der Summe von AdditionalPower erstellt wird
                                  AdditionalPower: [                                  // Wenn es weitere Wechselrichter gibt, die in IOBroker erfasst werden, können diese hier Angelegt werden
                                      //############# Diesen Abschnitt für jedes einzelne Gerät anlegen ################
                                      {
                                          name: "STP8",                       // Beliebiger Name
                                          id: "modbus.0.inputRegisters.30775_PV_Leistung_Gesamt_Aktuell",      // Der Objektpfad zu dem Leistungswert in Watt (W)
                                          factor: 1,                                  // Divisionsfaktor für den Leistungswert. (10 für die Delta)
                                          offset: 0,                                  // Wert wird zum Messwert addiert um Messabweichungen ausgleichen zu können 
                                          NoFeedIn: false,                            // true setzen, wenn die enthaltene Leistung nicht ins Hausnetz fließt. (Nur in PVTotal aufnehmen)
                                          NoPV: false,                                // true setzen, wenn die enthaltene Leistung nicht in TotalPV einfließen soll. (Nur in Realpower aufnehmen)   
                                  
                                  //#######################################################################
                                  //****************************************
                                  // Erweiterte Einstellungen:
                                  //****************************************
                                  SmartmeterTimeoutMin: 4,                            // Wenn der letzte Wert vom Smartmeter älter als "SmartmeterTimeoutMin" ist, wird das Script mit...
                                  SmartmeterFallbackPower: 150,                       // SmartmeterFallbackPower als aktuellem Realpowerwert weiter arbeiten, bis wieder aktuelle Daten geliefert werden. 
                                  RegulationIntervalSec: 15,                          // Intervall in Sekunden in denen gemessen und reguliert wird 
                                  Regulation: true,                                   // 'false' stellt das Setzen der Einspeiseleistung ab 
                                  RegulationState: "Regulate",                        // Wenn angegeben, kann mit diesem State die Regulation ein- und ausgeschaltet werden (Wird automatisch unter 0_userdata.0.ecoflow angelegt)
                                  RegulationMultiPsMode: 0,                           // Wenn mehrere PS reguliert werden sollen. "balance" = 0 oder "serial" = 1
                                  SerialReverse: false,                               // true: im serial Mode (RegulationMultiPsMode: 1) werden die PS in umgekehrter Rheihenfolge duchfaufen 
                                  BasePowerOffset: 30,                                // Wird vom aktuellen Verbrauch abgezogen, um die Einspeiseleistung zu berechnen 
                                  Zusatzpower_Offset: 10,                             // Zusatzpower startet ab einer Batterieladeleistung von MaxPower - Zusatzpower_Offset
                                  MinValueMin: 2,                                     // Der Zeitraum in Minuten, aus dem der niedrigste Gesamtverbrauchswert geholt werden soll. 0 für Echtzeitwert
                                  MinValueAg: 0,                                      // Art der Ermittlung des kleinsten Wertes: 0 = Minimalwert, 1 = Durchschnittswert
                                  ReconnectMin: 30,                                   // Zeit in Minuten, nach der die Anwendung neu gestartet wird, wenn keine neuen Daten eintreffen
                                  statesPrefix: "0_userdata.0.ecoflow",               // Hier werden die ecoFlow States angelegt
                                  latitude: latitude,                                 // Breitengrad des Standortes (wird automatisch eingesetzt)
                                  longitude: longitude,                               // Längengrad des Standortes (wird automatisch eingesetzt)
                                  //****************************************
                                  // Überschussladung:
                                  //****************************************
                                  ExcessCharge: true,                                //Überschussladung AN/AUS (true/false)
                                                                                      //ID zum Einstellen der Ladeleistung des Speichers in Watt: 
                                  ExcessChargePowerID: "0_userdata.0.ecoflow.app_XXXXXXXXXXX_thing_property_set.writeables.slowChgPower",
                                                                                      //ID des aktuellen Ladestandes des Speichers in %: 
                                  ExcessChargePowerBatSocID: "0_userdata.0.ecoflow.app_device_property_XXXXXXXXXXX.data.params.bmsMaster.soc",
                                  ExcessChargeSwitchMin: 5,                           //Zeit in Minuten die der Schalter mindestens in der letzten geschalteten Position verbleiben muss. 
                                  ExcessChargeMaxPower: 2000,                         //Maximale Ladeleistung des Speichers in Watt
                                  ExcessChargeOffsetPower: 0,                         //Wird der Leistungsanforderung hinzugerechnet um Messabweichungen auszugleichen. 
                                  ExcessChargeStartPower: 50,                         //Mindest-Überschussleistung zum Einschalten des Speichers
                                  ExcessChargeStopPower: 0,                           //Überschussleistung bei der der Speicher abgeschaltet werden soll.
                                  ExcessChargeStartPowerDurationMin: 1,               //Mindestdauer in Minuten, die ExcessChargeStartPower nicht unterschritten werden darf, bevor der Speicher eingeschaltet wird.
                                  ExcessChargeMinRegulatePause: 1,                    //Mindestpause in Minuten zwischen einzelnen Regelbefehlen (EEPROM-Schutz)
                                  ExcessChargeRegulateSteps: 100,                     //Stufen in Watt, in denen die Werte geändert werden sollen 
                                  ExcessChargeBatSocMax: 95,                          // Batterieladestand muss <= sein damit die Überschussladung gestartet wird
                                  ExcessChargeBatSocOff: 100,                         // Batterieladestand bei dem die Überschussladung abgeschaltet wird
                                  //----------------------------------------
                                  // Beispiel für Delta-Nutzung ohne Schlaltersteckdose:
                                  // Wird an einer Delta auch der PV-Eingang genutzt, bitte die PV-Leistung unter AdditionalPower anlegen. Die passende ID ist:
                                  // 0_userdata.0.ecoflow.app_device_property_xxx.data.params.mppt.inWatts
                                  // Bei der Delta: "subscribe: true" konfigurieren
                                  //----------------------------------------
                                                                                      //ID mit dem Messwert der aktuellen Leistungsaufnahme des Speichers in Watt:
                                  //ExcessActualPowerID: "0_userdata.0.ecoflow.app_device_property_xx.data.params.inv.inputWatts",
                                                                                      //ID des Schalters, der den Speicher aktiviert: 
                                  //ExcessChargeSwitchID: "0_userdata.0.ecoflow.app_xx_xx_thing_property_set.writeables.chgPause", 
                                  //ExcessChargeSwitchOn: 0,                          //Wert, der zum Aktivieren des Schalters gesetzt werden muss (1/0, true/false, "ON"/"OFF"...)
                                  //ExcessChargeSwitchOff: 1,                         //Wert, der zum Deaktivieren des Schalters gesetzt werden muss (1/0, true/false, "ON"/"OFF"...)
                                  //----------------------------------------
                                  // Beispiel für Nutzung einer Schlaltersteckdose:
                                  //----------------------------------------
                                                                                      //ID mit dem Messwert der aktuellen Leistungsaufnahme des Speichers in Watt:
                                  ExcessActualPowerID: "fritzdect.0.DECT_116570551682.power",
                                                                                      //ID des Schalters, der den Speicher aktiviert: 
                                  ExcessChargeSwitchID: "fritzdect.0.DECT_116570551682.state", 
                                  ExcessChargeSwitchOn: true,                         //Wert, der zum Aktivieren des Schalters gesetzt werden muss (1/0, true/false, "ON"/"OFF"...)
                                  ExcessChargeSwitchOff: false,                       //Wert, der zum Deaktivieren des Schalters gesetzt werden muss (1/0, true/false, "ON"/"OFF"...)
                                  //----------------------------------------
                                  //****************************************
                                  Debug: false, mlog: true,
                                  PlotCmdID: 99999,
                                  

                                  U 1 Reply Last reply Reply Quote 0
                                  • Thomas Bucher
                                    Thomas Bucher @DerSmily last edited by

                                    @dersmily schau mal ob der History Adapter läuft

                                    Maik Becker 1 Reply Last reply Reply Quote 0
                                    • Maik Becker
                                      Maik Becker @Thomas Bucher last edited by

                                      @Waly_de kann man das Skript prüfen lassen ob der Powerstream Strom einspeist.

                                      Ich habe zur Zeit eine Delta Pro und Max mit je einem Powerstream, aber zur Zeit ist es wieder mal ab und zu, dass er die Batterie ladet und aber auch über den Powerstream 300 Watt einspeist

                                      1 Reply Last reply Reply Quote 0
                                      • U
                                        ub35bo @MikeRow last edited by

                                        @mikerow
                                        Hallo, so wie du es beschreibst, willst du die Delta Pro zeitgesteuert über einem FritzDect-Schalter laden. Damit ist die Steuerung der FritzDect zunächst unabhängig vom Leistungsanpassungsscript, sie kann maximal von dort aufgerufen werden.
                                        Ich habe daher zunächst iobroker alle meine FritzDect-Schalter ermitteln lassen, dann den entsprechenden Schalter ausgewählt und schreibe dann in "fritzdect.0.DECT_123456789012.state" (bitte an deine Steckdose anpassen) den Wert "0" für aus bzw. "1" für an.

                                        1 Reply Last reply Reply Quote 0
                                        • G
                                          gooflo last edited by

                                          @Waly_de das Skript ist einfach toll!! Heute habe ich für einen Anwendungsfall bei zwei Powerstream mit Batterien zusätzlich zum Füllstand noch die Batteriekapazität bei der Watt-Verteilung mit einbezogen, damit wenn ein PS ne 4 kWh Batterie dran hat und der andere eine 2kWh tatsächlich beide gleich schnell entladen werden. Sowas macht einfach Spaß 🙂

                                          Falls jemand Interesse hat oder Du @Waly_de die Option einbauen willst (schöner wäre natürlich die Kapazität auszulesen, aber das geht leider nicht so einfach soweit ich das Beurteilen kann):

                                          Bei der Konfiguration pro PS einfügen

                                                      battCapacity: 4.096, // Kapazität der angeschlossenen Batterie
                                          

                                          Bei der Berechnung von psBatSumme:

                                           let psCounter = 0, psBatSumme = 0
                                           let psBatSummekWh = 0 // new
                                           for (var i = 0; i < ConfigData.seriennummern.length; i++) {
                                               const asn = ConfigData.seriennummern[i].seriennummer
                                               if (ConfigData.seriennummern[i].typ == "PS" && ConfigData.seriennummern[i].seriennummer != "XXXXXXXXXXXXX" && GlobalObj[asn].regulieren) {
                                                   psCounter = psCounter + 1
                                                   psBatSumme = psBatSumme + GlobalObj[asn].batstate
                                                   psBatSummekWh = psBatSummekWh + GlobalObj[asn].batstate / 100 * ConfigData.seriennummern[i].battCapacity // new
                                                   //gapSumme = gapSumme + GlobalObj[asn].GAPdurchschnitt
                                               }
                                           }
                                          

                                          Bei der Berechnung von Batfaktor:

                                          let Batfaktor = 1
                                          let BatfaktorkWh = 1 // new
                                          if (psBatSumme != 0) {
                                            Batfaktor = (BatBedarf / psBatSumme)
                                            BatfaktorkWh = (BatBedarf / psBatSummekWh) // new
                                          }
                                          

                                          Und abschließend die Verwendung im Balance Mode:

                                          // Setpower = Setpower + (GlobalObj[asn].batstate * Batfaktor)
                                          // mlog("PS:" + GlobalObj[asn].PsName + " Setpower =  " + Math.floor(Setpower) + " batstate = " + GlobalObj[asn].batstate + " Batfaktor = " + Batfaktor )
                                          Setpower = Setpower + (GlobalObj[asn].batstate/100 * ConfigData.seriennummern[i].battCapacity * BatfaktorkWh) // new
                                          mlog("PS:" + GlobalObj[asn].PsName + " Setpower =  " + Math.floor(Setpower) + " batstate = " + GlobalObj[asn].batstate + " BatfaktorkWH = " + BatfaktorkWh ) // new
                                          
                                            
                                          
                                          Maik Becker W 2 Replies Last reply Reply Quote 0
                                          • Maik Becker
                                            Maik Becker @gooflo last edited by

                                            @gooflo Hallo, ich hätte Interesse und da ich zwei Powerstreams mit einer Batterie habe

                                            1x Powerstream mit Delta Pro
                                            1x Powerstream mit Delta Max

                                            Kannst du mir beim Einbau helfen.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            802
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            126
                                            1640
                                            621252
                                            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