Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Vorlage] Betriebsstundenzähler & Verbrauchsrechner

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Vorlage] Betriebsstundenzähler & Verbrauchsrechner

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

      Hi Martin,

      das ist ein Problem, dass Anfangs mit HM Geräten auftrat, weil ioBroker 2 x getriggert wurde.

      Einmal beim update vor dem Senden an HM (unbestätigt)

      und dann bei der Rückmeldung von HM (bestätigt)

      könnte es sein, dass es eine Rückmeldung vom Geräte gibt ? und wenn ja, kann man die Unterdrücken ?

      vG Looxer

      1 Reply Last reply Reply Quote 0
      • M
        mazga last edited by

        Hallo Looxer,

        also ich habs extra mal genau beobachtet, der gechaltene GPIO wandert nur einmal von true nach false wenn beim Gaszähler der magnet vorbeiwander und dann wieder auf true, ich werds aber umbauen. Wüsste nicht wo ich beim RPi im Iobroker da sonst was umstellen könnte ist ja wirklich onboard.

        wegen den anderen Sachen konntest du kurz über die cfg drüberschaun ob das so passen würde und hast du eine idee wie ich den Gasverbrauch im Flot angeben könnte also den verbrauch von 0,1m³/Zeiteinheit zwischen zwei trigger. naja und das Summieren geht gar nicht irgendwie also auch wenn doppelt gezählt wird wird derzeit nichts summiert.

        mfg Martin

        1 Reply Last reply Reply Quote 0
        • S
          smooty1970 last edited by

          Hallo Looxer.

          Ersteinmal Danke und Lob für dein Script gen. BSZ. Mit meinen elektrischen Heizungen (IR) funktioniert das alles wunderbar.
          Meine Frage nun. Wir bekommen zwar irgendwann demnächst smarte Stromzähler, aber ob die in den iobroker einbindbar sein werden, bleibt abzuwarten.
          Ich habe bisher immer mtl. Wasser und Tag/Nachtstromzähler seit 2013 am Monatsende dokumentiert.
          Bekomme ich irgendwie diese Daten in einen Zähler, der nach Eingabe des Ablesewerte die mtl. und jährlichen Verbräuche ausrechnet? Ich dachte, einen DP manuell anzulegen und hier am Monatsende den Zählerstand einzutragen, diesen DP durch dein Script beobachten zu lassen. Zweite Frage, die bisherigen Zählerstände - kann man die irgendwie nacherfassen?
          Danke

          1 Reply Last reply Reply Quote 0
          • A
            ahfreezer last edited by

            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é

            A K 2 Replies Last reply Reply Quote 0
            • A
              ahfreezer @ahfreezer last edited by

              @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

              dsiggi 1 Reply Last reply Reply Quote 0
              • S
                steinkuhl last edited by

                Hallo alle miteinander,

                dieses Script ist genau das, was mir viele Aufgaben gleichzeitig abnimmt, super !!!

                Ich möchte folgendes realisieren:

                es werden s0-Impulse vom Strom-Verbrauchszähler (75 Imp./KWh), PV-Erzeugungszähler (600 Imp./KWh), Wasserverbrauchszähler (1 Imp./L) und vom Gasverbrauchszähler (100 Imp./qbm) von einer SPS erfasst und per Modbus-TCP an IOBroker übertragen.

                Ich habe die Möglichkeit, jeden Impuls von jedem Zähler direkt zu übertragen oder die Umrechnung auf die jeweilige Wertigkeit direkt in der SPS zu machen.

                Meine Frage ist: welche Methode ist die für das Script die bessere ? Und wie trage ich die Impulswertigkeit (bei Übertragung der Direktimpulse) in das Script ein ?

                Ich hänge meine Eintragungen mal an:

                var Gruppen = [];
                //              1.Homematic ID,                    2.Feldname(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] = ['modbus.6.holdingRegisters.40400_X11_1' ,'Strom-Bezug'                          ,true  ,true   ,true   ,true   ,true   ,true   ,'delta' ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // Stromverbrauchserfassung 
                Gruppen[1] = ['modbus.6.holdingRegisters.40401_X11_2' ,'Strom-Lieferung'                      ,true   ,true   ,true   ,true   ,true   ,true  ,'delta' ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // Stromlieferungserfassung
                Gruppen[2] = ['modbus.6.holdingRegisters.40402_X11_3' ,'Wasser-Verbrauch'                     ,true   ,true   ,true   ,true   ,true   ,true  ,'delta' ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // Wasserverbrauchserfassung
                Gruppen[3] = ['modbus.6.holdingRegisters.40403_X11_4' ,'Gas-Verbrauch'                        ,true  ,true  ,true  ,true  ,true  ,true  ,'delta' ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,''     ,false ,false]; // Gasverbrauchserfassung
                
                var logname = [];
                //              Stat1           Stat2       Stat3       Stat4               Stat5       Stat6       Stat7       Stat8   Stat9   Stat10
                logname[0]  =   ['Stromverbrauch' ,''        ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                logname[1]  =   ['Stromlieferung' ,''        ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                logname[2]  =   ['Wasserverbrauch' ,''       ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                logname[3]  =   ['Gasverbrauch'  ,''         ,''         ,''                 ,''         ,''         ,''         ,''     ,''     ,''];
                
                var special = [];
                
                //             1.Round 2.add1   3.Faktor                4. Divisor  5.add2  6.Individuallogik  7: DELTA(M)Grenze    8.Frei  9.Durchschnitt - 10.Zaehlschwelle     11 Schedule    12. Min/MAX     13. MehrfachStatus  14. Selektives Logging
                special[0]  =  ['3'     ,''     ,'75'                        ,''       ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,'true'  ]; // Stromverbrauch in KWh
                special[1]  =  ['3'     ,''    ,'600'                        ,''      ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,'true'  ]; // Stromlieferung in KWh
                special[2]  =  ['3'    ,''     ,'1000'                        ,''     ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,'true'      ]; // Wasserverbrauch in L
                special[3]  =  ['3'    ,''     ,'0.01'                        ,''        ,''     ,''                 ,''                 ,''                         ,''             ,''             ,''                 ,''             ,''                 ,'true'      ]; // Gasverbrauch in QBM
                

                Vielen Dank im voraus !

                S 1 Reply Last reply Reply Quote 0
                • S
                  steinkuhl @steinkuhl last edited by

                  @steinkuhl HAllo alle miteinander,

                  ich habe es selber zum funktionieren gebracht, die Parameter der Zähler müssen bei Divisor hinein, nicht bei Faktor, jetzt läufts, super Sache.

                  Gruß Rainer

                  1 Reply Last reply Reply Quote 0
                  • K
                    Kalle @ahfreezer last edited by

                    @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 Reply Quote 0
                    • dsiggi
                      dsiggi @ahfreezer last edited by dsiggi

                      @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 Reply Quote 0
                      • M
                        Mischa @looxer01 last edited by

                        @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 Reply Quote 0
                        • etv
                          etv last edited by

                          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 1 Reply Last reply Reply Quote 0
                          • A
                            andi2055 @etv last edited by

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

                            etv 1 Reply Last reply Reply Quote 1
                            • etv
                              etv @andi2055 last edited by

                              @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

                              1 Reply Last reply Reply Quote 0
                              • Negalein
                                Negalein Global Moderator last edited by Negalein

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

                                EDIT: Problem gelöst 😊

                                1 Reply Last reply Reply Quote 0
                                • K
                                  Kampfratte last edited by

                                  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 Reply Quote 0
                                  • ?
                                    A Former User @Kampfratte last edited by

                                    @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 Reply Quote 0
                                    • K
                                      knopers1 @Guest last edited by

                                      @ilovegym

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

                                      K 1 Reply Last reply Reply Quote 0
                                      • K
                                        knopers1 @knopers1 last edited by

                                        @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 1 Reply Last reply Reply Quote 0
                                        • L
                                          looxer01 @knopers1 last edited by

                                          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 Reply Quote 0
                                          • K
                                            knopers1 @looxer01 last edited by 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 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            410
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            51
                                            333
                                            79232
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo