Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. [Vorlage] Variable Zeitsteuerung mit VIS Editor

    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] Variable Zeitsteuerung mit VIS Editor

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

      Habe eine neue Version hochgeladen.

      EDIT 31.08.2019:

      • Änderung von Bedingungen werden direkt bei Änderung getriggert (ohne minütliches Cron)
      • Hauptpfad des Timers variabel umstellbar ohne Suchen/Ersetzen
      • Bevorstehende Timer werden in States "javascript.0.Timer. + path + .NextDevice(s)" ausgegeben
      • HauptView angepasst zur Darstellung der bevorstehenden Timer

      Mein Vorhaben, die Timer auf Sekunden hin zu setzen, habe ich verworfen (Aufwand/Nutzen mangelhaft).

      Was ich aber noch updaten will:
      Erstellung eines neuen Timers wird auf Basis des zuletzt gewählten Timers erstellt. Aktuell wird ein neuer Timer immer mit höchster Nummer erstellt auf Basis des bis dato höchsten Timers.
      D.h. neuer Timer 4 als Kopie von 3 oder neuer Timer 3 auf Basis von 2 usw.
      Zukünftig: Wenn Timer 1 gewählt ist und dann auf "+" geklickt wird, wird der neue Timer als Nummer 2 erstellt als Kopie von 1. Auch wenn dieses Gerät bereits 2 oder mehr Timer besitzt. Die weiteren Timer werden dann um eine Nummer erhöht.

      Trigger:
      Hatte mich zuletzt mit "Trigger in Abhängigkeit mehrerer States" beschäftigt. Dabei bin ich auf die Möglichkeit gestoßen bei den Trigger direkt ein Array mit mehreren States anzugeben. Hier ein komprimierter Auszug aus dem aktuellen Skript:

      // Eine Aufzählung für States der Bedingungen:
      var deviceCond = "enum.functions.timerconditions";
      // .........
      var condition_members = getObject(deviceCond).common.members;
      // .........
      on({id: condition_members, change: "any"}, function (obj) {
          compareCond();
      });
      

      Hauptpfad:
      Es ist nun möglich über die Befüllung der Variable "path" , den Hauptpfad des Timers zu ändern. Somit ist es möglich, zumindest das Skript einfach mehrmals unter verschiedenen Pfaden einzubinden (Views müssen natürlich dennoch mit Copy/Paste überarbeitet werden, wenn ein Pfad ungleich "Devices" genutzt wird.
      Das Astro-State ist hierbei eine Ebene tiefer gerutscht, damit sich u.U. mehrer Skripte nicht ein State teilen, was evtl. zu einem Lesen/Schreiben Fehler führen könnte.
      Bedeutet: Astro-State ehemals unter "javascript.0.Timer.AstroJSON" kann gelöscht werden weil es unter "javascript.0.Timer.Devices.AstroJSON" autom. neu erstellt wird (oder statt "Devices" eben das was angegeben wurde.

      Next Timer:
      Die zukünftigen Timer werden in einem zusätzlichen DropDown-Feld ausgegeben. Mir ist nichts praktischeres eingefallen, was zunächst wenig Platz einnimmt aber bei Bedarf alles anzeigen kann. Höchstens ein weiteres PopUp View hätte geholfen, aber das macht es dann unnötig komplizierter.
      Das Skript für die Anzeige der nächsten Timer wird minütlich getriggert, allerdings zwischen vollen Minuten, sodass die Anzeige dem nächsten Timer immer voraus ist.
      Falls jemand eine alternative Idee hat, nur her damit 😉
      Habe mein Hauptview entsprechend angepasst, um Platz für das neue Feld zu schaffen.

      Hier nur das einzelne Widget für die Darstellung der nächsten Timer (ist einfach nur ein DropDown mit entsprechenden links):

      [{"tpl":"tplJquiSelectList","data":{"oid":"javascript.0.Timer.Devices.NextDevice","g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","values":"{javascript.0.Timer.Devices.NextDevices}","texts":"{javascript.0.Timer.Devices.NextDevices}","height":"100","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"no_style":true,"class":"mdui-select noSwipe","lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"left":"13px","top":"calc(100% - 50px)","height":"39px","width":"calc(100% - 113px)","z-index":"10"},"widgetSet":"jqui"}]
      
      Glasfaser 1 Reply Last reply Reply Quote 1
      • Glasfaser
        Glasfaser @GiuseppeS last edited by Glasfaser

        @GiuseppeS

        So … gerade mal ein Test durchgeführt 😀

        Was mit auffällt bei Next Timer, können dort nicht die Werte mit rein , was dann gemacht wird " rauf ,runter 0 .. 100 "

        Wäre dann auch plausibel was und wie demnächst geschaltet wird bzw. was passieren soll !?

        111111111.jpg

        G 1 Reply Last reply Reply Quote 0
        • G
          GiuseppeS @Glasfaser last edited by GiuseppeS

          @Glasfaser
          Hatte darüber nachgedacht, allerdings werden dann die Strings in der Zeile länger.

          Du hast immer nur ein Gerät pro Skript und somit zum selben Zeitpunkt immer nur ein Gerät was geschaltet wird.
          Bei mir sind es zum Teil 3 Geräte gleichzeitig, diese stehen dann nebeneinander in einer Zeile, was jetzt schon ohne Sollwerte viel Platz benötigt.

          Kompromiss:
          Ich bau noch einen SW Schalter in das Skript womit die Anzeige der Sollwerte manipuliert werden kann.
          Diese Änderung würde nicht viel Zeit benötigen, da die Logik unverändert bleibt.
          Kompromiss Vorschlag angenommen?

          Dann würde ich es heute Abend noch überarbeiten.

          Glasfaser 1 Reply Last reply Reply Quote 0
          • Glasfaser
            Glasfaser @GiuseppeS last edited by Glasfaser

            @GiuseppeS

            War ja nicht für mich gedacht … war nur eine Anmerkung 😌
            der nur ein View für alle Schaltungen nutzt.

            G 1 Reply Last reply Reply Quote 0
            • G
              GiuseppeS @Glasfaser last edited by

              @Glasfaser
              Update ist raus; war ein guter Hinweis 👍

              Es gibt jetzt einen neuen SW Schalter, mit dem die Anzeige des nächsten Timers manipuliert werden kann:

              // Anzeige nächster Timer mit Sollwerten in DropDown? Ja: true, Nein: false
              var showValues = true;
              

              Belasse selbst die Anzeige nun auch mit den Sollwerten, ist daher per default aktiviert.

              Glasfaser 1 Reply Last reply Reply Quote 0
              • Glasfaser
                Glasfaser @GiuseppeS last edited by Glasfaser

                @GiuseppeS

                Test gerade , aber ist dort ein Timer hinterlegt , die Anzeige der Werte kommt und geht ?????

                Die Liste erscheint mit den Werten …. ( 100 ) und im nächsten Moment Zeit x sind alle Werte verschwunden und dann kommen Sie wieder .
                Ist das nicht deine Abfragezeit !? nicht das die den Wechsel verursacht

                G 1 Reply Last reply Reply Quote 0
                • G
                  GiuseppeS @Glasfaser last edited by GiuseppeS

                  @Glasfaser
                  Wenn das Dropdown nicht geöffnet ist, müsst es alle 60 Sekunden einmalig "blinken". Meinst du das?
                  Timer mit 60 Sekunden ist für die Liste hinterlegt.

                  Oder sind bei dir die Werte über einen längeren Zeitraum komplett weg?

                  Glasfaser 1 Reply Last reply Reply Quote 0
                  • Glasfaser
                    Glasfaser @GiuseppeS last edited by Glasfaser

                    @GiuseppeS

                    Nicht Blinken !
                    Der Wert : 0 oder 100 in den Klammern verschwindet hinter dem LEVEL und kommt nach einer Zeit x wieder
                    Lass das Fenster mal auf vom nächsten Timer dann siehst du es .

                    Die Anzeige wechselt :

                    1.jpg

                    2.jpg

                    G 1 Reply Last reply Reply Quote 0
                    • G
                      GiuseppeS @Glasfaser last edited by

                      @Glasfaser
                      Also, bei mir bleibt der Wert in den Klammern immer bestehen. Werde jetzt das Skript oben aus dem Zip bei mir zurückspielen. Vielleicht habe ich danach noch was geändert, aber kann ich mir kaum vorstellen.

                      Hast du nichts anderes geändert?

                      Glasfaser 1 Reply Last reply Reply Quote 0
                      • Glasfaser
                        Glasfaser @GiuseppeS last edited by Glasfaser

                        @GiuseppeS

                        So gelassen , nur die deviceEnum von mir eingetragen .

                        Kennst du ein kostenloses Tool zur Videoaufnahme ! ?
                        Sieht schon Witzig aus !

                        G 2 Replies Last reply Reply Quote 0
                        • G
                          GiuseppeS @Glasfaser last edited by

                          @Glasfaser
                          Und der Wechsel ist im Minutentakt zwischen "mit Werten" und "ohne Werten"?

                          Glasfaser 1 Reply Last reply Reply Quote 0
                          • G
                            GiuseppeS @Glasfaser last edited by

                            @Glasfaser
                            Leider können hier keine Videos hochgeladen werden, soweit ich weiß.

                            1 Reply Last reply Reply Quote 0
                            • Glasfaser
                              Glasfaser @GiuseppeS last edited by Glasfaser

                              @GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                              @Glasfaser
                              Und der Wechsel ist im Minutentakt zwischen "mit Werten" und "ohne Werten"?

                              30 sekunden

                              @GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                              @Glasfaser
                              Leider können hier keine Videos hochgeladen werden, soweit ich weiß.

                              Doch , geht !!

                              G 2 Replies Last reply Reply Quote 1
                              • G
                                GiuseppeS @Glasfaser last edited by

                                @Glasfaser
                                Achso, wenn es geht, benutze die Video Funktion vom Smartphone, ansonsten gibt's unter Windows 10 noch ein integriertes Tool. Zu starten mit "WindowsTaste + Alt + R", finde ich aber nicht so schön

                                sigi234 1 Reply Last reply Reply Quote 0
                                • sigi234
                                  sigi234 Forum Testing Most Active @GiuseppeS last edited by

                                  @GiuseppeS

                                  Was mache ich Falsch?

                                  Screenshot (3998).png ``

                                  G 2 Replies Last reply Reply Quote 0
                                  • G
                                    GiuseppeS @Glasfaser last edited by GiuseppeS

                                    @Glasfaser
                                    SVID_20190831_235459_1.mp4

                                    So schaut es bei mir aus...

                                    Glasfaser 2 Replies Last reply Reply Quote 0
                                    • G
                                      GiuseppeS @sigi234 last edited by

                                      @sigi234
                                      Skript zweimal gestartet? Es werden wieder zwei neue States erstellt.

                                      1 Reply Last reply Reply Quote 0
                                      • G
                                        GiuseppeS @sigi234 last edited by

                                        @sigi234
                                        Existiert bei dir die Aufzählung namens "timerconditions"? Evtl hast Du vergessen den Namen anzupassen?

                                        sigi234 1 Reply Last reply Reply Quote 0
                                        • sigi234
                                          sigi234 Forum Testing Most Active @GiuseppeS last edited by sigi234

                                          @GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:

                                          @sigi234
                                          Existiert bei dir die Aufzählung namens "timerconditions"? Evtl hast Du vergessen den Namen anzupassen?

                                          Aha, habe ich das überlesen. An was anpassen?
                                          Edit:
                                          So?
                                          var deviceCond = "enum.functions.Licht";

                                          00:05:54.993	info	javascript.0 Stop script script.js.Sigi.Timer_1
                                          00:05:55.010	info	javascript.0 Start javascript script.js.Sigi.Timer_1
                                          00:05:55.010	info	javascript.0 script.js.Sigi.Timer_1: registered 15 subscriptions and 3 schedules
                                          00:05:56.685	error	javascript.0 at buildJson (script.js.Sigi.Timer_1:1010:35)
                                          00:05:56.685	error	javascript.0 at tableMain (script.js.Sigi.Timer_1:1101:74)
                                          00:05:56.685	error	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:1123:5)
                                          00:05:56.686	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:647:8)
                                          00:05:56.687	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:649:8)
                                          00:05:56.688	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:650:8)
                                          00:05:56.689	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:651:8)
                                          00:05:56.690	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:652:8)
                                          00:05:56.691	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:653:8)
                                          00:05:56.692	error	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:662:80)
                                          00:05:56.692	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:647:8)
                                          00:05:56.700	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:650:8)
                                          00:05:56.701	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:651:8)
                                          00:05:56.701	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:652:8)
                                          00:05:56.702	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:653:8)
                                          00:05:56.703	error	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:662:80)
                                          00:05:56.703	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:647:8)
                                          00:05:56.706	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:651:8)
                                          00:05:56.708	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:652:8)
                                          00:05:56.708	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:653:8)
                                          00:05:56.709	error	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:662:80)
                                          00:05:56.709	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:647:8)
                                          00:05:56.709	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:652:8)
                                          00:05:56.710	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:653:8)
                                          00:05:56.711	error	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:662:80)
                                          00:05:56.711	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:647:8)
                                          00:05:56.712	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:653:8)
                                          00:05:56.713	error	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:662:80)
                                          00:05:56.715	warn	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:647:8)
                                          00:05:56.716	error	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:662:80)
                                          00:05:56.716	error	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:662:80)
                                          00:05:56.717	warn	javascript.0 at createConditionsJSON (script.js.Sigi.Timer_1:156:39)
                                          00:05:56.717	warn	javascript.0 at Object.main (script.js.Sigi.Timer_1:932:5)
                                          00:05:56.717	warn	javascript.0 at createConditionsJSON (script.js.Sigi.Timer_1:156:39)
                                          00:05:56.717	warn	javascript.0 at Object.main (script.js.Sigi.Timer_1:932:5)
                                          00:05:56.717	warn	javascript.0 at createConditionsJSON (script.js.Sigi.Timer_1:156:39)
                                          00:05:56.717	warn	javascript.0 at Object.main (script.js.Sigi.Timer_1:932:5)
                                          00:05:56.718	warn	javascript.0 at createConditionsJSON (script.js.Sigi.Timer_1:156:39)
                                          00:05:56.718	warn	javascript.0 at Object.main (script.js.Sigi.Timer_1:932:5)
                                          00:05:56.718	error	javascript.0 at compareCond (script.js.Sigi.Timer_1:170:30)
                                          00:05:56.718	error	javascript.0 at Object.main (script.js.Sigi.Timer_1:933:5)
                                          00:06:06.434	info	javascript.0 Stop script script.js.Sigi.Timer_1
                                          00:06:06.454	info	javascript.0 Start javascript script.js.Sigi.Timer_1
                                          00:06:06.454	info	javascript.0 script.js.Sigi.Timer_1: registered 15 subscriptions and 3 schedules
                                          00:06:06.961	warn	javascript.0 at createConditionsJSON (script.js.Sigi.Timer_1:156:39)
                                          00:06:06.961	warn	javascript.0 at Object.main (script.js.Sigi.Timer_1:932:5)
                                          00:06:06.961	warn	javascript.0 at createConditionsJSON (script.js.Sigi.Timer_1:156:39)
                                          00:06:06.961	warn	javascript.0 at Object.main (script.js.Sigi.Timer_1:932:5)
                                          00:06:06.961	warn	javascript.0 at createConditionsJSON (script.js.Sigi.Timer_1:156:39)
                                          00:06:06.961	warn	javascript.0 at Object.main (script.js.Sigi.Timer_1:932:5)
                                          00:06:06.962	warn	javascript.0 at createConditionsJSON (script.js.Sigi.Timer_1:156:39)
                                          00:06:06.962	warn	javascript.0 at Object.main (script.js.Sigi.Timer_1:932:5)
                                          00:06:06.962	warn	javascript.0 at script.js.Sigi.Timer_1:173:39
                                          00:06:06.962	warn	javascript.0 at compareCond (script.js.Sigi.Timer_1:172:32)
                                          00:06:06.962	warn	javascript.0 at Object.main (script.js.Sigi.Timer_1:933:5)
                                          00:06:06.962	warn	javascript.0 at script.js.Sigi.Timer_1:173:39
                                          00:06:06.962	warn	javascript.0 at compareCond (script.js.Sigi.Timer_1:172:32)
                                          00:06:06.962	warn	javascript.0 at Object.main (script.js.Sigi.Timer_1:933:5)
                                          00:06:06.962	warn	javascript.0 at script.js.Sigi.Timer_1:173:39
                                          00:06:06.962	warn	javascript.0 at compareCond (script.js.Sigi.Timer_1:172:32)
                                          00:06:06.962	warn	javascript.0 at Object.main (script.js.Sigi.Timer_1:933:5)
                                          00:06:06.962	warn	javascript.0 at script.js.Sigi.Timer_1:173:39
                                          00:06:06.962	warn	javascript.0 at compareCond (script.js.Sigi.Timer_1:172:32)
                                          00:06:06.962	warn	javascript.0 at Object.main (script.js.Sigi.Timer_1:933:5)
                                          00:06:06.962	info	javascript.0 script.js.Sigi.Timer_1: States werden neu erstellt! Script bitte erneut starten!
                                          00:06:06.962	info	javascript.0 script.js.Sigi.Timer_1: Schedule für "Licht_Vorraum:1 #1" (1) nicht vorhanden! Kein Löschen notwendig!
                                          00:06:06.962	info	javascript.0 script.js.Sigi.Timer_1: Schedule für "Licht_Vorraum:1 #2" (2) nicht vorhanden! Kein Löschen notwendig!
                                          00:06:06.962	info	javascript.0 script.js.Sigi.Timer_1: Schedule für "Steckdose Terrasse #1" (21) nicht vorhanden! Kein Löschen notwendig!
                                          00:06:06.962	info	javascript.0 script.js.Sigi.Timer_1: Schedule für "Steckdose Terrasse #2" (22) nicht vorhanden! Kein Löschen notwendig!
                                          00:06:06.962	info	javascript.0 script.js.Sigi.Timer_1: Schedule für "Philips_hue #1" (41) nicht vorhanden! Kein Löschen notwendig!
                                          00:06:06.962	info	javascript.0 script.js.Sigi.Timer_1: Schedule für "Philips_hue #2" (42) nicht vorhanden! Kein Löschen notwendig!
                                          00:06:06.962	info	javascript.0 script.js.Sigi.Timer_1: Schedule für "Stehlampe Wohnzimmer #1" (61) nicht vorhanden! Kein Löschen notwendig!
                                          00:06:06.962	info	javascript.0 script.js.Sigi.Timer_1: Schedule für "Stehlampe Wohnzimmer #2" (62) nicht vorhanden! Kein Löschen notwendig!
                                          00:06:06.967	error	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:503:40)
                                          00:06:06.968	error	javascript.0 at Object.<anonymous> (script.js.Sigi.Timer_1:503:40)
                                          00:06:06.979	warn	javascript.0 at tableMain (script.js.Sigi.Timer_1:1118:9)
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • G
                                            GiuseppeS @GiuseppeS last edited by GiuseppeS

                                            @sigi234

                                            Für alle Timer können individuell über die VIS Bedingungen angegeben werden. So werden Timer nur gesetzt, wenn die hinterlegten Bedingungen erfüllt sind. Die States, die als Bedingungen gewählt werden sollen, müssen über eine Aufzählung integriert werden, z.B. "enum.functions.timerconditions":

                                            // Eine Aufzählung für States der Bedingungen:
                                            var deviceCond = "enum.functions.timerconditions";
                                            

                                            Wenn die Aufzählung für die Bedingungen verändert wird (States werden gelöscht oder hinzugefügt), dann muss nur das Skript neu gestartet werden. Die Auswahl-Liste wird dann neu erstellt.

                                            Also selbst eine Aufzählung erstellen und deine States einpflegen, die du zukünftig in den Timern verwenden willst.
                                            Zum Beispiel eignen sich hier Türsensoren, wichtige States wie AtHome (was jeder iwie verwendet) usw.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            775
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            template vis
                                            47
                                            919
                                            229465
                                            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