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

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    5
    1
    164

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    186

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    881

[Vorlage] Betriebsstundenzähler & Verbrauchsrechner

Scheduled Pinned Locked Moved Skripten / Logik
javascript
333 Posts 51 Posters 98.8k 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.
  • ? A Former User

    @Kampfratte ja, das ist bei mir auch.
    Hab zum Glück nur noch ein Datenpunkt drin, den ich mittlerweile anders auswerte...

    K Offline
    K Offline
    knopers1
    wrote on last edited by
    #306

    @ilovegym

    Kann ich bestätigen...... jemand eine Idee wie man es fixen kann?

    HP Microserver Gen8, RPI-4, IoBroker,

    K 1 Reply Last reply
    0
    • K knopers1

      @ilovegym

      Kann ich bestätigen...... jemand eine Idee wie man es fixen kann?

      K Offline
      K Offline
      knopers1
      wrote on last edited by
      #307

      @looxer01

      bekomme beim Update des JS-Adapters folgende Fehlermeldung!
      Unter dem Namen "Gasrechner" im JS Adapter, läuft dein Betriebsstundenzähler. Hast Du eine Idee was da schief läuft?

      2020-11-08 18:13:54.600 - error: javascript.0 (10717) script.js.common.Gasrechner: TypeError: Cannot set property '_ioBroker' of null
      
      2020-11-08 18:13:54.601 - error: javascript.0 (10717) at schedule (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1296:36)
      
      2020-11-08 18:13:54.602 - error: javascript.0 (10717) at script.js.common.Gasrechner:448:1
      
      2020-11-08 18:13:54.603 - error: javascript.0 (10717) at script.js.common.Gasrechner:2943:3
      
      2020-11-08 18:13:54.603 - error: javascript.0 (10717) at Script.runInContext (vm.js:130:18)
      

      HP Microserver Gen8, RPI-4, IoBroker,

      L 1 Reply Last reply
      0
      • K knopers1

        @looxer01

        bekomme beim Update des JS-Adapters folgende Fehlermeldung!
        Unter dem Namen "Gasrechner" im JS Adapter, läuft dein Betriebsstundenzähler. Hast Du eine Idee was da schief läuft?

        2020-11-08 18:13:54.600 - error: javascript.0 (10717) script.js.common.Gasrechner: TypeError: Cannot set property '_ioBroker' of null
        
        2020-11-08 18:13:54.601 - error: javascript.0 (10717) at schedule (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1296:36)
        
        2020-11-08 18:13:54.602 - error: javascript.0 (10717) at script.js.common.Gasrechner:448:1
        
        2020-11-08 18:13:54.603 - error: javascript.0 (10717) at script.js.common.Gasrechner:2943:3
        
        2020-11-08 18:13:54.603 - error: javascript.0 (10717) at Script.runInContext (vm.js:130:18)
        
        L Offline
        L Offline
        looxer01
        wrote on last edited by
        #308

        Hi,
        wenn ihr die schedule funktion nicht nutzt, dann habe ich einen quick fix in dem ihr die Zeile "schedule...." wie unten auskommentiert.

        vG Looxer

        // Part 1.4 Definition der Trigger und schedule aufgrund der Einstellungstabellen
        // ------------------------T R I G G E R -------------------------------------------------------
        // achtung fehler im schedule
        const ONSub = [];
        for (let x = 0; x < Gruppen.length; x++) {
        //  	const IDNR = OnIdTAB[x];
          	const GRPNummer = x ;
          	ONSub.push(on(OnIdTAB[x], (obj) => GeraetUpdate(GRPNummer)));
            if (special[x][10] !== '' ) {
                log( " special ") + (special[x][10] )
        //        schedule(special[x][10], function(obj) { log("BSZ-Schedule aufgerufen","info"); GeraetUpdate(GRPNummer);              }); // end of schedule	
            }
        }
        
        
        K 1 Reply Last reply
        0
        • L looxer01

          Hi,
          wenn ihr die schedule funktion nicht nutzt, dann habe ich einen quick fix in dem ihr die Zeile "schedule...." wie unten auskommentiert.

          vG Looxer

          // Part 1.4 Definition der Trigger und schedule aufgrund der Einstellungstabellen
          // ------------------------T R I G G E R -------------------------------------------------------
          // achtung fehler im schedule
          const ONSub = [];
          for (let x = 0; x < Gruppen.length; x++) {
          //  	const IDNR = OnIdTAB[x];
            	const GRPNummer = x ;
            	ONSub.push(on(OnIdTAB[x], (obj) => GeraetUpdate(GRPNummer)));
              if (special[x][10] !== '' ) {
                  log( " special ") + (special[x][10] )
          //        schedule(special[x][10], function(obj) { log("BSZ-Schedule aufgerufen","info"); GeraetUpdate(GRPNummer);              }); // end of schedule	
              }
          }
          
          
          K Offline
          K Offline
          knopers1
          wrote on last edited by knopers1
          #309

          @looxer01

          Hi Looxer01, danke Dir!
          Was macht genau die "schedule" Funktion?
          Ich habe gesehen, dass sich bei mir der Tages-Stromverbrauch um 0:00 Uhr nicht auf null stellt. Hängt damit die "schedule" Funktion zusammen?

          Part 1.4 sieht in meinem Script etwas anderes aus... Hab ich da noch eine alte Version?

          // Part 1.4 Definition der Trigger und schedule aufgrund der Einstellungstabellen
          // ------------------------T R I G G E R -------------------------------------------------------
          
          on({id:  OnIdTAB[0 ], valNe: 1000 }, function(obj)    { if(special[0][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 0 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 0 ); } } });    // ende on id
          on({id:  OnIdTAB[1 ], valNe: 1000 }, function(obj)    { if(special[1][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 1 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 1 ); } } });    // ende on id
          on({id:  OnIdTAB[2 ], valNe: 1000 }, function(obj)    { if(special[2][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 2 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 2 ); } } });    // ende on id
          on({id:  OnIdTAB[3 ], valNe: 1000 }, function(obj)    { if(special[3][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 3 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 3 ); } } });    // ende on id
          on({id:  OnIdTAB[4 ], valNe: 1000 }, function(obj)    { if(special[4][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 4 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 4 ); } } });    // ende on id
          on({id:  OnIdTAB[5 ], valNe: 1000 }, function(obj)    { if(special[5][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 5 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 5 ); } } });    // ende on id
          on({id:  OnIdTAB[6 ], valNe: 1000 }, function(obj)    { if(special[6][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 6 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 6 ); } } });    // ende on id
          on({id:  OnIdTAB[7 ], valNe: 1000 }, function(obj)    { if(special[7][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 7 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 7 ); } } });    // ende on id
          on({id:  OnIdTAB[8 ], valNe: 1000 }, function(obj)    { if(special[8][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 8 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 8 ); } } });    // ende on id
          on({id:  OnIdTAB[9 ], valNe: 1000 }, function(obj)    { if(special[9][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 9 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 9 ); } } });    // ende on id
          on({id:  OnIdTAB[10], valNe: 1000 }, function(obj)    { if(special[10][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(10);  }  }else {  if(obj.state.ack === false)  { GeraetUpdate(10); } } });    // ende on id
          on({id:  OnIdTAB[11], valNe: 1000 }, function(obj)    { if(special[11][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(11);  }  }else {  if(obj.state.ack === false)  { GeraetUpdate(11); } } });    // ende on id
          on({id:  OnIdTAB[12], valNe: 1000 }, function(obj)    { if(special[12][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(12);  }  }else {  if(obj.state.ack === false)  { GeraetUpdate(12); } } });    // ende on id
          on({id:  OnIdTAB[13], valNe: 1000 }, function(obj)    { if(special[13][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(13);  }  }else {  if(obj.state.ack === false)  { GeraetUpdate(13); } } });    // ende on id
          on({id:  OnIdTAB[14], valNe: 1000 }, function(obj)    { if(special[14][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(14);  }  }else {  if(obj.state.ack === false)  { GeraetUpdate(14); } } });    // ende on id
          on({id:  OnIdTAB[15], valNe: 1000 }, function(obj)    { if(special[15][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(15);  }  }else {  if(obj.state.ack === false)  { GeraetUpdate(15); } } });    // ende on id
          on({id:  OnIdTAB[16], valNe: 1000 }, function(obj)    { if(special[16][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(16);  }  }else {  if(obj.state.ack === false)  { GeraetUpdate(16); } } });    // ende on id
          on({id:  OnIdTAB[17], valNe: 1000 }, function(obj)    { if(special[17][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(17);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(17); } } });    // ende on id
          on({id:  OnIdTAB[18], valNe: 1000 }, function(obj)    { if(special[18][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(18);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(18); } } });    // ende on id
          on({id:  OnIdTAB[19], valNe: 1000 }, function(obj)    { if(special[19][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(19);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(19); } } });    // ende on id
          on({id:  OnIdTAB[20], valNe: 1000 }, function(obj)    { if(special[20][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(20);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(20); } } });    // ende on id
          on({id:  OnIdTAB[21], valNe: 1000 }, function(obj)    { if(special[21][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(21);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(21); } } });    // ende on id
          on({id:  OnIdTAB[22], valNe: 1000 }, function(obj)    { if(special[22][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(22);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(22); } } });    // ende on id
          on({id:  OnIdTAB[23], valNe: 1000 }, function(obj)    { if(special[23][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(23);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(23); } } });    // ende on id
          on({id:  OnIdTAB[24], valNe: 1000 }, function(obj)    { if(special[24][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(24);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(24); } } });    // ende on id
          on({id:  OnIdTAB[25], valNe: 1000 }, function(obj)    { if(special[25][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(25);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(25); } } });    // ende on id
          
          
          schedule(special[0][10], function() {   log("schedule 0 aufgerufen","info");GeraetUpdate(0);     }); // end of schedule                                
          schedule(special[1][10], function() {   log("schedule 1 aufgerufen","info"); GeraetUpdate(1);     }); // end of schedule        
          schedule(special[2][10], function() {   log("schedule 2 aufgerufen","info"); GeraetUpdate(2);     }); // end of schedule        
          schedule(special[3][10], function() {   log("schedule 3 aufgerufen","info"); GeraetUpdate(3);     }); // end of schedule        
          schedule(special[4][10], function() {   log("schedule 4 aufgerufen","info"); GeraetUpdate(4);     }); // end of schedule        
          schedule(special[5][10], function() {   log("schedule 5 aufgerufen","info");GeraetUpdate(5);     }); // end of schedule        
          schedule(special[6][10], function() {   log("schedule 6 aufgerufen","info");GeraetUpdate(6);     }); // end of schedule        
          schedule(special[7][10], function() {   log("schedule 7 aufgerufen","info");GeraetUpdate(7);     }); // end of schedule        
          schedule(special[8][10], function() {   log("schedule 8 aufgerufen","info");GeraetUpdate(8);     }); // end of schedule        
          schedule(special[9][10], function() {   log("schedule 9 aufgerufen","info");GeraetUpdate(9);     }); // end of schedule        
          schedule(special[10][10], function() {  log("schedule 10 aufgerufen","info"); GeraetUpdate(10);     }); // end of schedule        
          schedule(special[11][10], function() {  log("schedule 11 aufgerufen","info"); GeraetUpdate(11);     }); // end of schedule        
          schedule(special[12][10], function() {  log("schedule 12 aufgerufen","info"); GeraetUpdate(12);     }); // end of schedule        
          schedule(special[13][10], function() {  log("schedule 13 aufgerufen","info"); GeraetUpdate(13);     }); // end of schedule        
          schedule(special[14][10], function() {  log("schedule 14 aufgerufen","info"); GeraetUpdate(14);     }); // end of schedule        
          schedule(special[15][10], function() {  log("schedule 15 aufgerufen","info");GeraetUpdate(15);     }); // end of schedule        
          schedule(special[16][10], function() {  log("schedule 16 aufgerufen","info"); GeraetUpdate(16);     }); // end of schedule        
          schedule(special[17][10], function() {  log("schedule 17 aufgerufen","info"); GeraetUpdate(17);     }); // end of schedule        
          schedule(special[18][10], function() {  log("schedule 18 aufgerufen","info"); GeraetUpdate(18);     }); // end of schedule        
          schedule(special[19][10], function() {  log("schedule 19 aufgerufen","info");GeraetUpdate(19);     }); // end of schedule        
          schedule(special[20][10], function() {  log("schedule 20 aufgerufen","info");GeraetUpdate(20);     }); // end of schedule        
          schedule(special[21][10], function() {  log("schedule 21 aufgerufen","info");GeraetUpdate(21);     }); // end of schedule        
          schedule(special[22][10], function() {  log("schedule 22 aufgerufen","info");GeraetUpdate(22);     }); // end of schedule        
          schedule(special[23][10], function() {  log("schedule 23 aufgerufen","info"); GeraetUpdate(23);     }); // end of schedule   
          schedule(special[24][10], function() {  log("schedule 24 aufgerufen","info"); GeraetUpdate(24);     }); // end of schedule        
          schedule(special[25][10], function() {  log("schedule 25 aufgerufen","info");GeraetUpdate(25);     }); // end of schedule        
          
          
          
          // Part 3 Taegliches Zuruecksetzen der Datenpunkte aufgrund von Periodenwechsel DAY,WEEK,MONTH,YEAR
          // ------------------------Aenderung des Status des Geraetes------------------------------------
          //-------------------------Beim Einschalten wird die Zeit festgehalten -------------------------
          //-------------------------Beim Ausschalten wird die Zeitdifferenz berechnet und gespeichert----
          schedule(cronjob, function() {   PeriodChange();   });  
          
          
          
          // ------------------------ F U N K T I O N E N -------------------------------------------------------
          
          // Part 1.4.1 Vorbereiten zum Anlegen/Löschen von Datenpunkten
          //-----------------------------------------------------------------------------------------------------
          // Funktion zum Anlegen der Variablen im System
          //-----------------------------------------------------------------------------------------------------
          function CreateDelStates(){
              var zaehlerstatus = 0;
              var method = "TIME";
              for (var zaehler = 0,
                  zaehler_array = Gruppen.length;
                  zaehler < zaehler_array;
                  zaehler++) {
                  zaehler2 = addZero(zaehler).zero2;
                  if (Gruppen[zaehler][0] === "INITIAL") { continue; }                                                    // Check Gueltigkeit object
          
                  for    ( zaehlerstatus = 8; zaehlerstatus < 18; zaehlerstatus++) {                                      // Spalte 8 - 18 fuer die Gruppentabelle entspriche logname -8
          
                      if (Gruppen[zaehler][zaehlerstatus] === '') {  continue; }                                          //Status is INITIAL     
          
                      if (method !== "TIME" && zaehlerstatus > 8)  {
                          break;                                                                                          // Multiple Status werden nur gebraucht fuer TIME Objekte
                      }
                      method = "TIME";  
                      if (Gruppen[zaehler][8] === 'DELTA') {       
                          method = "DELTA";
                      }
                      if (Gruppen[zaehler][8] === 'DELTAM') {       
                          method = "DELTAM";
                      }
                      if (Gruppen[zaehler][8] === 'CALC') {       
                          method = "CALC";
                      }
          
          
          
          // Status fuer die Methoden anlegen
                      CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","none");                                   // anlegen fuer alle methods (ausser hostory und switch ) bis zum statuslevel
          
          
          // Status fuer die system struktur anlegen
                      if (Gruppen[zaehler][3] === true) {                                                                 // soll eine DAY kumulations Variable angelegt werden ?
                       CreateDelStateSingle(zaehler,zaehlerstatus,method,"SYSTEM","day");                                        // anlegen fuer die System Struktur Periode
                      }      // endif Summierung soll angelegt werden
                      if (Gruppen[zaehler][4] === true) {                                                                 // soll eine week kumulations Variable angelegt werden ?
                       CreateDelStateSingle(zaehler,zaehlerstatus,method,"SYSTEM","week");                                        // anlegen fuer die System Struktur Periode
                      }      // endif Summierung soll angelegt werden
                      if (Gruppen[zaehler][5] === true) {                                                                 // soll eine month kumulations Variable angelegt werden ?
                      CreateDelStateSingle(zaehler,zaehlerstatus,method,"SYSTEM","month");                                        // anlegen fuer die System Struktur Periode
                      }      // endif Summierung soll angelegt werden
                      if (Gruppen[zaehler][6] === true) {                                                                 // soll eine year kumulations Variable angelegt werden ?
                       CreateDelStateSingle(zaehler,zaehlerstatus,method,"SYSTEM","year");                                        // anlegen fuer die System Struktur Periode
                      }      // endif Summierung soll angelegt werden
          
          // Methoden Struktur (ausser history und Status anlegen / loeschen)
           
                     if (Gruppen[zaehler][3] === true) {                                                                 // soll eine DAY kumulations Variable angelegt werden ?
                           CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","day");
                      }      // endif Summierung soll angelegt werde
                      if (Gruppen[zaehler][4] === true) {                                                                 // soll eine week kumulations Variable angelegt werden ?
                          CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","week");
                      }      // endif Summierung soll angelegt werde
                      if (Gruppen[zaehler][5] === true) {                                                                 // soll eine month kumulations Variable angelegt werden ?
                          CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","month");
                      }      // endif Summierung soll angelegt werde
                     if (Gruppen[zaehler][6] === true) {                                                                 // soll eine year kumulations Variable angelegt werden ?
                          CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","year");
                      }      // endif Summierung soll angelegt werde
          
           // Switch Stuktur anlengen / loeschen
                      if (Gruppen[zaehler][7] === true ) {                                                                 // Soll auch eine Switch Variable angelegt werden
                          CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","none");
                          if (Gruppen[zaehler][3] === true) {                                                               // soll eine DAY kumulations Variable angelegt werden ?               
                              CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","day");                     
                          }
                          if (Gruppen[zaehler][4] === true) {                                                               // soll eine week kumulations Variable angelegt werden ?               
                              CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","week");                     
                          }
                         if (Gruppen[zaehler][5] === true) {                                                               // soll eine month kumulations Variable angelegt werden ?               
                              CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","month");                     
                          }
                         if (Gruppen[zaehler][6] === true) {                                                               // soll eine year kumulations Variable angelegt werden ?               
                              CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","year");                     
                          }
                       } // endif Switch Variablen anzulegen ?
                       
                     
          // Durchschnittsberechnung - Struktur anlegen
                      if (special[zaehler][8] === true ) {                                                                    // Anlegen der Day Average 
                          CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","none");        
                          if (Gruppen[zaehler][3] === true) {                                                                 // Anlegen der Day Average 
                              CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","day");                   
                          }
                           if (Gruppen[zaehler][4] === true) {                                                                // Anlegen der Day Average 
                              CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","week");                   
                          }           
                          if (Gruppen[zaehler][5] === true) {                                                                 // Anlegen der Day Average 
                              CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","month");                   
                          }
                          if (Gruppen[zaehler][6] === true) {                                                                 // Anlegen der Day Average 
                              CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","year");                   
                          }
                      } // endif Durschnittsbewertung aktiv
                      
          // Min/MAX - Struktur anlegen
                      if (special[zaehler][11] === true ) {                                                                    // Anlegen MINMAX 
                          CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","none");        
                          if (Gruppen[zaehler][3] === true) {                                                                 // Anlegen der Day MINMAX 
                              CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","day");                   
                          }
                           if (Gruppen[zaehler][4] === true) {                                                                // Anlegen der Week MINMAX 
                              CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","week");                   
                          }           
                          if (Gruppen[zaehler][5] === true) {                                                                 // Anlegen der Month MINMAX 
                              CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","month");                   
                          }
                          if (Gruppen[zaehler][6] === true) {                                                                 // Anlegen der Year MINMAX 
                              CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","year");                   
                          }
                      } // endif MINMAX aktiv
                      
          
          // History Struktur anlegen/ loeschen
                      if (Gruppen[zaehler][2] === true && Gruppen[zaehler][5] === true) {                                 // Anlegen der Monats History Werte das laufende Jahr wenn Monatskumulation und Historie angeschaltet
                          CreateDelStateSingle(zaehler,zaehlerstatus,method,"HISTORY","month");                           
                          if(special[zaehler][8] === true) {                                                                // Durchschnittsfunktion ist aktiv   
                              CreateDelStateSingle(zaehler,zaehlerstatus,"AVERAGE","HISTORY","month");                             
                          }
                          if(special[zaehler][11] === true) {                                                                // MINMAX ist aktiv   
                              CreateDelStateSingle(zaehler,zaehlerstatus,"MINMAX","MINMAX","month");                             
                          }
                      }
                      
                      if (Gruppen[zaehler][2] === true && Gruppen[zaehler][6] === true) {                                 // Anlegen der Jahres  History Werte das laufende Jahr wenn Jahreskumulation und Historie angeschaltet          
                          CreateDelStateSingle(zaehler,zaehlerstatus,method,"HISTORY","year");                   
                          if(special[zaehler][8] === true) {                                                                // Durchschnittsfunktion ist aktiv   
                              CreateDelStateSingle(zaehler,zaehlerstatus,"AVERAGE","HISTORY","year");                             
                          }
                          if(special[zaehler][11] === true) {                                                                // MINMAX ist aktiv   
                              CreateDelStateSingle(zaehler,zaehlerstatus,"AVERAGE","HISTORY","year");                             
                          }
                      }  
           
           
           
           
                  } // Ende FOR Statuszaheler
              } // Ende FOR    Gruppenzaehler
          
          
          }  // ende Funktion
          
          
          
          // Part 1.4.2 Ausführen Anlegen/Löschen von Datenpunkten
          //-----------------------------------------------------------------------------------------------------
          // Funktion zum Anlegen der Variablen im System - hier Statusinformationen
          //-----------------------------------------------------------------------------------------------------
          
          function CreateDelStateSingle(zeile,spalte,method,funktion,periode) {
          // Zeile = Zeile der Gruppentabelle 
          // spalte = spalte der Gruppentabelle (status)
          // method = alle Methoden
          // funktion =  Funktionen Switch, Average, history
          // periode = day week month year oder none
              var actionDel = false;
              if (Gruppen[zeile][19] === true && Gruppen[zeile][18] === true) {                                            // wenn actionDel = true dann soll geloescht werden
                  actionDel = true;
              }
              if (actionDel === false &&  Gruppen[zeile][18] === true) {                                                    // kein loeschen aber auch nicht anlegen da Refresh auf gestoppt gesetzt
                  return;
              }                                   
          
              var statusname = Gruppen[zeile][spalte];
              if (logname[zeile][spalte-8] !== '') {                                                                      // Gibt es einen Status in der logname tabelle  ? wenn ja merken mit vorrang
                  statusname = logname[zeile][spalte-8];
              } 
              if (statusname === '' ) { return; }
          
          
              var pathCount   = countLocation + '.'       + Gruppen[zeile][1];                                            // BSZ.Counter.Thema
              var pathSysM    = sysLocation   + '.Grp'    + addZero(zeile).zero2  + 'MSec.' + statusname;
              var pathSysK    = sysLocation   + '.Grp'    + addZero(zeile).zero2  + 'Kum.'  +  statusname;
              var pathCLevel3;                                                                                            //BSZ.Counter.Thema.Type.Status
              var pathHistM;                                                                                              // BSZ.Counter.Thema.Status.History.Month
              var pathHistY;                                                                                              // BSZ.Counter.Thema.Status.History.Year
              var pathCLevel4; 
              var pathCLevel4b;    
              var pathsysaku;
              var pathsysasw; 
              var pathsysmin;                                                                                             // Minimum path
              var pathsysmax;                                                                                             // Maximum path
          
          
              var year =   new Date().getFullYear();
              var month =  addZero(new Date().getMonth()+1).zero2;                                                        // aktueller Monat
              var yearvor =new Date().getFullYear()-1;                                                                    // Jahr fuer die Historyfortschreibung - also Vorjahr
          
          
          //  die Methodenstuktur und systemstruktur   anlegen
              if(funktion === "none" && periode === "none" ) {                                                            // Hier werden nur die Status der types angelegt (ohne perioden)
                  pathCLevel3 = pathCount     + "."  + method  + "." + statusname;                                        //BSZ.Counter.Thema.Type.Status    
                  if (actionDel === false) { 
                          createState(pathSysM    ,  0);                                                                  // Anlegen systemeintrag msec
                          createState(pathSysK    ,  0);                                                                  // anlegen systemeintrag kum
                          createState(pathCLevel3 ,  0);      
                  } else {
                          ObjectExistsDelState(pathSysM   );                                                              // loeschen systemeintrag msec
                          ObjectExistsDelState(pathSysK   );                                                              // loeschen systemeintrag kum
                          ObjectExistsDelState(pathCLevel3);                                                              // loeschen counteintrag oberster level   
                  } // endif del
              }
              
          // die perioden der methodenstruktur anlegen
              if(periode === 'day' && funktion === "none") { 
                  pathCLevel4  = pathCount     + "." + method + "." + statusname + "."+PeriodeDay;                      //BSZ.Counter.Thema.Type.Status
                  pathCLevel4b = pathCount     + "." + method + "." + statusname + "."+PeriodeDay+".BEFORE";                        //BSZ.Counter.Thema.Type.Status
                  if (actionDel  === false) { 
                      createState(pathCLevel4 ,   0);
                      createState(pathCLevel4b,   0);
                    } else {
                      ObjectExistsDelState(pathCLevel4 );
                      ObjectExistsDelState(pathCLevel4b);
                  } // endif del
              }  // endif periode
              
              if(periode === 'week' && funktion === "none") { 
                  pathCLevel4  = pathCount     + "." + method + "." + statusname + "."+PeriodeWeek;                      //BSZ.Counter.Thema.Type.Status
                  pathCLevel4b = pathCount     + "." + method + "." + statusname + "."+PeriodeWeek+".BEFORE";                        //BSZ.Counter.Thema.Type.Status
                  if (actionDel  === false) { 
                      createState(pathCLevel4 ,   0);
                      createState(pathCLevel4b,   0);
                    } else {
                      ObjectExistsDelState(pathCLevel4);
                      ObjectExistsDelState(pathCLevel4b);
                   } // endif del
              }  // endif periode 
              
              if(periode === 'month' && funktion === "none") { 
                  pathCLevel4  = pathCount     + "." + method + "." + statusname + "."+PeriodeMonth;                      //BSZ.Counter.Thema.Type.Status
                  pathCLevel4b = pathCount     + "." + method + "." + statusname + "."+PeriodeMonth+".BEFORE";                        //BSZ.Counter.Thema.Type.Status
                   if (actionDel  === false) { 
                      createState(pathCLevel4 ,   0);
                      createState(pathCLevel4b,   0);
                  } else {
                      ObjectExistsDelState(pathCLevel4 );
                      ObjectExistsDelState(pathCLevel4b);
                    } // endif del
              }  // endif periode
              
              if(periode === 'year' && funktion === "none") { 
                  pathCLevel4  = pathCount     + "." + method + "." + statusname + "."+PeriodeYear;                      //BSZ.Counter.Thema.Type.Status
                  pathCLevel4b = pathCount     + "." + method + "." + statusname + "."+PeriodeYear+".BEFORE";                        //BSZ.Counter.Thema.Type.Status
                 if (actionDel  === false) {  
                      createState(pathCLevel4 ,   0);
                      createState(pathCLevel4b,   0);
                  } else {
                  ObjectExistsDelState(pathCLevel4 );
                  ObjectExistsDelState(pathCLevel4b);
                  } // endif del
              }  // endif periode
            
            
            
            
            // die perioden der systemstrktur anlegen
              if(funktion === "SYSTEM" && periode === "day" ) {                                                           // Anlegen der Perioden fuer die Systemstruktur- hier day
                   pathSysK = pathSysK + "."+PeriodeDay;    
                   if (actionDel  === false) { 
                      createState(pathSysK    ,   0);  
                  } else {
                       ObjectExistsDelState(pathSysK    );              
                 } // endif del
              }
              if(funktion === "SYSTEM" && periode === "week" ) {
                   pathSysK = pathSysK + "."+PeriodeWeek;    
                   if (actionDel  === false) { 
                      createState(pathSysK    ,   0);  
                  } else {
                       ObjectExistsDelState(pathSysK    );              
                 } // endif del
              }
          
              if(funktion === "SYSTEM" && periode === "month" ) {
                   pathSysK = pathSysK + "."+PeriodeMonth;    
                   if (actionDel  === false) { 
                      createState(pathSysK    ,   0);  
                  } else {
                       ObjectExistsDelState(pathSysK    );              
                 } // endif del
              }
              if(funktion === "SYSTEM" && periode === "year" ) {
                   pathSysK = pathSysK + "."+PeriodeYear;    
                   if (actionDel  === false) { 
                      createState(pathSysK    ,   0);  
                  } else {
                       ObjectExistsDelState(pathSysK    );              
                 } // endif del
              }
          
          
          
          
          
          // Switch Struktur anlegen inkl Perioden
              if(funktion === "SWITCH" && periode === "none") {
                  pathCLevel3 = pathCount + "." + "SWITCH" + "." + statusname;                                        //BSZ.Counter.Thema.Type.Status
                  if (actionDel === false) { 
                      createState(pathCLevel3 ,  0);      
                  } else {
                      ObjectExistsDelState(pathCLevel3);                                                              // loeschen counteintrag oberster level   
                  } // endif del    
              }
              if(funktion === "SWITCH" && periode === "day") {
                  pathCLevel4  = pathCount + "." +  "SWITCH" + "." + statusname + "."+PeriodeDay;                           //BSZ.Counter.Thema.Type.Status
                  pathCLevel4b = pathCount + "." +  "SWITCH" + "." + statusname + "."+PeriodeDay+".BEFORE";                 //BSZ.Counter.Thema.Type.Status
                  if (actionDel === false) { 
                      createState(pathCLevel4 ,  0);      
                      createState(pathCLevel4b,   0);
                  } else {
                      ObjectExistsDelState(pathCLevel4);                                                              // loeschen counteintrag oberster level   
                      ObjectExistsDelState(pathCLevel4b);
                  } // endif del    
              }
              if(funktion === "SWITCH" && periode === "week") {
                  pathCLevel4  = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeWeek;                           //BSZ.Counter.Thema.Type.Status
                  pathCLevel4b = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeWeek+".BEFORE";                 //BSZ.Counter.Thema.Type.Status
                  if (actionDel === false) { 
                      createState(pathCLevel4 ,  0);  
                      createState(pathCLevel4b,   0);
                  } else {
                      ObjectExistsDelState(pathCLevel4);                                                              // loeschen counteintrag oberster level   
                      ObjectExistsDelState(pathCLevel4b);
                  } // endif del    
              }
              if(funktion === "SWITCH" && periode === "month") {
                  pathCLevel4  = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeMonth;                           //BSZ.Counter.Thema.Type.Status
                  pathCLevel4b = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeMonth+".BEFORE";                 //BSZ.Counter.Thema.Type.Status
                  if (actionDel === false) { 
                      createState(pathCLevel4 ,  0);      
                      createState(pathCLevel4b,   0);
                  } else {
                      ObjectExistsDelState(pathCLevel4);                                                              // loeschen counteintrag oberster level   
                      ObjectExistsDelState(pathCLevel4b);
                  } // endif del    
              }
              if(funktion === "SWITCH" && periode === "year") {
                  pathCLevel4  = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeYear;                           //BSZ.Counter.Thema.Type.Status
                  pathCLevel4b = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeYear+".BEFORE";                 //BSZ.Counter.Thema.Type.Status
                  if (actionDel === false) { 
                      createState(pathCLevel4 ,  0);     
                      createState(pathCLevel4b,   0);
                  } else {
                      ObjectExistsDelState(pathCLevel4);                                                              // loeschen counteintrag oberster level 
                      ObjectExistsDelState(pathCLevel4b);
                  } // endif del    
              }
          
          
          // Anlegen der History Stuktur unterhalb der Methoden
              if(funktion === "HISTORY") { 
                  pathHistM   = pathCount  + "."  + method + "." + statusname + ".HISTORY"+ "."+PeriodeMonth +".";                               // BSZ.Counter.Thema.Status.History.Month
                  pathHistY   = pathCount  + "."  + method + "." + statusname + ".HISTORY"+ "."+PeriodeYear  +".";                               // BSZ.Counter.Thema.Status.History.Month
                  if (periode === "month") {       
                      for    (  i = 1; i <= 12; i++) {     
                         month  = addZero(i).zero2;                                                                          // Monat mit führender null
                         if (actionDel  === false) { 
                              createState(pathHistM + year + month,  0);                                                     // alle Monate des jahres anlegen
                         } else {
                              ObjectExistsDelState(pathHistM + year + month);                                                // alle Monate des jahres loeschen           
                         } // endif del
                      } // endfor
                      if (actionDel  === false) { 
                          createState(pathHistM + yearvor + "12",   0);                                                       // letzten Monat vor Jahreswechsel anlegen               
                       } else {     
                          ObjectExistsDelState(pathHistM + yearvor + "12");                                                   //letzten Monat vor Jahreswechsel loeschen               
                       }  // endif del
                  }  // endif month                               
                  if (periode === "year") {         
                       if (actionDel  === false) { 
                          createState(pathHistY + year,   0);                                                                 //Jahr anlegen       
                          createState(pathHistY + yearvor,   0);                                                              //Vorjahr anlegen 
                      } else {     
                          ObjectExistsDelState(pathHistY + year);                                                             //Jahr loeschen       
                          ObjectExistsDelState(pathHistY + yearvor);                                                          //Vorjahr loeschen 
                      }  // endif del
                  }  // endif year    
              } // endif history
          

          HP Microserver Gen8, RPI-4, IoBroker,

          L 1 Reply Last reply
          0
          • K knopers1

            @looxer01

            Hi Looxer01, danke Dir!
            Was macht genau die "schedule" Funktion?
            Ich habe gesehen, dass sich bei mir der Tages-Stromverbrauch um 0:00 Uhr nicht auf null stellt. Hängt damit die "schedule" Funktion zusammen?

            Part 1.4 sieht in meinem Script etwas anderes aus... Hab ich da noch eine alte Version?

            // Part 1.4 Definition der Trigger und schedule aufgrund der Einstellungstabellen
            // ------------------------T R I G G E R -------------------------------------------------------
            
            on({id:  OnIdTAB[0 ], valNe: 1000 }, function(obj)    { if(special[0][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 0 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 0 ); } } });    // ende on id
            on({id:  OnIdTAB[1 ], valNe: 1000 }, function(obj)    { if(special[1][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 1 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 1 ); } } });    // ende on id
            on({id:  OnIdTAB[2 ], valNe: 1000 }, function(obj)    { if(special[2][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 2 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 2 ); } } });    // ende on id
            on({id:  OnIdTAB[3 ], valNe: 1000 }, function(obj)    { if(special[3][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 3 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 3 ); } } });    // ende on id
            on({id:  OnIdTAB[4 ], valNe: 1000 }, function(obj)    { if(special[4][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 4 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 4 ); } } });    // ende on id
            on({id:  OnIdTAB[5 ], valNe: 1000 }, function(obj)    { if(special[5][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 5 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 5 ); } } });    // ende on id
            on({id:  OnIdTAB[6 ], valNe: 1000 }, function(obj)    { if(special[6][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 6 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 6 ); } } });    // ende on id
            on({id:  OnIdTAB[7 ], valNe: 1000 }, function(obj)    { if(special[7][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 7 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 7 ); } } });    // ende on id
            on({id:  OnIdTAB[8 ], valNe: 1000 }, function(obj)    { if(special[8][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 8 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 8 ); } } });    // ende on id
            on({id:  OnIdTAB[9 ], valNe: 1000 }, function(obj)    { if(special[9][7] === true) {  if (obj.state.ack)  {   GeraetUpdate( 9 );  } } else {  if(obj.state.ack === false)  { GeraetUpdate( 9 ); } } });    // ende on id
            on({id:  OnIdTAB[10], valNe: 1000 }, function(obj)    { if(special[10][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(10);  }  }else {  if(obj.state.ack === false)  { GeraetUpdate(10); } } });    // ende on id
            on({id:  OnIdTAB[11], valNe: 1000 }, function(obj)    { if(special[11][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(11);  }  }else {  if(obj.state.ack === false)  { GeraetUpdate(11); } } });    // ende on id
            on({id:  OnIdTAB[12], valNe: 1000 }, function(obj)    { if(special[12][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(12);  }  }else {  if(obj.state.ack === false)  { GeraetUpdate(12); } } });    // ende on id
            on({id:  OnIdTAB[13], valNe: 1000 }, function(obj)    { if(special[13][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(13);  }  }else {  if(obj.state.ack === false)  { GeraetUpdate(13); } } });    // ende on id
            on({id:  OnIdTAB[14], valNe: 1000 }, function(obj)    { if(special[14][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(14);  }  }else {  if(obj.state.ack === false)  { GeraetUpdate(14); } } });    // ende on id
            on({id:  OnIdTAB[15], valNe: 1000 }, function(obj)    { if(special[15][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(15);  }  }else {  if(obj.state.ack === false)  { GeraetUpdate(15); } } });    // ende on id
            on({id:  OnIdTAB[16], valNe: 1000 }, function(obj)    { if(special[16][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(16);  }  }else {  if(obj.state.ack === false)  { GeraetUpdate(16); } } });    // ende on id
            on({id:  OnIdTAB[17], valNe: 1000 }, function(obj)    { if(special[17][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(17);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(17); } } });    // ende on id
            on({id:  OnIdTAB[18], valNe: 1000 }, function(obj)    { if(special[18][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(18);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(18); } } });    // ende on id
            on({id:  OnIdTAB[19], valNe: 1000 }, function(obj)    { if(special[19][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(19);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(19); } } });    // ende on id
            on({id:  OnIdTAB[20], valNe: 1000 }, function(obj)    { if(special[20][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(20);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(20); } } });    // ende on id
            on({id:  OnIdTAB[21], valNe: 1000 }, function(obj)    { if(special[21][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(21);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(21); } } });    // ende on id
            on({id:  OnIdTAB[22], valNe: 1000 }, function(obj)    { if(special[22][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(22);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(22); } } });    // ende on id
            on({id:  OnIdTAB[23], valNe: 1000 }, function(obj)    { if(special[23][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(23);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(23); } } });    // ende on id
            on({id:  OnIdTAB[24], valNe: 1000 }, function(obj)    { if(special[24][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(24);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(24); } } });    // ende on id
            on({id:  OnIdTAB[25], valNe: 1000 }, function(obj)    { if(special[25][7] === true) {  if (obj.state.ack)  {   GeraetUpdate(25);  } } else {  if(obj.state.ack === false)  { GeraetUpdate(25); } } });    // ende on id
            
            
            schedule(special[0][10], function() {   log("schedule 0 aufgerufen","info");GeraetUpdate(0);     }); // end of schedule                                
            schedule(special[1][10], function() {   log("schedule 1 aufgerufen","info"); GeraetUpdate(1);     }); // end of schedule        
            schedule(special[2][10], function() {   log("schedule 2 aufgerufen","info"); GeraetUpdate(2);     }); // end of schedule        
            schedule(special[3][10], function() {   log("schedule 3 aufgerufen","info"); GeraetUpdate(3);     }); // end of schedule        
            schedule(special[4][10], function() {   log("schedule 4 aufgerufen","info"); GeraetUpdate(4);     }); // end of schedule        
            schedule(special[5][10], function() {   log("schedule 5 aufgerufen","info");GeraetUpdate(5);     }); // end of schedule        
            schedule(special[6][10], function() {   log("schedule 6 aufgerufen","info");GeraetUpdate(6);     }); // end of schedule        
            schedule(special[7][10], function() {   log("schedule 7 aufgerufen","info");GeraetUpdate(7);     }); // end of schedule        
            schedule(special[8][10], function() {   log("schedule 8 aufgerufen","info");GeraetUpdate(8);     }); // end of schedule        
            schedule(special[9][10], function() {   log("schedule 9 aufgerufen","info");GeraetUpdate(9);     }); // end of schedule        
            schedule(special[10][10], function() {  log("schedule 10 aufgerufen","info"); GeraetUpdate(10);     }); // end of schedule        
            schedule(special[11][10], function() {  log("schedule 11 aufgerufen","info"); GeraetUpdate(11);     }); // end of schedule        
            schedule(special[12][10], function() {  log("schedule 12 aufgerufen","info"); GeraetUpdate(12);     }); // end of schedule        
            schedule(special[13][10], function() {  log("schedule 13 aufgerufen","info"); GeraetUpdate(13);     }); // end of schedule        
            schedule(special[14][10], function() {  log("schedule 14 aufgerufen","info"); GeraetUpdate(14);     }); // end of schedule        
            schedule(special[15][10], function() {  log("schedule 15 aufgerufen","info");GeraetUpdate(15);     }); // end of schedule        
            schedule(special[16][10], function() {  log("schedule 16 aufgerufen","info"); GeraetUpdate(16);     }); // end of schedule        
            schedule(special[17][10], function() {  log("schedule 17 aufgerufen","info"); GeraetUpdate(17);     }); // end of schedule        
            schedule(special[18][10], function() {  log("schedule 18 aufgerufen","info"); GeraetUpdate(18);     }); // end of schedule        
            schedule(special[19][10], function() {  log("schedule 19 aufgerufen","info");GeraetUpdate(19);     }); // end of schedule        
            schedule(special[20][10], function() {  log("schedule 20 aufgerufen","info");GeraetUpdate(20);     }); // end of schedule        
            schedule(special[21][10], function() {  log("schedule 21 aufgerufen","info");GeraetUpdate(21);     }); // end of schedule        
            schedule(special[22][10], function() {  log("schedule 22 aufgerufen","info");GeraetUpdate(22);     }); // end of schedule        
            schedule(special[23][10], function() {  log("schedule 23 aufgerufen","info"); GeraetUpdate(23);     }); // end of schedule   
            schedule(special[24][10], function() {  log("schedule 24 aufgerufen","info"); GeraetUpdate(24);     }); // end of schedule        
            schedule(special[25][10], function() {  log("schedule 25 aufgerufen","info");GeraetUpdate(25);     }); // end of schedule        
            
            
            
            // Part 3 Taegliches Zuruecksetzen der Datenpunkte aufgrund von Periodenwechsel DAY,WEEK,MONTH,YEAR
            // ------------------------Aenderung des Status des Geraetes------------------------------------
            //-------------------------Beim Einschalten wird die Zeit festgehalten -------------------------
            //-------------------------Beim Ausschalten wird die Zeitdifferenz berechnet und gespeichert----
            schedule(cronjob, function() {   PeriodChange();   });  
            
            
            
            // ------------------------ F U N K T I O N E N -------------------------------------------------------
            
            // Part 1.4.1 Vorbereiten zum Anlegen/Löschen von Datenpunkten
            //-----------------------------------------------------------------------------------------------------
            // Funktion zum Anlegen der Variablen im System
            //-----------------------------------------------------------------------------------------------------
            function CreateDelStates(){
                var zaehlerstatus = 0;
                var method = "TIME";
                for (var zaehler = 0,
                    zaehler_array = Gruppen.length;
                    zaehler < zaehler_array;
                    zaehler++) {
                    zaehler2 = addZero(zaehler).zero2;
                    if (Gruppen[zaehler][0] === "INITIAL") { continue; }                                                    // Check Gueltigkeit object
            
                    for    ( zaehlerstatus = 8; zaehlerstatus < 18; zaehlerstatus++) {                                      // Spalte 8 - 18 fuer die Gruppentabelle entspriche logname -8
            
                        if (Gruppen[zaehler][zaehlerstatus] === '') {  continue; }                                          //Status is INITIAL     
            
                        if (method !== "TIME" && zaehlerstatus > 8)  {
                            break;                                                                                          // Multiple Status werden nur gebraucht fuer TIME Objekte
                        }
                        method = "TIME";  
                        if (Gruppen[zaehler][8] === 'DELTA') {       
                            method = "DELTA";
                        }
                        if (Gruppen[zaehler][8] === 'DELTAM') {       
                            method = "DELTAM";
                        }
                        if (Gruppen[zaehler][8] === 'CALC') {       
                            method = "CALC";
                        }
            
            
            
            // Status fuer die Methoden anlegen
                        CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","none");                                   // anlegen fuer alle methods (ausser hostory und switch ) bis zum statuslevel
            
            
            // Status fuer die system struktur anlegen
                        if (Gruppen[zaehler][3] === true) {                                                                 // soll eine DAY kumulations Variable angelegt werden ?
                         CreateDelStateSingle(zaehler,zaehlerstatus,method,"SYSTEM","day");                                        // anlegen fuer die System Struktur Periode
                        }      // endif Summierung soll angelegt werden
                        if (Gruppen[zaehler][4] === true) {                                                                 // soll eine week kumulations Variable angelegt werden ?
                         CreateDelStateSingle(zaehler,zaehlerstatus,method,"SYSTEM","week");                                        // anlegen fuer die System Struktur Periode
                        }      // endif Summierung soll angelegt werden
                        if (Gruppen[zaehler][5] === true) {                                                                 // soll eine month kumulations Variable angelegt werden ?
                        CreateDelStateSingle(zaehler,zaehlerstatus,method,"SYSTEM","month");                                        // anlegen fuer die System Struktur Periode
                        }      // endif Summierung soll angelegt werden
                        if (Gruppen[zaehler][6] === true) {                                                                 // soll eine year kumulations Variable angelegt werden ?
                         CreateDelStateSingle(zaehler,zaehlerstatus,method,"SYSTEM","year");                                        // anlegen fuer die System Struktur Periode
                        }      // endif Summierung soll angelegt werden
            
            // Methoden Struktur (ausser history und Status anlegen / loeschen)
             
                       if (Gruppen[zaehler][3] === true) {                                                                 // soll eine DAY kumulations Variable angelegt werden ?
                             CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","day");
                        }      // endif Summierung soll angelegt werde
                        if (Gruppen[zaehler][4] === true) {                                                                 // soll eine week kumulations Variable angelegt werden ?
                            CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","week");
                        }      // endif Summierung soll angelegt werde
                        if (Gruppen[zaehler][5] === true) {                                                                 // soll eine month kumulations Variable angelegt werden ?
                            CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","month");
                        }      // endif Summierung soll angelegt werde
                       if (Gruppen[zaehler][6] === true) {                                                                 // soll eine year kumulations Variable angelegt werden ?
                            CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","year");
                        }      // endif Summierung soll angelegt werde
            
             // Switch Stuktur anlengen / loeschen
                        if (Gruppen[zaehler][7] === true ) {                                                                 // Soll auch eine Switch Variable angelegt werden
                            CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","none");
                            if (Gruppen[zaehler][3] === true) {                                                               // soll eine DAY kumulations Variable angelegt werden ?               
                                CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","day");                     
                            }
                            if (Gruppen[zaehler][4] === true) {                                                               // soll eine week kumulations Variable angelegt werden ?               
                                CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","week");                     
                            }
                           if (Gruppen[zaehler][5] === true) {                                                               // soll eine month kumulations Variable angelegt werden ?               
                                CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","month");                     
                            }
                           if (Gruppen[zaehler][6] === true) {                                                               // soll eine year kumulations Variable angelegt werden ?               
                                CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","year");                     
                            }
                         } // endif Switch Variablen anzulegen ?
                         
                       
            // Durchschnittsberechnung - Struktur anlegen
                        if (special[zaehler][8] === true ) {                                                                    // Anlegen der Day Average 
                            CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","none");        
                            if (Gruppen[zaehler][3] === true) {                                                                 // Anlegen der Day Average 
                                CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","day");                   
                            }
                             if (Gruppen[zaehler][4] === true) {                                                                // Anlegen der Day Average 
                                CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","week");                   
                            }           
                            if (Gruppen[zaehler][5] === true) {                                                                 // Anlegen der Day Average 
                                CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","month");                   
                            }
                            if (Gruppen[zaehler][6] === true) {                                                                 // Anlegen der Day Average 
                                CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","year");                   
                            }
                        } // endif Durschnittsbewertung aktiv
                        
            // Min/MAX - Struktur anlegen
                        if (special[zaehler][11] === true ) {                                                                    // Anlegen MINMAX 
                            CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","none");        
                            if (Gruppen[zaehler][3] === true) {                                                                 // Anlegen der Day MINMAX 
                                CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","day");                   
                            }
                             if (Gruppen[zaehler][4] === true) {                                                                // Anlegen der Week MINMAX 
                                CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","week");                   
                            }           
                            if (Gruppen[zaehler][5] === true) {                                                                 // Anlegen der Month MINMAX 
                                CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","month");                   
                            }
                            if (Gruppen[zaehler][6] === true) {                                                                 // Anlegen der Year MINMAX 
                                CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","year");                   
                            }
                        } // endif MINMAX aktiv
                        
            
            // History Struktur anlegen/ loeschen
                        if (Gruppen[zaehler][2] === true && Gruppen[zaehler][5] === true) {                                 // Anlegen der Monats History Werte das laufende Jahr wenn Monatskumulation und Historie angeschaltet
                            CreateDelStateSingle(zaehler,zaehlerstatus,method,"HISTORY","month");                           
                            if(special[zaehler][8] === true) {                                                                // Durchschnittsfunktion ist aktiv   
                                CreateDelStateSingle(zaehler,zaehlerstatus,"AVERAGE","HISTORY","month");                             
                            }
                            if(special[zaehler][11] === true) {                                                                // MINMAX ist aktiv   
                                CreateDelStateSingle(zaehler,zaehlerstatus,"MINMAX","MINMAX","month");                             
                            }
                        }
                        
                        if (Gruppen[zaehler][2] === true && Gruppen[zaehler][6] === true) {                                 // Anlegen der Jahres  History Werte das laufende Jahr wenn Jahreskumulation und Historie angeschaltet          
                            CreateDelStateSingle(zaehler,zaehlerstatus,method,"HISTORY","year");                   
                            if(special[zaehler][8] === true) {                                                                // Durchschnittsfunktion ist aktiv   
                                CreateDelStateSingle(zaehler,zaehlerstatus,"AVERAGE","HISTORY","year");                             
                            }
                            if(special[zaehler][11] === true) {                                                                // MINMAX ist aktiv   
                                CreateDelStateSingle(zaehler,zaehlerstatus,"AVERAGE","HISTORY","year");                             
                            }
                        }  
             
             
             
             
                    } // Ende FOR Statuszaheler
                } // Ende FOR    Gruppenzaehler
            
            
            }  // ende Funktion
            
            
            
            // Part 1.4.2 Ausführen Anlegen/Löschen von Datenpunkten
            //-----------------------------------------------------------------------------------------------------
            // Funktion zum Anlegen der Variablen im System - hier Statusinformationen
            //-----------------------------------------------------------------------------------------------------
            
            function CreateDelStateSingle(zeile,spalte,method,funktion,periode) {
            // Zeile = Zeile der Gruppentabelle 
            // spalte = spalte der Gruppentabelle (status)
            // method = alle Methoden
            // funktion =  Funktionen Switch, Average, history
            // periode = day week month year oder none
                var actionDel = false;
                if (Gruppen[zeile][19] === true && Gruppen[zeile][18] === true) {                                            // wenn actionDel = true dann soll geloescht werden
                    actionDel = true;
                }
                if (actionDel === false &&  Gruppen[zeile][18] === true) {                                                    // kein loeschen aber auch nicht anlegen da Refresh auf gestoppt gesetzt
                    return;
                }                                   
            
                var statusname = Gruppen[zeile][spalte];
                if (logname[zeile][spalte-8] !== '') {                                                                      // Gibt es einen Status in der logname tabelle  ? wenn ja merken mit vorrang
                    statusname = logname[zeile][spalte-8];
                } 
                if (statusname === '' ) { return; }
            
            
                var pathCount   = countLocation + '.'       + Gruppen[zeile][1];                                            // BSZ.Counter.Thema
                var pathSysM    = sysLocation   + '.Grp'    + addZero(zeile).zero2  + 'MSec.' + statusname;
                var pathSysK    = sysLocation   + '.Grp'    + addZero(zeile).zero2  + 'Kum.'  +  statusname;
                var pathCLevel3;                                                                                            //BSZ.Counter.Thema.Type.Status
                var pathHistM;                                                                                              // BSZ.Counter.Thema.Status.History.Month
                var pathHistY;                                                                                              // BSZ.Counter.Thema.Status.History.Year
                var pathCLevel4; 
                var pathCLevel4b;    
                var pathsysaku;
                var pathsysasw; 
                var pathsysmin;                                                                                             // Minimum path
                var pathsysmax;                                                                                             // Maximum path
            
            
                var year =   new Date().getFullYear();
                var month =  addZero(new Date().getMonth()+1).zero2;                                                        // aktueller Monat
                var yearvor =new Date().getFullYear()-1;                                                                    // Jahr fuer die Historyfortschreibung - also Vorjahr
            
            
            //  die Methodenstuktur und systemstruktur   anlegen
                if(funktion === "none" && periode === "none" ) {                                                            // Hier werden nur die Status der types angelegt (ohne perioden)
                    pathCLevel3 = pathCount     + "."  + method  + "." + statusname;                                        //BSZ.Counter.Thema.Type.Status    
                    if (actionDel === false) { 
                            createState(pathSysM    ,  0);                                                                  // Anlegen systemeintrag msec
                            createState(pathSysK    ,  0);                                                                  // anlegen systemeintrag kum
                            createState(pathCLevel3 ,  0);      
                    } else {
                            ObjectExistsDelState(pathSysM   );                                                              // loeschen systemeintrag msec
                            ObjectExistsDelState(pathSysK   );                                                              // loeschen systemeintrag kum
                            ObjectExistsDelState(pathCLevel3);                                                              // loeschen counteintrag oberster level   
                    } // endif del
                }
                
            // die perioden der methodenstruktur anlegen
                if(periode === 'day' && funktion === "none") { 
                    pathCLevel4  = pathCount     + "." + method + "." + statusname + "."+PeriodeDay;                      //BSZ.Counter.Thema.Type.Status
                    pathCLevel4b = pathCount     + "." + method + "." + statusname + "."+PeriodeDay+".BEFORE";                        //BSZ.Counter.Thema.Type.Status
                    if (actionDel  === false) { 
                        createState(pathCLevel4 ,   0);
                        createState(pathCLevel4b,   0);
                      } else {
                        ObjectExistsDelState(pathCLevel4 );
                        ObjectExistsDelState(pathCLevel4b);
                    } // endif del
                }  // endif periode
                
                if(periode === 'week' && funktion === "none") { 
                    pathCLevel4  = pathCount     + "." + method + "." + statusname + "."+PeriodeWeek;                      //BSZ.Counter.Thema.Type.Status
                    pathCLevel4b = pathCount     + "." + method + "." + statusname + "."+PeriodeWeek+".BEFORE";                        //BSZ.Counter.Thema.Type.Status
                    if (actionDel  === false) { 
                        createState(pathCLevel4 ,   0);
                        createState(pathCLevel4b,   0);
                      } else {
                        ObjectExistsDelState(pathCLevel4);
                        ObjectExistsDelState(pathCLevel4b);
                     } // endif del
                }  // endif periode 
                
                if(periode === 'month' && funktion === "none") { 
                    pathCLevel4  = pathCount     + "." + method + "." + statusname + "."+PeriodeMonth;                      //BSZ.Counter.Thema.Type.Status
                    pathCLevel4b = pathCount     + "." + method + "." + statusname + "."+PeriodeMonth+".BEFORE";                        //BSZ.Counter.Thema.Type.Status
                     if (actionDel  === false) { 
                        createState(pathCLevel4 ,   0);
                        createState(pathCLevel4b,   0);
                    } else {
                        ObjectExistsDelState(pathCLevel4 );
                        ObjectExistsDelState(pathCLevel4b);
                      } // endif del
                }  // endif periode
                
                if(periode === 'year' && funktion === "none") { 
                    pathCLevel4  = pathCount     + "." + method + "." + statusname + "."+PeriodeYear;                      //BSZ.Counter.Thema.Type.Status
                    pathCLevel4b = pathCount     + "." + method + "." + statusname + "."+PeriodeYear+".BEFORE";                        //BSZ.Counter.Thema.Type.Status
                   if (actionDel  === false) {  
                        createState(pathCLevel4 ,   0);
                        createState(pathCLevel4b,   0);
                    } else {
                    ObjectExistsDelState(pathCLevel4 );
                    ObjectExistsDelState(pathCLevel4b);
                    } // endif del
                }  // endif periode
              
              
              
              
              // die perioden der systemstrktur anlegen
                if(funktion === "SYSTEM" && periode === "day" ) {                                                           // Anlegen der Perioden fuer die Systemstruktur- hier day
                     pathSysK = pathSysK + "."+PeriodeDay;    
                     if (actionDel  === false) { 
                        createState(pathSysK    ,   0);  
                    } else {
                         ObjectExistsDelState(pathSysK    );              
                   } // endif del
                }
                if(funktion === "SYSTEM" && periode === "week" ) {
                     pathSysK = pathSysK + "."+PeriodeWeek;    
                     if (actionDel  === false) { 
                        createState(pathSysK    ,   0);  
                    } else {
                         ObjectExistsDelState(pathSysK    );              
                   } // endif del
                }
            
                if(funktion === "SYSTEM" && periode === "month" ) {
                     pathSysK = pathSysK + "."+PeriodeMonth;    
                     if (actionDel  === false) { 
                        createState(pathSysK    ,   0);  
                    } else {
                         ObjectExistsDelState(pathSysK    );              
                   } // endif del
                }
                if(funktion === "SYSTEM" && periode === "year" ) {
                     pathSysK = pathSysK + "."+PeriodeYear;    
                     if (actionDel  === false) { 
                        createState(pathSysK    ,   0);  
                    } else {
                         ObjectExistsDelState(pathSysK    );              
                   } // endif del
                }
            
            
            
            
            
            // Switch Struktur anlegen inkl Perioden
                if(funktion === "SWITCH" && periode === "none") {
                    pathCLevel3 = pathCount + "." + "SWITCH" + "." + statusname;                                        //BSZ.Counter.Thema.Type.Status
                    if (actionDel === false) { 
                        createState(pathCLevel3 ,  0);      
                    } else {
                        ObjectExistsDelState(pathCLevel3);                                                              // loeschen counteintrag oberster level   
                    } // endif del    
                }
                if(funktion === "SWITCH" && periode === "day") {
                    pathCLevel4  = pathCount + "." +  "SWITCH" + "." + statusname + "."+PeriodeDay;                           //BSZ.Counter.Thema.Type.Status
                    pathCLevel4b = pathCount + "." +  "SWITCH" + "." + statusname + "."+PeriodeDay+".BEFORE";                 //BSZ.Counter.Thema.Type.Status
                    if (actionDel === false) { 
                        createState(pathCLevel4 ,  0);      
                        createState(pathCLevel4b,   0);
                    } else {
                        ObjectExistsDelState(pathCLevel4);                                                              // loeschen counteintrag oberster level   
                        ObjectExistsDelState(pathCLevel4b);
                    } // endif del    
                }
                if(funktion === "SWITCH" && periode === "week") {
                    pathCLevel4  = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeWeek;                           //BSZ.Counter.Thema.Type.Status
                    pathCLevel4b = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeWeek+".BEFORE";                 //BSZ.Counter.Thema.Type.Status
                    if (actionDel === false) { 
                        createState(pathCLevel4 ,  0);  
                        createState(pathCLevel4b,   0);
                    } else {
                        ObjectExistsDelState(pathCLevel4);                                                              // loeschen counteintrag oberster level   
                        ObjectExistsDelState(pathCLevel4b);
                    } // endif del    
                }
                if(funktion === "SWITCH" && periode === "month") {
                    pathCLevel4  = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeMonth;                           //BSZ.Counter.Thema.Type.Status
                    pathCLevel4b = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeMonth+".BEFORE";                 //BSZ.Counter.Thema.Type.Status
                    if (actionDel === false) { 
                        createState(pathCLevel4 ,  0);      
                        createState(pathCLevel4b,   0);
                    } else {
                        ObjectExistsDelState(pathCLevel4);                                                              // loeschen counteintrag oberster level   
                        ObjectExistsDelState(pathCLevel4b);
                    } // endif del    
                }
                if(funktion === "SWITCH" && periode === "year") {
                    pathCLevel4  = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeYear;                           //BSZ.Counter.Thema.Type.Status
                    pathCLevel4b = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeYear+".BEFORE";                 //BSZ.Counter.Thema.Type.Status
                    if (actionDel === false) { 
                        createState(pathCLevel4 ,  0);     
                        createState(pathCLevel4b,   0);
                    } else {
                        ObjectExistsDelState(pathCLevel4);                                                              // loeschen counteintrag oberster level 
                        ObjectExistsDelState(pathCLevel4b);
                    } // endif del    
                }
            
            
            // Anlegen der History Stuktur unterhalb der Methoden
                if(funktion === "HISTORY") { 
                    pathHistM   = pathCount  + "."  + method + "." + statusname + ".HISTORY"+ "."+PeriodeMonth +".";                               // BSZ.Counter.Thema.Status.History.Month
                    pathHistY   = pathCount  + "."  + method + "." + statusname + ".HISTORY"+ "."+PeriodeYear  +".";                               // BSZ.Counter.Thema.Status.History.Month
                    if (periode === "month") {       
                        for    (  i = 1; i <= 12; i++) {     
                           month  = addZero(i).zero2;                                                                          // Monat mit führender null
                           if (actionDel  === false) { 
                                createState(pathHistM + year + month,  0);                                                     // alle Monate des jahres anlegen
                           } else {
                                ObjectExistsDelState(pathHistM + year + month);                                                // alle Monate des jahres loeschen           
                           } // endif del
                        } // endfor
                        if (actionDel  === false) { 
                            createState(pathHistM + yearvor + "12",   0);                                                       // letzten Monat vor Jahreswechsel anlegen               
                         } else {     
                            ObjectExistsDelState(pathHistM + yearvor + "12");                                                   //letzten Monat vor Jahreswechsel loeschen               
                         }  // endif del
                    }  // endif month                               
                    if (periode === "year") {         
                         if (actionDel  === false) { 
                            createState(pathHistY + year,   0);                                                                 //Jahr anlegen       
                            createState(pathHistY + yearvor,   0);                                                              //Vorjahr anlegen 
                        } else {     
                            ObjectExistsDelState(pathHistY + year);                                                             //Jahr loeschen       
                            ObjectExistsDelState(pathHistY + yearvor);                                                          //Vorjahr loeschen 
                        }  // endif del
                    }  // endif year    
                } // endif history
            
            L Offline
            L Offline
            looxer01
            wrote on last edited by
            #310

            Hi
            stimmt, ich hatte die letzten Änderungen nicht mehr hochgeladen. Damit weichen die Versionen an der Stelle ab.
            Korrektur in dieser Version ist alle schedules (codezeilen 32 ff) , die in Tabelle specials Spalte 11 sich befinden auszukommentieren.
            Gilt also für alle Zeilen, die in Tabelle specials Spalte 11 keinen Eintrag bzw ein '' stehen haben.

            Mit dieser Einstellung wird nicht auf einen Trigger reagiert sondern ein Schedule löst die Funktion aus. (haben wahrscheinlich eh nicht viele genutzt)

            Das hat aber nichts mit der 0 Rückstellung zu tun. Schau ich mir an.

            vG Looxer

            K 1 Reply Last reply
            0
            • L looxer01

              Hi
              stimmt, ich hatte die letzten Änderungen nicht mehr hochgeladen. Damit weichen die Versionen an der Stelle ab.
              Korrektur in dieser Version ist alle schedules (codezeilen 32 ff) , die in Tabelle specials Spalte 11 sich befinden auszukommentieren.
              Gilt also für alle Zeilen, die in Tabelle specials Spalte 11 keinen Eintrag bzw ein '' stehen haben.

              Mit dieser Einstellung wird nicht auf einen Trigger reagiert sondern ein Schedule löst die Funktion aus. (haben wahrscheinlich eh nicht viele genutzt)

              Das hat aber nichts mit der 0 Rückstellung zu tun. Schau ich mir an.

              vG Looxer

              K Offline
              K Offline
              knopers1
              wrote on last edited by
              #311

              @looxer01
              puhh,
              ich kann Dir noch kaum folgen.... Die Tabelle mit "spezials" habe ich gefunden. (siehe unten)
              In der Spalte 11 ist bei mir kein Eintrag. Wie kann ich es auskommentieren? Kannst Du da ein Beispiel zeigen?
              Mit codenzeile 32ff kann ich leider nichts anfangen 😲

              Kannst Du so nett sein und ein Beispiel zeigen?
              Besten Dank für Deine Mühe!

              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]  =   ['2'    ,''     ,''                     ,''         ,''     ,''                 ,''                 ,'false'                    ,''             ,''             ,''                 ,''             ,''                 , ''     ]; 
              special[1]  =   ['2'    ,''     ,'11.432'               ,''         ,''     ,''                 ,''                 ,'false'                    ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
              special[2]  =   ['9'     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,'false'                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
              special[3]  =   ['9'     ,''     ,'625'                     ,'1000'         ,''     ,''                 ,''                 ,'false'                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
              special[4]  =   ['2'     ,''     ,'10.43'                     ,'1000'         ,''     ,''                 ,''                 ,'false'                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
              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]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
              
              

              HP Microserver Gen8, RPI-4, IoBroker,

              L 1 Reply Last reply
              0
              • K knopers1

                @looxer01
                puhh,
                ich kann Dir noch kaum folgen.... Die Tabelle mit "spezials" habe ich gefunden. (siehe unten)
                In der Spalte 11 ist bei mir kein Eintrag. Wie kann ich es auskommentieren? Kannst Du da ein Beispiel zeigen?
                Mit codenzeile 32ff kann ich leider nichts anfangen 😲

                Kannst Du so nett sein und ein Beispiel zeigen?
                Besten Dank für Deine Mühe!

                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]  =   ['2'    ,''     ,''                     ,''         ,''     ,''                 ,''                 ,'false'                    ,''             ,''             ,''                 ,''             ,''                 , ''     ]; 
                special[1]  =   ['2'    ,''     ,'11.432'               ,''         ,''     ,''                 ,''                 ,'false'                    ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                special[2]  =   ['9'     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,'false'                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                special[3]  =   ['9'     ,''     ,'625'                     ,'1000'         ,''     ,''                 ,''                 ,'false'                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                special[4]  =   ['2'     ,''     ,'10.43'                     ,'1000'         ,''     ,''                 ,''                 ,'false'                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                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]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                
                
                L Offline
                L Offline
                looxer01
                wrote on last edited by
                #312

                Hi
                wenn du dort keinen Eintrag hast, dann ist es doch einfach, denn -wie gedacht- nutzt du die Schedule Funktion nicht
                Kommentiere alle Zeilen von 32 bis 57 aus. Dann ist der Fehler weg.

                vG Looxer

                1 Reply Last reply
                0
                • L looxer01

                  Hi,

                  Der Betriebstundenzahler hat sich vom einfachen Zaehler zu einem allgemein Counter mit Verbrauchs-Berechnungsfunktionen weiterentwickelt.
                  Was macht er ?

                  • Zeigt Zustände von verschiedenen Status von allen Geräten oder Datenpunkten an und brechnet die Zeitdifferenzen dieser Zustände (Status) was einem Betriebstundenzaehler entspricht
                  • Berechnet Ölverbräuche/Pelletverbräuche/Stromverbräuche/Gas-und Wasserverbräuche in den jeweilgen Einheiten (z.B. KG, kwH, m3, EURO etc. Umrechnungen sind möglich
                  • Zeigt Werte kumuliert nach GESAMTWERT, TAG,Woche,MONAT,JAHR an
                  • Speichert Werte in Monats/Jahreshistorie
                  • Ermittelt Durchschnittswerte wie Durchschnittstemperaturen oder Durchschnittliche Einschaltzeiten
                  • hält erreichte Minimum und Maximum Werte fest
                  • Erzeugt Excel Dateien mit Änderungen von Datenpunkten
                  • Bietet alternativ zu Trigger auch eine schedule Funktion für Temperaturermittlugnen, Energieverbrauchsrechnungen etc.

                  und noch vieles mehr.

                  Da es so umfassend ist habe ich eine mehr oder weniger ausführliche Dokumentation als pdf format beigesteuert.

                  Betriebszeitenscript Version 1.02 22.11.2020 :
                  Betriebsstundenzaehler_102_published.txt

                  Hinweis zur Version 1.02

                  • Fehler bei Verwendung von Schedules behoben - Eine harte Scriptfehlermeldung wurde angezeit. JS version 4.10.4
                  • Die Version erlaubt beliebig viele Zeilen (bisher max 25) und auch weniger Zeilen. Die 3 Tabellen müssen immer die gleichen Anzahl von Zeilen haben

                  Die Datei sollte mit Notepad++ geoeffnet werden (freeware) und Zeilenumbrüche ausgeschaltet werden (Ansicht/automatischer Zeilenumbruch )sonst kann es unerwünschte Zeilenumbrüche geben

                  Dokumentation:
                  305_betriebszeitenerfassung3.pdf

                  vG Looxer

                  ScreenPrint Beispiele

                  hier der Stromverbrauch in Euro in kWh Heizung
                  305_bszoekofen.jpg

                  hier Durschnittstemperaturen Aussen ganztägig gemessen bzw. auch einmal am Tag
                  305_bsztemperaturen.jpg

                  hier mal eben zum Test des Harmony Adapters, um Disconnects zu zaehlen und auch die Zeit zu messen

                  Ergebnis der Messung eines Nachmittags. Der BSZ eignet sich also auch um Datenpunkte zu tracen:
                  305_bszharmony.jpg

                  sigi234S Online
                  sigi234S Online
                  sigi234
                  Forum Testing Most Active
                  wrote on last edited by sigi234
                  #313

                  @looxer01

                  Wo ist das aktuelle Skript?

                  Das ?

                  Betriebszeitenscript Version 0.99 30.12.2017 :
                  

                  Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                  Immer Daten sichern!

                  L 1 Reply Last reply
                  0
                  • sigi234S sigi234

                    @looxer01

                    Wo ist das aktuelle Skript?

                    Das ?

                    Betriebszeitenscript Version 0.99 30.12.2017 :
                    
                    L Offline
                    L Offline
                    looxer01
                    wrote on last edited by
                    #314

                    @sigi234
                    ja genau - jedenfalls das letzte veröffentlichte.

                    K ? 2 Replies Last reply
                    0
                    • L looxer01

                      @sigi234
                      ja genau - jedenfalls das letzte veröffentlichte.

                      K Offline
                      K Offline
                      knopers1
                      wrote on last edited by
                      #315

                      @looxer01

                      besten Dank, es läuft wieder alles wie gewohnt... 👍

                      HP Microserver Gen8, RPI-4, IoBroker,

                      1 Reply Last reply
                      0
                      • L looxer01

                        @sigi234
                        ja genau - jedenfalls das letzte veröffentlichte.

                        ? Offline
                        ? Offline
                        A Former User
                        wrote on last edited by
                        #316

                        @looxer01 sagte in [Vorlage] Generischer Betriebsstundenzähler und Verbrauchsrechner - Script:

                        @sigi234
                        ja genau - jedenfalls das letzte veröffentlichte.

                        erst mal danke für die Entwicklung deines Scripts 👏 , nutze es auch schon sehr lange.
                        Aktualisierst du die Version weiter, bzw. lässt du uns an deinen letzten Änderungen teilhaben??

                        Eigentlich funktioniert (noch) alles, deswegen nur mal so aus Neugier. 😉

                        L 1 Reply Last reply
                        0
                        • ? A Former User

                          @looxer01 sagte in [Vorlage] Generischer Betriebsstundenzähler und Verbrauchsrechner - Script:

                          @sigi234
                          ja genau - jedenfalls das letzte veröffentlichte.

                          erst mal danke für die Entwicklung deines Scripts 👏 , nutze es auch schon sehr lange.
                          Aktualisierst du die Version weiter, bzw. lässt du uns an deinen letzten Änderungen teilhaben??

                          Eigentlich funktioniert (noch) alles, deswegen nur mal so aus Neugier. 😉

                          L Offline
                          L Offline
                          looxer01
                          wrote on last edited by looxer01
                          #317

                          @telekom0815
                          Hi,
                          Dann scheint das Script ja hier und da noch im Einsatz zu sein.

                          Also, was ich gemacht habe ist, die 25 Zeilen Begrenzung aufzuheben.
                          Es geht also eine Kürzung auf die erforderliche Anzahl von Zeilen der 3 Tabellen.
                          Genauso lassen sich mehr als 25 Zeilen einstellen.

                          Ich schau mir das mal an und beseitige den Fehler bezüglicher der schedules (kam mit dem letzten JS update)
                          und veröffentliche dann eine aktualisierte Version.
                          Kann aber noch 1-2 Wochen dauern.

                          Liebe Grüße
                          Looxer

                          K 1 Reply Last reply
                          0
                          • L looxer01

                            @telekom0815
                            Hi,
                            Dann scheint das Script ja hier und da noch im Einsatz zu sein.

                            Also, was ich gemacht habe ist, die 25 Zeilen Begrenzung aufzuheben.
                            Es geht also eine Kürzung auf die erforderliche Anzahl von Zeilen der 3 Tabellen.
                            Genauso lassen sich mehr als 25 Zeilen einstellen.

                            Ich schau mir das mal an und beseitige den Fehler bezüglicher der schedules (kam mit dem letzten JS update)
                            und veröffentliche dann eine aktualisierte Version.
                            Kann aber noch 1-2 Wochen dauern.

                            Liebe Grüße
                            Looxer

                            K Offline
                            K Offline
                            knopers1
                            wrote on last edited by
                            #318

                            @looxer01
                            geil, ich freu mich drauf... ich nutze Dein Script auch schon eine halbe Ewigkeit!

                            HP Microserver Gen8, RPI-4, IoBroker,

                            L 1 Reply Last reply
                            0
                            • K knopers1

                              @looxer01
                              geil, ich freu mich drauf... ich nutze Dein Script auch schon eine halbe Ewigkeit!

                              L Offline
                              L Offline
                              looxer01
                              wrote on last edited by
                              #319

                              @knopers1
                              Script Version 1.02. ist hochgeladen.

                              sigi234S ? 2 Replies Last reply
                              0
                              • L looxer01

                                @knopers1
                                Script Version 1.02. ist hochgeladen.

                                sigi234S Online
                                sigi234S Online
                                sigi234
                                Forum Testing Most Active
                                wrote on last edited by
                                #320

                                @looxer01 sagte in [Vorlage] Betriebsstundenzähler & Verbrauchsrechner:

                                @knopers1
                                Script Version 1.02. ist hochgeladen.

                                Kannst du das anpassen , verwirrt mich immer.

                                /*..........Betriebsstundenzaehler BSZ Extended Version 0.99
                                ............Datum: 04.02.2016
                                ............Autor: Looxer01
                                ............Forum ioBroker
                                

                                Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                Immer Daten sichern!

                                L 1 Reply Last reply
                                0
                                • sigi234S sigi234

                                  @looxer01 sagte in [Vorlage] Betriebsstundenzähler & Verbrauchsrechner:

                                  @knopers1
                                  Script Version 1.02. ist hochgeladen.

                                  Kannst du das anpassen , verwirrt mich immer.

                                  /*..........Betriebsstundenzaehler BSZ Extended Version 0.99
                                  ............Datum: 04.02.2016
                                  ............Autor: Looxer01
                                  ............Forum ioBroker
                                  
                                  L Offline
                                  L Offline
                                  looxer01
                                  wrote on last edited by
                                  #321

                                  @sigi234
                                  erledigt

                                  1 Reply Last reply
                                  1
                                  • K Offline
                                    K Offline
                                    Kampfratte
                                    wrote on last edited by
                                    #322

                                    Habe das Update gerade eingepflegt. Bis jetzt keine Auffälligkeiten festgestellt.

                                    Hätte aber mal eine Frage an @looxer01
                                    Das Script zählt ja, wenn ein Gerät an ist, auch über Nacht. Also wenn ein Gerät um 22 Uhr abends eingeschalten wird und morgens dann um 4 Uhr wieder aus. Da schreibt das Script dann für heute 6 Std. Laufzeit rein. Ich hätte es aber lieber, wenn das Script in so einem Falle dann 2 Std. gestern und 4 Std. heute notiert. Also, dass das Script nachts um 0 Uhr die Geräte, die an sind, die Laufzeit des gestrigen Tages bis 0 Uhr auch nach gestern schreibt und dann um 0 Uhr neu anfängt zu zählen. Habe mich daran schon selbst versucht, bin aber bisher kläglich gescheitert.

                                    Lg Uwe

                                    L 1 Reply Last reply
                                    0
                                    • K Kampfratte

                                      Habe das Update gerade eingepflegt. Bis jetzt keine Auffälligkeiten festgestellt.

                                      Hätte aber mal eine Frage an @looxer01
                                      Das Script zählt ja, wenn ein Gerät an ist, auch über Nacht. Also wenn ein Gerät um 22 Uhr abends eingeschalten wird und morgens dann um 4 Uhr wieder aus. Da schreibt das Script dann für heute 6 Std. Laufzeit rein. Ich hätte es aber lieber, wenn das Script in so einem Falle dann 2 Std. gestern und 4 Std. heute notiert. Also, dass das Script nachts um 0 Uhr die Geräte, die an sind, die Laufzeit des gestrigen Tages bis 0 Uhr auch nach gestern schreibt und dann um 0 Uhr neu anfängt zu zählen. Habe mich daran schon selbst versucht, bin aber bisher kläglich gescheitert.

                                      Lg Uwe

                                      L Offline
                                      L Offline
                                      looxer01
                                      wrote on last edited by looxer01
                                      #323

                                      @Kampfratte sagte in [Vorlage] Betriebsstundenzähler & Verbrauchsrechner:

                                      Das Script zählt ja, wenn ein Gerät an ist, auch über Nacht. Also wenn ein Gerät um 22 Uhr abends eingeschalten wird und morgens dann um 4 Uhr wieder aus. Da schreibt das Script dann für heute 6 Std. Laufzeit rein.

                                      Da hast du recht so ist es programmiert. Ich hatte nie darüber nachgedacht, dass das störend sein könnte.
                                      Ein Einbau wäre aufwändig aber möglich. Dazu müßte beim Tageswechsel ermittelt werden welche Zählungen aktuell laufen. Laufende Zählungen müssen dann im Tag/woche/Jahr abgespeichert werden und der Stand für den neuen Tag weiterlaufen.
                                      Allerdings schaffe ich das zeitlich einfach nicht :(

                                      lG Looxer

                                      K 1 Reply Last reply
                                      0
                                      • L looxer01

                                        @knopers1
                                        Script Version 1.02. ist hochgeladen.

                                        ? Offline
                                        ? Offline
                                        A Former User
                                        wrote on last edited by
                                        #324

                                        @looxer01 sagte in [Vorlage] Betriebsstundenzähler & Verbrauchsrechner:

                                        @knopers1
                                        Script Version 1.02. ist hochgeladen.

                                        Hallo,
                                        muss ich eigentlich alles neu eingeben, oder reicht es, wenn ich ab Zeile xxx alles aktualisiere. Wenn dem so sein sollte, ab welcher Zeile muss ich es erneuern.

                                        Danke

                                        L 1 Reply Last reply
                                        0
                                        • ? A Former User

                                          @looxer01 sagte in [Vorlage] Betriebsstundenzähler & Verbrauchsrechner:

                                          @knopers1
                                          Script Version 1.02. ist hochgeladen.

                                          Hallo,
                                          muss ich eigentlich alles neu eingeben, oder reicht es, wenn ich ab Zeile xxx alles aktualisiere. Wenn dem so sein sollte, ab welcher Zeile muss ich es erneuern.

                                          Danke

                                          L Offline
                                          L Offline
                                          looxer01
                                          wrote on last edited by
                                          #325

                                          @telekom0815 sagte in [Vorlage] Betriebsstundenzähler & Verbrauchsrechner:

                                          muss ich eigentlich alles neu eingeben, oder reicht es, wenn ich ab Zeile xxx alles aktualisiere. Wenn dem so sein sollte, ab welcher Zeile muss ich es erneuern.

                                          Ich gehe davon aus, dass du Version >= 0.99 nutzt.
                                          Dann sollte es reichen wenn du den Coding Teil ersetzt.
                                          Die Zeilennummer kann ich dir nicht genau sagen aber der Orientierungspunkt ist diese Stelle

                                          /* Ende Experten-Einstellungen .......................................................................................................
                                          --------------------------------------------------------------------------------------------------------------------------------------*/

                                          Darüberhinaus kanns du die Anzahl der Tabellenzeilen auf die notwendigen Zeilen begrenzen.
                                          Alle 3 Tabellen müssen aber die gleichen Anzahl von Zeilen haben.
                                          Tabelle Gruppen, logname und specials müssen also die gleiche Zeilenanzahl haben.

                                          vG Looxer

                                          1 Reply Last reply
                                          0

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          294

                                          Online

                                          32.8k

                                          Users

                                          82.7k

                                          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