Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr

Lesedauer: 9 Minuten

Hinweis: für dieses Skript steht ein Update zur Verfügung!
Es wird nun auch der Shelly 3EM unterstützt.

In der Shelly Cloud App für iOS oder Android sieht man natürlich immer auf einen Blick, wie der Verbrauch der einzelnen oder aller Shelly ist.
Was ist aber, wenn man diese Daten auch gerne Offline zur weiteren Verarbeitung speichern möchte?
Hier stößt man leider schnell auf ein Problem, das der Verbrauch des Shelly zwar abgelesen werden kann – jedoch nur der Verbrauch seit dem letzten Neustart.

Somit würde sich der Verbrauch immer verändern, wenn der Shelly aufgrund von Stromausfall oder Software-Update neugestartet wurde.

Hierzu habe ich mir lange Gedanken gemacht und ein Skript entwickelt, welches die Werte aus den einzelnen Shelly in einer einstellbaren Zeit abfragt und in eigene Datenpunkte speichert. Auch ist eine Korrektur von Reboot Werten vorhanden. Somit werden die Zähler der temporären Berechnung genullt, sobald festgestellt wurde, das der Shelly neu gestartet wurde. Dies hat keinen Einfluss auf die gesamte Berechnung des Verbrauchs – im Gegenteil: Die Berechnung des Verbrauchs wird genauer!

Übersicht der Funktionen

Folgende Verbrauchswerte stehen in der Historie für jeden der Shelly zur Verfügung:

FunktionBeschreibung
Verbrauch heuteabgefragter Verbrauch heute
Verbrauch gesternabgefragter Verbrauch gestern
Verbrauch diese Wocheabgefragter Verbrauch für die gesamte Woche
Verbrauch letzte Wocheabgefragter Verbrauch für die gesamte letzte Woche
Verbrauch dieser Monatabgefragter Verbrauch für den gesamten Monat
Verbrauch letzter Monatabgefragter Verbrauch für den gesamten letzten Monat
Verbrauch dieses Jahrabgefragter Verbrauch für das gesamte Jahr
Verbrauch letztes Jahrabgefragter Verbrauch für das gesamte letzte Jahr
Verbrauch Gesamtabgefragter Verbrauch gesamt
NameZugewiesener Name des Shelly zum einfachen Wiederfinden
Übersicht über die einzelnen Datenpunkte

Screenshot der verfügbaren Variablen

Screenshot der verfügbaren Variablen
Screenshot der verfügbaren Variablen

Installation des Shelly Adapter

Installation des Shelly Adapter
Installation des Shelly Adapter

Nach kurzer Zeit stehen die Datenpunkte aller gefundenen Shellys unter shelly.0 zur Verfügung.

Skript

/*
 * @copyright 2021 Stephan Kreyenborg <stephan@kreyenborg.koeln>
 *
 * @author 2021 Stephan Kreyenborg <stephan@kreyenborg.koeln>
 *
 * Dieses Skript dient zur freien Verwendung in ioBroker zur Verbrauchserfassung der Shelly Geräte.
 * Jegliche Verantwortung liegt beim Benutzer. Das Skript wurde unter Berücksichtigung der bestmöglichen Nutzung
 * und Performance entwickelt.
 * Der Entwickler versichert, das keine böswilligen Systemeingriffe im originalen Skript vorhanden sind.
 *
 * Sollte das Skript wider Erwarten nicht korrekt funktionieren, so hast Du jederzeit die Möglichkeit, Dich auf
 * https://www.kreyenborg.koeln
 * für Unterstützung zu melden. Jedes Skript besitzt seine eigene Kommentarseite, auf der,
 * nach zeitlicher Möglichkeit des Autors, Hilfe angeboten wird. Ein Anrecht hierauf besteht nicht!
 * 
 * Ansprüche gegenüber Dritten bestehen nicht. 
 * 
 * Skript Name:      Shelly-Verbrauch
 * Skript Version:   1.60
 * Erstell-Datum:    08. Oktober 2021 | Update: 20. Juli 2022
 * 
 */

// Datenpunkte neu erstellen
var ueberschreiben = false;

// Hauptdatenpunkt unterhalb javascript
var datenpunkt = "ShellyVerbrauch."; // Abschließender Punkt !!! WICHTIG !!!

// Verbrauchs Objekte der einzelnen Shelly
var objekt = ["gesamt", "dieses_jahr", "letztes_jahr", "letzter_monat", "dieser_monat", "letzte_woche",
    "diese_woche", "gestern", "heute", "alter_wert", "aktueller_wert"
];

// Beschreibung der Objekte
var beschreibung = ["Gesamter Vebrauch des Shelly", "Verbrauch aktuelles Jahr", "Verbrauch letztes Jahr",
    "Verbrauch letzten Monat", "Verbrauch aktueller Monat", "Verbrauch letzte Woche", "Verbrauch diese Woche",
    "Verbrauch gestern", "Verbrauch heute", "Messwert alt", "Messwert neu"
];

// Datenpunkt der Shelly (Standard: shelly.0)
var shelly_dp = "shelly.0";

// Datenpunkte der Shelly (!!! Bitte nicht ändern !!!)
var shellyDps = $('state[id=' + shelly_dp + '.*.*.Energy]');

// Datenpunkte der Shelly 3EM DP
var shelly3EMDps = $('state[id=' + shelly_dp + '.*.*.Total]');

// Datenpunkte der Shelly 3EM DP - Total
var shelly3EMTotalDps = $('state[id=' + shelly_dp + '.*.*.ConsumedPower]');

// Datenpunkte der Shelly 3EM DP - Total
var shelly3EMTotalReturned = $('state[id=' + shelly_dp + '.*.*.Total_Returned]');

// Datenpunkte der Shelly Namen (!!! Bitte nicht ändern !!!)
var shellyDpsName = $('state[id=' + shelly_dp + '.*.name]');

// Shelly Verbrauch aktualisieren - nachts um 00:00 Uhr
function shelly_vebrauch_tag() {
    // Nochmals das Tagesupdate durchlaufen, damit die restlichen Werte gelesen werden
    shelly_verbrauch_update();

    // Datumsvariable
    var heute = new Date();

    // Heute zu Gestern verschieben. Täglich um 00:00 Uhr
    verschiebe_verbrauch_objekt("heute", "gestern");
    log("Shelly Verbrauch: Werte für gestern und heute aktualisiert!");

    // aktuelle Woche in letzte Woche verschieben. Am Montag um 00:00 Uhr
    if (heute.getDay() === 1) {
        verschiebe_verbrauch_objekt("diese_woche", "letzte_woche");
        log("Shelly Verbrauch: Werte für diese und letzte Woche aktualisiert!");
    }

    // aktueller Monat in letzten Monat verschieben. Am 1. des Monats um 00:00 Uhr
    if (heute.getDate() === 1) {
        verschiebe_verbrauch_objekt("dieser_monat", "letzter_monat");
        log("Shelly Verbrauch: Werte für diesen und letzten Monat aktualisiert!");
    }

    // aktuelles Jahr in letztes Jahr verschieben. Am 1. des Monats am 1. Monat um 00:00 Uhr
    if (heute.getDate() === 1 && heute.getMonth() === 0) {
        verschiebe_verbrauch_objekt("dieses_jahr", "letztes_jahr");
        log("Shelly Verbrauch: Werte für dieses und letztes Jahr aktualisiert!");
    }
}

// Tagesverbrauch alle 15 Min von der Original Variable des Shelly in eigene Variable kopieren
function shelly_verbrauch_update() {
    var anzahl_updates = 0;
    var anzahl_reboots = 0;
    var anzahl_gleich = 0;
    shellyDps.each(function (id, i) {
        var shelly_verbrauch = getState(id).val;
        // Einige Shelly haben keine Verbrauchswerte (noch nicht)
        if (shelly_verbrauch != null) {
            // Hole aktuellen Wert, um zu kontrollieren, ob ein Reboot stattgefunden hat
            var aktueller_wert = getState(shelly_DP(id) + "aktueller_wert").val;
            var alter_wert = 0;
            // Prüfe alten und neuen Wert
            if (shelly_verbrauch > aktueller_wert) {
                // Verbrauchswert ist größer als alter Wert -> es wurde kein Reboot durchgeführt
                setState(shelly_DP(id) + "alter_wert", aktueller_wert, true);
                alter_wert = aktueller_wert;
                anzahl_updates++;
            }
            if (aktueller_wert > shelly_verbrauch) {
                // Verbrauchswert ist kleiner als alter Wert -> es wurde ein Reboot durchgeführt
                setState(shelly_DP(id) + "alter_wert", 0, true);
                alter_wert = 0;
                anzahl_reboots++;
            }
            if (shelly_verbrauch == aktueller_wert) {
                // Verbrauchswert ist gleich wie alter Wert -> kein Update notwendig
                alter_wert = aktueller_wert;
                anzahl_gleich++;
            }

            setState(shelly_DP(id) + "aktueller_wert", shelly_verbrauch, true);
            // Alter und neuer Wert -> aktuelle Differenz

            var verbrauch = parseFloat(shelly_verbrauch) - alter_wert;
            // Tagesverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "heute", verbrauch);

            // Wochenverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "diese_woche", verbrauch);

            // Monatsverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "dieser_monat", verbrauch);

            // Jahresverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "dieses_jahr", verbrauch);

            // Gesamten Vebrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "gesamt", verbrauch);
        }
    });
    shelly3EMDps.each(function (id, i) {
        var shelly_verbrauch = getState(id).val;
        // Einige Shelly haben keine Verbrauchswerte (noch nicht)
        if (shelly_verbrauch != null) {
            // Hole aktuellen Wert, um zu kontrollieren, ob ein Reboot stattgefunden hat
            var aktueller_wert = getState(shelly_DP(id) + "aktueller_wert").val;
            var alter_wert = 0;
            // Prüfe alten und neuen Wert
            if (shelly_verbrauch > aktueller_wert) {
                // Verbrauchswert ist größer als alter Wert -> es wurde kein Reboot durchgeführt
                setState(shelly_DP(id) + "alter_wert", aktueller_wert, true);
                alter_wert = aktueller_wert;
                anzahl_updates++;
            }
            if (aktueller_wert > shelly_verbrauch) {
                // Verbrauchswert ist kleiner als alter Wert -> es wurde ein Reboot durchgeführt
                setState(shelly_DP(id) + "alter_wert", 0, true);
                alter_wert = 0;
                anzahl_reboots++;
            }
            if (shelly_verbrauch == aktueller_wert) {
                // Verbrauchswert ist gleich wie alter Wert -> kein Update notwendig
                alter_wert = aktueller_wert;
                anzahl_gleich++;
            }

            setState(shelly_DP(id) + "aktueller_wert", shelly_verbrauch, true);
            // Alter und neuer Wert -> aktuelle Differenz

            var verbrauch = parseFloat(shelly_verbrauch) - alter_wert;
            // Tagesverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "heute", verbrauch);

            // Wochenverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "diese_woche", verbrauch);

            // Monatsverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "dieser_monat", verbrauch);

            // Jahresverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "dieses_jahr", verbrauch);

            // Gesamten Vebrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "gesamt", verbrauch);
        }
    });
    shelly3EMTotalDps.each(function (id, i) {
        var shelly_verbrauch = getState(id).val;
        // Einige Shelly haben keine Verbrauchswerte (noch nicht)
        if (shelly_verbrauch != null) {
            // Hole aktuellen Wert, um zu kontrollieren, ob ein Reboot stattgefunden hat
            var aktueller_wert = getState(shelly_DP(id) + "aktueller_wert").val;
            var alter_wert = 0;
            // Prüfe alten und neuen Wert
            if (shelly_verbrauch > aktueller_wert) {
                // Verbrauchswert ist größer als alter Wert -> es wurde kein Reboot durchgeführt
                setState(shelly_DP(id) + "alter_wert", aktueller_wert, true);
                alter_wert = aktueller_wert;
                anzahl_updates++;
            }
            if (aktueller_wert > shelly_verbrauch) {
                // Verbrauchswert ist kleiner als alter Wert -> es wurde ein Reboot durchgeführt
                setState(shelly_DP(id) + "alter_wert", 0, true);
                alter_wert = 0;
                anzahl_reboots++;
            }
            if (shelly_verbrauch == aktueller_wert) {
                // Verbrauchswert ist gleich wie alter Wert -> kein Update notwendig
                alter_wert = aktueller_wert;
                anzahl_gleich++;
            }

            setState(shelly_DP(id) + "aktueller_wert", shelly_verbrauch, true);
            // Alter und neuer Wert -> aktuelle Differenz

            var verbrauch = parseFloat(shelly_verbrauch) - alter_wert;
            // Tagesverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "heute", verbrauch);

            // Wochenverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "diese_woche", verbrauch);

            // Monatsverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "dieser_monat", verbrauch);

            // Jahresverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "dieses_jahr", verbrauch);

            // Gesamten Vebrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id), "gesamt", verbrauch);
        }
    });
    shelly3EMTotalReturned.each(function (id, i) {
        var shelly_verbrauch = getState(id).val;
        // Einige Shelly haben keine Verbrauchswerte (noch nicht)
        if (shelly_verbrauch != null) {
            // Hole aktuellen Wert, um zu kontrollieren, ob ein Reboot stattgefunden hat
            var aktueller_wert = getState(shelly_DP(id, true) + "aktueller_wert").val;
            var alter_wert = 0;
            // Prüfe alten und neuen Wert
            if (shelly_verbrauch > aktueller_wert) {
                // Verbrauchswert ist größer als alter Wert -> es wurde kein Reboot durchgeführt
                setState(shelly_DP(id, true) + "alter_wert", aktueller_wert, true);
                alter_wert = aktueller_wert;
                anzahl_updates++;
            }
            if (aktueller_wert > shelly_verbrauch) {
                // Verbrauchswert ist kleiner als alter Wert -> es wurde ein Reboot durchgeführt
                setState(shelly_DP(id, true) + "alter_wert", 0, true);
                alter_wert = 0;
                anzahl_reboots++;
            }
            if (shelly_verbrauch == aktueller_wert) {
                // Verbrauchswert ist gleich wie alter Wert -> kein Update notwendig
                alter_wert = aktueller_wert;
                anzahl_gleich++;
            }

            setState(shelly_DP(id, true) + "aktueller_wert", shelly_verbrauch, true);
            // Alter und neuer Wert -> aktuelle Differenz

            var verbrauch = parseFloat(shelly_verbrauch) - alter_wert;
            // Tagesverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id, true), "heute", verbrauch);

            // Wochenverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id, true), "diese_woche", verbrauch);

            // Monatsverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id, true), "dieser_monat", verbrauch);

            // Jahresverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id, true), "dieses_jahr", verbrauch);

            // Gesamten Vebrauch aktualisieren
            aktualisiere_vebrauch_objekt(shelly_DP(id, true), "gesamt", verbrauch);
        }
    });
    aktualisiere_namen();
    log("Shelly Verbrauch: Verbrauchswerte aktualisiert: " + anzahl_updates + " | Reboots korrigiert: " + anzahl_reboots + " | Unveränderte Werte: " + anzahl_gleich);
}

// aktualisiert das jeweilige Verbrauchs-Objekt und addiert den Verbrauch dazu
function aktualisiere_vebrauch_objekt(dp, objekt, wert) {
    // Hole alten Verbrauch
    let alter_verbrauch = getState(dp + objekt).val;
    let verbrauch = 0;
    // Kein Wert vorhanden - nutze den übermittelten Wert
    if (alter_verbrauch < 1 || alter_verbrauch == null) {
        verbrauch = parseFloat(wert)
    } else {
        verbrauch = parseFloat(alter_verbrauch) + parseFloat(wert);
    }
    setState(dp + objekt, parseFloat(verbrauch.toFixed(2)), true);
}

// Verschiebt das jeweilige Verbrauchs-Objekt und nullt den Ursprung (Tag, Woche, Monat, Jahr)
function verschiebe_verbrauch_objekt(von, nach) {
    $('state[id=*.' + datenpunkt + '*.*.' + von + ']').each(function (id, i) {
        // Temporärer Gruppen-Datenpunkt
        var tmp_dp = id.slice(0, -(von.length));
        var verbrauch = getState(id).val;
        if (verbrauch != null) {
            setState(tmp_dp + nach, verbrauch, true);
        }
        // Setze "von" zurück
        setState(id, 0, true);
    });
}

// Funktion um die aktuellen Namen des Shelly abzuholen
function aktualisiere_namen() {
    if (typeof extendObject === "function") {
        shellyDpsName.each(function (id, i) {
            if (existsState(id)) {
                setState(shelly_DP_Name(id), String(getState(id).val), true);
                extendObject("javascript.0." + shelly_DP_Name_Main(id), {
                    common: {
                        name: String(getState(id).val),
                        desc: String(getState(id).val)
                    },
                    type: "channel"
                });
            }
        });
    }
}

// Erstelle die benötigten Datenpunkte
function datenpunkte_erstellen() {
    // Anzahl der gefundenen Shelly
    var anzahl = shellyDps.length;

    shellyDps.each(function (id, j) {
        var initial_wert = 0.0;
        for (var i = 0; i < objekt.length; i++) {
            // Startwerte werden nur bei alter_wert und aktueller_wert eingetragen
            if (i > 8) {
                initial_wert = getState(id).val;
            }
            createState(shelly_DP(id) + objekt[i], initial_wert, ueberschreiben, {
                name: beschreibung[i],
                desc: beschreibung[i],
                type: "number",
                role: "value.power",
                unit: "Wh"
            });
        }
    });

    // Anzahl der gefundenen Shelly 3EM
    var anzahl_3em = shelly3EMDps.length;

    shelly3EMDps.each(function (id, j) {
        var initial_wert = 0.0;
        for (var i = 0; i < objekt.length; i++) {
            // Startwerte werden nur bei alter_wert und aktueller_wert eingetragen
            if (i > 8) {
                initial_wert = getState(id).val;
            }
            createState(shelly_DP(id) + objekt[i], initial_wert, ueberschreiben, {
                name: beschreibung[i],
                desc: beschreibung[i],
                type: "number",
                role: "value.power",
                unit: "Wh"
            });
        }
    });

    // Anzahl der gefundenen Shelly 3EM - Total
    var anzahl_3em_total = shelly3EMTotalDps.length;

    shelly3EMTotalDps.each(function (id, j) {
        var initial_wert = 0.0;
        for (var i = 0; i < objekt.length; i++) {
            // Startwerte werden nur bei alter_wert und aktueller_wert eingetragen
            if (i > 8) {
                initial_wert = getState(id).val;
            }
            createState(shelly_DP(id) + objekt[i], initial_wert, ueberschreiben, {
                name: beschreibung[i],
                desc: beschreibung[i],
                type: "number",
                role: "value.power",
                unit: "Wh"
            });
        }
    });

    // Anzahl der gefundenen Shelly 3EM - Total
    var anzahl_3em_total_returned = shelly3EMTotalReturned.length;

    shelly3EMTotalReturned.each(function (id, j) {
        var initial_wert = 0.0;
        for (var i = 0; i < objekt.length; i++) {
            // Startwerte werden nur bei alter_wert und aktueller_wert eingetragen
            if (i > 8) {
                initial_wert = getState(id).val;
            }
            createState(shelly_DP(id, true) + objekt[i], initial_wert, ueberschreiben, {
                name: beschreibung[i],
                desc: beschreibung[i],
                type: "number",
                role: "value.power",
                unit: "Wh"
            });
        }
    });

    // Alle Datenpunkte erstellt. Frage ersten Verbrauch ab!
    log("Shelly Verbrauch: Datenpunkte erstellt! Erster Verbrauch steht nach 30 Sekunden zur Verfügung! Anzahl gefundener Shelly Datenpunkte: " + (anzahl_3em + anzahl + anzahl_3em_total + anzahl_3em_total_returned));
    setTimeout(shelly_verbrauch_update, 30000);

    // Datenpunkte für die Namen der Shelly erstellen
    shellyDpsName.each(function (id, j) {
        createState(shelly_DP_Name(id), "", ueberschreiben, {
            name: "Name des Shelly",
            desc: "Name des Shelly",
            type: "string",
            role: "value",
            unit: ""
        });
    });
}

/**
 * Wenn 3EM DP, dann anderen Wert zurückgeben
 * @param {any} dp
 * @param {boolean} extended
 */
function shelly_DP(dp, extended = false) {
    dp = dp.split(".");
    dp = datenpunkt + dp[2] + "." + dp[3];
    if (extended) {
        dp = dp + "_Returned.";
    } else {
        dp = dp + ".";
    }
    return dp;
}

function shelly_DP_Name(dp) {
    dp = dp.split(".");
    dp = datenpunkt + dp[2] + "." + dp[3];
    return dp;
}

function shelly_DP_Name_Main(dp) {
    dp = dp.split(".");
    dp = datenpunkt + dp[2];
    return dp;
}

function shelly_verbrauch_erster_start() {
    log("Shelly Verbrauch: Erster Start des Skriptes! Datenpunkte werden erstellt!");
    // Datenpunkte werden erstellt
    datenpunkte_erstellen();
}

// Erster Start und Initialisierung
shelly_verbrauch_erster_start();

// Alle 15 Minuten das Skript für den Tagesverbrauch ausführen
schedule('*/15 * * * *', shelly_verbrauch_update);

// Nachts um 24 Uhr werden die Werte in andere Variablen gespeichert, um den Verlauf zu erstellen
schedule('0 0 * * *', shelly_vebrauch_tag);

Datenpunkte

Nachdem das Skript angelaufen ist und regelmäßig die Verbräuche der Shelly abgefragt wurden, findest Du diese im Datenpunkt: javascript.0.ShellyVerbrauch

Fehlersuche

Fehlermeldung im Log

javascript.0 2022-01-25 17:41:56.234	error	Function "extendObject" is not allowed. Use adapter settings to allow it.

Solltest Du diese Fehlermeldung erhalten, dann werden die Namen deiner Shelly dem Datenpunkt nicht zugewiesen. Hierzu musst Du im Javascript – Adapter die Funktion “setObject” erlauben. Dies bedeutet, das Skripte die Eigenschaften von Objekten verändern dürfen. Hier dient es dazu, dem Objekt den Namen des jeweiligen Shelly zu geben.

Neue Shelly eingebunden, das Skript liest die Daten nicht aus!

Solltest Du zur Laufzeit des Skripts neue Shelly eingebunden haben, so kannst du das Skript einmal stoppen und erneut starten. Dann werden auch die passenden Datenpunkte für die neuen Shelly gefunden und ausgelesen.

Wie hat Dir der Beitrag gefallen?
Bewertung: 4.9/5 - abgegebene Bewertungen: 17

461 Gedanken zu „Shelly Verbrauchs-Historie für Tag, Woche, Monat, Jahr

  1. Andy Antworten

    Hallo Stephan, erstmal danke für Deine Arbeit und dieses tolle Script. Ich habe jetzt die letzten 2 Monate versucht das mit Sourceanalytix hinzubekommen, was mir aber nicht wirklich zufriedenstellend gelungen ist. Ich möchte nun die Datenpunkte meiner 5 Shelly Plug S von Deinem Script mit Influxdb 2 loggen und dann mit Grafana visualisieren.
    Hier habe ich allerdings ein kleines Verständnisproblem, da ich bei ioBroker auch noch nicht so lange dabei bin.
    Um alle Daten zu visualisieren muss ich vn jedem Shell die Datenpunkte von Tag/Monat/Woche usw. per influx loggen und dann für jeden Verbrauhszyklus ein eigenes Dashboard anlegen, oder denke ich hier zu kompliziert?
    Ich wäre Dir für einen kleinen Rat dankbar.

    Gruß
    Andy

    • Stephan Autor des BeitragsAntworten

      Hallo Andy,
      du müsstest für jeden Shelly, den du in Grafana auswerten möchtest, den Datenpunkt “heute” in Influx loggen.

      Gruß,
      Stephan

      • Andy Antworten

        Okay, ich muss also nur heute loggen und wie ergeben sich dann die Daten für Woche, Quarta usw.?
        Das ist das was ich noch nicht ganz verstehe.
        Kann Du mir das bitte kurz erklären?
        Danke

        • Stephan Autor des BeitragsAntworten

          Hallo Andy,
          dies kannst Du dann in Grafana darstellen. Dazu gibt es viele Tutorials im Netz.

          Gruß,
          Stephan

  2. Sascha Antworten

    Hallo Stephan,

    erstmal vielen Dank für deine tollen Skripte und dass du sie uns zur Verfügung stellst.
    Eine Frage hätte ich…Kann man das Skript so anpassen, dass auch nur Datenpunkte der Shellys erstellt werden, die auch den Verbrauch ausgeben? Es gibt ja zum Beispiel den Shelly 1, der hat diese Funktion nicht. Dadurch würden keine unnötigen Datenpunkte erstellt werden.
    Vielen Dank im Voraus für deine Unterstützung.

    Viele Grüße
    Sascha

    • Stephan Autor des BeitragsAntworten

      Hallo Sascha,
      das Skript fragt die Datenpunkte vom Shelly Adapter ab – somit kann hier leider nicht differenziert werden, welcher Shelly eine Power-Messung hat oder nicht.

      Gruß,
      Stephan

  3. Detlef Antworten

    Ich habe dein Script diese Woche gefunden, gestern installiert.
    Einfach Klasse.

    Ich benutze einen Shelly Plug S um mein Balkonkraftwerk zu monitoren.
    Leider ist die Shelly Cloud seit letzter Zeit total ungenau. D.h. auf der
    Diagrammanzeige wird so Grottenschlecht gerundet, damit kann man nichts mehr anfangen.
    Und immer die CSV runterladen, bearbeiten ect. ist auf Dauer ätzend.

    Dein Script läuft Super. Macht genau was es soll.
    Vielen Dank für deine Arbeit und Mühe.

    Gruß
    Detlef

  4. Mattias Antworten

    Hallo Stephan,

    ich würde das Script auch gerne nutzen, bekomme aber immer die Fehlermeldung:

    error javascript.0 (548544) script.js.common.ShellyVerbrauch compile failed: at script.js.common.ShellyVerbrauch:31

    Das Wort objekt in Zeile 31 ist rot unterstrichen mit folgender Fehlermeldung:

    index1.js1 von 2 Problemen
    Cannot redeclare block-scoped variable ‘objekt’.(2451)

    Kannst Du mir sagen, was ich falsch mache?

    Viele Grüße
    Mattias

    • Mattias Antworten

      P.S.

      Im Log gibt es folgende Info:

      javascript.0
      2022-05-31 20:54:25.218 error at processImmediate (internal/timers.js:463:21)
      javascript.0
      2022-05-31 20:54:25.218 error at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/main.js:1472:17)
      javascript.0
      2022-05-31 20:54:25.218 error at /opt/iobroker/node_modules/iobroker.javascript/main.js:2001:17
      javascript.0
      2022-05-31 20:54:25.218 error at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1900:37)
      javascript.0
      2022-05-31 20:54:25.218 error at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1647:28)
      javascript.0
      2022-05-31 20:54:25.218 error at Object.createScript (vm.js:261:10)
      javascript.0
      2022-05-31 20:54:25.218 error at new Script (vm.js:88:7)
      javascript.0
      2022-05-31 20:54:25.218 error SyntaxError: Identifier ‘objekt’ has already been declared
      javascript.0
      2022-05-31 20:54:25.218 error ^
      javascript.0
      2022-05-31 20:54:25.217 error var objekt = [“gesamt”, “dieses_jahr”, “letztes_jahr”, “letzter_monat”, “dieser_monat”, “letzte_woche”,
      javascript.0
      2022-05-31 20:54:25.217 error script.js.common.ShellyVerbrauch compile failed: at script.js.common.ShellyVerbrauch:31
      javascript.0
      2022-05-31 20:54:25.201 info Start javascript script.js.common.ShellyVerbrauch
      javascript.0
      2022-05-31 20:54:25.181 info Stop script script.js.common.ShellyVerbrauch

      • Stephan Autor des BeitragsAntworten

        Hallo Mattias,
        2022-05-31 20:54:25.218 error SyntaxError: Identifier ‘objekt’ has already been declared

        Hier wird der Fehler beschrieben. Du hast in einem der Skripte schon den Namen “objekt” belegt. Somit muss entweder dieser Name oder der des anderen Skriptes umbenannt werden.

        Gruß,
        Stephan

  5. Thomas Antworten

    Hallo, mein Shelly EM wird nicht aktualisiert woran kann es liegen.
    es wird im moment nur der aktuelle wert angezeigt mehr nicht.

    • Stephan Autor des BeitragsAntworten

      Hallo Thomas,
      wurde der 3EM nach dem Skript-Start angemeldet?
      Wenn ja, das Skript stoppen und erneut starten.

      Gruß,
      Stephan

  6. Thomas Antworten

    Gibt es auch die Möglichkeit bei den Shelly 3EM auch die “Return” werte darzustellen. dann könnte man relativ einfach den Eigengebrauch berechnen.

    • Stephan Autor des BeitragsAntworten

      Hallo Thomas,
      die Werte befinden sich ebenfalls unterhalb des Datenpunktes des Shelly 3EM.

      • Lars Antworten

        Hi Stephan, bei mir leider nicht. was müsste ich tun um die Return-Werte zu bekommen?
        Danke dir 🙂

        • Stephan Autor des BeitragsAntworten

          Hallo Lars,
          welche Return Werte fehlen dir denn?

          Das Skript fragt alles ab, was der Shelly Adapter zur Verfügung stellt.
          Dies hat nichts mit der App auf dem Handy zu tun!

          Gruß,
          Stephan

          • Lars

            Hi Stephan,

            shelly.0.SHEM-3#8CAAB561EE25#1.Total.Total_Returned

            gibt es in den Objekten des Adapters, aber dies fehlt in den DP des Scripts.

          • Lars

            bzw. in den einzelnen Phasenpunkten heißt dieser:
            shelly.0.SHEM-3#8CAAB561EE25#1.Emeter0.Total_Returned

          • Stephan Autor des Beitrags

            Hallo Lars,
            das stimmt. Bis heute scheint hier keine Aufsummierung stattzufinden.

            Somit sind diese Werte irgdndwie nicht brauchbar.

            Oder zeigt Dein 3EM richtige Werte an?

            Gruß
            Stephan

          • Lars

            Ich denke schon, ich sehe in den Objekten zumindest einen validen Wert bei PhaseA (Emeter0), welcher sich auch im Total_Returned befindet.
            Auch in Shelly.Cloud ist dieser Wert sichtbar.
            Was wären dann brauchbare Werte?

          • Stephan Autor des Beitrags

            Hallo Lars,
            Wenn dem so ist, werde ich mir dies nach meinem Urlaub nochmals anschauen 🙂

            Vielleicht kannst Du mir 1-2 Screenshots mit Werte von 2 Tagen per Mail an Stephan@Kreyenborg.koeln senden?

            Danke im Voraus!

            Gruß,
            Stephan

          • Lars

            Hi Stephan, ich habe dir dazu wie gewünscht eine Mail mit Screenshots geschickt.

          • Kevin

            Hallo Stephan,

            hast du hier eine Lösung zu dem Total_Returned erhalten ?
            Würde dieses gerne auch für meine PV mit loggen.

            Habe zwar keinen 3EM, aber mit dem normalen EM sollte es ja auch klappen.

            Grüße
            Kevin

  7. Sky80 Antworten

    wenn man diese Daten nun per Grafana visualisieren will muss man den Umweg über influxdb gehen? wenn ja, wie oft sollte man die Werte an influxdb schicken, bzw. was wären denn die Einstellungen hier in iobroker? Macht ja kein Sinn jede sekunde “alle beide” datenbanken zu füllen, oder?

    • Stephan Autor des BeitragsAntworten

      Hi Sky80,
      Ich habe bei mir die Standardeinstellungen der Optionen für die Objekte gelassen.
      Allerdings lasse ich den Influx Adapter nur schreiben, wenn sich 50 Datenpunkte geändert haben. Auch liegt die influxDB selbst auf einem anderen Host, denn die Speicherkarte des Raspi sollte nicht zuviel beschrieben werden.

      Gruß,
      Stephan

  8. Hubert Antworten

    Hallo Stefan!

    Das Skript ist super und funktioniert auch bei mir! Aber was passiert mit den Werten, wenn der Raspberry neu gebootet wird? Bleiben die Werte auch dann erhalten noder nicht?
    Ich möchte das jetzt nicht unbedingt ausprobieren!

    Danke!

    • Stephan Autor des BeitragsAntworten

      Hallo Hubert,
      die Werte sind in der ioBroker Datenbank gespeichert. Sollte der Raspi einmal neustarten, so holt er nach dem nächsten Start die Wert wieder vom Shelly und aktualisiert die Werte in der Datenbank des ioBrokers.

      Gruß,
      Stephan

  9. Holger Antworten

    Hallo Stephan.
    Dein Script hat mir sehr beim Auslesen der Daten meiner Voltaikanlage geholfen. Habe die Werte auch in iqontrol virtualisiert.
    Leider werden die historischen Daten “Verbrauch gestern” “Verbrauch letzte Woche” nicht aktualisiert.
    Ich habe keine Fehlermeldungen im Protokoll.
    Es ist übrigens der erte Adapter, den ich konfiguriere, habe also Nachsicht!
    Mit freundliche Grüßen.
    Holger

    • Stephan Autor des BeitragsAntworten

      Hallo Holger,
      vielen Dank für die Rückmeldung.

      Ich habe eine neue Version bereitgestellt, die diese Probleme beheben sollte.
      Bitte teste diese einmal.

      Gruß,
      Stephan

      • Holger Antworten

        Hallo Stephan.
        Scheint jetzt alles zu funktionieren.
        Habe jetzt einen 2. Shelly EM angeschlossen. Was muss ich am Script ändern, um die Daten das 2. Shellys zu schreiben?
        Mit freundlichen Grüßen,
        Holger

        • Stephan Autor des BeitragsAntworten

          Hallo Holger,
          Du müsstest nur das Skript stoppen und wieder starten. Dann wird der neue Shelly gefunden.

          Gruß,
          Stephan

  10. M Antworten

    hi.
    shelly plus 1pm holt keine werte.

    shellyplus1pm / shellyplus1pm-3083980a00a8 / shellyplus1pm#3083980a00a8#1) received pubrel for unknown messageId: 369

  11. Bernd Antworten

    Hallo Stephan, die Umrechnung in Euro hast Du nicht drin, oder ?
    Wäre das nicht noch eine sinnvolle Ergänzung ?
    VG Bernd

    • Stephan Autor des BeitragsAntworten

      Hallo Bernd,
      mein Skript berechnet nur die Verbräuche und kann eigenständig erweitert werden.

      Gruß,
      Stephan

  12. Peter Weyler Antworten

    Hallo Stephan,
    ich noch mal.. 😉 . Ich habe eine kleines Problem mit dem Skript. Alle Daten werden zwar wie gewünscht ausgegeben, aber im Fehlerprotokoll der IO Brokers taucht regelmäßig folgender Fehler auf :

    “javascript.0 2022-03-22 20:30:00.018 error Function “extendObject” is not allowed. Use adapter settings to allow it.”

    Wenn ich das richtig gefunden habe, taucht dieser Befehl bzw. die Funktion in Zeile 257 des Scripts auf, in dem es um das Abholen von Namen des Shelly geht… Liegt der Fehler im Script und in den Adapter-Einstellungen eines IOBrokers? Leider sagt mir der Fehler wenig und ich weiß mangels Erfahrung mit dem IOB auch nicht, in welchen Adapter Settings ich was erlauben soll.. (welche Settings und welcher Adapter? der Java Adapter oder der Shelly Adapter?).

    Vielleicht kannst du mir dazu was schreiben. Besten Dank!

    Gruß Peter

      • Peter Weyler Antworten

        Hallo Stephan,
        danke für die Rückmeldung und den Link. Hätte mir bei genauem Lesen natürlich auch selber auffallen müssen…. sorry..

        VG Peter

  13. Peter Weyler Antworten

    Hallo Stephan,

    ich habe seit gestern einen Shelly3EM installiert und bin beim Suchen nach weiteren Infos dazu in einem YT Video auf dwen Link zu deinen Seiten und zu deinem Script gestoßen. Die Installation im IOB, d.h. das Einfügen, Abspeichern und Starten, funktionierte problemlos und ich kann nur sagen, dass das Script absolute Spitze ist! Die Realisierung genau solche Funktionen / Auswertungen hatte ich grob im Kopf, wusste aber mangels Programmierkenntnisse für soche Scripte nicht, wie ich das bewerkstelligen sollte. Daher vielen, vielen Dank für deine Mühe und das Bereitstellen und die Pflege des Scipts!

    Als nächstes werde ich nun versuchen, die ganzen Daten im IOB mit Vis zu visualisieren, was für mich als IOB-Neuling schon eine genügend große Herausforderung ist.. ;-).

    Nochmals besten Dank und Grüße aus Nümbrecht,
    Peter

    p.s.: deine Homepage finde ich insgesamt sehr interessant, informativ und für mich auch lehrreich! Werde ich mir nach und nach mal durchlesen… 🙂

    • Stephan Autor des BeitragsAntworten

      Hallo Peter,
      vielen Dank für die tolle Rückmeldung 🙂

      Die Daten in VIS bekommt man “eigentlich” problemlos über das Value Widget dargestellt. Hier den Datenpunkt angeben und schon erscheint der Wert in der Oberfläche.

      Gruß,
      Stephan

  14. Marko Antworten

    Guten Morgen Stephan,

    auch von mir erstmal einen Dank für das tolle Skript.
    Ich hatte vorher mit Tasmota geflashte Gosund Adapter und im Vergleich zu denen fehlt bei den Shellys die von dir gebaute Dokumentation der Verbrauchswerte.
    Ich habe hierzu zwei Fragen.
    1. Ich fand die Anpassung die Jan gemacht hat (Die Verschiebung in =_userdata.0.ShellyVerbrauch) gut habe dabei auch das Problem wie er das der Datenpunkt gestern nicht aktualisiert wird. Bei den anderen lässt sich das noch nicht sagen da der Adapter noch frisch läuft.
    2. Lässt sich der Intervall der Datenübernahme aus dem Shelly Adapter anpassen? Wenn ich das richtig sehe läuft das mit über den cron Job am Ende des Skriptes.
    Wenn ich den Shelly Adapter richtig verstanden habe löscht der nachdem der Schalter ausgeschaltet wird nach einer Minute der Wert Energy auf 0 Wh gesetzt.

    Ich nutze 10 Shelly Plug S die Shelly Adapter Version ist die v5.1.2

    • Marko Antworten

      Zum Punkt 2. habe ich noch vergessen zu fragen wenn ich den Wert unten Anpasse verfälscht das dann die Berechnung für den Verbrauch? Rechnet er wenn ich zum Beispiel von 15 Minuten auf 1 Minute umstelle den Wert 15 Fach?

      • Stephan Autor des BeitragsAntworten

        … der Verbrauch wird nicht verfälscht, da die eigentliche Verbrauchsrechnung im Shelly selbst stattfindent.
        Das Skript “kopiert” die Werte und legt sie entsprechend Tag, Monat, Jahr ab.

    • Stephan Autor des BeitragsAntworten

      Hallo Marko,
      das Problem bei Jan war, das er im JavaScript Adapter noch “setObject” erlauben musste. Der “Fehler” ist hier beschrieben:
      https://www.kreyenborg.koeln/shelly-verbrauchs-historie-fuer-tag-woche-monat-jahr/#Fehlermeldung_im_Log

      Der Intervall kann am Ende des Skriptes an deine Bedürfnisse angepasst werden. Wenn Du Deine Daten schneller möchtest, kannst Du das Intervall verkürzen.
      Der Shelly Adapter löscht die Werte “Energy” nicht – dieses wird gelöscht, wenn der Shelly neustartet oder ein Update durchführt.

      Gruß,
      Stephan

      • Marko Antworten

        Hallo Stephan,

        vielen Dank für die schnelle Antwort.
        Die Einstellung im JavaScript Adapter habe ich so drin. Werde es mal ein paar Tage laufen lassen und beobachten.

        Gruß

        Marko

  15. nukleuz80 Antworten

    Hallo Stephan,

    nachdem ich nun das Skript einige Tage im Einsatz habe fällt mir auf, dass der Datenpunkt “gestern” nicht aktualisiert wird.
    Ich habe lediglich eine Zeile im Code angepasst:

    // Hauptdatenpunkt unterhalb javascript
    var datenpunkt = “0_userdata.0.ShellyVerbrauch.”; // Abschließender Punkt !!! WICHTIG !!!

    Eine Mail mit Screenshot der DP ist unterwegs zu dir.

    Danke vorab fürs Nachsehen… 🙂

    Jan

  16. Thomas K. Antworten

    Hallo,

    kann es sein, dass das Skript folgende Hinweise im Log verursacht?

    2021-12-23 02:15:00.055 – [33mwarn[39m: javascript.0 (997) getState “shelly.0.SHDW-1#B88FC1#1.name” not found (3) states[id]=null
    2021-12-23 02:15:00.059 – [33mwarn[39m: javascript.0 (997) at script.js.common.System.Shelly_Verbrauch_capturen2:256:45
    2021-12-23 02:15:00.060 – [33mwarn[39m: javascript.0 (997) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:819:29)
    2021-12-23 02:15:00.060 – [33mwarn[39m: javascript.0 (997) at aktualisiere_namen (script.js.common.System.Shelly_Verbrauch_capturen2:255:19)
    2021-12-23 02:15:00.061 – [33mwarn[39m: javascript.0 (997) at Object.shelly_verbrauch_update (script.js.common.System.Shelly_Verbrauch_capturen2:228:5)
    2021-12-23 02:15:00.061 – [33mwarn[39m: javascript.0 (997) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1313:34)
    2021-12-23 02:15:00.061 – [33mwarn[39m: javascript.0 (997) at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/Job.js:168:15)
    2021-12-23 02:15:00.062 – [33mwarn[39m: javascript.0 (997) at /opt/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28
    2021-12-23 02:15:00.062 – [33mwarn[39m: javascript.0 (997) at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7)
    2021-12-23 02:15:00.062 – [33mwarn[39m: javascript.0 (997) at listOnTimeout (internal/timers.js:555:17)
    2021-12-23 02:15:00.063 – [33mwarn[39m: javascript.0 (997) at processTimers (internal/timers.js:498:7)
    2021-12-23 02:15:00.063 – [33mwarn[39m: javascript.0 (997) getState “shelly.0.SHDW-1#B88FC1#1.name” not found (3) states[id]=null
    2021-12-23 02:15:00.066 – [33mwarn[39m: javascript.0 (997) at script.js.common.System.Shelly_Verbrauch_capturen2:259:30
    2021-12-23 02:15:00.067 – [33mwarn[39m: javascript.0 (997) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:819:29)
    2021-12-23 02:15:00.067 – [33mwarn[39m: javascript.0 (997) at aktualisiere_namen (script.js.common.System.Shelly_Verbrauch_capturen2:255:19)
    2021-12-23 02:15:00.067 – [33mwarn[39m: javascript.0 (997) at Object.shelly_verbrauch_update (script.js.common.System.Shelly_Verbrauch_capturen2:228:5)
    2021-12-23 02:15:00.068 – [33mwarn[39m: javascript.0 (997) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1313:34)
    2021-12-23 02:15:00.068 – [33mwarn[39m: javascript.0 (997) at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/Job.js:168:15)
    2021-12-23 02:15:00.069 – [33mwarn[39m: javascript.0 (997) at /opt/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28
    2021-12-23 02:15:00.069 – [33mwarn[39m: javascript.0 (997) at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7)
    2021-12-23 02:15:00.069 – [33mwarn[39m: javascript.0 (997) at listOnTimeout (internal/timers.js:555:17)
    2021-12-23 02:15:00.069 – [33mwarn[39m: javascript.0 (997) at processTimers (internal/timers.js:498:7)
    2021-12-23 02:15:00.070 – [33mwarn[39m: javascript.0 (997) getState “shelly.0.SHDW-1#B88FC1#1.name” not found (3) states[id]=null
    2021-12-23 02:15:00.072 – [33mwarn[39m: javascript.0 (997) at script.js.common.System.Shelly_Verbrauch_capturen2:260:30
    2021-12-23 02:15:00.073 – [33mwarn[39m: javascript.0 (997) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:819:29)
    2021-12-23 02:15:00.073 – [33mwarn[39m: javascript.0 (997) at aktualisiere_namen (script.js.common.System.Shelly_Verbrauch_capturen2:255:19)
    2021-12-23 02:15:00.073 – [33mwarn[39m: javascript.0 (997) at Object.shelly_verbrauch_update (script.js.common.System.Shelly_Verbrauch_capturen2:228:5)
    2021-12-23 02:15:00.074 – [33mwarn[39m: javascript.0 (997) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1313:34)
    2021-12-23 02:15:00.074 – [33mwarn[39m: javascript.0 (997) at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/Job.js:168:15)
    2021-12-23 02:15:00.074 – [33mwarn[39m: javascript.0 (997) at /opt/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28
    2021-12-23 02:15:00.074 – [33mwarn[39m: javascript.0 (997) at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7)
    2021-12-23 02:15:00.075 – [33mwarn[39m: javascript.0 (997) at listOnTimeout (internal/timers.js:555:17)
    2021-12-23 02:15:00.075 – [33mwarn[39m: javascript.0 (997) at processTimers (internal/timers.js:498:7)
    2021-12-23 02:15:00.077 – [32minfo[39m: javascript.0 (997) script.js.common.System.Shelly_Verbrauch_capturen2: Shelly Verbrauch: Verbrauchswerte aktualisiert: 4 | Reboots korrigiert: 0 | Unveränderte Werte: 32

  17. Marc Antworten

    Hallo Stephan,
    erstmal vielen Dank für deine super arbeit.
    Leider schreibt er bei mir keine Werte in die Datenpunkte.
    Ich habe einen Shelly Plug S über MQTT eingebunden. Ich habe alerdinge gesehen das er im DAtenpunkt von dem Shelly Adapter “Energy” bei 0 bleibt egal was er Verbraucht hat.
    Ich habe das Skript jetzt nur grob überflogen. Rechnest du mit dem aktuellen verbrauch (Power) oder mit dem Energy Wert ?

    Gruß Marc

    • Stephan Autor des BeitragsAntworten

      Hallo Marc,
      so, wie ich das sehe, scheint hier der Shelly Adapter ein Problem zu haben, oder?

      Das Skript fragt die Werte des Datenpunktes “Energy” bei 1-phasigen Shelly und “Total” bei den 3EM’s ab.

      Zeigt denn das Web-Interface des Shelly Plug einen Verbrauch an?

      Gruß,
      Stephan

      • Marc Antworten

        Hallo Stephan,
        ja im Web-Interface zeigt er den aktuellen Verbrauch an, aber nicht den summierten Verbrauch. Also genau wie der Adapter.
        Aber wie gesagt steht bei Energy leider immer eine 0.

        Gruß Marc

        • Stephan Autor des BeitragsAntworten

          Hi Marc,
          entschuldige – ich meinte natürlich die Shelly App. Aber, wenn Du die Shelly per MQTT angbunden hast, wird hier wohl die Cloud deaktiviert sein.
          Ist es zwingend notwendig, das Deine Shelly über MQTT statt über COAP laufen?

          • Marc

            Hallo Stephan,
            die Shelly App habe ich gar nicht. Ich habe den Plug über die Web Oberfläche eingestellt. Ich weiß nicht was ich gemacht habe, aber jetzt scheint es zu klappen. Dir vielen Dank für das super Skript.
            Bald kommt die neue neue Serie von Shelly raus die PRO Serie für die Hutschiene. Wird man das Skript auch dafür nutzen können ?

          • Stephan Autor des Beitrags

            Hallo Marc,
            freut mich, wenn es läuft 🙂

            Aktuell besitze ich noch keinen der Shelly PRO – somit kann ich zu der Verwendung noch nichts sagen. Ich denke jedoch, das Sie die Software nciht wirklich verändern und somit das Skript auch dort laufen wird.

            Gruß,
            Stephan

  18. Micha Antworten

    Hallo Stephan,

    ich bin von Deinem Script begeistert. Nutze schon eine ganze Weile die Version 1.4. Wenn ich jetzt auf die 1.5 umsteigen würde, löscht er mir dann meine alten Daten die die Version 1.4 angelegt hat? Das wäre nicht so schön.

    Danke und Gruß
    Micha

  19. Peter Antworten

    Hallo Stephan,
    habe gerade deine Seite gefunden und den Skript bei mir eingefügt.
    Ich bin total begeistert und möchte ein großes Dankeschön ansprechen, dass du deine Arbeit hier zur Verfügung stellst.
    Das Script läuft bei mir einwandfrei. Also nochmals Danke dafür.

    Gruß
    Peter

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert