Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. ecoflow-connector-Script zur dynamischen Leistungsanpassung

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    224

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

ecoflow-connector-Script zur dynamischen Leistungsanpassung

ecoflow-connector-Script zur dynamischen Leistungsanpassung

Scheduled Pinned Locked Moved JavaScript
1.6k Posts 127 Posters 741.2k Views 127 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M matz75

    @accu Hi - ich hab mir dazu ein kleines Scriptchen erstellt, dass mir den State eines Objektes, welches bei mir aus FHEM kommt, überwacht, und dementsprechend den Regulate auf true bzw. false setzt. Somit hab ich die Möglichkeit das Ganze via Tablet UI aus FHEM heraus Adhoc zu beeinflussen. Darüber hinaus kann der State aus entsprechenden FHEM Logiken heraus gesteuert werden. FHEM stellt bei mir die zentrale der gesamten Gebäudesteuerung dar und sollte somit das EcoFlow Script entsprechend beeinflussen können.

    05de8c79-ea35-4b3e-9f14-c452a2dc8b75-image.png

    In diesem Zusammenhang sollte man dann aber die ensprechenden Parameter im EcoFlow Script im Hinterkopf haben. "Was soll er machen, wenn manuell reguliert wird" etc..

    A Offline
    A Offline
    Accu
    wrote on last edited by
    #1224

    @matz75 schaltet er bei REGULATE = FALSE auch alle vom Skript etwaig eingeschalteten Schalter wieder aus?

    M W 2 Replies Last reply
    0
    • D Offline
      D Offline
      Dreffi
      wrote on last edited by Dreffi
      #1225

      Ich habe aktuell ein kleineres Problem. Ich habe für LowBatLimit externe States angelegt. Wenn diese geändert werden wird das auch vom Script protokolliert, aber die Regelung wird nicht immer daran angepasst. Es wird weiter mit dem bisherigen Wert gearbeitet.
      Der aktuelle wird z.B. berücksichtigt wenn ich das Script über RegulationState = false/true neu starte oder der jeweilige Akku neu unter LowBatLimitPozOn fällt.

      Hintergrund: ich wollte damit morgens bei ausreichender Sonnenenergie die Leistung kontrolliert schon früher freigeben.

      W 1 Reply Last reply
      0
      • A Accu

        @matz75 schaltet er bei REGULATE = FALSE auch alle vom Skript etwaig eingeschalteten Schalter wieder aus?

        M Offline
        M Offline
        matz75
        wrote on last edited by
        #1226

        @accu Gute Frage. Würd ich entsprechend testen. Behaupte aber mal nein. Kannst das "Zusatz"-Script aber entsprechend erweitern und die gewünschten Schaltlogiken umsetzen.

        1 Reply Last reply
        0
        • W Waly_de

          So, meine Anbindung läuft jetzt seit einigen Tagen sauber. Daher spendiere ich dem Skript mal einen eigenen Thread.

          Anbei findet ihr ein Skript, das eine Verbindung zwischen euren ecoflow-Geräten und ioBroker herstellen kann. Dabei nutzt es die gleiche Schnittstelle wie die ecoFlow App. Ihr benötigt lediglich eure Zugangsdaten zur App und die Seriennummern eurer Geräte, um dieses Skript nutzen zu können. Alle bekannten übermittelten Daten werden in ioBroker als Zustände angelegt. Viele davon sind noch unbekannt. Wenn ihr herausfindet, was sich hinter den unbekannten Daten verbirgt, kann ich die Zustandsnamen anpassen.

          Achtung: Der ecoflow-Server sendet unfassbar viele Nachrichten. Wenn ihr mehrere Geräte habt, kann dies euer System stark belasten und sogar zu Abstürzen führen. Vielleicht bekommt Ihr auch diese Meldung und das Script wird beendet:

           [error]: javascript.0 (5490) Script script.js.EcoFlow is calling setState more than 1000 times per minute! Stopping Script now! Please check your script!
          

          Daher empfehle ich, nicht alle Geräte dauerhaft zu abonnieren (dies kann über einen Parameter in der Einstellungssektion festgelegt werden). Es werden nur die PowerStreams benötigt, um die Einspeiseleistung anpassen zu können.
          Sonst kann dieser Grenzwert aber auch in den Einstellungen der Javascript-Instanz heraufgesetzt werden. 3000 dürfte für die meisten Szenarien reichen. (Siehe Screenshot weiter unten. Der Wert befindet sich unten links)

          Damit kommen wir zur eigentlichen interessanten Funktion des Skripts:
          Wenn ihr ein Smartmeter habt, das euren aktuellen Stromverbrauch in Echtzeit anzeigen kann, könnt ihr es an ioBroker anbinden. Informationen dazu findet ihr im Netz.

          Hier hab ich das Ding gekauft (Wenn ihr über die Links kauft, bekomme ich ein paar Cent Provision ab ;-)):
          Hichi Wifi, IR Lesekopf für Stromzähler
          https://ebay.us/3X1pkH
          Der Verkäufer hat auch ein tolles Video gemacht, wie man es einrichtet 😉

          Es funktionieren aber auch viele andere Zähler wie z.B.:
          Der Shelly 3EM

          Tibber-Kunden mit Pulse empfehle ich die lokale Einbindung des Pulse als Smartmeter mit meinem Script:
          https://forum.iobroker.net/topic/70758/tibber-pulse-verbrauchsdaten-lokal-auslesen

          Das Skript passt dann die Einspeiseleistung des PowerStream dynamisch an, sodass möglichst der gesamte Verbrauch durch die Einspeisung gedeckt wird, aber nichts ins Netz verschenkt wird. Erst wenn die Batterie voll geladen ist, wird die gesamte Leistung ins Netz eingespeist (wenn ihr das möchtet).

          Das Smartmeter muss den aktuellen Verbrauch möglichst in Echtzeit und in der Einheit Watt in einem Objekt von IOBroker zur Verfügung stellen. Im Script muss dann nur noch der Pfad zu diesem Objekt unter "SmartmeterID:" eingetragen werden. Am einfachsten geht das über die Adminoberfläche von IOBroker. Klickt auf Objekte und sucht das Objekt eures Smartmeters mit dem "Watt"-Wert im Objektbaum:
          Bildschirmfoto 2023-09-04 um 09.55.08.jpg
          Wenn Ihr auf das markierte Symbol klickt, ist der Pfad in euerer Zwischenablage gespeichert.
          Jetzt müsst Ihr ihn nur noch hinter "SmartmeterID:" im Script einfügen. Achtet darauf, dass Ihr es zwischen die "" einfügt.
          Wenn alles geklappt hat, der Pfad stimmt und das Script läuft, solltet Ihr unter Objekte: "0_userdata.0.ecoflow.RealPower" sehen, dass sich dieser Wert regelmäßig anpasst.

          Es können mehrere PowerStreams konfiguriert werden. Im Moment wird jedoch nur der erste in der Konfiguration gesteuert. Ich habe zum Beispiel zwei PowerStreams, einen mit und einen ohne Batterie. Dadurch steht tagsüber mehr Leistung zum Laden der Batterie zur Verfügung. Die Daten werden vom Skript verwendet, um die optimale Einspeiseleistung zu berechnen. In Zukunft könnten auch mehrere PowerStreams gesteuert werden.

          Nochmals vielen Dank an alle hier im Forum, die mit Ihrer Arbeit die Anbindung erst möglich gemacht haben!
          Ursprünglicher Beitrag: https://forum.iobroker.net/topic/54929/adapter-für-ecoflow-einbindung/

          Wichtig: Zur Installation müssen 2 Module installiert werden. Einfach in den Einstellungen der Javascriptinstanz unter Zusätzliche Module die beiden Namen eintragen und speichern ("mqtt" und "protobufjs")

          Bildschirmfoto 2023-07-17 um 10.56.49.jpg

          Erweiterungen:
          Tibber Modul
          Kann als eigenes, neues Script neben dem Hauptscript angelegt werden.

          //*************************************************************
          // Tibber Modul
          //*************************************************************
          // Schaltet die Regelung der Powerstation ab, wenn der Strom billig ist 
          // und einen beliebigen Schalter zum Aktivieren der AC-Ladung ein, bis die Batterie 
          // den durch der "BatMax" festgelegten Ladestand in % erreicht hat
          // 
          // Diese Parameter aus dem Hauptscript sind wichtig:
          // RegulationOffPower: -2 // Wird die Regulation per State abgestellt, wird die Einspeiseleistung des ersten Powerstreams auf diesen Wert gesetzt (-1 = keine Änderung, -2 = Batterie Priomodus)
          // RegulationState: "Regulate" // Erzeugt der State zum Ein und Aus-Schalten der Regulation.
          //
          // Das Script versucht selbst die ID's für den TibberStatus und den Batteriestand zu ermitteln.
          // Wenn das nicht klappt bitte einfach die richtigen ID's hinter "batSocID" und "tibberID" angeben.
          //
          //*************************************************************
          
          //*************************************************************
          // Konfiguration laden, wenn nicht im Originalscript eingefügt
          //*************************************************************
          var ConfigData = {
              statesPrefix: '0_userdata.0.ecoflow',
              RegulationState: "Regulate"
          }
          if (typeof ConfigData.email === 'undefined') {
              try {
                  let tempConfigData = getState("0_userdata.0.ecoflow.Settings.ConfigData").val
                  if (typeof tempConfigData !== 'object' && tempConfigData !== null) {
                      tempConfigData = JSON.parse(tempConfigData)
                  }
                  if (typeof tempConfigData === 'object' && tempConfigData !== null) {
                      if (tempConfigData.email !== undefined) {
                          ConfigData = tempConfigData;
                          //log("wurde geladen als object")
                      }
                  }
              } catch (error) {
                  log("Konfiguration wurde nicht geladen: " + error.message)
              }
          }
          
          /***************************************
          **********  YOUR DATA HERE  ************ 
          ****************************************/
          var tibberConfig = {
              BatMax: 99,                                  //Bei diesem Ladestand stoppt die AC-Ladung und das Script wird wieder eingeschaltet 
              BatMin: 95,                                  //Der Ladestand der Batterie muss kleiner sein als BatMin , damit der Akku per AC-Ladung geladen wird 
              SwitchID: "sonoff.0.NOUS-DVES_F0A844.POWER", //ID des Schalters, der die AC-Ladung einschaltet. "true" und "false" werden gesetzt
              LevelToSwitch: [                             //Hier die Werte definieren, bei denen die AC-Ladung eingeschaltet werden soll
                  //"NORMAL",
                  //"CHEAP",                                 //Einkommentieren falls gewüscht 
                  "VERY_CHEAP"
              ],
          }
          //***************************************/
          // Nur angeben, wenn automatische Ermittlung fehlschlägt
          //***************************************/
          let batSocID = getState(ConfigData.statesPrefix + ".Settings.Tibber.tibberBatSocID").val
          let tibberID = getState(ConfigData.statesPrefix + ".Settings.Tibber.tibberID").val
          //***************************************/
          
          
          var idOK = false
          if (!batSocID || !tibberID) {
              log("Versuche die IDs für Tibber und Batterielevel zu finden")
              $("tibberlink.*.Homes.*.CurrentPrice.level").each(function (id, i) {
                  tibberID = id
                  createState(ConfigData.statesPrefix + ".Settings.Tibber.tibberID", tibberID, false)
                  log("TibberID gefunden und gespeichert:" + id)
              })
              $(ConfigData.statesPrefix + ".app_device_property_*.data.InverterHeartbeat.batSoc").each(function (id, i) {
                  if (getState(id).val > 0) {
                      batSocID = id
                      createState(ConfigData.statesPrefix + ".Settings.Tibber.tibberBatSocID", batSocID, false)
                      log("batSocID gefunden und gespeichert:" + id)
                  }
              })
              if (!batSocID || !tibberID) {
                  log("Fehler bei der Ermittlung der IDs. Bitte händisch ins Script eintragen", 'error')
              } else {
                  idOK = true
              }
          } else {
              idOK = true
          }
          if (idOK) {
              checkTibber()
              on({ id: tibberID, change: "ne" }, function (obj) {
                  //log("Tibber Modul. tibberID Event:" + obj.state.val)
                  checkTibber()
              });
              on({ id: batSocID, change: "ne" }, function (obj) {
                  //log("Tibber Modul. batSocID Event:" + obj.state.val + "%")
                  checkTibber()
              });
          }
          function checkTibber() {
              if (tibberID && batSocID) {
                  const RegulateID = ConfigData.statesPrefix + "." + ConfigData.RegulationState
                  let priceLevel = getState(tibberID).val;
                  let batsoc = Number(getState(batSocID).val)
                  let OldRegulate = toBoolean(getState(RegulateID).val)
                  //log("Tibber Preislevel: " + priceLevel + " OldRegulate: " + OldRegulate + " batsoc: " + (batsoc))
                  if ((tibberConfig.LevelToSwitch.includes(priceLevel))) {
                      if (OldRegulate) {
                          if (batsoc <= tibberConfig.BatMin) {
                              setState(RegulateID, false);  // Regulierung aus
                              setState(tibberConfig.SwitchID, true) //Schalter einschalten
                              log("Script abgeschaltet AC-Ladung Ein, weil priceLevel:" + priceLevel + " batsoc:" + batsoc + "%")
                          }
                      } else {
                          if (batsoc >= tibberConfig.BatMax) {
                              setState(RegulateID, true);  // Regulierung an
                              setState(tibberConfig.SwitchID, false) //Schalter ausschalten
                              log(" Batterie bei BatMax. Script eingeschaltet AC-Ladung Aus. priceLevel:" + priceLevel + " batsoc:" + batsoc + "%")
                          }
                      }
                  } else {
                      if (!OldRegulate) {
                          setState(RegulateID, true);  // Regulierung an
                          setState(tibberConfig.SwitchID, false) //Schalter ausschalten
                          log("Script eingeschaltet AC-Ladung Aus. priceLevel:" + priceLevel + " batsoc:" + batsoc + "%")
                      }
                  }
              } else {
                  //log("checkTibber skip. batsocID und/oder tibberID fehlen.")
              }
          }
          //*************************************************************
          

          Tibber-Pulse als Smartmeter nutzen und lokal auslesen:
          https://forum.iobroker.net/topic/70758/tibber-pulse-verbrauchsdaten-lokal-auslesen

          Unterstütze das Projekt 'ecoflow-connector'
          Wenn dir das Script zur dynamischen Leistungsanpassung für den IObroker gefällt und du es nützlich findest, ziehe bitte in Erwägung, eine kleine Spende via PayPal zu hinterlassen.
          Jeder Beitrag hilft, das Projekt am Laufen zu halten und weitere Updates zu ermöglichen.
          Danke für deine Unterstützung!
          Jetzt Spenden

          Dieses Script wird bei Änderungen und Updates immer aktualisiert:
          Nutzung auf eigene Gefahr !

          [Bildschirmfoto 2024-03-29 um 09.37.51.jpg

          • Installation von ioBroker und Skript unter UNRAID in nur 12 Minuten
          • Video mit Erklärung der Basiskonfiguration
          • Video mit Erklärung zu AdditionalPower und Überschussladung

          Download (neues JS-Script in IOBroker anlegen und den Inhalt der Datei einfügen):

          • ecoflow-connector_v125.txt (13.05.2024)
          • 1.2.5.f1 Fork von Florian Vogt (25.06.2024)
            Feature hinzugefügt, um die Größe der Delta-Speicher beim Ausbalancieren der Entladeleistung zu berücksichtigen, damit die Batterien gleichmäßig geleert werden.
            Parameter battCapacity bei den Einstellungen für PowerStream = Kapazität der angeschlossenen Batterie in kWh, default = 1
            ecoflow-connector_v125_mod_FV.txt (25.06.2024)

          ältere Versionen:

          • ecoflow-connector_v124.txt (22.04.2024)
          • ecoflow-connector_v123.txt (21.02.2024)
          • ecoflow-connector_v121_05.01.2024.txt
          • ecoflow-connector_v12_.04.12.2023.txt
          • ecoflow-connector_v1162_04.11.2023.txt
          • ecoflow-connector_v115_02.10.2023.txt
          • ecoflow-connector_v1142_26.09.2023
          • ecoflow-connector_v1132_31.08.2023
          • ecoflow-connector_v112_17.08.2023)
          K Offline
          K Offline
          Kay Wurl
          wrote on last edited by
          #1227

          @waly_de
          Vielen Dank erstmal für Deine Arbeit^^.
          Script läuft mit ein paar Änderungen sehr gut.

          Ich habe battPozOn auf 0 und battPozOff auf 100 gesetzt, so dass als erstes immer die Delta 2 geladen wird (sind bei Tibber, das ist es mittags am billigsten).

          Die D2 kann ja nur 600W am Eingang. Heute zB. waren per Solar 740W möglich. Der PS schickt 600W zur D2 und der Rest verpufft. Kann man dem PS irgendwie sagen, wenn Solar mehr als 600W, dann schicke die Differenz stur ins Netz?

          Noch eine Frage. Kann man das zeitlich steuern? Für mich wäre perfekt, bis 10:00 Uhr Einspeisepriorisierung, von 10:00 Uhr bis 18:00 Uhr Prio aufs Akku laden und ab 18:00 Uhr, bis der PS aus geht, wieder Prio auf die Einspeisung ins Netz.

          Danke Danke Danke^^

          LG

          W 1 Reply Last reply
          0
          • T Offline
            T Offline
            Thomas 6
            wrote on last edited by Thomas 6
            #1228

            Hallo,

            ich habe nun auch seit ein paar Tagen ein PowerStream mit dem 2kW wetterfestem Speicher. Das Script läuft seit dem ersten Tag und Regelt die Einspeisung ganz ordentlich.
            Nun habe ich etwas festgestellt was wahrscheinlich nichts mit dem Script zu tun hat, aber vielleicht hat ja jemand einen Rat.

            Je höher ich oder das Script die Einspeiseleistung einstelle, um so niedriger wird mein Solarertrag. Die Screenshots sind innerhalb weniger Minuten entstanden und die Panels wahren immer voll in der Sonne. Das Verhalten lässt sich auch Reproduzieren.
            IMG_1550.PNG IMG_1547.PNG IMG_1548.PNG IMG_1549.PNG

            Hat jemand eine Idee was da los ist?

            1 Reply Last reply
            0
            • A Accu

              @waly_de hatte gehofft bei der neuen Skriptversion, dass der AC Ladeshelly bei der Überschussladung abgeschaltet wird, wenn die DP voll geladen ist - wäre bei den Änderungen mit dabei 😞

              Meine DP hat mit 99% die obere Ladegrenze erreicht und der Shelly DP Load bleibt weiterhin eingeschaltet. Wäre schön, wenn der dann ausginge, um nicht weiter Strom auf der Leitung bzw. am DP AC Ladeeingang permanent zu haben.

              Bildschirmfoto 2024-04-25 um 14.50.44.png

              W Offline
              W Offline
              Waly_de
              wrote on last edited by
              #1229

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

              @waly_de hatte gehofft bei der neuen Skriptversion, dass der AC Ladeshelly bei der Überschussladung abgeschaltet wird, wenn die DP voll geladen ist - wäre bei den Änderungen mit dabei 😞

              Meine DP hat mit 99% die obere Ladegrenze erreicht und der Shelly DP Load bleibt weiterhin eingeschaltet. Wäre schön, wenn der dann ausginge, um nicht weiter Strom auf der Leitung bzw. am DP AC Ladeeingang permanent zu haben.

              Bildschirmfoto 2024-04-25 um 14.50.44.png

              ExcessChargeBatSocMax: 95, // Batterieladestand muss <= sein damit die Überschussladung gestartet wird
              ExcessChargeBatSocOff: 100, // Batterieladestand bei dem die Überschussladung abgeschaltet wird

              hast du das angepasst? wenn 100 % nicht erreicht wird, wird das Skript auch nicht abschalten. Stell es also auf 99.

              A 1 Reply Last reply
              0
              • M McCrypto

                @gooflo Hallo und danke für die Rückmeldung.

                Leider ist es bei mir so (aktuell mit einer Powerstream), dass wenn der Akku voll ist, die maximal mögliche PV-Leistung ins Stromnetz eingespeist wird. Das würde ich gerne verhindern und da sehe ich keine Möglichkeit für 😞

                W Offline
                W Offline
                Waly_de
                wrote on last edited by Waly_de
                #1230

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

                @gooflo Hallo und danke für die Rückmeldung.

                Leider ist es bei mir so (aktuell mit einer Powerstream), dass wenn der Akku voll ist, die maximal mögliche PV-Leistung ins Stromnetz eingespeist wird. Das würde ich gerne verhindern und da sehe ich keine Möglichkeit für 😞

                Das ist so gewollt, warum sollte man wenn die Speicher voll sind und mehr Energie zur Verfügung steht als gebraucht wird diese nicht der Allgemeinheit zur Verfügung stellen? Wir wollen doch alle den Planeten retten. Ausserdem ist das herunterregeln der PV leistung auch nicht gut für die Hardware.

                Warum Nulleinspeisung keine gute Idee ist:
                https://www.youtube.com/watch?v=wxP5uMdtMmk

                V 1 Reply Last reply
                0
                • A Accu

                  @matz75 schaltet er bei REGULATE = FALSE auch alle vom Skript etwaig eingeschalteten Schalter wieder aus?

                  W Offline
                  W Offline
                  Waly_de
                  wrote on last edited by
                  #1231

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

                  @matz75 schaltet er bei REGULATE = FALSE auch alle vom Skript etwaig eingeschalteten Schalter wieder aus?

                  ich glaube auch nicht (du meinst den Schalter für die Überschussladung? Sonst wird ja nichts geschaltet) Die Einspeiseleistung des PS kannst du mit dem Parameter: RegulationOffPower einstellen

                  1 Reply Last reply
                  0
                  • D Dreffi

                    Ich habe aktuell ein kleineres Problem. Ich habe für LowBatLimit externe States angelegt. Wenn diese geändert werden wird das auch vom Script protokolliert, aber die Regelung wird nicht immer daran angepasst. Es wird weiter mit dem bisherigen Wert gearbeitet.
                    Der aktuelle wird z.B. berücksichtigt wenn ich das Script über RegulationState = false/true neu starte oder der jeweilige Akku neu unter LowBatLimitPozOn fällt.

                    Hintergrund: ich wollte damit morgens bei ausreichender Sonnenenergie die Leistung kontrolliert schon früher freigeben.

                    W Offline
                    W Offline
                    Waly_de
                    wrote on last edited by
                    #1232

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

                    Ich habe aktuell ein kleineres Problem. Ich habe für LowBatLimit externe States angelegt. Wenn diese geändert werden wird das auch vom Script protokolliert, aber die Regelung wird nicht immer daran angepasst. Es wird weiter mit dem bisherigen Wert gearbeitet.
                    Der aktuelle wird z.B. berücksichtigt wenn ich das Script über RegulationState = false/true neu starte oder der jeweilige Akku neu unter LowBatLimitPozOn fällt.

                    Hintergrund: ich wollte damit morgens bei ausreichender Sonnenenergie die Leistung kontrolliert schon früher freigeben.

                    ich denke das ist normal, wenn die batterie dann schon im low-bat modus ist. es muss dann lowBatLimitPozOff erreicht werden damit der modus wieder verlassen wird. es sind ja nur die Schaltschwellen. du könntest also auch lowBatLimitPozOff kurz ändern um zu erreichen das er sofort umschaltet

                    1 Reply Last reply
                    0
                    • K Kay Wurl

                      @waly_de
                      Vielen Dank erstmal für Deine Arbeit^^.
                      Script läuft mit ein paar Änderungen sehr gut.

                      Ich habe battPozOn auf 0 und battPozOff auf 100 gesetzt, so dass als erstes immer die Delta 2 geladen wird (sind bei Tibber, das ist es mittags am billigsten).

                      Die D2 kann ja nur 600W am Eingang. Heute zB. waren per Solar 740W möglich. Der PS schickt 600W zur D2 und der Rest verpufft. Kann man dem PS irgendwie sagen, wenn Solar mehr als 600W, dann schicke die Differenz stur ins Netz?

                      Noch eine Frage. Kann man das zeitlich steuern? Für mich wäre perfekt, bis 10:00 Uhr Einspeisepriorisierung, von 10:00 Uhr bis 18:00 Uhr Prio aufs Akku laden und ab 18:00 Uhr, bis der PS aus geht, wieder Prio auf die Einspeisung ins Netz.

                      Danke Danke Danke^^

                      LG

                      W Offline
                      W Offline
                      Waly_de
                      wrote on last edited by Waly_de
                      #1233

                      @kay-wurl sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

                      @waly_de
                      Vielen Dank erstmal für Deine Arbeit^^.
                      Script läuft mit ein paar Änderungen sehr gut.

                      Ich habe battPozOn auf 0 und battPozOff auf 100 gesetzt, so dass als erstes immer die Delta 2 geladen wird (sind bei Tibber, das ist es mittags am billigsten).

                      Die D2 kann ja nur 600W am Eingang. Heute zB. waren per Solar 740W möglich. Der PS schickt 600W zur D2 und der Rest verpufft. Kann man dem PS irgendwie sagen, wenn Solar mehr als 600W, dann schicke die Differenz stur ins Netz?

                      Noch eine Frage. Kann man das zeitlich steuern? Für mich wäre perfekt, bis 10:00 Uhr Einspeisepriorisierung, von 10:00 Uhr bis 18:00 Uhr Prio aufs Akku laden und ab 18:00 Uhr, bis der PS aus geht, wieder Prio auf die Einspeisung ins Netz.

                      Danke Danke Danke^^

                      LG

                      Diese Konfiguration ist nicht sinnvoll. Das Skript regelt so gar nichts, sondern stellt ab 0 % Batterie schon auf Batterieprioritätsmodus. Im normalen Regelmodus macht das Skript genau das, was du willst. Es stellt über 'Zusatzpower' die Leistung langsam höher, wenn 600 W in die Batterie gehen.

                      Eine Zeitsteuerung ist über externe Skripte möglich. Es gibt dazu Beispiele in diesem Thread

                      1 Reply Last reply
                      0
                      • W Waly_de

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

                        @gooflo Hallo und danke für die Rückmeldung.

                        Leider ist es bei mir so (aktuell mit einer Powerstream), dass wenn der Akku voll ist, die maximal mögliche PV-Leistung ins Stromnetz eingespeist wird. Das würde ich gerne verhindern und da sehe ich keine Möglichkeit für 😞

                        Das ist so gewollt, warum sollte man wenn die Speicher voll sind und mehr Energie zur Verfügung steht als gebraucht wird diese nicht der Allgemeinheit zur Verfügung stellen? Wir wollen doch alle den Planeten retten. Ausserdem ist das herunterregeln der PV leistung auch nicht gut für die Hardware.

                        Warum Nulleinspeisung keine gute Idee ist:
                        https://www.youtube.com/watch?v=wxP5uMdtMmk

                        V Offline
                        V Offline
                        vanessa88
                        wrote on last edited by
                        #1234

                        @waly_de Den Planeten wollen wir alle mitretten. Allerdings wäre die Einstellmöglichkeit, wieviel Leistung ich letztlich einspeisen will ein tolles feature. Ich hab zwei Ecoflow PS und es kommt vor, dass dann mehr als 600W eingespeist würden, was nicht sein soll.

                        G W 2 Replies Last reply
                        0
                        • V vanessa88

                          @waly_de Den Planeten wollen wir alle mitretten. Allerdings wäre die Einstellmöglichkeit, wieviel Leistung ich letztlich einspeisen will ein tolles feature. Ich hab zwei Ecoflow PS und es kommt vor, dass dann mehr als 600W eingespeist würden, was nicht sein soll.

                          G Offline
                          G Offline
                          gooflo
                          wrote on last edited by
                          #1235

                          @vanessa88 das kommt dann allerdings auch vor bevor die Batterien voll sind, zumindest kurzzeitig, wenn der Verbrauch z.B. von 2kW auf 0,5 kW runtergeht, dann speisen die zwei PS 1200W oder 1600W ein und abhängig von den Einstellungen für die Regelung dauert es ein paar Sekunden, bis auf 500W runtergeregelt wird.

                          Was Du willst könnte man vermutlich einfach einbauen, indem man in der SetBasePower() wenn die Batterie über battPozOn ist statt "GlobalObj[asn].OldNewValue = (Math.floor(foundItem.MaxPower))" (hier werden die 600 oder 800W gesetzt für maximale Einspeisung) einen eigenen Konfigurationswert setzt, z.B. 300W oder 400W. Test ich evtl. mal bei Gelegenheit.

                          1 Reply Last reply
                          0
                          • W Waly_de

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

                            @waly_de hatte gehofft bei der neuen Skriptversion, dass der AC Ladeshelly bei der Überschussladung abgeschaltet wird, wenn die DP voll geladen ist - wäre bei den Änderungen mit dabei 😞

                            Meine DP hat mit 99% die obere Ladegrenze erreicht und der Shelly DP Load bleibt weiterhin eingeschaltet. Wäre schön, wenn der dann ausginge, um nicht weiter Strom auf der Leitung bzw. am DP AC Ladeeingang permanent zu haben.

                            Bildschirmfoto 2024-04-25 um 14.50.44.png

                            ExcessChargeBatSocMax: 95, // Batterieladestand muss <= sein damit die Überschussladung gestartet wird
                            ExcessChargeBatSocOff: 100, // Batterieladestand bei dem die Überschussladung abgeschaltet wird

                            hast du das angepasst? wenn 100 % nicht erreicht wird, wird das Skript auch nicht abschalten. Stell es also auf 99.

                            A Offline
                            A Offline
                            Accu
                            wrote on last edited by
                            #1236

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

                            ExcessChargeBatSocMax

                            guter Hinweis - hatte ich tatsächlich noch auf 100%. Habs geändert und werde es beobachten. Vielen Dank

                            1 Reply Last reply
                            0
                            • V vanessa88

                              @waly_de Den Planeten wollen wir alle mitretten. Allerdings wäre die Einstellmöglichkeit, wieviel Leistung ich letztlich einspeisen will ein tolles feature. Ich hab zwei Ecoflow PS und es kommt vor, dass dann mehr als 600W eingespeist würden, was nicht sein soll.

                              W Offline
                              W Offline
                              Waly_de
                              wrote on last edited by
                              #1237

                              @vanessa88 mehrere Möglichkeiten, alle ungetestet:

                              {
                                          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: 150,                           // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist
                                      },
                                     
                              

                              A)

                              MaxPower: 300
                              Zusatzpower_Offset: -300,                             // Zusatzpower startet ab einer Batterieladeleistung von MaxPower - Zusatzpower_Offset
                              

                              sollte die Eispeiseleistung auf 300 W begrenzen. Erst bei mehr als 600W startet Zusatzpower.
                              Soll Zusatzpower nicht starten:

                              Zusatzpower_Offset: -1000
                              

                              B)

                                          lowBatLimitPozOn: 100, lowBatLimitPozOff: 101, // Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf 
                                          lowBatLimit: 300,                           // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist
                              
                              

                              Lowbatlimit ist immer eingeschaltet und begrenzt die Einspeisung auf 300W

                              C)

                                          battPozOn: 110, battPozOff: 105,              // Wenn die Batterie bei battPozOn ist, Einspeisung auf MaxPower. Bei BattPozOff Normalbetrieb
                              
                              

                              Das Skript regelt einfach weiter nur den Bedarf, auch wenn die Batterie voll ist.

                              V 1 Reply Last reply
                              0
                              • W Waly_de

                                @vanessa88 mehrere Möglichkeiten, alle ungetestet:

                                {
                                            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: 150,                           // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist
                                        },
                                       
                                

                                A)

                                MaxPower: 300
                                Zusatzpower_Offset: -300,                             // Zusatzpower startet ab einer Batterieladeleistung von MaxPower - Zusatzpower_Offset
                                

                                sollte die Eispeiseleistung auf 300 W begrenzen. Erst bei mehr als 600W startet Zusatzpower.
                                Soll Zusatzpower nicht starten:

                                Zusatzpower_Offset: -1000
                                

                                B)

                                            lowBatLimitPozOn: 100, lowBatLimitPozOff: 101, // Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf 
                                            lowBatLimit: 300,                           // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist
                                
                                

                                Lowbatlimit ist immer eingeschaltet und begrenzt die Einspeisung auf 300W

                                C)

                                            battPozOn: 110, battPozOff: 105,              // Wenn die Batterie bei battPozOn ist, Einspeisung auf MaxPower. Bei BattPozOff Normalbetrieb
                                
                                

                                Das Skript regelt einfach weiter nur den Bedarf, auch wenn die Batterie voll ist.

                                V Offline
                                V Offline
                                vanessa88
                                wrote on last edited by
                                #1238

                                @waly_de Super vielen Dank für die Hilfe. Ich probiere das mal aus und poste die Ergebnisse. Leider heute Regen hier 😞

                                1 Reply Last reply
                                0
                                • P Ponti92

                                  Hi @Waly_de
                                  Leider funktioniert das noch nicht so ganz mit der zusatzpower, wenn anschließend die Grundlast wieder höher wird.
                                  Ich habe hier zwei Powerstreams und einer ist in die zusatzpower gegangen bevor die Hauslast hoch ging.
                                  Dann ging der hausverbrauch hoch, jedoch hat der zweite PS die zusatzpower nicht verlassen.

                                  Der erste PS war nicht im Zusatzpower Modus und konnte deshalb mehr einspeisen:

                                  IMG_4055.png

                                  P Offline
                                  P Offline
                                  Ponti92
                                  wrote on last edited by Ponti92
                                  #1239

                                  @Waly_de PS: Der Beitrag ist wohl untergegangen.. Jedenfalls klappt die Umstellung von Zusatzpower in den normalen Modus noch nicht richtig.

                                  Das Szenario war wie folgt:
                                  PV Leistung > 600W; Hausbedarf = 0W, da zweite PV (Hoymiles) Grundlast abdeckt; -> Zusatzpowermodus ON, sodass über den Hausbedarf noch zusätzlich eingespeist wurde.
                                  Diese Leistung wird dann mit der Excess charging an die D2M geleitet. (Ab ca 150W Überschuss)

                                  Jetzt schalte ich z.b. den Trockner an, dann habe ich auf einmal einen Hausbedarf von zusätzlichen 500W, die noch zur bestehenden PV (Hoymiles) benötigt wird.

                                  Dann müsste das Skript das erkennen und die Zusatzpower ausschalten und in den normalen Modus wechseln, jedoch bleibt es dann im Zusatzpower modus und speichert lieber die PV Leistung anstatt sie direkt abzugeben.
                                  Erst wenn die PV Leistung wieder unter 600W geht, dann geht das Skrript wieder in den normalen Modus und speist dann die geforderte Leistung ein.

                                  Wenn der Trockner aber vor Erreichen der 600W eingeschaltet wird, dann geht das Skript nicht in den Zusatzpowermodus, so wie es auch gewollt ist.

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

                                  Hi @Waly_de
                                  Leider funktioniert das noch nicht so ganz mit der zusatzpower, wenn anschließend die Grundlast wieder höher wird.
                                  Ich habe hier zwei Powerstreams und einer ist in die zusatzpower gegangen bevor die Hauslast hoch ging.
                                  Dann ging der hausverbrauch hoch, jedoch hat der zweite PS die zusatzpower nicht verlassen.

                                  Der erste PS war nicht im Zusatzpower Modus und konnte deshalb mehr einspeisen:

                                  IMG_4055.png

                                  W 2 Replies Last reply
                                  0
                                  • J Offline
                                    J Offline
                                    joxxxxx74
                                    wrote on last edited by
                                    #1240

                                    Erst mal ein dickes fettes Danke für das Script! Hätte nicht erwartet, dass das sooo gut funktioniert!!!

                                    Eine Frage noch zur Verwendung..

                                    Ich möchte damit gerne 2 Häuser (2*Powerstream) steuern. Kann ich das alles in ein Script packen, oder benötigte ich dafür eine 2te IObroker Instanz?

                                    W 1 Reply Last reply
                                    0
                                    • P Ponti92

                                      @Waly_de PS: Der Beitrag ist wohl untergegangen.. Jedenfalls klappt die Umstellung von Zusatzpower in den normalen Modus noch nicht richtig.

                                      Das Szenario war wie folgt:
                                      PV Leistung > 600W; Hausbedarf = 0W, da zweite PV (Hoymiles) Grundlast abdeckt; -> Zusatzpowermodus ON, sodass über den Hausbedarf noch zusätzlich eingespeist wurde.
                                      Diese Leistung wird dann mit der Excess charging an die D2M geleitet. (Ab ca 150W Überschuss)

                                      Jetzt schalte ich z.b. den Trockner an, dann habe ich auf einmal einen Hausbedarf von zusätzlichen 500W, die noch zur bestehenden PV (Hoymiles) benötigt wird.

                                      Dann müsste das Skript das erkennen und die Zusatzpower ausschalten und in den normalen Modus wechseln, jedoch bleibt es dann im Zusatzpower modus und speichert lieber die PV Leistung anstatt sie direkt abzugeben.
                                      Erst wenn die PV Leistung wieder unter 600W geht, dann geht das Skrript wieder in den normalen Modus und speist dann die geforderte Leistung ein.

                                      Wenn der Trockner aber vor Erreichen der 600W eingeschaltet wird, dann geht das Skript nicht in den Zusatzpowermodus, so wie es auch gewollt ist.

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

                                      Hi @Waly_de
                                      Leider funktioniert das noch nicht so ganz mit der zusatzpower, wenn anschließend die Grundlast wieder höher wird.
                                      Ich habe hier zwei Powerstreams und einer ist in die zusatzpower gegangen bevor die Hauslast hoch ging.
                                      Dann ging der hausverbrauch hoch, jedoch hat der zweite PS die zusatzpower nicht verlassen.

                                      Der erste PS war nicht im Zusatzpower Modus und konnte deshalb mehr einspeisen:

                                      IMG_4055.png

                                      W Offline
                                      W Offline
                                      Waly_de
                                      wrote on last edited by
                                      #1241

                                      @ponti92 das gucke ich mir bei Gelegenheit noch mal an. Ist nicht ganz so einfach.

                                      1 Reply Last reply
                                      0
                                      • J joxxxxx74

                                        Erst mal ein dickes fettes Danke für das Script! Hätte nicht erwartet, dass das sooo gut funktioniert!!!

                                        Eine Frage noch zur Verwendung..

                                        Ich möchte damit gerne 2 Häuser (2*Powerstream) steuern. Kann ich das alles in ein Script packen, oder benötigte ich dafür eine 2te IObroker Instanz?

                                        W Offline
                                        W Offline
                                        Waly_de
                                        wrote on last edited by Waly_de
                                        #1242

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

                                        Erst mal ein dickes fettes Danke für das Script! Hätte nicht erwartet, dass das sooo gut funktioniert!!!

                                        Eine Frage noch zur Verwendung..

                                        Ich möchte damit gerne 2 Häuser (2*Powerstream) steuern. Kann ich das alles in ein Script packen, oder benötigte ich dafür eine 2te IObroker Instanz?

                                        Bei zwei Häusern gehe ich davon aus, dass Du auch zwei separate Stromzähler hast.
                                        Daher kannst du zwei Skripte in der gleichen IObroker Instanz laufen lassen und in jedem je einen Stromzähler konfigurieren. (statesPrefix auch anpassen um die Objekte getrennt zu halten)

                                        Haben beide Häuser einen Stromzähler, kannst Du ganz normal mehrere PS mit einem Skript steuern.

                                        1 Reply Last reply
                                        1
                                        • P Ponti92

                                          @Waly_de PS: Der Beitrag ist wohl untergegangen.. Jedenfalls klappt die Umstellung von Zusatzpower in den normalen Modus noch nicht richtig.

                                          Das Szenario war wie folgt:
                                          PV Leistung > 600W; Hausbedarf = 0W, da zweite PV (Hoymiles) Grundlast abdeckt; -> Zusatzpowermodus ON, sodass über den Hausbedarf noch zusätzlich eingespeist wurde.
                                          Diese Leistung wird dann mit der Excess charging an die D2M geleitet. (Ab ca 150W Überschuss)

                                          Jetzt schalte ich z.b. den Trockner an, dann habe ich auf einmal einen Hausbedarf von zusätzlichen 500W, die noch zur bestehenden PV (Hoymiles) benötigt wird.

                                          Dann müsste das Skript das erkennen und die Zusatzpower ausschalten und in den normalen Modus wechseln, jedoch bleibt es dann im Zusatzpower modus und speichert lieber die PV Leistung anstatt sie direkt abzugeben.
                                          Erst wenn die PV Leistung wieder unter 600W geht, dann geht das Skrript wieder in den normalen Modus und speist dann die geforderte Leistung ein.

                                          Wenn der Trockner aber vor Erreichen der 600W eingeschaltet wird, dann geht das Skript nicht in den Zusatzpowermodus, so wie es auch gewollt ist.

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

                                          Hi @Waly_de
                                          Leider funktioniert das noch nicht so ganz mit der zusatzpower, wenn anschließend die Grundlast wieder höher wird.
                                          Ich habe hier zwei Powerstreams und einer ist in die zusatzpower gegangen bevor die Hauslast hoch ging.
                                          Dann ging der hausverbrauch hoch, jedoch hat der zweite PS die zusatzpower nicht verlassen.

                                          Der erste PS war nicht im Zusatzpower Modus und konnte deshalb mehr einspeisen:

                                          IMG_4055.png

                                          W Offline
                                          W Offline
                                          Waly_de
                                          wrote on last edited by Waly_de
                                          #1243

                                          @ponti92 kannst du mir bitte den Gefallen tun und in der beschriebenen Situation einmal mlog aktivieren?
                                          Ich benötige die mlog Protokollausgaben zum Zeitpunkt, wenn die PV Leistung größer 600 W ist der Trockner nur aber noch aus.

                                          Und wenn dann der Trockner an ist und das Skript den Zusatzpowermodus nicht verlässt.

                                          Ich hab hier keine Möglichkeiten das zu simulieren.

                                          P 2 Replies Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          56

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe