Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Script zur Ermittlung stündlicher/täglicher Stromaufnahme funktioniert nicht

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

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

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Skotti last edited by 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);
      
      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Skotti last edited by paul53

        @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;
        });
        
        1 Reply Last reply Reply Quote 0
        • Dutchman
          Dutchman Developer Most Active Administrators last edited by

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

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          787
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

          3
          3
          241
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo