Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. ecoflow-connector-Script zur dynamischen Leistungsanpassung

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

ecoflow-connector-Script zur dynamischen Leistungsanpassung

Geplant Angeheftet Gesperrt Verschoben JavaScript
1.6k Beiträge 127 Kommentatoren 742.8k Aufrufe 127 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A aherby

    @ogerle Da bin ich mal gespannt was du berichtest oder wie du es gemacht hast.

    O Offline
    O Offline
    Ogerle
    schrieb am zuletzt editiert von
    #238

    @aherby
    Habe noch keine Ahnung.
    Kein Kommentar klingt aber so, also ob es nicht gehen würde.

    A 1 Antwort Letzte Antwort
    0
    • O Ogerle

      @aherby
      Habe noch keine Ahnung.
      Kein Kommentar klingt aber so, also ob es nicht gehen würde.

      A Offline
      A Offline
      aherby
      schrieb am zuletzt editiert von
      #239

      @ogerle nein alles gut funktioniert, ich habe es nur scheinbar nicht zum laufen bekommen oder bin ungeduldig.
      Denke an der entsprechenden Stelle im Script deinen Momentanverbauch als Objekt eingeben und schon wäre es ok.
      Ich habe noch vom Zähler Klammen im Objektnamen und so daher muss ich die sicher ersteinmal entfernen.

      1 Antwort Letzte Antwort
      0
      • B Offline
        B Offline
        bert200000
        schrieb am zuletzt editiert von bert200000
        #240

        Hallo, habe das Skript installiert und bekomme auch die Daten meiner Delta 2 aber ich kann über iobroker nichts ändern also wenn ich den Wert cfgChgWatts z. B. auf 300 ändere springt er kurz darauf wieder auf den ursprünglichen Wert zurück, jemand eine Idee was das Problem sein könnte oder geht das grundsätzlich nicht. Will eigentlich nur die Ladungsleistung der Delta 2 ändern können einen Powerstream habe ich nicht.
        Habe auch immer wieder Fehlermeldungen im Log sobald ich das Skript starte.
        https://pastebin.com/esp3yaqb

        1 Antwort Letzte Antwort
        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)
          S Offline
          S Offline
          sirdir
          schrieb am zuletzt editiert von sirdir
          #241

          @waly_de Hallo lieber Waly_de. Ich hab ne ältere Vesion deines Scripts so angepasst, dass es das enspeist, was meine Shelly und andere Sensoren melden, abzüglich dessen, was meine weiteren Solaranlagen noch liefern.
          Dein neues Script möchte ich eigentlich nicht wieder komplett anpassen, darum hab ich ein zweites Script geschrieben, das den 'Hausverbrauchssensor' simuliert, den dein Script erwartet.

          Es funktioniert nun anscheinend mehr oder weniger. Wobei ich einiges nicht so ganz verstehe. Mein Sensor meldet einen Verbrauch von sagen wir 100W. Also müssten doch 100W mehr eingespeist werden. Passiert aber nicht (immer). Gerade werden 747W eingespeist, 900W werden angefordert, also meldet mein Sensor 153W Verbrauch, dementsprechend sollte die Einspeisung auf 900W hoch gehen (was natürlich nicht geht, also 800W. Es bleibt aber alles bei mehr oder weniger 747W (also *.setAC steht bei 7470). Vorhin hing der Wert lange bei unter 600W rum, obwohl auch schon über 600W angefordert wurden. Mal stimmt alles für eine Weile (ich melde dann einen Verbrauch nahe 0), oft bleibt der Wert der eingespeist wird über Minuten (mehr oder weniger) Identisch, es wird einfach nicht auf den von mir gemeldeten Wert reagiert. Was übersehe ich? Was hat es mit diesem tiefsten Verbrauch auf sich, ist der nur kosmetisch oder wird der irgendwie einbezogen? (Ich habe das neue Script noch nicht komplett analysiert).

          W 1 Antwort Letzte Antwort
          0
          • S sirdir

            @waly_de Hallo lieber Waly_de. Ich hab ne ältere Vesion deines Scripts so angepasst, dass es das enspeist, was meine Shelly und andere Sensoren melden, abzüglich dessen, was meine weiteren Solaranlagen noch liefern.
            Dein neues Script möchte ich eigentlich nicht wieder komplett anpassen, darum hab ich ein zweites Script geschrieben, das den 'Hausverbrauchssensor' simuliert, den dein Script erwartet.

            Es funktioniert nun anscheinend mehr oder weniger. Wobei ich einiges nicht so ganz verstehe. Mein Sensor meldet einen Verbrauch von sagen wir 100W. Also müssten doch 100W mehr eingespeist werden. Passiert aber nicht (immer). Gerade werden 747W eingespeist, 900W werden angefordert, also meldet mein Sensor 153W Verbrauch, dementsprechend sollte die Einspeisung auf 900W hoch gehen (was natürlich nicht geht, also 800W. Es bleibt aber alles bei mehr oder weniger 747W (also *.setAC steht bei 7470). Vorhin hing der Wert lange bei unter 600W rum, obwohl auch schon über 600W angefordert wurden. Mal stimmt alles für eine Weile (ich melde dann einen Verbrauch nahe 0), oft bleibt der Wert der eingespeist wird über Minuten (mehr oder weniger) Identisch, es wird einfach nicht auf den von mir gemeldeten Wert reagiert. Was übersehe ich? Was hat es mit diesem tiefsten Verbrauch auf sich, ist der nur kosmetisch oder wird der irgendwie einbezogen? (Ich habe das neue Script noch nicht komplett analysiert).

            W Offline
            W Offline
            Waly_de
            schrieb am zuletzt editiert von
            #242

            @sirdir
            Vorab: ich bin im Urlaub und kann hier nicht viel machen. Ab nächster Woche geht vermutlich wieder mehr.

            Ein paar Dinge die ich quer gelesen habe kann ich beantworten:

            • Es muss kein MQTT-Adapter installiert werden. Erforderlich ist nur Javascript und History
            • Um MQTT und Protobuf zu installieren reicht der Eintrag in den Settings des Javascript-Adapters (siehe Anleitung und Screenshot)
            • Das Smart-Meter sollte seinen Echtzeitverbrauch in Watt rein numerisch (also besser ohne W) in einem Object von IO-Broker zur Verfügung stellen. Auch für KNX oder MODBUS gibt es meines Wissens IOBroker-Adapter.
            • Um einen Delta 2 zu steuern kann man nicht einfach Die eingelesenen Werte überschreiben. Das ist alles Read-Only. Zum Setzten von Werten legt das Script eigene Objekte an. Wenn das für Dein Gerät schon eingerichtet ist, werden die "Writeables" angelegt, wenn das Script läuft und du dann über die App die entsprechenden Werte änderst. Ich weiss das das jemand hier schon mit der Delta 2 gemacht hat. U.U da ich selbst keine Habe, kann ich das nicht 100% verifizieren. Siehe unter Changelog im Script:
              Ob diese States auch so bei anderen Deltas funktionieren, kann ich nicht sagen. Wenn nicht, solltet ihr im Log einen Eintrag finden: "Unbekannter Set Befehl:".
              Wenn ich diesen Eintrag mit einer kurzen Beschreibung erhalte, was es ist, kann ich es auch einbauen.
              Die States werden hier angelegt: 0_userdata.0.ecoflow.app_XXXXXXXXXXXXXXXXXXX_XXXXXXXXXXXXXXX_thing_property_set.writeables
              @sirdir
              Sieh Dir noch mal die Erklärung zur Funktionsweise an. Das Script arbeitet nicht in Echtzeit. Es nimmt den niedrigsten Verbrauchswert aus dem Eingestellten Zeitraum als Grundlage. Ausserdem stellt es nicht auf 0 sondern auf den Eingestellten Offsetwert ein. Der liegt standardmäßig bei 50 Watt. Kann konfiguriert werden.

            ich hoffe das hilft schon mal etwas weiter :-)

            B S 2 Antworten Letzte Antwort
            0
            • A Offline
              A Offline
              Accu
              schrieb am zuletzt editiert von
              #243

              hi, habe das Skript mal in meinem ioBroker installiert. Leider bekomme ich folgenden Fehler:
              Bildschirmfoto 2023-08-22 um 12.24.22.png

              bin kein skriptexperte. Weiß jemand was hier den Fehler auslöst?

              Ich habe eine Delta Pro und einen Powerstream. Unter User Data finde ich zwar die EF Verzeichnisse in den Objekten aber auch 1000de von Werten.
              Wo finde ich folgende Werte die mich interessieren:
              Wattzahl am Ausgang
              Wattzahl am Eingang
              und ob der AC der DP eingeschalten ist oder nicht.

              A 2 Antworten Letzte Antwort
              0
              • W Waly_de

                @sirdir
                Vorab: ich bin im Urlaub und kann hier nicht viel machen. Ab nächster Woche geht vermutlich wieder mehr.

                Ein paar Dinge die ich quer gelesen habe kann ich beantworten:

                • Es muss kein MQTT-Adapter installiert werden. Erforderlich ist nur Javascript und History
                • Um MQTT und Protobuf zu installieren reicht der Eintrag in den Settings des Javascript-Adapters (siehe Anleitung und Screenshot)
                • Das Smart-Meter sollte seinen Echtzeitverbrauch in Watt rein numerisch (also besser ohne W) in einem Object von IO-Broker zur Verfügung stellen. Auch für KNX oder MODBUS gibt es meines Wissens IOBroker-Adapter.
                • Um einen Delta 2 zu steuern kann man nicht einfach Die eingelesenen Werte überschreiben. Das ist alles Read-Only. Zum Setzten von Werten legt das Script eigene Objekte an. Wenn das für Dein Gerät schon eingerichtet ist, werden die "Writeables" angelegt, wenn das Script läuft und du dann über die App die entsprechenden Werte änderst. Ich weiss das das jemand hier schon mit der Delta 2 gemacht hat. U.U da ich selbst keine Habe, kann ich das nicht 100% verifizieren. Siehe unter Changelog im Script:
                  Ob diese States auch so bei anderen Deltas funktionieren, kann ich nicht sagen. Wenn nicht, solltet ihr im Log einen Eintrag finden: "Unbekannter Set Befehl:".
                  Wenn ich diesen Eintrag mit einer kurzen Beschreibung erhalte, was es ist, kann ich es auch einbauen.
                  Die States werden hier angelegt: 0_userdata.0.ecoflow.app_XXXXXXXXXXXXXXXXXXX_XXXXXXXXXXXXXXX_thing_property_set.writeables
                  @sirdir
                  Sieh Dir noch mal die Erklärung zur Funktionsweise an. Das Script arbeitet nicht in Echtzeit. Es nimmt den niedrigsten Verbrauchswert aus dem Eingestellten Zeitraum als Grundlage. Ausserdem stellt es nicht auf 0 sondern auf den Eingestellten Offsetwert ein. Der liegt standardmäßig bei 50 Watt. Kann konfiguriert werden.

                ich hoffe das hilft schon mal etwas weiter :-)

                B Offline
                B Offline
                bert200000
                schrieb am zuletzt editiert von
                #244

                @waly_de
                Danke für die schnelle Rückmeldung, habe unter writeables einen Wert mit dem Namen acChgCfg_D2 gefunden wenn ich den Wert ändere verändert sich auch die Ladegeschwindigkeit, danke für deine Hilfe und schönen Urlaub noch.

                1 Antwort Letzte Antwort
                0
                • B Offline
                  B Offline
                  Biased
                  schrieb am zuletzt editiert von Biased
                  #245

                  Thanks @Waly_de for your work.
                  Based on your file I developed a node.js application https://github.com/bogdancs92/ecoflow-powerstream-nodejs (cause I don't have a iotbroker).

                  It changes the PowerStream output value. It works.

                  and now I understand also how to change the mode:

                  function updateMode(_value) {
                  const lastPart = "setPrio";
                  const matchedEntry = writeables.find((entry) => entry.name === lastPart);
                  if (matchedEntry) {
                  if (matchedEntry.Typ == "PS") {
                  updatedMuster = JSON.parse(JSON.stringify(musterSetAC));
                  if (Number(obj.state.val) <= -1) {
                  delete updatedMuster.item.meta;
                  delete updatedMuster.item.ValByte;
                  }
                  else {
                  updatedMuster.header.pdata[matchedEntry.ValueName] = Number(_value)
                  updatedMuster.header.dataLen = getVarintByteSize(Number(_value))
                  }
                  updatedMuster.header.cmdId = matchedEntry.id
                  updatedMuster.header.cmdFunc = matchedEntry.cmdFunc || 20
                  updatedMuster.header.seq = Date.now()
                  updatedMuster.header.deviceSn = asn
                  //log(JSON.stringify(updatedMuster))
                  SendProto(JSON.stringify(updatedMuster), '/app/' + mqttDaten.UserID + '/' + asn + '/thing/property/set');
                  }
                  }
                  }

                  Thanks and have a nice day

                  1 Antwort Letzte Antwort
                  1
                  • W Waly_de

                    @sirdir
                    Vorab: ich bin im Urlaub und kann hier nicht viel machen. Ab nächster Woche geht vermutlich wieder mehr.

                    Ein paar Dinge die ich quer gelesen habe kann ich beantworten:

                    • Es muss kein MQTT-Adapter installiert werden. Erforderlich ist nur Javascript und History
                    • Um MQTT und Protobuf zu installieren reicht der Eintrag in den Settings des Javascript-Adapters (siehe Anleitung und Screenshot)
                    • Das Smart-Meter sollte seinen Echtzeitverbrauch in Watt rein numerisch (also besser ohne W) in einem Object von IO-Broker zur Verfügung stellen. Auch für KNX oder MODBUS gibt es meines Wissens IOBroker-Adapter.
                    • Um einen Delta 2 zu steuern kann man nicht einfach Die eingelesenen Werte überschreiben. Das ist alles Read-Only. Zum Setzten von Werten legt das Script eigene Objekte an. Wenn das für Dein Gerät schon eingerichtet ist, werden die "Writeables" angelegt, wenn das Script läuft und du dann über die App die entsprechenden Werte änderst. Ich weiss das das jemand hier schon mit der Delta 2 gemacht hat. U.U da ich selbst keine Habe, kann ich das nicht 100% verifizieren. Siehe unter Changelog im Script:
                      Ob diese States auch so bei anderen Deltas funktionieren, kann ich nicht sagen. Wenn nicht, solltet ihr im Log einen Eintrag finden: "Unbekannter Set Befehl:".
                      Wenn ich diesen Eintrag mit einer kurzen Beschreibung erhalte, was es ist, kann ich es auch einbauen.
                      Die States werden hier angelegt: 0_userdata.0.ecoflow.app_XXXXXXXXXXXXXXXXXXX_XXXXXXXXXXXXXXX_thing_property_set.writeables
                      @sirdir
                      Sieh Dir noch mal die Erklärung zur Funktionsweise an. Das Script arbeitet nicht in Echtzeit. Es nimmt den niedrigsten Verbrauchswert aus dem Eingestellten Zeitraum als Grundlage. Ausserdem stellt es nicht auf 0 sondern auf den Eingestellten Offsetwert ein. Der liegt standardmäßig bei 50 Watt. Kann konfiguriert werden.

                    ich hoffe das hilft schon mal etwas weiter :-)

                    S Offline
                    S Offline
                    sirdir
                    schrieb am zuletzt editiert von
                    #246

                    @waly_de Missverständnis. Ich will nicht mit der Batterie oder dem Powerstream kommunizieren. Ich simuliere nur den ‘Hausverbrauchssensor’ (objekt in iobroker). Von wegen nicht Echtzeit, ich glaub es war auf 15 Sekunden eingestellt? Ich hab auf 5 Reduziert, aber ich rede hier von Minuten die vergehen (manchmal?) bis der richtige Wert eingestellt wird.

                    W 1 Antwort Letzte Antwort
                    0
                    • S sirdir

                      @waly_de Missverständnis. Ich will nicht mit der Batterie oder dem Powerstream kommunizieren. Ich simuliere nur den ‘Hausverbrauchssensor’ (objekt in iobroker). Von wegen nicht Echtzeit, ich glaub es war auf 15 Sekunden eingestellt? Ich hab auf 5 Reduziert, aber ich rede hier von Minuten die vergehen (manchmal?) bis der richtige Wert eingestellt wird.

                      W Offline
                      W Offline
                      Waly_de
                      schrieb am zuletzt editiert von Waly_de
                      #247

                      @sirdir
                      Nein es sind standardmäßig 3 Minuten eingestellt. Früher waren es einmal 5 Minuten.:
                      Aus den Einstellungen:

                      MinValueMin: 3,  // Der Zeitraum in Minuten, aus dem der niedrigste Gesamtverbrauchswert geholt werden soll 
                      

                      Außerdem kann doch bestimmt werden, ob die niedrigste Wert oder der Durchschnittswert für die eingestellten Zeit berücksichtigt werden soll.

                      S 1 Antwort Letzte Antwort
                      0
                      • M Offline
                        M Offline
                        mattenausohz
                        schrieb am zuletzt editiert von
                        #248

                        @waly_de Bei mir reconnected das Skript gerade jede Minute.. Haben die wieder Probleme?

                        1 Antwort Letzte Antwort
                        0
                        • W Waly_de

                          @sirdir
                          Nein es sind standardmäßig 3 Minuten eingestellt. Früher waren es einmal 5 Minuten.:
                          Aus den Einstellungen:

                          MinValueMin: 3,  // Der Zeitraum in Minuten, aus dem der niedrigste Gesamtverbrauchswert geholt werden soll 
                          

                          Außerdem kann doch bestimmt werden, ob die niedrigste Wert oder der Durchschnittswert für die eingestellten Zeit berücksichtigt werden soll.

                          S Offline
                          S Offline
                          sirdir
                          schrieb am zuletzt editiert von
                          #249

                          @waly_de Ja das hab ich schon gesehen, aber offensichtlich nicht verstanden was das bedeutet. Alle 3 Minuten wird auf den niedrigsten Wert gestellt oder den Durchschnittswert? Ich verstehe diese Herangehensweise nicht. Warum speist du nicht quasi in Echtzeit ein, was gefordert wird? Das ist doch eigentlich, was man von einem Solarsystem erwartet? Naja, am Ende bleib ich vielleicht einfacher bei meinem Script oder pass doch deines wieder an.

                          P 1 Antwort Letzte Antwort
                          0
                          • B Offline
                            B Offline
                            Biased
                            schrieb am zuletzt editiert von
                            #250

                            Hi
                            I am trying to activate the AC outoput for the D2MAX.
                            I tried to send a message with
                            { id: 0, name: 'dcOutCfg_D2', ValueName: 'enabled', Typ: 'D2', MT: 1 },
                            and it activates the USB port

                            so the D2Max receives the messages.

                            I didn't find a message for the AC so I tried to create one:
                            { id: 0, name: 'acOutCfg_D2', ValueName: 'enabled', Typ: 'D2', MT: 1 },

                            but it doesn't work....any idea ?

                            thanks

                            P 1 Antwort Letzte Antwort
                            0
                            • A Accu

                              hi, habe das Skript mal in meinem ioBroker installiert. Leider bekomme ich folgenden Fehler:
                              Bildschirmfoto 2023-08-22 um 12.24.22.png

                              bin kein skriptexperte. Weiß jemand was hier den Fehler auslöst?

                              Ich habe eine Delta Pro und einen Powerstream. Unter User Data finde ich zwar die EF Verzeichnisse in den Objekten aber auch 1000de von Werten.
                              Wo finde ich folgende Werte die mich interessieren:
                              Wattzahl am Ausgang
                              Wattzahl am Eingang
                              und ob der AC der DP eingeschalten ist oder nicht.

                              A Offline
                              A Offline
                              Accu
                              schrieb am zuletzt editiert von
                              #251

                              hat niemand eine Idee?

                              1 Antwort Letzte Antwort
                              0
                              • B Biased

                                Hi
                                I am trying to activate the AC outoput for the D2MAX.
                                I tried to send a message with
                                { id: 0, name: 'dcOutCfg_D2', ValueName: 'enabled', Typ: 'D2', MT: 1 },
                                and it activates the USB port

                                so the D2Max receives the messages.

                                I didn't find a message for the AC so I tried to create one:
                                { id: 0, name: 'acOutCfg_D2', ValueName: 'enabled', Typ: 'D2', MT: 1 },

                                but it doesn't work....any idea ?

                                thanks

                                P Offline
                                P Offline
                                Ponti92
                                schrieb am zuletzt editiert von
                                #252

                                @biased Try this one:

                                 { id: 0, name: 'acOutCfg_D2', ValueName: 'enabled', Typ: 'D2', MT: 3 },
                                
                                1 Antwort Letzte Antwort
                                1
                                • DaDue-maxD Offline
                                  DaDue-maxD Offline
                                  DaDue-max
                                  schrieb am zuletzt editiert von
                                  #253

                                  Powerstream nicht mehr mit Ecoflowserver verbunden
                                  Hintergrund: Betreibe einen Powerstream mit Delta 2 Max / Skript von @Waly_de auf 1.1.2 (super Job!!!)/ abonniert nur für Powerstream und Steuerung disabled / habe aufgrund einiger Besonderheiten meiner Heimanlage eine eigene Nulleinspeisung programmiert. Nutze aber die Daten der Powerstream und das Setzen von Werten für Einspeiseleistung der PS etc.

                                  Was passiert?
                                  Morgens läuft alles gut an, aber irgendwann im Laufe des Tages verliert die Powerstream ihre WLAN - Verbindung. In der App nur noch über Bluetooth zu erreichen. Dh. kein Update der Daten im iobroker und das Rausschreiben von Werten an die Powerstream gelingt natürlich auch nicht.
                                  Abhifle schafft für kurze Zeit ein Disconnect der Powerstream vom Netz (Verbindung zu Panels und Batterie bleibt bestehen). Dann ist die Powerstream wieder online, überträgt und empfängt Daten. Verbinde ich die PS wieder mit dem Netz, verliert sie nach ein paar Minuten wieder den Kontakt zum WLAN.

                                  Im Log findet sich in dann folgende Einträge:

                                  14:03:00.245	error	javascript.0 (3704815) script.js.common.Ecoflow_JS_main: Fehler beim Veröffentlichen der MQTT-Nachricht:
                                  14:03:01.477	info	javascript.0 (3704815) script.js.common.Ecoflow_JS_main: Verbunden mit dem Ecoflow MQTT-Broker
                                  
                                  

                                  Nach einigen weiteren Minuten verschwindet zwar die Fehlerzeile, jedoch wird ca. im Minuten Abstand

                                  14:09:32.337	info	javascript.0 (3704815) script.js.common.Ecoflow_JS_main: Verbunden mit dem Ecoflow MQTT-Broker
                                  

                                  weiter ausgegeben.
                                  Am nächsten Tag geht es wieder von vorne los...Irgendwie schräg. Eine Ahnung auf was das hindeuten kann?

                                  Es gibt ja einige Adaptoren wie z.B. Tuya/Smartlife, die haben Probleme, wenn man gleichzeitig über Cloud und MQTT direkt zugreift. Das ist hier aber nicht der Fall.

                                  Um einen Hinweis wäre ich dankbar.

                                  W F 2 Antworten Letzte Antwort
                                  0
                                  • S sirdir

                                    @waly_de Ja das hab ich schon gesehen, aber offensichtlich nicht verstanden was das bedeutet. Alle 3 Minuten wird auf den niedrigsten Wert gestellt oder den Durchschnittswert? Ich verstehe diese Herangehensweise nicht. Warum speist du nicht quasi in Echtzeit ein, was gefordert wird? Das ist doch eigentlich, was man von einem Solarsystem erwartet? Naja, am Ende bleib ich vielleicht einfacher bei meinem Script oder pass doch deines wieder an.

                                    P Offline
                                    P Offline
                                    Ponti92
                                    schrieb am zuletzt editiert von
                                    #254

                                    @sirdir Es wird soweit ich weiß alle 30s geregelt und dabei der niedrigste Wert der letzten 3 Minuten genommen. Das verhindert, dass z.B. kurzzeitige Leistungsspitzen einen Überschuss aus dem Akku ins Netz einspeisen.
                                    Alternativ kann man auch die Regelung auf den Durchschnittswert der letzten 3 Minuten hernehmen, was aber bei ständig wechselnden Lasten auch zu Fehlern führt und Strom unnötig verschenkt wird.

                                    Die Idee dahinter ist, dass man die unnötige verschenkte Menge an Energie minimiert und wirklich nur die Grundlast aus dem Akku einspeist, di ebenötigt wird. Dadurch, dass die Batterie meistens über Nacht eh leer wird, ist es nicht wichtig, ob sie ihre Energie 1-2 Stunden früher oder später ins Netz einspeist. Hauptsache du verschenkst nichts aus dem teurern Batteriespeicher und kannst alles daraus selbst nutzen.

                                    Stell dir vor, du betreibst einen Mixer mit 800W und genau in diesem Moment wird die Einspeisung geregelt - quasi in Echtzeit. Dann wird die Einspeiseleistung an die Powerstream weitergegeben, dass 800/600W benötigt werden. Bis diese das nun regelt und eingestellt hat, ist der Mixer wieder aus. D.h. du speist dann die vollen 600/800W ein, im schlimmsten Fall direkt aus dem Akku. Danach merkt das Skript, dass der Mixer wieder aus ist und regelt wieder auf die eigentliche Last, was aber auch wieder Zeit benötigt. D.h. du hast in dieser Zeit unnötig 600/800W eingespeist, die gar nicht benötigt wurden, da das System selbst so träge ist.

                                    S 1 Antwort Letzte Antwort
                                    1
                                    • A Accu

                                      hi, habe das Skript mal in meinem ioBroker installiert. Leider bekomme ich folgenden Fehler:
                                      Bildschirmfoto 2023-08-22 um 12.24.22.png

                                      bin kein skriptexperte. Weiß jemand was hier den Fehler auslöst?

                                      Ich habe eine Delta Pro und einen Powerstream. Unter User Data finde ich zwar die EF Verzeichnisse in den Objekten aber auch 1000de von Werten.
                                      Wo finde ich folgende Werte die mich interessieren:
                                      Wattzahl am Ausgang
                                      Wattzahl am Eingang
                                      und ob der AC der DP eingeschalten ist oder nicht.

                                      A Offline
                                      A Offline
                                      Accu
                                      schrieb am zuletzt editiert von
                                      #255

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

                                      hi, habe das Skript mal in meinem ioBroker installiert. Leider bekomme ich folgenden Fehler:
                                      Bildschirmfoto 2023-08-22 um 12.24.22.png

                                      bin kein skriptexperte. Weiß jemand was hier den Fehler auslöst?

                                      Ich habe eine Delta Pro und einen Powerstream. Unter User Data finde ich zwar die EF Verzeichnisse in den Objekten aber auch 1000de von Werten.
                                      Wo finde ich folgende Werte die mich interessieren:
                                      Wattzahl am Ausgang
                                      Wattzahl am Eingang
                                      und ob der AC der DP eingeschalten ist oder nicht.

                                      weiß ein Experte was die Fehler bedeuten?

                                      M 1 Antwort Letzte Antwort
                                      0
                                      • A Accu

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

                                        hi, habe das Skript mal in meinem ioBroker installiert. Leider bekomme ich folgenden Fehler:
                                        Bildschirmfoto 2023-08-22 um 12.24.22.png

                                        bin kein skriptexperte. Weiß jemand was hier den Fehler auslöst?

                                        Ich habe eine Delta Pro und einen Powerstream. Unter User Data finde ich zwar die EF Verzeichnisse in den Objekten aber auch 1000de von Werten.
                                        Wo finde ich folgende Werte die mich interessieren:
                                        Wattzahl am Ausgang
                                        Wattzahl am Eingang
                                        und ob der AC der DP eingeschalten ist oder nicht.

                                        weiß ein Experte was die Fehler bedeuten?

                                        M Offline
                                        M Offline
                                        mattenausohz
                                        schrieb am zuletzt editiert von
                                        #256

                                        @accu Hast Du ganz sicher alle auszufüllenden Daten eingetragen im Skript?

                                        A 1 Antwort Letzte Antwort
                                        0
                                        • M mattenausohz

                                          @accu Hast Du ganz sicher alle auszufüllenden Daten eingetragen im Skript?

                                          A Offline
                                          A Offline
                                          Accu
                                          schrieb am zuletzt editiert von
                                          #257

                                          @mattenausohz oh hatte tatsächlich meine Credentials vergessen :)
                                          jetzt schauts besser aus.
                                          Im Protokoll kommt jetzt das:

                                          script.js.common.Test_Skripte.EF_Werte_Auslesen: Unbekannter Delta2 Set Befehl: {"params":{"hour":14,"min":51,"sec":57,"day":24,"week":5,"month":8,"year":2023},"from":"iOS","lang":"de-de","id":"512344526","moduleSn":"DC83245345E7041280","moduleType":1,"operateType":"setRtcTime","version":"1.0"}
                                          

                                          wo finde ich im Objektbaum die Werte für:

                                          • Ausgangs Watt
                                          • Eingangs Watt (ich habe die PV direkt an der DP)
                                          • AC Ein oder AUS?
                                          M 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          661

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe