Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter Sprinkle Control 0.1.4 Latest

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Test Adapter Sprinkle Control 0.1.4 Latest

    This topic has been deleted. Only users with topic management privileges can see it.
    • Dirk Peter
      Dirk Peter @csp last edited by

      @csp

      edit: Ich glaube ich habe es kapiert. Während der Bewässerung wird gar nicht weiter die Bodenfeuchte für eine etwaige Verlängerung herangezogen, sondern lediglich VOR einer Bewässerung.
      Macht Sinn und würde sich dann auf alle Kreise auswirken...

      Ja genau zum Start der Bewässerung wird die Verlängerung berechnet und nicht zum Start der einzelnen Kreise.
      MfG Dirk Peter

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

        @dirk-peter

        Hallo, welchen DP soll ich nehmen für den Helligkeitssensors?
        Hat das DasWetter oder WU?

        ERLEDIGT

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

          Ganz toller Adapter! Bewährt sich total bei mir.
          Habe überall einen festen Startzeitpunkt, Mittags, damit ich die Pumpe über Solarenergie speisen kann.

          Besteht noch die Möglichkeit, einen manuellen Trigger einzubauen?
          Per Telegram (de)aktiviere ich die Automatik, das klappt hervorragend.
          Manchmal will ich aber gesondert das Sprengerprogramm abspulen, aber nicht zum Startzeitpunkt, sondern wenn ich es triggere (bzw. mein Strommesser wenn es Solarüberschuss gibt...).

          Dirk Peter 1 Reply Last reply Reply Quote 0
          • Dirk Peter
            Dirk Peter @Solear last edited by

            @solear Hallo,
            wenn du unter runningTime eine Zahl eingibst z.B. 10 so startet dein Bewässerungskreis für 10 min. Dies würde auch bei autoOn == false geschehen!
            Es ist für die Zukunft geplant ein break für alle einzelnen Kreise und den gesamten Adapter einzubauen.
            In deinem Fall würde das Bedeuten z.B. morgens um 8:00 startet der Adapter und legt die Bewässerungszeiten fest. Wenn dann deine Solaranlage genug Energie liefert, so schaltest du das break auf true und die Bewässerung würde starten.
            Momentan fehlt mir aber die Zeit dies zu integrieren da ich erstmal genügend andere Baustellen erledigen mus.
            MfG Dirk Peter

            M 1 Reply Last reply Reply Quote 1
            • M
              Mike Hellracer @Dirk Peter last edited by

              @dirk-peter
              Hi,
              Ich beziehe die DP der Sensoren für Wind, Temp, Feuchtigkeit, etc aus eigens dafür angelegten Aliasse. Der type ist state, common type ist number und die role je nachden welcher wert. Die Werte werden von meiner Froggit übernommen und die unit ist auch passend gesetzt trotzdem erhalte ich "sensorwindspeed wrong value: null, type: object" und für die Temp, hum, etc das gleiche.
              Wie muss denn ein DP aussehen um richtig erkannt zu werden? Könntest du ein Beispiel zur Verfügung stellen?
              Danke

              C Dirk Peter 2 Replies Last reply Reply Quote 0
              • C
                createch2 @Mike Hellracer last edited by createch2

                Hallo und danke für den tollen Adapter.
                Ließe sich die Pumpensteuerung mit einem Zeit offset (in richtung früher) versehen ?

                Ich habe folgendes Problem:
                Meine Ventile sind nur erreichbar wenn zwei Jalousien im Haus geöffnet sind, ansonsten ist die HmIP Funkstrecke zu sehr abgeschirmt.
                Meine Idee wäre jetzt die Pumpensteuerung dazu zu missbrauchen um sicherzustellen daß diese beiden Jalousien geöffnet sind.
                Wäre es möglich einen Offset einzubauen ?

                PS:
                habs jetzt erstmal mit einer Szene für die Jalousien arrangert die sowohl als Bewässerungskreis an erster Stelle angelegt (für den Zeitvorlauf) und zusätzlich die gleiche Szene als "Pumpe" definiert. Ich hoffe daß dann die Jalousien offen bleiben.

                1 Reply Last reply Reply Quote 0
                • Dirk Peter
                  Dirk Peter @Mike Hellracer last edited by

                  @mike-hellracer
                  angegebener Datenpunkt unter "Sensor für Temperatur in °C": hm-rpc.1.001818A992BB08.1.ACTUAL_TEMPERATURE
                  COMMON.jpg
                  OBJEKTDATEN.jpg
                  MfG Dirk Peter

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    Mike Hellracer @Dirk Peter last edited by

                    @dirk-peter
                    Danke, das hat geholfen. Habe die Definition der DPs jetzt vervollständigt und schon waren die Meldungen weg 🙂

                    1 Reply Last reply Reply Quote 0
                    • B
                      babl last edited by babl

                      habe jetzt erst gesehen, daß es einen neuen thread dazu hier im forum gibt,

                      heute ist mir aufgefallen, daß die running time sofort geschrieben wird, das ist blöd, so wirft gardena einen fehler und es starten nur 2 kreise, ist es nicht möglich, dies gardena freundlich zu machen? Das heißt max 2 Ventile bei denen die Zeit geändert werden darf und wenn hier die Zeit abgelaufen ist wieder 2 Ventile usw.

                      So funktioniert der Adapter leider nicht für mich, da ich 6 Kreise besitze und jedesmal smartgarden meckert, ich wüßte momentan auch nicht wie man das ganze verzögern könnte. Hat hier jemand einen Lösungsansatz?

                      1 Reply Last reply Reply Quote 0
                      • B
                        babl last edited by babl

                        So, nach nochmaligem nachsehen fande ich heraus, daß @dirk-peter das ja wunderbar gelöst hat, mit den verschiedenen states beim sprinkler state. Deshalb habe ich mir nun ein Blockly geschrieben, das das ganze umwandelt zum Gardena irrigation Control.

                        Blockly als Bild:
                        screen sprinkle control.jpg

                        Als Code:

                        <block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="BisjXqcU.ezUl42vT#nF" x="88" y="-335">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                          <field name="CONDITION">ne</field>
                          <field name="ACK_CONDITION"></field>
                          <value name="OID0">
                            <shadow type="field_oid" id="uy^cN7JTjAdiPxCwS1E]">
                              <field name="oid">sprinklecontrol.0.sprinkle.Balkon.sprinklerState</field>
                            </shadow>
                          </value>
                          <statement name="STATEMENT">
                            <block type="controls_if" id="`O4@0c^c5a,j;#v0Sv5)">
                              <mutation elseif="2"></mutation>
                              <value name="IF0">
                                <block type="logic_compare" id="ub(k6y+xeixNB/B{$50v">
                                  <field name="OP">EQ</field>
                                  <value name="A">
                                    <block type="on_source" id="pw=oo1@s`qn!ylyPxQh*">
                                      <field name="ATTR">state.val</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="math_number" id="V+%~fMn3EEGT(PLjKo_J">
                                      <field name="NUM">2</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO0">
                                <block type="variables_set" id="o5${0Sa3cW65U9,ROofY">
                                  <field name="VAR" id="jF|c=s]XBLV%X6ni9+z;">wert1</field>
                                  <value name="VALUE">
                                    <block type="get_value" id="ATJN.=g^J}6#]uq$JwR;">
                                      <field name="ATTR">val</field>
                                      <field name="OID">sprinklecontrol.0.sprinkle.Balkon.runningTime</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="variables_set" id="#Wj(;vYf0Y=j/;Zw3He6">
                                      <field name="VAR" id="6($94.I?*`5*kG5!(68d">minuten1</field>
                                      <value name="VALUE">
                                        <block type="convert_tonumber" id="7opa@1;Vlg@UN`VML6Jm">
                                          <value name="VALUE">
                                            <block type="text_getSubstring" id="o7u_ctTn]]x}j5wNHwF4">
                                              <mutation at1="true" at2="true"></mutation>
                                              <field name="WHERE1">FROM_START</field>
                                              <field name="WHERE2">FROM_START</field>
                                              <value name="STRING">
                                                <block type="variables_get" id="hgUloRdL47]b-mF~!l}5">
                                                  <field name="VAR" id="jF|c=s]XBLV%X6ni9+z;">wert1</field>
                                                </block>
                                              </value>
                                              <value name="AT1">
                                                <block type="math_number" id="ly!X~5Ied2?K1[n:?^KB">
                                                  <field name="NUM">1</field>
                                                </block>
                                              </value>
                                              <value name="AT2">
                                                <block type="math_number" id=")ZewR6E5EhsRY$swSpEG">
                                                  <field name="NUM">2</field>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="variables_set" id="2_9@Bi,},~wQ9d#T_.k/">
                                          <field name="VAR" id="jee7i18|WoYXQbzpQ6fC">sekunden1</field>
                                          <value name="VALUE">
                                            <block type="convert_tonumber" id="!IR]#1j@VSJ;3b;Oaf)R">
                                              <value name="VALUE">
                                                <block type="text_getSubstring" id="U]~axS[@Dl#~q|7T]8%x">
                                                  <mutation at1="true" at2="true"></mutation>
                                                  <field name="WHERE1">FROM_START</field>
                                                  <field name="WHERE2">FROM_START</field>
                                                  <value name="STRING">
                                                    <block type="variables_get" id="lFyY6TLXXYyj#c@]tRi:">
                                                      <field name="VAR" id="jF|c=s]XBLV%X6ni9+z;">wert1</field>
                                                    </block>
                                                  </value>
                                                  <value name="AT1">
                                                    <block type="math_number" id="fuA/1Gj{W$cvl[/)#W4$">
                                                      <field name="NUM">4</field>
                                                    </block>
                                                  </value>
                                                  <value name="AT2">
                                                    <block type="math_number" id="=`nZ1t%XSf[q;gz%{{]v">
                                                      <field name="NUM">5</field>
                                                    </block>
                                                  </value>
                                                </block>
                                              </value>
                                            </block>
                                          </value>
                                          <next>
                                            <block type="variables_set" id="Vj^Lk;Up4=yCMU0ga@Ac">
                                              <field name="VAR" id="~]Hm+BsU1@)YEAtzxMkc">ventil1_zeit</field>
                                              <value name="VALUE">
                                                <block type="text_join" id="fSofV{TDi^+@r$lV-gJg">
                                                  <mutation items="1"></mutation>
                                                  <value name="ADD0">
                                                    <block type="math_arithmetic" id="9eTXPR#qGP;Op+~5KM?D">
                                                      <field name="OP">ADD</field>
                                                      <value name="A">
                                                        <shadow type="math_number">
                                                          <field name="NUM">1</field>
                                                        </shadow>
                                                        <block type="math_arithmetic" id="uFY@)Ea1d^Pf?2hJ%YOn">
                                                          <field name="OP">MULTIPLY</field>
                                                          <value name="A">
                                                            <shadow type="math_number">
                                                              <field name="NUM">1</field>
                                                            </shadow>
                                                            <block type="variables_get" id="D`yRSAw*l|hT$VbDfi?E">
                                                              <field name="VAR" id="6($94.I?*`5*kG5!(68d">minuten1</field>
                                                            </block>
                                                          </value>
                                                          <value name="B">
                                                            <shadow type="math_number" id="X-7awoneuwDMBV$x*0*A">
                                                              <field name="NUM">60</field>
                                                            </shadow>
                                                          </value>
                                                        </block>
                                                      </value>
                                                      <value name="B">
                                                        <shadow type="math_number">
                                                          <field name="NUM">1</field>
                                                        </shadow>
                                                        <block type="variables_get" id="tadyZcS(!(1t59XcRGJn">
                                                          <field name="VAR" id="jee7i18|WoYXQbzpQ6fC">sekunden1</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </value>
                                                </block>
                                              </value>
                                              <next>
                                                <block type="control" id="a}t:3h?46BT81;]at?^m">
                                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                  <field name="OID">smartgarden.0.LOCATION_19bcd7f5-2D3b37-2D4d2a-2D86ff-2De71cdd35ac42.DEVICE_2cd797c9-2Da14d-2D4279-2D8b2e-2Da95d510f32dd.SERVICE_VALVE_2cd797c9-2Da14d-2D4279-2D8b2e-2Da95d510f32dd-3A1.duration_value</field>
                                                  <field name="WITH_DELAY">TRUE</field>
                                                  <field name="DELAY_MS">5</field>
                                                  <field name="UNIT">sec</field>
                                                  <field name="CLEAR_RUNNING">TRUE</field>
                                                  <value name="VALUE">
                                                    <block type="text_join" id="p55Y0P!bOI4P}JW:Gq[*">
                                                      <mutation items="1"></mutation>
                                                      <value name="ADD0">
                                                        <block type="variables_get" id="dnG:Pze_vdIyH4ym2T)9">
                                                          <field name="VAR" id="~]Hm+BsU1@)YEAtzxMkc">ventil1_zeit</field>
                                                        </block>
                                                      </value>
                                                    </block>
                                                  </value>
                                                </block>
                                              </next>
                                            </block>
                                          </next>
                                        </block>
                                      </next>
                                    </block>
                                  </next>
                                </block>
                              </statement>
                              <value name="IF1">
                                <block type="logic_compare" id="@aHUtvs|1Jn`(B*QE0tw">
                                  <field name="OP">EQ</field>
                                  <value name="A">
                                    <block type="on_source" id="2~c.Z)^y#4Gg:Kg:.,DO">
                                      <field name="ATTR">state.val</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="math_number" id="_[,,-rqUqSnnBmV#)y(C">
                                      <field name="NUM">0</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO1">
                                <block type="control" id="i6*6/eVw(pQo[,tOAW7l">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">smartgarden.0.LOCATION_19bcd7f5-2D3b37-2D4d2a-2D86ff-2De71cdd35ac42.DEVICE_2cd797c9-2Da14d-2D4279-2D8b2e-2Da95d510f32dd.SERVICE_VALVE_2cd797c9-2Da14d-2D4279-2D8b2e-2Da95d510f32dd-3A1.duration_value</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                    <block type="text" id="`i3yk%5gm4y$]h!cU)?p">
                                      <field name="TEXT">STOP_UNTIL_NEXT_TASK</field>
                                    </block>
                                  </value>
                                </block>
                              </statement>
                              <value name="IF2">
                                <block type="logic_compare" id="(T_Gj2NEJ|6ef*j!e5Ix">
                                  <field name="OP">EQ</field>
                                  <value name="A">
                                    <block type="on_source" id="!=Nl@ETALBIu`$y~EN=J">
                                      <field name="ATTR">state.val</field>
                                    </block>
                                  </value>
                                  <value name="B">
                                    <block type="math_number" id="@]cXov1oYs~Xy[iB)5C3">
                                      <field name="NUM">3</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <statement name="DO2">
                                <block type="control" id="5L2C#Fqw!-ooaft~@CL{">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">smartgarden.0.LOCATION_19bcd7f5-2D3b37-2D4d2a-2D86ff-2De71cdd35ac42.DEVICE_2cd797c9-2Da14d-2D4279-2D8b2e-2Da95d510f32dd.SERVICE_VALVE_2cd797c9-2Da14d-2D4279-2D8b2e-2Da95d510f32dd-3A1.duration_value</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                    <block type="text" id="QHUQk]tSO1s?`Jb?pX/7">
                                      <field name="TEXT">STOP_UNTIL_NEXT_TASK</field>
                                    </block>
                                  </value>
                                </block>
                              </statement>
                            </block>
                          </statement>
                        </block>
                        

                        Natürlich muss dann für jedes Ventil extra ein Block geschrieben werden, ich denke mal wenn die Profis hier rüberschauen dass sie extreme Verbesserungen finden um das Blockly kleiner und vielleicht für alle Ventile machen können, aber Hauptsache es läuft jetzt.

                        Abgebildet wird,

                        State 0= Off Sprinkler aus
                        State 1= wait Sprinkler wartet auf das Einschalten (wegen Pumpenleistung) Wieviel Ventile gleichzeitig bedient werden dürfen (bei Gardena sind es max 2)
                        State 3= Break Bewässerungsintervall es wird dann einfach auf OFF gestellt und wenn die Beregnerzeit wieder aktiviert wird wird wieder eingeschaltet es steht dann allerdings die Original Zeit drin aber das wird ja aqm ende des Zykluses mit OFF beendet.

                        Ich hoffe ich habe einigen Gardena Besitzern damit helfen können.

                        1 Reply Last reply Reply Quote 0
                        • G
                          gyle last edited by

                          ich bekomme folg. Fehler im log angezeigt:
                          woran kann das liegen?

                          sprinklecontrol.0
                          2023-08-24 00:00:13.802	error	console.log.info is not a function
                          
                          sprinklecontrol.0
                          2023-08-24 00:00:13.801	error	TypeError: console.log.info is not a function at AdapterClass.<anonymous> (/opt/iobroker/node_modules/iobroker.sprinklecontrol/main.js:339:37) at AdapterClass.emit (node:events:513:28) at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:8466:53) at process.processImmediate (node:internal/timers:476:21)
                          
                          sprinklecontrol.0
                          2023-08-24 00:00:13.797	error	uncaught exception: console.log.info is not a function
                          
                          mcm1957 1 Reply Last reply Reply Quote 0
                          • mcm1957
                            mcm1957 @gyle last edited by

                            @gyle
                            sieht auf den ersten Blick nach einem Programmfehler aus.
                            js kennt console.log und ioBroker stellt u.a. adapter.log.info zur Verfügung.

                            Natürlich kann hier was spezielle implementiert sein - hab den code nicht analysiert.
                            Mach ein Issue im adapter Repo auf

                            1 Reply Last reply Reply Quote 0
                            • B
                              babl last edited by

                              kann das eventuell sein, daß der durchfluss und die zeit bei manuellem betrieb (5 min einschalten über die Vis von Sigi) nicht berechnet wird?

                              1 Reply Last reply Reply Quote 0
                              • F
                                Flaterick last edited by

                                Hallo
                                Bin gerade Am Einstellen und Testen.
                                Da ist mir aufgefallen das zwischen Aktueller Bodenfeuchte (Zigbee Sensor) und in sprinkle-control die Werte nicht übereinstimmen.
                                werden die Werte nicht laufend aktualisiert?

                                MFG
                                Matthias

                                1.jpg 2.jpg

                                Dirk Peter 1 Reply Last reply Reply Quote 0
                                • Dirk Peter
                                  Dirk Peter @Flaterick last edited by

                                  @flaterick
                                  Hallo, unter Bodenfeuchtesensor hast du ja deinen Sensor eingetragen. Von diesem werden die Werte abonniert und bei jeder Änderung unter sprinklecontrol.0.sprinkle.*.actualSoilMoisture eingetragen. Ich kann dies zwar nicht mit einem Sensor testen, aber die Werte werden definitiv bei Wertänderung übernommen.
                                  Meine Testkonfiguration:
                                  Screenshot 2024-05-02 212301.png
                                  analoger Sensor mit aktueller Version: sprinklecontrol 0.2.13
                                  MfG Dirk Peter

                                  F 1 Reply Last reply Reply Quote 0
                                  • F
                                    Flaterick @Dirk Peter last edited by

                                    So hab etwas Getestet, und festgestellt das Zigbee etwas braucht um korrekte werte zu liefern. Da sich das Netzwerk mit der Zeit aufbaut.
                                    Noch dazu kommt das bei deinen Werten der Korrektur Faktor schon mit einberechnet ist, was ich nicht bedacht habe.

                                    Danke für den Tollen Adapter
                                    MFG Matthias

                                    Dirk Peter 1 Reply Last reply Reply Quote 1
                                    • Dirk Peter
                                      Dirk Peter @Flaterick last edited by

                                      @flaterick Danke für die Rückantwort und schön das er dir gefällt.
                                      MfG Dirk Peter

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

                                        Guten Tag,
                                        Ich habe mich jetzt auch endlich mal mit diesem Adapter beschäftigt und es sieht gar nicht so schlecht mit meiner Konfig aus.
                                        Es sind soweit verfügbar alle Daten für die Berechnungen eingetragen und ich habe heute morgen auch schon meine erste Meldung erhalten.
                                        Allerdings habe ich noch ein Problem.
                                        Ich habe drei Kreise zur Bewässerung. in einem der Beete ist von GARDENA ein Sensor für Bodenfeuchte, und die Werte scheinen auch soweit korrekt zu sein.
                                        Allerdings habe ich auch noch ein Gewächshaus, das bei Regen natürlich kein Wasser abbekommt. Allerdings habe ich nur noch einen Sensor für Temperatur und LUFTFEUCHTIGKEIT. Kann ich damit in irgendeiner Form die Bewässerung für das Zelt auslösen lassen?

                                        Mit freundlichen Grüßen
                                        Marc

                                        Dirk Peter 1 Reply Last reply Reply Quote 0
                                        • Dirk Peter
                                          Dirk Peter @Fenriswolf last edited by

                                          @fenriswolf
                                          Hallo,
                                          in der Konfiguration unter Bewässerungskreis gibt es den Punkt Sensor im Gewächshaus. Mit diesem werden die Regenvorhersagewerte und der Niederschlagswert deaktiviert, wenn vorhanden.
                                          Ansonsten kannst du ja die Bewässerung an festen Tagen auswählen, wenn du keine Wetterstation bzw. einen 2. Bodenfeuchtesensor besitzt.
                                          MfG Dirk Peter

                                          1 Reply Last reply Reply Quote 0
                                          • Bastian Rüggen
                                            Bastian Rüggen last edited by

                                            Guten Tag, ich bin gerade dabei, den Adapter zu konfigurieren und erhalte bereits Benachrichtigungen über Telegram.

                                            Insgesamt besteht mein System aus 8 Kreisen, wobei der Kreis 1 eine Tropfbewässerung ist, die momentan alle 2 Tage für zwei Minuten eingeschaltet wird. Der Adapter bietet mir jedoch nicht die Möglichkeit, die Ventile für weniger als 5 Minuten einzuschalten. Gibt es dafür einen Grund bzw. könnte man das anpassen?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            975
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            gartenbewässerung wetterabhängig
                                            33
                                            232
                                            28398
                                            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