Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Zuviel fuer JS ?

    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

    Zuviel fuer JS ?

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

      jetzt sieht es anders aus:

      [spoiler]
      
      Log 	Log-Größe: 11.68 MB  	
      Zeit 	
      Nachricht
      javascript-0	2016-02-02 23:09:03	info	Stop script script.js.Betriebsstundenzaehler_Extended
      TypeError:	2016-02-02 23:09:03	error	at Object.that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:1963:80)
      TypeError:	2016-02-02 23:09:03	error	at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:192:17)
      TypeError:	2016-02-02 23:09:03	error	at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:452:17)
      TypeError:	2016-02-02 23:09:03	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2345:28)
      TypeError:	2016-02-02 23:09:03	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2345:28)
      TypeError:	2016-02-02 23:09:03	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2326:17)
      TypeError:	2016-02-02 23:09:03	error	at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:456:48
      TypeError:	2016-02-02 23:09:03	error	at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1113:48)
      TypeError:	2016-02-02 23:09:03	error	at Object. (script.js.Betriebsstundenzaehler_Extended:514:81)
      TypeError:	2016-02-02 23:09:03	error	at GeraetUpdate (script.js.Betriebsstundenzaehler_Extended:287:39)
      TypeError:	2016-02-02 23:09:03	error	Cannot read property 'common' of null
      message	2016-02-02 23:09:03	error	system.adapter.sayit.0.uptime [object Object] Cannot read property 'common' of null
      javascript-0	2016-02-02 23:09:03	warn	Object "" does not exist
      TypeError:	2016-02-02 23:09:03	error	at Object.that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:1963:80)
      TypeError:	2016-02-02 23:09:03	error	at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:192:17)
      TypeError:	2016-02-02 23:09:03	error	at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:452:17)
      TypeError:	2016-02-02 23:09:03	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2345:28)
      TypeError:	2016-02-02 23:09:03	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2345:28)
      TypeError:	2016-02-02 23:09:03	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2326:17)
      TypeError:	2016-02-02 23:09:03	error	at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:456:48
      TypeError:	2016-02-02 23:09:03	error	at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1113:48)
      TypeError:	2016-02-02 23:09:03	error	at Object. (script.js.Betriebsstundenzaehler_Extended:514:81)
      TypeError:	2016-02-02 23:09:03	error	at GeraetUpdate (script.js.Betriebsstundenzaehler_Extended:287:39)
      TypeError:	2016-02-02 23:09:03	error	Cannot read property 'common' of null
      message	2016-02-02 23:09:03	error	system.adapter.sayit.0.memHeapUsed [object Object] Cannot read property 'common' of null
      javascript-0	2016-02-02 23:09:03	warn	Object "" does not exist
      TypeError:	2016-02-02 23:09:03	error	at Object.that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:1963:80)
      TypeError:	2016-02-02 23:09:03	error	at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:192:17)
      TypeError:	2016-02-02 23:09:03	error	at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:452:17)
      TypeError:	2016-02-02 23:09:03	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2345:28)
      TypeError:	2016-02-02 23:09:03	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2345:28)
      TypeError:	2016-02-02 23:09:03	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2326:17)
      TypeError:	2016-02-02 23:09:03	error	at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:456:48
      TypeError:	2016-02-02 23:09:03	error	at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1113:48)
      TypeError:	2016-02-02 23:09:03	error	at Object. (script.js.Betriebsstundenzaehler_Extended:514:81)
      TypeError:	2016-02-02 23:09:03	error	at GeraetUpdate (script.js.Betriebsstundenzaehler_Extended:287:39)
      TypeError:	2016-02-02 23:09:03	error	Cannot read property 'common' of null
      message	2016-02-02 23:09:03	error	system.adapter.sayit.0.memHeapTotal [object Object] Cannot read property 'common' of null
      javascript-0	2016-02-02 23:09:03	warn	Object "" does not exist
      TypeError:	2016-02-02 23:09:03	error	at Object.that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:1963:80)
      TypeError:	2016-02-02 23:09:03	error	at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:192:17)
      TypeError:	2016-02-02 23:09:03	error	at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:452:17)
      TypeError:	2016-02-02 23:09:03	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2345:28)
      TypeError:	2016-02-02 23:09:03	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2345:28)
      TypeError:	2016-02-02 23:09:03	error	at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:2326:17)
      TypeError:	2016-02-02 23:09:03	error	at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:456:48
      TypeError:	2016-02-02 23:09:03	error	at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1113:48)
      TypeError:	2016-02-02 23:09:03	error	at Object. (script.js.Betriebsstundenzaehler_Extended:514:81)
      TypeError:	2016-02-02 23:09:03	error	at GeraetUpdate (script.js.Betriebsstundenzaehler_Extended:287:39)
      TypeError:	2016-02-02 23:09:03	error	Cannot read property 'common' of null
      message	2016-02-02 23:09:03	error	system.adapter.sayit.0.memRss [object Object] Cannot read property 'common' of null
      javascript-0	2016-02-02 23:09:03	warn	Object "" does not exis
      [/spoiler]
      
      
      1 Reply Last reply Reply Quote 0
      • L
        looxer01 last edited by

        das log sagt ja, dass alle möglichen Adapter Fehler melden.

        aber du hast ja wieder mal recht. GetObjekt hatte ich noch nicht umgestellt auf die neue Programmstuktur.

        Ich hätte mit solchen Auswirkungen nicht gerechnet. Das scheint es gewesen zu sein.

        puuuuuuuhhh, das war heftig

        Danke dir 1000x

        Looxer

        1 Reply Last reply Reply Quote 0
        • L
          looxer01 last edited by

          Hi,

          leider habe ich das Problem immer noch.

          Und ich verstehe überhaupt nicht warum das so passiert.

          Ich habe das Stück Coding durch BF Hinweis isoliert und es ist jederzeit nachvollziebar.

          Obwohl in dem Coding keine Schleife eingebaut ist fängt JS an zu loopen sobald das Programm aufgerufen wird

          es ist so als wenn die on({id: sequenzen immer wieder aufgerufen werden. Anders ist das für mich nicht zu erklären.

          Hat jemand eine Erklärung bzw. eine Lösung wie ich das Problem umgehen kann ?

          vG Looxer

          resultat im Log:

          ! javascript-0 2016-02-03 10:55:31 info Stop script script.js.ZZZTestGetObjekt javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found javascript-0 2016-02-03 10:55:31 info script.js.ZZZTestGetObjekt: Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe undefined javascript-0 2016-02-03 10:55:31 warn State "undefined" not found !

          und hier ist das Stück Coding:

          ! var SpaceChk = new RegExp(/\s/); var Gruppen = []; ! Gruppen[0] = ['hm-rpc.0.JEQ003xxxx.1.STATE' ]; Gruppen[1] = ['hm-rpc.0.JEQ0199xxx.1.LEVEL' ]; Gruppen[2] = ['hm-rpc.0.IEQ037xxxx.1.STATE' ]; Gruppen[3] = ['hm-rpc.0.JEQ003xxxx.1.STATE' ]; Gruppen[4] = ['hm-rpc.0.JEQ029xxxx.1.STATE' ]; Gruppen[5] = ['hm-rpc.0.KEQ017xxxx.1.STATE' ]; Gruppen[6] = ['hm-rpc.0.JEQ005xxxx.1.STATE' ]; Gruppen[7] = ['modbus.0.holdingRegisters.26_FA1_STATE' ]; Gruppen[8] = ['' ]; Gruppen[9] = ['' ]; Gruppen[10] = ['' ]; Gruppen[11] = ['' ]; Gruppen[12] = ['' ]; Gruppen[13] = ['' ]; Gruppen[14] = ['' ]; Gruppen[15] = ['' ]; Gruppen[16] = ['' ]; Gruppen[17] = ['' ]; Gruppen[18] = ['' ]; Gruppen[18] = ['' ]; Gruppen[19] = ['' ]; Gruppen[20] = ['' ]; //------------------------------------------------------------------------------- // var objGruppe = "hm-rpc.0.IEQ0379466.2.STATE"; var objGruppe = Gruppen[1][0]; log("check gestartet "+Gruppen[1][0] ,"info"); if(ObjectExists(objGruppe)) { log("object existiert","info") } ! //----------------------------------------------------------------------------------------------------- // Funktion zur Ueberpruefung ob die angegebenen Geraete exisiteren //----------------------------------------------------------------------------------------------------- function ObjectExists(objGruppe) { var back = false; ! if (SpaceChk.test(objGruppe)) { // objIDGruppe darf kein space enthalten // ist ein Geraet ueberhaupt zugeordnet ? // log("Geraet hat kein assignment - Gruppe " + objGruppe, "info"); return back; } // endif IDGruppe hat kein assignment ! if (getState(objGruppe)) { // Existiert das Geraet ? back = true; } else { log("Geraet existiert nicht - bitte in den Einstellungen ueberpruefen - Gruppe " + objGruppe, "info"); } // endif check on Geraet exists ! return back; } // ende Funktion ! function GeraetUpdate(nummer) { var objGruppe = Gruppen[nummer[0]]; if(ObjectExists(objGruppe)) { log("object existiert","info") } } // ende Funktion ! on({id: Gruppen[0][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate( 0 ); } }); // ende on id on({id: Gruppen[1][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate( 1 ); } }); // ende on id on({id: Gruppen[2][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate( 2 ); } }); // ende on id on({id: Gruppen[3][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate( 3 ); } }); // ende on id on({id: Gruppen[4][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate( 4 ); } }); // ende on id on({id: Gruppen[5][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate( 5 ); } }); // ende on id on({id: Gruppen[6][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate( 6 ); } }); // ende on id on({id: Gruppen[7][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate( 7 ); } }); // ende on id on({id: Gruppen[8][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate( 8 ); } }); // ende on id on({id: Gruppen[9][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate( 9 ); } }); // ende on id on({id: Gruppen[10][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate(10); } }); // ende on id on({id: Gruppen[11][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate(11); } }); // ende on id on({id: Gruppen[12][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate(12); } }); // ende on id on({id: Gruppen[13][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate(13); } }); // ende on id on({id: Gruppen[14][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate(14); } }); // ende on id on({id: Gruppen[15][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate(15); } }); // ende on id on({id: Gruppen[16][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate(16); } }); // ende on id on({id: Gruppen[17][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate(17); } }); // ende on id on({id: Gruppen[18][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate(18); } }); // ende on id on({id: Gruppen[19][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate(19); } }); // ende on id on({id: Gruppen[20][0], valNe: 1000 }, function(obj) { if (obj.state.ack) { GeraetUpdate(20); } }); // ende on id !

          1 Reply Last reply Reply Quote 0
          • P
            pix last edited by

            Hallo Looxer,

            probier mal statt

            if  (getState(objGruppe))   { // Existiert das Geraet ?
            
            if  (getState(objGruppe).val)   { // Existiert das Geraet ?
            

            Gruß

            Pix

            1 Reply Last reply Reply Quote 0
            • P
              pix last edited by

              Hier ist auch noch ein Fehler:````
              function GeraetUpdate(nummer) {
              var objGruppe = Gruppen[nummer[0]];

              
              ****EDIT: ist natürlich quatsch, jetzt sehe ich es auch :oops: Oops****
              
              Und in den Subscriptions verwendest du obj.state.ack. in den If-Abfragen. Allerdings liefert das Callback der Subscription keinen "state", wenn man nach [https://github.com/iobroker/ioBroker.javascript#on–-subscribe-on-changes-or-updates-of-some-state](https://github.com/iobroker/ioBroker.javascript#on–-subscribe-on-changes-or-updates-of-some-state) geht, sondern nur oldState und newState.
              
              Gruß
              
              Pix
              1 Reply Last reply Reply Quote 0
              • L
                looxer01 last edited by

                Hi Pix,

                das bringt leider keine Aenderung. Anscheinend gibt es Problem mit on id, weil ja quasi ein permanenter loop das log vollmüllt und wie BF auch schon sagte scheint es ein Problem bei GetState/GetObject zu geben, wenn das Geraet nicht exisitiert.

                Könntest du bei dir mal ckecken ob esbei dir auch loooed ? Wenn er anfängt zu loopen, dann deaktiviere ich das script und alles ist gut. Sollte also kein problem geben.

                ich bin mir übrigens auch gar nicht sicher, ob ich nicht zwei Probleme habe. Das Loop Problem und das getObject Problem naemlich.

                vG Looxer

                1 Reply Last reply Reply Quote 0
                • L
                  looxer01 last edited by

                  zu ack.

                  das stück code habe ich von BF und eingefügt weil on id immer zweimal ausgefürt wurde.

                  einmal für false und einmal für true. Im script Betriebsstundenzähler funktioniert da auch einwandfrei.

                  vG Looxer

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 last edited by

                    @pix:

                    Und in den Subscriptions verwendest du obj.state.ack. in den If-Abfragen. Allerdings liefert das Callback der Subscription keinen "state", wenn man nach dieser Doku geht, sondern nur oldState und newState. `
                    obj.state.ack ist zwar nicht dokumentiert, funktioniert aber: Es entspricht obj.newState.ack.

                    1 Reply Last reply Reply Quote 0
                    • L
                      looxer01 last edited by

                      ich habe einen Zusammenhang gefunden, der aber noch nicht die Reaktion erklärt.

                      Das loopen fängt an mit der neunten 9. Subscription, die einen initialen Wert enthaelt nämlich zwei Hochkomma.

                      also so: Gruppen[8] = ['' ];

                      Ersetze ich die z.B. durch 'initial' dann gibt es keinen Loop mehr und auch der object check funktioniert. 😮

                      es sind also die initialen Werte die hier JS bis zum Absturz bringen

                      Kann das jemand erklären ?

                      1 Reply Last reply Reply Quote 0
                      • Bluefox
                        Bluefox last edited by

                        @paul53:

                        @pix:

                        Und in den Subscriptions verwendest du obj.state.ack. in den If-Abfragen. Allerdings liefert das Callback der Subscription keinen "state", wenn man nach dieser Doku geht, sondern nur oldState und newState. obj.state.ack ist zwar nicht dokumentiert, funktioniert aber: Es entspricht obj.newState.ack.
                        Ja ich habe entschieden state zu verwenden, statt newState.

                        1 Reply Last reply Reply Quote 0
                        • Bluefox
                          Bluefox last edited by

                          @looxer01:

                          ich habe einen Zusammenhang gefunden, der aber noch nicht die Reaktion erklärt.

                          Das loopen fängt an mit der neunten 9. Subscription, die einen initialen Wert enthaelt nämlich zwei Hochkomma.

                          also so: Gruppen[8] = ['' ];

                          Ersetze ich die z.B. durch 'initial' dann gibt es keinen Loop mehr und auch der object check funktioniert. 😮

                          es sind also die initialen Werte die hier JS bis zum Absturz bringen

                          Kann das jemand erklären ? `

                          on({id: '', valNe: 1000 }, function(obj)    {
                              log(obj.id);
                          });
                          

                          passt einfach zu jeder Zustandsänderung. Ich habe jetzt gesperrt, dass man ID:'' eingeben kann.

                          1 Reply Last reply Reply Quote 0
                          • L
                            looxer01 last edited by

                            aaah- jetzt hab ichs verstanden. oh mann. Danke dir

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            704
                            Online

                            31.9k
                            Users

                            80.2k
                            Topics

                            1.3m
                            Posts

                            6
                            32
                            2606
                            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