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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

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

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    477

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

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

[Vorlage] Betriebsstundenzähler & Verbrauchsrechner

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
333 Beiträge 51 Kommentatoren 93.6k Aufrufe 26 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A andi2055

    @etv
    falls noch nicht bekannt: mit JS >=4.6.1 funktioniert es. Habe ich gerade getestet
    var sysLocation = "0_userdata.0.BSZ.System";

    etvE Offline
    etvE Offline
    etv
    schrieb am zuletzt editiert von
    #302

    @andi2055 , ja danke dir hab ich gelesen.

    Ich hab mich in der Zwischenzeit daran "gewöhnt", dass diese Werte wo anders zu finden sind :blush:

    Liebe Grüße
    Tom

    …ist schon sehr lange begeisterter ioBroker Nutzer! 1x zu Hause und 1x auf der Alm. ioBroker ist das 'Hirn' des Smarthome und steuert HomeMatic und Shellys, loggt was so passiert, zeigt es auf Tabletts schön an und ermöglicht mir via Cloud Adapter den Fernzugriff...

    1 Antwort Letzte Antwort
    0
    • NegaleinN Offline
      NegaleinN Offline
      Negalein
      Global Moderator
      schrieb am zuletzt editiert von Negalein
      #303

      Da es mit dem BSZ unteranderem das WEEK.BEFORE gibt, hab ich mal das Script mit der Anleitung umzusetzen versucht.

      EDIT: Problem gelöst 😊

      ° Node.js: 20.17.0 NPM: 10.8.2
      ° Proxmox, Ubuntu 22.04.3 LTS
      ° Fixer ---> iob fix

      1 Antwort Letzte Antwort
      0
      • K Offline
        K Offline
        Kampfratte
        schrieb am zuletzt editiert von
        #304

        Hallo

        Seit dem Update auf Script-Engine 4.10.1 bekomme ich folgende Fehlermeldungen. Mit der vorigen Version lief alles noch.

        Unbenannt.png

        ? 1 Antwort Letzte Antwort
        0
        • K Kampfratte

          Hallo

          Seit dem Update auf Script-Engine 4.10.1 bekomme ich folgende Fehlermeldungen. Mit der vorigen Version lief alles noch.

          Unbenannt.png

          ? Offline
          ? Offline
          Ein ehemaliger Benutzer
          schrieb am zuletzt editiert von
          #305

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

          K 1 Antwort Letzte Antwort
          0
          • ? Ein ehemaliger Benutzer

            @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
            schrieb am zuletzt editiert von
            #306

            @ilovegym

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

            HP Microserver Gen8, RPI-4, IoBroker,

            K 1 Antwort Letzte Antwort
            0
            • K knopers1

              @ilovegym

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

              K Offline
              K Offline
              knopers1
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von
                      #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 :astonished:

                      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 Antwort Letzte Antwort
                      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 :astonished:

                        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
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        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
                          schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                          0
                          • sigi234S sigi234

                            @looxer01

                            Wo ist das aktuelle Skript?

                            Das ?

                            Betriebszeitenscript Version 0.99 30.12.2017 :
                            
                            L Offline
                            L Offline
                            looxer01
                            schrieb am zuletzt editiert von
                            #314

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

                            K ? 2 Antworten Letzte Antwort
                            0
                            • L looxer01

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

                              K Offline
                              K Offline
                              knopers1
                              schrieb am zuletzt editiert von
                              #315

                              @looxer01

                              besten Dank, es läuft wieder alles wie gewohnt... :+1:

                              HP Microserver Gen8, RPI-4, IoBroker,

                              1 Antwort Letzte Antwort
                              0
                              • L looxer01

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

                                ? Offline
                                ? Offline
                                Ein ehemaliger Benutzer
                                schrieb am zuletzt editiert von
                                #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 :clap: , 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. :wink:

                                L 1 Antwort Letzte Antwort
                                0
                                • ? Ein ehemaliger Benutzer

                                  @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 :clap: , 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. :wink:

                                  L Offline
                                  L Offline
                                  looxer01
                                  schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                  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
                                    schrieb am zuletzt editiert von
                                    #318

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

                                    HP Microserver Gen8, RPI-4, IoBroker,

                                    L 1 Antwort Letzte Antwort
                                    0
                                    • K knopers1

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

                                      L Offline
                                      L Offline
                                      looxer01
                                      schrieb am zuletzt editiert von
                                      #319

                                      @knopers1
                                      Script Version 1.02. ist hochgeladen.

                                      sigi234S ? 2 Antworten Letzte Antwort
                                      0
                                      • L looxer01

                                        @knopers1
                                        Script Version 1.02. ist hochgeladen.

                                        sigi234S Online
                                        sigi234S Online
                                        sigi234
                                        Forum Testing Most Active
                                        schrieb am zuletzt editiert von
                                        #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 Antwort Letzte Antwort
                                        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
                                          schrieb am zuletzt editiert von
                                          #321

                                          @sigi234
                                          erledigt

                                          1 Antwort Letzte Antwort
                                          1
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          540

                                          Online

                                          32.5k

                                          Benutzer

                                          81.8k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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