Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Test Adapter iQontrol 2.0.x Vis (Entwicklungs-Thread)

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

      @s-bormann
      Hi, siehst du irgendeine Möglichkeit die .js und .css Dateien im Ordner /userwidgets direkt über die iQontrol Config Seite bearbeiten zu können?

      Dieses ständige hochladen bei Änderungen nervt etwas 😉

      s.bormann 1 Reply Last reply Reply Quote 0
      • dslraser
        dslraser Forum Testing Most Active @s.bormann last edited by dslraser

        @s-bormann sagte in Test Adapter iQontrol 1.2.x:

        Sag mal, kann man mit den neuen ADDITIONAL_CONTROLS nicht so was basteln? Eine value-List, in der man den Sender auswählt, und darunter ein oder mehrere Strings mit den EPG-Infos. Dahinter steckt dann ein Blockly-Script, dass dann die String-Datenpunkte entsprechend der Auswahl der value-List befüllt.

        meinst Du so in etwa ?

        Bildschirmfoto 2020-10-07 um 22.18.34.png

        EDIT: übrigens sind beim Start trotz anderer Einstellung alle Sektionen geöffnet

        Bildschirmfoto 2020-10-07 um 22.46.12.png

        V s.bormann 2 Replies Last reply Reply Quote 0
        • V
          vepman @dslraser last edited by

          @dslraser sagte in Test Adapter iQontrol 1.2.x:

          EDIT: übrigens sind beim Start trotz anderer Einstellung alle Sektionen geöffnet

          Verstehe ich nicht. Egal was ich einstelle, alle Sektionen bleiben zugeklappt.

          K 1 Reply Last reply Reply Quote 1
          • K
            Kueppert @vepman last edited by

            @vepman ist bei mir genauso 😉

            1 Reply Last reply Reply Quote 1
            • dslraser
              dslraser Forum Testing Most Active last edited by

              @blackeagle998 @s-bormann

              seit dem letzten Update auf 1.3.1 geht bei mir die Vorhersage mit klick auf das "unsichtbare" Icon oben links nicht mehr auf ?
              @blackeagle998 geht das bei Dir noch ?

              Screenshot_20201008-214159_Chrome.jpg

              Ich habe eben nochmal drüber installiert und auch einen upload gemacht.

              B 2 Replies Last reply Reply Quote 0
              • B
                blackeagle998 @dslraser last edited by

                @dslraser @s-bormann
                Hmm stimmt, jetzt lässt sich der virtuelle State einer Widget Kachel nicht mehr schalten, wenn das Icon blank ist.
                Kann man die Option pro Kachel steuerbar machen?

                s.bormann 1 Reply Last reply Reply Quote 0
                • B
                  blackeagle998 @dslraser last edited by

                  @dslraser
                  Ich nutze mittlerweile das Wettericon rechts oben, um die Wettervorschau anzuzeigen / auszublenden.
                  Wäre das für dich eine Option?

                  Wenn ja, müsstest du mir mal dein komplettes Skript zur Verfügung stellen, dann kann ich dir helfen, das anzupassen.
                  Dafür bräuchtest du lediglich einen zusätzlichen Datenpunkt (boolean, switch), der über true/false die Anzeige (true = Kachel aktiv = Größe 3x2, false = Kachel inaktiv = Größe 3x1) regelt.

                  dslraser 1 Reply Last reply Reply Quote 0
                  • dslraser
                    dslraser Forum Testing Most Active @blackeagle998 last edited by dslraser

                    @blackeagle998
                    Moin, danke für Deine Hilfe. Das Script ist noch das hier aus dem Forum (V7 ohne Müll)

                    Edit: müßte das hier sein
                    https://forum.iobroker.net/post/491770

                    const DP_Uhr_digital = '0_userdata.0.Uhr.Digital_Uhr_HTML_Uhrzeit_und_Datum_V7';
                    
                    fctInit();
                    
                    function fctInit(){
                     if(!existsState(DP_Uhr_digital)) {
                         createState(DP_Uhr_digital,
                             {type: 'string', name: 'iQontrol Uhr', role: 'value', read: true , write: true}
                         );
                     }
                     setStateDelayed(DP_Uhr_digital, fctUhrzeitDatumWetter_V7(), 1000);
                     schedule("*/10 * * * * *", function () {
                         setState(DP_Uhr_digital, fctUhrzeitDatumWetter_V7());
                     })
                    }
                    
                    function fctUhrzeitDatumWetter_V7() {
                      let str_Uhrzeit         = String(formatDate(new Date(), "hh:mm"));
                      let str_Datum           = String(formatDate(new Date(), "DD.MM.YYYY"));
                      let str_Wochentag       = String(formatDate(new Date(), "WW", "de"));
                      
                      let str_color_body      = '#005c78';
                      let str_color_cell      = '#47575c';
                      let str_color_font      = 'Silver';
                     
                      let str_position_font   = 'left'
                      let str_Tageszeit       = 'Tag';
                      let str_HTML            = '';
                      let str_HTML_style      = '';
                      let image_Wetter        = '';
                    
                      //in diesem iQontrol Unterordner liegen die Wetter-Icons
                      image_Wetter        = './../iqontrol.meta/userimages/usericons/wetter/';
                    
                    // ##########################################################################
                    // CSS Style (Formatierung der HTML Elemente)
                    // ##########################################################################
                      str_HTML_style = str_HTML_style + '<style>';
                      str_HTML_style = str_HTML_style + 'body {';
                      str_HTML_style = str_HTML_style + 'background-color:' + str_color_body + ';';
                      str_HTML_style = str_HTML_style + '}';
                    
                      str_HTML_style = str_HTML_style + 'span {';
                      //Rahmen: abgerundete Ecken (5px), Strichstärke (0px = aus) und Farbe
                      //str_HTML_style = str_HTML_style + 'border-radius:5px;border-collapse:separate;border:1px solid gainsboro;border-color:White;';
                      //Textausrichtung
                      str_HTML_style = str_HTML_style + 'text-align:' + str_position_font + ';';
                      //Schriftfarbe
                      str_HTML_style = str_HTML_style + 'color:' + str_color_font + ';';
                      //Wer keine Hintergrundfarbe für die Boxen will, kommentiert die nachfolgende Zeile aus oder löscht sie.
                      //str_HTML_style = str_HTML_style + 'background-color:' + str_color_cell + ';';
                      str_HTML_style = str_HTML_style + '}';
                    
                      str_HTML_style = str_HTML_style + 'td {';
                      str_HTML_style = str_HTML_style + 'border-width:1px;';
                      str_HTML_style = str_HTML_style + 'border-style:solid;';
                      str_HTML_style = str_HTML_style + 'border-color:black;';
                      str_HTML_style = str_HTML_style + '}';
                    
                      str_HTML_style = str_HTML_style + '.container_column {';
                      str_HTML_style = str_HTML_style + 'display:flex;';
                      //Elemente werden untereinander dargestellt
                      str_HTML_style = str_HTML_style + 'flex-direction: column;';
                      str_HTML_style = str_HTML_style + 'justify-content: flex-start;';
                      //Rahmen: abgerundete Ecken (5px), Strichstärke (0px = aus) und Farbe
                      //str_HTML_style = str_HTML_style + 'border-radius:5px;border-collapse:separate;border:2px solid gainsboro;border-color:yellow;';
                      str_HTML_style = str_HTML_style + '}';
                    
                      str_HTML_style = str_HTML_style + '.container_row {';
                      str_HTML_style = str_HTML_style + 'display: flex;';
                      //Elemente werden untereinander dargestellt
                      str_HTML_style = str_HTML_style + 'flex-direction: row;';
                      str_HTML_style = str_HTML_style + 'justify-content: space-between;';
                      //Rahmen: abgerundete Ecken (5px), Strichstärke (0px = aus) und Farbe
                      //str_HTML_style = str_HTML_style + 'border-radius:5px;border-collapse:separate;border:2px solid gainsboro;border-color:yellow;';
                      str_HTML_style = str_HTML_style + '}';
                    
                      str_HTML_style = str_HTML_style + 'input {';
                      str_HTML_style = str_HTML_style + 'height:10vw;';
                      str_HTML_style = str_HTML_style + 'width:10vw;';
                      str_HTML_style = str_HTML_style + '}';
                    
                      str_HTML_style = str_HTML_style + '.img_wetter {';
                      str_HTML_style = str_HTML_style + 'height:15vw;';
                      str_HTML_style = str_HTML_style + 'width:15vw;';
                      str_HTML_style = str_HTML_style + '}';
                     
                      //Hier habt ihr die Möglichkeit, CSS Eigenschaften für jede Box einzeln einzutragen.
                      //Bspw. könnt ihr hier eine separate Hintergrundfarbe einstellen.
                      //Außerdem steuert ihr hier die Schriftgrößen der einzelnen Boxen
                      str_HTML_style = str_HTML_style + '.box_uhr {font-size:14vmax;}';
                      str_HTML_style = str_HTML_style + '.box_datum {font-size:4vmax;text-align:center;}';
                      str_HTML_style = str_HTML_style + '.box_wetter {font-size:4vmax;margin-right:1.5vw;text-align:center;}';
                      
                      str_HTML_style = str_HTML_style + '.table_Wettervorschau {';
                      str_HTML_style = str_HTML_style + 'margin-top:3vw;';
                      str_HTML_style = str_HTML_style + 'border-collapse: collapse;';
                      str_HTML_style = str_HTML_style + 'font-size:3vmax;';
                      str_HTML_style = str_HTML_style + 'color:' + str_color_font + ';';
                      str_HTML_style = str_HTML_style + '}';
                      str_HTML_style = str_HTML_style + '</style>';
                    
                    // ##########################################################################
                    // Prüfen ob Tag oder Nacht um Sonne oder Mond Icons anzuzeigen
                    // ##########################################################################
                      //Wenn ihr den nachfolgenden Datenpunkt 'javascript.0.Astro.Tageszeit.current' auch habt, könnt ihr das einkommentieren --> /* und */ löschen
                      //--> dafür gibt es ein ASTRO Skript hier im Forum
                      /*
                      switch (getState('javascript.0.Astro.Tageszeit.current').val){
                          case "Sonnenuntergang":
                          case "Abenddämmerung":
                          case "Nacht":
                          case "Morgendämmerung":
                              str_Tageszeit = 'Nacht';
                              break;
                          default:
                              break;
                      }
                      */
                    
                    // ##########################################################################
                    // Ab hier werden die verschiedenen HTML Flex Container zusammengebaut
                    // ##########################################################################
                      //Box 1 = Uhrzeit und Wettersymbol
                      str_HTML = str_HTML + str_HTML_style + '<div class="container_row">';
                      str_HTML = str_HTML + '<span class="box_uhr"><b>' + str_Uhrzeit + ' Uhr</b></span>';
                      if (str_Tageszeit == 'Tag'){
                          str_HTML = str_HTML + '<span><img class="img_wetter" src="' + image_Wetter + getState('daswetter.0.NextHours.Location_1.Day_1.current.symbol_value').val + '.png' + '"/></span>';
                      }else{
                          str_HTML = str_HTML + '<span><img class="img_wetter" src="' + image_Wetter + 'mond/' + getState('daswetter.0.NextHours.Location_1.Day_1.moon_symbol').val + '.png' + '"/></span>';
                      }
                      str_HTML = str_HTML + '</div>';
                    
                      //Box 2 = Wochentag/Datum, Abfallentsorgung und aktuelle Wetterdaten
                      str_HTML = str_HTML + '<div class="container_row">';
                      str_HTML = str_HTML + '<div class="container_column">';
                      str_HTML = str_HTML + '<span class="box_datum"><b><i>' + str_Wochentag + ', ' + str_Datum + '</i></b></span>';
                      str_HTML = str_HTML + '</div>';
                      str_HTML = str_HTML + '<div class="container_column">';
                      str_HTML = str_HTML + '<span class="box_wetter"><b><i>' + Math.round(getState('hm-rpc.0.0010D8A98AD4AC.1.ACTUAL_TEMPERATURE'/*Temperatursensor aussen ACTUAL TEMPERATURE*/).val) + '°C</i></b></span>';
                      if (str_Tageszeit == 'Tag'){
                          str_HTML = str_HTML + '<span class="box_wetter"><i>' + getState('daswetter.0.NextHours.Location_1.Day_1.current.symbol_desc').val + '</i></span>';
                      }else{
                          str_HTML = str_HTML + '<span class="box_wetter"><i>' + str_Tageszeit + '</i></span>';
                      }
                      
                      str_HTML = str_HTML + '</div>';
                      str_HTML = str_HTML + '</div>';
                    
                      //Box 3 = Wettervorschau
                      str_HTML = str_HTML + '<div class="container_column">';
                      str_HTML = str_HTML + '<table class="table_Wettervorschau">';
                    
                      str_HTML = str_HTML + '<tr>';
                      str_HTML = str_HTML + '<td>heute</td>';
                      str_HTML = str_HTML + '<td><img src="' + image_Wetter + getState('daswetter.0.NextHours.Location_1.Day_1.symbol_value').val + '.png' + '"/></td>';
                      str_HTML = str_HTML + '<td nowrap>' + getState('daswetter.0.NextHours.Location_1.Day_1.tempmin_value').val + '°C bis ';
                      str_HTML = str_HTML + getState('daswetter.0.NextHours.Location_1.Day_1.tempmax_value').val + '°C</td>';
                      //str_HTML = str_HTML + '<td>' + getState('daswetter.0.NextHours.Location_1.Day_1.humidity_value').val + '%</td>';
                      str_HTML = str_HTML + '<td align=left>' + getState('daswetter.0.NextHours.Location_1.Day_1.symbol_desc').val + '</td>';
                      str_HTML = str_HTML + '</tr>';
                    
                      str_HTML = str_HTML + '<tr>';
                      str_HTML = str_HTML + '<td>' + getState('daswetter.0.NextHours.Location_1.Day_2.day_name').val + '</td>';
                      str_HTML = str_HTML + '<td><img src="' + image_Wetter + getState('daswetter.0.NextHours.Location_1.Day_2.symbol_value').val + '.png' + '"/></td>';
                      str_HTML = str_HTML + '<td nowrap>' + getState('daswetter.0.NextHours.Location_1.Day_2.tempmin_value').val + '°C bis ';
                      str_HTML = str_HTML + getState('daswetter.0.NextHours.Location_1.Day_2.tempmax_value').val + '°C</td>';
                      //str_HTML = str_HTML + '<td>' + getState('daswetter.0.NextHours.Location_1.Day_2.humidity_value').val + '%</td>';
                      str_HTML = str_HTML + '<td align=left>' + getState('daswetter.0.NextHours.Location_1.Day_2.symbol_desc').val + '</td>';
                      str_HTML = str_HTML + '</tr>';
                    
                      str_HTML = str_HTML + '<tr>';
                      str_HTML = str_HTML + '<td>' + getState('daswetter.0.NextHours.Location_1.Day_3.day_name').val + '</td>';
                      str_HTML = str_HTML + '<td><img src="' + image_Wetter + getState('daswetter.0.NextHours.Location_1.Day_3.symbol_value').val + '.png' + '"/></td>';
                      str_HTML = str_HTML + '<td nowrap>' + getState('daswetter.0.NextHours.Location_1.Day_3.tempmin_value').val + '°C bis ';
                      str_HTML = str_HTML + getState('daswetter.0.NextHours.Location_1.Day_3.tempmax_value').val + '°C</td>';
                      //str_HTML = str_HTML + '<td>' + getState('daswetter.0.NextHours.Location_1.Day_3.humidity_value').val + '%</td>';
                      str_HTML = str_HTML + '<td align=left>' + getState('daswetter.0.NextHours.Location_1.Day_3.symbol_desc').val + '</td>';
                      str_HTML = str_HTML + '</tr>';
                    
                      str_HTML = str_HTML + '<tr>';
                      str_HTML = str_HTML + '<td>' + getState('daswetter.0.NextHours.Location_1.Day_4.day_name').val + '</td>';
                      str_HTML = str_HTML + '<td><img src="' + image_Wetter + getState('daswetter.0.NextHours.Location_1.Day_4.symbol_value').val + '.png' + '"/></td>';
                      str_HTML = str_HTML + '<td nowrap>' + getState('daswetter.0.NextHours.Location_1.Day_4.tempmin_value').val + '°C bis ';
                      str_HTML = str_HTML + getState('daswetter.0.NextHours.Location_1.Day_4.tempmax_value').val + '°C</td>';
                      //str_HTML = str_HTML + '<td>' + getState('daswetter.0.NextHours.Location_1.Day_4.humidity_value').val + '%</td>';
                      str_HTML = str_HTML + '<td align=left>' + getState('daswetter.0.NextHours.Location_1.Day_4.symbol_desc').val + '</td>';
                      str_HTML = str_HTML + '</tr>';
                    
                      str_HTML = str_HTML + '<tr>';
                      str_HTML = str_HTML + '<td>' + getState('daswetter.0.NextHours.Location_1.Day_5.day_name').val + '</td>';
                      str_HTML = str_HTML + '<td><img src="' + image_Wetter + getState('daswetter.0.NextHours.Location_1.Day_5.symbol_value').val + '.png' + '"/></td>';
                      str_HTML = str_HTML + '<td nowrap>' + getState('daswetter.0.NextHours.Location_1.Day_5.tempmin_value').val + '°C bis ';
                      str_HTML = str_HTML + getState('daswetter.0.NextHours.Location_1.Day_5.tempmax_value').val + '°C</td>';
                      //str_HTML = str_HTML + '<td>' + getState('daswetter.0.NextHours.Location_1.Day_5.humidity_value').val + '%</td>';
                      str_HTML = str_HTML + '<td align=left>' + getState('daswetter.0.NextHours.Location_1.Day_5.symbol_desc').val + '</td>';
                      str_HTML = str_HTML + '</tr>';
                    
                      str_HTML = str_HTML + '</table>';
                      str_HTML = str_HTML + '</div>';
                    
                      return str_HTML;
                    }
                    
                    

                    B 1 Reply Last reply Reply Quote 0
                    • B
                      blackeagle998 @dslraser last edited by blackeagle998

                      Hier stand was.

                      dslraser 2 Replies Last reply Reply Quote 2
                      • dslraser
                        dslraser Forum Testing Most Active @blackeagle998 last edited by

                        @blackeagle998
                        Danke Dir. Ich muß jetzt erstmal los. Probiere ich dann später und gebe Dir Rückmeldung.

                        1 Reply Last reply Reply Quote 0
                        • dslraser
                          dslraser Forum Testing Most Active @blackeagle998 last edited by dslraser

                          @blackeagle998 sagte in Test Adapter iQontrol 1.2.x:

                          Anschließend solltest du per Klick auf das Wetter-Icon oben rechts die Anzeige steuern können.
                          Probier mal bitte ob es geht.

                          Funktioniert prima. Danke Dir.

                          2_5188614552798891176.gif

                          1 Reply Last reply Reply Quote 1
                          • B
                            blackeagle998 last edited by blackeagle998

                            Hier stand was.

                            K C M 3 Replies Last reply Reply Quote 2
                            • K
                              Kueppert @blackeagle998 last edited by Kueppert

                              @blackeagle998 ich denke, das kannst du auf jeden Fall hier reinstellen. Ggf kann man das mit irgendwo beim Adapter packen als Idee zu einer Ideensammlung? 🙂
                              Ich hab noch den Vacuum v1, da gibts keine Räume, aber die restlichen Funktionen sollten funktionieren.

                              B dslraser 2 Replies Last reply Reply Quote 0
                              • B
                                blackeagle998 @Kueppert last edited by blackeagle998

                                @Kueppert
                                Hab's oben ergänzt 😉
                                Hmm kann sein, dass es momentan nur geht, wenn auch Räume gefunden werden.
                                Wusste nicht, dass es auch ohne Raumdefinitionen geht.

                                Probier es mal, wenn nicht, muss ich da nochmal ran...

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

                                  @blackeagle998 wofür ist das css- und js-file? ^^ Ansonsten hört sich das total easy an. Probiere ich später direkt mal aus ^^
                                  NACHTRAG: steht in Punkt 1 ^^

                                  1 Reply Last reply Reply Quote 0
                                  • dslraser
                                    dslraser Forum Testing Most Active @Kueppert last edited by

                                    @Kueppert sagte in Test Adapter iQontrol 1.2.x:

                                    Ich hab noch den Vacuum v1, da gibts keine Räume, aber die restlichen Funktionen sollten funktionieren.

                                    Ich habe auch noch den V1, mal schauen was da geht...

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      muuulle @s.bormann last edited by

                                      @s-bormann
                                      Magst du einmal einen kurzen Ausblick geben, was deine nächsten Schwerpunkte beim Adapter sind?

                                      Ich denke, dass ich nicht der einzige Neugierige bin 😊

                                      s.bormann 1 Reply Last reply Reply Quote 1
                                      • s.bormann
                                        s.bormann Most Active @dslraser last edited by

                                        @dslraser sagte in Test Adapter iQontrol 1.2.x:

                                        @s-bormann
                                        Ich habe bisher eine kleine Kachel als Wert benutzt um mir html Listen anzuzeigen.
                                        Eine aktive Kachel ist hell mit entsprechendem Symbol und eine inaktive mit anderem Symbol.

                                        aktiv

                                        Screenshot_20201007-203627_Chrome.jpg

                                        inaktiv

                                        Screenshot_20201007-203647_Chrome.jpg

                                        Liste als PopUp

                                        Screenshot_20201007-203301_Chrome.jpg

                                        Jetzt möchte ich das Ganze als Widget nutzen, das funktioniert auch soweit, bis auf eine Kleinigkeit. Ich bekomme den Überzug der Kachel nicht weg

                                        links als Wert /rechts als Widget

                                        Screenshot_20201007-203238_Chrome.jpg

                                        Das Widget an sich gefällt mir besser, da mehr Bildschirmfläche auf dem Handy benutzt wird

                                        Screenshot_20201007-203318_Chrome.jpg

                                        Wie bekomme ich den Überzug bzw. "Schleier" von dem 0,5x0,5 Icon weg ?

                                        Screenshot_20201007-211712_Chrome.jpg

                                        Hi,
                                        die neue Github-Version hat das jetzt als Option
                                        VG

                                        dslraser 1 Reply Last reply Reply Quote 0
                                        • s.bormann
                                          s.bormann Most Active @blackeagle998 last edited by s.bormann

                                          @blackeagle998 sagte in Test Adapter iQontrol 1.2.x:

                                          @s-bormann
                                          Hi, siehst du irgendeine Möglichkeit die .js und .css Dateien im Ordner /userwidgets direkt über die iQontrol Config Seite bearbeiten zu können?

                                          Dieses ständige hochladen bei Änderungen nervt etwas 😉

                                          Wir denken wohl oft an das Gleiche. Schau mal in der aktuellen github-Version 🙂

                                          8f05206b-517a-4d2c-a93e-81319c70f986-image.png

                                          1 Reply Last reply Reply Quote 1
                                          • s.bormann
                                            s.bormann Most Active @blackeagle998 last edited by

                                            @blackeagle998 sagte in Test Adapter iQontrol 1.2.x:

                                            @dslraser @s-bormann
                                            Hmm stimmt, jetzt lässt sich der virtuelle State einer Widget Kachel nicht mehr schalten, wenn das Icon blank ist.
                                            Kann man die Option pro Kachel steuerbar machen?

                                            Hi,
                                            ist jetzt als Option in der aktuellen Github-Version verfügbar (Mauszeiger-Events für Icon).
                                            VG

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            811
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            app dark-mode iqontrol responsive vis visualisierung visualization widget
                                            295
                                            7633
                                            5586078
                                            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