Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Vorlage] Stromverbrauch protokollieren - (etwas optimiert)

    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

    [Vorlage] Stromverbrauch protokollieren - (etwas optimiert)

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Ham last edited by

      Hi,

      erstmal vielen Dank für das Skript! Bin neu hier und hab ein Problem mit dem Skript. Vielleicht kann mir jemand helfen 😄

      Hab das Skript laufen mit einem HM Zählersensor, zwei HM Schaltsteckdosen und im Moment noch mit drei Sonoff Pow.

      Mein Problem ist, das sich die Tageswerte von den Sonoff Geräten nicht zurücksetzen und in den Verbrauch Gestern schreiben. Bei den HM Geräten funktioniert das super.

      Meine Feststellung bisher ist, das wenn ich im Skript den Wert KumulierterWertIstBereitsInKilo in true (was ich brauch für die Sonoff Geräte) ändere, dass das zurücksetzen des Tageswertes nicht funktioniert. Wenn der Wert auf false steht funktioniert es, dann habe ich natürlich falsche Werte.

      Habe im Moment mehrere Skripte in verschiedenen Javaskript instanzen laufen. Die HM Sensoren und die Sonoff Geräte extra.

      Das benutzte Skript für die Sonoff Geräte ist dieses:

      `//jshint maxerr:1000
      // https://github.com/hdering/homematic_stromverbrauch_protokollieren
      
      //----------------------------------------------------------------------------//
      
      // Version: 1.3.3
      
      //----------------------------------------------------------------------------//
      // +++++++++  USER ANPASSUNGEN ++++++++++++++++++++++++
      
      // debug logging
      var logging = true;
      
      // Aktivieren der History Instanz
      var enable_history = false;
      
      // history Instanz
      var instance_history = 'history.0';
      
      // Geräte können unterschiedliche Preise haben
      var enable_unterschiedlichePreise = false;
      
      // Speichern der Werte in zusätzlichen Objekten.
      // Wenn 0, dann deaktiviert
      var Tag_Anzahl_Werte_in_der_Vergangenheit       = 7;
      var Woche_Anzahl_Werte_in_der_Vergangenheit     = 4;
      var Monat_Anzahl_Werte_in_der_Vergangenheit     = 12;
      var Quartal_Anzahl_Werte_in_der_Vergangenheit   = 4;
      var Jahr_Anzahl_Werte_in_der_Vergangenheit      = 2;
      
      // Grundpreis einberechnen
      var enable_Grundpreis_einberechnen = false;
      
      var instance    = '2';
      var instanz     = 'javascript.' + instance + '.';
      
      // Pfad innerhalb der Instanz
      var pfad        = 'Verbrauchszaehler.';
      
      var default_unit = 'Wh';
      var default_unit_kilo = 'kWh';
      
      // Diese Teile werden aus den Gerätenamen entfernt
      var blacklist   = [':1', ':2', ':3', ':4', ':5', ':6', ':7', ':8', ];
      
      var AnzahlKommastellenKosten = 2;
      var AnzahlKommastellenVerbrauch = 3;
      var AnzahlKommastellenZaehlerstand = 3;
      
      var KumulierterWertIstBereitsInKilo = false;
      
      var eigeneDatenpunkte = [
      
          // Beispiel:
          // ['Datenpunkt', 'Aliasname', 'Einheit kumulierter Wert', 'Einheit berechnete Werte (kilo/1000)' ],
      
          // [ 'hm-rpc.1.MEQ0273693.2.ENERGY_COUNTER', 'Stromallgemein', 'Wh', 'kWh' ],
             [ 'sonoff.0.SonoffPowTrockner.ENERGY_Today', 'SonoffPowTrockner', 'kWh', 'kWh' ],
             [ 'sonoff.0.SonoffPowWaschmaschine.ENERGY_Today', 'SonoffPowWaschmaschine', 'kWh', 'kWh' ],
             [ 'sonoff.0.SonoffPowSpuelmaschine.ENERGY_Today', 'SonoffPowSpuelmaschine', 'kWh', 'kWh' ],
          // [ 'sonoff.0.SonoffPowWaschmaschine.ENERGY_Today', 'SonoffPowWaschmaschine', 'kWh', 'kWh' ],
          // [ 'sonoff.0.SonoffPowSpuelmaschine.ENERGY_Today', 'SonoffPowSpuelmaschine', 'Wh', 'kWh' ],
          // [ 'hm-rpc.1.MEQ0274049.2.ENERGY_COUNTER', 'StromLukasIR', 'kWh', 'kWh' ],
          // [ 'javascript.1.MeineGas1', 'Gas.MeinGaszaehler1', 'm3', 'm3' ],
          // [ 'javascript.1.MeineGas2', 'Gas.MeinGaszaehler2', 'm3', 'm3' ],
      ];
      
      // Pushmeldung
      function send_message(text) {
      
          // Hier können die Pushmeldung über alle möglichen Wege verschickt werden.
      
          //console.log(text);
      
          //sendTelegram(text);
      }
      
      // ++++ ENDE USER ANPASSUNGEN ++++++++++++++++++++++++
      //----------------------------------------------------------------------------//
      
      createState(pfad + 'Preis.aktuell.Arbeitspreis', {
          name: 'Strompreis - aktueller Arbeitspreis (brutto)',
          unit: '€/' + default_unit_kilo,
          type: 'number',
          def:  0,
          min:  0
      });
      
      createState(pfad + 'Preis.aktuell.Grundpreis',  {                           
          name: 'Strompreis - aktueller Grundpreis (brutto)',
          unit: '€/Monat',
          type: 'number',
          def:  0,
          min: 0
      });
      
      //----------------------------------
      
      createState(pfad + 'Preis.neu.Arbeitspreis', {
          name: 'Strompreis - neuer Arbeitspreis ab Datum (brutto)',
          unit: '€/' + default_unit_kilo,
          type: 'number',
          def:  0,
          min:  0
      });
      
      createState(pfad + 'Preis.neu.Grundpreis',  {                           
          name: 'Strompreis - neuer Grundpreis ab Datum (brutto)',
          unit: '€/Monat',
          type: 'number',
          def:  0,
          min: 0
      });
      
      createState(pfad + 'Preis.neu.Datum',  {                           
          name: 'Strompreis und Grundpreis ab folgendem Datum zur Berechnung heranziehen (Beispiel 01.01.2019)',
          type: 'string',
          def: "01.01.1970",
      });
      
      createState(pfad + 'Preis.neu.PreisaenderungDurchgefuehrt', false, {
        read: true, 
        write: true, 
        type: "boolean", 
        def: false
      });
      
      //----------------------------------------------------------------------------//
      
      var cacheSelectorStateMeter  = $('channel[state.id=*.METER]');
      var cacheSelectorStateEnergyCounter  = $('channel[state.id=*.ENERGY_COUNTER$]');
      
      //----------------------------------------------------------------------------//
      
      function parseObjects(id) {
          var obj = getObject(id);
      
          return entferneDatenpunkt(obj.common.name);
      }
      
      function setRecognizedChange(type, anzahl) {
      
          cacheSelectorStateMeter.each(function (id, i) {
              var geraetename = parseObjects(id);
      
              rotateVerbrauchUndKosten(geraetename, type, anzahl);
      
              resetVerbrauchUndKosten(geraetename, type);
      
              schreibeZaehlerstand(geraetename, type);
          });
      
          cacheSelectorStateEnergyCounter.each(function (id, i) {
              var geraetename = parseObjects(id);
      
              rotateVerbrauchUndKosten(geraetename, type, anzahl);
      
              resetVerbrauchUndKosten(geraetename, type);
      
              schreibeZaehlerstand(geraetename, type);
          });
      
          if (eigeneDatenpunkte.length > 0) {
      
              for(var i = 0; i < eigeneDatenpunkte.length; i++) {
                  var alias = eigeneDatenpunkte[i][1];
      
                  rotateVerbrauchUndKosten(alias, type, anzahl);
      
                  resetVerbrauchUndKosten(alias, type);
      
                  schreibeZaehlerstand(alias, type);
              }
          }
      }
      
      //----------------------------------------------------------------------------//
      
      // Tageswechsel
      schedule("0 0 * * *", function() {
          setRecognizedChange('Tag', Tag_Anzahl_Werte_in_der_Vergangenheit);
      });
      
      // Wochenwechsel
      schedule("0 0 * * 1", function() {
          setRecognizedChange('Woche', Woche_Anzahl_Werte_in_der_Vergangenheit);
      });
      
      // Monatswechsel
      schedule("0 0 1 * *", function() {
          setRecognizedChange('Monat', Monat_Anzahl_Werte_in_der_Vergangenheit);
      });
      
      // Quartalswechsel
      schedule("0 0 1 */3 *", function() {
          setRecognizedChange('Quartal', Quartal_Anzahl_Werte_in_der_Vergangenheit);
      });
      
      // Jahreswechsel
      schedule("0 0 1 1 *", function() {
          setRecognizedChange('Jahr', Jahr_Anzahl_Werte_in_der_Vergangenheit);
      });
      
      //----------------------------------------------------------------------------//
      
      // Eigene Datenpunkte
      function pruefeEigeneDatenpunkte() {
      
          if (eigeneDatenpunkte.length > 0) {
      
              for(var i = 0; i < eigeneDatenpunkte.length; i++) {
      
                  var datenpunkt = eigeneDatenpunkte[i][0];
                  var alias = eigeneDatenpunkte[i][1];
                  var einheit = eigeneDatenpunkte[i][2];
                  var einheit_kilo = eigeneDatenpunkte[i][3];
      
                  if(logging) console.log("Alias:" + alias + " Datenpunkt:" + datenpunkt + " Einheit:" + einheit + " Einheit_kilo:" + einheit_kilo);
      
                  on(datenpunkt, function(obj) {
      
                      for(var i = 0; i < eigeneDatenpunkte.length; i++) {
      
                          if(eigeneDatenpunkte[i][0] === obj.id)    
                              run(obj, eigeneDatenpunkte[i][1], eigeneDatenpunkte[i][2], eigeneDatenpunkte[i][3]);
                      }
                  });
              }
          }
      }
      
      pruefeEigeneDatenpunkte();
      
      //----------------------------------------------------------------------------//
      
      // Einlesen der aktuellen Daten vom Zähler
      function run(obj, alias, unit, unit_kilo) {
      
          if (logging) {   
              log('-------- Strommesser ---------');
              log('RegExp-Funktion ausgelöst');
              log('id:           ' + obj.id);
              log('Name:         ' + obj.common.name);   // Waschmaschine Küche:2.ENERGY_COUNTER
              log('channel ID:   ' + obj.channelId);     // hm-rpc.0.MEQ0170864.2
              log('channel Name: ' + obj.channelName);   // Waschmaschine Küche:2
              log('device ID:    ' + obj.deviceId);      // hm-rpc.0.MEQ0170864
              log('device name:  ' + obj.deviceName);    // Küche Waschmaschine
              log('neuer Wert:   ' + obj.newState.val);  // 16499.699982
              log('alter Wert:   ' + obj.oldState.val);  // 16499.699982
          }
      
          // Gerätenamen erstellen
          if (logging) log('vor der Aufbereitung: ' + obj.common.name); 
      
          var geraetename = entferneDatenpunkt(obj.common.name);
      
          if(typeof alias !== "undefined")  {
              if(logging) console.log("Es wird der Aliasname gesetzt:" + alias);
      
              geraetename = alias;
          }
      
          if (logging) log('Nach der Aufbereitung: ' + geraetename); 
      
          if(typeof geraetename !== "undefined") {
      
              //------------------------------------------------------------------------//
      
              _unit = default_unit;
              _unit_kilo = default_unit_kilo;
      
              // States erstellen (CreateStates für dieses Gerät)
              if(typeof unit !== "undefined")  {
                  _unit = unit;
              }
      
              if(typeof unit_kilo !== "undefined")  {
                  _unit_kilo = unit_kilo;
              }
      
              erstelleStates(geraetename, _unit, _unit_kilo);
      
              //------------------------------------------------------------------------//
      
              // Schreiben der neuen Werte
      
              var idKumuliert =  instanz + pfad + geraetename + '.Zaehlerstand.kumuliert';
      
              var NeustartEventuellErkannt = false;
              var NeustartSicherErkannt = false;
      
              var oldState = obj.oldState.val;
              var newState = obj.newState.val;
              var difference = newState - oldState;
      
              if(difference > 0) {
      
                  if(oldState !== 0) {
      
                      // Kumulierten Wert mit Ist-Wert (inkl. Backup) synchronisieren
                      var newValueKumuliert = getState(idKumuliert).val + difference;
      
                      newValueKumuliert = parseFloat(newValueKumuliert);
      
                      setState(idKumuliert, newValueKumuliert);
      
                  } else {
      
                      if(newState < getState(pfad + geraetename + '.config.NeustartErkanntAlterWert').val) {
      
                          NeustartSicherErkannt = true;
                      }
                  }
      
              } else {
      
                  // Fall 2 oder 3
                  // Irgendetwas läuft außerplanmäßig. Wert wird sicherheitshalber gespeichert und nächster Lauf abgewartet
                  NeustartEventuellErkannt = true;
      
                  setState(pfad + geraetename + '.config.NeustartErkanntAlterWert', obj.oldState.val);
              }
      
              if(NeustartEventuellErkannt) {
      
                  if(logging) {
                      var message =  geraetename + '\n'
                                      + 'Entweder die CCU oder Stromzähler wurden neugestartet/zurückgesetzt.\n'
                                      + 'Dieser Wert wird einmal ignoriert und auf den nächsten Wert gewartet.';
      
                      send_message(message);
                  }
              }
      
              if(NeustartSicherErkannt) {
      
                  // zurücksetzen der Variable
                  setState(pfad + geraetename + '.config.NeustartErkanntAlterWert', 0);
      
                  //----------------------------------------------------------------//
      
                  var message2 = geraetename + '\n'
                              + 'Der Stromzähler (' + geraetename + ') ist übergelaufen, gelöscht oder neugestartet worden (ggf. Stromausfall).\n'
                              + 'newState:' + obj.newState.val + '\n' 
                              + 'oldState:' + obj.oldState.val + '\n'
                              + 'differenz:' + difference + '\n'
                              + 'idKumuliert:' + getState(idKumuliert).val;
      
                  send_message(message2);
              }
      
              //--------------------------------------------------------------------//
      
              pruefePreisaenderung();
      
              if(enable_unterschiedlichePreise)
                  pruefePreisaenderung(geraetename);
      
              var idStrompreis = instanz + pfad + 'Preis.aktuell.Arbeitspreis';
              var idGrundpreis = instanz + pfad + 'Preis.aktuell.Grundpreis';
      
              // aktualisiere den Verbrauch und die Kosten
              if(KumulierterWertIstBereitsInKilo)
                  _zaehler    = (getState(idKumuliert).val).toFixed(AnzahlKommastellenZaehlerstand);
              else
                  _zaehler    = (getState(idKumuliert).val / 1000).toFixed(AnzahlKommastellenZaehlerstand);
      
              _preis      = getState(idStrompreis).val;
              _grundpreis = getState(idGrundpreis).val;
      
              // Wenn das Gerät einen eigenen Strompreis / Grundpreis hat
              if(enable_unterschiedlichePreise) {
      
                  if(getState(instanz + pfad + geraetename + '.eigenerPreis.aktuell.Arbeitspreis').val > 0) {
                      _preis = getState(instanz + pfad + geraetename + '.eigenerPreis.aktuell.Arbeitspreis').val;
      
                      if (logging) console.log("Das Gerät:" + geraetename + " hat eigenen Strompreis: " + _preis);
                  }
      
                  if(getState(instanz + pfad + geraetename + '.eigenerPreis.aktuell.Grundpreis').val > 0) {
                      _grundpreis = getState(instanz + pfad + geraetename + '.eigenerPreis.aktuell.Grundpreis').val;
      
                      if (logging) console.log("Das Gerät:" + geraetename + " hat eigenen Grundpreis: " + _grundpreis);
                  }
              }
      
              berechneVerbrauchUndKosten(geraetename, _zaehler, _preis, _grundpreis); // in kWh
      
              if (logging) log('------------ ENDE ------------');
      
          } else {
      
              var message3 = 'Fehler beim Erstellen des Gerätenamens:\n'
                          + 'obj.common.name: ' + obj.common.name;
      
              send_message(message3);
          }
      }
      
      cacheSelectorStateMeter.on(function(obj) {
         run(obj);
      });
      
      cacheSelectorStateEnergyCounter.on(function(obj) {
         run(obj);
      });
      
      //----------------------------------------------------------------------------//
      
      function entferneDatenpunkt(geraet) {
      
          var rueckgabe = geraet;
      
          // ":2.ENERGY_COUNTER" --> ".ENERGY_COUNTER"
          if (geraet.indexOf(".ENERGY_COUNTER") != -1) {
      
              rueckgabe = geraet.substring(0, geraet.indexOf(".ENERGY_COUNTER"));
      
          } else if (geraet.indexOf(".METER") != -1) {
      
              rueckgabe = geraet.substring(0, geraet.indexOf(".METER"));
          }
      
          if (logging) log('entferneDatenpunkt - rueckgabe1:' + rueckgabe);
      
          // Rückgabe sollte keine Sonderzeichen oder Leerzeichen enthalten. Wenn doch, werden die entfernt oder ersetzt
      
          try {
              rueckgabe = checkBlacklist(rueckgabe);
          }
          catch(err) {
              if (logging) log('entferneDatenpunkt - rueckgabe2:' + rueckgabe + ' error:' + err);
          }
          finally {
              if (logging) log('entferneDatenpunkt - rueckgabe2:' + rueckgabe);
          }
      
          try {
              if (rueckgabe.charAt(rueckgabe.length - 1) == "-") rueckgabe = rueckgabe.substr(0, rueckgabe.length - 1);
              if (rueckgabe.charAt(rueckgabe.length - 1) == "\\") rueckgabe = rueckgabe.substr(0, rueckgabe.length - 1);
              if (rueckgabe.charAt(rueckgabe.length - 1) == ":") rueckgabe = rueckgabe.substr(0, rueckgabe.length - 1);
          }
          catch(err) {
              if (logging) log('entferneDatenpunkt - rueckgabe3:' + rueckgabe + ' error:' + err);
          }
          finally {
              if (logging) log('entferneDatenpunkt - rueckgabe3:' + rueckgabe);
          }
      
          // per Regexp Leerzeichen entfernen
          try {
              rueckgabe = rueckgabe.replace(/\s/g, "");
          }
          catch(err) {
              if (logging) log('entferneDatenpunkt - rueckgabe4:' + rueckgabe + ' error:' + err);
          }
          finally {
              if (logging) log('entferneDatenpunkt - rueckgabe4:' + rueckgabe);
          }
      
          return rueckgabe;
      }
      
      function checkBlacklist(name) {
      
          var _name = "";
      
          if (blacklist.length > 0) {
      
              for(var i = 0; i < blacklist.length; i++) {
      
                  if (name.indexOf(blacklist[i]) != -1) {
      
                      // Zeichenketten, die in der Blacklist stehen, aus dem Namen löschen
                      _name = name.substring(0, name.indexOf(blacklist[i]));
                  }
              }
      
              if(_name === "") {
                  return name;
              } else {
                  return _name;
              }
      
          } else return (name);
      }
      
      function schreibeZaehlerstand(geraet, zeitraum) { 
      
          var idKumuliert =    instanz + pfad + geraet + '.Zaehlerstand.kumuliert',
              idZaehlerstand = instanz + pfad + geraet + '.Zaehlerstand.' + zeitraum;
      
          // Zählerstand für übergebene Zeitraum und das Gerät in Wh auslesen und in kWh speichern (also durch 1000)
      
          if(KumulierterWertIstBereitsInKilo)
              setState(idZaehlerstand, parseFloat( (getState(idKumuliert).val).toFixed(AnzahlKommastellenZaehlerstand)) );  
          else
              setState(idZaehlerstand, parseFloat( (getState(idKumuliert).val / 1000).toFixed(AnzahlKommastellenZaehlerstand)) ); 
      
          if (logging) log('Zählerstände für das Gerät ' + geraet + ' (' + zeitraum + ') in Objekten gespeichert');
      }
      
      function rotateVerbrauchUndKosten(geraet, zeitraum, anzahl) {
      
          // Verbrauch
          if(anzahl > 0) {
      
              for(var i = anzahl; i >= 0; i--) {
      
                  var j = i;
      
                  j++;
      
                  if(getObject(instanz + pfad + geraet + '.Verbrauch._' + zeitraum + '.' + zeitraum + '_' + j)) {
      
                      if(i === 0)
                          setState(instanz + pfad + geraet + '.Verbrauch._' + zeitraum + '.' + zeitraum + '_' + j, getState(instanz + pfad + geraet + '.Verbrauch.' + zeitraum).val);
                      else
                          setState(instanz + pfad + geraet + '.Verbrauch._' + zeitraum + '.' + zeitraum + '_' + j, getState(instanz + pfad + geraet + '.Verbrauch._' + zeitraum + '.' + zeitraum + '_' + i).val);
                  }
              }
          }
      
          // Kosten
          if(anzahl > 0) {
      
              for(var i = anzahl; i >= 0; i--) {
      
                  var j = i;
      
                  j++;
      
                  if(getObject(instanz + pfad + geraet + '.Kosten._' + zeitraum + '.' + zeitraum + '_' + j)) {
      
                      if(i === 0)
                          setState(instanz + pfad + geraet + '.Kosten._' + zeitraum + '.' + zeitraum + '_' + j, getState(instanz + pfad + geraet + '.Kosten.' + zeitraum).val);
                      else
                          setState(instanz + pfad + geraet + '.Kosten._' + zeitraum + '.' + zeitraum + '_' + j, getState(instanz + pfad + geraet + '.Kosten._' + zeitraum + '.' + zeitraum + '_' + i).val);
                  }
              }
          }
      }
      
      function resetVerbrauchUndKosten(geraet, zeitraum) {
      
          // Reset der Stromkosten für den übergebenen Zeitraum
          // Reset des Stromverbrauchs für den übergebenen Zeitraum 
          setState(instanz + pfad + geraet + '.Kosten.' + zeitraum, 0);     
          setState(instanz + pfad + geraet + '.Verbrauch.' + zeitraum, 0);
      
          if (logging) log('Stromkosten und Stromverbrauch für das Gerät ' + geraet + ' (' + zeitraum + ') zurückgesetzt');
      } 
      
      function berechneVerbrauchUndKosten(geraet, zaehler, preis, grundpreis) {                      
      
          // bei jedem eingehenden Wert pro Gerät
      
          if(preis === 0) {
      
              var message0 = 'Achtung!' + '.\n'
                          + 'Es wurde noch kein Arbeitspreis angegeben.' + '\n' 
                          + 'Ohne Arbeitspreis kann das Skript keine Berechnungen durchführen.' + '\n'
                          + 'Diese Information ist zwingend notwendig!';
      
              log(message0, 'error');
      
          } else {
      
              var _grundpreis = 0;
      
              if(enable_Grundpreis_einberechnen) {
      
                  _grundpreis = grundpreis * 12 / 365;
      
                  _grundpreis = parseFloat(_grundpreis.toFixed(3));
              }
      
              grundpreis_tag      = _grundpreis;
              grundpreis_woche    = _grundpreis * 7;
              grundpreis_monat    = _grundpreis * 30; 
              grundpreis_quartal  = _grundpreis * 90;
              grundpreis_jahr     = _grundpreis * 365;
      
              // Tag [Verbrauchskosten = (Zähler_ist - Zähler_Tagesbeginn) * Preis ] --- zaehler muss immer größer sein als Tages, Wochen, etc.-Wert
              setState(instanz + pfad + geraet + '.Kosten.Tag',        parseFloat( (((zaehler - getState(instanz + pfad + geraet + '.Zaehlerstand.Tag').val) * preis) + grundpreis_tag).toFixed(AnzahlKommastellenKosten) ) );  // Kosten an diesem Tag in €
      
              // Woche
              setState(instanz + pfad + geraet + '.Kosten.Woche',      parseFloat( (((zaehler - getState(instanz + pfad + geraet + '.Zaehlerstand.Woche').val) * preis) + grundpreis_woche).toFixed(AnzahlKommastellenKosten) ) );
      
              // Monat
              setState(instanz + pfad + geraet + '.Kosten.Monat',      parseFloat( (((zaehler - getState(instanz + pfad + geraet + '.Zaehlerstand.Monat').val) * preis) + grundpreis_monat).toFixed(AnzahlKommastellenKosten) ) );
      
              // Quartal
              setState(instanz + pfad + geraet + '.Kosten.Quartal',    parseFloat( (((zaehler - getState(instanz + pfad + geraet + '.Zaehlerstand.Quartal').val) * preis) + grundpreis_quartal).toFixed(AnzahlKommastellenKosten) ) );
      
              // Jahr
              setState(instanz + pfad + geraet + '.Kosten.Jahr',       parseFloat( (((zaehler - getState(instanz + pfad + geraet + '.Zaehlerstand.Jahr').val) * preis) + grundpreis_jahr).toFixed(AnzahlKommastellenKosten) ) );  
      
              if (logging) log('Stromkosten (' + geraet + ') aktualisiert');
          }
      
          // Verbrauch berechnen
      
          // Tag [Verbrauchskosten = (Zähler_ist - Zähler_Tagesbeginn) * Preis ] --- zaehler muss immer größer sein als Tages, Wochen, etc.-Wert
          setState(instanz + pfad + geraet + '.Verbrauch.Tag',     parseFloat(   (zaehler - getState(instanz + pfad + geraet + '.Zaehlerstand.Tag').val).toFixed(AnzahlKommastellenVerbrauch) ) );           // Verbrauch an diesem Tag in kWh
      
          // Woche
          setState(instanz + pfad + geraet + '.Verbrauch.Woche',   parseFloat(   (zaehler - getState(instanz + pfad + geraet + '.Zaehlerstand.Woche').val).toFixed(AnzahlKommastellenVerbrauch) ) );
      
          // Monat
          setState(instanz + pfad + geraet + '.Verbrauch.Monat',   parseFloat(   (zaehler - getState(instanz + pfad + geraet + '.Zaehlerstand.Monat').val).toFixed(AnzahlKommastellenVerbrauch) ) );
      
          // Quartal
          setState(instanz + pfad + geraet + '.Verbrauch.Quartal', parseFloat(   (zaehler - getState(instanz + pfad + geraet + '.Zaehlerstand.Quartal').val).toFixed(AnzahlKommastellenVerbrauch) ) );
      
          // Jahr
          setState(instanz + pfad + geraet + '.Verbrauch.Jahr',    parseFloat(   (zaehler - getState(instanz + pfad + geraet + '.Zaehlerstand.Jahr').val).toFixed(AnzahlKommastellenVerbrauch) ) );
      
          if (logging) log('Stromverbrauch (' + geraet + ') aktualisiert');
      }
      
      function erstelleStates (geraet, _unit, _unit_kilo) {
      
          // Kumulierter Zählerstand (wird nie kleiner)
          createState(pfad + geraet + '.Zaehlerstand.kumuliert', 0, {name: 'Kumulierter Zählerstand (' + geraet + ')', type: 'number', unit: _unit });
      
          // Zählerstand
          createState(pfad + geraet + '.Zaehlerstand.Tag',     0, {name: 'Zählerstand Tagesbeginn ('       + geraet + ')', type: 'number', unit: _unit_kilo });
          createState(pfad + geraet + '.Zaehlerstand.Woche',   0, {name: 'Zählerstand Wochenbeginn ('      + geraet + ')', type: 'number', unit: _unit_kilo });
          createState(pfad + geraet + '.Zaehlerstand.Monat',   0, {name: 'Zählerstand Monatsbeginn ('      + geraet + ')', type: 'number', unit: _unit_kilo });
          createState(pfad + geraet + '.Zaehlerstand.Quartal', 0, {name: 'Zählerstand Quartalsbeginn ('    + geraet + ')', type: 'number', unit: _unit_kilo });
          createState(pfad + geraet + '.Zaehlerstand.Jahr',    0, {name: 'Zählerstand Jahresbeginn ('      + geraet + ')', type: 'number', unit: _unit_kilo });
      
          // Verbrauch 
          createState(pfad + geraet + '.Verbrauch.Tag',        0, {name: 'Verbrauch seit Tagesbeginn ('    + geraet + ')', type: 'number', unit: _unit_kilo });
          createState(pfad + geraet + '.Verbrauch.Woche',      0, {name: 'Verbrauch seit Wochenbeginn ('   + geraet + ')', type: 'number', unit: _unit_kilo });
          createState(pfad + geraet + '.Verbrauch.Monat',      0, {name: 'Verbrauch seit Monatsbeginn ('   + geraet + ')', type: 'number', unit: _unit_kilo });
          createState(pfad + geraet + '.Verbrauch.Quartal',    0, {name: 'Verbrauch seit Quartalsbeginn (' + geraet + ')', type: 'number', unit: _unit_kilo });
          createState(pfad + geraet + '.Verbrauch.Jahr',       0, {name: 'Verbrauch seit Jahresbeginn ('   + geraet + ')', type: 'number', unit: _unit_kilo });
      
          // Stromkosten
          createState(pfad + geraet + '.Kosten.Tag',           0, {name: 'Stromkosten heute ('             + geraet + ')', type: 'number', unit: '€' });
          createState(pfad + geraet + '.Kosten.Woche',         0, {name: 'Stromkosten Woche ('             + geraet + ')', type: 'number', unit: '€' });
          createState(pfad + geraet + '.Kosten.Monat',         0, {name: 'Stromkosten Monat ('             + geraet + ')', type: 'number', unit: '€' });
          createState(pfad + geraet + '.Kosten.Quartal',       0, {name: 'Stromkosten Quartal ('           + geraet + ')', type: 'number', unit: '€' });
          createState(pfad + geraet + '.Kosten.Jahr',          0, {name: 'Stromkosten Jahr ('              + geraet + ')', type: 'number', unit: '€' });
      
          // Speichern der Werte in zusätzlichen Variablen
          if(Tag_Anzahl_Werte_in_der_Vergangenheit > 0) {
      
              for(var i = 1; i <= Tag_Anzahl_Werte_in_der_Vergangenheit; i++) {
                  createState(pfad + geraet + '.Verbrauch._Tag.Tag_' + i,             0, {name: 'Verbrauch vor ' + i + ' Tag(en) ('    + geraet + ')', type: 'number', unit: _unit_kilo });
                  createState(pfad + geraet + '.Kosten._Tag.Tag_' + i,                0, {name: 'Stromkosten vor ' + i + ' Tag(en) ('  + geraet + ')', type: 'number', unit:'€'  });
              }
          }
      
          if(Woche_Anzahl_Werte_in_der_Vergangenheit > 0) {
      
              for(var i = 1; i <= Woche_Anzahl_Werte_in_der_Vergangenheit; i++) {
                  createState(pfad + geraet + '.Verbrauch._Woche.Woche_' + i,         0, {name: 'Verbrauch vor ' + i + ' Woche(n) ('    + geraet + ')', type: 'number', unit: _unit_kilo });
                  createState(pfad + geraet + '.Kosten._Woche.Woche_' + i,            0, {name: 'Stromkosten vor ' + i + ' Woche(n) ('  + geraet + ')', type: 'number', unit:'€'  });
              }
          }
      
          if(Monat_Anzahl_Werte_in_der_Vergangenheit > 0) {
      
              for(var i = 1; i <= Monat_Anzahl_Werte_in_der_Vergangenheit; i++) {
                  createState(pfad + geraet + '.Verbrauch._Monat.Monat_' + i,         0, {name: 'Verbrauch vor ' + i + ' Monat(en) ('    + geraet + ')', type: 'number', unit: _unit_kilo });
                  createState(pfad + geraet + '.Kosten._Monat.Monat_' + i,            0, {name: 'Stromkosten vor ' + i + ' Monat(en) ('  + geraet + ')', type: 'number', unit:'€'  });
              }
          }
      
          if(Quartal_Anzahl_Werte_in_der_Vergangenheit > 0) {
      
              for(var i = 1; i <= Quartal_Anzahl_Werte_in_der_Vergangenheit; i++) {
                  createState(pfad + geraet + '.Verbrauch._Quartal.Quartal_' + i,     0, {name: 'Verbrauch vor ' + i + ' Quartal(en) ('    + geraet + ')', type: 'number', unit: _unit_kilo });
                  createState(pfad + geraet + '.Kosten._Quartal.Quartal_' + i,        0, {name: 'Stromkosten vor ' + i + ' Quartal(en) ('  + geraet + ')', type: 'number', unit:'€'  });
              }
          }
      
          if(Jahr_Anzahl_Werte_in_der_Vergangenheit > 0) {
      
              for(var i = 1; i <= Jahr_Anzahl_Werte_in_der_Vergangenheit; i++) {
                  createState(pfad + geraet + '.Verbrauch._Jahr.Jahr_' + i,           0, {name: 'Verbrauch vor ' + i + ' Jahr(en) ('    + geraet + ')', type: 'number', unit: _unit_kilo });
                  createState(pfad + geraet + '.Kosten._Jahr.Jahr_' + i,              0, {name: 'Stromkosten vor ' + i + ' Jahr(en) ('  + geraet + ')', type: 'number', unit:'€'  });
              }
          }
      
          // Neustart von CCU oder Gerät erkannt
          createState(pfad + geraet + '.config.NeustartErkanntAlterWert', 0);
      
          // Gerät hat eigenen Strompreis
          if(enable_unterschiedlichePreise) {
              createState(pfad + geraet + '.eigenerPreis.aktuell.Arbeitspreis'            , { name: 'Strompreis - aktueller Arbeitspreis ab Datum (brutto)' ,     unit: '€/' + _unit_kilo,      type: 'number', def: 0 });
              createState(pfad + geraet + '.eigenerPreis.aktuell.Grundpreis'              , { name: 'Strompreis - aktueller Grundpreis ab Datum (brutto)'   ,     unit: '€/Monat',    type: 'number', def: 0 });
              createState(pfad + geraet + '.eigenerPreis.neu.Arbeitspreis'                , { name: 'Strompreis - neuer Arbeitspreis ab Datum (brutto)' ,         unit: '€/' + _unit_kilo,      type: 'number', def: 0 });
              createState(pfad + geraet + '.eigenerPreis.neu.Grundpreis'                  , { name: 'Strompreis - neuer Grundpreis ab Datum (brutto)'   ,         unit: '€/Monat',    type: 'number', def: 0 });
              createState(pfad + geraet + '.eigenerPreis.neu.Datum'                       , { name: 'Strompreis und Grundpreis ab folgendem Datum zur Berechnung heranziehen (Beispiel 01.01.2019)', def: "01.01.1970", type: 'string' });
      
              createState(pfad + geraet + '.eigenerPreis.neu.PreisaenderungDurchgefuehrt' ,     false, { read: true, write: true, type: "boolean", def: false });
          }
      
          // history bei allen Datenpunkten aktivieren
          if(enable_history) {
              enableHistory(geraet, 'Tag');
              enableHistory(geraet, 'Woche');
              enableHistory(geraet, 'Monat');
              enableHistory(geraet, 'Quartal');
              enableHistory(geraet, 'Jahr');
          }
      
          if (logging) log('States in der Instanz ' + instanz + pfad + ' erstellt');   
      }
      
      function enableHistory(geraet, zeitraum) {
      
          if(instance_history !== '') {
      
              sendTo(instance_history, 'enableHistory', {
                  id: instanz + pfad + geraet + '.Kosten.' + zeitraum,
                  options: {
                      changesOnly:  true,
                      debounce:     0,
                      retention:    31536000,
                      maxLength:    3,
                      changesMinDelta: 0.5
                  }
              }, function (result) {
                  if (result.error) {
                      if (logging) log("Fehler beim Aktivieren von History: " + result.error);
                  }
              });
      
              sendTo(instance_history, 'enableHistory', {
                  id: instanz + pfad + geraet + '.Verbrauch.' + zeitraum,
                  options: {
                      changesOnly:  true,
                      debounce:     0,
                      retention:    31536000,
                      maxLength:    3,
                      changesMinDelta: 0.5
                  }
              }, function (result) {
                  if (result.error) {
                      if (logging) log("Fehler beim Aktivieren von History: " + result.error);
                  }
              });
      
              sendTo(instance_history, 'enableHistory', {
                  id: instanz + pfad + geraet + '.Zaehlerstand.' + zeitraum,
                  options: {
                      changesOnly:  true,
                      debounce:     0,
                      retention:    31536000,
                      maxLength:    3,
                      changesMinDelta: 0.5
                  }
              }, function (result) {
                  if (result.error) {
                      if (logging) log("Fehler beim Aktivieren von History: " + result.error);
                  }
              });
          }
      }
      
      function pruefePreisaenderung(geraet) {
      
          var _Datum = "";
          var _PreisaenderungDurchgefuehrt = "";
          var _Arbeitspreis = "";
          var _Grundpreis = "";
          var _ArbeitspreisNeu = "";
          var _GrundpreisNeu = "";
      
          if(typeof geraet === "undefined") {
      
               // Default Arbeitspreis ändern
      
              _Datum                          = instanz + pfad + 'Preis.neu.Datum';
              _PreisaenderungDurchgefuehrt    = instanz + pfad + 'Preis.neu.PreisaenderungDurchgefuehrt';
      
              _Arbeitspreis       = instanz + pfad + 'Preis.aktuell.Arbeitspreis';
              _Grundpreis         = instanz + pfad + 'Preis.aktuell.Grundpreis';
              _ArbeitspreisNeu    = instanz + pfad + 'Preis.neu.Arbeitspreis';
              _GrundpreisNeu      = instanz + pfad + 'Preis.neu.Grundpreis';
      
          } else {
      
              // Arbeitspreis für Gerät ändern
      
              _Datum                          = instanz + pfad + geraet + '.eigenerPreis.neu.Datum';
              _PreisaenderungDurchgefuehrt    = instanz + pfad + geraet + '.eigenerPreis.neu.PreisaenderungDurchgefuehrt';
      
              _Arbeitspreis       = instanz + pfad + geraet + '.eigenerPreis.aktuell.Arbeitspreis';
              _Grundpreis         = instanz + pfad + geraet + '.eigenerPreis.aktuell.Grundpreis';
              _ArbeitspreisNeu    = instanz + pfad + geraet + '.eigenerPreis.neu.Arbeitspreis';
              _GrundpreisNeu      = instanz + pfad + geraet + '.eigenerPreis.neu.Grundpreis';
          }
      
          if(getObject(_Datum)) {
      
              var date = getState(_Datum).val;
      
              var Datum_Tag;
              var Datum_Monat;
              var Datum_Jahr;
      
              try {
                  var Datum = date.match(/\d{2}(\.|-)\d{2}(\.|-)\d{4}/g).toString();
      
                  Datum_Tag = Datum.split(".")[0];
                  Datum_Monat = Datum.split(".")[1];
                  Datum_Jahr = Datum.split(".")[2];
      
              } catch (err) {
                  console.log("Fehler beim Auslesen des Datums. Eventuell falsche Syntax? " + date + " (Error:" + err + ")");
              }
      
              newdate = new Date(Datum_Monat + " " + Datum_Tag + " " + Datum_Jahr);
      
              var today = new Date();
              today.setHours(0,0,0,0);
      
              if(today.getTime() === newdate.getTime()) {
      
                  if(!getState(_PreisaenderungDurchgefuehrt).val) {
      
                      setState(_PreisaenderungDurchgefuehrt, true);
      
                      var alterArbeitspreis = getState(_Arbeitspreis).val;
                      var alterGrundpreis = getState(_Grundpreis).val;
      
                      var neuerArbeitspreis = getState(_ArbeitspreisNeu).val;
                      var neuerGrundpreis = getState(_GrundpreisNeu).val;
      
                      setState(_Arbeitspreis, neuerArbeitspreis);
                      setState(_Grundpreis, neuerGrundpreis);
      
                      var message =  'Preisänderung für ' + geraet + ' wurde durchgeführt:' + '\n'
                                  + 'alter Arbeitspreis:' + alterArbeitspreis + '.\n'
                                  + 'alter Grundpeis:' + alterGrundpreis + '.\n'
                                  + 'neuer Arbeitspreis:' + neuerArbeitspreis + '.\n'
                                  + 'neuer Grundpreis:' + neuerGrundpreis;
      
                      send_message(message);
                  }
      
              } else if(today.getTime() > newdate.getTime()) {
      
                  // Variable zurücksetzen
                  setState(_PreisaenderungDurchgefuehrt, false);
              }
          }
      }
      
      //----------------------------------------------------------------------------//`
      
      In der LOG Datei wird bei eingestelltem Wert   KumulierterWertIstBereitsInKilo  : true das Sonoff Gerät überhaupt nicht aufgeführt(so wie ich das sehe)
      
      Hab den Datenpunkt auf 21:15 gestellt:
      
      >! ~~[spoiler]~~2018-07-31 21:15:00.870  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe1:Strommessung allgemein Messwert Kanal
      >! 2018-07-31 21:15:00.871  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe2:Strommessung allgemein Messwert Kanal
      >! 2018-07-31 21:15:00.871  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe3:Strommessung allgemein Messwert Kanal
      >! 2018-07-31 21:15:00.871  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe4:StrommessungallgemeinMesswertKanal
      >! 2018-07-31 21:15:00.873  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.StrommessungallgemeinMesswertKanal.Verbrauch._Tag.Tag_8" does not exist
      >! 2018-07-31 21:15:00.876  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.StrommessungallgemeinMesswertKanal.Kosten._Tag.Tag_8" does not exist
      >! 2018-07-31 21:15:00.881  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Stromkosten und Stromverbrauch für das Gerät StrommessungallgemeinMesswertKanal (Tag) zurückgesetzt
      >! 2018-07-31 21:15:00.883  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Zählerstände für das Gerät StrommessungallgemeinMesswertKanal (Tag) in Objekten gespeichert
      >! 2018-07-31 21:15:00.883  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe1:Schaltsteckdose Lukas Messwertkanal
      >! 2018-07-31 21:15:00.884  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe2:Schaltsteckdose Lukas 
      >! 2018-07-31 21:15:00.884  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe3:Schaltsteckdose Lukas 
      >! 2018-07-31 21:15:00.884  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe4:SchaltsteckdoseLukas
      >! 2018-07-31 21:15:00.884  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_8" does not exist
      >! 2018-07-31 21:15:00.884  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_7" does not exist
      >! 2018-07-31 21:15:00.885  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_6" does not exist
      >! 2018-07-31 21:15:00.885  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_5" does not exist
      >! 2018-07-31 21:15:00.885  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_4" does not exist
      >! 2018-07-31 21:15:00.885  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_3" does not exist
      >! 2018-07-31 21:15:00.885  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_2" does not exist
      >! 2018-07-31 21:15:00.885  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_1" does not exist
      >! 2018-07-31 21:15:00.886  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_8" does not exist
      >! 2018-07-31 21:15:00.886  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_7" does not exist
      >! 2018-07-31 21:15:00.886  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_6" does not exist
      >! 2018-07-31 21:15:00.886  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_5" does not exist
      >! 2018-07-31 21:15:00.886  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_4" does not exist
      >! 2018-07-31 21:15:00.887  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_3" does not exist
      >! 2018-07-31 21:15:00.887  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_2" does not exist
      >! 2018-07-31 21:15:00.887  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_1" does not exist
      >! 2018-07-31 21:15:00.887  - [33mwarn[39m: javascript.2 State "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten.Tag" not found
      >! 2018-07-31 21:15:00.890  - [33mwarn[39m: javascript.2     at resetVerbrauchUndKosten (script.js.sonstige.Strom_Sonoff_Pow_Test:548:5)
      >! 2018-07-31 21:15:00.891  - [33mwarn[39m: javascript.2     at script.js.sonstige.Strom_Sonoff_Pow_Test:158:9
      >! 2018-07-31 21:15:00.891  - [33mwarn[39m: javascript.2 State "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch.Tag" not found
      >! 2018-07-31 21:15:00.892  - [33mwarn[39m: javascript.2     at resetVerbrauchUndKosten (script.js.sonstige.Strom_Sonoff_Pow_Test:549:5)
      >! 2018-07-31 21:15:00.893  - [33mwarn[39m: javascript.2     at script.js.sonstige.Strom_Sonoff_Pow_Test:158:9
      >! 2018-07-31 21:15:00.893  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Stromkosten und Stromverbrauch für das Gerät SchaltsteckdoseLukas (Tag) zurückgesetzt
      >! 2018-07-31 21:15:00.893  - [33mwarn[39m: javascript.2 getState "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Zaehlerstand.kumuliert" not found (3)
      >! 2018-07-31 21:15:00.895  - [33mwarn[39m: javascript.2     at schreibeZaehlerstand (script.js.sonstige.Strom_Sonoff_Pow_Test:496:47)
      >! 2018-07-31 21:15:00.895  - [33mwarn[39m: javascript.2     at script.js.sonstige.Strom_Sonoff_Pow_Test:160:9
      >! 2018-07-31 21:15:00.896  - [31merror[39m: javascript.2 Error in callback: TypeError: Cannot read property 'toFixed' of null
      >! 2018-07-31 21:15:00.897  - [31merror[39m: javascript.2     at schreibeZaehlerstand (script.js.sonstige.Strom_Sonoff_Pow_Test:496:74)
      >! 2018-07-31 21:15:00.897  - [31merror[39m: javascript.2     at script.js.sonstige.Strom_Sonoff_Pow_Test:160:9[/spoiler]
      
      Bei eingestelltem Wert   KumulierterWertIstBereitsInKilo  : false wird das Sonoff Gerät aufgeführt:
      
      Hab den Datenpunkt auf 21:17 gestellt
      
      >! ~~[spoiler]~~2018-07-31 21:17:00.754  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe1:Strommessung allgemein Messwert Kanal
      >! 2018-07-31 21:17:00.754  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe2:Strommessung allgemein Messwert Kanal
      >! 2018-07-31 21:17:00.754  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe3:Strommessung allgemein Messwert Kanal
      >! 2018-07-31 21:17:00.755  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe4:StrommessungallgemeinMesswertKanal
      >! 2018-07-31 21:17:00.756  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.StrommessungallgemeinMesswertKanal.Verbrauch._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.760  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.StrommessungallgemeinMesswertKanal.Kosten._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.765  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Stromkosten und Stromverbrauch für das Gerät StrommessungallgemeinMesswertKanal (Tag) zurückgesetzt
      >! 2018-07-31 21:17:00.766  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Zählerstände für das Gerät StrommessungallgemeinMesswertKanal (Tag) in Objekten gespeichert
      >! 2018-07-31 21:17:00.767  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe1:Schaltsteckdose Lukas Messwertkanal
      >! 2018-07-31 21:17:00.767  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe2:Schaltsteckdose Lukas 
      >! 2018-07-31 21:17:00.768  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe3:Schaltsteckdose Lukas 
      >! 2018-07-31 21:17:00.768  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe4:SchaltsteckdoseLukas
      >! 2018-07-31 21:17:00.768  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.768  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_7" does not exist
      >! 2018-07-31 21:17:00.768  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_6" does not exist
      >! 2018-07-31 21:17:00.769  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_5" does not exist
      >! 2018-07-31 21:17:00.769  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_4" does not exist
      >! 2018-07-31 21:17:00.769  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_3" does not exist
      >! 2018-07-31 21:17:00.769  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_2" does not exist
      >! 2018-07-31 21:17:00.769  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_1" does not exist
      >! 2018-07-31 21:17:00.769  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.770  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_7" does not exist
      >! 2018-07-31 21:17:00.770  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_6" does not exist
      >! 2018-07-31 21:17:00.770  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_5" does not exist
      >! 2018-07-31 21:17:00.770  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_4" does not exist
      >! 2018-07-31 21:17:00.770  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_3" does not exist
      >! 2018-07-31 21:17:00.771  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_2" does not exist
      >! 2018-07-31 21:17:00.771  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_1" does not exist
      >! 2018-07-31 21:17:00.771  - [33mwarn[39m: javascript.2 State "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten.Tag" not found
      >! 2018-07-31 21:17:00.774  - [33mwarn[39m: javascript.2     at resetVerbrauchUndKosten (script.js.sonstige.Strom_Sonoff_Pow_Test:548:5)
      >! 2018-07-31 21:17:00.774  - [33mwarn[39m: javascript.2     at script.js.sonstige.Strom_Sonoff_Pow_Test:158:9
      >! 2018-07-31 21:17:00.775  - [33mwarn[39m: javascript.2 State "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch.Tag" not found
      >! 2018-07-31 21:17:00.776  - [33mwarn[39m: javascript.2     at resetVerbrauchUndKosten (script.js.sonstige.Strom_Sonoff_Pow_Test:549:5)
      >! 2018-07-31 21:17:00.777  - [33mwarn[39m: javascript.2     at script.js.sonstige.Strom_Sonoff_Pow_Test:158:9
      >! 2018-07-31 21:17:00.777  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Stromkosten und Stromverbrauch für das Gerät SchaltsteckdoseLukas (Tag) zurückgesetzt
      >! 2018-07-31 21:17:00.777  - [33mwarn[39m: javascript.2 getState "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Zaehlerstand.kumuliert" not found (3)
      >! 2018-07-31 21:17:00.779  - [33mwarn[39m: javascript.2     at schreibeZaehlerstand (script.js.sonstige.Strom_Sonoff_Pow_Test:498:47)
      >! 2018-07-31 21:17:00.779  - [33mwarn[39m: javascript.2     at script.js.sonstige.Strom_Sonoff_Pow_Test:160:9
      >! 2018-07-31 21:17:00.779  - [33mwarn[39m: javascript.2 State "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Zaehlerstand.Tag" not found
      >! 2018-07-31 21:17:00.781  - [33mwarn[39m: javascript.2     at schreibeZaehlerstand (script.js.sonstige.Strom_Sonoff_Pow_Test:498:9)
      >! 2018-07-31 21:17:00.781  - [33mwarn[39m: javascript.2     at script.js.sonstige.Strom_Sonoff_Pow_Test:160:9
      >! 2018-07-31 21:17:00.781  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Zählerstände für das Gerät SchaltsteckdoseLukas (Tag) in Objekten gespeichert
      >! 2018-07-31 21:17:00.782  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe1:Hausanschluss-Strom
      >! 2018-07-31 21:17:00.782  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe2:Hausanschluss-Strom
      >! 2018-07-31 21:17:00.782  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe3:Hausanschluss-Strom
      >! 2018-07-31 21:17:00.783  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe4:Hausanschluss-Strom
      >! 2018-07-31 21:17:00.783  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.Hausanschluss-Strom.Verbrauch._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.786  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.Hausanschluss-Strom.Kosten._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.790  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Stromkosten und Stromverbrauch für das Gerät Hausanschluss-Strom (Tag) zurückgesetzt
      >! 2018-07-31 21:17:00.791  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Zählerstände für das Gerät Hausanschluss-Strom (Tag) in Objekten gespeichert
      >! 2018-07-31 21:17:00.792  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe1:Strommessung allgemein Messwert Kanal
      >! 2018-07-31 21:17:00.792  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe2:Strommessung allgemein Messwert Kanal
      >! 2018-07-31 21:17:00.792  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe3:Strommessung allgemein Messwert Kanal
      >! 2018-07-31 21:17:00.792  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe4:StrommessungallgemeinMesswertKanal
      >! 2018-07-31 21:17:00.792  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.StrommessungallgemeinMesswertKanal.Verbrauch._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.804  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.StrommessungallgemeinMesswertKanal.Kosten._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.808  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Stromkosten und Stromverbrauch für das Gerät StrommessungallgemeinMesswertKanal (Tag) zurückgesetzt
      >! 2018-07-31 21:17:00.808  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Zählerstände für das Gerät StrommessungallgemeinMesswertKanal (Tag) in Objekten gespeichert
      >! 2018-07-31 21:17:00.809  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe1:Schaltsteckdose Lukas Messwertkanal
      >! 2018-07-31 21:17:00.809  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe2:Schaltsteckdose Lukas 
      >! 2018-07-31 21:17:00.810  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe3:Schaltsteckdose Lukas 
      >! 2018-07-31 21:17:00.810  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe4:SchaltsteckdoseLukas
      >! 2018-07-31 21:17:00.810  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.810  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_7" does not exist
      >! 2018-07-31 21:17:00.810  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_6" does not exist
      >! 2018-07-31 21:17:00.811  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_5" does not exist
      >! 2018-07-31 21:17:00.811  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_4" does not exist
      >! 2018-07-31 21:17:00.811  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_3" does not exist
      >! 2018-07-31 21:17:00.811  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_2" does not exist
      >! 2018-07-31 21:17:00.811  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch._Tag.Tag_1" does not exist
      >! 2018-07-31 21:17:00.811  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.812  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_7" does not exist
      >! 2018-07-31 21:17:00.812  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_6" does not exist
      >! 2018-07-31 21:17:00.812  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_5" does not exist
      >! 2018-07-31 21:17:00.812  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_4" does not exist
      >! 2018-07-31 21:17:00.812  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_3" does not exist
      >! 2018-07-31 21:17:00.813  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_2" does not exist
      >! 2018-07-31 21:17:00.813  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten._Tag.Tag_1" does not exist
      >! 2018-07-31 21:17:00.813  - [33mwarn[39m: javascript.2 State "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Kosten.Tag" not found
      >! 2018-07-31 21:17:00.815  - [33mwarn[39m: javascript.2     at resetVerbrauchUndKosten (script.js.sonstige.Strom_Sonoff_Pow_Test:548:5)
      >! 2018-07-31 21:17:00.815  - [33mwarn[39m: javascript.2     at script.js.sonstige.Strom_Sonoff_Pow_Test:158:9
      >! 2018-07-31 21:17:00.816  - [33mwarn[39m: javascript.2 State "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Verbrauch.Tag" not found
      >! 2018-07-31 21:17:00.817  - [33mwarn[39m: javascript.2     at resetVerbrauchUndKosten (script.js.sonstige.Strom_Sonoff_Pow_Test:549:5)
      >! 2018-07-31 21:17:00.817  - [33mwarn[39m: javascript.2     at script.js.sonstige.Strom_Sonoff_Pow_Test:158:9
      >! 2018-07-31 21:17:00.818  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Stromkosten und Stromverbrauch für das Gerät SchaltsteckdoseLukas (Tag) zurückgesetzt
      >! 2018-07-31 21:17:00.818  - [33mwarn[39m: javascript.2 getState "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Zaehlerstand.kumuliert" not found (3)
      >! 2018-07-31 21:17:00.822  - [33mwarn[39m: javascript.2     at schreibeZaehlerstand (script.js.sonstige.Strom_Sonoff_Pow_Test:498:47)
      >! 2018-07-31 21:17:00.822  - [33mwarn[39m: javascript.2     at script.js.sonstige.Strom_Sonoff_Pow_Test:160:9
      >! 2018-07-31 21:17:00.823  - [33mwarn[39m: javascript.2 State "javascript.2.Verbrauchszaehler.SchaltsteckdoseLukas.Zaehlerstand.Tag" not found
      >! 2018-07-31 21:17:00.824  - [33mwarn[39m: javascript.2     at schreibeZaehlerstand (script.js.sonstige.Strom_Sonoff_Pow_Test:498:9)
      >! 2018-07-31 21:17:00.825  - [33mwarn[39m: javascript.2     at script.js.sonstige.Strom_Sonoff_Pow_Test:160:9
      >! 2018-07-31 21:17:00.825  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Zählerstände für das Gerät SchaltsteckdoseLukas (Tag) in Objekten gespeichert
      >! 2018-07-31 21:17:00.825  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe1:Hausanschluss-Strom
      >! 2018-07-31 21:17:00.826  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe2:Hausanschluss-Strom
      >! 2018-07-31 21:17:00.826  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe3:Hausanschluss-Strom
      >! 2018-07-31 21:17:00.826  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: entferneDatenpunkt - rueckgabe4:Hausanschluss-Strom
      >! 2018-07-31 21:17:00.826  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.Hausanschluss-Strom.Verbrauch._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.830  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.Hausanschluss-Strom.Kosten._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.834  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Stromkosten und Stromverbrauch für das Gerät Hausanschluss-Strom (Tag) zurückgesetzt
      >! 2018-07-31 21:17:00.834  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Zählerstände für das Gerät Hausanschluss-Strom (Tag) in Objekten gespeichert
      >! 2018-07-31 21:17:00.835  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowTrockner.Verbrauch._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.838  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowTrockner.Kosten._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.842  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Stromkosten und Stromverbrauch für das Gerät SonoffPowTrockner (Tag) zurückgesetzt
      >! 2018-07-31 21:17:00.842  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Zählerstände für das Gerät SonoffPowTrockner (Tag) in Objekten gespeichert
      >! 2018-07-31 21:17:00.843  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Verbrauch._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.843  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Verbrauch._Tag.Tag_7" does not exist
      >! 2018-07-31 21:17:00.843  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Verbrauch._Tag.Tag_6" does not exist
      >! 2018-07-31 21:17:00.843  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Verbrauch._Tag.Tag_5" does not exist
      >! 2018-07-31 21:17:00.843  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Verbrauch._Tag.Tag_4" does not exist
      >! 2018-07-31 21:17:00.844  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Verbrauch._Tag.Tag_3" does not exist
      >! 2018-07-31 21:17:00.844  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Verbrauch._Tag.Tag_2" does not exist
      >! 2018-07-31 21:17:00.844  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Verbrauch._Tag.Tag_1" does not exist
      >! 2018-07-31 21:17:00.844  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Kosten._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.844  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Kosten._Tag.Tag_7" does not exist
      >! 2018-07-31 21:17:00.845  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Kosten._Tag.Tag_6" does not exist
      >! 2018-07-31 21:17:00.845  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Kosten._Tag.Tag_5" does not exist
      >! 2018-07-31 21:17:00.845  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Kosten._Tag.Tag_4" does not exist
      >! 2018-07-31 21:17:00.845  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Kosten._Tag.Tag_3" does not exist
      >! 2018-07-31 21:17:00.845  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Kosten._Tag.Tag_2" does not exist
      >! 2018-07-31 21:17:00.845  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Kosten._Tag.Tag_1" does not exist
      >! 2018-07-31 21:17:00.846  - [33mwarn[39m: javascript.2 State "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Kosten.Tag" not found
      >! 2018-07-31 21:17:00.847  - [33mwarn[39m: javascript.2     at resetVerbrauchUndKosten (script.js.sonstige.Strom_Sonoff_Pow_Test:548:5)
      >! 2018-07-31 21:17:00.848  - [33mwarn[39m: javascript.2     at setRecognizedChange (script.js.sonstige.Strom_Sonoff_Pow_Test:170:13)
      >! 2018-07-31 21:17:00.848  - [33mwarn[39m: javascript.2     at Object. <anonymous>(script.js.sonstige.Strom_Sonoff_Pow_Test:181:5)
      >! 2018-07-31 21:17:00.848  - [33mwarn[39m: javascript.2 State "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Verbrauch.Tag" not found
      >! 2018-07-31 21:17:00.850  - [33mwarn[39m: javascript.2     at resetVerbrauchUndKosten (script.js.sonstige.Strom_Sonoff_Pow_Test:549:5)
      >! 2018-07-31 21:17:00.850  - [33mwarn[39m: javascript.2     at setRecognizedChange (script.js.sonstige.Strom_Sonoff_Pow_Test:170:13)
      >! 2018-07-31 21:17:00.850  - [33mwarn[39m: javascript.2     at Object. <anonymous>(script.js.sonstige.Strom_Sonoff_Pow_Test:181:5)
      >! 2018-07-31 21:17:00.850  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Stromkosten und Stromverbrauch für das Gerät SonoffPowWaschmaschine (Tag) zurückgesetzt
      >! 2018-07-31 21:17:00.851  - [33mwarn[39m: javascript.2 getState "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Zaehlerstand.kumuliert" not found (3)
      >! 2018-07-31 21:17:00.852  - [33mwarn[39m: javascript.2     at schreibeZaehlerstand (script.js.sonstige.Strom_Sonoff_Pow_Test:498:47)
      >! 2018-07-31 21:17:00.852  - [33mwarn[39m: javascript.2     at setRecognizedChange (script.js.sonstige.Strom_Sonoff_Pow_Test:172:13)
      >! 2018-07-31 21:17:00.853  - [33mwarn[39m: javascript.2     at Object. <anonymous>(script.js.sonstige.Strom_Sonoff_Pow_Test:181:5)
      >! 2018-07-31 21:17:00.853  - [33mwarn[39m: javascript.2 State "javascript.2.Verbrauchszaehler.SonoffPowWaschmaschine.Zaehlerstand.Tag" not found
      >! 2018-07-31 21:17:00.854  - [33mwarn[39m: javascript.2     at schreibeZaehlerstand (script.js.sonstige.Strom_Sonoff_Pow_Test:498:9)
      >! 2018-07-31 21:17:00.855  - [33mwarn[39m: javascript.2     at setRecognizedChange (script.js.sonstige.Strom_Sonoff_Pow_Test:172:13)
      >! 2018-07-31 21:17:00.855  - [33mwarn[39m: javascript.2     at Object. <anonymous>(script.js.sonstige.Strom_Sonoff_Pow_Test:181:5)
      >! 2018-07-31 21:17:00.855  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Zählerstände für das Gerät SonoffPowWaschmaschine (Tag) in Objekten gespeichert
      >! 2018-07-31 21:17:00.855  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Verbrauch._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.856  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Verbrauch._Tag.Tag_7" does not exist
      >! 2018-07-31 21:17:00.856  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Verbrauch._Tag.Tag_6" does not exist
      >! 2018-07-31 21:17:00.856  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Verbrauch._Tag.Tag_5" does not exist
      >! 2018-07-31 21:17:00.856  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Verbrauch._Tag.Tag_4" does not exist
      >! 2018-07-31 21:17:00.856  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Verbrauch._Tag.Tag_3" does not exist
      >! 2018-07-31 21:17:00.857  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Verbrauch._Tag.Tag_2" does not exist
      >! 2018-07-31 21:17:00.857  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Verbrauch._Tag.Tag_1" does not exist
      >! 2018-07-31 21:17:00.857  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Kosten._Tag.Tag_8" does not exist
      >! 2018-07-31 21:17:00.857  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Kosten._Tag.Tag_7" does not exist
      >! 2018-07-31 21:17:00.857  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Kosten._Tag.Tag_6" does not exist
      >! 2018-07-31 21:17:00.857  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Kosten._Tag.Tag_5" does not exist
      >! 2018-07-31 21:17:00.858  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Kosten._Tag.Tag_4" does not exist
      >! 2018-07-31 21:17:00.858  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Kosten._Tag.Tag_3" does not exist
      >! 2018-07-31 21:17:00.858  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Kosten._Tag.Tag_2" does not exist
      >! 2018-07-31 21:17:00.858  - [33mwarn[39m: javascript.2 Object "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Kosten._Tag.Tag_1" does not exist
      >! 2018-07-31 21:17:00.858  - [33mwarn[39m: javascript.2 State "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Kosten.Tag" not found
      >! 2018-07-31 21:17:00.860  - [33mwarn[39m: javascript.2     at resetVerbrauchUndKosten (script.js.sonstige.Strom_Sonoff_Pow_Test:548:5)
      >! 2018-07-31 21:17:00.860  - [33mwarn[39m: javascript.2     at setRecognizedChange (script.js.sonstige.Strom_Sonoff_Pow_Test:170:13)
      >! 2018-07-31 21:17:00.861  - [33mwarn[39m: javascript.2     at Object. <anonymous>(script.js.sonstige.Strom_Sonoff_Pow_Test:181:5)
      >! 2018-07-31 21:17:00.861  - [33mwarn[39m: javascript.2 State "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Verbrauch.Tag" not found
      >! 2018-07-31 21:17:00.862  - [33mwarn[39m: javascript.2     at resetVerbrauchUndKosten (script.js.sonstige.Strom_Sonoff_Pow_Test:549:5)
      >! 2018-07-31 21:17:00.862  - [33mwarn[39m: javascript.2     at setRecognizedChange (script.js.sonstige.Strom_Sonoff_Pow_Test:170:13)
      >! 2018-07-31 21:17:00.862  - [33mwarn[39m: javascript.2     at Object. <anonymous>(script.js.sonstige.Strom_Sonoff_Pow_Test:181:5)
      >! 2018-07-31 21:17:00.862  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Stromkosten und Stromverbrauch für das Gerät SonoffPowSpuelmaschine (Tag) zurückgesetzt
      >! 2018-07-31 21:17:00.862  - [33mwarn[39m: javascript.2 getState "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Zaehlerstand.kumuliert" not found (3)
      >! 2018-07-31 21:17:00.863  - [33mwarn[39m: javascript.2     at schreibeZaehlerstand (script.js.sonstige.Strom_Sonoff_Pow_Test:498:47)
      >! 2018-07-31 21:17:00.863  - [33mwarn[39m: javascript.2     at setRecognizedChange (script.js.sonstige.Strom_Sonoff_Pow_Test:172:13)
      >! 2018-07-31 21:17:00.863  - [33mwarn[39m: javascript.2     at Object. <anonymous>(script.js.sonstige.Strom_Sonoff_Pow_Test:181:5)
      >! 2018-07-31 21:17:00.864  - [33mwarn[39m: javascript.2 State "javascript.2.Verbrauchszaehler.SonoffPowSpuelmaschine.Zaehlerstand.Tag" not found
      >! 2018-07-31 21:17:00.864  - [33mwarn[39m: javascript.2     at schreibeZaehlerstand (script.js.sonstige.Strom_Sonoff_Pow_Test:498:9)
      >! 2018-07-31 21:17:00.864  - [33mwarn[39m: javascript.2     at setRecognizedChange (script.js.sonstige.Strom_Sonoff_Pow_Test:172:13)
      >! 2018-07-31 21:17:00.865  - [33mwarn[39m: javascript.2     at Object. <anonymous>(script.js.sonstige.Strom_Sonoff_Pow_Test:181:5)
      >! 2018-07-31 21:17:00.865  - [32minfo[39m: javascript.2 script.js.sonstige.Strom_Sonoff_Pow_Test: Zählerstände für das Gerät SonoffPowSpuelmaschine (Tag) in Objekten gespeichert[/spoiler]</anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous>
      
      Hängt das mit den Sonoff Geräten zusammen, oder mache ich einen Denkfehler?
      
      Hat vielleicht jemand das Skript mit Sonoff Pow Geräten im Einsatz und kann mir helfen? Vielen Dank!
      
      Gruß[/spoiler][/spoiler][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
      
      1 Reply Last reply Reply Quote 0
      • L
        Linedancer last edited by

        ich rechne in einem separaten Script die Werte von den Sonoff POW in Wh um.

        Damit kann ich dann "kumulierterWertIstBereitsInKilo = false" setzen.

        1 Reply Last reply Reply Quote 0
        • H
          Ham last edited by

          Danke für die schnelle Antwort! Hab’s aber heute erst gelesen.

          Darf ich fragen, ob du mir das separate Skript zur Verfügung stellen würdest? Ich hab’s nicht so mit Skripten. Das wäre super!

          1 Reply Last reply Reply Quote 0
          • L
            Linedancer last edited by

            Da ich es auch nicht so mit scripten hab, verwende ich in der Regel Blockly:

            1564_2018-08-02.png
            Den Datenpunkt in dem das Ergenbis in Wh steht musst du vorher von HAnd anlegen, das macht das Blockly nicht.

            1 Reply Last reply Reply Quote 0
            • H
              Ham last edited by

              Vielen Dank Linedancer!

              Es funktioniert!

              1 Reply Last reply Reply Quote 0
              • D
                Dice19 last edited by

                Hi,

                kann ich unter Neustarterkanntalterwert meinen aktuellen Zählerstand eintragen?

                Oder kann ich meine letzte Ablesung einpflegen?

                Ist unter Verbrauch Monat 1 ein Monat nach Start oder Januar gemeint?

                Tobias

                1 Reply Last reply Reply Quote 0
                • Röstkartoffel
                  Röstkartoffel last edited by

                  @dering:

                  … Ich habe in meinem javascript\global Ordner eine Hilfsfunktion dafür geschrieben die überall verfügbar ist.

                  Anstatt

                  > sendTelegram(text);

                  könntest du auch folgendes schreiben:

                  ` > sendTo("telegram.0", {

                  text: text,

                  chatId: <deine id="">});</deine>

                  Hallo dering.

                  Ich habe dein Script seit gestern am laufen und habe zu den Telegram-Meldungen eine Frage:

                  Was kann mir da als Nachricht geschickt werden?

                  Kannst du dein globales Javascript bitte mal zeigen?

                  Danke

                  Gruß

                  Volker

                  1 Reply Last reply Reply Quote 0
                  • D
                    dering last edited by

                    @Röstkartoffel:

                    @dering:

                    … Ich habe in meinem javascript\global Ordner eine Hilfsfunktion dafür geschrieben die überall verfügbar ist.

                    Anstatt

                    > sendTelegram(text);

                    könntest du auch folgendes schreiben:

                    ` > sendTo("telegram.0", {

                    text: text,

                    chatId: <deine id="">});</deine>

                    Hallo dering.

                    Ich habe dein Script seit gestern am laufen und habe zu den Telegram-Meldungen eine Frage:

                    Was kann mir da als Nachricht geschickt werden?

                    Kannst du dein globales Javascript bitte mal zeigen?

                    Danke

                    Gruß

                    Volker `

                    Hi Volker,

                    um Nachrichten via Telegram schicken zu lassen benötigst du eine Telegram Instanz und einem Token. Wie man das alles macht, ist hier sehr gut erklärt:

                    https://github.com/ioBroker/ioBroker.te … am-adapter

                    Wenn du dann eine "grüne Ampel" in der Instanz hast, kannst du dir über ein Script Nachrichten schicken lassen.

                    Ein einfacher Befehl wäre:

                    sendTo("telegram.0", {

                    text: "Deine Nachricht",

                    chatId: <dein chatid="">});

                    Wie du deine ChatID erhältst, wird auch in dem Link erklärt.</dein>

                    1 Reply Last reply Reply Quote 0
                    • D
                      dering last edited by

                      @Linedancer:

                      Hallo Gemeinde,

                      ich verwende das Script seit längerer Zeit völlig problemlos. Tolle Arbeit, danke dafür.

                      Jetzt benutze ich es zur Bilanzierung der Poolheizung. Erfassung der Sonneneinstrahlung, rechnerische Abschätzung der durch die Poolheizung eingebrachte Energie und natürlich die Lesitungsaufnahme der Pumpe.

                      Mein Problem:

                      Ich habe einige Namen von eigenen Datenpunkten unglücklich gewählt, und würde die jetzt gerne umbenennen. Geht das ohne Datenverlust? `

                      Meines Wissens ist es leider nicht so einfach möglich Ordner umzubenennen, daher wird es schwierig.

                      1 Reply Last reply Reply Quote 0
                      • D
                        dering last edited by

                        @Ham:

                        Hi,

                        erstmal vielen Dank für das Skript! Bin neu hier und hab ein Problem mit dem Skript. Vielleicht kann mir jemand helfen 😄

                        Hab das Skript laufen mit einem HM Zählersensor, zwei HM Schaltsteckdosen und im Moment noch mit drei Sonoff Pow.

                        Mein Problem ist, das sich die Tageswerte von den Sonoff Geräten nicht zurücksetzen und in den Verbrauch Gestern schreiben. Bei den HM Geräten funktioniert das super.

                        Meine Feststellung bisher ist, das wenn ich im Skript den Wert KumulierterWertIstBereitsInKilo in true (was ich brauch für die Sonoff Geräte) ändere, dass das zurücksetzen des Tageswertes nicht funktioniert. Wenn der Wert auf false steht funktioniert es, dann habe ich natürlich falsche Werte.

                        Habe im Moment mehrere Skripte in verschiedenen Javaskript instanzen laufen. Die HM Sensoren und die Sonoff Geräte extra.

                        Das benutzte Skript für die Sonoff Geräte ist dieses:

                        Gruß `

                        Vielen Dank für den Hinweis. ICh werde es mir ansehen und fixen.

                        1 Reply Last reply Reply Quote 0
                        • R
                          ralalla last edited by

                          Ein tolles Script, Danke dafür.

                          Scheint auch auf den ersten Blick zu funktionieren.

                          Aber der Tageswechsel hat scheinbar nicht funktioniert, es wird weiter in den kumulierten Zählerstand geschrieben. Die Zählerstande "Tagesbeginn, Wochenbeginn,…" sind leer.

                          Im "Verbrauch seit Tagesbeginn" steht noch der Wert von gestern, bzw. dieser wird jetzt weiter aufaddiert.

                          Was ich gemacht habe, gestern:

                          Script eingefügt, eigene Datenpunkte angelegt, Blacklist die Zahlen entfernt und kumulierter Wert bereits in kilo auf true gesetzt.

                          Es scheint wohl zu zählen aber kein Tageswechsel vollzogen zu werden.

                          Jemand eine Idee warum ?

                          Ah sehe das das ähnlich wie der Beitrag über mir ist, also wohl bei mehreren das Problem besteht ?

                          1 Reply Last reply Reply Quote 0
                          • Lenny.CB
                            Lenny.CB Most Active last edited by

                            Das Problem hatte ich auch lange Zeit. Nach etwas probieren trat das "Phänomen" (ich nenne es mal so) auf, wenn````
                            var KumulierterWertIstBereitsInKilo = true;

                            
                            Im Log kamen auch Fehler in dem Zweig "if(KumulierterWertIstBereitsInKilo)"
                            
                            Ich hatte dann folgendes probiert (warum, weil in der Zeile darunter wo / 1000 geteilt wird keine Fehler gab):
                            

                            if(KumulierterWertIstBereitsInKilo)
                            _zaehler = (getState(idKumuliert).val * 1).toFixed(AnzahlKommastellenZaehlerstand);

                            
                            den Zweig gibt es in:````
                            function schreibeZaehlerstand(geraet, zeitraum)
                            und
                            pruefePreisaenderung();
                            

                            Gleich vorn weg, ich habe nicht wirklich Ahnung von Javascript. Ich mache eigene Sachen nur durch adaptieren von Beispielen und trail & error.

                            Seit her funktioniert jedenfalls der Tageswechsel bei mir.

                            Jetzt das Wichtigste:

                            Kann mir jemand von den "Wissenden" sagen ob das Hand und Fuß hat?

                            1 Reply Last reply Reply Quote 0
                            • Röstkartoffel
                              Röstkartoffel last edited by

                              @dering:

                              @Röstkartoffel:

                              Hallo dering.

                              Ich habe dein Script seit gestern am laufen und habe zu den Telegram-Meldungen eine Frage:

                              Was kann mir da als Nachricht geschickt werden?

                              Kannst du dein globales Javascript bitte mal zeigen?

                              Danke

                              Gruß

                              Volker `

                              Hi Volker,

                              um Nachrichten via Telegram schicken zu lassen benötigst du eine Telegram Instanz und einem Token. Wie man das alles macht, ist hier sehr gut erklärt:

                              https://github.com/ioBroker/ioBroker.te … am-adapter

                              Wenn du dann eine "grüne Ampel" in der Instanz hast, kannst du dir über ein Script Nachrichten schicken lassen.

                              Ein einfacher Befehl wäre:

                              sendTo("telegram.0", {

                              text: "Deine Nachricht",

                              chatId: <dein chatid="">});

                              Wie du deine ChatID erhältst, wird auch in dem Link erklärt.</dein> `

                              Hallo dering.

                              Telegram habe ich schon lange eingerichtet und lasse mir diverse Meldungen aufs Handy schicken, bzw. kann auch über Telegram Lichter ein- und ausschalten.

                              Das ist nicht das Problem.

                              Sondern, dass ich in deinem Script Telegram aktiviert habe, aber noch nie eine Meldung vom Verbrauchsskript bekommen habe.

                              Ich habe es so:

                              sendTo("telegram.0", {
                              text: text,
                              chatId: <meine chatid="">
                              });</meine>
                              

                              Da ich in der Doku nichts darüber gefunden habe, daher meine Frage: bei welchem Event werden Meldungen verschickt?

                              Gruß

                              Volker

                              PS: <meine chatid="">ist natürlich meine eigene 9 stellige ChatId :-)</meine>

                              1 Reply Last reply Reply Quote 0
                              • R
                                ralalla last edited by

                                @Lenny.CB:

                                if(KumulierterWertIstBereitsInKilo)
                                            _zaehler    = (getState(idKumuliert).val * 1).toFixed(AnzahlKommastellenZaehlerstand);
                                ````Also den Wert ****idKumuliert.val * 1[/b**** ****Danke, deine Lösung hat auch bei mir geholfen.
                                
                                Kenne mich ebenso wenig damit aus aber so funktioniert es.
                                
                                @Röstkartoffel
                                
                                So wie ich das sehe muss ja auch festgelegt werden was versendet werden soll. Die Datenpunkte werden nicht einfach automatisch versendet.
                                
                                Ich mache das z: B. mit Blockly in einem extra Script da ich noch eigene Werte aus den Verbräuchen berechne (Eigenverbrauch).**
                                
                                 ![1110_telegrammverbrauch.jpg](/assets/uploads/files/1110_telegrammverbrauch.jpg) ** ` 
                                1 Reply Last reply Reply Quote 0
                                • E
                                  Eloee last edited by

                                  Hallo!

                                  Erstmal vielen Dank für das tolle Script und die Arbeit damit!

                                  Habe es seid ein paar Tagen laufen, aber entweder irgendwas ist falsch oder ich habe ein Verständnisproblem 😄

                                  Habe die Datenpunkte mit Leistungswerten (aktueller Verbrauch in Watt) gefüttert, wenn ich dann aber den Verbrauch nach einem Tag anschaue, liegt der bei einem Durchschnittlichen Strombedarf von 300Watt, bei z.B. 400kWh.

                                  Rechnerisch sind es ja aber nur 7,2kWh :roll:

                                  Was mache ich falsch?? Hier mal paar Log Zeilen:
                                  ` > javascript.0 2018-08-21 12:20:18.597 info script.js.common.Technik.Stromverbrauch: alter Wert: 264.59

                                  javascript.0 2018-08-21 12:20:18.597 info script.js.common.Technik.Stromverbrauch: neuer Wert: 263.84 `

                                  und in den Objekten dann:
                                  ` > Verbrauch vor 1 Tag(en) (Energieverbrauch Eigen) 525.8 kWh

                                  Verbrauch vor 2 Tag(en) (Energieverbrauch Eigen) 441.15 kWh

                                  Verbrauch vor 3 Tag(en) (Energieverbrauch Eigen) 418.165 kWh `

                                  Schöne Grüße

                                  Eloee

                                  1 Reply Last reply Reply Quote 0
                                  • B
                                    blacktiger last edited by

                                    Vielen Dank für dieses tolle Script!

                                    Ich habe meine Strommessgeräte unter eigene Datenpunkte eingerichtet - funktioniert super! Was ich allerdings noch gerne hätte wäre eine Gesamtsumme über all meine Geräte - mit den Summenwerten aktuell, täglich , wöchentlich…. Also so wie es auch pro konfiguriertem Datenpunkt eingerichtet wird. Hat dies von euch schon jemand soweit angepasst? Falls nicht - wie könnte ich so etwas am einfachsten realisieren? :roll:

                                    1 Reply Last reply Reply Quote 0
                                    • E
                                      ein-bayer last edited by

                                      ich mach das mit einem blockly script

                                      1 Reply Last reply Reply Quote 0
                                      • E
                                        EVOlutionIX last edited by

                                        Hallo alle zusammen.

                                        Ich würde gerne das Skript auch nutzen, aber irgendwie stehe ich auf dem Schlauch. :oops: Wie bekomme ich das Skript denn runter von der GitHub Seite :?:

                                        und jetzt Steinigt mich!

                                        Danke Marcus :roll:

                                        1 Reply Last reply Reply Quote 0
                                        • cvidal
                                          cvidal Forum Testing last edited by

                                          @EVOlutionIX:

                                          Hallo alle zusammen.

                                          Ich würde gerne das Skript auch nutzen, aber irgendwie stehe ich auf dem Schlauch. :oops: Wie bekomme ich das Skript denn runter von der GitHub Seite :?:

                                          und jetzt Steinigt mich!

                                          Danke Marcus :roll: `

                                          Hallo Marcus,

                                          du kannst dir das Skript einfach https://github.com/hdering/homematic_verbrauchszaehler/blob/master/Zaehlerstande_protokollieren.js rauskopieren.

                                          Gruß Christian

                                          1 Reply Last reply Reply Quote 0
                                          • E
                                            EVOlutionIX last edited by

                                            @cvidal:

                                            @EVOlutionIX:

                                            Hallo alle zusammen.

                                            Ich würde gerne das Skript auch nutzen, aber irgendwie stehe ich auf dem Schlauch. :oops: Wie bekomme ich das Skript denn runter von der GitHub Seite :?:

                                            und jetzt Steinigt mich!

                                            Danke Marcus :roll: `

                                            Hallo Marcus,

                                            du kannst dir das Skript einfach https://github.com/hdering/homematic_verbrauchszaehler/blob/master/Zaehlerstande_protokollieren.js rauskopieren.

                                            Gruß Christian `

                                            Super Danke 🙂

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            453
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            81
                                            455
                                            106395
                                            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