Skip to content
  • 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
  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.2k

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

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

ecoflow-connector-Script zur dynamischen Leistungsanpassung

Geplant Angeheftet Gesperrt Verschoben JavaScript
1.6k Beiträge 127 Kommentatoren 742.0k 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.
  • W Waly_de

    @umele hmmm guck noch mal, ob du es an der richtigen Stelle eingefügt hast. Es muss hinter der. Letzten }; der ConfigData Definition eingesetzt werden

    umeleU Offline
    umeleU Offline
    umele
    schrieb am zuletzt editiert von umele
    #577

    Hab ich - hier ist der Code bis zum Ende des neuen Codes von config-date bis zum Ende des neuen Codes:

    var ConfigData = {
        email: "xxxxxx@gmail.com",                             // Die App-Zugangsdaten von ecoFlow
        passwort: "yyyyyyyyyy",
        SmartmeterID: "sonoff.0.Stromzaehler.SENSOR.E320.Power_in",     // State, der den aktuellen Gesamtverbrauch in Watt anzeigt
        seriennummern: [
            //############# Diesen Abschnitt für jedes einzelne Gerät anlegen ################
            {
                seriennummer: "HWxxxxxxxxxx",              // Die Seriennummer des Gerätes
                name: "PowerStream",                        // beliebiger Namen
                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: Powerstrem:"PS"; DeltaMax:"DM"; Delta2: "D2" ; Delta2 Max: "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: 99, battPozOff: 96,              // 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 gechaltet wird. 0 für kein Rückschalten.   
                lowBatLimitPozOn: 30, lowBatLimitPozOff: 35,// Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf 
                lowBatLimit: 0,                           // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist
            },
            //#######################################################################
            {
                seriennummer: "DCExxxxx",
                name: "DELTA Pro",
                typ: "NA",
                subscribe: false,                            // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt
            },
            //#######################################################################
            {
                seriennummer: "XXXXXXXXXXXXX",
                name: "SmartPlug 1",
                typ: "SM",
                subscribe: true,                            // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt
            },
            //#######################################################################
        ],
        AdditionalPower: [                                     // Wenn es weitere Wechselrichter gibt, die in IOBroker erfasst werden, können diese hier Angelegt werden
            //############# Diesen Abschnitt für jedes einzelne Gerät anlegen ################
            {
                name: "Hoymiles2000",                       // Beliebiger Name
                id: "mqtt.0.solar.1234567890.0.power"       // Der Objektpfad zu dem Leistungswert in Watt (W)
            },
            //#######################################################################
        ],
        //****************************************
        // Erweiterte Einstellungen:
        //****************************************
        SmartmeterTimeoutMin: 4,                            // Wenn der letzte Wert vom Smartmeter älter als "SmartmeterTimeoutMin" ist, wird das Script mit...
        SmartmeterFallbackPower: 150,                       // SmartmeterFallbackPower als aktuellem Realpowerwert weiter arbeiten, bis wieder aktuelle Daten geliefert werden. 
        Regulation: true,                                   // 'false' stellt das Setzen der Einspeiseleistung ab 
        RegulationState: "Regulate",                        // Wenn angegeben, kann mit diesem State die Regulation ein- und ausgeschaltet werden (Wird automatisch unter 0_userdata.0.ecoflow angelegt)
        RegulationMultiPsMode: 0,                           // Wenn mehrere PS reguliert werden sollen. "balance" = 0 oder "serial" = 1
        BasePowerOffset: 20,                                // Wird vom aktuellen Verbrauch abgezogen, um die Einspeiseleistung zu berechnen 
        Zusatzpower_Offset: 10,                             // Zusatzpower startet ab einer Batterieladeleistung von MaxPower - Zusatzpower_Offset
        MinValueMin: 1,                                     // Der Zeitraum in Minuten, aus dem der niedrigste Gesamtverbrauchswert geholt werden soll. 0 für Echtzeitwert
        MinValueAg: 0,                                      // Art der Ermittlung des kleinsten Wertes: 0 = Minimalwert, 1 = Durchschnittswert
        ReconnectMin: 30,                                   // Zeit in Minuten, nach der die Anwendung neu gestartet wird, wenn keine neuen Daten eintreffen
        statesPrefix: "0_userdata.0.ecoflow",               // Hier werden die ecoFlow States angelegt
        latitude: latitude,                                 // Breitengrad des Standortes (wird automatisch eingesetzt)
        longitude: longitude,                               // Längengrad des Standortes (wird automatisch eingesetzt)
        //****************************************
        // Überschuss Ladung:
        //****************************************
        ExcessCharge: false,                                //
        ExcessChargePowerID: "0_userdata.0.ecoflow.app_xxxxxxxxxxxxxxxxxxxx_DAxxxxxxxxxxxxxxxxxx_thing_property_set.writeables.slowChgPower",
        ExcessChargeSwitchID: "hm-rpc.3.xxxxxxxxxxxxxxxxxx.3.STATE",
        ExcessChargeSwitchOn: true,
        ExcessChargeSwitchOff: false,
        ExcessChargeSwitchMin: 10,
        ExcessChargeMaxPower: 1500,
        ExcessChargeStartPower: 50,
        ExcessChargeStartPowerDurationMin: 5,
        //****************************************
        Debug: false,
        PlotCmdID: 99999,
    };
    
    
    //  EXTERNE STATES zum Manipulieren von Configurationsvariablen 
    var externConfig = [
        //############# Diesen Abschnitt für jeden einzelne Wert anlegen ################
        {
            VarName: "seriennummern[0].lowBatLimitPozOn",       //Variabelname aus "ConfigData" bei Aufzählungen [0...X] in der Reigenfolge der Angaben 
            id: "0_userdata.0.eigene_Berechnungen.AkkuReserve"              //Das Objekt (State) das den Wert für diese variable enthalten soll 
        },
        //#######################################################################
    ];
    //#######################################################################
     
    // Funktion zum Setzen einer verschachtelten Eigenschaft in einem Objekt
    function setNestedProperty(obj, path, value) {
        let keys = path.split('.');
        let lastKey = keys.pop();
        let tempObj = obj;
     
        keys.forEach(key => {
            if (key.match(/[\d+]/)) {
                let index = parseInt(key.match(/[(\d+)]/)[1]);
                key = key.split('[')[0];
                tempObj = tempObj[key][index];
            } else {
                tempObj = tempObj[key];
            }
        });
     
        tempObj[lastKey] = value;
    }
     
    function setConfigValueFromId(VarName, id) {
        if (isState2(id)) {
            let value = getState(id).val;  // Wert von ioBroker abrufen
            setNestedProperty(ConfigData, VarName, value);  // Wert in ConfigData setzen
        }
    }
     
    // Initialisierung bei Programmstart
    externConfig.forEach(config => {
        setConfigValueFromId(config.VarName, config.id);
    });
     
    // Änderungen während der Laufzeit überwachen
    externConfig.forEach(config => {
        if (isState2(config.id)) {
            on(config.id, function (obj) {
                setConfigValueFromId(config.VarName, obj.id);
                //log("ExternesEvent:" + obj.id + " : " + config.VarName + ":" + obj.state.val)
            });
        }
    });
    //#######################################################################
    
    W 1 Antwort Letzte Antwort
    0
    • umeleU umele

      Hab ich - hier ist der Code bis zum Ende des neuen Codes von config-date bis zum Ende des neuen Codes:

      var ConfigData = {
          email: "xxxxxx@gmail.com",                             // Die App-Zugangsdaten von ecoFlow
          passwort: "yyyyyyyyyy",
          SmartmeterID: "sonoff.0.Stromzaehler.SENSOR.E320.Power_in",     // State, der den aktuellen Gesamtverbrauch in Watt anzeigt
          seriennummern: [
              //############# Diesen Abschnitt für jedes einzelne Gerät anlegen ################
              {
                  seriennummer: "HWxxxxxxxxxx",              // Die Seriennummer des Gerätes
                  name: "PowerStream",                        // beliebiger Namen
                  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: Powerstrem:"PS"; DeltaMax:"DM"; Delta2: "D2" ; Delta2 Max: "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: 99, battPozOff: 96,              // 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 gechaltet wird. 0 für kein Rückschalten.   
                  lowBatLimitPozOn: 30, lowBatLimitPozOff: 35,// Bei Unterschreiten der Batterieladung von "lowBatLimitPozOn" % ist die maximale Einspeiseleistung auf 
                  lowBatLimit: 0,                           // "lowBatLimit" limitiert, bis der Ladezustand wieder bei "lowBatLimitPozOff" ist
              },
              //#######################################################################
              {
                  seriennummer: "DCExxxxx",
                  name: "DELTA Pro",
                  typ: "NA",
                  subscribe: false,                            // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt
              },
              //#######################################################################
              {
                  seriennummer: "XXXXXXXXXXXXX",
                  name: "SmartPlug 1",
                  typ: "SM",
                  subscribe: true,                            // "true": Alle Daten für dieses Gerät werden angefragt. "false": Es werden keine Statusdaten abgefragt
              },
              //#######################################################################
          ],
          AdditionalPower: [                                     // Wenn es weitere Wechselrichter gibt, die in IOBroker erfasst werden, können diese hier Angelegt werden
              //############# Diesen Abschnitt für jedes einzelne Gerät anlegen ################
              {
                  name: "Hoymiles2000",                       // Beliebiger Name
                  id: "mqtt.0.solar.1234567890.0.power"       // Der Objektpfad zu dem Leistungswert in Watt (W)
              },
              //#######################################################################
          ],
          //****************************************
          // Erweiterte Einstellungen:
          //****************************************
          SmartmeterTimeoutMin: 4,                            // Wenn der letzte Wert vom Smartmeter älter als "SmartmeterTimeoutMin" ist, wird das Script mit...
          SmartmeterFallbackPower: 150,                       // SmartmeterFallbackPower als aktuellem Realpowerwert weiter arbeiten, bis wieder aktuelle Daten geliefert werden. 
          Regulation: true,                                   // 'false' stellt das Setzen der Einspeiseleistung ab 
          RegulationState: "Regulate",                        // Wenn angegeben, kann mit diesem State die Regulation ein- und ausgeschaltet werden (Wird automatisch unter 0_userdata.0.ecoflow angelegt)
          RegulationMultiPsMode: 0,                           // Wenn mehrere PS reguliert werden sollen. "balance" = 0 oder "serial" = 1
          BasePowerOffset: 20,                                // Wird vom aktuellen Verbrauch abgezogen, um die Einspeiseleistung zu berechnen 
          Zusatzpower_Offset: 10,                             // Zusatzpower startet ab einer Batterieladeleistung von MaxPower - Zusatzpower_Offset
          MinValueMin: 1,                                     // Der Zeitraum in Minuten, aus dem der niedrigste Gesamtverbrauchswert geholt werden soll. 0 für Echtzeitwert
          MinValueAg: 0,                                      // Art der Ermittlung des kleinsten Wertes: 0 = Minimalwert, 1 = Durchschnittswert
          ReconnectMin: 30,                                   // Zeit in Minuten, nach der die Anwendung neu gestartet wird, wenn keine neuen Daten eintreffen
          statesPrefix: "0_userdata.0.ecoflow",               // Hier werden die ecoFlow States angelegt
          latitude: latitude,                                 // Breitengrad des Standortes (wird automatisch eingesetzt)
          longitude: longitude,                               // Längengrad des Standortes (wird automatisch eingesetzt)
          //****************************************
          // Überschuss Ladung:
          //****************************************
          ExcessCharge: false,                                //
          ExcessChargePowerID: "0_userdata.0.ecoflow.app_xxxxxxxxxxxxxxxxxxxx_DAxxxxxxxxxxxxxxxxxx_thing_property_set.writeables.slowChgPower",
          ExcessChargeSwitchID: "hm-rpc.3.xxxxxxxxxxxxxxxxxx.3.STATE",
          ExcessChargeSwitchOn: true,
          ExcessChargeSwitchOff: false,
          ExcessChargeSwitchMin: 10,
          ExcessChargeMaxPower: 1500,
          ExcessChargeStartPower: 50,
          ExcessChargeStartPowerDurationMin: 5,
          //****************************************
          Debug: false,
          PlotCmdID: 99999,
      };
      
      
      //  EXTERNE STATES zum Manipulieren von Configurationsvariablen 
      var externConfig = [
          //############# Diesen Abschnitt für jeden einzelne Wert anlegen ################
          {
              VarName: "seriennummern[0].lowBatLimitPozOn",       //Variabelname aus "ConfigData" bei Aufzählungen [0...X] in der Reigenfolge der Angaben 
              id: "0_userdata.0.eigene_Berechnungen.AkkuReserve"              //Das Objekt (State) das den Wert für diese variable enthalten soll 
          },
          //#######################################################################
      ];
      //#######################################################################
       
      // Funktion zum Setzen einer verschachtelten Eigenschaft in einem Objekt
      function setNestedProperty(obj, path, value) {
          let keys = path.split('.');
          let lastKey = keys.pop();
          let tempObj = obj;
       
          keys.forEach(key => {
              if (key.match(/[\d+]/)) {
                  let index = parseInt(key.match(/[(\d+)]/)[1]);
                  key = key.split('[')[0];
                  tempObj = tempObj[key][index];
              } else {
                  tempObj = tempObj[key];
              }
          });
       
          tempObj[lastKey] = value;
      }
       
      function setConfigValueFromId(VarName, id) {
          if (isState2(id)) {
              let value = getState(id).val;  // Wert von ioBroker abrufen
              setNestedProperty(ConfigData, VarName, value);  // Wert in ConfigData setzen
          }
      }
       
      // Initialisierung bei Programmstart
      externConfig.forEach(config => {
          setConfigValueFromId(config.VarName, config.id);
      });
       
      // Änderungen während der Laufzeit überwachen
      externConfig.forEach(config => {
          if (isState2(config.id)) {
              on(config.id, function (obj) {
                  setConfigValueFromId(config.VarName, obj.id);
                  //log("ExternesEvent:" + obj.id + " : " + config.VarName + ":" + obj.state.val)
              });
          }
      });
      //#######################################################################
      
      W Offline
      W Offline
      Waly_de
      schrieb am zuletzt editiert von Waly_de
      #578

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

      Hab ich - hier ist der Code bis zum Ende des neuen Codes von config-date bis zum Ende des neuen Codes:

      da muss irgendwo anders im Script was kaputt sein.
      Hier das komplette neue Script mit der eingebauten Änderung. Versuch das bitte noch mal:

      ecoflow-connector_v115.txt

      umeleU 1 Antwort Letzte Antwort
      0
      • W Waly_de

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

        Hab ich - hier ist der Code bis zum Ende des neuen Codes von config-date bis zum Ende des neuen Codes:

        da muss irgendwo anders im Script was kaputt sein.
        Hier das komplette neue Script mit der eingebauten Änderung. Versuch das bitte noch mal:

        ecoflow-connector_v115.txt

        umeleU Offline
        umeleU Offline
        umele
        schrieb am zuletzt editiert von umele
        #579

        @waly_de - super - läuft 👍 👍
        Vielen Dank!

        Hier ist noch mein mini blockly-Script für die Ermittlung der Wettervorhersage für das Setzen der Akkureserve:

        <block xmlns="https://developers.google.com/blockly/xml" type="schedule" id="(GE`TYRwgdq64gu:ev3X" x="-1412.7252672983375" y="-312.29998779296875">
          <field name="SCHEDULE">17 0 * * *</field>
          <statement name="STATEMENT">
            <block type="controls_if" id="ZvDhkV_4w)f-:`W}*PD7">
              <mutation else="1"></mutation>
              <value name="IF0">
                <block type="logic_operation" id=")i8lCy/Y9qP.tfH3AbbA">
                  <field name="OP">AND</field>
                  <value name="A">
                    <block type="logic_compare" id="XFoiqi)4IC{nioM%}N$V">
                      <field name="OP">LTE</field>
                      <value name="A">
                        <block type="get_value" id="^cq7Kj`t!a5C-K@V5Cy5">
                          <field name="ATTR">val</field>
                          <field name="OID">daswetter.0.NextDays.Location_1.Day_1.Wetter_Symbol_id</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="math_number" id="[C5p_$e+hZj:45Jj`X8b">
                          <field name="NUM">2</field>
                        </block>
                      </value>
                    </block>
                  </value>
                  <value name="B">
                    <block type="logic_compare" id="Y3Ss0!70G}oW:jZ;RE8N">
                      <field name="OP">LTE</field>
                      <value name="A">
                        <block type="get_value" id="O?o^MK%1hqw`K8L?_6Ba">
                          <field name="ATTR">val</field>
                          <field name="OID">daswetter.0.NextDays.Location_1.Day_1.Wetter_Symbol_id2</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="math_number" id="2!2?c9]7:2RXsT7ARsin">
                          <field name="NUM">2</field>
                        </block>
                      </value>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="control" id="1:AV6/J(fY[Zz*1*X[6*">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                  <field name="OID">0_userdata.0.eigene_Berechnungen.AkkuReserve</field>
                  <field name="WITH_DELAY">FALSE</field>
                  <value name="VALUE">
                    <block type="math_number" id="Lj/0p64,RRVn/[21U`U(">
                      <field name="NUM">10</field>
                    </block>
                  </value>
                  <next>
                    <block type="debug" id="^#I:RE;C?.+/QDp/q540">
                      <field name="Severity">log</field>
                      <value name="TEXT">
                        <shadow type="text" id="V0Et@Z_=RE]`1r`CjF``">
                          <field name="TEXT">Der Tag wird sonnig - Reserve runter auf 10.</field>
                        </shadow>
                      </value>
                    </block>
                  </next>
                </block>
              </statement>
              <statement name="ELSE">
                <block type="control" id="XKy/aY~l#z4bg4uF*iJd">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                  <field name="OID">0_userdata.0.eigene_Berechnungen.AkkuReserve</field>
                  <field name="WITH_DELAY">FALSE</field>
                  <value name="VALUE">
                    <block type="math_number" id="HVMt*OIb?!;7_QG9LQ#D">
                      <field name="NUM">30</field>
                    </block>
                  </value>
                  <next>
                    <block type="debug" id="!HTqeR|~wD?~*g(SzZ=.">
                      <field name="Severity">log</field>
                      <value name="TEXT">
                        <shadow type="text" id="E-Eho[?yh+g;iD0_J:7x">
                          <field name="TEXT">Nicht genug Sonne - Reserve auf 30.</field>
                        </shadow>
                      </value>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </statement>
        </block>
        

        1543fc32-6edf-48f9-8b14-613fb52dfdf7-image.png

        Die Instanz für "Das Wetter" ist so konfiguriert, dass jede Nacht um 00:07 die Vorhersage aktualisiert wird.
        Das blockly greift dann die Objekte ab, die anzeigen, ob es am kommenden Vormittag und Nachmittag sonnig genug wird.

        1dca5a1d-a54a-4275-9181-c5e66e827598-image.png

        39e64e02-b148-487a-995a-fef7f250f266-image.png

        1 Antwort Letzte Antwort
        1
        • R Offline
          R Offline
          resilient
          schrieb am zuletzt editiert von
          #580

          Welche größe sollte man eigentlich nehmen um zu tracken was wirklich eingespeist wurde (bei 2 PS)
          jeweils die Werte addieren: ...data.InverterHeartbeat.invOutputWatts ?

          W 1 Antwort Letzte Antwort
          0
          • R resilient

            Welche größe sollte man eigentlich nehmen um zu tracken was wirklich eingespeist wurde (bei 2 PS)
            jeweils die Werte addieren: ...data.InverterHeartbeat.invOutputWatts ?

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

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

            jeweils die Werte addieren: ...data.InverterHeartbeat.invOutputWatts ?

            Ja, das macht am meisten Sinn.

            Es könnte auch sein, dass in den Daten unter:
            0_userdata.0.ecoflow.app_device_property_HWXXXXXXXXXXX.data.PowerPack... irgendwie die Daten aus der App versteckt sind.. Ich hatte noch keine Geduld dass zu untersuchen. Auf den ersten Blick finde ich da aber keine Übereinstimmungen.

            D 1 Antwort Letzte Antwort
            0
            • S Offline
              S Offline
              sirdir
              schrieb am zuletzt editiert von
              #582

              Hm, die Version vom Juli die ich angepasst hatte auf meine Bedürfnisse funktionierte eigentlich problemlos, die neueren Versionen hören alle irgendwann auf zu regeln (finde nicht heraus warum, debug ist dann jeweils nicht an und wenn ich das script neu starte geht’s wieder). Gibt’s eigentlich ne einfache möglichkeit im ionroker ein script regelmässig neu starten zu lassen automatisch?

              W 1 Antwort Letzte Antwort
              0
              • S sirdir

                Hm, die Version vom Juli die ich angepasst hatte auf meine Bedürfnisse funktionierte eigentlich problemlos, die neueren Versionen hören alle irgendwann auf zu regeln (finde nicht heraus warum, debug ist dann jeweils nicht an und wenn ich das script neu starte geht’s wieder). Gibt’s eigentlich ne einfache möglichkeit im ionroker ein script regelmässig neu starten zu lassen automatisch?

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

                @sirdir schwer zu sagen was das problem ist. Steht denn das Script komplett, oder wird nur nicht mehr gesendet? Steht nichts im Log wie z.B. das es zu viele SetStates gab...

                Neustarten geht z.b. aus einem anderen Script mit einem Cron

                bei mir ist der zugehörige Pfad: "javascript.0.scriptEnabled.ecoflow-connector_dev"
                Neustart sollte dann so gehen:

                // Pfad zum 'enabled'-State des Scripts
                var scriptEnabledStatePath = 'javascript.0.scriptEnabled.ecoflow-connector_dev'; 
                
                // Script deaktivieren
                setState(scriptEnabledStatePath, false, true, function() {
                    // Kurze Pause, dann Script wieder aktivieren
                    setTimeout(function() {
                        setState(scriptEnabledStatePath, true, true);
                    }, 1000);  // Wartezeit in Millisekunden, kann angepasst werden
                });
                
                S 2 Antworten Letzte Antwort
                0
                • W Waly_de

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

                  jeweils die Werte addieren: ...data.InverterHeartbeat.invOutputWatts ?

                  Ja, das macht am meisten Sinn.

                  Es könnte auch sein, dass in den Daten unter:
                  0_userdata.0.ecoflow.app_device_property_HWXXXXXXXXXXX.data.PowerPack... irgendwie die Daten aus der App versteckt sind.. Ich hatte noch keine Geduld dass zu untersuchen. Auf den ersten Blick finde ich da aber keine Übereinstimmungen.

                  D Offline
                  D Offline
                  Dreffi
                  schrieb am zuletzt editiert von
                  #584

                  @waly_de
                  Folgender Bug:
                  (Version: 1.1.4.2)

                  Der erste Powerstream schaltet wegen BatPoz auf Prio Speicher. Normal müsste Powerstream 2 nur noch einspeisen, was zu Deckung des Bedarfs fehlt.
                  Dieser speist aber mehr ein, wodurch ins Netz zurückgespeist wird. Nein, Akku von Powerstream 2 ist nicht voll und die Ladeleistung liegt deutlich unter 600 W.

                  Es scheint als würde die Last für Powerstream 2 nicht mit der tatsächlichen Einspeiseleistung von Powerstream 1, sondern mit der eingestellten AC Last von Powerstream 1 berechnet werden.

                  Die Rückspeisung ins Netz ist ungefähr so groß, wie die aktuelle PV-Leistung von Powerstream 1 abzüglich der eingestellten AC Last von Powerstream 1.
                  Die durch Prio Speicher höher ausfallende AC Leistung wird nicht berücksichtigt.

                  W 1 Antwort Letzte Antwort
                  0
                  • D Dreffi

                    @waly_de
                    Folgender Bug:
                    (Version: 1.1.4.2)

                    Der erste Powerstream schaltet wegen BatPoz auf Prio Speicher. Normal müsste Powerstream 2 nur noch einspeisen, was zu Deckung des Bedarfs fehlt.
                    Dieser speist aber mehr ein, wodurch ins Netz zurückgespeist wird. Nein, Akku von Powerstream 2 ist nicht voll und die Ladeleistung liegt deutlich unter 600 W.

                    Es scheint als würde die Last für Powerstream 2 nicht mit der tatsächlichen Einspeiseleistung von Powerstream 1, sondern mit der eingestellten AC Last von Powerstream 1 berechnet werden.

                    Die Rückspeisung ins Netz ist ungefähr so groß, wie die aktuelle PV-Leistung von Powerstream 1 abzüglich der eingestellten AC Last von Powerstream 1.
                    Die durch Prio Speicher höher ausfallende AC Leistung wird nicht berücksichtigt.

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

                    @dreffi bitte teste mal die 1.1.5. genau an diesen Dingen hab ich noch mal gearbeitet...

                    1 Antwort Letzte Antwort
                    0
                    • W Waly_de

                      @sirdir schwer zu sagen was das problem ist. Steht denn das Script komplett, oder wird nur nicht mehr gesendet? Steht nichts im Log wie z.B. das es zu viele SetStates gab...

                      Neustarten geht z.b. aus einem anderen Script mit einem Cron

                      bei mir ist der zugehörige Pfad: "javascript.0.scriptEnabled.ecoflow-connector_dev"
                      Neustart sollte dann so gehen:

                      // Pfad zum 'enabled'-State des Scripts
                      var scriptEnabledStatePath = 'javascript.0.scriptEnabled.ecoflow-connector_dev'; 
                      
                      // Script deaktivieren
                      setState(scriptEnabledStatePath, false, true, function() {
                          // Kurze Pause, dann Script wieder aktivieren
                          setTimeout(function() {
                              setState(scriptEnabledStatePath, true, true);
                          }, 1000);  // Wartezeit in Millisekunden, kann angepasst werden
                      });
                      
                      S Offline
                      S Offline
                      sirdir
                      schrieb am zuletzt editiert von
                      #586

                      @waly_de Das mit den states hab ich einmal gesehen… Ich versuch’s mal mit dem Script, hab jetzt noch grad auf die neuste Version geupdated. Ein kleiner ‘bug’ ist schon mal immer noch drin: Die Meldung bez. batterieladung erreicht und Einspeisung wieder normal wird immer ausgegeben, auch wenn debug nicht gesetzt ist.

                      1 Antwort Letzte Antwort
                      0
                      • P Offline
                        P Offline
                        Ponti92
                        schrieb am zuletzt editiert von Ponti92
                        #587

                        @Waly_de
                        Hi,
                        Ich hab seit dem letzten großen Skript Update mit dem neuen Balance Mode der PS folgendes Problem mit meiner ersten PS.
                        Ich bin noch nicht 100% sicher woran es liegt, aber ich beschreibe mal das verhalten..
                        Immer wenn die Regelung die AC-bedarf reduziert und dieser Wert geringer als der PV Eingang wird, dann reduziert sich PV mit.
                        Das geht dann so weit bis PV dann sogar bei 0 oder wenigen Watt liegt. Dann kann ich nur noch den Batterieprio Modus anschalten und PV liegt dann wieder voll an.
                        Das Skript schaltet dann automatisch wieder auf Strom-Prio um, sodass es wieder läuft.

                        Das ist leider schwer nachzustellen und tritt vor allem bei wechselnden Lasten oder abnehmenden Sonnenschein auf. Und auch nur bei der ersten PS. Ich habe den Verdacht, dass evtl ein bug seitens EcoFlow vorliegt und im Zusammenspiel mit der Regelung, dass nur die vorhandene PV Leistung bedient werden soll, es dazu kommt. Dann regelt das Skript herunter und die PV Leistung regelt nach unten, bis es gegen 0 geht.
                        Solange die andere PS noch genügend PV liefert, nimmt das Skript ja davon die Leistung, sodass der Akku nicht unnötig belastet wird. (Neues Feature, was eigentlich ziemlich cool ist!)

                        Ich versuche mal die Reihenfolge der PS im Skript zu ändern und evtl mal die Module der PS tauschen.

                        Übrigens ist dort keine Verschattung und die Module sind alle gleich ausgerichtet. Ich merke das immer zufällig, dass ein PS fast nichts liefert und die Werte komplett anders als der andere PS ist.

                        Hier ein Screenshot mit den Einbrüchen, die ich manuell dann durch umschalten des Prio Modus wieder gelöst habe.

                        IMG_2459.jpeg

                        Im Vergleich sieht PV4 schon anders aus. (Gegen Ende hat PV4 noch länger Sonne, aber das kann man vernachlässigen)
                        IMG_2460.jpeg

                        W 1 Antwort Letzte Antwort
                        0
                        • P Ponti92

                          @Waly_de
                          Hi,
                          Ich hab seit dem letzten großen Skript Update mit dem neuen Balance Mode der PS folgendes Problem mit meiner ersten PS.
                          Ich bin noch nicht 100% sicher woran es liegt, aber ich beschreibe mal das verhalten..
                          Immer wenn die Regelung die AC-bedarf reduziert und dieser Wert geringer als der PV Eingang wird, dann reduziert sich PV mit.
                          Das geht dann so weit bis PV dann sogar bei 0 oder wenigen Watt liegt. Dann kann ich nur noch den Batterieprio Modus anschalten und PV liegt dann wieder voll an.
                          Das Skript schaltet dann automatisch wieder auf Strom-Prio um, sodass es wieder läuft.

                          Das ist leider schwer nachzustellen und tritt vor allem bei wechselnden Lasten oder abnehmenden Sonnenschein auf. Und auch nur bei der ersten PS. Ich habe den Verdacht, dass evtl ein bug seitens EcoFlow vorliegt und im Zusammenspiel mit der Regelung, dass nur die vorhandene PV Leistung bedient werden soll, es dazu kommt. Dann regelt das Skript herunter und die PV Leistung regelt nach unten, bis es gegen 0 geht.
                          Solange die andere PS noch genügend PV liefert, nimmt das Skript ja davon die Leistung, sodass der Akku nicht unnötig belastet wird. (Neues Feature, was eigentlich ziemlich cool ist!)

                          Ich versuche mal die Reihenfolge der PS im Skript zu ändern und evtl mal die Module der PS tauschen.

                          Übrigens ist dort keine Verschattung und die Module sind alle gleich ausgerichtet. Ich merke das immer zufällig, dass ein PS fast nichts liefert und die Werte komplett anders als der andere PS ist.

                          Hier ein Screenshot mit den Einbrüchen, die ich manuell dann durch umschalten des Prio Modus wieder gelöst habe.

                          IMG_2459.jpeg

                          Im Vergleich sieht PV4 schon anders aus. (Gegen Ende hat PV4 noch länger Sonne, aber das kann man vernachlässigen)
                          IMG_2460.jpeg

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

                          @ponti92 also ist der Akku komplett voll?
                          Und hast du schon die 1.1.5 laufen? Da hab ich die Priosteuerung überarbeitet…

                          P 2 Antworten Letzte Antwort
                          0
                          • W Waly_de

                            @ponti92 also ist der Akku komplett voll?
                            Und hast du schon die 1.1.5 laufen? Da hab ich die Priosteuerung überarbeitet…

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

                            @waly_de
                            Nein der Akku ist nicht voll, bin noch eine Version davor. Ich aktualisiere für morgen mal auf die letzte Version.

                            Wenn der Akku voll ist, dann klappt es auch wunderbar mit dem Batterie Prio Modus und er speist alles schön ins netz 🙂

                            1 Antwort Letzte Antwort
                            0
                            • W Waly_de

                              @ponti92 also ist der Akku komplett voll?
                              Und hast du schon die 1.1.5 laufen? Da hab ich die Priosteuerung überarbeitet…

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

                              @waly_de
                              Es liegt nicht am umschalten des Prio Modus, denn es passiert wenn der Akku unter 100% ist.

                              W 1 Antwort Letzte Antwort
                              0
                              • P Ponti92

                                @waly_de
                                Es liegt nicht am umschalten des Prio Modus, denn es passiert wenn der Akku unter 100% ist.

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

                                @ponti92 wie voll ist denn der Akku dann?
                                Ich hab festgestellt, dass sich der PS in der Nähe der oberen Ladungsgrenze schon mal seltsam verhält.
                                So hatte ich Probleme wenn ich z.B. PozOn: 98 und Off 96 eingestellt hatte. Bei 96 hat es sich dann nämlich geweigert die Batterie weiter zu laden. Teilweise wurde auch nichts weiter eingespeist. Hört sich so ähnlich an wie Dein Problem. im Moment hab ich 99 und 94 eingestellt. Aber das Wetter ist für meine Anlage leider zu schlecht um den Akku voll zu laden... daher kann ich das nicht 100% Testen

                                P 1 Antwort Letzte Antwort
                                0
                                • W Waly_de

                                  @ponti92 wie voll ist denn der Akku dann?
                                  Ich hab festgestellt, dass sich der PS in der Nähe der oberen Ladungsgrenze schon mal seltsam verhält.
                                  So hatte ich Probleme wenn ich z.B. PozOn: 98 und Off 96 eingestellt hatte. Bei 96 hat es sich dann nämlich geweigert die Batterie weiter zu laden. Teilweise wurde auch nichts weiter eingespeist. Hört sich so ähnlich an wie Dein Problem. im Moment hab ich 99 und 94 eingestellt. Aber das Wetter ist für meine Anlage leider zu schlecht um den Akku voll zu laden... daher kann ich das nicht 100% Testen

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

                                  @waly_de das ist ganz unterschiedlich und war heute bei ca 40-50%. Hatte das aber auch schon bei 30% sowie 70%.

                                  Jedenfalls löst sich mein Problem kurzzeitig wenn ich von Stromversorgung auf batteriemodus wechsle. Dann geht PV wieder auf den Wert wie beim anderen PS, dafür natürlich in den Akku. Wenn ich dann wieder auf Stromversorgung umschalte, läuft es erst mal wieder.

                                  1 Antwort Letzte Antwort
                                  0
                                  • P Offline
                                    P Offline
                                    Ponti92
                                    schrieb am zuletzt editiert von
                                    #593

                                    @Waly_de ich hab das mal bei EcoFlow Support geschildert und es ist ein bug mit der Delta2Max.
                                    Sie arbeiten daran…
                                    Ich werd mir mal ein Skript schreiben, das die PV Leistung überwacht und dann bei Bedarf mal kurz auf Batterie Prio umstellt. Dann muss ich das nicht mehr händisch machen.

                                    Übrigens liegt es nicht an den Panels, hab beide Panels von einem powerstream zum anderen umgesteckt. Dachte, dass es vielleicht auch daran liegt, da ein paar Module 30V und die anderen 40V haben..

                                    Man kann das ganze auch gut in der Früh beobachten, da legt der eine powerstream schon los und der andere ist bei 0W. Nachdem ich dann einmal den Batterieprio Modus aktiviere, legt auch der zweite los und hat ähnliche Werte wie der erste.

                                    1 Antwort Letzte Antwort
                                    1
                                    • W Waly_de

                                      @sirdir schwer zu sagen was das problem ist. Steht denn das Script komplett, oder wird nur nicht mehr gesendet? Steht nichts im Log wie z.B. das es zu viele SetStates gab...

                                      Neustarten geht z.b. aus einem anderen Script mit einem Cron

                                      bei mir ist der zugehörige Pfad: "javascript.0.scriptEnabled.ecoflow-connector_dev"
                                      Neustart sollte dann so gehen:

                                      // Pfad zum 'enabled'-State des Scripts
                                      var scriptEnabledStatePath = 'javascript.0.scriptEnabled.ecoflow-connector_dev'; 
                                      
                                      // Script deaktivieren
                                      setState(scriptEnabledStatePath, false, true, function() {
                                          // Kurze Pause, dann Script wieder aktivieren
                                          setTimeout(function() {
                                              setState(scriptEnabledStatePath, true, true);
                                          }, 1000);  // Wartezeit in Millisekunden, kann angepasst werden
                                      });
                                      
                                      S Offline
                                      S Offline
                                      sirdir
                                      schrieb am zuletzt editiert von sirdir
                                      #594

                                      @waly_de Also wie ich jetzt gesehen habe passiert das mit den zu vielen SetStates mehrmals täglich (jedenfalls heute). Was kann das denn sein? Ich mach z.B. nichts an den writables. Und ich hab nur den PS abonniert.

                                      W 1 Antwort Letzte Antwort
                                      0
                                      • S sirdir

                                        @waly_de Also wie ich jetzt gesehen habe passiert das mit den zu vielen SetStates mehrmals täglich (jedenfalls heute). Was kann das denn sein? Ich mach z.B. nichts an den writables. Und ich hab nur den PS abonniert.

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

                                        @sirdir Mit nur einem PS ist das eher ungewöhnlich es sind die Deltas, die in der Regel diese Probleme machen. Hast Du noch eigene Erweiterungen im gleichen Script untergebracht?
                                        Das grundsätzliche Problem und wie man das Limit erhöht ist ja ausführlich dokumentiert. Siehe Startbeitrag.

                                        D S 2 Antworten Letzte Antwort
                                        0
                                        • W Waly_de

                                          @sirdir Mit nur einem PS ist das eher ungewöhnlich es sind die Deltas, die in der Regel diese Probleme machen. Hast Du noch eigene Erweiterungen im gleichen Script untergebracht?
                                          Das grundsätzliche Problem und wie man das Limit erhöht ist ja ausführlich dokumentiert. Siehe Startbeitrag.

                                          D Offline
                                          D Offline
                                          Dreffi
                                          schrieb am zuletzt editiert von
                                          #596

                                          @waly_de
                                          Im PV-Forum gas es auch schon Meldungen, dass nur mit einem Powerstream das Limit überschritten wird. Mit zwei Powerstreams habe ich auch schon die 2000 SetStates geknackt.

                                          Man sollte also auch pro Powerstream mit mehr als 1000 SetStates pro Stunde kalkulieren.

                                          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

                                          724

                                          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
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe