Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Skript: Alle RHS/Fenster in einem Raum

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.7k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Skript: Alle RHS/Fenster in einem Raum

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
11 Beiträge 4 Kommentatoren 4.0k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    pix
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich möchte für die Anzeige in Vis eine Variable nutzen, die den Zustand aller Fenster (Gewerk: Fenster) eines Raumes (enumName: Schlafzimmer) anzeigt. Zur Zeit sind zwei RotateHandleSensors RHS installiert (links und rechts). Ist einer der beiden Sensoren auf "offen" (Status 2), soll auch die Variable Status 2 bekommen, ist einer der beiden gekippt und keiner offen, soll die Variable status 1 bekommen, sind bei zu (status 0), soll die Variable auch auf 0 stehen.

    In CCU.IO habe ich das so hinbekommen:

    // *************************** RHS Schlafzimmer Fenster **********************************
    setObject(100070, {
        Name: 'Status Schlafzimmer Fenster',
        DPInfo: 'Status aller Fenster im Schlafzimmer (r)',
        TypeName: 'VARDP',
        ValueUnit: '',
        ValueType: 16,
        ValueSubType: 29,
        ValueList: 'zu;gekippt;offen',
        _persistent: true
    });
    
    var idStatusFensterSchlafzimmer = 100070, // CCU.IO Variable mit Status aller Fenster
        // idStatusSZFensterrechts = 100069,     // CCU.IO Variable mit dem Status (wird in anderem Skript befüllt)
        // idStatusSZFensterlinks = 100025;      // CCU.IO Variable mit dem Status (wird in anderem skript befüllt)
        idStatusSZFensterrechts = 60258, // HM Gerät 'Schlafzimmer Fenster rechts' Drehgriff RHS LEQ0283235:1.STATE
        idStatusSZFensterlinks = 20605; // HM Gerät 'Schlafzimmer Fenster links' Drehgriff RHS JEQ0040998:1.STATE
    
    // Überwacht alle RHS im Raum Schlafzimmer (bisher zwei)
    subscribe({
        room:'Schlafzimmer',
        name:/STATE$/,
        deviceType: /HM-Sec-RHS/,
        change: 'ne'
    }, function(obj) { 
        var AktornameSZ = obj.channel.name;
        if (AktornameSZ.indexOf('Statistik') != -1) { // "Statistik" im Namen enthalten (CuxD-Gerät)
        } else { // also kein CUxD Wrapper State Device
            szfensterlinks = getState(idStatusSZFensterlinks);
            szfensterrechts = getState(idStatusSZFensterrechts);
            switch(obj.newState.value) {
                case true:
                    if ( (szfensterrechts != 2) && (szfensterlinks != 2) ) { // wenn kein Fenster offen
                        setState(idStatusFensterSchlafzimmer, 1); // Fenster gekippt
                    }
                    break;
                case 2:
                    setState(idStatusFensterSchlafzimmer, 2); // Fenster offen
                    break;
                case false:
                    if ( (szfensterrechts != 2) && (szfensterrechts != 1) && (szfensterlinks != 2) && (szfensterlinks != 1) ) { // wenn kein Fenster offen oder gekippt
                        setState(idStatusFensterSchlafzimmer, 0); // Fenster zu
                    }
                    break;
            }
        }
    
    });
    
    

    Eine kleine Besonderheit ist hier, dass die Geräte mit Namensteil "Statistik" nicht berücksichtigt werden sollen (Sind CUxD Statistik Geräte). Ist aber egal. Kann man ignorieren.

    Mein Problem ist die Abfrage der Aktoren. In iobroker.javascript gibt es die Abfrage "deviceType" nicht mehr. Ich habe es geschafft, alle Fenstersensore abzufragen. aber ich will ja nur die in diesem Raum.

    Hier mein Sersuch

    createState('Status_Schlafzimmer_Fenster'); // ioBroker Variable mit dem Status aller Fenster im Schlafzimmer
    
    var idStatusSchlafzimmerFenster = "javascript.0.Status_Schlafzimmer_Fenster"/*Status_Schlafzimmer_Fenster*/;
    
    on({enumNames: ['Schlafzimmer', 'Fenster'], name: /.STATE$/, change: 'ne' }, function(obj) {
        var fenster = parseInt(obj.newState.val);
        log(fenster);
        if (fenster == 1) {
            setState(idStatusSchlafzimmerFenster, 1); // Fenster gekippt
        } else if (fenster == 2) {
            setState(idStatusSchlafzimmerFenster, 2); // Fenster offen
        } else if (fenster == 3) {
            setState(idStatusSchlafzimmerFenster, 0); // Fenster zu
        }
    });
    

    Hat jemand eine Idee? Kann ich die Aufzählungen aus Gewerk und Raum so machen?````
    enumNames: ['Schlafzimmer', 'Fenster'],

    
    Gruß
    
    Pix

    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

    1 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #2
      // Select and show (for debug) all sensors in "Kabinet" and with type "Fenster"
      var sensors = $('channel[state.id=*.STATE](rooms=Kabinet)(functions=Fenster)').each(function(id) {
          log(id);
      });
      
      function getCurrentState() {
       	var commonState = 0;
      	sensors.each(function (id) {
      	    if (id.indexOf('Statistik') != -1) return; 
      		var val = getState(id).val;
      		log(id + ' = ' + val);
      		// Convert from any possible value to int
      		if (val === true  || val === 'true')  val = 1;
      		if (val === false || val === 'false') val = 0;
      		val = parseInt(val) || 0;
      
      		log(id + ' = ' + val);
      		// Find the maximum (2 - opened, 1 - tilted, 0 - closed)
      		if (val > commonState) commonState = val;
      	});
      		log('State= ' + commonState);
          return commonState;
      }
      
      // On change
      sensors.on(function(obj) {
           if (obj.id.indexOf('Statistik') == -1) {
      		setState('Status_Schlafzimmer_Fenster', getCurrentState());
           }
      });
      
      createState('Status_Schlafzimmer_Fenster',getCurrentState());
      
      

      Vielleicht braucht man in adapter dir Funktionen: convertToInt, convertToBool

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pix
        schrieb am zuletzt editiert von
        #3

        Hallo Bluefox,

        es funktioniert so. Ist sehr nützlich, da es auch in Räumen funktioniert, die zur Zeit noch nur mit einem Sensor ausgestattet sind. Wenn ich später mal nachrüste, brauch ich am Skript nichts zu ändern.

        Vielen Dank für die Hilfe. Werde mich sicher noch einige Male an Dich wenden.

        Gruß

        Pix

        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

        1 Antwort Letzte Antwort
        0
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          schrieb am zuletzt editiert von
          #4

          @Bluefox:

          // Select and show (for debug) all sensors in "Kabinet" and with type "Fenster"
          var sensors = $('channel[state.id=*.STATE](rooms=Kabinet)(functions=Fenster)').each(function(id) {
              log(id);
          });
          
          function getCurrentState() {
           	var commonState = 0;
          	sensors.each(function (id) {
          	    if (id.indexOf('Statistik') != -1) return; 
          		var val = getState(id).val;
          		log(id + ' = ' + val);
          		// Convert from any possible value to int
          		if (val === true  || val === 'true')  val = 1;
          		if (val === false || val === 'false') val = 0;
          		val = parseInt(val) || 0;
          		
          		log(id + ' = ' + val);
          		// Find the maximum (2 - opened, 1 - tilted, 0 - closed)
          		if (val > commonState) commonState = val;
          	});
          		log('State= ' + commonState);
              return commonState;
          }
          
          // On change
          sensors.on(function(obj) {
               if (obj.id.indexOf('Statistik') == -1) {
          		setState('Status_Schlafzimmer_Fenster', getCurrentState());
               }
          });
          
          createState('Status_Schlafzimmer_Fenster',getCurrentState());
          
          

          Vielleicht braucht man in adapter dir Funktionen: convertToInt, convertToBool `

          Es geht auch Tick kompakte ab neue JS version:

          // Select and show (for debug) all sensors in "Kabinet" and with type "Fenster"
          var sensors = $('channel[state.id=*.STATE](rooms=Kabinet)(functions=Fenster)');
          
          function getCurrentState() {
           	var commonState = 0;
          	sensors.each(function (id) {
          	    if (id.indexOf('Statistik') != -1) return; 
          		var val = toInt(getState(id).val);
          		// Find the maximum (2 - opened, 1 - tilted, 0 - closed)
          		if (val > commonState) commonState = val;
          	});
              return commonState;
          }
          
          // On change
          sensors.on(function(obj) {
               if (obj.id.indexOf('Statistik') == -1) setState('Status_Schlafzimmer_Fenster', getCurrentState());
          });
          
          createState('Status_Schlafzimmer_Fenster', getCurrentState());
          
          
          1 Antwort Letzte Antwort
          0
          • F Offline
            F Offline
            Fitti
            schrieb am zuletzt editiert von
            #5

            Hallo,

            ich habe ein ähnliches Problem, bei mir sollen es 3 Räume aus dem Obergeschoß werden.

            Kann man die Zeile

            var sensors = $('channel[state.id=*.STATE](rooms=Kabinet)(functions=Fenster)');
            

            entsprechend anpassen, dass ich diese drei Räume mit den FT (Fenster/Tür)Kontakten abfragen kann? Alle(!) FTKontakte haben bei mir das Gewerk Alarmanlage. DIe Räume sind enstsprechend zugeweisen.

            z. B. …(rooms=Schlafzimmer,Bad,Kind)? Als Trennzeichen hatte ich , ; | erfolglos versucht.

            Wie funktioniert überhaupt diese Zeile :?:

            Ich kann z. B. an einem Lampen-Objekt keine Gewerke bei mir sehen.

            Nur das Objekt enum.functions.Licht hat als Member die einzelnen zugewiesenen Objekte. Aber diese Liste wird doch hier gar nicht abgefragt, oder?

            <u>Kurzum:</u> Wie funktioniert denn diese tolle Zauberzeile genau? Hier ist ja mächtig Potential, Skripte erheblich zu verkürzen.

            Ich hatte versucht mit eine

            log (sensors);
            

            zu experementieren. Leider kommt hier immer nur ein "undefined". Muss ich hier was anderes machen, um den Inhalt anzuzeigen?

            Danke im Voraus,

            Fitti

            "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
            Plural von Status ist auch Status!

            1 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              pix
              schrieb am zuletzt editiert von
              #6

              Hallo,

              Du kannst die Bedingung (rooms=xxx) einfach weglassen, wenn nicht gebraucht.

              Gruß

              Pix

              Gesendet von meinem iPhone mit Tapatalk

              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

              1 Antwort Letzte Antwort
              0
              • F Offline
                F Offline
                Fitti
                schrieb am zuletzt editiert von
                #7

                @pix:

                Du kannst die Bedingung (rooms=xxx) einfach weglassen, wenn nicht gebraucht. `
                Na ganz im Gegenteil - ich habe 10 Räume. Von nur drei Räumen möchte ich jeden TürFensterkontakt haben. Der Raum ist also essential.

                Diese Zeile bereitet mir immer noch Kopfschmerzen: sie scheint so voller Potenzial zu stecken und ich versteh' nix. :cry:

                Klar, der Filter ist verstanden, aber ich habe nicht einmal mit Hilfe eines anderen Programmierer, der ein bisschen Java auch macht (jau - wir haben hier JS… - aber wen man schon mal Zugriff hat :D ...), verstanden, ob Werte oder Objekte in der Variablen sensors landen. Nur ein Hochkomma usw...

                Wäre echt toll, wenn bitte noch jemand dieses noch etwas mehr erklären könnte. Gerne auch nur ein Link zur richtigen Erklärung irgendwo im INet. Da ich abe rnicht weiß, wonach ich suchen muss, finde ich auch nichts. Habe erfolglos zwei JavaScript Anleitungen durchgeblättert.

                Viele Grüße,

                Fitti

                "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
                Plural von Status ist auch Status!

                1 Antwort Letzte Antwort
                0
                • P Offline
                  P Offline
                  pix
                  schrieb am zuletzt editiert von
                  #8

                  Das hier hast du dir schon angesehen?

                  https://github.com/iobroker/ioBroker.javascript/blob/master/README.md#–-selector

                  Gruß

                  Pix

                  ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                  1 Antwort Letzte Antwort
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #9

                    @Fitti:

                    Nur das Objekt enum.functions.Licht hat als Member die einzelnen zugewiesenen Objekte. Aber diese Liste wird doch hier gar nicht abgefragt, oder? `
                    Doch, genau diese Zuweisungen sind entscheidend für die Auswertung der enums.

                    Z.B. legst Du ein Gewerk "Fenster-OG" unter enum.functions an und weist als Mitglieder alle TFK im OG zu. Dann dürfte die Abfrage recht einfach werden, z.B.:

                    // Alle TFK im Gewerk "Fenster-OG" auswerten
                    var sensors = $('channel[state.id=*.STATE](functions=Fenster-OG)');
                    
                    function getCurrentState() {
                       var commonState = false;
                       sensors.each(function (id) {
                            if (getState(id).val) commonState = true;
                       });
                       return commonState;
                    }
                    
                    // On change
                    sensors.on(function() {
                         setState('Status_OG-Fenster', getCurrentState());
                    });
                    
                    createState('Status_OG-Fenster', getCurrentState());
                    
                    

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    1 Antwort Letzte Antwort
                    0
                    • F Offline
                      F Offline
                      Fitti
                      schrieb am zuletzt editiert von
                      #10

                      @pix: :oops: Danke!

                      @paul53: Das wollte ich aus zwei Gründen vermeiden:

                      1.) Ich möchte die Gewerke nicht für logische Gruppen, die ich nur in einem Skript benötige, unnötig aufblähen. Das sind für mich auch zuviel Abhängigkeiten, die man später kaum überblickt.

                      2.) Es versuche mich in JS einzuarbeiten und das Ganze besser zu verstehen - und fragte mich deshalb, ob auch eine doppelte ROOMS-Filterung, oder das Ganze irgendwie anders geht?

                      Habe da noch Verständnisfragen - basierend auf der parallel laufende Anfrage von mir - ich will doppelte Posts vermeiden, deshalb mache ich nur hier weiter:

                      Im Code

                      var sensors = $('channel[state.id=*.STATE](rooms=Schlafzimmer)(functions=Fenster)');
                      
                      function getCurrentState() {
                          var commonState = 0;
                         sensors.each(function (id) {
                            var val = toInt(getState(id).val);
                            // Find the maximum (2 - opened, 1 - tilted, 0 - closed)
                            if (val > commonState) commonState = val;
                         });
                          return commonState;
                      }
                      
                      // On change
                      sensors.on(function(obj) {
                          if (obj.id.indexOf('Statistik') == -1) setState('Status_Schlafzimmer_Fenster', getCurrentState());});
                      
                      createState('Status_Schlafzimmer_Fenster', getCurrentState());
                      

                      <size size="150">1.)</size>

                      habe ich nun mit Eurer Hilfe es so verstanden, dass im Bereich //on Change eine Funktion definiert wird. Ein Wert wird dieser Funktion übergeben und dieser wird der Variablen obj zugewiesen. Eine Zeile später wird diese Variable in der Abfrage obj.id.indexOf("… verwendet, richtig? (Und das ist hier nur ein Filter, damit Aktoren mit dem Namen "Statistik" ausgefiltert werden.)

                      <size size="150">2.)</size>

                      Ich nehme an, dass der Wert, dem der Funktion-internen Variablen obj übergeben wird, aus dem Selector "sensors" übernommen wird und "vermutlich(?)" durch einen CallBack (Rückaufruf?) gefüllt wird, richtig? Also irgendein Deamon im Hintergrund, initiiert durch sensors.on, wacht über eine Liste (senosrs-Selector). Ändert sich was, wird dieser eine Wert(?) übergeben?

                      Ändert sich hier was, wird nun die Variable 'Status_Schlafzimmer_Fenster gesetzt, den Wert/Status dazu bekommt man durch die Funktion getCurrentState().

                      <size size="150">3.)</size>

                      In der Funktion getCurrentState() wird mit sensors.each(function(id) nun JEDER(?) Aktor in der Liste sensors (gefiltert durch den selector) einer neuen function einzeln übergeben. Diese Funktion wird in den soeben genannten code ( sensors.each(function(id) ) definiert und der Wert wird der Funktion-internen Variablen id übergeben,richtig?

                      <size size="150">3a.)</size>

                      Dadurch kann z . B. in der Zeile var val = toInt(getState(id).val); dieser Wert abgefragt werden, richtig?

                      <size size="150">4.)</size>

                      Letztendlich wird die allerletzte Zeile quasi nur ein einziges Mal aufgerufen, danach übernimmt die on "Schleife/Deamon" die Weiterverarbeitung, richtig?

                      <size size="150">5.)</size>

                      Was ist denn nun in der Variablen sensors drinnen? Eine Liste (Array?)?

                      Wie immer, vielen Dank für Eure Hilfe.

                      Viele Grüße,

                      Fitti

                      "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
                      Plural von Status ist auch Status!

                      1 Antwort Letzte Antwort
                      0
                      • F Offline
                        F Offline
                        Fitti
                        schrieb am zuletzt editiert von
                        #11

                        Das Skript läuft jetzt bei mir mit drei Räumen.

                        Ich habe die val variable global gemacht, für jeden Raum einen Selector eingesetzt und drei on Funktion hinzugefügt.

                        // Script zum Setzen einer Variablen, um z.B. eine kleines Übersichts-Icon/Widget
                        // anzuzeigen. 
                        // Die Variable VIS.zeige_1og_fensterstatus_icon kann folgende Werte haben:
                        // 0 - alle Fenster zu
                        // 1 - mindestens 1 Fenster angekippt
                        // 2 - mindestens 1 Fenster offen.
                        // Es wird immer der höhere Wert über allen räumen gesetzt.
                        // Im Widget muss unter der Sichtbarkeit die Variable > 0 abgefragt werden.
                        // Es werden die Sensoren in drei Räumen abgefragt(rooms=xxx), so wie diese gesetzt sind und jweils mit
                        // dem Gewerk (functions=xxx).
                        
                        var  sensors_raum1 = $('channel[state.id=*.STATE](rooms=Bad)(functions=Alarmanlage)').each(function(id) {
                            log("R1: " + id);
                            });
                        var  sensors_raum2 = $('channel[state.id=*.STATE](rooms=Wohnen1)(functions=Alarmanlage)').each(function(id) {
                            log("R2: " + id);
                            });
                        var  sensors_raum3 = $('channel[state.id=*.STATE](rooms=Wohnen2)(functions=Alarmanlage)').each(function(id) {
                            log("R3: " + id);
                            });
                        
                        var val;
                        
                        // Ohne Loginfo jedes erkannte Geräte:
                        //var sensors = $('channel[state.id=*.STATE](rooms=Wohnen1)(functions=Alarmanlage)');
                        
                        function getCurrentState() {
                            var commonState = 0;
                            sensors_raum3.each(function (id) {
                              val = toInt(getState(id).val);
                              // Find the maximum (2 - opened, 1 - tilted, 0 - closed)
                              if (val > commonState) commonState = val;
                           });
                            sensors_raum2.each(function (id) {
                              val = toInt(getState(id).val);
                              // Find the maximum (2 - opened, 1 - tilted, 0 - closed)
                              if (val > commonState) commonState = val;
                           });
                            sensors_raum1.each(function (id) {
                              val = toInt(getState(id).val);
                              // Find the maximum (2 - opened, 1 - tilted, 0 - closed)
                              if (val > commonState) commonState = val;
                           });
                            return commonState;
                        }
                        
                        // On change Raum3
                         sensors_raum3.on(function() {
                             setState('VIS.zeige_1og_fensterstatus_icon', getCurrentState());
                        });
                        
                        // On change Raum2
                         sensors_raum2.on(function() {
                             setState('VIS.zeige_1og_fensterstatus_icon', getCurrentState());
                        });
                        // On change Raum1
                         sensors_raum1.on(function() {
                             setState('VIS.zeige_1og_fensterstatus_icon', getCurrentState());
                        });
                        
                        createState("VIS.zeige_1og_fensterstatus_icon", getCurrentState(), {name: 'VIS Zeige 1Og Fensterstatus-Icon'});
                        
                        

                        Es funktioniert. Stellt sich mir nur die Frage, ob es vielleicht in der Abfrage optimiert werden kann oder ob die drei ON's in irgendeiner Form supoptimal sind?

                        Viele Grüße,

                        Fitti

                        "Es wird die Zeit kommen, da ihr euch entscheiden müsst zwischen dem, was richtig ist, und dem, was bequem ist."
                        Plural von Status ist auch Status!

                        1 Antwort Letzte Antwort
                        0
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        829

                        Online

                        32.4k

                        Benutzer

                        81.5k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe