Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Hue über KNX-Taster dimmen?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Hue über KNX-Taster dimmen?

    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      gd-systeme @gd-systeme last edited by

      Versuch das auch mal über einen Dummy und beobachte was da reinkommt (soweit ich in Erinnerung habe wird das schrittweise erhöht (wird im Taster parametriert (Erhöhung um %) und der Aktor macht eigentlich den Rest).

      Also GA vom Taster (in der ETS unbedingt den Datentyp eintragen - da der Dimm Aktor ja Hardwareseitig nicht vorhanden ist) auf einen IOBroker Dummy schreiben....
      Im Prinzip müsstest du dann via script in % umrechnen (glaub relativ sind nur 3bit)...

      Script zur schrittweisen Erhöhung von 0 auf 100% kann dir bestimmt wer helfen - begrenzen auf 100% natürlich - Rückmeldung zum Taster erzeugen.

      Es ist immer schwierig ohne Aktoren da diese darauf abgestimmt sind... und die ETS den entsprechenden Datenntyp automatisch vergibt. Flags können da auch oftmals problematisch werden...

      hoffe das sind paar Ideen die dir helfen können

      LG

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

        Puuh.. Danke erstmal. Wieder viel Informationen mit denen ich nicht viel anfangen kann. 😄
        Also dimmen kann der Taster nur relativ.

        Was hat denn Alexa damit zu tun? Nutzen möchte ich es nicht.

        Mein größtes Problem ist einfach die "Umwandlung" des KNX Telegramms in einen verständlichen Wert. Ob das nun in Blockly oder Node-Red passiert ist mir Schnuppe. Leider hab ich von beiden nicht viel Ahnung.

        Habe nun auch versucht mit Dummy Objekten weiter zu kommen aber wie gesagt, ich komm einfach nicht drauf wie die Daten vom KNX Bus weiter zu verarbeiten sind. Beim Dummy kommt als Wert nur "Object,Object"
        Der Datentyp in der ETS ist DPT3.007.

        Wenn ich die Dimmtaste drücke kommt beim KNX-Objekt im IOBroker
        beim hochdimmen der Wert 1,1
        beim runterdimmen der Wert 0,1
        und beim loslassen der Wert 0,0

        kann ich damit evtl. was anfangen?

        greatluis 1 Reply Last reply Reply Quote 0
        • greatluis
          greatluis @Schrubbel last edited by

          @Schrubbel

          Hallo !

          Habe bei mir folgendes Script am laufen.
          Im unteren Teil werden noch die Status-Adressen befüllt.

          Das Script habe ich selber mal im Forum gefunden. Nach dem Update vom KNX-Adapter von Version 0.9 auf über 1.0 musste ich selber ewig rumprobieren, weil sich die Auswertung des Datenpunktes 3.007 geändert hat.

          Hoffe du kannst damit was anfangen

          /* ####### Relatives Dimmen von Philips Hue-Lampe oder Gruppe über KNX-Taster #######
             #
             # Skript reagiert auf Tastendruck eines KNX-Tasters, Auswertung einer Gruppe mit
             # DPT-3 (relatives Dimmen).Es wird mit dem Tastendruck hoch bzw. runtergedimmt
             # in beliebigen Schritten und Geschwindigkeit. Mit dem Loslassen der Taste wird
             # der Vorgang gestoppt.
             #
             # Erstellt von A.Kos am 07.12.2017
             ################################################################################## */
          
          // Channel-IDs
          var idTaster =      "knx.0.virtuelle_Dpt.dimmen.Terrasse_Wand_dimmen"/*Terrasse Wand dimmen*/;  // ID der KNX-Gruppe mit DPT-3, z.B. Tastenwippe oder Tastenpaar
          var idHueLampe =    "hue.0.Philips_hue.Terrasse"/*Philips_hue.Terrasse*/;  // ID der Hue-Lampe oder Gruppe
          
          // Konstante zum Anpassen des Dimm-Verhaltens
          const REL_DIM_VAL = 20;     // Schrittweite beim relativen Dimmen (Achtung, das ist (bei Hue) KEIN %-Wert)
          const ABS_DIM_MAX = 254;    // Maximaler Absolutwert (Hue: 254)
          const ABS_DIM_MIN = 1;      // Minimaler Absolutwert (0)
          const DIM_DELAY = 500;     // Zeit im ms für die einzelnen Dimm-Schritte
          
          
          
          
          
          // Globale Variablen
          var BOOL_stop = 0;
          var emergency_counter = 1;
          
          
          // DimDown Runter-Dimmen
          on({id: idTaster, change: "any"} , function(obj) {
              //console.log(obj.state.val);
             // console.log(obj.state.val.decr_incr);
              if (obj.state.val == '0,1') {
                  BOOL_stop = 0;
                  emergency_counter = 0;
                  dimdown(REL_DIM_VAL);
              }
          });
          
          // DimUp Rauf-Dimmen
          on({id: idTaster, change: "any"} , function(obj) {
              //console.log(obj.state.val);
              //console.log(obj.state.val.decr_incr);
               if (obj.state.val == '1,1') {
                  BOOL_stop = 0
                  emergency_counter = 0;
                  dimup(REL_DIM_VAL);
              }
          });
          
          
          function dimup(a) {
              if (BOOL_stop || getState(idHueLampe+".bri").val >= ABS_DIM_MAX || emergency_counter >= 100) {
                  console.log("Ende");
                  BOOL_stop = 0;
                  return 0;
              }
              
              if (getState(idHueLampe+".bri").val <= (ABS_DIM_MAX-REL_DIM_VAL)) { 
                  console.log("erhöhe um " + a + " auf den Wert " + (getState(idHueLampe+".bri").val + a) + " (" + emergency_counter + ")");
                  setState(idHueLampe+".bri", getState(idHueLampe+".bri").val + a);
                  setTimeout(function() {
                      emergency_counter++;
                      dimup(REL_DIM_VAL);
                  }, DIM_DELAY);    
                  
              } else {
                  console.log("ELSE: erhöhe um " + (ABS_DIM_MAX-getState(idHueLampe+".bri").val) + " auf den Wert " + ABS_DIM_MAX + " (" + emergency_counter + ")");
                  setState(idHueLampe+".bri",ABS_DIM_MAX);
                  emergency_counter++;
                  return 0;
              }
          }
          
          function dimdown(a) {
              if (BOOL_stop || getState(idHueLampe+".bri").val <= ABS_DIM_MIN || emergency_counter >= 100) {
                  console.log("Ende");
                  BOOL_stop = 0;
                  return 0;
              }
              
              if (getState(idHueLampe+".bri").val >= (ABS_DIM_MIN+REL_DIM_VAL)) { 
                  console.log("verringere um " + a + " auf den Wert " + (getState(idHueLampe+".bri").val - a) + " (" + emergency_counter + ")");
                  setState(idHueLampe+".bri", getState(idHueLampe+".bri").val - a);
                  setTimeout(function() {
                      emergency_counter++;
                      dimdown(REL_DIM_VAL);
                  }, DIM_DELAY);    
                  
              } else {
                  console.log("ELSE: verringere um " + (ABS_DIM_MIN+getState(idHueLampe+".bri").val) + " auf den Wert " + ABS_DIM_MIN + " (" + emergency_counter + ")");
                  setState(idHueLampe+".bri",ABS_DIM_MIN);
                  emergency_counter++;
                  return 0;
              }
          }
          
          // STOP
          on({id: idTaster, change: "any"} , function(obj) {
              if (obj.state.val == '0,0' || obj.state.val == '1,0' ) {
                  // Info zum Testen: Diese Code-Zeile kann in der Praxis nicht erreicht werden,
                  // ohne vorher die Funktion dimup oder dimdown ausgeführt zu haben. D.h. BOOL_stop ist vorher immer 0;
                  BOOL_stop = 1;
              }
          });
          
          // HUE-Lampe über GA schalten, Wert für HUE-Lampe wird aus eigenem Datenpunkt geholt  
          
          on({id: 'knx.0.virtuelle_Dpt.schalten.Terrasse_Wand_schalten', change: "any"}, function (obj) {
            var value = obj.state.val;
            var oldValue = obj.oldState.val;
            if ((obj.state ? obj.state.val : "") == true) {
              setState("hue.0.Philips_hue.Terrasse.command"/*Philips_hue.Terrasse.command*/,getState("javascript.0.Beleuchtung.HUE_Datenpunkte.Ein_Status_Terrasse").val);
            } else if ((obj.state ? obj.state.val : "") == false) {
              setStateDelayed("hue.0.Philips_hue.Terrasse.on"/*Philips_hue.Terrasse.on*/, false, 100, true);
            }
          });
          
          // Status-Adresse für Dimmwert in % schreiben wenn sich der Dimmwert geändert hat
          
          on({id: 'hue.0.Philips_hue.Terrasse.level', change: "ne"}, function (obj) {
            var value = obj.state.val;
            var oldValue = obj.oldState.val;
            setState("knx.0.virtuelle_Dpt.Dimmwert_Status.Terrasse_Wand_Dimmwert_Status"/*Terrasse Wand Dimmwert Status*/, parseFloat((obj.state ? obj.state.val : "")));
          });
          
          // Status_Adresse für EIN/AUS schreiben wenn Hue über App oder sonstiges eingeschaltet wurde
          
          on({id: 'hue.0.Philips_hue.Terrasse.on', change: "ne"}, function (obj) {
            var value = obj.state.val;
            var oldValue = obj.oldState.val;
            if ((obj.state ? obj.state.val : "") == true) {
              setState("knx.0.virtuelle_Dpt.Status.Terrasse_Wand_Status"/*Terrasse Wand Status*/, true);
            } else if ((obj.state ? obj.state.val : "") == false) {
              setState("knx.0.virtuelle_Dpt.Status.Terrasse_Wand_Status"/*Terrasse Wand Status*/, false);
            }
          });
          

          LG

          1 Reply Last reply Reply Quote 1
          • S
            Schrubbel last edited by Schrubbel

            Oh Wow das sieht ja schonmal sehr vielversprechend aus. VIELEN DANK!!!

            Was ist mit den virtuellen dpt's gemeint?
            Hast du sie nur so genannt oder hast du Dummy Objekte eingefügt?

            Edit
            Wie ist das denn mit so einem Script?
            Kann ich das einfach bei mir einfügen, meine Geräte einfügen bzw ändern und dann läuft es?
            Oder muss ich irgendwo noch was einstellen?

            edit edit
            Whoah es tut sich was!
            Wenn ich die Leuchte mit dem Hue Dimmer anspreche bekomme ich die Rückmeldung auf den Bus geschrieben.
            Dann muss ich jetzt noch die richtige Ansteuerung für den Taster finden.

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

              Um Scripte auszuführen musst du vorher den Javascript-Adapter installieren. Mehr dazu findest du bestimmt online, jetzt alles aufzuzählen wäre ein wenig viel 😉

              die virtuellen DP hab ich in der ETS so benannt damit ich gleich sehe das es ein Gerät ist welches nicht physikalisch am Bus hängt.

              Der Teil :

              getState("javascript.0.Beleuchtung.HUE_Datenpunkte.Ein_Status_Terrasse").val)
              

              ist ein Datenpunkt in welchem der Wert steht mit welchem die HUE Lampe eingeschaltet werden soll. Dies ist ein selbst erstellter Datenpunkt vom Typ string mit folgendem Inhalt

              {"on":true,"ct":5150,"level":100,"transitiontime":3}
              

              die Lampe wird mit einer Farbtemperatur von 5150 auf 100% Helligkeit über eine Zeit von 3sek eingeschaltet.

              Du kannst auch ohne diese Datenpunkte arbeiten und zum Beispiel den Teil zum einschalten der HUE Lampe mit :

              setState("hue.0.Philips_hue.Terrasse.command"/*Philips_hue.Terrasse.command*/,getState("javascript.0.Beleuchtung.HUE_Datenpunkte.Ein_Status_Terrasse").val);
              

              in

              setState("hue.0.Philips_hue.Terrasse.on"/*Philips_hue.Terrasse.on*/, true);
              

              ändern und sie wird damit einfach nur eingeschaltet.

              Natürlich musst du auch noch die ganzen Datenpunkte auf deine Installation anpassen !

              LG

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

                Ja klar, Javascript habe ich installiert, das Script eingetragen und abgeändert.
                Rückmeldung funktioniert, nur das Dimmen und schalten nicht.
                Gibt es bei dem Punkt Channel-IDs am Anfang was zu beachten?
                Ich habe da jetzt das Objekt meiner GA eingetragen die dimmen soll.

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

                  Hallo

                  Bei den Channel-ID's musst du den Datenpunkt von der Hue Lampe oder Gruppe und dem Knx Taster eintragen

                  Anmerkung 2019-04-24 132237.jpg

                  Anmerkung 2019-04-24 132640.jpg

                  wobei der Teil am Anfang für das dimmen und der untere Teil für das ein/aus schalten und die Rückmeldung auf den Bus zuständig ist
                  und vielleicht nochmals schauen ob du überall deine DP richtig eingetragen hast ?

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

                    Entwarnung! Alles funktioniert!!!! 😄
                    Meine Testleuchte hat wohl grad ne Macke und aktualisiert ihre Zustände nicht von daher konnte das ja gar nicht funktionieren. Mit einer anderen läuft es soweit.
                    Allerdings habe ich lustigerweise jetzt keine Rückmeldung mehr... Die habe ich aber zur Not noch über Node-Red hinbekommen. 😀
                    Nun kommt das Finetuning.

                    Tausend Dank für die Hilfe!

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

                      Freut mich das es klappt

                      Den Rest bekommst du bestimmt auch noch hin.

                      PS: Das Script kann abgeändert auch zur Lautstärke-Regelung benutzt werden 😉

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

                        Moin Moin!...So jetzt melde ich mich auch nochmal wieder zurück.
                        Im Testbetrieb funktioniert jetzt alles ganz gut auch die Rückmeldung, da hatte ich die falsche GA benutzt. 😵

                        Nun kommt die Königsdisziplin... --> RGB Steuerung!
                        Hättest du da evtl auch etwas anzubieten?
                        Ich habe schon versucht das Script abzuändern aber mit meinen quasi nicht vorhandenen Kenntnissen ist das natürlich nichts geworden. 😄

                        Dankschön!!

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

                          Nur zur Info: Ich hab das Skript zum Relativen Dimmen von HUE-Lampen über KNX-Taster auf den neuen Stand des KNX-Adapters angepasst. 🙂

                          Freut mich, dass es genutzt wird!

                          Link zum Foren-Beitrag mit dem Skript:
                          https://forum.iobroker.net/topic/9403/skript-für-relatives-dimmen-von-hue-lampen-oder-gruppen-über-knx-taster-und-eine-frage-dazu

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

                            Du kannst mit dem Skript übrigens auch einfach Farben dimmen. Dazu musst du nur oben bei den Einstellungen im Skript ein paar Änderungen vornehmen (ich beziehe mich auf die aktuelle Version des Skripts):

                            • idHueLampe setzt du auf den Datenpunkt mit ".hue" hinten, mit dem wird die Farbe verstellt.
                            • Die Konstanten im Skript stellst du wie folgt ein (damit kann man natürlich experimentieren):
                            // Konstante zum Anpassen des Dimm-Verhaltens
                            const REL_DIM_VAL = 3500;     // Schrittweite beim Farbwechseln
                            const ABS_DIM_MAX = 65280;    // Maximaler Absolutwert (Hue: 254)
                            const ABS_DIM_MIN = 0;        // Minimaler Absolutwert (0)
                            const DIM_DELAY = 500;        // Zeit im ms für die einzelnen Dimm-Schritte
                            

                            Meine Erfahrung hat gezeigt, dass das Farb-Dimmen über KNX nicht besonders elegant funktioniert. Ich musste teilweise auch die Delay-Zeit erhöhen auf 1000ms. Berichte, wie's bei dir läuft.

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

                              Ah das ist ja super, vielen Dank auch dir für die Arbeit! 👍
                              RGB habe ich erstmal wieder hinten angestellt. Momentan gibt es wichtigeres bzw. soll das normale dimmen erstmal 100% funktionieren.
                              Mit einzelnen Leuchten funktioniert es super aber wenn ich eine Gruppe wähle geht das Dimmen ziemlich verzögert oder macht sich kurz selbstständig. Gibt es hierzu etwas zu beachten?

                              Mit der neuen Zonen-Funktion geht es überhaupt nicht aber das noch nichtmal über ioB selbst. Da muss wohl der Adapter ein Update bekommen oder?

                              RGB werde ich bei Zeiten nochmal ausprobieren. Ich versuche größtenteils nativ über KNX zu arbeiten (mit MDT LED Controller). Nur da wo es nicht geht über ioB mit Hue Anbindung.

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              1.2k
                              Online

                              31.7k
                              Users

                              79.7k
                              Topics

                              1.3m
                              Posts

                              4
                              15
                              3249
                              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