Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. ioBroker Allgemein
  4. Tradfri: Lampen und Rollos mit HomeMatic Wandtaster steuern

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.6k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    668

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    1.2k

Tradfri: Lampen und Rollos mit HomeMatic Wandtaster steuern

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
19 Beiträge 5 Kommentatoren 1.5k Aufrufe 3 Beobachtet
  • Ä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.
  • D Offline
    D Offline
    dtp
    schrieb am zuletzt editiert von dtp
    #1

    Hallo,

    bei keinem meiner HMIP-Taster und Aktoren wird im hm-rpc-Adapter (Version 1.15.16) eine Tasterbetätigung angezeigt.

    2023-01-17_18h09_01.jpg

    Die entsprechenden Werte für die Kanäle 1 und 2 werden stets orange dargestellt. Wenn ich den Taster betätige, ändert sich aber der zugehörige RSSI-Wert.

    Ist das Problem bekannt?

    Ich nutze die Beta des js-controller V 4.0.24 mit Version 6.3.5 des admin-Adapters.

    EDIT: Mittlerweile habe ich das Problem dank der Mithilfe insb. von @paul53 und einigen weiteren Forumskollegen (siehe unten) lösen können. Um doppeltes Schreiben zu vermeiden, habe ich im HomeMatic-Forum einen kleinen Thread zu dem Projekt gestartet. Alles weitere dann dort (klick!)

    ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

    HomoranH A 2 Antworten Letzte Antwort
    0
    • D dtp

      Hallo,

      bei keinem meiner HMIP-Taster und Aktoren wird im hm-rpc-Adapter (Version 1.15.16) eine Tasterbetätigung angezeigt.

      2023-01-17_18h09_01.jpg

      Die entsprechenden Werte für die Kanäle 1 und 2 werden stets orange dargestellt. Wenn ich den Taster betätige, ändert sich aber der zugehörige RSSI-Wert.

      Ist das Problem bekannt?

      Ich nutze die Beta des js-controller V 4.0.24 mit Version 6.3.5 des admin-Adapters.

      EDIT: Mittlerweile habe ich das Problem dank der Mithilfe insb. von @paul53 und einigen weiteren Forumskollegen (siehe unten) lösen können. Um doppeltes Schreiben zu vermeiden, habe ich im HomeMatic-Forum einen kleinen Thread zu dem Projekt gestartet. Alles weitere dann dort (klick!)

      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #2

      @dtp sagte in hm-rpc, keine Statusänderung bei HMIP-Tasterbetätigung:

      Wenn ich den Taster betätige, ändert sich aber der zugehörige RSSI-Wert.
      Ist das Problem bekannt?

      bei Tastern sollte sich auch der Timestamp ändern.
      Darauf musst du triggern.

      der State ist immer true. Das ist kein Fehler.

      kein Support per PN! - Fragen im Forum stellen -
      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
      Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Antwort Letzte Antwort
      0
      • D dtp

        Hallo,

        bei keinem meiner HMIP-Taster und Aktoren wird im hm-rpc-Adapter (Version 1.15.16) eine Tasterbetätigung angezeigt.

        2023-01-17_18h09_01.jpg

        Die entsprechenden Werte für die Kanäle 1 und 2 werden stets orange dargestellt. Wenn ich den Taster betätige, ändert sich aber der zugehörige RSSI-Wert.

        Ist das Problem bekannt?

        Ich nutze die Beta des js-controller V 4.0.24 mit Version 6.3.5 des admin-Adapters.

        EDIT: Mittlerweile habe ich das Problem dank der Mithilfe insb. von @paul53 und einigen weiteren Forumskollegen (siehe unten) lösen können. Um doppeltes Schreiben zu vermeiden, habe ich im HomeMatic-Forum einen kleinen Thread zu dem Projekt gestartet. Alles weitere dann dort (klick!)

        A Online
        A Online
        Ahnungsbefreit
        schrieb am zuletzt editiert von
        #3

        @dtp du brauchst ein Dummy Script auf der CCU, das Thema kam hier im Forum schon ein paar Mal vor. Ohne das bekommst Du die Tastendrücke nicht mit

        Wenn meine Antwort hilfreich war, dürft Ihr das gerne durch einen "Upvote" (der kleine "^" unten rechts) zum Ausdruck bringen.

        paul53P 1 Antwort Letzte Antwort
        0
        • A Ahnungsbefreit

          @dtp du brauchst ein Dummy Script auf der CCU, das Thema kam hier im Forum schon ein paar Mal vor. Ohne das bekommst Du die Tastendrücke nicht mit

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von
          #4

          @ahnungsbefreit sagte: Dummy Script auf der CCU

          Man das Senden von Tastenbetätigungen auch per Javascript aktivieren.

          // Dieses Skript einmal für jeden Taster-Kanal ausführen
          const inst = 'hm-rpc.0'; // Instanz anpassen
          const channel = 'XEQ1234567:1'; // Kanal-Adresse anpassen
           
          sendTo(inst, 'reportValueUsage', {ID: channel, paramType: 'PRESS_SHORT', params: 1}, res => {
              log(JSON.stringify(res));
          });
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

          D 1 Antwort Letzte Antwort
          1
          • paul53P paul53

            @ahnungsbefreit sagte: Dummy Script auf der CCU

            Man das Senden von Tastenbetätigungen auch per Javascript aktivieren.

            // Dieses Skript einmal für jeden Taster-Kanal ausführen
            const inst = 'hm-rpc.0'; // Instanz anpassen
            const channel = 'XEQ1234567:1'; // Kanal-Adresse anpassen
             
            sendTo(inst, 'reportValueUsage', {ID: channel, paramType: 'PRESS_SHORT', params: 1}, res => {
                log(JSON.stringify(res));
            });
            
            D Offline
            D Offline
            dtp
            schrieb am zuletzt editiert von dtp
            #5

            @paul53 Ich habe das Skript mal ausgeführt und dann wird tatsächlich des zugehörige Objekt auf true gesetzt, wenn ich die Taste betätige. Allerdings nur ein Mal. Danach passiert nichts mehr. Verstehe leider nicht, was das Skript da nun macht.

            @Ahnungsbefreit Was soll das Dummyskript auf der CCU machen? Eine Systemvariable setzen, die ich dann hier abfrage?

            ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

            HomoranH 1 Antwort Letzte Antwort
            0
            • D dtp

              @paul53 Ich habe das Skript mal ausgeführt und dann wird tatsächlich des zugehörige Objekt auf true gesetzt, wenn ich die Taste betätige. Allerdings nur ein Mal. Danach passiert nichts mehr. Verstehe leider nicht, was das Skript da nun macht.

              @Ahnungsbefreit Was soll das Dummyskript auf der CCU machen? Eine Systemvariable setzen, die ich dann hier abfrage?

              HomoranH Nicht stören
              HomoranH Nicht stören
              Homoran
              Global Moderator Administrators
              schrieb am zuletzt editiert von
              #6

              @dtp Die Taster senden nur wenn es etwas an einen Empfänger zu senden gibt. ioBroker ist für die CCU nicht existent.
              Dies wird mit dem Dummy oder Pauls Skript geändert. Damit senden die Taster jetzt ihre Pakete an ioBroker.

              kein Support per PN! - Fragen im Forum stellen -
              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
              Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              D 1 Antwort Letzte Antwort
              0
              • HomoranH Homoran

                @dtp Die Taster senden nur wenn es etwas an einen Empfänger zu senden gibt. ioBroker ist für die CCU nicht existent.
                Dies wird mit dem Dummy oder Pauls Skript geändert. Damit senden die Taster jetzt ihre Pakete an ioBroker.

                D Offline
                D Offline
                dtp
                schrieb am zuletzt editiert von
                #7

                @homoran Alles klar. Verstanden. Aber kann ich jetzt, nachdem ich @paul53s Skript ausgeführt habe, direkt den Datenpunkt als Trigger mit

                on("hm-rpc.1.00019F299738F8.1.PRESS_SHORT", function (obj){...}
                

                verwenden, oder geht das so nicht? Irgendwie habe ich da noch ein Verständnisproblem.

                ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                HomoranH 1 Antwort Letzte Antwort
                0
                • D dtp

                  @homoran Alles klar. Verstanden. Aber kann ich jetzt, nachdem ich @paul53s Skript ausgeführt habe, direkt den Datenpunkt als Trigger mit

                  on("hm-rpc.1.00019F299738F8.1.PRESS_SHORT", function (obj){...}
                  

                  verwenden, oder geht das so nicht? Irgendwie habe ich da noch ein Verständnisproblem.

                  HomoranH Nicht stören
                  HomoranH Nicht stören
                  Homoran
                  Global Moderator Administrators
                  schrieb am zuletzt editiert von
                  #8

                  @dtp sagte in hm-rpc, keine Statusänderung bei HMIP-Tasterbetätigung:

                  @homoran Alles klar. Verstanden. Aber kann ich jetzt, nachdem ich @paul53s Skript ausgeführt habe, direkt den Datenpunkt als Trigger mit

                  on("hm-rpc.1.00019F299738F8.1.PRESS_SHORT", function (obj){...}
                  

                  verwenden, oder geht das so nicht? Irgendwie habe ich da noch ein Verständnisproblem.

                  ich kann doch immer noch kein js :-(

                  auf Aktualisierung, nicht auf Änderung!
                  wie immer das mit js geht

                  kein Support per PN! - Fragen im Forum stellen -
                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                  Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                  CodierknechtC 1 Antwort Letzte Antwort
                  0
                  • HomoranH Homoran

                    @dtp sagte in hm-rpc, keine Statusänderung bei HMIP-Tasterbetätigung:

                    @homoran Alles klar. Verstanden. Aber kann ich jetzt, nachdem ich @paul53s Skript ausgeführt habe, direkt den Datenpunkt als Trigger mit

                    on("hm-rpc.1.00019F299738F8.1.PRESS_SHORT", function (obj){...}
                    

                    verwenden, oder geht das so nicht? Irgendwie habe ich da noch ein Verständnisproblem.

                    ich kann doch immer noch kein js :-(

                    auf Aktualisierung, nicht auf Änderung!
                    wie immer das mit js geht

                    CodierknechtC Online
                    CodierknechtC Online
                    Codierknecht
                    Developer Most Active
                    schrieb am zuletzt editiert von
                    #9

                    @homoran sagte in hm-rpc, keine Statusänderung bei HMIP-Tasterbetätigung:

                    auf Aktualisierung, nicht auf Änderung!
                    wie immer das mit js geht

                    on({id: "hm-rpc.1.00019F299738F8.1.PRESS_SHORT", change: "ne"}, async function (obj) {
                    }
                    

                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                    HmIP|ZigBee|Tasmota|Unifi
                    Zabbix Certified Specialist
                    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                    1 Antwort Letzte Antwort
                    0
                    • HomoranH Nicht stören
                      HomoranH Nicht stören
                      Homoran
                      Global Moderator Administrators
                      schrieb am zuletzt editiert von
                      #10

                      @codierknecht sagte in hm-rpc, keine Statusänderung bei HMIP-Tasterbetätigung:

                      @homoran sagte in hm-rpc, keine Statusänderung bei HMIP-Tasterbetätigung:

                      auf Aktualisierung, nicht auf Änderung!
                      wie immer das mit js geht

                      on({id: "hm-rpc.1.00019F299738F8.1.PRESS_SHORT", change: "ne"}, async function (obj) {
                      }
                      

                      sischer datt?
                      ist ne nicht not equal, also Änderung?

                      kein Support per PN! - Fragen im Forum stellen -
                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                      Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                      D CodierknechtC 2 Antworten Letzte Antwort
                      0
                      • HomoranH Homoran

                        @codierknecht sagte in hm-rpc, keine Statusänderung bei HMIP-Tasterbetätigung:

                        @homoran sagte in hm-rpc, keine Statusänderung bei HMIP-Tasterbetätigung:

                        auf Aktualisierung, nicht auf Änderung!
                        wie immer das mit js geht

                        on({id: "hm-rpc.1.00019F299738F8.1.PRESS_SHORT", change: "ne"}, async function (obj) {
                        }
                        

                        sischer datt?
                        ist ne nicht not equal, also Änderung?

                        D Offline
                        D Offline
                        dtp
                        schrieb am zuletzt editiert von dtp
                        #11

                        @homoran Korrekt "ne" ist not equal. Damit geht's nicht. Aber so hat's funktioniert, nachdem ich das Skript von @paul53 für PRESS_SHORT beider Kanäle ausgeführt habe.

                        on({id: "hm-rpc.1.00019F299738F8.1.PRESS_SHORT"}, async function (obj) {
                          setState('tradfri.0.L-65547.lightbulb.brightness', 40);
                        });
                        
                        on({id: "hm-rpc.1.00019F299738F8.2.PRESS_SHORT"}, async function (obj) {
                          setState('tradfri.0.L-65547.lightbulb.brightness', 0);
                        });
                        

                        Danke euch. Da muss man erst mal drauf kommen.

                        Nun kann ich mir noch Gedanken über eine Umsetzung für die Dimmfunktion mit PRESS_LONG_START und PRESS_LONG_RELEASE machen.

                        ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                        1 Antwort Letzte Antwort
                        0
                        • HomoranH Homoran

                          @codierknecht sagte in hm-rpc, keine Statusänderung bei HMIP-Tasterbetätigung:

                          @homoran sagte in hm-rpc, keine Statusänderung bei HMIP-Tasterbetätigung:

                          auf Aktualisierung, nicht auf Änderung!
                          wie immer das mit js geht

                          on({id: "hm-rpc.1.00019F299738F8.1.PRESS_SHORT", change: "ne"}, async function (obj) {
                          }
                          

                          sischer datt?
                          ist ne nicht not equal, also Änderung?

                          CodierknechtC Online
                          CodierknechtC Online
                          Codierknecht
                          Developer Most Active
                          schrieb am zuletzt editiert von Codierknecht
                          #12

                          @homoran sagte in hm-rpc, keine Statusänderung bei HMIP-Tasterbetätigung:

                          ist ne nicht not equal, also Änderung?

                          Natürlich - Du hast natürlich Recht.
                          Muss mal endlich die Tomaten von den Augen kratzen 👓 👓 🍅 🍅

                          Das hier wäre "Änderung":

                          on({id: "hm-rpc.1.00019F299738F8.1.PRESS_SHORT", change: "any"}, async function (obj) {
                          }
                          

                          Wobei man in diesem Fall das change auch komplett weglassen kann. Also so wie @dtp es schon herausgefunden hat.

                          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                          HmIP|ZigBee|Tasmota|Unifi
                          Zabbix Certified Specialist
                          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                          D 1 Antwort Letzte Antwort
                          0
                          • CodierknechtC Codierknecht

                            @homoran sagte in hm-rpc, keine Statusänderung bei HMIP-Tasterbetätigung:

                            ist ne nicht not equal, also Änderung?

                            Natürlich - Du hast natürlich Recht.
                            Muss mal endlich die Tomaten von den Augen kratzen 👓 👓 🍅 🍅

                            Das hier wäre "Änderung":

                            on({id: "hm-rpc.1.00019F299738F8.1.PRESS_SHORT", change: "any"}, async function (obj) {
                            }
                            

                            Wobei man in diesem Fall das change auch komplett weglassen kann. Also so wie @dtp es schon herausgefunden hat.

                            D Offline
                            D Offline
                            dtp
                            schrieb am zuletzt editiert von dtp
                            #13

                            So, hier dann mal mein Skript zum Ein- und Ausschalten sowie Hoch- und Runterdimmen einer Tradfri-Leuchte mit einem HomeMatic-Taster.

                            var triggerID = "hm-rpc.1.00019F299738F8"; // ID des auslösenden Tasters
                            var channelUp = 1; // Kanal des auslösenden Tasters zum Hochschalten
                            var channelDown = 2; // Kanal des auslösenden Tasters zum Runterschalten
                            var loadID = "tradfri.0.L-65547.lightbulb.brightness"; // Datenpunkt des zu steuernden Verbrauchers
                            
                            var step = 5; // Schrittweite beim Dimmen in Prozent
                            var speed = 0.5; // Dauer einen einzelnen Dimmschrittes in Sekunden
                            var count = 0; // Zähler (sollte immer auf 0 initialisiert werden)
                            var IntervalId;
                            
                            // kurze Tasterbetätigung zum Einschalten
                            on({id: triggerID+"."+channelUp+".PRESS_SHORT"}, async function (obj) {
                              setState(loadID, 100);
                              count = 100 / step;
                            });
                            
                            // kurze Tasterbetätigung zum Ausschalten
                            on({id: triggerID+"."+channelDown+".PRESS_SHORT"}, async function (obj) {
                              setState(loadID, 0);
                              count = 0;
                            });
                            
                            // lange Tasterbetätigung zum Hochdimmen
                            on({id: triggerID+"."+channelUp+".PRESS_LONG_START"}, async function (obj) {
                              IntervalId = setInterval(function(){
                                count++;
                                log((count * step).toString());
                                setState(loadID, count * step);
                                if(count * step > 99) clearInterval(IntervalId);
                              }, speed * 1000);
                            });
                            on({id: triggerID+"."+channelUp+".PRESS_LONG_RELEASE"}, async function (obj) {
                              clearInterval(IntervalId); 
                            });
                            
                            // lange Tasterbetätigung zum Runterdimmen
                            on({id: triggerID+"."+channelDown+".PRESS_LONG_START"}, async function (obj) {
                              IntervalId = setInterval(function(){
                                count--;
                                log((count * step).toString());
                                setState(loadID, count * step);
                                if(count * step < 1) clearInterval(IntervalId);
                              }, speed * 1000);
                            });
                            on({id: triggerID+"."+channelDown+".PRESS_LONG_RELEASE"}, async function (obj) {
                              clearInterval(IntervalId); 
                            });
                            

                            Das Skript funktioniert im Prinzip auch für Rollos, allerdings fehlt da noch eine Funktion, um das Rollo bei einem kurzen Tastendruck wieder an der gewünschten Position durch einen erneuten kurzen Tastendruck stoppen zu können. Zudem muss man den Wert für "speed" und "step" an die Fahrzeit des Rollos anpassen. Bei meinen Rollos von Ikea hat sich z.B. ein Wert von 0,3 Sekunden mit einer Schrittweite von 1 als ganz gut erwiesen.

                            ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                            D 1 Antwort Letzte Antwort
                            0
                            • D dtp

                              So, hier dann mal mein Skript zum Ein- und Ausschalten sowie Hoch- und Runterdimmen einer Tradfri-Leuchte mit einem HomeMatic-Taster.

                              var triggerID = "hm-rpc.1.00019F299738F8"; // ID des auslösenden Tasters
                              var channelUp = 1; // Kanal des auslösenden Tasters zum Hochschalten
                              var channelDown = 2; // Kanal des auslösenden Tasters zum Runterschalten
                              var loadID = "tradfri.0.L-65547.lightbulb.brightness"; // Datenpunkt des zu steuernden Verbrauchers
                              
                              var step = 5; // Schrittweite beim Dimmen in Prozent
                              var speed = 0.5; // Dauer einen einzelnen Dimmschrittes in Sekunden
                              var count = 0; // Zähler (sollte immer auf 0 initialisiert werden)
                              var IntervalId;
                              
                              // kurze Tasterbetätigung zum Einschalten
                              on({id: triggerID+"."+channelUp+".PRESS_SHORT"}, async function (obj) {
                                setState(loadID, 100);
                                count = 100 / step;
                              });
                              
                              // kurze Tasterbetätigung zum Ausschalten
                              on({id: triggerID+"."+channelDown+".PRESS_SHORT"}, async function (obj) {
                                setState(loadID, 0);
                                count = 0;
                              });
                              
                              // lange Tasterbetätigung zum Hochdimmen
                              on({id: triggerID+"."+channelUp+".PRESS_LONG_START"}, async function (obj) {
                                IntervalId = setInterval(function(){
                                  count++;
                                  log((count * step).toString());
                                  setState(loadID, count * step);
                                  if(count * step > 99) clearInterval(IntervalId);
                                }, speed * 1000);
                              });
                              on({id: triggerID+"."+channelUp+".PRESS_LONG_RELEASE"}, async function (obj) {
                                clearInterval(IntervalId); 
                              });
                              
                              // lange Tasterbetätigung zum Runterdimmen
                              on({id: triggerID+"."+channelDown+".PRESS_LONG_START"}, async function (obj) {
                                IntervalId = setInterval(function(){
                                  count--;
                                  log((count * step).toString());
                                  setState(loadID, count * step);
                                  if(count * step < 1) clearInterval(IntervalId);
                                }, speed * 1000);
                              });
                              on({id: triggerID+"."+channelDown+".PRESS_LONG_RELEASE"}, async function (obj) {
                                clearInterval(IntervalId); 
                              });
                              

                              Das Skript funktioniert im Prinzip auch für Rollos, allerdings fehlt da noch eine Funktion, um das Rollo bei einem kurzen Tastendruck wieder an der gewünschten Position durch einen erneuten kurzen Tastendruck stoppen zu können. Zudem muss man den Wert für "speed" und "step" an die Fahrzeit des Rollos anpassen. Bei meinen Rollos von Ikea hat sich z.B. ein Wert von 0,3 Sekunden mit einer Schrittweite von 1 als ganz gut erwiesen.

                              D Offline
                              D Offline
                              dtp
                              schrieb am zuletzt editiert von dtp
                              #14

                              Und nun habe ich auch eine Lösung für die Rollos gefunden. Das folgende Skript steuert mit einem HMIP-Wandtaster zwei Rollos gleichzeitig.

                              var triggerID = 'hm-rpc.1.000B5D8995CA16'; // ID des auslösenden Tasters
                              var channelUp = 5; // Kanal des auslösenden Tasters zum Hochfahren
                              var channelDown = 6; // Kanal des auslösenden Tasters zum Runterfahren
                              var loadID1 = "tradfri.0.B-65540"; // ID eines ersten zu steuernden Rollos
                              var loadID2 = "tradfri.0.B-65544"; // ID eines zweiten zu steuernden Rollos
                              
                              var step = 1; // Schrittweite für das Hoch- und Runterfahren in Prozent
                              var speed = 0.3; // Dauer eines einzelnen Schritts in Sekunden
                              var count = 0; // Zähler (sollte immer auf 0 initialisiert werden)
                              var IntervalId;
                              
                              // kurze Tasterbetätigung zum Hochfahren und Stoppen im Wechsel
                              on({id: triggerID+"."+channelUp+".PRESS_SHORT", change: "eq", val: true}, async function (obj) {
                                setState(loadID1+".blind.position", 100); setState(loadID2+".blind.position", 100);
                                count = 100 / step;
                                setState(triggerID+"."+channelUp+".PRESS_SHORT", false);
                              });
                              on({id: triggerID+"."+channelUp+".PRESS_SHORT", change: "ne", val: true}, async function (obj) {
                                setState(loadID1+".blind.stop", true); setState(loadID2+".blind.stop", true); 
                                count = getState(loadID1+".blind.position").val / step;
                              });
                              
                              // kurze Tasterbetätigung zum Runterfahren und Stoppen im Wechsel
                              on({id: triggerID+"."+channelDown+".PRESS_SHORT", change: "eq", val: true}, async function (obj) {
                                setState(loadID1+".blind.position", 0); setState(loadID2+".blind.position", 0);
                                count = 0;
                                setState(triggerID+"."+channelDown+".PRESS_SHORT", false);
                              });
                              on({id: triggerID+"."+channelDown+".PRESS_SHORT", change: "ne", val: true}, async function (obj) {
                                setState(loadID1+".blind.stop", true); setState(loadID2+".blind.stop", true); 
                                count = getState(loadID1+".blind.position").val / step;
                              });
                              
                              // lange Tasterbetätigung zum Hochfahren
                              on({id: triggerID+"."+channelUp+".PRESS_LONG_START"}, async function (obj) {
                                IntervalId = setInterval(function(){
                                  count++;
                                  log((count * step).toString());
                                  setState(loadID1+".blind.position", count * step); 
                                  setState(loadID2+".blind.position", count * step);
                                  if(count * step > 99) clearInterval(IntervalId);
                                }, speed * 1000);
                              });
                              on({id: triggerID+"."+channelUp+".PRESS_LONG_RELEASE"}, async function (obj) {
                                clearInterval(IntervalId);
                              });
                              
                              // lange Tasterbetätigung zum Runterfahren
                              on({id: triggerID+"."+channelDown+".PRESS_LONG_START"}, async function (obj) {
                                IntervalId = setInterval(function(){
                                  count--;
                                  log((count * step).toString());
                                  setState(loadID1+".blind.position", count * step); 
                                  setState(loadID2+".blind.position", count * step);
                                  if(count * step < 1) clearInterval(IntervalId);
                                }, speed * 1000);
                              });
                              on({id: triggerID+"."+channelDown+".PRESS_LONG_RELEASE"}, async function (obj) {
                                clearInterval(IntervalId); 
                              });
                              

                              Dabei ist es folgendermaßen über die zwei Tasterkanäle des HMIP-Wandtasters gelöst:

                              • Eine kurze Betätigung von Taste 1 fährt das Rollo hoch. Drückt man Taste 1 noch mal kurz, wird das Rollo gestoppt.
                              • Eine kurze Betätigung von Taste 2 fährt das Rollo runter. Drückt man Taste 2 noch mal kurz, wird das Rollo gestoppt.
                              • Eine lange Betätigung von Taste 1 fährt das Rollo so lange hoch bis man Taste 1 wieder loslässt.
                              • Eine lange Betätigung von Taste 2 fährt das Rollo so lange runter bis man Taste 2 wieder loslässt.

                              Zur richtigen Einstellung von "speed" misst man einfach die Dauer, die das Rollo für eine vollständige Fahrt benötigt und teilt die gemessene Zeit dann durch 100/"step". Beispiel: braucht das Rollo 30 Sekunden für eine vollständige Fahrt und hat man "step" = 1 gesetzt, so ergibt sich für "speed" ein Wert von 0.3. Ich empfehle, die Schrittweite

                              ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                              D 1 Antwort Letzte Antwort
                              0
                              • D dtp

                                Und nun habe ich auch eine Lösung für die Rollos gefunden. Das folgende Skript steuert mit einem HMIP-Wandtaster zwei Rollos gleichzeitig.

                                var triggerID = 'hm-rpc.1.000B5D8995CA16'; // ID des auslösenden Tasters
                                var channelUp = 5; // Kanal des auslösenden Tasters zum Hochfahren
                                var channelDown = 6; // Kanal des auslösenden Tasters zum Runterfahren
                                var loadID1 = "tradfri.0.B-65540"; // ID eines ersten zu steuernden Rollos
                                var loadID2 = "tradfri.0.B-65544"; // ID eines zweiten zu steuernden Rollos
                                
                                var step = 1; // Schrittweite für das Hoch- und Runterfahren in Prozent
                                var speed = 0.3; // Dauer eines einzelnen Schritts in Sekunden
                                var count = 0; // Zähler (sollte immer auf 0 initialisiert werden)
                                var IntervalId;
                                
                                // kurze Tasterbetätigung zum Hochfahren und Stoppen im Wechsel
                                on({id: triggerID+"."+channelUp+".PRESS_SHORT", change: "eq", val: true}, async function (obj) {
                                  setState(loadID1+".blind.position", 100); setState(loadID2+".blind.position", 100);
                                  count = 100 / step;
                                  setState(triggerID+"."+channelUp+".PRESS_SHORT", false);
                                });
                                on({id: triggerID+"."+channelUp+".PRESS_SHORT", change: "ne", val: true}, async function (obj) {
                                  setState(loadID1+".blind.stop", true); setState(loadID2+".blind.stop", true); 
                                  count = getState(loadID1+".blind.position").val / step;
                                });
                                
                                // kurze Tasterbetätigung zum Runterfahren und Stoppen im Wechsel
                                on({id: triggerID+"."+channelDown+".PRESS_SHORT", change: "eq", val: true}, async function (obj) {
                                  setState(loadID1+".blind.position", 0); setState(loadID2+".blind.position", 0);
                                  count = 0;
                                  setState(triggerID+"."+channelDown+".PRESS_SHORT", false);
                                });
                                on({id: triggerID+"."+channelDown+".PRESS_SHORT", change: "ne", val: true}, async function (obj) {
                                  setState(loadID1+".blind.stop", true); setState(loadID2+".blind.stop", true); 
                                  count = getState(loadID1+".blind.position").val / step;
                                });
                                
                                // lange Tasterbetätigung zum Hochfahren
                                on({id: triggerID+"."+channelUp+".PRESS_LONG_START"}, async function (obj) {
                                  IntervalId = setInterval(function(){
                                    count++;
                                    log((count * step).toString());
                                    setState(loadID1+".blind.position", count * step); 
                                    setState(loadID2+".blind.position", count * step);
                                    if(count * step > 99) clearInterval(IntervalId);
                                  }, speed * 1000);
                                });
                                on({id: triggerID+"."+channelUp+".PRESS_LONG_RELEASE"}, async function (obj) {
                                  clearInterval(IntervalId);
                                });
                                
                                // lange Tasterbetätigung zum Runterfahren
                                on({id: triggerID+"."+channelDown+".PRESS_LONG_START"}, async function (obj) {
                                  IntervalId = setInterval(function(){
                                    count--;
                                    log((count * step).toString());
                                    setState(loadID1+".blind.position", count * step); 
                                    setState(loadID2+".blind.position", count * step);
                                    if(count * step < 1) clearInterval(IntervalId);
                                  }, speed * 1000);
                                });
                                on({id: triggerID+"."+channelDown+".PRESS_LONG_RELEASE"}, async function (obj) {
                                  clearInterval(IntervalId); 
                                });
                                

                                Dabei ist es folgendermaßen über die zwei Tasterkanäle des HMIP-Wandtasters gelöst:

                                • Eine kurze Betätigung von Taste 1 fährt das Rollo hoch. Drückt man Taste 1 noch mal kurz, wird das Rollo gestoppt.
                                • Eine kurze Betätigung von Taste 2 fährt das Rollo runter. Drückt man Taste 2 noch mal kurz, wird das Rollo gestoppt.
                                • Eine lange Betätigung von Taste 1 fährt das Rollo so lange hoch bis man Taste 1 wieder loslässt.
                                • Eine lange Betätigung von Taste 2 fährt das Rollo so lange runter bis man Taste 2 wieder loslässt.

                                Zur richtigen Einstellung von "speed" misst man einfach die Dauer, die das Rollo für eine vollständige Fahrt benötigt und teilt die gemessene Zeit dann durch 100/"step". Beispiel: braucht das Rollo 30 Sekunden für eine vollständige Fahrt und hat man "step" = 1 gesetzt, so ergibt sich für "speed" ein Wert von 0.3. Ich empfehle, die Schrittweite

                                D Offline
                                D Offline
                                dtp
                                schrieb am zuletzt editiert von
                                #15

                                Hallo,

                                ich musste feststellen, dass die Zeile

                                setState(triggerID+"."+channelUp+".PRESS_SHORT", false);
                                

                                zu einer Fehlermeldung führte:

                                2023-01-20_19h40_04.jpg

                                Das Skript funktioniert aber, weil der Datenpunkt trotzdem mit dem Wert "false" beschrieben wird. Er kann halt nur nicht an den Taster gesendet werden. Jetzt meine Frage. Kann man diese Fehlermeldung unterdrücken durch einen Zusatzparameter?

                                Wenn nicht, dann muss ich wohl mit einer Zusatzvariablen arbeiten.

                                ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                                paul53P 1 Antwort Letzte Antwort
                                0
                                • D dtp

                                  Hallo,

                                  ich musste feststellen, dass die Zeile

                                  setState(triggerID+"."+channelUp+".PRESS_SHORT", false);
                                  

                                  zu einer Fehlermeldung führte:

                                  2023-01-20_19h40_04.jpg

                                  Das Skript funktioniert aber, weil der Datenpunkt trotzdem mit dem Wert "false" beschrieben wird. Er kann halt nur nicht an den Taster gesendet werden. Jetzt meine Frage. Kann man diese Fehlermeldung unterdrücken durch einen Zusatzparameter?

                                  Wenn nicht, dann muss ich wohl mit einer Zusatzvariablen arbeiten.

                                  paul53P Offline
                                  paul53P Offline
                                  paul53
                                  schrieb am zuletzt editiert von paul53
                                  #16

                                  @dtp sagte: Kann man diese Fehlermeldung unterdrücken durch einen Zusatzparameter?

                                  Lass setState(...PRESS_SHORT, false) weg, denn HomeMatic-Taster haben immer den Wert true und sind nicht umsonst "read only". Bei Tastenbetätigung wird nur der Zeitstempel aktualisiert.

                                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                  Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

                                  D 1 Antwort Letzte Antwort
                                  0
                                  • paul53P paul53

                                    @dtp sagte: Kann man diese Fehlermeldung unterdrücken durch einen Zusatzparameter?

                                    Lass setState(...PRESS_SHORT, false) weg, denn HomeMatic-Taster haben immer den Wert true und sind nicht umsonst "read only". Bei Tastenbetätigung wird nur der Zeitstempel aktualisiert.

                                    D Offline
                                    D Offline
                                    dtp
                                    schrieb am zuletzt editiert von dtp
                                    #17

                                    @paul53 sagte in Ikea Lampen und Rollos mit HomeMatic Wandtaster steuern:

                                    Lass setState(...PRESS_SHORT, false) weg

                                    Das geht leider nicht so einfach, weil ich dann nicht mit einem kurzen Tastendruck zwischen einen Fahr- und Stoppbefehl toggeln kann. Aber ich habe es jetzt mit einer Hilfsvariablen gelöst.

                                    //Skript zum Steuern eines nicht HM-Kompatiblen Beschattungsgeräts mittels HM-Tasterbetätigung
                                    //Autor: dtp, Version: 1.0 
                                    var triggerId = 'hm-rpc.1.000B5D8995CA16'; // ID des auslösenden Tasters
                                    var channelUp = 5; // Kanal des auslösenden Tasters zum Hochfahren
                                    var channelDown = 6; // Kanal des auslösenden Tasters zum Runterfahren
                                    var blindsIdList = ['tradfri.0.B-65540','tradfri.0.B-65544']; // ID-Liste der zu steuernden Rollos
                                    
                                    var step = 1; // Schrittweite für das Hoch- und Runterfahren in Prozent
                                    var speed = 0.3; // Dauer eines einzelnen Schritts in Sekunden
                                    
                                    var auxTriggerId = 'javascript.0.variables.blindsAuxLivingroom'; // Hilfsvariable für die kurze Tasterbetätigung
                                    var auxTriggerName = 'Hilfsvariable Wohnzimmer Wandtaster Rollos'; // Name der Hilfsvariablen 
                                    
                                    //weitere zu deklariende Variablen
                                    var IntervalId; var i; var count = 1;
                                    
                                    // Hilfsvariable für Taster anlegen 
                                    if(!existsState(auxTriggerId)){
                                      createState(auxTriggerId, true, {name: auxTriggerName,  type: 'boolean', role: 'value'}, function () {}); 
                                    } else{setState(auxTriggerId, true);}
                                    
                                    // kurze Tasterbetätigung zum Hochfahren und Stoppen im Wechsel
                                    on({id: triggerId+"."+channelUp+".PRESS_SHORT"}, async function (obj) {
                                      if(getState(auxTriggerId).val){
                                        for(i = 0; i < blindsIdList.length; i++) setState(blindsIdList[i]+".blind.position", 100);
                                        count = 100 / step;
                                        //log('go up');
                                        setState(auxTriggerId, false);
                                      }
                                      else{
                                        for(i = 0; i < blindsIdList.length; i++) setState(blindsIdList[i]+".blind.stop", true);
                                        count = getState(blindsIdList[1]+".blind.position").val / step;
                                        //log('stopp');
                                        setState(auxTriggerId, true);
                                      }
                                    });
                                    
                                    // kurze Tasterbetätigung zum Runterfahren und Stoppen im Wechsel
                                    on({id: triggerId+"."+channelDown+".PRESS_SHORT"}, async function (obj) {
                                      if(getState(auxTriggerId).val){
                                        for(i = 0; i < blindsIdList.length; i++) setState(blindsIdList[i]+".blind.position", 0);
                                        count = 0;
                                        //log('go down');
                                        setState(auxTriggerId, false);
                                      }
                                      else{
                                        for(i = 0; i < blindsIdList.length; i++) setState(blindsIdList[i]+".blind.stop", true);
                                        count = getState(blindsIdList[1]+".blind.position").val / step;
                                        //log('stopp');
                                        setState(auxTriggerId, true);
                                      }
                                    });
                                    
                                    // lange Tasterbetätigung zum Hochfahren
                                    on({id: triggerId+"."+channelUp+".PRESS_LONG_START"}, async function (obj) {
                                      IntervalId = setInterval(function(){
                                        count++;
                                        //log((count * step).toString());
                                        for(i = 0; i < blindsIdList.length; i++) setState(blindsIdList[i]+".blind.position", count * step);
                                        if(count * step > 99) clearInterval(IntervalId);
                                      }, speed * 1000);
                                    });
                                    on({id: triggerId+"."+channelUp+".PRESS_LONG_RELEASE"}, async function (obj) {
                                      clearInterval(IntervalId);
                                    });
                                    
                                    // lange Tasterbetätigung zum Runterfahren
                                    on({id: triggerId+"."+channelDown+".PRESS_LONG_START"}, async function (obj) {
                                      IntervalId = setInterval(function(){
                                        count--;
                                        //log((count * step).toString());
                                        for(i = 0; i < blindsIdList.length; i++) setState(blindsIdList[i]+".blind.position", count * step);
                                        if(count * step < 1) clearInterval(IntervalId);
                                      }, speed * 1000);
                                    });
                                    on({id: triggerId+"."+channelDown+".PRESS_LONG_RELEASE"}, async function (obj) {
                                      clearInterval(IntervalId); 
                                    });
                                    

                                    Nicht ganz so schön ist, dass bei langem Tastendruck die Rollos gelegentlich etwas ruckeln, wenn mehrere quasi als Gruppe angesteuert werden sollen. Mit einem einzigen Rollo läuft es dagegen smooth.

                                    ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                                    D 1 Antwort Letzte Antwort
                                    0
                                    • D dtp

                                      @paul53 sagte in Ikea Lampen und Rollos mit HomeMatic Wandtaster steuern:

                                      Lass setState(...PRESS_SHORT, false) weg

                                      Das geht leider nicht so einfach, weil ich dann nicht mit einem kurzen Tastendruck zwischen einen Fahr- und Stoppbefehl toggeln kann. Aber ich habe es jetzt mit einer Hilfsvariablen gelöst.

                                      //Skript zum Steuern eines nicht HM-Kompatiblen Beschattungsgeräts mittels HM-Tasterbetätigung
                                      //Autor: dtp, Version: 1.0 
                                      var triggerId = 'hm-rpc.1.000B5D8995CA16'; // ID des auslösenden Tasters
                                      var channelUp = 5; // Kanal des auslösenden Tasters zum Hochfahren
                                      var channelDown = 6; // Kanal des auslösenden Tasters zum Runterfahren
                                      var blindsIdList = ['tradfri.0.B-65540','tradfri.0.B-65544']; // ID-Liste der zu steuernden Rollos
                                      
                                      var step = 1; // Schrittweite für das Hoch- und Runterfahren in Prozent
                                      var speed = 0.3; // Dauer eines einzelnen Schritts in Sekunden
                                      
                                      var auxTriggerId = 'javascript.0.variables.blindsAuxLivingroom'; // Hilfsvariable für die kurze Tasterbetätigung
                                      var auxTriggerName = 'Hilfsvariable Wohnzimmer Wandtaster Rollos'; // Name der Hilfsvariablen 
                                      
                                      //weitere zu deklariende Variablen
                                      var IntervalId; var i; var count = 1;
                                      
                                      // Hilfsvariable für Taster anlegen 
                                      if(!existsState(auxTriggerId)){
                                        createState(auxTriggerId, true, {name: auxTriggerName,  type: 'boolean', role: 'value'}, function () {}); 
                                      } else{setState(auxTriggerId, true);}
                                      
                                      // kurze Tasterbetätigung zum Hochfahren und Stoppen im Wechsel
                                      on({id: triggerId+"."+channelUp+".PRESS_SHORT"}, async function (obj) {
                                        if(getState(auxTriggerId).val){
                                          for(i = 0; i < blindsIdList.length; i++) setState(blindsIdList[i]+".blind.position", 100);
                                          count = 100 / step;
                                          //log('go up');
                                          setState(auxTriggerId, false);
                                        }
                                        else{
                                          for(i = 0; i < blindsIdList.length; i++) setState(blindsIdList[i]+".blind.stop", true);
                                          count = getState(blindsIdList[1]+".blind.position").val / step;
                                          //log('stopp');
                                          setState(auxTriggerId, true);
                                        }
                                      });
                                      
                                      // kurze Tasterbetätigung zum Runterfahren und Stoppen im Wechsel
                                      on({id: triggerId+"."+channelDown+".PRESS_SHORT"}, async function (obj) {
                                        if(getState(auxTriggerId).val){
                                          for(i = 0; i < blindsIdList.length; i++) setState(blindsIdList[i]+".blind.position", 0);
                                          count = 0;
                                          //log('go down');
                                          setState(auxTriggerId, false);
                                        }
                                        else{
                                          for(i = 0; i < blindsIdList.length; i++) setState(blindsIdList[i]+".blind.stop", true);
                                          count = getState(blindsIdList[1]+".blind.position").val / step;
                                          //log('stopp');
                                          setState(auxTriggerId, true);
                                        }
                                      });
                                      
                                      // lange Tasterbetätigung zum Hochfahren
                                      on({id: triggerId+"."+channelUp+".PRESS_LONG_START"}, async function (obj) {
                                        IntervalId = setInterval(function(){
                                          count++;
                                          //log((count * step).toString());
                                          for(i = 0; i < blindsIdList.length; i++) setState(blindsIdList[i]+".blind.position", count * step);
                                          if(count * step > 99) clearInterval(IntervalId);
                                        }, speed * 1000);
                                      });
                                      on({id: triggerId+"."+channelUp+".PRESS_LONG_RELEASE"}, async function (obj) {
                                        clearInterval(IntervalId);
                                      });
                                      
                                      // lange Tasterbetätigung zum Runterfahren
                                      on({id: triggerId+"."+channelDown+".PRESS_LONG_START"}, async function (obj) {
                                        IntervalId = setInterval(function(){
                                          count--;
                                          //log((count * step).toString());
                                          for(i = 0; i < blindsIdList.length; i++) setState(blindsIdList[i]+".blind.position", count * step);
                                          if(count * step < 1) clearInterval(IntervalId);
                                        }, speed * 1000);
                                      });
                                      on({id: triggerId+"."+channelDown+".PRESS_LONG_RELEASE"}, async function (obj) {
                                        clearInterval(IntervalId); 
                                      });
                                      

                                      Nicht ganz so schön ist, dass bei langem Tastendruck die Rollos gelegentlich etwas ruckeln, wenn mehrere quasi als Gruppe angesteuert werden sollen. Mit einem einzigen Rollo läuft es dagegen smooth.

                                      D Offline
                                      D Offline
                                      dtp
                                      schrieb am zuletzt editiert von
                                      #18

                                      Um doppeltes Schreiben zu vermeiden, habe ich im HomeMatic-Forum einen kleinen Thread zu dem Projekt gestartet. Alles weitere dann dort (klick!)

                                      ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                                      D 1 Antwort Letzte Antwort
                                      0
                                      • D dtp

                                        Um doppeltes Schreiben zu vermeiden, habe ich im HomeMatic-Forum einen kleinen Thread zu dem Projekt gestartet. Alles weitere dann dort (klick!)

                                        D Offline
                                        D Offline
                                        dtp
                                        schrieb am zuletzt editiert von
                                        #19

                                        Jetzt ist mir in Verbindung mit den Skripten noch ein kleines Problem aufgefallen. Starte ich die entsprechende Instanz des hm-rpc-Adapters neu, dann werden alle Skripte getriggert. Sprich, die Leuchten gehen an und die Rollos fahren runter. Wie kann ich das vermeiden?

                                        ioBroker im Docker-Container auf Synology DiskStation DS718+, HomeMatic IP über CCU3, IKEA Dirigera inkl. Matter, Apple Homekit, Amazon Alexa.

                                        1 Antwort Letzte Antwort
                                        0

                                        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                                        Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                                        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                                        Registrieren Anmelden
                                        Antworten
                                        • In einem neuen Thema antworten
                                        Anmelden zum Antworten
                                        • Älteste zuerst
                                        • Neuste zuerst
                                        • Meiste Stimmen


                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate
                                        FAQ Cloud / IOT
                                        HowTo: Node.js-Update
                                        HowTo: Backup/Restore
                                        Downloads
                                        BLOG

                                        572

                                        Online

                                        32.9k

                                        Benutzer

                                        83.0k

                                        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