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.
  • W Waly_de

    An die Tibber Nutzer:

    ich habe ein Script geschrieben, das die Zählerdaten des Pulse lokal, also ohne den Umweg über die Cloud auslesen und in IoBroker Zustände schreiben kann.

    Ich weiß, das es mit der Cloud schon mal Probleme gibt, oder die Werte sehr verzögert ankommen.
    Das Script kann bisher nur Zähler auslesen, die die SML-Sprache sprechen. Probier es mal aus, wenn Daten ankommen, aber nicht ausgewertet werden können, meldet Euch bitte mit der genauen Bezeichnung Eures Zählers und einem HexDump der Daten, die der Pulse liefert.
    Die stehen dann im Zustand: 0_userdata.0.TibberPulse.SMLDataHEX

    Im Script muss eigentlich nur das Web-Passwort der Pulse-Bridge eingetragen werden.
    Vielleicht muss auch der Host angepasst werden.
    Ihr müsst nur die Weboberfläche der Bridge dauerhaft aktivieren.
    Wie das geht hat marq24 für seine HomeAssistant Anbindung hier super beschrieben:

    https://github.com/marq24/ha-tibber-pulse-local

    Wenn alles klappt, werden die Zählerdaten alle 2 Sekunden in IOBroker-States geschrieben und Ihr könnt im Script diese Konfiguration angeben:

    SmartmeterID: "0_userdata.0.TibberPulse.SML.Power"
    

    Hier das Script: (update 21.11.23 18:39)

    var TibberConfig = {
        password: "XXXX-XXXX",
        statesPrefix: "0_userdata.0.TibberPulse",
        interval: 2000,
        host: "tibber-host",
    }
    const debug = false
    const http = require('http');
    async function getPulseData(password) {
        const auth = Buffer.from(`admin:${password}`).toString('base64');
        const options = {
            hostname: TibberConfig.host,
            path: '/metrics.json?node_id=1',
            method: 'GET',
            headers: {
                'Authorization': `Basic ${auth}`,
                'Host': 'tibber-host',
                'lang': 'de-de',
                'content-type': 'application/json',
                'user-agent': 'okhttp/3.14.9'
            }
        };
    
        function httpRequest(options) {
            return new Promise((resolve, reject) => {
                const req = http.request(options, res => {
                    let data = '';
                    res.on('data', chunk => {
                        data += chunk;
                    });
                    res.on('end', () => {
                        resolve(data);
                    });
                });
    
                req.on('error', error => {
                    reject(error);
                });
    
                req.end();
            });
        }
    
        try {
            let response = await (httpRequest(options));
            return response.replace("$type", "type"); // Gibt das Antwortobjekt zurück
        } catch (error) {
            console.error("Ein Fehler bei der Ermittlung der Zugangsdaten ist aufgetreten. Bitte prüfe die Zugangsdaten.");
            throw error;
        }
    }
    function getDataAsHexString(password) {
        return new Promise((resolve, reject) => {
            const auth = Buffer.from(`admin:${password}`).toString('base64');
            const options = {
                hostname: TibberConfig.host,
                path: '/data.json?node_id=1',
                headers: {
                    'Authorization': `Basic ${auth}`
                }
            };
            http.get(options, res => {
                const chunks = [];
                res.on('data', chunk => {
                    chunks.push(chunk);
                });
                res.on('end', () => {
                    const buffer = Buffer.concat(chunks);
                    const hexString = buffer.toString('hex');
                    resolve(hexString);
                });
            }).on('error', error => {
                reject(error);
            });
        });
    }
    function isState2(strStatePath, strict = true) {
        let mSelector;
        if (strict) {
            mSelector = $(strStatePath);
        } else {
            mSelector = $(strStatePath + "*");
        }
        if (mSelector.length > 0) {
            return true;
        } else {
            return false;
        }
    }
    
    function isValidUnixTimestampAndConvert(n) {
        // Typüberprüfung
        if (typeof n !== 'number') {
            return false;
        }
        // Bereichsüberprüfung (optional)
        const unixEpoch = 0; // UNIX-Epoch: 1. Januar 1970
        const currentTime = Math.floor(Date.now() / 1000);
        if (n < unixEpoch || n > currentTime) {
            return false;
        }
        // Granularität (optional)
        if (Math.floor(n) !== n) {
            return false;
        }
        // Konvertiere zu deutschem Zeitformat
        const date = new Date(n * 1000);
        const germanTimeFormat = date.toLocaleString('de-DE');
        return germanTimeFormat;
    }
    
    function generateAndSyncSub(id, JElements, sub = false, preset = "") {
        //log("Aufruf:" + JElements)
        if (!JElements || typeof JElements !== 'object') {
            log('Ungültige JElements übergeben!: ' + JElements); //
            return;
        }
        for (var JElement in JElements) {
            var AktVal;
            if (typeof JElements[JElement] === "object") {
                if (id === "") {
                    generateAndSyncSub(JElement, JElements[JElement], true, preset);
                } else {
                    generateAndSyncSub(id + "." + JElement, JElements[JElement], true, preset);
                }
    
                //generateAndSyncSub(id + "." + JElement, JElements[JElement], true, preset);
            } else {
                try {
                    if (isState2(preset + "." + id + "." + JElement)) AktVal = getState(preset + "." + id + "." + JElement).val; else AktVal = null
                } catch (e) {
                    log("Fehler: " + e); //
                }
                // Überprüfung für den Elementnamen "timestamp"
                if (JElement === "timestamp") {
                    const TimeValue = isValidUnixTimestampAndConvert(JElements[JElement])
                    if (TimeValue) JElements[JElement] = TimeValue;
                }
                if (AktVal == null) {
                    createState(preset + "." + id + "." + JElement, JElements[JElement], false);
                    AktVal = JElements[JElement];
                }
                if (AktVal != JElements[JElement]) {
                    if (isState2(preset + "." + id + "." + JElement)) {
                        setState(preset + "." + id + "." + JElement, JElements[JElement], true);
                    }
                }
            }
        }
    }
    
    const obisCodesWithNames = [
        { code: "0100100700ff", name: "Power" },
        { code: "0100010800ff", name: "Import_total" },
        { code: "0100020800ff", name: "Export_total" },
        { code: "0100010800ff_in_k", name: "Import_total_(kWh)" },
        { code: "0100020800ff_in_k", name: "Export_total_(kWh)" },
        { code: "0100240700ff", name: "Power_L1" },
        { code: "0100380700ff", name: "Power_L2" },
        { code: "01004c0700ff", name: "Power_L3" },
        { code: "0100200700ff", name: "Potential_L1" },
        { code: "0100340700ff", name: "Potential_L2" },
        { code: "0100480700ff", name: "Potential_L3" },
        { code: "01001f0700ff", name: "Current_L1" },
        { code: "0100330700ff", name: "Current_L2" },
        { code: "0100470700ff", name: "Current_L3" },
        { code: "01000e0700ff", name: "Net_frequency" },
        { code: "0100510701ff", name: "Potential_Phase_deviation_L1/L2" },
        { code: "0100510702ff", name: "Potential_Phase_deviation_L1/L3" },
        { code: "0100510704ff", name: "Current/Potential_L1_Phase_deviation" },
        { code: "010051070fff", name: "Current/Potential_L2_Phase_deviation" },
        { code: "010051071aff", name: "Current/Potential_L3_Phase_deviation" }
    ];
    function findObisCodeName(code, obisCodesWithNames) {
        const found = obisCodesWithNames.find(item => item.code === code);
        return found ? found.name : "Unbekannt";
    }
    
    /**
     * Static lookup table
     */
    const dlmsUnits = [
        { code: 0x1, unit: "a", quantity: "time", unitName: "year", siDefinition: "52*7*24*60*60 s" },
        { code: 0x2, unit: "mo", quantity: "time", unitName: "month", siDefinition: "31*24*60*60 s" },
        { code: 0x3, unit: "wk", quantity: "time", unitName: "week", siDefinition: "7*24*60*60 s" },
        { code: 0x4, unit: "d", quantity: "time", unitName: "day", siDefinition: "24*60*60 s" },
        { code: 0x5, unit: "h", quantity: "time", unitName: "hour", siDefinition: "60*60 s" },
        { code: 0x6, unit: "min.", quantity: "time", unitName: "min", siDefinition: "60 s" },
        { code: 0x7, unit: "s", quantity: "time", unitName: "second", siDefinition: "s" },
        { code: 0x8, unit: "°", quantity: "phase angle", unitName: "degree", siDefinition: "rad*180/π" },
        { code: 0x9, unit: "°C", quantity: "temperature", unitName: "degree celsius", siDefinition: "K-273.15" },
        { code: 0xA, unit: "currency", quantity: "local currency", unitName: "", siDefinition: "" },
        { code: 0xB, unit: "m", quantity: "length", unitName: "metre", siDefinition: "m" },
        { code: 0xC, unit: "m/s", quantity: "speed", unitName: "metre per second", siDefinition: "m/s" },
        { code: 0xD, unit: "m³", quantity: "volume", unitName: "cubic metre", siDefinition: "m³" },
        { code: 0xE, unit: "m³", quantity: "corrected volume", unitName: "cubic metre", siDefinition: "m³" },
        { code: 0xF, unit: "m³/h", quantity: "volume flux", unitName: "cubic metre per hour", siDefinition: "m³/(60*60s)" },
        { code: 0x10, unit: "m³/h", quantity: "corrected volume flux", unitName: "cubic metre per hour", siDefinition: "m³/(60*60s)" },
        { code: 0x11, unit: "m³/d", quantity: "volume flux", unitName: "cubic metre per day", siDefinition: "m³/(24*60*60s)" },
        { code: 0x12, unit: "m³/d", quantity: "corrected volume flux", unitName: "cubic metre per day", siDefinition: "m³/(24*60*60s)" },
        { code: 0x13, unit: "l", quantity: "volume", unitName: "litre", siDefinition: "10-3 m³" },
        { code: 0x14, unit: "kg", quantity: "mass", unitName: "kilogram", siDefinition: "" },
        { code: 0x15, unit: "N", quantity: "force", unitName: "newton", siDefinition: "" },
        { code: 0x16, unit: "Nm", quantity: "energy", unitName: "newtonmeter", siDefinition: "J = Nm = Ws" },
        { code: 0x17, unit: "Pa", quantity: "pressure", unitName: "pascal", siDefinition: "N/m²" },
        { code: 0x18, unit: "bar", quantity: "pressure", unitName: "bar", siDefinition: "10⁵ N/m²" },
        { code: 0x19, unit: "J", quantity: "energy", unitName: "joule", siDefinition: "J = Nm = Ws" },
        { code: 0x1A, unit: "J/h", quantity: "thermal power", unitName: "joule per hour", siDefinition: "J/(60*60s)" },
        { code: 0x1B, unit: "W", quantity: "active power", unitName: "watt", siDefinition: "W = J/s" },
        { code: 0x1C, unit: "VA", quantity: "apparent power", unitName: "volt-ampere", siDefinition: "" },
        { code: 0x1D, unit: "var", quantity: "reactive power", unitName: "var", siDefinition: "" },
        { code: 0x1E, unit: "Wh", quantity: "active energy", unitName: "watt-hour", siDefinition: "W*(60*60s)" },
        { code: 0x1F, unit: "VAh", quantity: "apparent energy", unitName: "volt-ampere-hour", siDefinition: "VA*(60*60s)" },
        { code: 0x20, unit: "varh", quantity: "reactive energy", unitName: "var-hour", siDefinition: "var*(60*60s)" },
        { code: 0x21, unit: "A", quantity: "current", unitName: "ampere", siDefinition: "A" },
        { code: 0x22, unit: "C", quantity: "electrical charge", unitName: "coulomb", siDefinition: "C = As" },
        { code: 0x23, unit: "V", quantity: "voltage", unitName: "volt", siDefinition: "V" },
        { code: 0x24, unit: "V/m", quantity: "electric field strength", unitName: "volt per metre", siDefinition: "" },
        { code: 0x25, unit: "F", quantity: "capacitance", unitName: "farad", siDefinition: "C/V = As/V" },
        { code: 0x26, unit: "Ω", quantity: "resistance", unitName: "ohm", siDefinition: "Ω = V/A" },
        { code: 0x27, unit: "Ωm²/m", quantity: "resistivity", unitName: "Ωm", siDefinition: "" },
        { code: 0x28, unit: "Wb", quantity: "magnetic flux", unitName: "weber", siDefinition: "Wb = Vs" },
        { code: 0x29, unit: "T", quantity: "magnetic flux density", unitName: "tesla", siDefinition: "Wb/m2" },
        { code: 0x2A, unit: "A/m", quantity: "magnetic field strength", unitName: "ampere per metre", siDefinition: "A/m" },
        { code: 0x2B, unit: "H", quantity: "inductance", unitName: "henry", siDefinition: "H = Wb/A" },
        { code: 0x2C, unit: "Hz", quantity: "frequency", unitName: "hertz", siDefinition: "1/s" },
        { code: 0x2D, unit: "1/(Wh)", quantity: "R_W", unitName: "Active energy meter constant or pulse value", siDefinition: "" },
        { code: 0x2E, unit: "1/(varh)", quantity: "R_B", unitName: "reactive energy meter constant or pulse value", siDefinition: "" },
        { code: 0x2F, unit: "1/(VAh)", quantity: "R_S", unitName: "apparent energy meter constant or pulse value", siDefinition: "" },
        { code: 0x30, unit: "V²h", quantity: "volt-squared hour", unitName: "volt-squaredhours", siDefinition: "V²(60*60s)" },
        { code: 0x31, unit: "A²h", quantity: "ampere-squared hour", unitName: "ampere-squaredhours", siDefinition: "A²(60*60s)" },
        { code: 0x32, unit: "kg/s", quantity: "mass flux", unitName: "kilogram per second", siDefinition: "kg/s" },
        { code: 0x33, unit: "S, mho", quantity: "conductance siemens", unitName: "siemens", siDefinition: "1/Ω" },
        { code: 0x34, unit: "K", quantity: "temperature", unitName: "kelvin", siDefinition: "" },
        { code: 0x35, unit: "1/(V²h)", quantity: "", unitName: "Volt-squared hour meter constant or pulse value", siDefinition: "" },
        { code: 0x36, unit: "1/(A²h)", quantity: "", unitName: "Ampere-squared hour meter constant or pulse value", siDefinition: "" },
        { code: 0x37, unit: "1/m³", quantity: "R_V", unitName: "meter constant or pulse value (volume)", siDefinition: "" },
        { code: 0x38, unit: "%", quantity: "percentage", unitName: "%", siDefinition: "" },
        { code: 0x39, unit: "Ah", quantity: "ampere-hours", unitName: "ampere-hour", siDefinition: "" },
        { code: 0x3C, unit: "Wh/m³", quantity: "energy per volume", unitName: "", siDefinition: "3,6*103 J/m³" },
        { code: 0x3D, unit: "J/m³", quantity: "calorific value, wobbe", unitName: "", siDefinition: "" },
        { code: 0x3E, unit: "Mol %", quantity: "molar fraction of", unitName: "mole percent", siDefinition: "Basic gas composition unit" },
        { code: 0x3F, unit: "Wh/m³", quantity: "energy per volume", unitName: "", siDefinition: "3,6*103 J/m³" },
        { code: 0x40, unit: "(reserved)", quantity: "", unitName: "", siDefinition: "" },
        { code: 0x41, unit: "(other)", quantity: "", unitName: "", siDefinition: "" },
        { code: 0x42, unit: "(unitless)", quantity: "no unit, unitless, count", unitName: "", siDefinition: "" },
        { code: 0x0, unit: "", quantity: "", unitName: "", siDefinition: "stop condition for iterator" }
    ];
    
    function findDlmsUnitByCode(decimalCode, dlmsUnits) {
        const found = dlmsUnits.find(item => item.code === decimalCode);
        return found ? found.unit : "";
    }
    
    function parseSignedHex(hexStr) {
        let num = BigInt("0x" + hexStr);
        let bitLength = hexStr.length * 4;
        if (bitLength <= 32) {
            // Behandlung als 32-Bit-Zahl
            if (num > 0x7FFFFFFF) {
                num = num - 0x100000000n;
            }
        } else {
            // Behandlung als 64-Bit-Zahl
            if (num > 0x7FFFFFFFFFFFFFFFn) {
                num = num - 0x10000000000000000n;
            }
        }
        return Number(num.toString());
    }
    
    function extractAndParseSMLMessages(transfer) {
        const messages = transfer.matchAll(/7707(0100[0-9a-fA-F].{5}?ff).{6,14}?([0-9a-fA-F]{2})52([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{4,16})01(?=7)/g);
        for (const match of messages) {
            let result = {}
            if (debug) console.log('Gesamte Übereinstimmung:' + match[0]);
            //console.log('Gruppe 1:'+ match[1]); // Der Teil, der dem ersten Klammerausdruck entspricht
            //console.log('Gruppe 2:'+ match[2]); // Der Teil, der dem zweiten Klammerausdruck entspricht
            //console.log('Gruppe 3:'+ match[3]); // Der Teil, der dem dritten Klammerausdruck entspricht
            //console.log('Gruppe 4:'+ match[4]); // Der Teil, der dem dritten Klammerausdruck entspricht
            //console.log('Gruppe 5:'+ match[5]); // Der Teil, der dem vierten Klammerausdruck entspricht
            
            result.name = findObisCodeName(match[1], obisCodesWithNames)
            result.value = parseSignedHex(match[5])
            const decimalCode = parseInt(match[2], 16);
            result.unit = findDlmsUnitByCode(decimalCode, dlmsUnits)
            
            if (match[3].toLowerCase() == "ff") {
                result.value = result.value / 10
            } else if (match[3].toLowerCase() == "fe") {
                result.value = result.value / 100
            }
            const valId = TibberConfig.statesPrefix + ".SML." + result.name
            if (isState2(valId)) {
                setStateAsync(valId, result.value, true)
            } else {
                let common = {
                    name: result.name,
                    type: 'mixed',
                    role: 'state',
                    unit: result.unit,
                    read: true,
                    write: true,
                };
                let native = {}
                createState(valId, result.value, false, common, native);
            }
            if (debug) log(JSON.stringify(result))
        }
    }
    function swapEndianness(hexStr) {
        const result = [];
        for (let i = 0; i < hexStr.length; i += 2) {
            result.unshift(hexStr.substring(i, i + 2));
        }
        return result.join('');
    }
    if (typeof TestData == 'undefined') {
        getPulseData(TibberConfig.password).then(response => {
            if (debug) console.log("Bridge Data: " + response); // 
            generateAndSyncSub("Data", JSON.parse(response), false, TibberConfig.statesPrefix)
        }).catch(error => {
            console.error(error);
        });
    
        //jede x Sekunden
        var intervalID = setInterval(function () {
            // Daten abrufen und als HEX-String ausgeben
            getDataAsHexString(TibberConfig.password).then(hexString => {
                extractAndParseSMLMessages(hexString);
                if (debug) console.log(hexString); // Gibt die Daten als HEX-String aus
                if (isState2(TibberConfig.statesPrefix + ".SMLDataHEX")) {
                    setState(TibberConfig.statesPrefix + ".SMLDataHEX", hexString, true)
                } else {
                    createState(TibberConfig.statesPrefix + ".SMLDataHEX", hexString, false);
                }
            }).catch(error => {
                log('Fehler beim Abrufen der Daten:' + error);
            });
        }, TibberConfig.interval);
    }else{
        const parsedMessages = extractAndParseSMLMessages(TestData);
    }
    
    
    K Offline
    K Offline
    karo2204
    schrieb am zuletzt editiert von
    #859

    @waly_de ich habe alles hinbekommen, doch leider wird mir kein Feld "Power" angezeigt, nur "Power_L1", "Power_L2" und "Power_L3". Was nehm ich da jetzt?

    Kannst Du irgendwie noch die PriceLevel Abfrage in Dein Tibber Script einbauen, damit man das nicht über die Instanz "Tibber Link" abrufen muss. Ich bekomme da immer Fehler....Screenshot 2023-12-24 at 15.38.50.png

    ioBroker
    Tibber
    Ecoflow Powerstream & Delta Max 2000

    D K 2 Antworten Letzte Antwort
    0
    • K karo2204

      @waly_de ich habe alles hinbekommen, doch leider wird mir kein Feld "Power" angezeigt, nur "Power_L1", "Power_L2" und "Power_L3". Was nehm ich da jetzt?

      Kannst Du irgendwie noch die PriceLevel Abfrage in Dein Tibber Script einbauen, damit man das nicht über die Instanz "Tibber Link" abrufen muss. Ich bekomme da immer Fehler....Screenshot 2023-12-24 at 15.38.50.png

      D Offline
      D Offline
      Der Tom
      schrieb am zuletzt editiert von
      #860

      Hallo zusammen,

      frohe Weihnachten :-)

      Ich habe das Script seit einiger Zeit am Laufen - vielen Dank an alle, die hier an der Entwicklung beteiligt waren.

      Ich habe ein River 2 Pro und würde gern die Watt-Zahl mit der AC geladen wird einstellen.
      Da ich kein Delta 2 habe, kommt:
      0_userdata.0.ecoflow.app_17XXXXXXXXXXXXXXXXX_R6XXXXXXXXXXXXXX_thing_property_set.writeables.acChgCfg_D2
      wohl nicht in Frage (funktioniert auch nicht - bereits getestet)

      Meiner Meinung nach, wäre der Parameter:
      0_userdata.0.ecoflow.app_device_property_R6XXXXXXXXXXXXXX.data.params.mppt.cfgChgWatts
      korrekt oder?
      Leider auch ohne Erfolg - auch hier ändert sich nichts.

      Im Script gibt es keine Auswahl vom River 2 Pro, daher habe ich auf NA gestellt.
      Wie bekomme ich die AC Ladeleistung geregelt?

      Danke fürs helfen.

      Grüße
      Der Tom

      F W 2 Antworten Letzte Antwort
      0
      • K karo2204

        @waly_de ich habe alles hinbekommen, doch leider wird mir kein Feld "Power" angezeigt, nur "Power_L1", "Power_L2" und "Power_L3". Was nehm ich da jetzt?

        Kannst Du irgendwie noch die PriceLevel Abfrage in Dein Tibber Script einbauen, damit man das nicht über die Instanz "Tibber Link" abrufen muss. Ich bekomme da immer Fehler....Screenshot 2023-12-24 at 15.38.50.png

        K Offline
        K Offline
        karo2204
        schrieb am zuletzt editiert von karo2204
        #861

        @karo2204 Jetzt ist Power plötzlich in den Objekten drin gewesen... Aber funktionieren tut es trotzdem noch nicht.

        ioBroker
        Tibber
        Ecoflow Powerstream & Delta Max 2000

        1 Antwort Letzte Antwort
        0
        • K Offline
          K Offline
          karo2204
          schrieb am zuletzt editiert von
          #862

          Ich bekomme jetzt in den Logs folgende Fehler angezeigt:

          script.js.ecoflow-connector_v12__04_12_2023: getLowestValue-error: timeout
          
          script.js.ecoflow-connector_v12__04_12_2023: Fehler beim Abrufen des niedrigsten Werts: timeout
          

          Was kann das sein?

          Grüße, Karo

          ioBroker
          Tibber
          Ecoflow Powerstream & Delta Max 2000

          W 1 Antwort Letzte Antwort
          0
          • D Der Tom

            Hallo zusammen,

            frohe Weihnachten :-)

            Ich habe das Script seit einiger Zeit am Laufen - vielen Dank an alle, die hier an der Entwicklung beteiligt waren.

            Ich habe ein River 2 Pro und würde gern die Watt-Zahl mit der AC geladen wird einstellen.
            Da ich kein Delta 2 habe, kommt:
            0_userdata.0.ecoflow.app_17XXXXXXXXXXXXXXXXX_R6XXXXXXXXXXXXXX_thing_property_set.writeables.acChgCfg_D2
            wohl nicht in Frage (funktioniert auch nicht - bereits getestet)

            Meiner Meinung nach, wäre der Parameter:
            0_userdata.0.ecoflow.app_device_property_R6XXXXXXXXXXXXXX.data.params.mppt.cfgChgWatts
            korrekt oder?
            Leider auch ohne Erfolg - auch hier ändert sich nichts.

            Im Script gibt es keine Auswahl vom River 2 Pro, daher habe ich auf NA gestellt.
            Wie bekomme ich die AC Ladeleistung geregelt?

            Danke fürs helfen.

            Grüße
            Der Tom

            F Offline
            F Offline
            foxthefox
            Developer
            schrieb am zuletzt editiert von
            #863

            @der-tom
            Mit der Implementierung weiterer Geräte ist das immer so eine Sache, da gehört leider ein wenig Recherche und Probiererei dazu.

            Ich werde demnächst ein update für den ecoflow-mqtt Adapter rausbringen, der auch die River Serie enthält.
            Den könnte man zum Ausprobieren und Festhalten der exakten Befehle und Daten hernehmen.
            Wenn das dann eine korrekte Kommunikation mit River2Pro ergibt, dann kann man ggf. die Essenz in das Script einfließen lassen.

            Adapterüberblick: Profil Github;

            Wenn der Adapter gefällt und nützlich ist, bitte ins Repo gehen und Star setzen. Danke

            Ein Aufruf: video

            1 Antwort Letzte Antwort
            0
            • D Offline
              D Offline
              Der Tom
              schrieb am zuletzt editiert von
              #864

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

              ecoflow-mqtt Adapter

              Hi,

              ich habe mir mal eben fix den Adapter installiert.
              Aktuell schein keine Verbindung möglich zu sein, mag mit Sicherheit an der fehlenden Auswahl der Powerstation zusammenhängen.

              Ich helfe Dir gern bei der Implementierung der River-Serie - zumindest was das Testen angeht.
              Lass mich wissen, wenn der Adapter soweit ist, dann teste ich und liefere gern einige Debug-Logs dazu.

              Grüße
              Der Tom

              F 1 Antwort Letzte Antwort
              0
              • D Der Tom

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

                ecoflow-mqtt Adapter

                Hi,

                ich habe mir mal eben fix den Adapter installiert.
                Aktuell schein keine Verbindung möglich zu sein, mag mit Sicherheit an der fehlenden Auswahl der Powerstation zusammenhängen.

                Ich helfe Dir gern bei der Implementierung der River-Serie - zumindest was das Testen angeht.
                Lass mich wissen, wenn der Adapter soweit ist, dann teste ich und liefere gern einige Debug-Logs dazu.

                Grüße
                Der Tom

                F Offline
                F Offline
                foxthefox
                Developer
                schrieb am zuletzt editiert von
                #865

                @der-tom
                ja super, am besten dann im anderen thread
                https://forum.iobroker.net/topic/69819/neuer-adapter-ecoflow-mqtt

                ich habe es etwas unglücklich geschrieben, River Serie kommt mit 0.0.14 und ist noch in Arbeit.
                Aber heute Abend könnte es mit dem Veröffentlichen soweit sein

                Adapterüberblick: Profil Github;

                Wenn der Adapter gefällt und nützlich ist, bitte ins Repo gehen und Star setzen. Danke

                Ein Aufruf: video

                1 Antwort Letzte Antwort
                0
                • J Offline
                  J Offline
                  Joppe
                  schrieb am zuletzt editiert von Joppe
                  #866

                  Falls das schon gefragt und beantwortet wurde:
                  Sorry!
                  Aber: Könnten wir das Script bitte auf Git/GitHub bringen?
                  Das Script ist genial, ich habe meinen Dank schon zum Ausdruck gebracht.
                  Git würde aber den Vorteil bringen dass wir alle unseren Beitrag zum Script anbieten können. Ich selber habe ein paar Zusätze die ich jedesmal wieder mühsam mergen muss wenn eine neue Version des Grundscripts kommt.
                  Coole Sidefeatures könnten über PullRequests in den Code einfließen, wobei dem Scriptersteller volle Kontrolle erhalten bleibt was ins Script kommt und was nicht. Außerdem stünde ein schönes changelog zur Verfügung - mir Versionskontrolle und Vergleich unter jedem Commit - top!
                  Ich unterstütze auch gerne beim Aufbau des Repository - falls gewünscht.
                  Danke dass ich meine Meinung kundtun durfte,
                  Mane
                  äh ich mein Joppe. :)

                  W 1 Antwort Letzte Antwort
                  0
                  • J Offline
                    J Offline
                    Joppe
                    schrieb am zuletzt editiert von
                    #867

                    Was ich auch noch erzählen wollte: Auch ich hatte zig Ausfälle des WLans am Powerstream.
                    Nach einigen Tests fiel auf dass die Software nicht mit dem MeshNetzwerk auskam, auch zu viele Geräte im Netzwerk führten zu Problemen.
                    Ich hab mir jetzt für 15 € einen eigenen Router gekauft, ein Sub-Netzwerk erstellt (Netzwerkkabel des Hauptnetzes an den WAN Port des neuen Routers...damit hab ich ein eigenes kleines WLAN nur für die ecoflow Geräte...seitdem kein einziges Mal mehr die Verbindung verloren...
                    Wenn jemand mehr Infos braucht...PM.
                    Schöne Grüße,
                    Joppe

                    1 Antwort Letzte Antwort
                    1
                    • A Offline
                      A Offline
                      aherby
                      schrieb am zuletzt editiert von aherby
                      #868

                      @foxthefox ,@der-tom
                      Matthias Klein hat vor einiger Zeit eine Ecoflow River als UVS und Batteriespeicher gebaut.
                      Über offizielle Api und iobroker-Forum wohl viele Infos bekommen.
                      Der Bloglink ist hier:
                      Haus-Automatisierung Ecoflow River 2 Batteriespeicher

                      haus-automatisierung.com/hardware/2023/02/13/ecoflow-river-2-usv-batteriespeicher.html
                      

                      vielleicht hilft es.

                      F 1 Antwort Letzte Antwort
                      1
                      • A aherby

                        @foxthefox ,@der-tom
                        Matthias Klein hat vor einiger Zeit eine Ecoflow River als UVS und Batteriespeicher gebaut.
                        Über offizielle Api und iobroker-Forum wohl viele Infos bekommen.
                        Der Bloglink ist hier:
                        Haus-Automatisierung Ecoflow River 2 Batteriespeicher

                        haus-automatisierung.com/hardware/2023/02/13/ecoflow-river-2-usv-batteriespeicher.html
                        

                        vielleicht hilft es.

                        F Offline
                        F Offline
                        foxthefox
                        Developer
                        schrieb am zuletzt editiert von
                        #869

                        @aherby
                        Danke, den Beitrag kenn ich, steht auch in der Readme vom Adapter

                        Adapterüberblick: Profil Github;

                        Wenn der Adapter gefällt und nützlich ist, bitte ins Repo gehen und Star setzen. Danke

                        Ein Aufruf: video

                        A 1 Antwort Letzte Antwort
                        0
                        • F foxthefox

                          @aherby
                          Danke, den Beitrag kenn ich, steht auch in der Readme vom Adapter

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

                          @foxthefox Stimmt dann auch gesehen, sorry.

                          1 Antwort Letzte Antwort
                          0
                          • A aherby

                            @foxthefox Schau mal ob hier die Helligkeit drin ist:

                            Nachricht: {"header":[{"pdata":"08a307","src":32,"dest":53,"dSrc":1,"dDest":1,"checkType":3,"cmdFunc":2,
                            "cmdId":130,"dataLen":3,"needAck":1,"seq":1683706391,"version":19,"payloadVer":1,"from":"ios","deviceSn":"HW52ZDH4SF66xxxx"}]}
                            
                            Nicht definierter cmd_func-Wert. [Wasserkocher] cmdId:130 cmdFunc:2
                            0a36102018352001280138034002488201580170ccb788a206800113880101ba0103696f73ca0110485735325a4448345346363636353838
                            
                            0a3d0a030880041020183520012801380340024882015003580170bfef88a206800113880101ba0103696f73ca0110485735325a4448345346363636353838
                            
                            0a3d0a0308ff071020183520012801380340024882015003580170829089a206800113880101ba0103696f73ca0110485735325a4448345346363636353838
                            

                            Max Power / Überlastschutz hier ?:

                            script.js.Ecoflow_Dynamische_Leistung_V1_2: Nachricht: {"header":[{"pdata":"08880e","src":32,"dest":53,"dSrc":1,"dDest":1,"checkType":3,"cmdFunc":2,"cmdId":137,"dataLen":3,"needAck":1,"seq":1683834767,"version":19,"payloadVer":1,"from":"ios","deviceSn":"HW52ZDH4SF66xxxx"}]}
                            
                            0a3d0a0308d60d1020183520012801380340024889015003580170bb99a6a206800113880101ba0103696f73ca0110485735325a4448345346363636353838
                            [Wasserkocher] cmdId:137 cmdFunc:2
                            
                            0a3d0a0308c4131020183520012801380340024889015003580170f9b8a6a206800113880101ba0103696f73ca0110485735325a4448345346363636353838
                            
                            0a2e0a0368c41310351820200128014002480150035801800103880103ca0110485735325a4448345346363636353838
                            
                            script.js.1_16_1_Ecoflow_Dynamische_Leistung: Decodierte Nachricht:{"data":{"plug_heartbeat_pack":{"maxWatts":2500}}}
                            
                            W Offline
                            W Offline
                            Waly_de
                            schrieb am zuletzt editiert von
                            #871

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

                            @foxthefox Schau mal ob hier die Helligkeit drin ist:

                            Nachricht: {"header":[{"pdata":"08a307","src":32,"dest":53,"dSrc":1,"dDest":1,"checkType":3,"cmdFunc":2,
                            "cmdId":130,"dataLen":3,"needAck":1,"seq":1683706391,"version":19,"payloadVer":1,"from":"ios","deviceSn":"HW52ZDH4SF66xxxx"}]}
                            

                            Max Power / Überlastschutz hier ?:

                            script.js.Ecoflow_Dynamische_Leistung_V1_2: Nachricht: {"header":[{"pdata":"08880e","src":32,"dest":53,"dSrc":1,"dDest":1,"checkType":3,"cmdFunc":2,"cmdId":137,"dataLen":3,"needAck":1,"seq":1683834767,"version":19,"payloadVer":1,"from":"ios","deviceSn":"HW52ZDH4SF66xxxx"}]}
                            

                            Dank Dir. Die Writeables sind in der nächsten Script-Version drin.

                            1 Antwort Letzte Antwort
                            0
                            • W Waly_de

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

                              allerdings gibt es bei mir ein Problem mit der Funktion BigInt():
                              Cannot find name 'BigInt'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2020' or later.(2583)
                              Keine Ahnung wo ich die Option für den Compiler anpassen muss - gibt es da eine Lösung oder Hilfestellung?

                              Ich nehme an, du bekommst diese Meldung nur im Editor und nicht beim Ausführen des Scripts, richtig?
                              Das hatte ich auch, es geht scheinbar um die javascript Versionen. Man kann das abstellen indem man "es2020" in den in den Instanz-Einstellungen des Javascriptadapters unter "Die Syntaxhilfe für diese npm-Module aktivieren:" einträgt.
                              Ich habe dort 3 Einträge: JSON,string und es2020.

                              Bildschirmfoto 2023-12-16 um 11.54.51.jpg

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

                              @waly_de @foxthefox Ich habe gerade mal etwas getestet oder gespielt.

                              feed_priortiy
                              

                              ist die Einspeisekontrolle, auch schon als Schreibwert unter den Objekten vorhanden.

                              Einspeisekontrolle
                              Ist die Batterie voll geladen,, liefert das System Strom nach dem voreingestellten Strombedaf des Haushalts um die Einspeisund des überschüssigen Stroms ins Netz zu verhindern. Wenn sie den Solarertrag maximieren möchten, sollten Sie diese Funktion am besten deaktivieren.

                              Ah ok ist ja unter Version 1.1.6.2 beschrieben das der PArameter aufgenommen wurde.

                              Gibt es eigentlich irgendwo eine Doku was hinter allen Parametern steckt?

                              W 1 Antwort Letzte Antwort
                              0
                              • F foxthefox

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

                                @foxthefox noch weiter Daten benötigt?
                                Sobald mal mehr Sonne da ist würde ich dass mit den Smartplugs und mit oder ohne Berücksichtigung ins Hausnetz weiter loggen.

                                Ja gerne, ich bräuchte auch mal ein HEX String von den normalen update Daten die zyklisch kommen, da müsste eigentlich dieses Bit für "Berücksichtigung im Powerstream"neu drin sein.

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

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

                                Ja gerne, ich bräuchte auch mal ein HEX String von den normalen update Daten die zyklisch kommen, da müsste eigentlich dieses Bit für "Berücksichtigung im Powerstream"neu drin sein.

                                Ich hab im Script jetzt eine Möglichkeit zum Loggen aller hereinkommenden Nachrichten einer Bestimmten Serialnummer eingebaut.

                                const SERIAL_TO_LOG = "DAEBXXXXXXXXXXXXX"
                                const LogAllOfSerial = false //false= nur Set-Anweisungen, true = alles von der Seriennummer
                                

                                Könnte vielleicht hilfreich sein.
                                Die Datei sieht dann so aus:

                                27.12.2023, 10:47:35 Topic:/app/device/property/DAEBXXXXXXXXXXXXX Data:{"addr":0,"cmdFunc":0,"cmdId":0,"id":1622934611910209800,"version":"1.0","timestamp":1703670455502,"params":{"bmsMaster.f32ShowSoc":6.7590156,"bmsMaster.designCap":40000,"bmsMaster.remainCap":1630,"bmsMaster.temp":24,"bmsMaster.bmsFault":0,"bmsMaster.maxCellTemp":24,"bmsMaster.vol":49806,"bmsMaster.soh":98,"bmsMaster.sysVer":16778263,"bmsMaster.bqSysStatReg":128,"bmsMaster.amp":0,"bmsMaster.outputWatts":0,"bmsMaster.soc":7,"bmsMaster.num":0,"bmsMaster.openBmsIdx":1,"bmsMaster.type":1,"bmsMaster.minCellTemp":24,"bmsMaster.errCode":0,"latestTimeStamp":1703670455502,"bmsMaster.maxMosTemp":27,"bmsMaster.tagChgAmp":32000,"bmsMaster.maxCellVol":3573,"bmsMaster.inputWatts":0,"bmsMaster.minMosTemp":27,"bmsMaster.remainTime":0,"bmsMaster.minCellVol":3453,"bmsMaster.fullCap":24120,"bmsMaster.cellId":1,"bmsMaster.cycles":168}}
                                27.12.2023, 10:47:35 Topic:/app/device/property/DAEBXXXXXXXXXXXXX Data:{"addr":0,"cmdFunc":0,"cmdId":0,"id":1622934611910213000,"version":"1.0","timestamp":1703670455632,"params":{"latestTimeStamp":1703670455632,"kit.maxKitNum":2,"kit.availableDataLen":83,"kit.productInfoDetails":[{"procedureState":1,"appVersion":83886777,"productDetail":1,"soc":0,"curPower":-10,"f32Soc":0,"protocolAvaiFlag":1,"sn":"HW51ZOH4SF5U0255","loaderVersion":83886338,"productType":75},{"procedureState":0,"appVersion":0,"productDetail":0,"soc":0,"curPower":0,"f32Soc":0,"protocolAvaiFlag":0,"sn":"","loaderVersion":0,"productType":0}],"kit.protocolVersion":1}}
                                27.12.2023, 10:47:36 Topic:/app/device/property/DAEBXXXXXXXXXXXXX Data:{"addr":0,"cmdFunc":0,"cmdId":0,"id":1622934620500132900,"version":"1.0","timestamp":1703670456037,"params":{"latestTimeStamp":1703670456037,"kit.maxKitNum":2,"kit.availableDataLen":83,"kit.productInfoDetails":[{"procedureState":1,"appVersion":83886777,"productDetail":1,"soc":0,"curPower":-9,"f32Soc":0,"protocolAvaiFlag":1,"sn":"HW51ZOH4SF5U0255","loaderVersion":83886338,"productType":75},{"procedureState":0,"appVersion":0,"productDetail":0,"soc":0,"curPower":0,"f32Soc":0,"protocolAvaiFlag":0,"sn":"","loaderVersion":0,"productType":0}],"kit.protocolVersion":1}}
                                27.12.2023, 10:47:36 Topic:/app/device/property/DAEBXXXXXXXXXXXXX Data:{"addr":0,"cmdFunc":0,"cmdId":0,"id":1622934620500139300,"version":"1.0","timestamp":1703670456294,"params":{"ems.chgCmd":2,"ems.bmsWarningState":0,"ems.minDsgSoc":7,"ems.paraVolMax":50805,"ems.f32LcdShowSoc":6.7578773,"ems.lcdShowSoc":7,"ems.emsIsNormalFlag":1,"ems.bms0Online":3,"ems.minOpenOilEbSoc":0,"ems.maxChargeSoc":99,"ems.chgRemainTime":5999,"ems.paraVolMin":48805,"ems.openBmsIdx":1,"ems.dsgRemainTime":489,"ems.maxAvailableNum":1,"latestTimeStamp":1703670456294,"ems.bms1Online":3,"ems.chgVol":50806,"ems.bmsModel":2,"ems.dsgCmd":2,"ems.openUpsFlag":1,"ems.maxCloseOilEbSoc":100,"ems.chgState":1,"ems.fanLevel":0,"ems.chgAmp":0,"ems.bms2Online":0}}
                                27.12.2023, 10:47:36 Topic:/app/device/property/DAEBXXXXXXXXXXXXX Data:{"addr":0,"cmdFunc":0,"cmdId":0,"id":1622934620500140500,"version":"1.0","timestamp":1703670456336,"params":{"bmsMaster.f32ShowSoc":6.7590156,"bmsMaster.designCap":40000,"bmsMaster.remainCap":1630,"bmsMaster.temp":24,"bmsMaster.bmsFault":0,"bmsMaster.maxCellTemp":24,"bmsMaster.vol":49806,"bmsMaster.soh":98,"bmsMaster.sysVer":16778263,"bmsMaster.bqSysStatReg":128,"bmsMaster.amp":0,"bmsMaster.outputWatts":0,"bmsMaster.soc":7,"bmsMaster.num":0,"bmsMaster.openBmsIdx":1,"bmsMaster.type":1,"bmsMaster.minCellTemp":24,"bmsMaster.errCode":0,"latestTimeStamp":1703670456336,"bmsMaster.maxMosTemp":27,"bmsMaster.tagChgAmp":32000,"bmsMaster.maxCellVol":3573,"bmsMaster.inputWatts":0,"bmsMaster.minMosTemp":27,"bmsMaster.remainTime":0,"bmsMaster.minCellVol":3453,"bmsMaster.fullCap":24120,"bmsMaster.cellId":1,"bmsMaster.cycles":168}}
                                27.12.2023, 10:47:36 Topic:/app/device/property/DAEBXXXXXXXXXXXXX Data:{"addr":0,"cmdFunc":0,"cmdId":0,"id":1622934620500143900,"version":"1.0","timestamp":1703670456485,"params":{"latestTimeStamp":1703670456485,"kit.maxKitNum":2,"kit.availableDataLen":83,"kit.productInfoDetails":[{"procedureState":1,"appVersion":83886777,"productDetail":1,"soc":0,"curPower":-10,"f32Soc":0,"protocolAvaiFlag":1,"sn":"HW51ZOH4SF5U0255","loaderVersion":83886338,"productType":75},{"procedureState":0,"appVersion":0,"productDetail":0,"soc":0,"curPower":0,"f32Soc":0,"protocolAvaiFlag":0,"sn":"","loaderVersion":0,"productType":0}],"kit.protocolVersion":1}}
                                

                                bei den PS oder Plugs kommen die Hexstrings uninterpretiert.
                                Ist das für Dich so zu gebrauchen?
                                Kommt mit der nächsten Version

                                1 Antwort Letzte Antwort
                                0
                                • D Der Tom

                                  Hallo zusammen,

                                  frohe Weihnachten :-)

                                  Ich habe das Script seit einiger Zeit am Laufen - vielen Dank an alle, die hier an der Entwicklung beteiligt waren.

                                  Ich habe ein River 2 Pro und würde gern die Watt-Zahl mit der AC geladen wird einstellen.
                                  Da ich kein Delta 2 habe, kommt:
                                  0_userdata.0.ecoflow.app_17XXXXXXXXXXXXXXXXX_R6XXXXXXXXXXXXXX_thing_property_set.writeables.acChgCfg_D2
                                  wohl nicht in Frage (funktioniert auch nicht - bereits getestet)

                                  Meiner Meinung nach, wäre der Parameter:
                                  0_userdata.0.ecoflow.app_device_property_R6XXXXXXXXXXXXXX.data.params.mppt.cfgChgWatts
                                  korrekt oder?
                                  Leider auch ohne Erfolg - auch hier ändert sich nichts.

                                  Im Script gibt es keine Auswahl vom River 2 Pro, daher habe ich auf NA gestellt.
                                  Wie bekomme ich die AC Ladeleistung geregelt?

                                  Danke fürs helfen.

                                  Grüße
                                  Der Tom

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

                                  @der-tom sagte in ecoflow-connector-Script zur dynamischen Leistungsanpassung:

                                  Hallo zusammen,

                                  frohe Weihnachten :-)

                                  Ich habe das Script seit einiger Zeit am Laufen - vielen Dank an alle, die hier an der Entwicklung beteiligt waren.

                                  Ich habe ein River 2 Pro und würde gern die Watt-Zahl mit der AC geladen wird einstellen.
                                  Da ich kein Delta 2 habe, kommt:
                                  0_userdata.0.ecoflow.app_17XXXXXXXXXXXXXXXXX_R6XXXXXXXXXXXXXX_thing_property_set.writeables.acChgCfg_D2
                                  wohl nicht in Frage (funktioniert auch nicht - bereits getestet)

                                  Meiner Meinung nach, wäre der Parameter:
                                  0_userdata.0.ecoflow.app_device_property_R6XXXXXXXXXXXXXX.data.params.mppt.cfgChgWatts
                                  korrekt oder?
                                  Leider auch ohne Erfolg - auch hier ändert sich nichts.

                                  Im Script gibt es keine Auswahl vom River 2 Pro, daher habe ich auf NA gestellt.
                                  Wie bekomme ich die AC Ladeleistung geregelt?

                                  Danke fürs helfen.

                                  Grüße
                                  Der Tom

                                  ich würde Dir gern helfen und den " River 2 Pro" als neuen Typen anlegen.
                                  Damit das möglichst schnell geht, kannst du mir helfen.
                                  Bitte mach folgendes:

                                  • Suche im Script nach:
                                    const SERIAL_TO_LOG = "DAEBXXXXXXXXXXXXX"
                                  • Trage da die Seriennummer von Deinem River 2 Pro ein.
                                  • Starte das Script
                                  • Ändere in der App alles was man verändern kann einmal und stell es dann wieder auf den Urzustand
                                  • ändere dann wieder:
                                    const SERIAL_TO_LOG = "DAEBXXXXXXXXXXXXX"
                                    Damit das Logfile nicht zu groß wird.

                                  Dann schick mir bitte das File. Du findest es unter: 'Protokolle / Log Herunterladen'

                                  1 Antwort Letzte Antwort
                                  0
                                  • K karo2204

                                    Ich bekomme jetzt in den Logs folgende Fehler angezeigt:

                                    script.js.ecoflow-connector_v12__04_12_2023: getLowestValue-error: timeout
                                    
                                    script.js.ecoflow-connector_v12__04_12_2023: Fehler beim Abrufen des niedrigsten Werts: timeout
                                    

                                    Was kann das sein?

                                    Grüße, Karo

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

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

                                    Ich bekomme jetzt in den Logs folgende Fehler angezeigt:
                                    script.js.ecoflow-connector_v12__04_12_2023: getLowestValue-error: timeout

                                    script.js.ecoflow-connector_v12__04_12_2023: Fehler beim Abrufen des niedrigsten Werts: timeout

                                    Was kann das sein?

                                    @karo2204 Wenn das nicht ständig auftritt, kannst du es Ignorieren. Auch mal das Script und den History-Adapter neu starten.

                                    K 1 Antwort Letzte Antwort
                                    0
                                    • J Joppe

                                      Falls das schon gefragt und beantwortet wurde:
                                      Sorry!
                                      Aber: Könnten wir das Script bitte auf Git/GitHub bringen?
                                      Das Script ist genial, ich habe meinen Dank schon zum Ausdruck gebracht.
                                      Git würde aber den Vorteil bringen dass wir alle unseren Beitrag zum Script anbieten können. Ich selber habe ein paar Zusätze die ich jedesmal wieder mühsam mergen muss wenn eine neue Version des Grundscripts kommt.
                                      Coole Sidefeatures könnten über PullRequests in den Code einfließen, wobei dem Scriptersteller volle Kontrolle erhalten bleibt was ins Script kommt und was nicht. Außerdem stünde ein schönes changelog zur Verfügung - mir Versionskontrolle und Vergleich unter jedem Commit - top!
                                      Ich unterstütze auch gerne beim Aufbau des Repository - falls gewünscht.
                                      Danke dass ich meine Meinung kundtun durfte,
                                      Mane
                                      äh ich mein Joppe. :)

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

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

                                      Falls das schon gefragt und beantwortet wurde:
                                      Sorry!
                                      Aber: Könnten wir das Script bitte auf Git/GitHub bringen?
                                      Das Script ist genial, ich habe meinen Dank schon zum Ausdruck gebracht.
                                      Git würde aber den Vorteil bringen dass wir alle unseren Beitrag zum Script anbieten können. Ich selber habe ein paar Zusätze die ich jedesmal wieder mühsam mergen muss wenn eine neue Version des Grundscripts kommt.
                                      Coole Sidefeatures könnten über PullRequests in den Code einfließen, wobei dem Scriptersteller volle Kontrolle erhalten bleibt was ins Script kommt und was nicht. Außerdem stünde ein schönes changelog zur Verfügung - mir Versionskontrolle und Vergleich unter jedem Commit - top!
                                      Ich unterstütze auch gerne beim Aufbau des Repository - falls gewünscht.
                                      Danke dass ich meine Meinung kundtun durfte,
                                      Mane
                                      äh ich mein Joppe. :)

                                      Du hast recht. Das wäre extrem sinnvoll. Ich hab mich bisher davor gedrückt, weil ich keine Ahnung habe, wie das funktioniert und meine Zeit ist ziemlich limitiert. Aber Wenn Du mir hilfst und mir einen Crashkurs gibts, wie ich damit umgehen muss... sehr gerne ;-) Einen Account hab ich schon.

                                      1 Antwort Letzte Antwort
                                      0
                                      • A aherby

                                        @waly_de @foxthefox Ich habe gerade mal etwas getestet oder gespielt.

                                        feed_priortiy
                                        

                                        ist die Einspeisekontrolle, auch schon als Schreibwert unter den Objekten vorhanden.

                                        Einspeisekontrolle
                                        Ist die Batterie voll geladen,, liefert das System Strom nach dem voreingestellten Strombedaf des Haushalts um die Einspeisund des überschüssigen Stroms ins Netz zu verhindern. Wenn sie den Solarertrag maximieren möchten, sollten Sie diese Funktion am besten deaktivieren.

                                        Ah ok ist ja unter Version 1.1.6.2 beschrieben das der PArameter aufgenommen wurde.

                                        Gibt es eigentlich irgendwo eine Doku was hinter allen Parametern steckt?

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

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

                                        Gibt es eigentlich irgendwo eine Doku was hinter allen Parametern steckt?

                                        soweit ich weiss nicht. Wenn Du sowas findest, sag Bescheid :-) Aber die meisten Namen sprechen ja für sich. Bei den meisten Daten aus dem Heartbeat hab ich allerdings auch keine Ahnung was genau sie bedeuten. Hoffentlich macht sich mal jemand die Mühe das genauer zu beschreiben.

                                        A 1 Antwort Letzte Antwort
                                        0
                                        • W Waly_de

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

                                          Ich bekomme jetzt in den Logs folgende Fehler angezeigt:
                                          script.js.ecoflow-connector_v12__04_12_2023: getLowestValue-error: timeout

                                          script.js.ecoflow-connector_v12__04_12_2023: Fehler beim Abrufen des niedrigsten Werts: timeout

                                          Was kann das sein?

                                          @karo2204 Wenn das nicht ständig auftritt, kannst du es Ignorieren. Auch mal das Script und den History-Adapter neu starten.

                                          K Offline
                                          K Offline
                                          karo2204
                                          schrieb am zuletzt editiert von
                                          #878

                                          @waly_de Danke Dir. Hat geholfen.

                                          ioBroker
                                          Tibber
                                          Ecoflow Powerstream & Delta Max 2000

                                          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

                                          649

                                          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