Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Vorlage] Heizungsthermostatsteuerung 2.1 - Script

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Vorlage] Heizungsthermostatsteuerung 2.1 - Script

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

      Ich habe vor ca. 2 Wochen auf Redis umgestellt. Aber tatsächlich weder am Heizungsscript, noch an den entsprechenden Vis modifiziert.

      Kann Redis die Ursache sein?

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

        @pxstd:

        Ich habe vor ca. 2 Wochen auf Redis umgestellt. Aber tatsächlich weder am Heizungsscript, noch an den entsprechenden Vis modifiziert.

        Kann Redis die Ursache sein? `
        Redis an sich macht m.E. gar keine Probleme. Ich nutze es auch.

        Die eigentliche Umstellung passiert ja auf Konsolenebene. Da sehe ich auch keine Ursache.

        Lass uns dass mal ansehen. Ich sende dir eine PN.

        vG looxer

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

          Ich hatte gerade exakt das gleiche Verhalten. Die ganzen Profile waren leer und der Feiertag ist auch ins Leere gelaufen.

          Ursache bei mir:

          Ich habe ioBroker in einem Docker Container und der war irgendwie kaputt. Also neuen Container erstellt, aber das Image von buanet hat kein redis drin. Das hatte ich beim neu erstellen nicht berücksichtigt. ioBroker ist gestartet, dachte aber er muss irgendwie mit redis, das war aber nicht da und das hat dann in diese konstellation wohl dazu geführt dass es irgendwelche Inkonsistenzen gab, Ich habe redis installiert und konfiguriert (wg Multihost)

          Danach waren dann die Profile weg und auch die Feiertage. Feiertage instanz einmal neu gestartet und alles prima. Profile muss ich aber neu machen 😢

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

            @OstfrieseUnterwegs:

            Danach waren dann die Profile weg und auch die Feiertage. Feiertage instanz einmal neu gestartet und alles prima. Profile muss ich aber neu machen 😢 `
            Hi,

            falls das nochmal passiert:

            das angehängte Programm sichert alle states und speichert diese in eine externe datei.

            Das Ergebnis ist ein Javascript Programmdass die States wieder herstellt und muss nur einmal laufen gelassen werden.

            Einstellungen:

            • Zielpfad der zu erstellenden Datei

            • QuellPfad spezifierung nach "javascript.0. z.B. Heizung.Heizplan.

            Vielleicht hilft es mal.

            vG Looxer
            305_save_states.txt

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

              Hallo looxer,

              wenn noch Interesse besteht, könnte ich die neue Version des Skriptes auch testen.

              1 Reply Last reply Reply Quote 0
              • Mic
                Mic Developer last edited by

                @looxer01:

                das angehängte Programm sichert alle states und speichert diese in eine externe datei. `

                Super, das wär vielleicht auch was für die Doku, also Link auf dieses Script 🙂

                1 Reply Last reply Reply Quote 0
                • Mic
                  Mic Developer last edited by

                  Hi Looxer,

                  mir erschließt sich der Grund für Deine Funktion "Calculate_SollTemp", hier mit Schritten zu arbeiten, nicht wirklich:

                  ! if (Calc_type === "CorrectTemp") { MinVal = 0; // Liste faengt mit 0 an MaxVal = 5; // Der Maxvalue ist Positiv und Negativ StepVal = 0.5; SollTemp = SollTemp * StepVal; // Errechnung der SollTemp fuer positive Werte if (SollTemp > (MaxVal - MinVal)) { SollTemp = (SollTemp * -1 +StepVal) + MaxVal; // fuer Negative Werte } } !

                  Du machst das ja auch dann in den Widgets entsprechend, also:

                  Werte: 0;1;2;3;4;5;6;7;8;9;10;11;12,13;14;15;16;17;18;19;20

                  Texte: 0;0.5;1.0;1.5;2.0;2.5;3.0;3.5;4.0;4.5;5.0;-0.5;-1.0;-1.5;-2.0;-2.5;-3.0;-3.5;-4.0;-4.5;-5.0

                  Ich kam darauf, weil ich folgenden Use Case habe:

                  Z.B. heizt das Bad zu gewissen Zeiten auf 23°C. Bei "Abwesenheit Urlaub" soll das Bad durchgängig auf 17°C stehen. Also Minimaltemperatur auf 17°C stellen, aber die Absenkung im Widget erlaubt maximal 5°C, wodurch man auf 23-5 = 18°C und nicht 17°C kommt.

                  Ein einfaches anpassen des Widgets ist nicht möglich, also ein erweitern um 6, 7, 8, 9, 10° Absenkung.

                  Ich habe jetzt zum Testen einfach mal im Widget folgendes eingetragen:

                  Werte: 0;-1;-2;-3;-4;-5;-6;-7;-8;-9;-10

                  Texte: 0;-1;-2;-3;-4;-5;-6;-7;-8;-9;-10

                  Dann im Script die Umwandlung durch die Funktion "Calculate_SollTemp" herausgenommen, außerdem "+" statt "-" gesetzt. D.h. ein setzen von "-7" im Widget setzt die Temperatur um maximal "-7 °C" herunter.

                  ! if (OverruleTab[x][0] === "UrlaubAbwesend" && getState(StateUrlaubAbwesenheit).val) { // Wenn Urlaub dann Absenkung bis Mindestemperatur if (getState(path + "." + room + "." + "Profil-" + Profil + "." + StatePP_UrlaubAbsenkung).val !== 0) { // Absenkung geplant ? SollTempSched = SollTempSched + getState(path + "." + room + "." + "Profil-" + Profil + "." + StatePP_UrlaubAbsenkung).val; if (SollTempSched < Calculate_SollTemp(getState(path + "." + room + "." + "Profil-" + Profil + "." + StatePP_MinimaleTemperatur).val,"SetTemp")) { // Minimaltemp zieht SollTempSched = Calculate_SollTemp(getState(path + "." + room + "." + "Profil-" + Profil + "." + StatePP_MinimaleTemperatur).val,"SetTemp"); SaveStatus("UrlaubAbwesend", room, true); // mit Mindesttemperatur return SollTempSched; } SaveStatus("UrlaubAbwesend", room,false); return SollTempSched; } } !
                  Das funktioniert soweit auch wunderbar im ersten Test.

                  Daher stellt sich mir die Frage, warum hier mit der Funktion "Calculate_SollTemp" überhaupt gearbeitet wird.

                  Hat sicherlich einen Grund, denn so zum Spaß baut man das nicht ein 🙂 Ich komme nur nicht drauf 🙂

                  Danke,

                  Mic

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

                    So! Vorerst scheinen alle Probleme gelöst.

                    Nach der Installation von Redis zur Auslagerung der States, hat es mir im Heizungsscript alle States für den Heizplan rausgehauen.

                    Ich habe nun mit der wunderbaren Hilfe von looxer1 alles nochmal zurückgesetzt, alle Objekte gelöscht, meine "defekten" Aufzählungen repariert und das Script neugestartet.

                    Leider musste ich alle meine Heizpläne nachpflegen, aber der WAF Faktor ist rapide gestiegen, seitdem die Heizung im Wohnzimmer wieder tut was Sie soll 🙂

                    Danke looxer1!

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

                      @Mic:

                      mir erschließt sich der Grund für Deine Funktion "Calculate_SollTemp", hier mit Schritten zu arbeiten, nicht wirklich: `
                      Hi Mic,

                      das ist dem Widget geschuldet. Ich hätte natürlich die Gradzahlen parallel mit der Wertenummer setzen können.

                      Mir war es aber wichtig auch negative Werte zur Verfügung zu stellen. So kann aus einer Party Absenkung auch eine PartyAnhebung gemacht werden.

                      Ich hatte ja mal angefangen die Anhebungen und Absenkungen zu erweitern. Muss ich mir nochmal ansehen.

                      vG Looxer

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

                        @looxer01:

                        das angehängte Programm sichert alle states und speichert diese in eine externe datei.

                        Das Ergebnis ist ein Javascript Programmdass die States wieder herstellt und muss nur einmal laufen gelassen werden.

                        Einstellungen:

                        • Zielpfad der zu erstellenden Datei

                        • QuellPfad spezifierung nach "javascript.0. z.B. Heizung.Heizplan.

                        Vielleicht hilft es mal.

                        vG Looxer `

                        Super, danke!

                        1 Reply Last reply Reply Quote 0
                        • T
                          TDCroPower last edited by

                          Habe mir jetzt mal die Dokumente größtenteils durchgelesen.

                          Da es verschiedene Aussagen gibt bezüglich steuern von Homematic IP HKT über externe Temperatursensoren wollte ich mal kurz und knapp nachfragen…

                          Ist es möglich mit dem Skriptpaket hier Homematic IP HKT Geräte mit z.B. Xiaomi Temperatur und Tür/Fenstersensoren zu steuern?

                          Meine Installation besteht und wartet jetzt nur noch auf seine Steuerfunktionen.

                          Meine Installation: Raspberry mit piVCCU 3.41.11 + ioBroker 3.5.10 mit 4x Homematic IP HKT, 4x Xiaomi Temperatursensoren und 6x Xiaomi Tür/Fenstersensoren mit CUxD in Homematic hinterlegt.

                          Auf Hinweise wäre ich dankbar.

                          Programmierkenntnisse sind ausreichend vorhanden um den Code und die Anpassungssachen zu verstehen, sind ja aber soweit eigentlich gut beschrieben.

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

                            @TDCroPower:

                            Ist es möglich mit dem Skriptpaket hier Homematic IP HKT Geräte mit z.B. Xiaomi Temperatur und Tür/Fenstersensoren zu steuern? `
                            Hi,

                            Das Script kann Xiaomi Fenster-Sensoren mit HM verbinden.

                            Externe Sensoren aber leider nicht, da ein Eingriff in Soft- oder Hardware der HM-Geräte erforderlich ist.

                            Wenn du allerdings von einer Offset Programmierung sprichst, dann wäre das grundsätzlich möglich. Dazu hatte ich mir schon Gedanken habe es aber aus zeitgründen nicht realieren können

                            Im Script selber gibt es eine Stelle (overrule.) die jegliche geplante Temperatur übersteuern kann. Dabei kann es zu einer negativen oder positven Abweichung zur eigentlichen SollTemp kommen was auch als Offset verstanden werden kann. Ein Offset muss ja nicht ein statischer Wert sein sondern kann auch Intelligenz erhalten. (z.B. durch externe Thermostate)

                            Ist es das was du dir vorgestellt hast ?

                            vG Looxer

                            1 Reply Last reply Reply Quote 0
                            • Mic
                              Mic Developer last edited by

                              @looxer01:

                              das ist dem Widget geschuldet. Ich hätte natürlich die Gradzahlen parallel mit der Wertenummer setzen können.

                              Mir war es aber wichtig auch negative Werte zur Verfügung zu stellen. So kann aus einer Party Absenkung auch eine PartyAnhebung gemacht werden.

                              Ich hatte ja mal angefangen die Anhebungen und Absenkungen zu erweitern. Muss ich mir nochmal ansehen. `

                              Danke für Deine Rückmeldung. Nun, das Widget (jqui - Select ValueList) kann ja mit beiden umgehen, ich hatte oben exemplarisch bei meinem Test die Grad-Zahlen direkt eingegeben und hat so wunderbar funktioniert (nach Entfernen der Umwandlung durch die Calculate_SollTemp-Funktion in Deinem Script)
                              @Mic:

                              Werte: 0;-1;-2;-3;-4;-5;-6;-7;-8;-9;-10
                              Texte: 0;-1;-2;-3;-4;-5;-6;-7;-8;-9;-10
                              
                              ```` `  
                              

                              Daher denke ich, man könnte direkt auf die Grad-Zahlen umsteigen.

                              Noch ein weiteres Feedback zu meinen Tests bezüglich Urlaub und zwischenzeitlicher Anwesenheit:

                              Ich arbeite nun auch mit ical für die Urlaubsplanung (Urlaub_Abwesend). Hier wollte ich, dass im VIS angezeigt wird, ab wann, oder bis wann Urlaub_Abwesend geplant ist. Habe hierzu folgendes gemacht:

                              1. Separate Instanz ical Adapter, damit keine anderen Termine angezeigt werden

                              2. Folgendes Widget hinzugefügt:

                              ! ````
                              [{"tpl":"tplValueListHtml8","data":{"oid":"javascript.1.Heizung.Heizplan.GlobaleParameter.Urlaub_Abwesend","count":"1","value0":"Aus: geplant ab {ical.1.data.html}","value1":"An: bis {ical.1.data.html}","style0":"","style1":"color: #FD3166;","test_list":"0","name":"","value2":"auf","style2":"color: red","html_prepend":"","g_visibility":true,"visibility-cond":"==","visibility-val":"true","visibility-groups-action":"hide","g_last_change":false,"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,"g_signals":false,"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,"g_gestures":false,"g_css_shadow_padding":false,"g_css_border":false,"g_css_background":false,"visibility-oid":"javascript.1.Heizung.Heizplan.GlobaleParameter.ICAL-Events_Aktiv"},"style":{"left":"139px","top":"160px","z-index":"25","color":"","text-align":"right","width":"218px","height":"22px","line-height":"","font-size":"","font-weight":"normal","font-family":"","text-shadow":""},"widgetSet":"basic"}]

                              
                              Ergebnis - siehe Zeile "Urlaubsmodus" in den Screenshots:
                              
                              1.) Urlaub beginnt ab 31.01.2019:
                               ![6940_ip_hz2.png](/assets/uploads/files/6940_ip_hz2.png) 
                              
                              2.) Urlaub Abwesend ist aktuell im Kalender, geplant bis 29.01.2019:
                               ![6940_ip3.jpg](/assets/uploads/files/6940_ip3.jpg) 
                              
                              (Danke an @Hiltex - [https://forum.iobroker.net/viewtopic.php?f=30&amp;t=20692](https://forum.iobroker.net/viewtopic.php?f=30&amp;t=20692))
                              
                              Was ich mir nun noch wünsche wäre ein Datenpunkt, dem ich sage "Bin Anwesend", damit temporär der Urlaubsmodus nicht greift. Ich arbeite nicht mit Anwesenheitserkennung, und die Widgets "Anwesend" und "Urlaub Anwesend" scheinen nicht zu greifen, wenn man sie anklickt. Hab auch schon mit "OverruleTab" im Script getestet, aber half nicht wirklich.
                              
                              Danke,
                              
                              Mic
                              1 Reply Last reply Reply Quote 0
                              • L
                                looxer01 last edited by

                                @Mic:

                                Was ich mir nun noch wünsche wäre ein Datenpunkt, dem ich sage "Bin Anwesend", damit temporär der Urlaubsmodus nicht greift. Ich arbeite nicht mit Anwesenheitserkennung, und die Widgets "Anwesend" und "Urlaub Anwesend" scheinen nicht zu greifen, wenn man sie anklickt. Hab auch schon mit "OverruleTab" im Script getestet, aber half nicht wirklich. `
                                Hi,

                                also die Variable gibt es ja (unter global) Wenn du keine Anwesenheitserkennung nutzt kannst du sie manuell setzen.

                                Meinst du, dass du die über ICAL setzen willst ?

                                vG Looxer

                                1 Reply Last reply Reply Quote 0
                                • Mic
                                  Mic Developer last edited by

                                  @looxer01:

                                  also die Variable gibt es ja (unter global) Wenn du keine Anwesenheitserkennung nutzt kannst du sie manuell setzen.

                                  Meinst du, dass du die über ICAL setzen willst ? `

                                  Hi Looxer,

                                  nein, nicht über ICAL, sondern über VIS.

                                  Wenn ich den Datenpunkt "javascript.1.Heizung.Heizplan.GlobaleParameter.Urlaub_Anwesend" auf "true" setze, dann klappt das nicht wirklich, und das Script scheint das zu überschreiben, alle paar Sekunden springt die Status-Anzeige zwischen "Temperaturanpassung - Urlaub Abwesend" und "Urlaub anwesend - Plannung ist Feiertag". Daher hatte ich vermutet, das funktioniert nur, wenn im ICAL da zusätzlich "Urlaub_Anwesend" als Termin gesetzt ist, denn dann ging es beim Testen. Aber ich wollte das rein über VIS gelöst haben.

                                  Viele Grüße

                                  Mic

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

                                    @Mic:

                                    Wenn ich den Datenpunkt "javascript.1.Heizung.Heizplan.GlobaleParameter.Urlaub_Anwesend" auf "true" setze, dann klappt das nicht wirklich, und das Script scheint das zu überschreiben, alle paar Sekunden springt die Status-Anzeige zwischen "Temperaturanpassung - Urlaub Abwesend" und "Urlaub anwesend - Plannung ist Feiertag". Daher hatte ich vermutet, das funktioniert nur, wenn im ICAL da zusätzlich "Urlaub_Anwesend" als Termin gesetzt ist, denn dann ging es beim Testen. Aber ich wollte das rein über VIS gelöst haben. `
                                    Hi Mic,

                                    also es sollte so funktionieren

                                    • ICAL in VIS deaktivieren

                                    • dann kann Urlaub anwesend ode Urlaub abwesend gesetzt werden.

                                    Bei Urlaub Anwesend wird lediglich der Feiertagsschedule genutzt. Also keine direkte Temperatureinstellung.

                                    Bei Urlaub Abwesend wird eine Temp Absenkung durchgeführt.

                                    Willst du beides gleichzeitig nutzen ?

                                    vG Looxer

                                    1 Reply Last reply Reply Quote 0
                                    • Mic
                                      Mic Developer last edited by

                                      @looxer01:

                                      Bei Urlaub Anwesend wird lediglich der Feiertagsschedule genutzt. Also keine direkte Temperatureinstellung. `
                                      Das ist auch prima so, macht absolut Sinn und ist intuitiv für den Anwender.

                                      @looxer01:

                                      also es sollte so funktionieren

                                      • ICAL in VIS deaktivieren

                                      • dann kann Urlaub anwesend ode Urlaub abwesend gesetzt werden. `

                                      Mein Use Case wäre folgender: Wider Erwarten ist man trotz gesetzter Urlaubsplanung von x Tagen für y Tage zwischendurch zu Hause, dann drückt man einfach im VIS den Button "Bin da - Urlaub Anwesend".

                                      ICAL ausschalten wäre da ein zusätzlicher Schritt, für mich kein Problem, aus Sicht des "WAF" wäre es halt cool, wenn das nur mit einem Button geht.

                                      Aber bitte mach Dir hier keine Mühe, geht auch so alles prima mit dem Script und ist nur ne Kleinigkeit 🙂

                                      1 Reply Last reply Reply Quote 0
                                      • D
                                        Denkra TeamSpeak last edited by

                                        Guten morgen

                                        Ich habe es mit dem Kalender jetzt soweit eingerichtet das er auch die Profile umschaltet nur gibt er mir jetzt in Script unmengen an Warnungen raus. Woran kann das liegen?

                                        P.S.: Wer lesen kann ist klar im Vorteil.

                                        So das Problem ist gelöst nur kommt nun das nächste. Ich habe 3 Profile angelegt zwischen denen ich hin und her schalten kann. Früh, Spät und Nachtschicht. Spät und Nachtschicht zeigt er mirt auch an das es ein Cal Profil ist. Fei Frühschicht also Profil 1 springt er zwar auf Profil 1 um aber er zeigt nicht an das es ein Cal Profil ist.

                                        1 Reply Last reply Reply Quote 0
                                        • K
                                          K-L-S last edited by

                                          Hallo,

                                          ist es vorgesehen für das Programm eine Dash-Oberfläche für Node-Red anzubieten?

                                          Danke …

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

                                            Hi,

                                            @Mic:

                                            Mein Use Case wäre folgender: Wider Erwarten ist man trotz gesetzter Urlaubsplanung von x Tagen für y Tage zwischendurch zu Hause, dann drückt man einfach im VIS den Button "Bin da - Urlaub Anwesend".

                                            ICAL ausschalten wäre da ein zusätzlicher Schritt, für mich kein Problem, aus Sicht des "WAF" wäre es halt cool, wenn das nur mit einem Button geht. `
                                            Dazu wäre es notwendig ICAL Aenderungen und manuelle Aenderungen gleichzeitig zuzulassen.

                                            Hatte es mir vor einiger Zeit angesehen und es wäre recht aufwendig.

                                            @Denkra:

                                            So das Problem ist gelöst nur kommt nun das nächste. Ich habe 3 Profile angelegt zwischen denen ich hin und her schalten kann. Früh, Spät und Nachtschicht. Spät und Nachtschicht zeigt er mirt auch an das es ein Cal Profil ist. Fei Frühschicht also Profil 1 springt er zwar auf Profil 1 um aber er zeigt nicht an das es ein Cal Profil ist. `
                                            ja, das kann gut sein, denn das Profil1 ist sozusagen das Standardprofil. Muss ich mir ansehen.

                                            In der nächsten Version gibt es ohnehin eine Aenderung an dieser Stelle. Dann wird das Profil1 automatisch gewählt, wenn ein vorheriges ICAL Profil eingestellt war aber ausgelaufen ist.

                                            @K-L-S:

                                            ist es vorgesehen für das Programm eine Dash-Oberfläche für Node-Red anzubieten? `
                                            Das Script unterstützt das weil es keine Programmierung im Kontext zur Oberfläche gibt (eine Ausnahme gibt es, die ist aber abstellbar)

                                            Ich selber kenne das Node-Red Dashboard nicht. Willst du das evt selber einstellen. Wäre super wenn wir das zur Verfügung stellen könnten.

                                            Wenn es Leute gibt, die mit entwickeln wollen (wie z.B. Oberflächen), dann würde ich auch schlussendlich auf Github gehen. Dort funktioniert die Collaboration gut.

                                            vG Looxer

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            956
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            climate heating javascript template
                                            115
                                            1127
                                            348479
                                            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