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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Vorlage] Betriebsstundenzähler & Verbrauchsrechner

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    299

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

[Vorlage] Betriebsstundenzähler & Verbrauchsrechner

Scheduled Pinned Locked Moved Skripten / Logik
javascript
333 Posts 51 Posters 96.5k Views 26 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    looxer01
    wrote on last edited by
    #181

    @noxx:

    danke, nun gehts mit 3 Nachkommastellen. `
    super, ich werde dann demnächst eine neue Version zur Verfügung stellen, allerdings macht es eh Sinn mit Nachkommastellen zu arbeiten.

    Rundungsprobleme gibt es nicht, weil ja die ungerundeten Werte im Systembereich gespeichert werden und die Berechnungen mit diesen Zahlen gemacht werden.

    vG Looxer

    1 Reply Last reply
    0
    • K Offline
      K Offline
      knopers1
      wrote on last edited by
      #182

      Hi,

      ich lese mein Gaszähler mit einem Wemo aus. Siehe Script unten:

      var request = require('request');
      var parseString = require('xml2js').parseString;
      
      var url="http://192.168.1.105"; // hier die Adresse der Webseite eintragen
      
      var GasMeterId = "GasMeter.Wert"; // Der Wert steht in "javascript.0."
      
      function processData(body){
         parseString(body, function (err, result) {
            // log(JSON.stringify(result.MyHome.ESP8266_GasMeter[0].data[4].$.value));
            if (!err)
                setState(GasMeterId,result.MyHome.ESP8266_GasMeter[0].data[4].$.value);
         });   
      }
      
      createState(GasMeterId,
                0, 
                false,
                {
                  type:"number",
                  unit:"m^3"
                });
      
      schedule ("*/3 * * * *", function(){ // alle 3 Minuten aufrufen
          request({  
              uri: url,
              method: "GET",
              timeout: 10000,
              followRedirect: true,
              maxRedirects: 10
          }, function(error, response, body) {
              if (!error) {
                  if (response.statusCode == 200) {
                      processData(body);    
                  }
              } else log("Fehler: "+error);
          });    
      });
      

      Es funktioniert alles wie es soll, leider bekomme ich alle drei minuten eine Warnung im Log.

      Kann jemand sehen was dort nicht o.k ist? Kann man die Warnung irgenwie abstellen?

      javascript.0	2017-10-05 09:42:01.497	info	script.js.common.GaszaehlerWemo: setForeignState(id=javascript.0.GasMeter.Wert, state="383.50")
      javascript.0	2017-10-05 09:42:01.496	warn	at process._tickCallback (internal/process/next_tick.js:104:9)
      javascript.0	2017-10-05 09:42:01.496	warn	at _combinedTickCallback (internal/process/next_tick.js:80:11)
      javascript.0	2017-10-05 09:42:01.496	warn	at endReadableNT (_stream_readable.js:974:12)
      javascript.0	2017-10-05 09:42:01.495	warn	at IncomingMessage.emit (events.js:185:7)
      javascript.0	2017-10-05 09:42:01.495	warn	at emitNone (events.js:91:20)
      javascript.0	2017-10-05 09:42:01.495	warn	at IncomingMessage.g (events.js:292:16)
      javascript.0	2017-10-05 09:42:01.494	warn	at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1091:12)
      javascript.0	2017-10-05 09:42:01.494	warn	at Request.emit (events.js:188:7)
      javascript.0	2017-10-05 09:42:01.494	warn	at emitOne (events.js:96:13)
      javascript.0	2017-10-05 09:42:01.493	warn	at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1171:10)
      javascript.0	2017-10-05 09:42:01.493	warn	at Request.emit (events.js:191:7)
      javascript.0	2017-10-05 09:42:01.492	warn	at emitTwo (events.js:106:13)
      javascript.0	2017-10-05 09:42:01.492	warn	at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:188:22)
      javascript.0	2017-10-05 09:42:01.492	warn	at Request._callback (script.js.common.GaszaehlerWemo:34:17)
      javascript.0	2017-10-05 09:42:01.491	warn	at processData (script.js.common.GaszaehlerWemo:9:4)
      javascript.0	2017-10-05 09:42:01.491	warn	at exports.parseString (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xml2js/lib/parser.js:354:19)
      javascript.0	2017-10-05 09:42:01.491	warn	at Parser.parseString (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xml2js/lib/parser.js:5:59)
      javascript.0	2017-10-05 09:42:01.490	warn	at Parser.exports.Parser.Parser.parseString (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xml2js/lib/parser.js:322:31)
      javascript.0	2017-10-05 09:42:01.490	warn	at Object.write (/opt/iobroker/node_modules/iobroker.javascript/node_modules/sax/lib/sax.js:1436:13)
      javascript.0	2017-10-05 09:42:01.490	warn	at closeTag (/opt/iobroker/node_modules/iobroker.javascript/node_modules/sax/lib/sax.js:889:7)
      javascript.0	2017-10-05 09:42:01.489	warn	at emitNode (/opt/iobroker/node_modules/iobroker.javascript/node_modules/sax/lib/sax.js:629:5)
      javascript.0	2017-10-05 09:42:01.489	warn	at emit (/opt/iobroker/node_modules/iobroker.javascript/node_modules/sax/lib/sax.js:624:35)
      javascript.0	2017-10-05 09:42:01.488	warn	at Object.onclosetag (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xml2js/lib/parser.js:261:26)
      javascript.0	2017-10-05 09:42:01.488	warn	at Parser.emit (events.js:188:7)
      javascript.0	2017-10-05 09:42:01.487	warn	at emitOne (events.js:96:13)
      javascript.0	2017-10-05 09:42:01.487	warn	at Parser. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xml2js/lib/parser.js:303:18)
      javascript.0	2017-10-05 09:42:01.486	warn	at script.js.common.GaszaehlerWemo:12:11
      javascript.0	2017-10-05 09:42:01.481	warn	Wrong type of javascript.0.GasMeter.Wert: "string". Please fix, while deprecated and will not work in next versions.
      

      HP Microserver Gen8, RPI-4, IoBroker,

      1 Reply Last reply
      0
      • L Offline
        L Offline
        looxer01
        wrote on last edited by
        #183

        Hi,

        das hat nichts mit dem Betriebsstundenzähler zu tun.

        scheint irgendwas beim parsen zu passieren.

        Ich kann dir auf die Schnelle das Problem nicht lösen. Die Warnungen könnte man zwar prinzipiell über den log level unterdrücken. Allerdings ist dass das kurieren von Symptomen. (und andere Warnmeldungen willst du vielleicht sehen)

        zu dieser Warnmeldung:

        Wrong type of javascript.0.GasMeter.Wert: "string". Please fix, while deprecated and will not work in next versions.

        stelle das objekt javascript.0.GasMeter.Wert auf number um.

        vG Looxer

        1 Reply Last reply
        0
        • K Offline
          K Offline
          knopers1
          wrote on last edited by
          #184

          Danke Dir, kann Dir aber nicht ganz folgen….

          im Script ist ein "number" eingetragen.

          createState(GasMeterId,
                    0, 
                    false,
                    {
                      type:"number",
                      unit:"m^3"
                    });
          

          Unter type (siehe Bild), kann ich nur:

          Logikwert

          Zeichenkette

          Zahl

          Feld

          Objekt

          gemischt

          eintragen…. ;)
          1526_unbenannt3.png

          HP Microserver Gen8, RPI-4, IoBroker,

          1 Reply Last reply
          0
          • L Offline
            L Offline
            looxer01
            wrote on last edited by
            #185

            @knopers1:

            Unter type (siehe Bild), kann ich nur:

            Logikwert

            Zeichenkette

            Zahl

            Feld

            Objekt

            gemischt `

            genau. Zahl wäre vermutlich der richtige Wert…

            aaeh sorry, ist ja schon eingetragen. Dann ist es wohl so, dass versucht wird einen string zu verwenden.

            Stelle es mal testweise auf String. Ist aber nicht die Lösung. Das muss dann im Programm umgewandelt werden.

            vG Looxer

            1 Reply Last reply
            0
            • K Offline
              K Offline
              knopers1
              wrote on last edited by
              #186

              Danke, habe jetzt auf "gemischt" eingestellt und die Warnungen sind jetzt vollkommen verschwunden.

              Jetzt kommt nur alle drei min. das hier…

              javascript.0	2017-10-05 11:51:01.401	info	script.js.common.GaszaehlerWemo: setForeignState(id=javascript.0.GasMeter.Wert, state="383.50")
              

              ich glaube, dass es damit beseitigt ist. :mrgreen:

              HP Microserver Gen8, RPI-4, IoBroker,

              1 Reply Last reply
              0
              • L Offline
                L Offline
                looxer01
                wrote on last edited by
                #187

                @knopers1:

                Jetzt kommt nur alle drei min. das hier… `
                ich habe bei mir den loglevel auf WARN stehen. Damit werden Info ausgeblendet.

                ist aber Geschmackssache

                vG Looxer

                1 Reply Last reply
                0
                • K Offline
                  K Offline
                  knopers1
                  wrote on last edited by
                  #188

                  Danke loxer01,

                  ich habe Loglevel auf "Alle" stehen.

                  Die Warnungen sind nicht mehr da! Jetzt kommt wirklich nur noch das, was kommen soll.

                  Habe sogat noch zwei Warnmeldungen vom Tankerkönig weg bekommen.

                  Danke Dir für die Unterstützung!

                  HP Microserver Gen8, RPI-4, IoBroker,

                  1 Reply Last reply
                  0
                  • P Offline
                    P Offline
                    ple
                    wrote on last edited by
                    #189

                    Hallo looxer01,

                    du hattest mal dein Script bei mir angepasst, weil es damals Fehler beim runden gab. Naja, seitdem habe ich das Script nicht mehr angefasst jetzt jedoch 2 Wärmemengenzähler die mit integrieren wollte.

                    Ich habe die Geräte angelegt und einen Teiler von 1000 gesetzt. Nun erzeugt er zwar die Datenpunkte und zählt auch schön hoch, nur schieb er die Daten nicht in den Vortag sonder zählt einfach weiter.

                    Hast du eine Idee warum ???

                    ! */ var Gruppen = []; // 1.Homematic ID, 2.Thema(no spaces) 3.History 4.DAY 5.Week 6.Month 7.Year 8.Switch 9 - 18 Status to log 19.stop 20.Loesch Gruppen[ 0] = ['hm-rpc.0.MEQ0703517.1.ENERGY_COUNTER' ,'Strom' ,true ,true ,true ,true ,true ,true ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // kWh Hauptzähler Gruppen[ 1] = ['hm-rpc.0.MEQ0703517.1.ENERGY_COUNTER' ,'Stromkosten' ,true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Euro Hauptzähler Gruppen[ 2] = ["wm-bus.0.AAA-73154067.2.value"/*value*/, 'Heizung xxxx' ,true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Heizung xxxx Gruppen[ 3] = ["wm-bus.0.AAA-73154068.2.value"/*value*/, 'Heizung xxxxx' ,true ,true ,true ,true ,true ,false ,'delta' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Heizung xxxx Gruppen[ 4] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[ 5] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[ 6] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[ 7] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[ 8] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[ 9] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[10] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[11] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[12] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[13] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[14] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[15] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[16] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[17] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[18] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[19] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[20] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[21] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[22] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[23] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[24] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // Gruppen[25] = ['initial' ,'' ,false ,false ,false ,false ,false ,false ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; // ! /*------------------------------------------------------------------------------- ! Die folgende Tabelle dient zur Vergabe von Statusnamen zur besseren Lesbarkeit. Standard ist EIN Die ziffern im Array z.B. [0] korrespondieren mit der Gruppentabelle also Gruppen[0] gehört zu logname[0] Wird hier kein Feldname vergeben, dann wird Spalte 9-18 der Gruppentabelle als Feldname verwendet Beispiel: Zustand Lampe = EIN , Beispiel: Status 1 =Start, 2 = Heizung_Zuendung,3 = Softstart 4 = Heizung_Brennen, 5 = Heizung_Nachlauf etc ACHTUNG- keine spaces verwenden */ var logname = []; // Stat1 Stat2 Stat3 Stat4 Stat5 Stat6 Stat7 Stat8 Stat9 Stat10 logname[0] = ['Strom-kWh' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[1] = ['Strom-Euro' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[2] = ['Heizung-kWh-xxxx' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[3] = ['Heizung-kWh-xxxxx' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[4] = ['EinAus4' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[5] = ['EinAus5' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[6] = ['EinAus6' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[7] = ['EinAus7' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[8] = ['EinAus8' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[9] = ['EinAus9' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[10] = ['EinAus10' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[11] = ['EinAus11' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[12] = ['EinAus12' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[13] = ['EinAus13' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[14] = ['EinAus14' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[15] = ['EinAus15' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[16] = ['EinAus16' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[17] = ['EinAus17' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[18] = ['EinAus18' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[19] = ['EinAus19' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[20] = ['EinAus20' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[21] = ['EinAus21' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[22] = ['EinAus22' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[23] = ['EinAus23' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[24] = ['EinAus24' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; logname[25] = ['EinAus25' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'']; ! /* Tabelle "special" : hier werden Rechenregeln und Sonderfunktionen hinterlegt Pos1 Rundung auf Nachkommastellen Pos2 Addition1 mit dem angegebenen Wert erfolgt vor der Multiplikation mit dem Faktor aus Pos3 Pos3 = Faktor für die Multiplikationen - Ein Faktor kann nur sinnvoll eingegeben werden, wenn zu diesem Zeitpunkt alle Werte auf Null stehen. .......Der Faktor kann nicht null sein. In diesem Fall wird 1 angenommen. .......Also entweder bei der Neueinrichtung bzw ein Refresh ist aller Werte ist erforderlich Pos4 = Divisor um den Faktor lesbar zu machen z.B. Millisekunden Divisor für Sekunde = 1000 , Minute = 60000, Stunde = 3600000 .......Die Rechnung ist Faktor/Divisor / Wenn Divisor = blank oder 0, dann wird 1 angenommen Pos5 = Addition2 mit dem angegebenen Wert erfolgt nach der Multiplikation mit dem Faktor aus Pos3 .......Formel: y=((x+add1)*faktor/divisor)+add2 / y = Ergebnis - x = eigehender Wert aus dem überwachten Datenpunkt .......y wird in die Indivduallogik geschickt um weiter zu berechnen Pos6 ist vorgesehen, um Funktionen im Programm zu definieren die dann aufgerufen werden - Programmierung ist erforderlich Pos7 nur fuer Methode Delta und DeltaM - bei Tanksensoren/Energiesensoren kommt es haeufig zu Schwankungen plus und minus - Hier wird die Grenze bestimmt bei der ein Tankvorgang sicher angenommen werden kann z.B. 100 Liter differenz ......der Wert muss in der gemessenen Einheit angegeben werden. Z.B. Ultraschallsensoren senden in Liter. Dann ist die Zahl, die hier eingegeben werden muss ebenfalls Liter. Wenn nichts angegeben wird, dann wird 100 angenommen Pos8.. Sonderfall, wenn unter Gruppe(0) ein Datenpunkt eingetragen wurde der nicht nach update eine Bestaetigung (ack) erhaelt. In diesem Fall sollte 8 auf false stehen Pos9 =Wenn ein gleitender Durchschnitt berechnet werden soll, dann wird hier true eingetragen (noch nicht aktiviert) Pos10 = Zählschwelle für Durchschnittsberechnung. TIME in Millisekunden (bei einer Einschaltzeit unter der Angabe hier wird der Wert nicht in die Durchschnittsberechnung einbezogen) ........Umrechnugnen anhand von addition1 faktor, divisor und addition2 werden dabei nicht berücksichtigt Pos11 = Alternativ zum Auslösen bei Veränderung lassen sich hier Zeiten eingeben an denen die Erfassung des Zustandes der zu loggenden Datenpunkte erfolgt. .........format ist CRON. Beispiele: alle 10 Minuten = * /10 * * * * (leerzeichen vor "/"" bitte entfernen) täglich um 12 Uhr = 0 12 * * * - .........alle 2 Stunden = 0 * /2 * * * etc (leerzeichen vor "/"" bitte entfernen) .........mit der folgenden Web-Seite können die Zeiten generiert werden: http://crontab-generator.org/ .........Zur Ueberpruefung von Cron Expessions bietet sich diese Website an: http://crontab.guru/ .........Das ist nicht fuer die Methode TIME sinnvoll und ist daher ausgeschaltet, falls ein schedule fuer TiME eingegeben wurde Pos12 = Logging für diesen Datenpunkt wird eingeschaltet, wenn ein true eingetragen wird. Damit werden Minimum und Maximum Werte festgehalten Pos13 = Mehrfachstatus loggen ? dann true. In diesem Fall wird ein Status auch dann gesetzt, wenn bereits der gleiche Status vorher gesetzt wurde. das hat zur Folge, dass z.B. die Zeitmessung neu gestartet wird, obwohl der Status im Grunde nicht geändert wurde. Standard ist false Pos14 = Selective Logging - Wenn auf true, dann wird dieser Datenpunkt in einer dedizierten Datei geloggt ! */ ! var special = []; // 1.Round 2.add1 3.Faktor 4\. Divisor 5.add2 6.Individuallogik 7: DELTA(M)Grenze 8.Warten auf Bestaetigung 9.Durchschnitt - 10.Zaehlschwelle 11 Schedule 12\. Min/MAX 13\. MehrfachStatus 14\. Selektives Logging special[0] = ['3' ,'' ,'' ,'1000' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' , '' ]; // kWh special[1] = ['2' ,'' ,'0.2487' ,'1000' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; // kWh in Euro special[2] = ['' ,'' ,'' ,'1000' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; // kWh special[3] = ['' ,'' ,'' ,'1000' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; // kWh special[4] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[5] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' , '' ]; special[6] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[7] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[8] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[9] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[10] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[11] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[12] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[13] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[14] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[15] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[16] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[17] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[18] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[19] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' , '' ]; special[20] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[21] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[22] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[23] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[24] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; special[25] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ]; !

                    Intel Nuc + Proxmox

                    1 Reply Last reply
                    0
                    • L Offline
                      L Offline
                      looxer01
                      wrote on last edited by
                      #190

                      Hi Ple,

                      @ple:

                      Ich habe die Geräte angelegt und einen Teiler von 1000 gesetzt. Nun erzeugt er zwar die Datenpunkte und zählt auch schön hoch, nur schieb er die Daten nicht in den Vortag sonder zählt einfach weiter. `

                      Hat es vorher funktioniert ?

                      Bin gerade unterwegs und kann mir das im Detail am Freitag ansehen. Schick mir doch mal dein Script 1:1 als PN.

                      vG Looxer

                      1 Reply Last reply
                      0
                      • P Offline
                        P Offline
                        ple
                        wrote on last edited by
                        #191

                        Mit dem Stromzähler hat es soweit funktioniert.

                        Der läuft jetzt auch noch, nur leider die hinzugefügten Wärmezähler leider nicht.

                        Pn ist unterwegs.

                        Intel Nuc + Proxmox

                        1 Reply Last reply
                        0
                        • S Offline
                          S Offline
                          speedy78
                          wrote on last edited by
                          #192

                          Erstmal vielen dank für dieses Script.

                          Ich brauche da aber doch einmal Hilfe da ich mir die Zahlen nicht erklären kann.

                          Es kann nicht sein das die erste ID soviel Strom verbraucht hat.

                          Ich habe mal ein paar Bilder mit dabei ist vielleicht einfacher.

                          Es kommt mir so vor als würde er die Berechnung aus Spezial nicht nehmen. Oder ich verstehe es leider nicht :)

                          Die Summe aus allen steht ja dann in den Objekten des BSZ

                          Und für jedes Objekt unter Grp-Obekt !

                          Ist das so Richtig?
                          3717_bsz-objekte.png
                          3717_ids.png
                          3717_log.png
                          3717_spezial.png
                          3717_objekt-grp0.png

                          1 Reply Last reply
                          0
                          • L Offline
                            L Offline
                            looxer01
                            wrote on last edited by
                            #193

                            @speedy78:

                            Ich habe mal ein paar Bilder mit dabei ist vielleicht einfacher. `
                            danke das hilft immer.

                            Könntest du mir noch das script mit deinen Einstellungen als PN senden ?

                            (ist einfacher)

                            vG Looxer

                            1 Reply Last reply
                            0
                            • P Offline
                              P Offline
                              ple
                              wrote on last edited by
                              #194

                              Ich habe die Sonoff POW gerade selber ins Script mit eingebaut für Waschmaschine und Trockner.

                              Mach mal bei Spezial round 4 rein und bei Divisor nichts.

                              So passt es bei mir.

                              Intel Nuc + Proxmox

                              1 Reply Last reply
                              0
                              • S Offline
                                S Offline
                                speedy78
                                wrote on last edited by
                                #195

                                Das läuft dann ganz falsch.

                                Ich nutze ESPurna nicht Tasmota !

                                1 Reply Last reply
                                0
                                • P Offline
                                  P Offline
                                  ple
                                  wrote on last edited by
                                  #196

                                  Ach so, na dann gehts leider nicht.

                                  Intel Nuc + Proxmox

                                  1 Reply Last reply
                                  0
                                  • L Offline
                                    L Offline
                                    looxer01
                                    wrote on last edited by
                                    #197

                                    @speedy78:

                                    Es kommt mir so vor als würde er die Berechnung aus Spezial nicht nehmen. Oder ich verstehe es leider nicht `

                                    Hi Speedy,

                                    die Konfig sieht mir korrekt aus.

                                    Was passiert ist

                                    1. Lese den Wert des angegebenen Datenpunktes -der als wh interpretiert wird-

                                    2 Speichere den letzten Wert als Rohzahl

                                    3. Bei Methode Delta wird der vorherige Wert vom letzten Wert abgezogen

                                    4. die Tabelle special berechnet dann fuer den Bereich BSZ den umgerechneten Wert

                                    5. Im Bereich System werden die Rohwerte gespeichert (also ohne Umrechnung

                                    Demzufolge solltest du die werte in wh geliefert bekommen und die Deltas im User Bereich regelmaessig berechnet bekommen.

                                    Folgende Möglichkeiten hast du um dem Verhalten auf die Spur zu kommen:

                                    -. du kannst im System Bereich nachsehen, ob du da die Rohwerte findest und ob die konsistent sind.

                                    Nach Löschen und Daktivieren (letzte beiden Spalten auf true true) und dann wieder false false. kann wieder neu angefangen werden. Dann kannst du die Deltabildung nachvollziehen.

                                    • du kannst das logging aktivieren. Dann wird eine csv Datei fortgeschrieben mit mehr informationen. Die kannst du analysieren und auch mir zusenden.

                                    • vielleicht gibt es auch ein Problem beim Timing. Wie schnell werden die Aenderungen gesendet ? Du könntest z.B. ein CRON Einplaung (tablelle special machen und z.B. minütlich ein Delta berechnen

                                    • last not least könnte es ein Rundungsproblem sein. Schalte mal zum Testen die Rundung aus. Ich habe da glaube ich mal einen Fix fuer PLE genmacht. evt. brauchst du den auch.

                                    vG Looxer

                                    1 Reply Last reply
                                    0
                                    • S Offline
                                      S Offline
                                      speedy78
                                      wrote on last edited by
                                      #198

                                      Ok mein Kopf brummt gerade werde das am WE mal versuchen alles ganz zu verstehen und testen.

                                      Habe mir jetzt auch noch einen POW mit Tasmota gemacht und teste es auch damit.

                                      Was ich nicht verstehe ist was du mit false false true true meinst. An welcher stelle ?

                                      Mal schauen..

                                      Ich danke dir für deine hilfe.

                                      Die Rohdaten kann ich direkt in der ESPurna version auslesen. Ich schau mir die werte an. Ich glaube auch es liegt am Runden oder das Divisor

                                      1 Reply Last reply
                                      0
                                      • S Offline
                                        S Offline
                                        speedy78
                                        wrote on last edited by
                                        #199

                                        So warum nicht gleich so mit Tasmota sieht das ganze gleich viel schöner aus ;)

                                        DANKE !!!!

                                        1 Reply Last reply
                                        0
                                        • M Offline
                                          M Offline
                                          Mac
                                          wrote on last edited by
                                          #200

                                          Hallo, in IOBroker bin ich absoluter Neuling. Ich arbeite mich in dieses tolle System ein um bei meiner Smarthome Installation mit Loxone und KNX eine bessere Oberfläche insbesondere hinsichtlich der Auswertungen von Verbräuchen und Diagramme der Temperaturen zu realisieren.

                                          Sorry wenn ich in diesen Expertendisput hineingrätsche, aber ich versuche verzweifelt genau das hinzubekommen, was Ihr offenbar so großartig entwickelt habt

                                          Ich möchte z.B. aus den KNX Werten Gaszählerstand Tagesumsätze in einer Ballengrafik umsetzen diese evtl in Tageskosten in € umrechnen und darstellen. In den IO Servern kann ich dies zum Teil mit Merkern und Rechenfunktionen machen, aber mit dem mir völlig neuen Ansatz hier bin ich leider wirklich hilflos.

                                          Meine Frage: Wie komme ich an Euer Skript und wie binde ich das ein? Die Beschreibung habe ich mir heruntergeladen.

                                          Wie kann ich in diesem System Werte Zwischenspeichern, umrechnen und wieder speichern dann zurücksetzen??

                                          Ich hoffe ich habe die richtige Stelle und den richtigen Fragenumfang für dieses Forum getroffen. Über eine hilfreiche Antwort würde ich mich sehr freuen!

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          557

                                          Online

                                          32.7k

                                          Users

                                          82.5k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe