Sonoff/Tasmota Verbrauchs-Historie für Tag, Woche, Monat, Jahr

Lesedauer: 5 Minuten

Dieses Skript ist eine Abwandlung des Skriptes, welches bereits für die Shelly Adapter zur Verfügung steht. Hier werden die Tasmota und Sonoff Geräte unterstützt.

Übersicht der Funktionen

Folgende Verbrauchswerte stehen in der Historie für jeden der Sonoff Geräte 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 Sonoff 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 Sonoff Adapter

Installation des Sonoff Adapter

Nach kurzer Zeit stehen die Datenpunkte aller gefundenen Sonoff Geräte unter sonoff.0 zur Verfügung.

Skript

/*
 * @copyright 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
 *
 * @author 2020 Stephan Kreyenborg <stephan@kreyenborg.koeln>
 *
 * Dieses Skript dient zur freien Verwendung in ioBroker zur Verbrauchserfassung der Tasmota 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:     Tasmota-Verbrauch
 * Skript Version:  1.1
 * Erstell-Datum:   19. März 2021
 *
 */
 
// Datenpunkte neu erstellen
var ueberschreiben = false;
 
// Hauptdatenpunkt unterhalb javascript
var datenpunkt = "TasmotaVerbrauch.";
 
// Verbrauchs Objekte der einzelnen Tasmota
const objekt = ["gesamt", "dieses_jahr", "letztes_jahr", "letzter_monat", "dieser_monat", "letzte_woche",
    "diese_woche", "gestern", "heute", "alter_wert", "aktueller_wert"];
 
// Beschreibung der Objekte
const beschreibung = ["Gesamter Vebrauch des Tasmota", "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 Tasmota Geräte (Standard: sonoff.0)
var tasmota_dp = "sonoff.0";
 
// Datenpunkte der Tasmota (!!! Bitte nicht ändern !!!)
const tasmotaDps = $('state[id=' + tasmota_dp + '.*.ENERGY_Total]');
 
// Datenpunkte der Tasmota Namen (!!! Bitte nicht ändern !!!)
const tasmotaDpsName = $('state[id=' + tasmota_dp + '.*.DeviceName]');
 
// Tasmota Verbrauch aktualisieren - nachts um 00:00 Uhr
function tasmota_vebrauch_tag() {
    // Nochmals das Tagesupdate durchlaufen, damit die restlichen Werte gelesen werden
    tasmota_verbrauch_update();
 
    // Datumsvariable
    var heute = new Date();
 
    // Heute zu Gestern verschieben. Täglich um 00:00 Uhr
    verschiebe_verbrauch_objekt("heute", "gestern");
    log ("Tasmota 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 ("Tasmota 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 ("Tasmota 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 ("Tasmota Verbrauch: Werte für dieses und letztes Jahr aktualisiert!");
    }
}
 
// Tagesverbrauch alle 15 Min von der Original Variable des Tasmota in eigene Variable kopieren
function tasmota_verbrauch_update() {
    var anzahl_updates = 0;
    var anzahl_reboots = 0;
    var anzahl_gleich = 0;
    tasmotaDps.each(function (id, i) {
        var tasmota_verbrauch = getState(id).val;
        // Einige Tasmota haben keine Verbrauchswerte (noch nicht)
        if (tasmota_verbrauch != null) {
            // Hole aktuellen Wert, um zu kontrollieren, ob ein Reboot stattgefunden hat
            var aktueller_wert = getState(tasmota_DP(id) + "aktueller_wert").val;
            var alter_wert = 0;
            // Prüfe alten und neuen Wert
            if (tasmota_verbrauch > aktueller_wert) {
                // Verbrauchswert ist größer als alter Wert -> es wurde kein Reboot durchgeführt
                setState(tasmota_DP(id) + "alter_wert", aktueller_wert,true);
                alter_wert = aktueller_wert;
                anzahl_updates++;
            }
            if (aktueller_wert > tasmota_verbrauch) {
                // Verbrauchswert ist kleiner als alter Wert -> es wurde ein Reboot durchgeführt
                setState(tasmota_DP(id) + "alter_wert", 0,true);
                alter_wert = tasmota_verbrauch;
                anzahl_reboots++;
            }
            if (tasmota_verbrauch == aktueller_wert) {
                // Verbrauchswert ist gleich wie alter Wert -> kein Update notwendig
                alter_wert = aktueller_wert;
                anzahl_gleich++;
            }
 
            setState(tasmota_DP(id) + "aktueller_wert", tasmota_verbrauch);
            // Alter und neuer Wert -> aktuelle Differenz
 
            var verbrauch = parseFloat(tasmota_verbrauch) - alter_wert;
            // Tagesverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(id, "heute", verbrauch);
 
            // Wochenverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(id, "diese_woche", verbrauch);
 
            // Monatsverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(id, "dieser_monat", verbrauch);
 
            // Jahresverbrauch aktualisieren
            aktualisiere_vebrauch_objekt(id, "dieses_jahr", verbrauch);
 
            // Gesamten Vebrauch aktualisieren
            aktualisiere_vebrauch_objekt(id, "gesamt", verbrauch);
        }
    });
    aktualisiere_namen();
    log("Tasmota 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) {
    var verbrauch = parseFloat(getState(tasmota_DP(dp) + objekt).val) + parseFloat(wert);
    verbrauch = parseFloat(verbrauch.toFixed(3));
    setState(tasmota_DP(dp) + objekt, verbrauch,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 heute zurück
        setState(id, 0,true);
    });
}
 
// Funktion um die aktuellen Namen der Tasmota abzuholen
function aktualisiere_namen() {
    tasmotaDpsName.each(function (id, i) {
        setState(tasmota_DP_Name(id),String(getState(id).val),true);
    });
}
 
// Erstelle die benötigten Datenpunkte
function datenpunkte_erstellen() {
    // Anzahl der gefundenen Tasmota
    var anzahl = tasmotaDps.length;
 
    tasmotaDps.each(function (id, j) {
        var initial_wert = 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(tasmota_DP(id) + objekt[i], initial_wert, ueberschreiben, {
                name: beschreibung[i],
                desc: beschreibung[i],
                type: "number",
                role: "value.power",
                unit: "kWh"
            });
        }
    });
     
    // Alle Datenpunkte erstellt. Frage ersten Verbrauch ab!
    log("Tasmota Verbrauch: Datenpunkte erstellt! Erster Verbrauch steht nach 1 Minute zur Verfügung! Anzahl gefundener Tasmota Datenpunkte: " + anzahl);
    setTimeout(tasmota_verbrauch_update, 20000);
     
    // Datenpunkte für die Namen der Tasmota erstellen
    tasmotaDpsName.each(function(id, j) {
        createState(tasmota_DP_Name(id), "", ueberschreiben, {
            name: "Name des Tasmota",
            desc: "Name des Tasmota",
            type: "string",
            role: "value",
            unit: ""
        });
    });
}
 
function tasmota_DP(dp) {
    dp = dp.split(".");
    dp = datenpunkt + dp[2] + ".";
    return dp;
}
 
function tasmota_DP_Name(dp) {
    dp = dp.split(".");
    dp = datenpunkt + dp[2] + "." + dp[3];
    return dp;
}
 
function tasmota_verbrauch_erster_start() {
    log("Tasmota Verbrauch: Erster Start des Skriptes! Datenpunkte werden erstellt!");
    // Datenpunkte werden erstellt
    datenpunkte_erstellen();
}
 
// Erster Start und Initialisierung
tasmota_verbrauch_erster_start();
 
// Alle 15 Minuten das Skript für den Tagesverbrauch ausführen
schedule('*/15 * * * *', tasmota_verbrauch_update);
 
// Nachts um 24 Uhr werden die Werte in andere Variablen gespeichert, um den Verlauf zu erstellen
schedule('0 0 * * *', tasmota_vebrauch_tag);
Wie hat Dir der Beitrag gefallen?
Bewertung: 3.3/5 - abgegebene Bewertungen: 6

48 Gedanken zu „Sonoff/Tasmota Verbrauchs-Historie für Tag, Woche, Monat, Jahr

  1. Medoc Antworten

    moin,
    das script läuft seit langer zeit für mehrere pow3 erfolgreich, erstmal danke dafür.
    allerdings bin ich im javascript nicht wirklich zuhause.

    wie kann ich den zeitraum des jahresverbrauchs ändern? zb. abrechnung oktober?
    vielen dank
    medoc

    • Stephan Autor des BeitragsAntworten

      Hallo,
      solche Abfragen sieht ein Skript nicht vor, da keine Speicherung über Zeiträume erfolgt.

      Gruß,
      Stephan

  2. Matthias Antworten

    Hallo Stephan….das mit dem MQTT löse ich anders. Aber mich würde es interesieren wie man in dem Script die berchnungen für den Preis mit intergrieren könnte…..aber du machst tollte sachen……danke erst mal.

    lg

  3. matze Antworten

    Hallo Stephan!

    Tolles Script…funktioniert wunderbar, aber …..jetzt kommt das ,,aber,, der Name wird nicht übergeben da ja Tasmota den Mqtt Client drin hat ich versuche mal des zu bewerkstelligen. Ergebnisse folgen per Post.

    lg

  4. Kevin Klemm Antworten

    Hallo,

    vielen Dak für das Script.

    Ich habe ein kleines Problem.
    Mit dem original Verzeichnis
    var datenpunkt = “TasmotaVerbrauch.”; unterhalb Javascript funktionier das Script ohne Probleme, da ich alles unter 0_userdata angelegt habe, habe ich einfachhalber den Eintrag in “var datenpunkt = “0_userdata.0.Tasmota.Stromverbrauch.”;” geändert.
    Es werden die Datenpunkte erstellt, und die aktuellen Werte in die Datenpunkte geschrieben. Jedoch nicht die Datenpunkte “diese_woche”
    “letzte_woche”, “letzter_monat” über Nacht aktuallisiert. Müsste ich in dem Script noch etwas anderes ändern?

    Vielen Dank

  5. Holger Antworten

    Hallo Stephan,
    danke dir für dieses Skript.
    Leider erscheinen bei mir die Datenpunkte aller gefundenen Sonoff Geräte (vom Skript) nicht unter sonoff.0, sondern unter javascript.0.
    Was mach ich falsch? Bin leider noch nicht so versiert damit.

    Danke und Gruß
    Holger

    • Stephan Autor des BeitragsAntworten

      Hallo Holger,
      das ist soweit richtig. Es ist ein Skript und dieses erstellt die Datenpunkte unterhalb javascript.
      Unterhalb sonoff ist der sonoff Adapter.

      Gruß,
      Stephan

  6. Richi Antworten

    Hallo Stephan, habe gesehen das es für Shelby update Scripte gibt ist so etwas auch für Tasmota geplant oder Angedacht?ich denke viele hier würden es gerne nutzen. Freue mich auf deine Antwort.

    LG
    Richi

    • Stephan Autor des BeitragsAntworten

      Hallo Richi,
      ich selbst betreibe keine Tasmota Geräte. Somit kann ich leider keine solchen Skripte zur Verfügung stellen.

      Das eine Skript zur Verbrauchsmessung wurde von einem User angepasst.

      Gruß,
      Stephan

  7. Gerald Antworten

    Hallo zusammen habe im IOBRoker meine tasmota teile alle ingebunden die realwerte und die gestern heute und gesamtwerte passen. er legt aber keine wochen monats und jahres ordner an wie kann das sein? was habe ich da falsch gemacht?? bitte um hilfe. es läuft auf einem OpenMediaVault falls das wichtig ist. Dankeschön für die hilfe

  8. 3D Sonic Antworten

    Hallo zusammen ich bin in Tasmota komplett neu. Grundsätzlich ist es sehr gut. Ich würde gerne wissen wie man dieses Script verwendet. Und das bitte von Anfang an bis zum Ende inkl. Was man alles dazu braucht.

    Ich habe mir die vorinstallierte Nous A1T gekauft und ins Netzwerk eingebunden. Weiters habe ich mir Tasmotrol gekauft. Derzeit habe ich 12 von den Nous A1T es sollen aber einige Steckdosen noch mit dem System erweitert werden.

    Es würde mich und warscheinlich viele andere Menschen freuen wenn es eine vollständige Anleitung zur Verwendung des Scripts gibt.

    • Stephan Autor des BeitragsAntworten

      Hallo,
      Du benötigst den ioBroker mit installiertem Sonoff und Javascript Adapter.
      Dann kann das Skript bei Skripte eingfügt und gestartet werden.

      Meine Webseite stellt Skripte für ioBroker zur Verfügung.

      Gruß,
      Stephan

  9. Thomas Antworten

    Hallo Stephan,

    Deine Skripte sind sehr hilfreich für meine shellys als auch tasmota-Geräte.
    Was mir noch fehlen würde wäre obiges Skript für Fritz!DECT und Homematic-Geräte.

    Ich kann mir vorstellen, dass das auch andere User Interesse hätten.
    Siehst Du eine Chance das irgendwann mal umzusetzen?

    Ablage Verbrauchswerte bei Fritz!DECT:

    fritzdect.0.DECT_087610266614.energy

    Ablage Verbrauchswerte bei Homematic Steckdosen mit Leistungsmessung z. B. unter

    hm-rpc.0.LEQ1315602.2.ENERGY_COUNTER

    Viele Grüße
    Thomas

  10. Ralf Götzke Antworten

    Hallo Stephan,
    ich nutze dein Script Shellyverbrauch in der Versin 1.60 und es funktioniert mit meinem Shelly EM3 auch eigentlich sehr gut.
    Leider ist es in letzter Zeit in unregelmaßigen abständen passiert, das bei den Werten für den Total Verbrauch von “Gestern” astronomische Werte auftauchten. Ich habe normalerweise einen Verbrauch von etwa 10 kWh und das wird auch richtig beim Verbrauch von “Heute” angezeigt, aber am nächsten Tag steht dann bei gestern ein Wert von, zum Beispiel, 26000 kWh drinn, was sich auch auf die Werte von diesen Monat und dieses Jahr auswirkt.
    Die Werte, die ich bei Objekte unter Shellyverbrauch finde, scheinen bei Emeter0, Emeter1 und Emeter2 korrekt zu sein, nur bei Total sind diese völlig falschen Werte zu finden.
    Leider bin ich was die Programmierung betrifft nicht sehr bewandert und verstehe die Funktionsweise des scriptes nicht wirklich.
    Ich habe die Werte von Emeter0, Emeter1 und Emeter2 nun selbst addiert und diese bei Total eingetragen, aber das kann nicht die Lösung sein.
    Hast du eine Idee, was bei mir falsch läuft ?
    Schöne Grüße
    Ralf

    • Stephan Autor des BeitragsAntworten

      Hallo Ralf,
      dazu kann ich leider nichts sagen, was auf Deinem System “falsch” läuft.
      Du kannst die Werte nur genauer beobachten und schauen.

      Gruß,
      Stephan

  11. Franky Antworten

    Hallo Stephan,

    erst einmal vielen Dank für dein tolles Script. Ich habe hierzu eine Frage bzgl. neuer SONOFF Geräte.
    Wenn ich neue Steckdosen in WLAN integriere, dann muss ich doch im Script die Variable “var ueberschreiben = true;” setzen und das Script neu starten, damit die neuen SONOFF Geräte in den Datenpunkten erscheinen. Anschließend Script wieder stoppen und Variable wieder auf false setzen. Script wieder starten. Bisher habe ich mich das aber nicht getraut.

    Was passiert hierbei mit den bereits vorhandenen Datenpunkten?
    Werden diese auf 0 gesetzt oder behalten sie Ihren ursprünglichen Wert?

    Vorab vielen Dank
    Frank

    • Stephan Autor des BeitragsAntworten

      Hallo Franky,
      die Variable “ueberschreiben” dient dem Nullen aller Datenpunkte. Wenn Du nur ein neues Gerät mit überwachen möchtest, dann einfach nur das Skript stoppen und wieder starten.
      Dann wird das neue Gerät gefunden und auch geloggt.

      Gruß,
      Stephan

  12. Michael Gerung Antworten

    Servus Stephan,
    danke für das tolle Script!
    ich benutze:
    * Skript Name: Shelly-Verbrauch
    * Skript Version: 1.60
    * Erstell-Datum: 08. Oktober 2021 | Update: 20. Juli 2022

    und habe nach Verwendung eines neuen Shelly Plug “komische Werte”:
    Verbrauch Heute: 0,73 Wh “das verändert sich den ganzen Tag nicht…)
    Verbrauch Gestern: 0 Wh

    der duchschnittliche tatsächliche Verbrauch ist ca. 3W (läuft immer)
    das wären heute jetzt um 11:20 ca. 34 Wh.

    wann wird denn der “Messwert neu” zum “Messwert alt”? 00:00 Uhr?

    kennst du das Phänomen?

    schöne Grüße
    Michael

      • Michael Gerung Antworten

        wie komme ich der Unzulänglichkeit näher?
        welche Analysemöglichkeiten habe ich?
        schöne Grüße
        Michael

        • Stephan Autor des BeitragsAntworten

          Du könntest mal in dem Sonoff Adapter schauen. Wenn dort die Werte nicht richtig ankommen, liegt der Fehler dort oder weiter vorne – sprich am Gerät.

      • Michael Gerung Antworten

        Hallo Stephan,
        ich habe das Problem gefunden.

        in der Zeile 290 ist diese Abfrage:
        if (alter_verbrauch < 1 || alter_verbrauch == null) {
        Da mein Verbrauch in 15 min immer unter 1 ist wurde der
        gegenwärtige Tagesverbrauch immer quasi genullt.

        ich hab das geändert auf
        if (alter_verbrauch < 0.3 || alter_verbrauch == null) {
        und jetzt passt es soweit.

        ich frage mich natürlich ob die Abfrage auf alter_verbrauch == null nicht ausreicht, aber da hattest du wahrscheinlich Gründe auch auf kleiner 1 abzufragen.

        schöne Grüße
        Michael

        • Stephan Autor des BeitragsAntworten

          Hallo Michael,
          in Zeile 290 sehe ich die genannten Zeichen leider nicht.
          Hier wird nur der alte Verbrauch geprüft. Nicht der “aktuelle” Verbrauch. Bevor man ein Skript editiert, sollte man es schon verstehen 😉

          Gruß,
          Stephan

          • Michael Gerung

            Dann erklärs halt.
            in meiner aktuellen Version 1.60 stehts in Zeile 289.

            if (alter_verbrauch < 1 || alter_verbrauch == null) {
            verbrauch = parseFloat(wert)
            } else {
            verbrauch = parseFloat(alter_verbrauch) + parseFloat(wert);
            }

            falls der alte_verbrauch in 15 min. < 1 ist (was bei mir immer der Fall ist) wird in den Verbrauch nur der aktuelle Wert übernommen (der wieder < 1) ist.
            der alte_verbrauch wird nicht addiert.

            verstehtst du es jetzt?

          • Stephan Autor des Beitrags

            Du kommentierst zu einem Skript, welches gar nicht, das ist, was du nutzt. Hier ist die Kommentarfunktion für Tasmota – nicht Shelly 🙂

            Der Verbrauch wird anhand beider Werte berechnet. Wenn dieser Null ist (kleiner als 1), dann wird er geschrieben.
            Wenn größer als 1 oder eben nicht null, wird er addiert und geschrieben. Hier zählt nicht, wie hoch der Verbrauch “aktuell” nach 15 Minuten ist – sondern wieviel in den letzten 15 Minuten verbraucht wurde.

          • Michael Gerung

            das ist mir vollkommen klar.
            mein Verbrauch in den letzten 15 Minuten ist 0,73 also kleiner 1 aber halt nicht null.
            mit deiner Abfrage wird dieser kleine Verbrauch aber nicht aufaddiert sondern genullt.

            Wieso ist bei dir alles <1 Null???

            mit meiner Abfrage < 0.3 funktioniert es.
            wenn der 15 Minuten Verbrauch kleiner 0.3 ist funktioniert es natürlich wieder nicht.
            deshalb zurück zu meiner ursprünglichen Frage: was bezweckst du mit der Abfrage < 1 ?
            <1||Null macht eh keinen Sinn. wenns kleiner 1 ist brauchst du ja nicht auf ||Null abfragen.

          • Stephan Autor des Beitrags

            Wenn Du Dich mit der Materie “genullte Datenpunkte” einmal auseinandersetzt, wirst Du schnell merken, das es sehr wohl Sinn macht, einen Wert auf NULL zu prüfen, da diese vom Shelly Adapter auch mal NULL sein können.
            Das bezwecke ich damit. Fehler-Toleranz. Denn, ein User, der viele Warnungen oder Fehler in seinem Log hat und sich damit nicht auskennt, wird relativ schnell nervös.

            Pauschal solche Aussagen zu einem “Dir unbekannten Skript” zu tätigen, finde ich schon sehr mutig.

          • Michael Gerung

            ok. ich geb dir recht mit ||NULL.
            aber erklär mir wieso bei dir alles unter 1 Null ist (deine Aussage von unten “Wenn dieser Null ist (kleiner als 1)”)?

          • Stephan Autor des Beitrags

            Naja, wenn etwas unterhalb von einem 1W/h verbraucht hast, finde ich es eher unnötig, dies zu “loggen”. Klar kann man, wenn man nun den Haarfön des Hamsters mit 0,21W/h aufzeichnen möchte, das Skript anpassen und ggf. fragen, wie dies gehen würde – ist aber auch mehr als selten. Oder misst du den Verbrauch von einem Akkue-Ladegerät? 🙂

          • Michael Gerung

            wenn du es für unnötig hältst, kann es doch durchaus Leute geben die es genau wissen wollen 😉 ich zum Beispiel.
            ich logge den Pool Roboter. und der Ruhe Verbrauch (nur die Anschaltbox/Netzteil vom Robi) braucht halt knappe 4W was in 15 Minuten < 1Wh sind und dementsprechend nach deinem originalscript NULL! (oh entschuldige nicht NULL sondern halt weniger als 1) 🙂

          • Stephan Autor des Beitrags

            Exakt. Daher gibt es hier die Kommentarfunktion, um über solche Dinge zu sprechen. Wenn Dir 1W nicht reichen, dann setze diesen Wert einfach auf 0.5 und alles wird geloggt.

  13. Henry Pickert Antworten

    Danke für Deine kleinen netten Scripte 🙂

    Musste bei mir allerdings etwas umändern damit es lief bei mir.

    // Datenpunkte der Tasmota (!!! Bitte nicht ändern !!!)
    //const tasmotaDps = $(‘state[id=’ + tasmota_dp + ‘.*.ENERGY_Total]’);
    const tasmotaDps = $(‘state[id=’ + tasmota_dp + ‘.*.ENERGY.Total]’);

    Gruß Henry

    • Stephan Autor des BeitragsAntworten

      Hallo Henry,
      danke für die Rückmeldung.

      Vielleicht hat jemand einen Nutzen daraus 🙂

      Gruß,
      Stephan

  14. Thomas Antworten

    Hallo Stephan,

    danke für die Bereitstellung Deines Scriptes.
    Besteht die Möglichkeit auch jeden einzelnen Monat, also Januar bis Dezember, darzustellen? Ich möcvhte meine Solarmodule loggen, sodass ich die einzelnen Monatserträge
    angezeigt bekomme. Mit Grafana und Influx funktioniert das nicht richtig.
    Gruß
    Thomas

    • Stephan Autor des BeitragsAntworten

      Hallo Thomas,
      am Besten nutzt Du influx über den Influx-Adapter und lässt den Datenpunkt “heute” immer aktualisieren. Diesen kannst Du dann in Grafana perfekt auswerten.
      So mache ich dies auch 😉

      Gruß,
      Stephan

      • Thomas Antworten

        Hallo Stephan,
        “Datenpunkt “heute” immer aktualisieren.”

        Wo wird das eingegeben?

  15. Moto Guzzi Tom Antworten

    Hallo Stephan Kreyenborg,

    Ganz großes Kompliment, genau was ich gesucht habe! Dank deines Skriptes muss ich jetzt nicht mehr alle paar Tage zum Zettel greifen und die Werte notieren, wieviel Energie mein Plug in Hybrid getankt hat. Ohne dein Skript hätte ich wahrscheinlich wochenlang daran gebastelt oder hätte es gar nicht hinbekommen. Habe mich noch ein bisschen in deiner Anleitung zum SHELLY eingelesen, auch die Kommentare. Dann wurde mir der Zusammenhang klarer und nach kopieren und einfügen hat es auf Anhieb funktioniert. Für dich als Rückmeldung:
    Betreibe eine (demnächst mehrere) Sonoff POW R1 mit Version 2022.01.3(tasmota).

    Vielen Dank nochmal

    Tom

    P.S.: Finde ich die Werte auf dem Raspi auch in einer Datei? Falls nicht, nicht schlimm, dann bastel ich mir was 🙂 oder hast du dafür noch einen Trick in der Tasche oder auch schon mal was dazu geschrieben? Bis bald 🙂

    • Stephan Autor des BeitragsAntworten

      Hallo Tom,
      freut mich, wenn das Skript läuft.
      Eine Datei stelle ich aktuell nicht zur Verfügung – da wäre der Umfang zu groß, da jeder ein anderes Format haben wollen würde.

      Gruß,
      Stephan

      • Moto Guzzi Tom Antworten

        Hallo Stephan,
        nochmal danke für das Skript und danke für deine Antwort!
        Hatte in meinem 1. Post einen Schreibfehler, ist natürlich ein POW R2, bzw. war. Denn zwischenzeitlich habe ich den 2ten im System angemeldet und auch dieser hat sich sofort an deinem Skript angemeldet und läuft einwandfrei! Toll !!!
        Die Frage zur Datei:
        Ich bin zwar noch blutiger Anfänger, habe aber eine Lösung für mich gefunden.
        Konnte mir im Blockly selbst ein Skript schreiben, “JS-Funktion mit Ergebnis “Datei” mit; Dateiname…….”
        In unterschiedlichen Kombinationen kann ich damit den Tagesverlauf, Tageswerte, Wochenwerte, Monatswerte und Jahreswerte, dank deiner Datenpunkte wegspeichern. Wie ich die mal auswerte und grafisch darstelle weiß ich noch nicht, hat aber auch keine Priorität. Hauptsache sie sind da und gehen nicht verloren.
        Also alles super, weiter so!
        Gruß Tom

        P.S.: Wenn ich die Zeit finde, werde ich versuchen dein Skript auf einen oder mehrere SONOFF TH16 umzuschreiben (denke die Erlaubnis besteht) vom Prinzip sind die ankommenden Werte ja ähnlich, heißen nur anders.
        Oder hast du da schon was fertiges? Vorsichtig mit einem dezenten Grinsen gefragt! Nochmal Gruß

      • Hardy Antworten

        Funktioniert das auch mit Sonoff Geräten die eigentlich keine Energiemessung haben?

        VG Hardy

Schreibe einen Kommentar

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