Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Script zur Ermittlung stündlicher/täglicher Stromaufnahme funktioniert nicht

NEWS

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

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

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

Script zur Ermittlung stündlicher/täglicher Stromaufnahme funktioniert nicht

Geplant Angeheftet Gesperrt Verschoben JavaScript
3 Beiträge 3 Kommentatoren 292 Aufrufe 2 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.
  • S Offline
    S Offline
    Skotti
    schrieb am zuletzt editiert von Skotti
    #1

    Hallo zusammen.

    Dies ist mein erster Post im Forum. Bitte verzeiht wenn meine Frage unangebracht erscheint, aber ich komme einfach nicht weiter.
    Das folgende Script soll einfach nur einmal pro Stunde bzw. einmal am Tag die Differenz des Stromzählers zum vorherigen Aufruf in eine Variable speichern. Die Werte sollen in einer SQL-Datenbank geloggt und in einem FLOT-Diagramm visualisiert werden. Für Diagnose-Zwecke habe ich auch noch eine Variable mit einem Zeitstempel angelegt und augenscheinlich werden die beiden definierten Funktionen auch zum gewünschten Zeitpunkt ausgeführt (Zeitstempel wie im schedule-Job vorgegeben, siehe Screenshot unten)Stromzähler-Variablen.png
    Leider werden keine Werte aus der Berechnung aufgezeichnet. Die einzelnen Peaks sind nur beim Testen und neustarten des Scripts entstanden).Hat jemand eine Idee?
    Stromzähler-FLOT-Diagramm.png

    So sieht mein Script aus:

    createState('Strom.Stunde.Aktuell', 0, {name: 'Stromverbrauch Stunde', unit: 'kWh', desc: 'Stromverbrauch letzte Stunde', type: 'number'});
    createState('Strom.Stunde.Gespeichert', 0, {name: 'Stromzählerwert Stunde', unit: 'Wh', desc: 'Stromzählerwert absolut letzte Stunde', type: 'number'});
    createState('Strom.Stunde.Zeitstempel', 0, {name: 'Zeitstempel Stunde', desc: 'Zeitstempel letzte Aktualisierung stündliche Stromaufnahme', type: 'string'});
    createState('Strom.Tag.Aktuell', 0, {name: 'Stromverbrauch Tag', unit: 'kWh', desc: 'Stromverbrauch letzter Tag', type: 'number'});
    createState('Strom.Tag.Gespeichert', 0, {name: 'Stromzählerwert Tag', unit: 'Wh', desc: 'Stromzählerwert absolut letzter Tag', type: 'number'});
    createState('Strom.Tag.Zeitstempel', 0, {name: 'Zeitstempel Tag', desc: 'Zeitstempel letzte Aktualisierung tägliche Stromaufnahme', type: 'string'});
    
    var instanz = 'javascript.0.';
    var idStrom_Stunde_Aktuell = instanz + 'Strom.Stunde.Aktuell';
    var idStrom_Stunde_Gespeichert = instanz + 'Strom.Stunde.Gespeichert';
    var idStrom_Stunde_Zeitstempel = instanz + 'Strom.Stunde.Zeitstempel';
    var idStrom_Tag_Aktuell = instanz + 'Strom.Tag.Aktuell';
    var idStrom_Tag_Gespeichert = instanz + 'Strom.Tag.Gespeichert';
    var idStrom_Tag_Zeitstempel = instanz + 'Strom.Tag.Zeitstempel';
    var Stromzähler_Aktuell = getState("hm-rpc.0.PEQ0544375.1.ENERGY_COUNTER").val;
    
    if (getState(idStrom_Stunde_Gespeichert).val == 0) {setState(idStrom_Stunde_Gespeichert, Stromzähler_Aktuell, true)};
    if (getState(idStrom_Tag_Gespeichert).val == 0) {setState(idStrom_Tag_Gespeichert, Stromzähler_Aktuell, true)};
    
    function fStromStunde(Obj) {
        setState(idStrom_Stunde_Aktuell, (Stromzähler_Aktuell - getState(idStrom_Stunde_Gespeichert).val) / 1000, true);
        setState(idStrom_Stunde_Gespeichert, Stromzähler_Aktuell, true);
        setState(idStrom_Stunde_Zeitstempel, formatDate(new Date(), "TT.MM.JJJJ SS:mm:ss"), true);
    };
    
    function fStromTag(Obj) {
        setState(idStrom_Tag_Aktuell, (Stromzähler_Aktuell - getState(idStrom_Tag_Gespeichert).val) / 1000, true);
        setState(idStrom_Tag_Gespeichert, Stromzähler_Aktuell, true);
        setState(idStrom_Tag_Zeitstempel, formatDate(new Date(), "TT.MM.JJJJ SS:mm:ss"), true);
    };
    
    schedule("0 * * * *", fStromStunde);
    schedule("0 0 * * *", fStromTag);
    
    paul53P 1 Antwort Letzte Antwort
    0
    • S Skotti

      Hallo zusammen.

      Dies ist mein erster Post im Forum. Bitte verzeiht wenn meine Frage unangebracht erscheint, aber ich komme einfach nicht weiter.
      Das folgende Script soll einfach nur einmal pro Stunde bzw. einmal am Tag die Differenz des Stromzählers zum vorherigen Aufruf in eine Variable speichern. Die Werte sollen in einer SQL-Datenbank geloggt und in einem FLOT-Diagramm visualisiert werden. Für Diagnose-Zwecke habe ich auch noch eine Variable mit einem Zeitstempel angelegt und augenscheinlich werden die beiden definierten Funktionen auch zum gewünschten Zeitpunkt ausgeführt (Zeitstempel wie im schedule-Job vorgegeben, siehe Screenshot unten)Stromzähler-Variablen.png
      Leider werden keine Werte aus der Berechnung aufgezeichnet. Die einzelnen Peaks sind nur beim Testen und neustarten des Scripts entstanden).Hat jemand eine Idee?
      Stromzähler-FLOT-Diagramm.png

      So sieht mein Script aus:

      createState('Strom.Stunde.Aktuell', 0, {name: 'Stromverbrauch Stunde', unit: 'kWh', desc: 'Stromverbrauch letzte Stunde', type: 'number'});
      createState('Strom.Stunde.Gespeichert', 0, {name: 'Stromzählerwert Stunde', unit: 'Wh', desc: 'Stromzählerwert absolut letzte Stunde', type: 'number'});
      createState('Strom.Stunde.Zeitstempel', 0, {name: 'Zeitstempel Stunde', desc: 'Zeitstempel letzte Aktualisierung stündliche Stromaufnahme', type: 'string'});
      createState('Strom.Tag.Aktuell', 0, {name: 'Stromverbrauch Tag', unit: 'kWh', desc: 'Stromverbrauch letzter Tag', type: 'number'});
      createState('Strom.Tag.Gespeichert', 0, {name: 'Stromzählerwert Tag', unit: 'Wh', desc: 'Stromzählerwert absolut letzter Tag', type: 'number'});
      createState('Strom.Tag.Zeitstempel', 0, {name: 'Zeitstempel Tag', desc: 'Zeitstempel letzte Aktualisierung tägliche Stromaufnahme', type: 'string'});
      
      var instanz = 'javascript.0.';
      var idStrom_Stunde_Aktuell = instanz + 'Strom.Stunde.Aktuell';
      var idStrom_Stunde_Gespeichert = instanz + 'Strom.Stunde.Gespeichert';
      var idStrom_Stunde_Zeitstempel = instanz + 'Strom.Stunde.Zeitstempel';
      var idStrom_Tag_Aktuell = instanz + 'Strom.Tag.Aktuell';
      var idStrom_Tag_Gespeichert = instanz + 'Strom.Tag.Gespeichert';
      var idStrom_Tag_Zeitstempel = instanz + 'Strom.Tag.Zeitstempel';
      var Stromzähler_Aktuell = getState("hm-rpc.0.PEQ0544375.1.ENERGY_COUNTER").val;
      
      if (getState(idStrom_Stunde_Gespeichert).val == 0) {setState(idStrom_Stunde_Gespeichert, Stromzähler_Aktuell, true)};
      if (getState(idStrom_Tag_Gespeichert).val == 0) {setState(idStrom_Tag_Gespeichert, Stromzähler_Aktuell, true)};
      
      function fStromStunde(Obj) {
          setState(idStrom_Stunde_Aktuell, (Stromzähler_Aktuell - getState(idStrom_Stunde_Gespeichert).val) / 1000, true);
          setState(idStrom_Stunde_Gespeichert, Stromzähler_Aktuell, true);
          setState(idStrom_Stunde_Zeitstempel, formatDate(new Date(), "TT.MM.JJJJ SS:mm:ss"), true);
      };
      
      function fStromTag(Obj) {
          setState(idStrom_Tag_Aktuell, (Stromzähler_Aktuell - getState(idStrom_Tag_Gespeichert).val) / 1000, true);
          setState(idStrom_Tag_Gespeichert, Stromzähler_Aktuell, true);
          setState(idStrom_Tag_Zeitstempel, formatDate(new Date(), "TT.MM.JJJJ SS:mm:ss"), true);
      };
      
      schedule("0 * * * *", fStromStunde);
      schedule("0 0 * * *", fStromTag);
      
      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @Skotti Die Variable Stromzähler_Aktuell wird nur bei Skriptstart eingelesen und anschließend nicht mehr aktualisiert.
      Es fehlt so etwas:

      on("hm-rpc.0.PEQ0544375.1.ENERGY_COUNTER", function(dp) {
         Stromzähler_Aktuell = dp.state.val;
      });
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • DutchmanD Offline
        DutchmanD Offline
        Dutchman
        Developer Most Active Administrators
        schrieb am zuletzt editiert von
        #3

        eventuell ist SourceAnalytix fuer dich interessant ?
        Bis auf die stunedliche aufnähme hat er alles da (tag, Woche, Monat usw)

        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

        397

        Online

        32.4k

        Benutzer

        81.4k

        Themen

        1.3m

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

        • Du hast noch kein Konto? Registrieren

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