Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly mit Bedingung und schedule

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Blockly mit Bedingung und schedule

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators last edited by

      Hallo Paul,

      ich hoffe ich habe ihn wieder vollständig rekonstruiert:

      on({id: 'hm-rpc.0.KEQ1022589.1.STATE', change: "ne"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        console.log('ist getriggert');
        if (getState("hm-rpc.0.KEQ1022589.1.STATE").val == 1) {
          console.log('es regnet');
          while (!(getState("hm-rpc.0.KEQ1022589.1.STATE").val == 0)) {
            schedule("*/3 * * * *", function () {
              setState("Messwerte.0.Wetterdaten.Regenintensitaet"/*Regenintensitaet*/, ((getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val - getState("Messwerte.0.Wetterdaten.Regenmenge_alt").val) / 3), true);
              setStateDelayed("Messwerte.0.Wetterdaten.Regenmenge_alt"/*Regenmenge_alt*/, getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val, true, 200, false);
              console.log((String('Die Regenmenge der letzten drei Minuten betrug: ') + String(getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val - getState("Messwerte.0.Wetterdaten.Regenmenge_alt").val)));
            });
          }
          console.log('es regnet nicht mehr');
        }
        console.log('es regnet nicht');
      });
      console.log('Check - fertig');
      console.log((String('Der Zustand vom Regensensor ist: ') + String(getState("hm-rpc.0.KEQ1022589.1.STATE").val)));
      

      144_regenintensitaet_blockly03.jpg

      @paul53:

      (in Code-Tags) ` 😄

      Das ist der code, den Blockly ausspuckt.

      Gruß

      Rainer

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

        while (!(getState("hm-rpc.0.KEQ1022589.1.STATE").val == 0))
        

        erzeugt den Dauerstress solange es regnet (Wert > 0). Eine Änderung des Wertes triggert erneut. Also nur

        if(value) {
           timer = schedule(...)
        } else { 
           clearSchedule(timer);
        }
        
        console.log('Check - fertig');
        console.log((String('Der Zustand vom Regensensor ist: ') + String(getState("hm-rpc.0.KEQ1022589.1.STATE").val)));
        

        wird nur einmal beim Skriptstart ausgeführt.

          if (getState("hm-rpc.0.KEQ1022589.1.STATE").val == 1) {
        

        Es ist besser mit der Skriptvariablen value zu arbeiten (weniger CPU-Last)

          if (value == 1) {
        

        Ein getState(id) auf die ID, mit der getriggert wurde, sollte man vermeiden.

        1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators last edited by

          Danke Paul,

          das muss ich erst mal verdauen und sehen, wie ich das in Blockly umsetzen kann.

          Danke

          Rainer

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            @Homoran:

            Danke Paul,

            das muss ich erst mal verdauen und sehen, wie ich das in Blockly umsetzen kann.

            Danke

            Rainer `

            Ich glaube was Paul da schreibt is genau mein Beispiel?

            Nur triggern auf regen ja nein und den Intervall ausschalten wen es nicht mehr regnet

            –-----------------------

            Send from mobile device

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

              Das folgende Blockly sollte das erledigen, was Du möchtest ?
              493_regenintensit_t.jpg
              Anmerkung: Mit Blockly dauert es bei mir mind. 5 mal solange als wenn ich es in Javascript eintippe.

              1 Reply Last reply Reply Quote 0
              • Dutchman
                Dutchman Developer Most Active Administrators last edited by

                @paul53:

                Das folgende Blockly sollte das erledigen, was Du möchtest ?

                Regenintensität.JPG

                Anmerkung: Mit Blockly dauert es bei mir mind. 5 mal solange als wenn ich es in Javascript eintippe. `

                🙂

                genauso war mein erster vorschlag auf, Rainer moechte die berechnung aber nur laufen lassen wen es regnet daher war mein vorschlag das ueber einen interval zu loesen der getriggert wird durch true/false stand des regensensors.

                Wie ist deine meinung dazu Paul ?

                http://forum.iobroker.net/viewtopic.php … 387#p88853

                1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators last edited by

                  @paul53:

                  Mit Blockly dauert es bei mir mind. 5 mal solange als wenn ich es in Javascript eintippe. `
                  Sorry Paul 😢

                  ich versuche mich so an js heranzu tasten.

                  Die Logik ist der erste Schritt, die Befehle (und Struktur) der zweite.

                  Bin jetzt ein paar Tage weg, werde baldmöglichst testen. Habe im Moment die Version mit interval. Mal sehen wann es wieder regnet.

                  Danke für eure Hilfe

                  Rainer

                  PS gibt es eigentlich (ähnlich zu Homematic) einen Trigger, der auf einen Wert im DP reagiert? - Wenn Leistung > 50W dann mache… oder muss man auf Änderung (Erhöhung) triggern und dann den falls... Block nehmen?

                  1 Reply Last reply Reply Quote 0
                  • Dutchman
                    Dutchman Developer Most Active Administrators last edited by

                    @Homoran:

                    @paul53:

                    PS gibt es eigentlich (ähnlich zu Homematic) einen Trigger, der auf einen Wert im DP reagiert? - Wenn Leistung > 50W dann mache… oder muss man auf Änderung (Erhöhung) triggern und dann den falls... Block nehmen?

                    mit blockly nein da geht nur "hoeher als voriger, kleiner als voriger , ist true, ist false usw".

                    Mit script geht es glaube ich wohl siehe pattern:

                    on(pattern, callbackOrId, value)
                    
                    

                    wobei man in dem "value" logic verarbeiten kan

                    https://github.com/ioBroker/ioBroker.ja ... some-state

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

                      @Homoran:

                      gibt es eigentlich (ähnlich zu Homematic) einen Trigger, der auf einen Wert im DP reagiert? - Wenn Leistung > 50W dann mache `
                      Ja.

                      on({id: idLeistung, valGt: 50, oldValLe: 50} function(dp) {...});
                      ````~~@Dutchman:~~ 
                      
                      > Rainer moechte die berechnung aber nur laufen lassen wen es regnet daher war mein vorschlag das ueber einen interval zu loesen der getriggert wird durch true/false stand des regensensors.
                      > 
                      > Wie ist deine meinung dazu Paul ? `  
                      Funktioniert genauso. Durch die Abfrage auf Regen innerhalb des Schedule-Triggers ist das Ergebnis (fast) identisch. In Javascript würde ich es so machen:
                      

                      // Regenintensität
                      const idCount = getIdByName('Wetterstation:1.RAIN_COUNTER');
                      const idRegen = getIdByName('Regensensor:1.STATE');
                      const idIntens = getIdByName('Regenintensitaet');
                      const faktor = 1; // Umrechnung in mm/h

                      // Skriptvariablen mit Initialisierung bei Skriptstart
                      var menge = getState(idCount).val; // Merker Regenmenge für Differenz
                      var timer = null; // für setInterval, clearInterval

                      function intens() {
                      var count = getState(idCount).val; // aktuelle Menge in lokale Skriptvariable, da mehr als einmal verwendet
                      setState(idIntens, faktor * (count - menge), true);
                      menge = count;
                      }

                      // Skriptstart
                      if(getState(idRegen).val) {
                      timer = setInterval(intens, 180000); // alle 3 Minuten
                      }

                      on(idRegen, function(dp) { // Triggern bei Wertänderung
                      if(dp.state.val) { // es regnet
                      timer = setInterval(intens, 180000); // alle 3 Minuten
                      } else {
                      if(timer) clearInterval(timer); // Stopp timer
                      setState(idIntens, 0, true); // kein Regen, also Intensität 0
                      }
                      });

                      Die Verwendung von setInterval() anstelle schedule() hat den Vorteil, dass auch nach Skriptstart die erste Berechnung nach genau 3 Minuten erfolgt.
                      1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators last edited by

                        @paul53:

                        Ja. `
                        Also doch Javascript full statt Blockly 😞

                        @paul53:

                        Die Verwendung von setInterval() anstelle schedule() hat den Vorteil, dass auch nach Skriptstart die erste Berechnung nach genau 3 Minuten erfolgt. `
                        und genau das ist passiert, lief nur unendlich weiter, weil ich depp das clear interval bei Ende Regen vergessen hatte.

                        Gruß

                        Rainer

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

                          @Homoran:

                          Also doch Javascript full statt Blockly `
                          Blockly hat einige Einschränkungen. Wenn Du JS full einmal gelernt hast, bist Du damit auch schneller.

                          1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators last edited by

                            Danke nochmals an alle Helfenden.

                            Kurze Rückmeldung:

                            Heute morgen hat es wohl geregnet ("leider" nur 0,3mm). Der js-Adpter läuft noch (mit 2,5% CPU-Last) und es hat Datenpunkte gegeben.
                            144_dp_regen.jpg
                            hier sieht man schön die exakt drei Minuten Intervall.

                            seltsamerweise zeigt das log von der Wetterstation den Regen von 10:43 bis 10:48 (und das auf verschiedenen Installationen)

                            Das aktuelle Blockly (aus dem ich bald die debug-Blöcke entferne)
                            144_regenintensitaet_blockly_dutch01.jpg

                            …und als code (für Paul53):

                            var Intervall;
                            
                            on({id: 'hm-rpc.0.KEQ1022589.1.STATE', change: "ne"}, function (obj) {
                              var value = obj.state.val;
                              var oldValue = obj.oldState.val;
                              console.log('ist getriggert');
                              if (getState("hm-rpc.0.KEQ1022589.1.STATE").val == 1) {
                                console.log('es regnet');
                                Intervall = setInterval(function () {
                                  setState("Messwerte.0.Wetterdaten.Regenintensitaet"/*Regenintensitaet*/, ((getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val - getState("Messwerte.0.Wetterdaten.Regenmenge_alt").val) / 3), true);
                                  setStateDelayed("Messwerte.0.Wetterdaten.Regenmenge_alt"/*Regenmenge_alt*/, getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val, true, 200, false);
                                  console.log((String('Die Regenmenge der letzten drei Minuten betrug: ') + String(getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val - getState("Messwerte.0.Wetterdaten.Regenmenge_alt").val)));
                                  console.log('noch einmal');
                                }, 180000);
                              } else {
                                (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
                                console.log('es regnet nicht mehr');
                              }
                              console.log('es regnet nicht');
                            });
                            console.log('Check - fertig');
                            console.log((String('Der Zustand vom Regensensor ist: ') + String(getState("hm-rpc.0.KEQ1022589.1.STATE").val)));
                            

                            Gruß

                            Rainer

                            1 Reply Last reply Reply Quote 0
                            • Dutchman
                              Dutchman Developer Most Active Administrators last edited by

                              5 Minuten sind keine 6 (2x3), ich glaube unsere Logic hier ist falsch und wir machen es zu kompliziert:

                              1. die Wetterstation sendet nur alle x Minuten, warum machen wir dan einen Intervall Risiko zu groß das der schneller abgelaufen ist als die Station neue Werte gesendet hat

                              2. das script läuft nur wen es regnet und rechnet dan alle 3minuten

                              3. logischer wäre doch: triggen wen Regenmenge (Rain Counter) geändert und dan Berechnung Ausführen

                              Ich glaube das die ganze Kombination mit ermitteln regnet es ja oder nein überflüssig ist las uns doch einfach triggeren auf Changed Status Regenmenge und dan wert minus wert alt = jetziger Regenfall ?!

                              ~Dutch

                              1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators last edited by

                                @Dutchman:

                                5 Minuten sind keine 6 (2x3) `
                                Wo siehst du 56 Minuten?

                                hier ist das Interval nur einmal durchlaufen worden.

                                @Dutchman:

                                die Wetterstation sendet nur alle x Minuten, warum machen wir dan einen Intervall Risiko zu groß das der schneller abgelaufen ist als die Station neue Werte gesendet hat `
                                Das hatte ich auch überlegt, aber bei 3 Minuten Zykluszeit, sollte die Wahrscheinlichkeit, dass das Intervall genau zu einem Sendetelegram beginnt und das zweite Telegram dadurch nach drei Minuten nicht da ist verschwindend gering sein.

                                @Dutchman:

                                logischer wäre doch: triggen wen Regenmenge geändert und dan Berechnung Ausführen `
                                Auch richtig, aber als Anfänger wollte ich nicht auch noch mit Zeiten rechnen,

                                Gruß

                                Rainer

                                1 Reply Last reply Reply Quote 0
                                • Dutchman
                                  Dutchman Developer Most Active Administrators last edited by

                                  @Homoran:

                                  @Dutchman:

                                  5 Minuten sind keine 6 (2x3) `
                                  Wo siehst du 56 Minuten?

                                  hier ist das Interval nur einmal durchlaufen worden. `

                                  Wir verstehen uns falsch!

                                  Du hast nur 2 werte in deinem History innerhalb der 3minuten…. Zeit stimmt trotzdem nich aber andere Geschichte....

                                  @Homoran:

                                  @Dutchman:

                                  die Wetterstation sendet nur alle x Minuten, warum machen wir dan einen Intervall Risiko zu groß das der schneller abgelaufen ist als die Station neue Werte gesendet hat Das hatte ich auch überlegt, aber bei 3 Minuten Zykluszeit, sollte die Wahrscheinlichkeit, dass das Intervall genau zu einem Sendetelegram beginnt und das zweite Telegram dadurch nach drei Minuten nicht da ist verschwindend gering sein.

                                  Ja, trotzdem möglich und daher onnötiges Risiko

                                  @Homoran:

                                  @Dutchman:

                                  logischer wäre doch: triggen wen Regenmenge geändert und dan Berechnung Ausführen `
                                  Auch richtig, aber als Anfänger wollte ich nicht auch noch mit Zeiten rechnen,

                                  Gruß

                                  Rainer `

                                  Ich verstehe dich nicht, was willst du hier mit Zeiten rechnen .

                                  Ich versuche es nochmal:

                                  1. der Wert der Regenmenge ändert sich nur wen es regnet

                                  2. wir können diesen Wert (hat sich geändert) also nehmen als trigger um die Berechnung aus zu führen

                                  3. der Rest ändert sich nicht

                                  ~Dutch

                                  1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators last edited by

                                    @Dutchman:

                                    Wir verstehen uns falsch!

                                    Du hast nur 2 werte in deinem History innerhalb der 3minuten `
                                    korrekt (sollte auch 5 Minuten heißen).

                                    Das Interval sorgt dafür, dass es erst nach 3 Minuten den ersten Wert gibt, nach 6 Minuten den zweiten.

                                    Wenn es dann nach 8 Minuten aufhört ist das (vom Programm her) ok!

                                    @Dutchman:

                                    Ich verstehe dich nicht, was willst du hier mit Zeiten rechnen `
                                    ich möchte doch als Ergebnis mm/min (oder vielleicht l/h) als Ergebnis, also muss ich auf eine Zeitbasis rechnen.

                                    var Dauer = (Timestamp2 - Timestamp1)

                                    var Menge = RainCounter2 - RainCounter1

                                    var Intens = Menge / Dauer

                                    und dann noch in die richtige Einheit umrechnen.

                                    Es hat eben noch zweimal geregnet. Der dritte Regen besteht noch (nicht im log)

                                    Skript startet, aber…

                                    javascript.0	2017-10-09 20:25:50.876	info	script.js.Regenintensitaet: es regnet nicht
                                    javascript.0	2017-10-09 20:25:50.874	info	script.js.Regenintensitaet: es regnet nicht mehr
                                    javascript.0	2017-10-09 20:25:50.872	info	script.js.Regenintensitaet: ist getriggert
                                    javascript.0	2017-10-09 20:23:40.160	info	script.js.Regenintensitaet: es regnet nicht
                                    javascript.0	2017-10-09 20:23:40.157	info	script.js.Regenintensitaet: es regnet
                                    javascript.0	2017-10-09 20:23:40.151	info	script.js.Regenintensitaet: ist getriggert
                                    

                                    ich war immer davon ausgegangen, dass Blöcke, die hinter dem Trigger-Block hängen immer ausgeführt werden ("check-fertig" und "der Status des Regensensors…" tauchen bei dieser Version im log nicht mehr auf.

                                    Gruß

                                    Rainer

                                    1 Reply Last reply Reply Quote 0
                                    • Dutchman
                                      Dutchman Developer Most Active Administrators last edited by

                                      Ah so finden wir einander, 1 Denkfehler

                                      @Homoran:

                                      ich war immer davon ausgegangen, dass Blöcke, die hinter dem Trigger-Block hängen immer ausgeführt werden ("check-fertig" und "der Status des Regensensors…" tauchen bei dieser Version im log nicht mehr auf. `

                                      Wen es nicht mehr regnet (durch die ich Abfrage) stop auch der berechnugsinterval.

                                      Da die aktoren nicht immer sauber alle x Minuten Daten übermitteln bekommst du jetzt 0 werte wen zb Regenmenge erst nach 3minuten 20 Sekunden übertragen wird.

                                      Daher empfehle ich doch zu trigger und rechnen auf Änderung gemessener Mengen da dies „Zeit cyclus“ Fehler ausschließt und umrechnen nach Logic Menge/Dauer ist der nässte schritt.

                                      Er saubere und richtige werte haben oder? Dan das Ergebnis in Gold unmbauen

                                      ~Dutch

                                      1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators last edited by

                                        ok! Im Moment sind einige 0-Werte dabei, weil mir hier nicht nur das Sendeintervall, sondern auch die Messtechnik in die Quere kommt. Die Regenmengenmessung braucht eine Mindestmenge von 0,3mm Wasser um einen Impuls zu senden.

                                        ! ````
                                        javascript.0 2017-10-09 21:11:29.384 info script.js.Regenintensitaet: es regnet nicht
                                        javascript.0 2017-10-09 21:11:29.383 info script.js.Regenintensitaet: es regnet nicht mehr
                                        javascript.0 2017-10-09 21:11:29.382 info script.js.Regenintensitaet: ist getriggert
                                        javascript.0 2017-10-09 21:11:14.868 info script.js.Regenintensitaet: noch einmal
                                        javascript.0 2017-10-09 21:11:14.865 info script.js.Regenintensitaet: Die Regenmenge der letzten drei Minuten betrug: 0
                                        javascript.0 2017-10-09 21:08:14.854 info script.js.Regenintensitaet: noch einmal
                                        javascript.0 2017-10-09 21:08:14.849 info script.js.Regenintensitaet: Die Regenmenge der letzten drei Minuten betrug: 0
                                        javascript.0 2017-10-09 21:05:14.843 info script.js.Regenintensitaet: noch einmal
                                        javascript.0 2017-10-09 21:05:14.840 info script.js.Regenintensitaet: Die Regenmenge der letzten drei Minuten betrug: 0
                                        javascript.0 2017-10-09 21:02:14.835 info script.js.Regenintensitaet: noch einmal
                                        javascript.0 2017-10-09 21:02:14.832 info script.js.Regenintensitaet: Die Regenmenge der letzten drei Minuten betrug: 0
                                        javascript.0 2017-10-09 20:59:14.826 info script.js.Regenintensitaet: noch einmal
                                        javascript.0 2017-10-09 20:59:14.824 info script.js.Regenintensitaet: Die Regenmenge der letzten drei Minuten betrug: 0
                                        javascript.0 2017-10-09 20:56:14.818 info script.js.Regenintensitaet: noch einmal
                                        javascript.0 2017-10-09 20:56:14.815 info script.js.Regenintensitaet: Die Regenmenge der letzten drei Minuten betrug: 0
                                        javascript.0 2017-10-09 20:53:14.810 info script.js.Regenintensitaet: noch einmal
                                        javascript.0 2017-10-09 20:53:14.809 info script.js.Regenintensitaet: Die Regenmenge der letzten drei Minuten betrug: 0
                                        javascript.0 2017-10-09 20:50:14.808 info script.js.Regenintensitaet: es regnet nicht
                                        javascript.0 2017-10-09 20:50:14.807 info script.js.Regenintensitaet: es regnet
                                        javascript.0 2017-10-09 20:50:14.806 info script.js.Regenintensitaet: ist getriggert

                                        
                                        muss jetzt ein paar Tage auf Dienstreise. Da habe ich Zeit nachzudenken.
                                        
                                        Ich mag solche "fehlerbehafteten" Dinge. Da kann ich am besten mit lernen:
                                        
                                        Was passiert wenn ich jetzt x und dann y anders mache.
                                        
                                        …dann über das Ergebnis die Ursache bewerten.
                                        
                                        Das ist meine Art zu lernen.
                                        
                                        Gruß
                                        
                                        Rainer
                                        1 Reply Last reply Reply Quote 0
                                        • Dutchman
                                          Dutchman Developer Most Active Administrators last edited by

                                          @Homoran:

                                          Ich mag solche "fehlerbehafteten" Dinge. Da kann ich am besten mit lernen:

                                          Was passiert wenn ich jetzt x und dann y anders mache.

                                          …dann über das Ergebnis die Ursache bewerten.

                                          Das ist meine Art zu lernen.

                                          Gruß

                                          Rainer `

                                          Keep that Spirit !

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

                                            @Dutchman:

                                            1. logischer wäre doch: triggen wen Regenmenge (Rain Counter) geändert und dan Berechnung Ausführen `
                                              Ja, triggern auf Änderung der Regenmenge ist sinnvoller, da andernfalls die Intensität zwischenzeitlich auf 0 gehen kann (leichter Regen).
                                              @Dutchman:

                                            Ich glaube das die ganze Kombination mit ermitteln regnet es ja oder nein überflüssig ist las uns doch einfach triggeren auf Changed Status Regenmenge und dan wert minus wert alt = jetziger Regenfall ?! `
                                            Dann geht der Wert der Intensität nie auf 0 zurück, wenn es nicht mehr regnet, weil keine Änderung der Regenmenge mehr erfolgt, also auch nicht mehr getriggert wird. Besser:

                                            on(idRegen, function(dp) { // Triggern bei Wertänderung
                                               if(!dp.state.val) setState(idIntens, 0, true);    // kein Regen, also Intensität 0
                                            });
                                            

                                            Die Berechnung der Intensität bei Triggern auf Änderung der Regenmenge ist auch nicht so schwierig:

                                            on(idCount, function(dp) {
                                               setState(idIntens, faktor * (dp.state.val - dp.oldState.val) / (dp.state.lc - dp.oldState.lc), true);
                                            });
                                            

                                            In Blockly ist es leider nicht möglich, dp.oldState.lc zu ermitteln.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            806
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            41
                                            5091
                                            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