Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. [Adapter] Neuer radar2-Adapter

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    [Adapter] Neuer radar2-Adapter

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

      Bei mir werden meine BT Geäte erkannt im Radar2 Adapter aber wie es scheint nur einmal danach sind sie dauerhaft auf False. Die Versio ist 1.0.9. Unter dem alten Radar Adapter läuft es ohne Probleme.

      Ich dachte naja evtl liegt es an der 1.5.16 vom JS habe den dann auf 2.0.29 upgedatet aber ohne Erfolg. Mit der Konsequenz dass der alte Radar dann auch nicht mehr lief.

      Dank eines Rollback kein mit Proxmox kein Problem nun läuft wieder die alte JS Version mit Radar1 Adapter aber evtl habt ihr ja eine Idee woran es liegen könnte.

      MFG Maggi

      1 Reply Last reply Reply Quote 0
      • MathiasJ
        MathiasJ @Diginix last edited by

        @Diginix
        bei mir läuft Radar 1.2.0 ohne Änderungen auf dem JS-Controller 2.0.29.
        Die Testversion läuft nun auf dem Raspberry PI4 B.
        das produktive System auf dem Rock64 habe ich abgeschaltet.

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

          Hallo,
          mal eine blöde Frage: Wie realisiere ich denn jetzt mit Radar2 eine vernünftige Anwesenheitserkennung?

          Ich habe einen iTag, der auch erkannt wird. Jetzt habe ich also die Werte für iTag, iTag._here und iTag._lastHere. Leider sind die Werte für .Tag._here so unzuverlässig, dass ich sie nicht zur Anwesenheitserkennung verwenden kann. Es passiert halt immer wieder mal, dass der Wert beim Scannen nicht gefunden wird, - manchmal auch zur Recht, wenn z. B. ich nur kurz zur Mülltonne laufe.

          Ich dachte, ich könnte in der Konfigurierung des Adapters eine Zeitspanne festsetzen, ab der ich für das System als abwesend gelte. Der entsprechende Wert in der Konfiguration hat jedoch keinerlei Auswirkung auf den Datenpunkt iTag._here. Wenn ich in der Konfiguration für die Option "Abwesenheit in Minuten um als 'nicht da' zu gelten (>=2)" z.B. 10 Minuten einsetze, ändert sich iTag._here trotzdem schon nach einer Minute, wenn ich mal kurz nicht da bin. Habe ich den Sinn dieser Option nicht verstanden? Welcher Wert wird denn damit beeinflusst?

          Welche Datenpunkte verwendet Ihr denn für die Abwesenheitserkennung? Für ein paar erleuchtende Erklärungen wäre ich sehr dankbar.

          Strizz

          crunchip 1 Reply Last reply Reply Quote 0
          • crunchip
            crunchip Forum Testing Most Active @Strizz last edited by

            @Strizz ich lass bei mir dieses laufen, nicht über radar2, sondern über den tr-064

            
            // Anwesenheitsliste aus TR064 bauen
            // Autor Looxer01 01.01.2017
            // Das Programm basiert auf den Adapter TR064 der die WLAN verfügbarkeit von allen Geräten überwacht
            // Die States fuer USER1 - USERx müssen aus dem Adapter TR064 entnommen werden 
            // Funktionen:
            // Ermittlung ob irgendwer anwesend ist
            // Speichern von kommt und gehtzeiten
            // Speichern der Anwesenheitsliste mit kommt und geht als Json
            // Log schreiben für jede Atkualisierung der Anwesenheit
            
            
            
            //-----------------------------------------------------------------------------------------------------
            // Einstellbereich
            //-----------------------------------------------------------------------------------------------------
            
            // Hier ist der State für den die Deviceermittlung der durch den TR064 ermittelt wird
            var StateTR064Device    =    "tr-064-community.0.devices.";
            
            // Hier ist der State für den die Anwesenheitssimulation. Bei True wird die AWS (separates Programm) gestartet
            var IDAWSAktiv              = "javascript.0.Anwesenheitssteuerung.AWSAktiv";    // ID AWS flag
            
            // Falls die Anwesenheitssimulation verknüpft werden soll dann hier TRUE eintragen und dann die Zeit in Sekunden nach Abwesenheit, die vergehen soll bis die Simulation aktiviert wird
            var AWSCheckAktiv  = false;                                                     // auf true setzen, wenn die Anwesenheitssimulation genutzt wird
            var AWSZeit = 600;                                                               // nach diesen Sekunden verzoegerung wird die Simulation aktiviert                                                   // Maximale Anzahl der User mit Anwesenheitsueberwachung
            
            //  die Deviceliste aus TR064, die ueberwacht werden soll muss hier eingetragen werden
            var User = { "JaninaA5": "1_Janina", "GalaxyS8Mario": "2_Mario", "Galaxy-S10": "3_Mario1"};
            
            // Allgemeine Anwesenheiten. Die Namen koennen geändert werden
            var UserAllText         = "JemandDa";
            var UserString          = "Liste";
            
            // Pfad für die userliste nach .0. kann der Name frei vergeben werden und wird entsprechend in die Objektliste geschrieben
            var path = 'javascript.0.Anwesenheitssteuerung.';          // Pfad für create states
            
            //Logging
            var logflag = false;                                                         // logging enabled
            var LogPath = "/opt/iobroker/iobroker-data/Anwesenheiten.csv";             // Pfad und Dateiname des externen Logs
            
            
            //-----------------------------------------------------------------------------------------------------
            // Ende Einstellbereich
            //-----------------------------------------------------------------------------------------------------
            
            for (var key in User){
                createState(path + 'Userlist.' + User[key], false, {read: true, write: true, type: 'boolean', name: 'Anwesenheit '+User[key], desc: 'Anwesenheit '+User[key]});
                
                createState(path + 'Userlist.KommtGeht.' + User[key]+"Geht", CreationTime, {read: true, write: true, type: 'string', name: 'Anwesenheit Zeit ausloggen aus FB', desc: 'Zeit Verlassen '+User[key]});
                createState(path + 'Userlist.KommtGeht.' + User[key]+"Kommt", CreationTime, {read: true, write: true, type: 'string', name: 'Anwesenheit Zeit ausloggen in  FB', desc: 'Zeit kommen '+User[key]});
            }
            
            var CreationTime = " ";
            var fs = require('fs');                     // enable write fuer externes log
            
            // Datenpunkte erzeugen
            createState(path + 'Userlist.' + UserString, "Niemand", {read: true, write: true, type: 'string', name: 'Anwesenheit Userliste', desc: 'Anwesenheit Userliste'});
            createState(path + 'Userlist.' + UserAllText, false, {read: true, write: true, type: 'boolean', name: 'Anwesenheit alle User', desc: 'Anwesenheit alle User'});
            
            createState(path + 'Userlist.KommtGeht.' + "AnwesenheitJson", CreationTime, {read: true, write: true, type: 'string', name: 'Anwesenheitsstatus Json Liste', desc: 'UserListe als Json'});
            createState(path + 'Userlist.KommtGeht.' + "AnwesenheitHTML", CreationTime, {read: true, write: true, type: 'string', name: 'Anwesenheitsstatus HTML String', desc: 'UserListe als HTML String'});
            
            if (AWSCheckAktiv === true){  
              createState(IDAWSAktiv,false);
            }
            
            // Funktion synchronisiert Status mit TR064 beim Aufruf des Programmes
            anwesenheit("ProgramInitialisierung",0);
            
            for (var key in User){
                on({id: StateTR064Device + key, valNe: 0 }, function(obj) {
                    if (obj.state.ack) {
                        anwesenheit('UserKommtGeht',obj.id.split(".").pop(-1));
                    }
                });
            }
                
            //-----------------------------------------------------------------------------------------------------
            // Funktion Erstellung der Anwesenheitsliste
            //-----------------------------------------------------------------------------------------------------
            function anwesenheit (Ausloeser, Userkey) {
                log ("Ausloeser: " +  Ausloeser,"info");
                CreationTime = formatDate(new Date(),"TT.MM.JJJJ SS:mm:ss");
                
                var CurrentUserList     = "";
                var StatusCurrentUser   = false;
                var StatusAllUser       = false;
                var JsonString          = "[";
                var HTMLString          = "<table style='width:100%'><thead><tr><th style='text-align:left;'>Name</th><th style='text-align:left;'>Status</th><th style='text-align:left;'>Kommt</th><th style='text-align:left;'>Geht</th></tr></thead><tbody>";                                                      
                var kommttime           = "";
                var gehttime            = "";
                
                for (var key in User){
                    StatusCurrentUser = getState(StateTR064Device + key).val;                 // Lesen des status des users
                    setState(path + 'Userlist.' + User[key], StatusCurrentUser);              // Den Status aus TR64 setzen
                    
                    kommttime = getState(path + 'Userlist.KommtGeht.' + User[key]+"Kommt").val;
                    gehttime = getState(path + 'Userlist.KommtGeht.' + User[key]+"Geht").val;
                    
                    if (key === Userkey) {
                        setState(path + 'Userlist.KommtGeht.' + User[key]+(StatusCurrentUser ? "Kommt": "Geht"),CreationTime);                      // Schreibe den Zeitstempel für den user der grerade gegangen ist 
                        if(StatusCurrentUser) kommttime = CreationTime; else gehttime = CreationTime;
                        writelog(User[key] + ";" + (StatusCurrentUser ? "Kommt": "Geht"));
                    }
            
                    if (StatusCurrentUser === false && StatusAllUser !== true) {                    // user geht mmt es ist niemand mehr da
                        StatusAllUser = false;                                                      // jetzt wird der Status "niemand mehr da" gesetzt
                    }    // Ende Anwesenheit auf false  gesetzt    
                    
                    if (StatusCurrentUser) {                                              // Wenn der user der gerade gecheckt wird anwesend ist
                        CurrentUserList += User[key] + " ";                                         // user in der userlist aufnehmen
                        StatusAllUser = true;
                    }  // Ende Anwesenheit auf true gesetzt
                    
                    log("Anwesenheit " + User[key] +" " +  StatusCurrentUser,"info"); 
                    
                    JsonString += JsonCreate ("Name", User[key], "Status", StatusCurrentUser, "Kommt", kommttime, "Geht", gehttime) + ",";
                    
                    HTMLString+="<tr>";
                    HTMLString+="<td>"+User[key]+"</td>"
                    HTMLString+="<td>"+(StatusCurrentUser ? '<div class="mdui-green-bg mdui-state mdui-card">anwesend</div>' : '<div class="mdui-red-bg mdui-state mdui-card">abwesend</div>')+"</td>"
                    HTMLString+="<td>"+kommttime+"</td>"
                    HTMLString+="<td>"+gehttime+"</td>"
                    HTMLString+="</tr>";
                    
                } // ende for
                
                JsonString += "]";  
                HTMLString += "</body></table>";  
                
                setState(path + 'Userlist.KommtGeht.' + "AnwesenheitJson", JsonString);
                setState(path + 'Userlist.KommtGeht.' + "AnwesenheitHTML", HTMLString);         
                if (!StatusAllUser) {
                    CurrentUserList = "Niemand";                                                        // es ist niemand da
                }
            
                setState(path + 'Userlist.' + UserAllText,StatusAllUser);                                                   // Setzen des All Status
                setState(path + 'Userlist.' + UserString,CurrentUserList);                                              // userlist speichern
                log("Anwesenheit genereller Status " + StatusAllUser,"info");
                log("Anwesenheitsliste " + CurrentUserList,"info");
                
                
                // Anwesenheitssimulation ein-oder ausschalten
                if (AWSCheckAktiv === true){
                    if (StatusAllUser === true) {
                        setState(IDAWSAktiv,false);    
                    } else {
                        if (getState(IDAWSAktiv).val === false) {                           // prüfe status AWS flag  
                              setStateDelayed(IDAWSAktiv,true,AWSZeit*1000);
                            log("EVENT Anwesenheit ist auf false gesetzt  - AWSFlag wird aktiviert in " + AWSZeit + " Sekunden","info");     
                        } // endif AWS aktiv
                    }  // endif StatusAllUser
                }  // AWSCheckAktiv
            
            } // Ende Funktion Anwesenheit
            
            
            //-----------------------------------------------------------------------------------------------------
            // Erstellung von json strings zur Tabellendarstellung
            //-----------------------------------------------------------------------------------------------------
            function JsonCreate (Desc1, Wert1, Desc2, Wert2, Desc3,Wert3, Desc4,Wert4,anzahlzeilen,aktuellezeile) {
                var buildzeile = "{";
                buildzeile += '"'  + Desc1+ '":';
                buildzeile += '"'  + Wert1 + '"' + ",";
                buildzeile += '"'  + Desc2 + '"' + ":";
                buildzeile += '"'  + Wert2 + '"' + ",";
                buildzeile += '"'  + Desc3 + '"' + ":";
                buildzeile += '"'  + Wert3 + '"' + ",";
                buildzeile += '"'  + Desc4 + '"' + ":";
                buildzeile += '"'  + Wert4 + '"' + "}";
                
                return buildzeile;
            } // Ende Funktion
            
            //-----------------------------------------------------------------------------------------------------
            // Funktion schreibt einen Logeintrag in das Filesystem und auch in das interne Log-System
            //-----------------------------------------------------------------------------------------------------
            function writelog(string) {
                if (logflag === true) {
                    var logdate = formatDate(new Date(),"TT.MM.JJJJ");
                    var logtime = formatDate(new Date(),"SS:mm:ss");
            
                if (fs.existsSync(LogPath)) {
                    fs.appendFileSync(LogPath, logdate+" ;"+logtime+" ;"+string + "\n");       // Füge Satz in Datei ein
                } else {     
                    log("Logfile nicht gefunden - wird angelegt"), "info";
                    var headerLine= "Datum;Uhrzeit;Name;Kommt-Geht";
                    fs.appendFileSync(LogPath, headerLine + "\n");       // Füge Satz in Datei ein
                    fs.appendFileSync(LogPath, logdate+" ;"+logtime+" ;"+string + "\n");       // Füge Satz in Datei ein
                  }  // endif Filecheck
                }  // Ende check on logflag
            } // Ende Funktion
            
            1 Reply Last reply Reply Quote 0
            • Diginix
              Diginix last edited by

              @crunchip Reine BT Geräte können nicht über den Fritzbox Adapter genutzt werden. Oder gibt es Fritzboxmodelle die auch BT Geräte koppeln und Infos dazu über das tr-064 Protokoll liefern?

              @Strizz Die eingestellte Zeitspanne für abwesend sollte sich genau auf deinen iTag_here Datenpunkt auswirken. Ich habe eine Smart Watch, die nur per BTLE erkannt wird und die ist auch erst nach den von mir eingestellten 7 Minuten abwesend wenn sie in den Flugmodus wechselt oder ich das Haus verlasse.
              Eigentlich dürfte dein iTag_here erst 10 Minuten nach der Uhrzeit von _lastHere auf false wechseln.

              crunchip 1 Reply Last reply Reply Quote 0
              • crunchip
                crunchip Forum Testing Most Active @Diginix last edited by

                @Diginix war mein Fehler, war da grad nicht bei der Sache🤦‍♂️ kommt davon, wenn man nur halb liest

                1 Reply Last reply Reply Quote 0
                • S
                  steimi @stephan1827 last edited by steimi

                  @stephan1827 sagte in [Adapter] Neuer radar2-Adapter:

                  @pati said in [Adapter] Neuer radar2-Adapter:

                  @frankjoke Ich hatte gestern das Problem dass die Geräte nach einer Minute bereits als away gekennzeichnet wurden. Scanzeit auf 20 Sekunden, delayAway auf 15 Minuten. Ich habe dann mal einen Blick in den Code geworfen und festgestellt dass die Zeit beim Starten zurückgesetzt wird:

                  if (Math.floor(scanDelay * 2 / 1000 / 60)<= delayAway)
                      delayAway = Math.ceil(scanDelay * 2.5 / 1000 / 60);
                  

                  In meinem Fall steht scanDelay auf 20 Sekunden - also ergibt sich daraus:
                  20000 * 2 / 1000 / 60 = 0,66 - nach dem floor bleibt dann noch eine 0.

                  Du schreibst dass delayAway auf 2,5*scanDelay gesetzt wird wenn delayAway UNTER scanDelay*2 gesetzt wurde. Prüfen tust du jedoch ob delayAway größer ist als Math.floor(scanDelay * 2 / 1000 / 60) - in meine Fall steht hier also if (0 <= delayAway) - das ist natürlich immer true wenn delayAway >= 0 ist. Dadurch wird delayAway dann auf 1 Minute gesetzt.

                  Ich habe die zwei Zeilen auskommentiert - läuft nun wunderbar mit einer Verzögerung von 15 Minuten.

                  Hallo,
                  habe das Problem ebenfalls gemeldet. Deine Änderungen haben das Problem bei mir auch gelöst. Vielleicht kannst Du einen Pull Request senden dann kann Frank das einpflegen.

                  Stephan

                  @Diginix BT funktioniert bei mir leider auch nicht mehr richtig. Hat sauber unter Debian 9 funktioniert, unter Debian 10 (mit js-Controller 1.5.x) nur mit regelmäßigen Neustarts des Adapter. Leider jetzt mit js-Controller 2.x so gut wie gar nicht mehr. Ich hoffe das da von @frankjoke noch was kommt. Vermute aber das es am BT unter Debian 10 liegt.
                  Aber vielleicht kann dir das o.g. helfen wegen der zu zeitigen Abwesenheit.

                  A 1 Reply Last reply Reply Quote 0
                  • A
                    Adnim @steimi last edited by Adnim

                    @steimi sagte in [Adapter] Neuer radar2-Adapter:

                    nur mit regelmäßigen Neustarts des Adapter

                    Hatte auch riesen Probleme damit, habe meinen Slave RPI3 dann mal komplett neu aufgesetzt seit dem läuft es wieder wie 1.

                    Ich vermute das bei meinem NodeJS update irgendwas bei dem Bluetooth Treibern kaputt ging.

                    S 1 Reply Last reply Reply Quote 0
                    • S
                      Strizz @Adnim last edited by

                      @steini : Danke für den Hinweis auf die beiden Code-Zeilen im Adapter. Habe sie auch mal auskommentiert und es scheint zu funktionieren.

                      Strizz

                      1 Reply Last reply Reply Quote 0
                      • N
                        Nighti99 last edited by

                        Hallo,

                        ich habe mehrer Netzwerkkarten (bedingt durch Docker) und Radar2 will diese alle scannen.
                        Nun habe ich die Befehlszeile von ARP angepasst, aber im Log erscheint immer noch, das er alle scannen will.

                        radar2 set use of noble(true), doArp("-lgq --retry=5 --timeout=400 --interface=eth0" on eth0,wlan0,br-69dd10cd2228,br-69dd10cd2228,veth33ac3d3)
                        

                        Dadurch dauert der Scan aber:

                        first scan took 665.847 seconds
                        

                        wie kann ich dieses ändern?

                        Danke im voraus

                        1 Reply Last reply Reply Quote 0
                        • R
                          root_ last edited by

                          Hallo,

                          ich bekomme neuerdings beim starten der Radar2 Instanz folgenden Fehler:

                          Caught by controller[2]: noble warning: unknown handle 68 disconnected!
                          

                          Ich kann es nicht 100% sagen aber ich glaube der Fehler trat erst auf als ich Radar(1) deinstalliert hatte.

                          System ist und alle Adapter sind auf dem Stand "latest".

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

                            Mir ist eben aufgefallen dass bereits 2 Minuten nach _lastHere die Objekte für _here auf false gesetzt werden obwohl im Adapter 5 Minuten als Zeit für "nicht erkannt bis abwesend" eingestellt ist.
                            Hat bisher keine negativen Auswirkungen auf meine Skripte usw. aber ist mMn ein Bug.

                            Leider scheint @frankjoke hier irgendwie nicht mehr aktiv zu sein. Er war im Juli das letzte mal im Forum.
                            Dafür dass der Adapter so jung und als Ablösung für radar(1) mit kontinuierlicher Weiterentwicklung gedacht war, ist das etwas merkwürdig. Hoffen wir mal dass es ihm gut geht!

                            SBorg 1 Reply Last reply Reply Quote 0
                            • SBorg
                              SBorg Forum Testing Most Active @Diginix last edited by

                              Ingo hat noch Kontakt mit ihm, er hat auch erst vor kurzem auf ein GitHub-Issue von mir geantwortet. Aber bei "gut geht" hege ich leider so meine Zweifel. Auf jeden Fall mal Danke 👍 an dieser Stelle und gute Besserung.

                              MathiasJ 1 Reply Last reply Reply Quote 0
                              • moppel2810
                                moppel2810 last edited by

                                Hallo Leute,
                                ich habe den Radar2 Adapter installiert und er überwacht auch mein Hausnetzwerk nun hab ich aber ein 2. Netzwerk im Garten und möchte auch dieses einbinden zum überwachen das wenn ich nachhause komme und sich mein Handy in das Gartennetz einloggt ich auch als anwesend erkannt werde.
                                Muss ich da jetzt einen 2. Adapter installieren(wenn ja wie stelle ich diesen ein?) oder kann ich das 2. Netzwerk was zu überwachen ist in den einen Adapter einbinden und wenn ja wie?

                                Danke schonmal

                                SBorg 1 Reply Last reply Reply Quote 0
                                • MathiasJ
                                  MathiasJ @SBorg last edited by

                                  @SBorg sagte in [Adapter] Neuer radar2-Adapter:

                                  .....und gute Besserung.

                                  Ich schließe mich dem an.
                                  Auf eine baldige Genesung.

                                  1 Reply Last reply Reply Quote 0
                                  • SBorg
                                    SBorg Forum Testing Most Active @moppel2810 last edited by

                                    @moppel2810 Das kommt auf deine Netzwerktopologie an. Du erreichst vom ioBroker das 2. Netzwerk und wie routest du?
                                    Am einfachsten wäre eine 2. Netzwerkkarte im ioBroker-Rechner die auf das 2. Netzwerk routet. Die findet er aber von alleine...

                                    moppel2810 1 Reply Last reply Reply Quote 0
                                    • moppel2810
                                      moppel2810 @SBorg last edited by

                                      @SBorg
                                      ich nutze einen raspberry pi 4 der ist über meine fritzbox (Haus) auch mit dem router auf dem Boden für den Garten verbunden.

                                      SBorg 1 Reply Last reply Reply Quote 0
                                      • SBorg
                                        SBorg Forum Testing Most Active @moppel2810 last edited by

                                        @moppel2810 Ich befürchte das wird nicht funktionieren. Gib auf dem PI mal testweise in einem Terminal arp -a (genügt als User. sudo ist nicht nötig) ein. Taucht da in der Liste ein angemeldetes Gerät vom 2. Netzwerk auf?

                                        moppel2810 1 Reply Last reply Reply Quote 0
                                        • D
                                          Daniel81 last edited by

                                          Hallo zusammen,
                                          leider bekomme ich den Radar2.0 bei mir nicht dazu, meine BT Gräte zu erkennen.
                                          Im alten Radar Adapter läuft alles ohne Probleme.
                                          Ich betreibe IoBroker auf einem Intel NUC mit Proxmox mit VM.
                                          Ich hoffe, ihr könnt mir hier behilflich sein.

                                          Grüße Danielradar2.0.JPG

                                          Diginix 1 Reply Last reply Reply Quote 0
                                          • Diginix
                                            Diginix @Daniel81 last edited by

                                            @Daniel81 Hast du radar(1) und radar2 gleichzeitig laufen? Dann würde einer den anderen blockieren.
                                            Ist dein BT Dongle/Chip id -1?
                                            Mit folgendem Kommando bekommst du in der Konsole die device ID.

                                            hcitool dev
                                            

                                            Ansonsten bleibt nur das Log genauer anzuschauen. Ggf. auch den Loglevel von radar2 auf debug zu setzen.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            712
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            adapter radar2 adapter
                                            80
                                            840
                                            177996
                                            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