Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Skript für Relatives Dimmen von Hue-Lampen (oder Gruppen) über KNX-Taster (und eine Frage dazu)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Skript für Relatives Dimmen von Hue-Lampen (oder Gruppen) über KNX-Taster (und eine Frage dazu)

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      axel.rathey last edited by Jey Cee

      Hallo Andreas,

      schönen Dank für das Skript. Ich stand vor ähnlichem Problem, habe aber das tradfri Gateway von IKEA.

      Da das tradfri Gateway den .bri Value als ".lightbulb.brightness" bzw. bei Gruppen nur mit ".brightness" hat, definiere ich das direkt als "idHueLampe" bzw. bei mir nun "idTradfriLampe" und habe den ".bri" im Code herausgenommen.

      Die Art und Weise wie iobroker das Objekt anliegt ist übrigens nicht von der Lampe abhängig (Hue, Tradfri etc.) sondern vom verwendeten Gateway bzw. vermutlich davon wie das im iobroker Modul des Gateways programmiert ist.

      Zu Deiner Frage kann ich leider keine Antwort geben, da ich mit Javascript noch wenig Erfahrung habe.

      Viele Grüße

      Axel

       /* ####### 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
       # angepasst von Axel Rathey am 20.07.2018 auf Ikea tradfri
       ################################################################################## */
       // Channel-IDs
       var idTaster = "XXXXXXXXX"; // ID der KNX-Gruppe mit DPT-3, z.B. Tastenwippe oder Tastenpaar
       //var idHueLampe = "XXXXXXXXX"; // ID der Hue-Lampe oder Gruppe
       var idTradfriLampe = "XXXXXXXXX.lightbulb.brightness"; // ID der tradri-Lampe oder Gruppe (inkl. "(.lightbulb).brightness")
       // Konstante zum Anpassen des Dimm-Verhaltens
       const REL_DIM_VAL = 10; // Schrittweite beim relativen Dimmen (Achtung, das ist (bei Hue) KEIN %-Wert)
       const ABS_DIM_MAX = 100; // Maximaler Absolutwert (Hue: 254)(tradfri 100%)
       const ABS_DIM_MIN = 1; // Minimaler Absolutwert (Wert 1 sonst geht die tradfri komplett aus)
       const DIM_DELAY = 500; // Zeit im ms für die einzelnen Dimm-Schritte
       // ############ NACH DIESER ZEILE NICHTS MEHR ÄNDERN ############
       // ########### DO NOT CHANGE ANYTHING BELOW THIS LINE ###########
       // Globale Variablen
       var BOOL_stop = 0;
       var emergency_counter = 1;
       // DimDown Runter-Dimmen
       on({id: idTaster, change: "any"} , function(obj) {
       if (obj.state.val.decr_incr === 0 && obj.state.val.data === 1) {
       BOOL_stop = 0;
       emergency_counter = 0;
       dimdown(REL_DIM_VAL);
       }
       });
       // DimUp Rauf-Dimmen
       on({id: idTaster, change: "any"} , function(obj) {
       if (obj.state.val.decr_incr === 1 && obj.state.val.data === 1 ) {
       BOOL_stop = 0;
       emergency_counter = 0;
       dimup(REL_DIM_VAL);
       }
       });
       function dimup(a) {
       if (BOOL_stop || getState(idTradfriLampe).val >= ABS_DIM_MAX || emergency_counter >= 100) {
       console.log("Ende");
       BOOL_stop = 0;
       return 0;
       }
       if (getState(idTradfriLampe).val <= (ABS_DIM_MAX-REL_DIM_VAL)) {
       console.log("erhöhe um " + a + " auf den Wert " + (getState(idTradfriLampe).val + a) + " (" + emergency_counter + ")");
       setState(idTradfriLampe, getState(idTradfriLampe).val + a);
       setTimeout(function() {
       emergency_counter++;
       dimup(REL_DIM_VAL);
       }, DIM_DELAY);
       } else {
       console.log("ELSE: erhöhe um " + (ABS_DIM_MAX-getState(idTradfriLampe).val) + " auf den Wert " + ABS_DIM_MAX + " (" + emergency_counter + ")");
       setState(idTradfriLampe,ABS_DIM_MAX);
       emergency_counter++;
       return 0;
       }
       }
       function dimdown(a) {
       if (BOOL_stop || getState(idTradfriLampe).val <= ABS_DIM_MIN || emergency_counter >= 100) {
       console.log("Ende");
       BOOL_stop = 0;
       return 0;
       }
       if (getState(idTradfriLampe).val >= (ABS_DIM_MIN+REL_DIM_VAL)) {
       console.log("verringere um " + a + " auf den Wert " + (getState(idTradfriLampe).val - a) + " (" + emergency_counter + ")");
       setState(idTradfriLampe, getState(idTradfriLampe).val - a);
       setTimeout(function() {
       emergency_counter++;
       dimdown(REL_DIM_VAL);
       }, DIM_DELAY);
       } else {
       console.log("ELSE: verringere um " + (ABS_DIM_MIN+getState(idTradfriLampe).val) + " auf den Wert " + ABS_DIM_MIN + " (" + emergency_counter + ")");
       setState(idTradfriLampe,ABS_DIM_MIN);
       emergency_counter++;
       return 0;
       }
       }
       // STOP
       on({id: idTaster, change: "any"} , function(obj) {
       if (obj.state.val.data === 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;
       }
       });
      
      1 Reply Last reply Reply Quote 0
      • D
        do5tj80 last edited by

        Hallo,

        Ich habe das Script als Java Script im Scripteditor eingebunden.

        Meine KNX GA hat 3.007 als dpt.

        Leider erfolgt auf den Tastendruck keinerlei Reaktion.

        Wo könnte ich am besten anfangen zu suchen wo mein Fehler liegt?

        Gibt es irgendwas zu beachten?

        LG

        Tobias

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

          Hi Tobias,

          Frage: hast du schon eine Lösung gefunden?

          Sorry für die verdammt späte Antwort.

          LG Andreas

          1 Reply Last reply Reply Quote 0
          • T
            tetzlav last edited by tetzlav

            @do5tj80

            Bei mir war es ähnlich. Ich hatte über

            obj.state.val[0]
            obj.state.val[1]
            

            keinen Zugriff auf die Daten, weil des state-Objekt vermutlich nicht als Array erkannt wurde.
            Stattdessen musste ich in Zeile 43

            if (obj.state.val.decr_incr == 0 && obj.state.val.data == 1) {
            

            die Objekte direkt abfragen und damit funktioniert das Script bestens...

            1 Reply Last reply Reply Quote 0
            • D
              Denis1988 @andreaskos last edited by

              @andreaskos vielen Dank für das Script, welches ich auch nutze 🙂

              Das einzige was mich bisschen noch stört ist dass die Lampen nicht so smooth rauf und runter dimmen.
              Es gibt doch bei den hue lampen den datenpunkt command, in dem man eine JSON eintragen kann wie z.B.: "{"level":100,"transitiontime":50} und so weiter.... Hierbei dimmt die Lampe echt sehr schön rauf und runter.

              Wäre es vielleicht möglich bei langem Tastendruck so eine command auszuführen und bei Loslassen zu stoppen/Löschen.

              leider bin ich nicht so fit im Skripten

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

                Hallo @denis1988 ,

                ja, das wäre eine schöne Erweiterung, kann ich gerne einbauen! Aber vorher noch eine Frage: Gibt's da irgendwo eine Doku dazu? Die "transistiontime" wird ja wie ich schon bemerkt habe in Zehntelsekunden angegeben.

                Und noch eine Frage (eventuell auch an @tetzlav ) : Ich hab das Skript selbst schon länger nicht mehr genutzt. Muss ich für den aktuellen KNX-Adapter - wie von @tetzlav angeführt - die Zeilen 34, 43 und 99 anpassen, damit es geht? Das könnt ich für die neue Version auch gleich mit anpassen und oben im ersten Thread aktualisieren.

                Danke & LG
                Andreas

                D 2 Replies Last reply Reply Quote 0
                • D
                  Denis1988 @andreaskos last edited by Denis1988

                  @andreaskos
                  Danke für die Rückmeldung und für deine Mühe! hier ist die Doku, du musst dich jedoch anmelden um sie zu lesen:

                  https://developers.meethue.com/develop/hue-api/lights-api/

                  der Punkt bri_inc hört sich auch sehr spannend an. Leider ist dieser Datenpunkt im hue.adapter nicht vorhanden.

                  Darf ich fragen warum Du das Skript nicht mehr nutzt bzw. was du stattdessen benutzt?

                  VG

                  andreaskos 1 Reply Last reply Reply Quote 0
                  • D
                    Denis1988 @andreaskos last edited by

                    @andreaskos

                    Vielleicht ist das hier auch eine gute Vorlage:

                    https://community.symcon.de/t/hue-lampen-via-knx-taster-steuern/51436/24

                    (Post ab 20.Januar 2021)

                    Ich bin leider nicht so fit im Skripte schreiben

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

                      Danke @denis1988 !
                      Ich bin Systemintegrator und hab das Skript bei zwei Kunden in Betrieb, wo es auch anstandslos seine Dienste tut.
                      In letzter Zeit aber hatte ich keine KNX-Hue-Kombi, es hat sich aber einiges getan beim KNX-Adapter in der Zwischenzeit.

                      Ich seh es mir an und stell eine neue Version hier rein.

                      D 1 Reply Last reply Reply Quote 0
                      • D
                        Denis1988 @andreaskos last edited by

                        @andreaskos super vielen Danka an dich fine ich top!!!👍

                        C 1 Reply Last reply Reply Quote 0
                        • C
                          CyberChris79 @Denis1988 last edited by

                          @andreaskos
                          Danke für dein Script. Es funktioniert einwandfrei.
                          Gibt es eine Möglichkeit das auch für HSV zu nutzen.
                          Ich möchte gerne über den MDT Glastaster 2 über 2 Tasten HSV Werte an die Hue Lampe senden.

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          711
                          Online

                          31.7k
                          Users

                          79.8k
                          Topics

                          1.3m
                          Posts

                          javascript
                          6
                          12
                          2539
                          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