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

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

Community Forum

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

NEWS

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

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

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

[Vorlage] Betriebsstundenzähler & Verbrauchsrechner

Scheduled Pinned Locked Moved Skripten / Logik
javascript
333 Posts 51 Posters 98.7k Views 26 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A ahfreezer

    Hi Loxxer,

    versuche zum 3. Mal das Skript ans Laufen zu bekommen. Außer zig Fehlermeldungen passiert haber nichts.

    Ich nutze ein HM Türsensor um den Gasverbrauch zu messen.
    Den Sensor habe ich wie folgt im Skript hinterlegt.

    Mehr Daten habe ich im Skript nicht geändert.

    var Gruppen = [];
    //              1.Homematic ID,                    2.Thema(no spaces)                    3.History  4.DAY  5.Week  6.Month 7.Year  8.Switch   9 - 18 Status to log                                                         19.stop 20.Loesch
    Gruppen[ 0]  = ['hm-rpc.0.NEQ1678963'                    ,'HM_Gas_ping'                      ,true  ,true  ,true  ,true    ,true  ,true      ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
    
    
    var logname = [];
    //              Stat1           Stat2       Stat3       Stat4               Stat5       Stat6       Stat7       Stat8   Stat9   Stat10
    logname[0]  =   ['Zaehler'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
    
    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'     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 , ''     ]; 
    
    

    Ich bekomme folgende Fehlermeldung wenn ich das Skript starte:

    18.3.2019, 08:19:59.930	[info ]: javascript.0 Stop script script.js.common.Testskripte.Betriebsstundenzähler
    18.3.2019, 08:20:04.207	[info ]: javascript.0 Start javascript script.js.common.Testskripte.Betriebsstundenzähler
    18.3.2019, 08:20:04.208	[error]: javascript.0 script.js.common.Testskripte.Betriebsstundenzähler compile failed:
    at script.js.common.Testskripte.Betriebsstundenzähler:293
    

    Mein Log von ioBroker überschlägt sich dann

    javascript.0	2019-03-18 08:24:27.948	error	at TCP.onread (net.js:559:20)
    javascript.0	2019-03-18 08:24:27.947	error	at Socket.Readable.push (_stream_readable.js:134:10)
    javascript.0	2019-03-18 08:24:27.947	error	at readableAddChunk (_stream_readable.js:176:18)
    javascript.0	2019-03-18 08:24:27.947	error	at Socket.emit (events.js:188:7)
    javascript.0	2019-03-18 08:24:27.946	error	at emitOne (events.js:96:13)
    javascript.0	2019-03-18 08:24:27.946	error	at Socket.realHandler (/opt/iobroker/node_modules/ws/lib/WebSocket.js:825:20)
    javascript.0	2019-03-18 08:24:27.946	error	at Receiver.add (/opt/iobroker/node_modules/ws/lib/Receiver.js:103:24)
    javascript.0	2019-03-18 08:24:27.945	error	at Receiver.expectHandler (/opt/iobroker/node_modules/ws/lib/Receiver.js:499:31)
    javascript.0	2019-03-18 08:24:27.945	error	at Receiver.finish (/opt/iobroker/node_modules/ws/lib/Receiver.js:541:12)
    javascript.0	2019-03-18 08:24:27.944	error	at Receiver.flush (/opt/iobroker/node_modules/ws/lib/Receiver.js:347:3)
    javascript.0	2019-03-18 08:24:27.944	error	at /opt/iobroker/node_modules/ws/lib/Receiver.js:508:14
    javascript.0	2019-03-18 08:24:27.943	error	at Receiver.applyExtensions (/opt/iobroker/node_modules/ws/lib/Receiver.js:371:5)
    javascript.0	2019-03-18 08:24:27.943	error	at /opt/iobroker/node_modules/ws/lib/Receiver.js:536:18
    javascript.0	2019-03-18 08:24:27.942	error	at Receiver.ontext (/opt/iobroker/node_modules/ws/lib/WebSocket.js:841:10)
    javascript.0	2019-03-18 08:24:27.942	error	at WebSocket.emit (events.js:191:7)
    javascript.0	2019-03-18 08:24:27.942	error	at emitTwo (events.js:106:13)
    javascript.0	2019-03-18 08:24:27.941	error	at WebSocket.onMessage (/opt/iobroker/node_modules/ws/lib/WebSocket.js:442:14)
    javascript.0	2019-03-18 08:24:27.941	error	at WebSocket.ws.onmessage (/opt/iobroker/node_modules/engine.io-client/lib/transports/websocket.js:146:10)
    javascript.0	2019-03-18 08:24:27.940	error	at WS.Transport.onData (/opt/iobroker/node_modules/engine.io-client/lib/transport.js:137:8)
    javascript.0	2019-03-18 08:24:27.940	error	at WS.Transport.onPacket (/opt/iobroker/node_modules/engine.io-client/lib/transport.js:145:8)
    javascript.0	2019-03-18 08:24:27.939	error	at WS.Emitter.emit (/opt/iobroker/node_modules/engine.io-client/node_modules/component-emitter/index.js:133:20)
    javascript.0	2019-03-18 08:24:27.939	error	at WS.<anonymous> (/opt/iobroker/node_modules/engine.io-client/lib/socket.js:268:10)
    javascript.0	2019-03-18 08:24:27.938	error	at Socket.onPacket (/opt/iobroker/node_modules/engine.io-client/lib/socket.js:451:14)
    javascript.0	2019-03-18 08:24:27.938	error	at Socket.Emitter.emit (/opt/iobroker/node_modules/engine.io-client/node_modules/component-emitter/index.js:133:20)
    javascript.0	2019-03-18 08:24:27.937	error	at Socket.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
    javascript.0	2019-03-18 08:24:27.937	error	at Manager.ondata (/opt/iobroker/node_modules/socket.io-client/lib/manager.js:322:16)
    javascript.0	2019-03-18 08:24:27.936	error	at Decoder.add (/opt/iobroker/node_modules/socket.io-parser/index.js:246:12)
    javascript.0	2019-03-18 08:24:27.936	error	at Decoder.Emitter.emit (/opt/iobroker/node_modules/component-emitter/index.js:134:20)
    javascript.0	2019-03-18 08:24:27.935	error	at Decoder.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
    javascript.0	2019-03-18 08:24:27.935	error	at Manager.ondecoded (/opt/iobroker/node_modules/socket.io-client/lib/manager.js:332:8)
    javascript.0	2019-03-18 08:24:27.935	error	at Manager.Emitter.emit (/opt/iobroker/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
    javascript.0	2019-03-18 08:24:27.934	error	at Manager.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
    javascript.0	2019-03-18 08:24:27.934	error	at Socket.onpacket (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:236:12)
    javascript.0	2019-03-18 08:24:27.933	error	at Socket.onack (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:312:9)
    javascript.0	2019-03-18 08:24:27.933	error	at Socket.adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:745:17)
    javascript.0	2019-03-18 08:24:27.932	error	at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1123:17)
    javascript.0	2019-03-18 08:24:27.932	error	at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1070:37)
    javascript.0	2019-03-18 08:24:27.931	error	at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:878:28)
    javascript.0	2019-03-18 08:24:27.931	error	at Object.createScript (vm.js:56:10)
    javascript.0	2019-03-18 08:24:27.931	error	SyntaxError: Unexpected token ;
    javascript.0	2019-03-18 08:24:27.930	error	zaehler &lt; zaehler_array; zaehler++) { // addiere eins für jeden Druchgang zaehler2 = addZero(zaehler).zero2; // fuehrende Null // zusammenbauen von // /BSZ/SYSTEM/GRP00KUM = Kumuliert
    javascript.0	2019-03-18 08:24:27.929	error	at script.js.common.Testskripte.Betriebsstundenzaehler:293
    javascript.0	2019-03-18 08:24:27.929	error	script.js.common.Testskripte.Betriebsstundenzaehler compile failed:
    

    Kannst du mir weiterhelfen? Ich würde vermuten, es ist ne Kleinigkeit die ich hier falsch mache...ich komme nur leider nicht drauf.

    Gruß
    André

    K Offline
    K Offline
    Kalle
    wrote on last edited by
    #297

    @ahfreezer Moin, hast du zu diesem Problem eine Lösung gefunden? Habe diese Fehlermeldung und sehr ähnliche Logeinträge seit gestern bei allen Scripten?
    LG Marcel

    1 Reply Last reply
    0
    • A ahfreezer

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

      Hi Loxxer,

      versuche zum 3. Mal das Skript ans Laufen zu bekommen. Außer zig Fehlermeldungen passiert haber nichts.

      Ich nutze ein HM Türsensor um den Gasverbrauch zu messen.
      Den Sensor habe ich wie folgt im Skript hinterlegt.

      Mehr Daten habe ich im Skript nicht geändert.

      var Gruppen = [];
      //              1.Homematic ID,                    2.Thema(no spaces)                    3.History  4.DAY  5.Week  6.Month 7.Year  8.Switch   9 - 18 Status to log                                                         19.stop 20.Loesch
      Gruppen[ 0]  = ['hm-rpc.0.NEQ1678963'                    ,'HM_Gas_ping'                      ,true  ,true  ,true  ,true    ,true  ,true      ,''      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
      
      
      var logname = [];
      //              Stat1           Stat2       Stat3       Stat4               Stat5       Stat6       Stat7       Stat8   Stat9   Stat10
      logname[0]  =   ['Zaehler'      ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
      
      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'     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 , ''     ]; 
      
      

      Ich bekomme folgende Fehlermeldung wenn ich das Skript starte:

      18.3.2019, 08:19:59.930	[info ]: javascript.0 Stop script script.js.common.Testskripte.Betriebsstundenzähler
      18.3.2019, 08:20:04.207	[info ]: javascript.0 Start javascript script.js.common.Testskripte.Betriebsstundenzähler
      18.3.2019, 08:20:04.208	[error]: javascript.0 script.js.common.Testskripte.Betriebsstundenzähler compile failed:
      at script.js.common.Testskripte.Betriebsstundenzähler:293
      

      Mein Log von ioBroker überschlägt sich dann

      javascript.0	2019-03-18 08:24:27.948	error	at TCP.onread (net.js:559:20)
      javascript.0	2019-03-18 08:24:27.947	error	at Socket.Readable.push (_stream_readable.js:134:10)
      javascript.0	2019-03-18 08:24:27.947	error	at readableAddChunk (_stream_readable.js:176:18)
      javascript.0	2019-03-18 08:24:27.947	error	at Socket.emit (events.js:188:7)
      javascript.0	2019-03-18 08:24:27.946	error	at emitOne (events.js:96:13)
      javascript.0	2019-03-18 08:24:27.946	error	at Socket.realHandler (/opt/iobroker/node_modules/ws/lib/WebSocket.js:825:20)
      javascript.0	2019-03-18 08:24:27.946	error	at Receiver.add (/opt/iobroker/node_modules/ws/lib/Receiver.js:103:24)
      javascript.0	2019-03-18 08:24:27.945	error	at Receiver.expectHandler (/opt/iobroker/node_modules/ws/lib/Receiver.js:499:31)
      javascript.0	2019-03-18 08:24:27.945	error	at Receiver.finish (/opt/iobroker/node_modules/ws/lib/Receiver.js:541:12)
      javascript.0	2019-03-18 08:24:27.944	error	at Receiver.flush (/opt/iobroker/node_modules/ws/lib/Receiver.js:347:3)
      javascript.0	2019-03-18 08:24:27.944	error	at /opt/iobroker/node_modules/ws/lib/Receiver.js:508:14
      javascript.0	2019-03-18 08:24:27.943	error	at Receiver.applyExtensions (/opt/iobroker/node_modules/ws/lib/Receiver.js:371:5)
      javascript.0	2019-03-18 08:24:27.943	error	at /opt/iobroker/node_modules/ws/lib/Receiver.js:536:18
      javascript.0	2019-03-18 08:24:27.942	error	at Receiver.ontext (/opt/iobroker/node_modules/ws/lib/WebSocket.js:841:10)
      javascript.0	2019-03-18 08:24:27.942	error	at WebSocket.emit (events.js:191:7)
      javascript.0	2019-03-18 08:24:27.942	error	at emitTwo (events.js:106:13)
      javascript.0	2019-03-18 08:24:27.941	error	at WebSocket.onMessage (/opt/iobroker/node_modules/ws/lib/WebSocket.js:442:14)
      javascript.0	2019-03-18 08:24:27.941	error	at WebSocket.ws.onmessage (/opt/iobroker/node_modules/engine.io-client/lib/transports/websocket.js:146:10)
      javascript.0	2019-03-18 08:24:27.940	error	at WS.Transport.onData (/opt/iobroker/node_modules/engine.io-client/lib/transport.js:137:8)
      javascript.0	2019-03-18 08:24:27.940	error	at WS.Transport.onPacket (/opt/iobroker/node_modules/engine.io-client/lib/transport.js:145:8)
      javascript.0	2019-03-18 08:24:27.939	error	at WS.Emitter.emit (/opt/iobroker/node_modules/engine.io-client/node_modules/component-emitter/index.js:133:20)
      javascript.0	2019-03-18 08:24:27.939	error	at WS.<anonymous> (/opt/iobroker/node_modules/engine.io-client/lib/socket.js:268:10)
      javascript.0	2019-03-18 08:24:27.938	error	at Socket.onPacket (/opt/iobroker/node_modules/engine.io-client/lib/socket.js:451:14)
      javascript.0	2019-03-18 08:24:27.938	error	at Socket.Emitter.emit (/opt/iobroker/node_modules/engine.io-client/node_modules/component-emitter/index.js:133:20)
      javascript.0	2019-03-18 08:24:27.937	error	at Socket.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
      javascript.0	2019-03-18 08:24:27.937	error	at Manager.ondata (/opt/iobroker/node_modules/socket.io-client/lib/manager.js:322:16)
      javascript.0	2019-03-18 08:24:27.936	error	at Decoder.add (/opt/iobroker/node_modules/socket.io-parser/index.js:246:12)
      javascript.0	2019-03-18 08:24:27.936	error	at Decoder.Emitter.emit (/opt/iobroker/node_modules/component-emitter/index.js:134:20)
      javascript.0	2019-03-18 08:24:27.935	error	at Decoder.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
      javascript.0	2019-03-18 08:24:27.935	error	at Manager.ondecoded (/opt/iobroker/node_modules/socket.io-client/lib/manager.js:332:8)
      javascript.0	2019-03-18 08:24:27.935	error	at Manager.Emitter.emit (/opt/iobroker/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20)
      javascript.0	2019-03-18 08:24:27.934	error	at Manager.<anonymous> (/opt/iobroker/node_modules/component-bind/index.js:21:15)
      javascript.0	2019-03-18 08:24:27.934	error	at Socket.onpacket (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:236:12)
      javascript.0	2019-03-18 08:24:27.933	error	at Socket.onack (/opt/iobroker/node_modules/socket.io-client/lib/socket.js:312:9)
      javascript.0	2019-03-18 08:24:27.933	error	at Socket.adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:745:17)
      javascript.0	2019-03-18 08:24:27.932	error	at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1123:17)
      javascript.0	2019-03-18 08:24:27.932	error	at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1070:37)
      javascript.0	2019-03-18 08:24:27.931	error	at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:878:28)
      javascript.0	2019-03-18 08:24:27.931	error	at Object.createScript (vm.js:56:10)
      javascript.0	2019-03-18 08:24:27.931	error	SyntaxError: Unexpected token ;
      javascript.0	2019-03-18 08:24:27.930	error	zaehler &lt; zaehler_array; zaehler++) { // addiere eins für jeden Druchgang zaehler2 = addZero(zaehler).zero2; // fuehrende Null // zusammenbauen von // /BSZ/SYSTEM/GRP00KUM = Kumuliert
      javascript.0	2019-03-18 08:24:27.929	error	at script.js.common.Testskripte.Betriebsstundenzaehler:293
      javascript.0	2019-03-18 08:24:27.929	error	script.js.common.Testskripte.Betriebsstundenzaehler compile failed:
      

      Kannst du mir weiterhelfen? Ich würde vermuten, es ist ne Kleinigkeit die ich hier falsch mache...ich komme nur leider nicht drauf.

      Gruß
      André

      @looxer01 : kleiner Ping hier im Thread. Vlt. eine Idee an welcher Stelle ich den Betriebsstundenzähler falsch konfiguriert habe?

      VG

      dsiggiD Offline
      dsiggiD Offline
      dsiggi
      wrote on last edited by dsiggi
      #298

      @ahfreezer @Kalle

      Ich denke ihr habt vergessen im Array "Gruppen" etwas für den Status zu setzten. Hier muss mindestens eines der Felder 9-18 befüllt sein. Im Biespiel von @ahfreezer müsste die Zeile so aussehen:

      var Gruppen = [];
      //              1.Homematic ID,                    2.Thema(no spaces)                    3.History  4.DAY  5.Week  6.Month 7.Year  8.Switch   9 - 18 Status to log                                                         19.stop 20.Loesch
      Gruppen[ 0]  = ['hm-rpc.0.NEQ1678963'                    ,'HM_Gas_ping'                      ,true  ,true  ,true  ,true    ,true  ,true      ,'true'      ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; //
      

      Wo bei das true natürlich passend ersetzt werden muss. (Siehe die Beschreibung des Punktes)

      Gruß,
      dsiggi

      1 Reply Last reply
      0
      • L looxer01

        @Leon2079:

        Aber ich finde unter Objekte unter javascript nur den Dateinamen BSZ mehr nicht. Wenn ich euere Screenshots so anschaue müsste dort eine menge stehen. `
        Hi,

        kannst du dein Programm posten oder per PN schicken ? Ich schaue es mir an.

        vG looxer

        M Offline
        M Offline
        Mischa
        wrote on last edited by
        #299

        @looxer01
        Hallo,

        ich habe heute iobroker auf einem Raspberry Pi 4 neu installiert und bin verzweifelt auf der Suche wie ich die historischen Daten des BSZ übertragen kann.
        Hat jemand eine Ahnung in welcher Datei diese Daten zu finden sind?

        Danke vorab!

        1 Reply Last reply
        0
        • etvE Offline
          etvE Offline
          etv
          wrote on last edited by
          #300

          Liebe Leute,

          eine Frage hab ich zu dem Pfad der Daten. Die liegen ja unter javascript.0. und dann die Pfade die man ja eintragen kann.

          Wie bekomm' ich meine Objekte in den Ordner "0_userdata.0."??

          Dort liegen bei meiner neuen Installation alle selbst generierten Infos drinnen und da würde ich auch gerne die BSZ Daten drinnen haben, nur bekomm' ich den Pfad nicht von javascript.0. weg....

          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...

          A 1 Reply Last reply
          0
          • etvE etv

            Liebe Leute,

            eine Frage hab ich zu dem Pfad der Daten. Die liegen ja unter javascript.0. und dann die Pfade die man ja eintragen kann.

            Wie bekomm' ich meine Objekte in den Ordner "0_userdata.0."??

            Dort liegen bei meiner neuen Installation alle selbst generierten Infos drinnen und da würde ich auch gerne die BSZ Daten drinnen haben, nur bekomm' ich den Pfad nicht von javascript.0. weg....

            Liebe Grüße
            Tom

            A Offline
            A Offline
            andi2055
            wrote on last edited by
            #301

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

            etvE 1 Reply Last reply
            1
            • 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
              wrote on last edited by
              #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 😊

              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 Reply Last reply
              0
              • NegaleinN Offline
                NegaleinN Offline
                Negalein
                Global Moderator
                wrote on last edited by 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 & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                ° Node.js Fixer ---> iob nodejs-update
                ° Fixer ---> iob fix

                1 Reply Last reply
                0
                • K Offline
                  K Offline
                  Kampfratte
                  wrote on last edited by
                  #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 Reply Last reply
                  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
                    A Former User
                    wrote on last edited by
                    #305

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

                    K 1 Reply Last reply
                    0
                    • ? A Former User

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

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

                      @ilovegym

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

                      HP Microserver Gen8, RPI-4, IoBroker,

                      K 1 Reply Last reply
                      0
                      • K knopers1

                        @ilovegym

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

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

                        @looxer01

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

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

                        HP Microserver Gen8, RPI-4, IoBroker,

                        L 1 Reply Last reply
                        0
                        • K knopers1

                          @looxer01

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

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

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

                          vG Looxer

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

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

                            vG Looxer

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

                            @looxer01

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

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

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

                            HP Microserver Gen8, RPI-4, IoBroker,

                            L 1 Reply Last reply
                            0
                            • K knopers1

                              @looxer01

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

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

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

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

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

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

                              vG Looxer

                              K 1 Reply Last reply
                              0
                              • L looxer01

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

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

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

                                vG Looxer

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

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

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

                                var special = [];
                                //             1.Round 2.add1   3.Faktor                4. Divisor  5.add2  6.Individuallogik  7: DELTA(M)Grenze    8.Warten auf Bestaetigung  9.Durchschnitt - 10.Zaehlschwelle     11 Schedule    12. Min/MAX     13. MehrfachStatus  14. Selektives Logging
                                special[0]  =   ['2'    ,''     ,''                     ,''         ,''     ,''                 ,''                 ,'false'                    ,''             ,''             ,''                 ,''             ,''                 , ''     ]; 
                                special[1]  =   ['2'    ,''     ,'11.432'               ,''         ,''     ,''                 ,''                 ,'false'                    ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                special[2]  =   ['9'     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,'false'                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                special[3]  =   ['9'     ,''     ,'625'                     ,'1000'         ,''     ,''                 ,''                 ,'false'                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                special[4]  =   ['2'     ,''     ,'10.43'                     ,'1000'         ,''     ,''                 ,''                 ,'false'                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                special[5]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 , ''     ];
                                special[6]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                special[7]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                special[8]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                special[9]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                special[10] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                special[11] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                special[12] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                special[13] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                special[14]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                special[15]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                special[16]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                special[17]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                special[18]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                special[19]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 , ''     ];
                                special[20]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                special[21]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                special[22]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                special[23]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                special[24]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                special[25]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                
                                

                                HP Microserver Gen8, RPI-4, IoBroker,

                                L 1 Reply Last reply
                                0
                                • K knopers1

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

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

                                  var special = [];
                                  //             1.Round 2.add1   3.Faktor                4. Divisor  5.add2  6.Individuallogik  7: DELTA(M)Grenze    8.Warten auf Bestaetigung  9.Durchschnitt - 10.Zaehlschwelle     11 Schedule    12. Min/MAX     13. MehrfachStatus  14. Selektives Logging
                                  special[0]  =   ['2'    ,''     ,''                     ,''         ,''     ,''                 ,''                 ,'false'                    ,''             ,''             ,''                 ,''             ,''                 , ''     ]; 
                                  special[1]  =   ['2'    ,''     ,'11.432'               ,''         ,''     ,''                 ,''                 ,'false'                    ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                  special[2]  =   ['9'     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,'false'                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                  special[3]  =   ['9'     ,''     ,'625'                     ,'1000'         ,''     ,''                 ,''                 ,'false'                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                  special[4]  =   ['2'     ,''     ,'10.43'                     ,'1000'         ,''     ,''                 ,''                 ,'false'                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                  special[5]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 , ''     ];
                                  special[6]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                  special[7]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                  special[8]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                  special[9]  =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                  special[10] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                  special[11] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                  special[12] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ]; 
                                  special[13] =   [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                  special[14]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                  special[15]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                  special[16]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                  special[17]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                  special[18]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                  special[19]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 , ''     ];
                                  special[20]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                  special[21]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                  special[22]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                  special[23]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                  special[24]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                  special[25]  =  [''     ,''     ,''                     ,''         ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,''      ];
                                  
                                  
                                  L Offline
                                  L Offline
                                  looxer01
                                  wrote on last edited by
                                  #312

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

                                  vG Looxer

                                  1 Reply Last reply
                                  0
                                  • L looxer01

                                    Hi,

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

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

                                    und noch vieles mehr.

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

                                    Betriebszeitenscript Version 1.02 22.11.2020 :
                                    Betriebsstundenzaehler_102_published.txt

                                    Hinweis zur Version 1.02

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

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

                                    Dokumentation:
                                    305_betriebszeitenerfassung3.pdf

                                    vG Looxer

                                    ScreenPrint Beispiele

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

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

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

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

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

                                    @looxer01

                                    Wo ist das aktuelle Skript?

                                    Das ?

                                    Betriebszeitenscript Version 0.99 30.12.2017 :
                                    

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

                                    L 1 Reply Last reply
                                    0
                                    • sigi234S sigi234

                                      @looxer01

                                      Wo ist das aktuelle Skript?

                                      Das ?

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

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

                                      K ? 2 Replies Last reply
                                      0
                                      • L looxer01

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

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

                                        @looxer01

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

                                        HP Microserver Gen8, RPI-4, IoBroker,

                                        1 Reply Last reply
                                        0
                                        • L looxer01

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

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

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

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

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

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

                                          L 1 Reply Last reply
                                          0

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

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

                                          With your input, this post could be even better 💗

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          235

                                          Online

                                          32.8k

                                          Users

                                          82.7k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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