Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Briefkastenscript: Umzug von der CCU auf ioBroker

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] Briefkastenscript: Umzug von der CCU auf ioBroker

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

      Hi zusammen!

      Ich hab mehr oder weniger ein kleines Problem.

      Ich möchte nach und nach meine Scripte von der CCU umziehen lassen auf ioBroker.

      Jetzt hab ich da so eines das nicht so will wie ich gerne möchte.

      Ich habe zuhause meinen Briefkasten mit 2 Mikroschalter ausgestattet und an einem Arduino (homeduino von stall.biz) hängen.

      Der sendet dann an die CCU den Zustand ob die Einwurfklappe geöffnet wurde und ob ne Entleerung stattgefunden hat. Es werden also 2 Systemvariablen (Typ: boolean) bei Öffnung auf false gesetzt.

      Überwacht wird das auf der CCU mit folgendem Script:

      string message;
      integer inserts;
      
      ! Setzen der Priorität für die Push-Nachricht
      dom.GetObject("CCU SV Push Prio").State("0");
      
      ! +++++ Auswahl des Push-Dienstes (1: Pushover, 2: Prowl, 3: Pushalot, 4: alle) +++++
      if(dom.GetObject("CCU SV Push-Dienst").Value() != 0){
        dom.GetObject("CCU SV Push-Dienst").State(1);
      }
      
      ! Sound für Pushover-Nachricht
      dom.GetObject("CCU SV Pushover Sound").State("bugle");
      
      ! Nachricht "Post ist da" an Dreambox 600PVR senden
      dom.GetObject("CUxD.CUX2801001:2.CMD_EXEC").State("wget -q -O /dev/null 'http://192.168.178.90/cgi-bin/xmessage?caption=Postkasten&timeout=0&body=Post%20ist%20da%20!!!&=1'");
      
      ! Briefkasten-Einwürfe um Eins erhöhen
      inserts = dom.GetObject("EG Briefkasten SV Einwürfe").Value().ToInteger();
      inserts = inserts + 1;
      dom.GetObject("EG Briefkasten SV Einwürfe").Variable(inserts).ToString(0);
      
      ! Anzeige "Post ist da" auf LED16-Statusdisplay
      dom.GetObject("BidCos-RF.JEQ0087074:15.LED_STATUS").State(3);
      
      ! Erzeugen der Nachricht
      message = "Briefkasten leeren, ";
      if(inserts == 1)
      {
        message = message # "1 Einwurf!";
      }
      if(inserts > 1)
      {
        message = message # "" # inserts # " Einwürfe!";
      }
      dom.GetObject("CCU SV Push Text").State(message);
      
      ! Programm "CCU PRG Push-Nachrichten" ausführen
      dom.GetObject("CCU PRG Push-Nachrichten").ProgramExecute();
      
      ! Ansage "Post ist da" am Flur-Tablet über Home24-Mediaplayer
      string url="'http://192.168.178.70:50000/tts=Post ist da'";
      dom.GetObject("CUxD.CUX2801001:14.CMD_EXEC").State("wget -q -O - "#turl);
      
      

      Das Script erfasst den Einwurf, die Anzahl der Einwürfe, sendet eine Nachricht an meine Dreambox und löst eine Ansage über Home24-Mediaplayer auf dem Tab aus.

      Desweiteren bekomme ich dann noch eine Pushnachricht über eine Zentrales Nachrichtenprogramm von dtp aus m Homematicforum.

      Und hier mein Versuch in Javascript auf ioBroker

      /* Programm zum Erfassen der Briefkasteneinwürfe */
      
      	var logging = true;
      	var instanz = 'javascript.0';  instanz = instanz + '.';
      	var pfad = 'Briefkasten.';
      	var idSayIt = 'sayit.0.tts.text';
      	var lautstaerke = 100;
      	var ansagetext = "Post ist da.";
      
      /* Erzeugen der nötigen Datenpunkte */
      	createState(pfad + 'Briefkasten_gefuellt', true, {read: true, write: true, type: 'boolean', name: 'Briefkasten voll in VIS Widget anzeigen', desc: 'Steuervariable für VIS Widget Sichtbarkeit'});
      	createState(pfad + 'Briefeinwurf_zaehlen', 0, {read: true, write: true, type: 'number', name: 'Briefeinwürfe zählen', desc: 'Counter für Briefeinwürfe'});
      	createState(pfad + 'Briefkastensperre', false, {read: true, write: true, type: 'boolean', name: 'Briefkastensperre', desc: 'Sperrt die Zählung der Einwürfe für eine festgelegte Zeit'});
      
      /* Deklarieren der Benachrichtigungsdienste */
      function meldung_push (text, titel, prio, sound, device) {
          sendTo("pushover", { 
              message: text, 
              title: titel, 
              priority: prio,
      		sound: sound,
      		device: device
          });
      }
      function meldung_email (from, to, subject, html) {
          sendTo("email", { 
          from:    from,
          to:      to,
          subject: subject,
      	html:	 html
          });
      }
      function meldung_telegram (text, chatID ) {
          sendTo('telegram.0', { 
          text:    text,
          chatID:      chatID
          });
      }
      /* Abfragen eingestellten Nachrichten-Dienst */
      /* aus=0 ; alle=1 ; Pushover=2 ; Telegram=3 ; eMail=4 */
          var pushdienst = 'hm-rega.0.31934';
          var pushprio = 0;
      	var idSound = 'bugle';
      	var idDevice = 'htc10'; // Eingabe Gerät die die Pushnachricht erhalten soll
      	var idChatID = '<eingabechatid-telegram>';
      	var idEmailVon = "<eingabe emailadress="">";
      	var idEmailAn = "<eingabe emailadress="">";
      
      /* Variablen deklarieren */
          var idBriefkasteneinwurf = 'hm-rega.0.15056';
      	var idBriefentnahme = 'hm-rega.0.15057';
      //	var idBriefkasteneinwurf = 'javascript.0.Briefeinwurf_Taster';
      //	var idBriefentnahme = 'javascript.0.Briefentnahme_Taster';
          var idCountEinwurf = instanz + pfad + 'Briefeinwurf_zaehlen';
      	var idSperre = instanz + pfad + 'Briefkastensperre';
          var idShowPostIcon = instanz + pfad + 'Briefkasten_gefuellt';
      
      on({id: idBriefkasteneinwurf, val: false},
      function (obj) {
          var counter = getState(idCountEinwurf).val; // Einwurfcounter einlesen
      	var sperre = getState(idSperre).val; // Zustand Briefkastensperre einlesen
      	setState(idShowPostIcon, true); // Icon für Briefkasteneinwürfe setzen
          setState(idSayIt, lautstaerke + ";" + ansagetext);  // Ansagetext über Tablet
      	/* MessageBox auf der Dreambox öffnen mit Anzeigetext "Post ist da" */
      	//	exec('wget -q -O /dev/null http://192.168.178.90/cgi-bin/xmessage?caption=Postkasten&timeout=0&body=Post%20ist%20da%20!!!&=1', function (error, stdout, stderr) {console.log('stdout: ' + stdout);});
      
      	if(sperre === false){
          setState(idCountEinwurf, ++counter); // Einwurf um eins hochzählen
      	if(counter === 1){
      	Briefkastenmeldung(); // Nachrichtendienste auslösen
      		} else
      		if(counter > 1){
      //		if((getState(idCountEinwurf).val) > 1){
      	BriefkastenmeldungMehrzahl(); // Nachrichtendienste auslösen
      		}
          setState(idSperre, true); // Briefkastensperre aktivieren
          setStateDelayed(idSperre, false, 30000); // Briefkastensperre nach 30sec wieder deaktivieren
      	}
      });
      
      on({id: idBriefentnahme, val: false}, 
      function (obj) {
          var clearpost = instanz + pfad + 'Briefeinwurf_zaehlen';
          setState(clearpost, 0); // Briefkasteneinwürfe löschen
      	setState(idShowPostIcon, false); // Icon für Briefkasteneinwürfe deaktivieren
      	Briefkastenentleerung();
      });
      
      /* ######################## Funktion für Meldung bei einem Einwurf ################################ */
      function Briefkastenmeldung() {
      /* Variablen befüllen */
      	var Einwurfanzahl = ((getState(idCountEinwurf).val) +1);
      /* ##################################### */
      	var betreff = 'Briefkastenmeldung';
          var meldung = 'Briefkasten: ' + Einwurfanzahl + ' Einwurf! \n\n' 
      				+ 'ioBroker';
          var meldung1 = 'Briefkasten: ' + Einwurfanzahl + ' Einwurf! \n\n'
      				+ 'ioBroker';
      	var meldunghtml = '
      
      <u>Briefkastenmeldung</u>
      
      ' +
      					  'Briefkasten: ' + Einwurfanzahl + ' Einwurf!' + '
      ' + '
      ' + '
      ' +
      
      					  'ioBroker' + '</eingabe></eingabe></eingabechatid-telegram>
      ```'; /* Nachrichteninhalt für Pushover*/ var sound = idSound; var device = idDevice; var ID = idChatID; if ( (getState(pushdienst).val === 2) || (getState(pushdienst).val === 1) ) { meldung_push(meldung, betreff, pushprio, sound, device); } if ( (getState(pushdienst).val === 3) || (getState(pushdienst).val === 1) ) { meldung_telegram(meldung1, ID); } /* Nachrichteninhalt an email übertragen */ var von = idEmailVon; var an = idEmailAn; if ( (getState(pushdienst).val === 1) || (getState(pushdienst).val === 4) ) { meldung_email(von, an, betreff, meldunghtml); } if (logging) log('Anzahl Briefkasteneinwürfe an Nachrichtendienst übertragen'); } /* ############################################################################################# */ /* ############ Funktion für Meldung bei mehr als einem Einwurf ################################ */ function BriefkastenmeldungMehrzahl() { /* Variablen befüllen */ var Einwurfanzahl1 = ((getState(idCountEinwurf).val) +1); /* ##################################### */ var betreff1 = 'Briefkastenmeldung'; var meldung1 = 'Briefkasten: ' + Einwurfanzahl1 + ' Einwürfe! \n\n' + 'ioBroker'; var meldung11 = 'Briefkasten: ' + Einwurfanzahl1 + ' Einwürfe! \n\n' + 'ioBroker'; var meldunghtml1 = '
      
      <u>Briefkastenmeldung</u>
      
      ' + 'Briefkasten: ' + Einwurfanzahl1 + ' Einwürfe!' + '
      ' + '
      ' + '
      ' + 'ioBroker' + ''; /* Nachrichteninhalt für Pushover*/ var sound1 = idSound; var device1 = idDevice; var ID1 = idChatID; if ( (getState(pushdienst).val === 2) || (getState(pushdienst).val === 1) ) { meldung_push(meldung1, betreff1, pushprio, sound1, device1); } if ( (getState(pushdienst).val === 3) || (getState(pushdienst).val === 1) ) { meldung_telegram(meldung11, ID1); } /* Nachrichteninhalt an email übertragen */ var von1 = idEmailVon; var an1 = idEmailAn; if ( (getState(pushdienst).val === 1) || (getState(pushdienst).val === 4) ) { meldung_email(von1, an1, betreff1, meldunghtml1); } if (logging) log('Anzahl Briefkasteneinwürfe an Nachrichtendienst übertragen'); } /* ############################################################################################# */ /* ###################### Funktion für Meldung bei Entleerung ################################## */ function Briefkastenentleerung() { /* Variablen befüllen */ var betreff2 = 'Briefkastenmeldung'; var meldung2 = 'Briefkasten wurde entleert! \n\n' + 'ioBroker'; var meldung12 = 'Briefkasten wurde entleert! \n\n' + 'ioBroker'; var meldunghtml2 = '
      
      <u>Briefkastenmeldung</u>
      
      ' + 'Briefkasten wurde entleert!' + '
      ' + '
      ' + '
      ' + 'ioBroker' + ''; /* Nachrichteninhalt für Pushover*/ var sound2 = idSound; var device2 = idDevice; var ID2 = idChatID; if ( (getState(pushdienst).val === 2) || (getState(pushdienst).val === 1) ) { meldung_push(meldung2, betreff2, pushprio, sound2, device2); } if ( (getState(pushdienst).val === 3) || (getState(pushdienst).val === 1) ) { meldung_telegram(meldung12, ID2); } /* Nachrichteninhalt an email übertragen */ var von2 = idEmailVon; var an2 = idEmailAn; if ( (getState(pushdienst).val === 1) || (getState(pushdienst).val === 4) ) { meldung_email(von2, an2, betreff2, meldunghtml2); } if (logging) log('Briefkastenentleerung an Nachrichtendienst übertragen'); } /* ############################################################################################# */`
      
      Aber irgendwie klappt das nicht.
      
      Wenn ich das Sript manuell (mit viertuellen Tastern) auslöse dann gehts!
      

      // var idBriefkasteneinwurf = 'javascript.0.Briefeinwurf_Taster',
      // idBriefentnahme = 'javascript.0.Briefentnahme_Taster',

      Aber nicht über triggern der Systemvariablen vom Homeduino.
      
      Kann mir da jemand vielleicht weiterhelfen?
      
      Gruß
      
      Johnny
      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Hallo Johnny,

        das Skript ist ja ein ganz schönes Monster 😛 Da mal eben schnell zu schauen, wo der Fehler liegt, ist relativ schwierig.

        Aber du hast ja das Problem schon weiter eingegrenzt.@PrinzEisenherz1:

        Wenn ich das Sript manuell (mit viertuellen Tastern) auslöse dann gehts!

        …

        Aber nicht über triggern der Systemvariablen vom Homeduino. `
        Ich würde also erstmal in einem zweiten Test-Skript ausprobieren, ob die Homeduino-gesetzten Variablen in ioBroker erkannt werden. Ganz klein:

        var idHomeduino1= 'hm-rega.0.15056';
        var idHomeduino2 = 'hm-rega.0.15057';
        
        on(idHomeduino1, function (data) {
            log('Homeduino 1: ' + data.state.val);
        });  
        
        on(idHomeduino2, function (data) {
            log('Homeduino 2: ' + data.state.val);
        });  
        
        

        Und ich würde darüber nachdenken, die Daten des Homeduino ohne den Umweg über die CCU direkt an ioBroker zu senden. Dafür ist ioBroker schließlich da.

        Gruß

        Pix

        1 Reply Last reply Reply Quote 0
        • P
          PrinzEisenherz1 last edited by

          Hi Pix

          Lach..n kleines Script ist es wirklich nicht geworden.

          Ich hab hald gedacht ich lagere die Dinge für Nachrichtenversenden in Funktionen aus und die sind am Ende vom Script.

          Ich werde heute Abend mal Dein kleines Testscript probieren.

          Das mit dem Homeduino direkt an ioBroker ist auch ne interessante Idee, da muss ich dann erstmal den Sketch umschreiben das er mir die Daten an ioBroker sendet.

          Ist das mit dem counter und der Sperrzeit in meinem Script so machbar?

          hier der Auszug

          on({id: idBriefkasteneinwurf, val: false},
          function (obj) {
              var counter = getState(idCountEinwurf).val; // Einwurfcounter einlesen
          	var sperre = getState(idSperre).val; // Zustand Briefkastensperre einlesen
          	setState(idShowPostIcon, true); // Icon für Briefkasteneinwürfe setzen
              setState(idSayIt, lautstaerke + ";" + ansagetext);  // Ansagetext über Tablet
          	/* MessageBox auf der Dreambox öffnen mit Anzeigetext "Post ist da" */
          	//	exec('wget -q -O /dev/null http://192.168.178.90/cgi-bin/xmessage?caption=Postkasten&timeout=0&body=Post%20ist%20da%20!!!&=1', function (error, stdout, stderr) {console.log('stdout: ' + stdout);});
          
          	if(sperre === false){
              setState(idCountEinwurf, ++counter); // Einwurf um eins hochzählen
          	if(counter === 1){
          	Briefkastenmeldung(); // Nachrichtendienste auslösen
          		} else
          		if(counter > 1){
          	BriefkastenmeldungMehrzahl(); // Nachrichtendienste auslösen
          		}
              setState(idSperre, true); // Briefkastensperre aktivieren
              setStateDelayed(idSperre, false, 30000); // Briefkastensperre nach 30sec wieder deaktivieren
          	}
          });
          
          

          Gruß

          Johnny

          1 Reply Last reply Reply Quote 0
          • P
            pix last edited by

            Hallo Johnny,

            Ja das sollte mit der Sperre gehen. Alternativ gibt es auf der Seite ccu.io unter Script ein Beispiel für ein Briefkastenzähler mit Sperre.

            Die Unterscheidung nach einer oder mehreren Einwürfen kannst du auch in der zielfunktion abfragen, wenn du die Zahl mit übergibst. Das spart Code.

            Briefkastenmeldung(counter);
            
            funktion Briefkastenmeldung(anzahl) {
                if (anzahl > 1) log("es gibt eine neue Nachricht');
            Else // ...
            }
            
            

            Gruß

            Pix

            1 Reply Last reply Reply Quote 0
            • P
              PrinzEisenherz1 last edited by

              Hi Pix!

              Jetzt klappt es! Hab den Arduino so umkonfiguriert das er direkt mit ioBroker spricht!

              Das Script hab ich auch noch etwas eingekürzt!

              ! ````
              /* ##### Programm zum Erfassen der Briefkasteneinwürfe ########/
              /
              #### Verfasst durch Schneider Johann (PrinzEisenherz1) #######*/
              var logging = false;
              var instanz = 'javascript.0'; instanz = instanz + '.';
              var pfad = 'Briefkasten.';
              var idSayIt = 'sayit.0.tts.text';
              var lautstaerke = 100;
              var ansagetext = "Post ist da.";
              var betreff = 'Briefkastenmeldung';
              var von = "eMail-Adresse"; // Absender
              var an = "eMail-Adresse"; // Empfänger

              /* Erzeugen der nötigen Datenpunkte */
              createState(pfad + 'Briefkasten_gefuellt', true, {read: true, write: true, type: 'boolean', name: 'Briefkasten voll in VIS Widget anzeigen', desc: 'Steuervariable für VIS Widget Sichtbarkeit'});
              createState(pfad + 'Briefwürfe_zaehlen', 0, {read: true, write: true, type: 'number', name: 'Briefwürfe zählen', desc: 'Counter für Briefwürfe'});
              createState(pfad + 'Briefkastensperre', false, {read: true, write: true, type: 'boolean', name: 'Briefkastensperre', desc: 'Sperrt die Zählung der Einwürfe für eine festgelegte Zeit'});

              ! /* Abfragen eingestellten Nachrichten-Dienst /
              /
              aus=0 ; alle=1 ; Pushover=2 ; Telegram=3 ; eMail=4 */
              var pushdienst = 'hm-rega.0.32673';
              var pushprio = 0;
              var idSound = 'bugle';
              var idDevice = '';
              var TelegramID = 'ChatID';

              /* ############## Variablen deklarieren ############################# /
              var idBriefkasteneinwurf = 'javascript.0.Technikraum.Homeduino.homeduino_001_D27';
              var idBriefentnahme = 'javascript.0.Technikraum.Homeduino.homeduino_001_D26';
              var idCountEinwurf = instanz + pfad + 'Briefwürfe_zaehlen';
              var idSperre = instanz + pfad + 'Briefkastensperre';
              var idShowPostIcon = instanz + pfad + 'Briefkasten_gefuellt';
              /
              ######################################################### */

              ! /* Deklarieren der Benachrichtigungsdienste /
              function meldung_push (text, titel, prio, sound, device) {
              sendTo("pushover", {
              message: text,
              title: titel,
              priority: prio,
              sound: sound,
              device: device
              });
              }
              function meldung_email (from, to, subject, html) {
              sendTo("email", {
              from: from,
              to: to,
              subject: subject,
              html: html
              });
              }
              function meldung_telegram (text, chatID ) {
              sendTo('telegram.0', {
              text: text,
              chatID: chatID
              });
              }
              ! on({id: idBriefkasteneinwurf, val: 0},
              function (obj) {
              var counter = getState(idCountEinwurf).val; // bisherige Zahl aus Variable einlesen
              var sperre = getState(idSperre).val; // Zustand Briefkastensperre einlesen
              setState(idShowPostIcon, true); // Icon für Briefkasteneinwürfe setzen
              setState('hm-rpc.0.JEQ0087074.15.LED_STATUS', 3); // LED16-Status Orange
              if(sperre === false){
              setState(idCountEinwurf, ++counter); // eins hochzählen
              if(counter === 1){
              Briefkastenmeldung(counter);
              } else
              if(counter > 1){
              Briefkastenmeldung(counter);
              }
              setState(idSperre, true); // Briefkastensperre aktivieren
              setStateDelayed(idSperre, false, 30000); // Briefkastensperre nach 30.000 ms wieder deaktivieren
              }
              });
              ! on({id: idBriefentnahme, val: 0},
              function (obj) {
              var clearpost = instanz + pfad + 'Briefwürfe_zaehlen'; // bisherige Zahl aus Variable einlesen
              setState(clearpost, 0); // Briefkasteneinwürfe löschen
              setState('hm-rpc.0.JEQ0087074.15.LED_STATUS', 2); // LED16-Status grün
              setState(idShowPostIcon, false); // Icon für Briefkasteneinwürfe löschen
              Briefkastenentleerung();
              });
              ! /
              ################## Funktion für Meldung bei einem Einwurf ########################## /
              function Briefkastenmeldung(anzahl) {
              /
              Variablen befüllen /
              var Einwurfanzahl = ((getState(idCountEinwurf).val) +1);
              /
              ###### Ausgabe über SayIt und auf der Dreambox PVR600 ####### /
              setState(idSayIt, lautstaerke + ";" + ansagetext); // Ansagetext über Tablet
              require('request')("http://192.168.178.90/cgi-bin/xmessage?caption=Postkasten&timeout=0&body=Post&=1");
              /
              ##################################################################### */
              var meldung = 'Briefkasten: ';
              var meldunghtml = '
              ! <u>Briefkastenmeldung</u>
              ! ' +
              'Briefkasten: ';
              if (anzahl === 1){
              meldung = meldung + Einwurfanzahl + ' Einwurf! \n\n'
              + 'ioBroker';
              meldunghtml = meldunghtml + Einwurfanzahl + ' Einwurf!' + '
              ' + '
              ' + '
              ' +
              'ioBroker' + '

              ' + '
              ' + '
              ' + 'ioBroker' + ''; } /* Nachrichteninhalt für Pushover*/ if ( (getState(pushdienst).val === 2) || (getState(pushdienst).val === 1) ) { meldung_push(meldung, betreff, pushprio, idSound, idDevice); } if ( (getState(pushdienst).val === 2) || (getState(pushdienst).val === 3) || (getState(pushdienst).val === 1) ) { meldung_telegram(meldung, TelegramID); } /* Nachrichteninhalt an email übertragen */ if ( (getState(pushdienst).val === 1) || (getState(pushdienst).val === 4) ) { meldung_email(von, an, betreff, meldunghtml); } if (logging) log('Anzahl Briefkasteneinwürfe an Pushover und eMail übertragen'); } /* ############### Funktion für Meldung bei Entleerung ###################### */ function Briefkastenentleerung() { /* Variablen befüllen */ var meldung2 = 'Briefkasten wurde entleert! \n\n' + 'ioBroker'; var meldunghtml2 = '
              >! <u>Briefkastenmeldung</u>
              >! ' + 'Briefkasten wurde entleert!' + '
              ' + '
              ' + '
              ' + 'ioBroker' + ''; /* Nachrichteninhalt für Pushover*/ if ((getState(pushdienst).val === 2) || (getState(pushdienst).val === 1) ) { meldung_push(meldung2, betreff, pushprio, idSound, idDevice); } if ((getState(pushdienst).val === 2) || (getState(pushdienst).val === 3) || (getState(pushdienst).val === 1) ) { meldung_telegram(meldung2, TelegramID); } /* Nachrichteninhalt an email übertragen */ if ((getState(pushdienst).val === 1) || (getState(pushdienst).val === 4) ) { meldung_email(von, an, betreff, meldunghtml2); } if (logging) log('Briefkastenentleerung an Pushover und eMail übertragen'); }`
              Sieht hoffentlich jetzt besser aus? *fg*
              
              Nochmal vielen Dank!
              
              Johnny
              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              1.0k
              Online

              31.7k
              Users

              79.7k
              Topics

              1.3m
              Posts

              2
              5
              1708
              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