Philips Hue Leuchten über HomeMatic Sender dimmen

Seit die HomeMatic CCU Philips Hue Leuchtmittel unterstützt, hat vielleicht der ein oder andere den Wunsch verspürt, die Leuchtmittel über einen HomeMatic Sender – wie den 2-fach Wandtaster – zu dimmen.

Um das zu ermöglichen, habe ich mir folgende Lösung überlegt.
Ein kurzer Tastendruck nach oben schaltet das Hue Leuchtmittel auf 100% (Ein), ein kurzer Tastendruck nach unten schaltet das Leuchtmittel auf 0% (Aus).

Da ein langer Tastendruck nicht wiederholend von der Zentrale erfasst wird, sondern erst wenn man die Taste loslässt, wird das Dimmen bei dieser Lösung durch einen langen Tastendruck (d.h. die Taste wird für ca. 1 Sekunde gehalten und dann losgelassen) gestartet und durch einen weiteren kurzen Tastendruck bei der Wunschhelligkeit gestoppt.

Wird die obere Taste lang gedrückt wird bis 100% hochgedimmt, wird die untere Taste lang gedrückt, wird bis 5% heruntergedimmt. Sobald der gewünschte Dimmwert erreicht ist, wird das Dimmen durch kurzes Drücken der oberen oder unteren Taste des Senders gestoppt.

So sieht das ganze dann aus:

 

  1. Als erstes suchen wir das zu dimmende Hue-Leuchtmittel aus der Geräteliste heraus und kopieren uns den Namen des Gerätes in die Zwischenablage:

    Das zu dimmende Hue-Leuchtmittel in der Geräteliste. 
  2. Nun legen wir uns für jedes zu dimmende Hue-Leuchtmittel zwei Systemvariablen an. Der Name der Systemvariablen besteht aus dem Gerätenamen (aus Schritt 1) mit dem Zusatz _dim und _level.

    GERÄTENAME_dim ist vom Typ Werteliste und beinhaltet folgende Werte:
    stop;dimup;dimdown

    GERÄTENAME_level ist vom Typ Zahl und hat als Minimalwert 0 und als Maximalwert 1

    Die Systemvariablen die zum Dimmen notwendig sind.
  3. Nun legen wir für jedes Leuchtmittel zwei Programme an.
    Das erste Programm dient dazu, das Leuchtmittel beim kurzen Tastendruck ein- bzw. auszuschalten, sowie das Dimmen zu starten bzw. wieder zu unterbrechen:

    Das Programm zum Ein- und Ausschalten, sowie zum Starten und Beenden des Dimmvorganges.
  4. Das zweite Programm führt das eigentliche Dimmen durch und besteht nur aus zwei Triggern die auf Aktualisierung auslösen und den zwei Skripten aus Abschnitt 5:

    Dieses Programm dimmt das Leuchtmittel auf und ab und ruft sich selbst immer wieder auf.
  5. Das eigentliche Dimm-Skript liest den Trigger des Programms aus und weiß dadurch, ob hoch- oder heruntergedimmt werden soll. Dann liest es den aktuellen Dimmwert aus der Systemvariable GERÄTENAME_level aus und erhöht bzw. verringert diesen um 5% (0.05) und schickt den neuen Wert an das Hue-Leuchtmittel.

    WICHTIG
    Das Skript ermittelt den Namen des Datenpunktes für die Helligkeit aus dem Namen des Gerätes. Sollte der Gerätename geändert worden sein, muss in der Zeile

    string hue_datapoint_level = "";

    der Datenpunkt für den Level eingetragen werden. Diesen kann man sehr einfach über die XML-Api finden, wenn man unter Einstellungen > Systemsteuerung > Zusatzsoftware > XML-Api > Einstellen den Punkt statelist.cgi auswählt.

    Der Datenpunkt LEVEL in der XML-Api.


    Das erste Skript (Ausführung „sofort“):

    ! Hue-Dimmskript V1.0 für CCU2, CCU3 und OCCU
    ! Michael Gerhard
    ! V1.0 29.07.2018
    
    ! -------------------------------------------------------------
    ! Wenn der Name vom Kanal (Hue Leuchte) in der CCU geändert
    ! wurde, muss die folgende Zeile den LEVEL-Datenpunkt
    ! beinhalten, ansonsten muss die Zeile leer bleiben. 
    ! Ein korrekter Datenpunkt für ein Hue Leuchtmittel sieht
    ! z.B. so aus und kann über statelist.cgi der XML-API ermittelt
    ! werden:
    ! VirtualDevices.HU-Hue lightst:1.LEVEL
    
    ! Nur etwas eintragen, wenn Name vom Kanal geändert wurde 
    string hue_datapoint_level = "";
    
    ! -------------------------------------------------------------
    ! Ab hier nichts mehr ändern
    string hue_dim = dom.GetObject("$src$").Name();
    string hue = hue_dim.Substr(0,(hue_dim.Length()) -4);
    string hue_level = hue # "_level";
    
    if (hue_datapoint_level == "") {
       string hue_tmp_dp = (hue # ":1.LEVEL");
       integer pos = hue_tmp_dp.Find("HU-Hue");
       string hue_dp = "VirtualDevices." # hue_tmp_dp.Substr(pos,((hue_tmp_dp.Length()) - (hue_tmp_dp.Substr(pos))));
    }
    else { string hue_dp = hue_datapoint_level; }
    
    var direction = dom.GetObject("$src$").Value();
    real level= dom.GetObject(hue_level).Value();
    
    if (direction > 0){
       if (direction == 1){
          if (level < 1) {
             real new_level= (level + 0.05);
             dom.GetObject(hue_level).State(new_level);
             dom.GetObject(hue_dp).State(new_level);
             level=new_level;
          }
       }
       else {
          if (level > 0.05) {
             real new_level= (level - 0.05);
             dom.GetObject(hue_level).State(new_level);
             dom.GetObject(hue_dp).State(new_level);
             level=new_level;
          } 
       }
    }
    


    Das zweit Skript prüft, ob das Dimmen ggf. gestoppt wurde und triggert andernfalls das Programm erneut, indem es die Systemvariable GERÄTENAME_dim wieder auf den aktuellen Wert aktualisiert.

    Das zweit Skript (Ausführung „verzögert um 1 Sekunde“):

    string hue_dim= dom.GetObject("$src$").Name();
    string hue = hue_dim.Substr(0,(hue_dim.Length()) -4);
    string hue_level = hue # "_level";
    
    var direction = dom.GetObject("$src$").Value();
    real level= dom.GetObject(hue_level).Value();
    
    if (direction > 0){
       if (direction == 1){
          if (level < 1) {
             dom.GetObject(hue_dim).State(1);
          }
          else { dom.GetObject(hue_dim).State(0); }
       }
       else {
          if (level > 0.05) {
             dom.GetObject(hue_dim).State(2);
          }
          else { dom.GetObject(hue_dim).State(0); } 
       }
    }

     


Update 31.07.2018: Reine CCU2 Lösung entfernt, da die aktuelle Lösung auf allen Zentralen eine zufriedenstellende Lösung darstellt.

22 Antworten auf „Philips Hue Leuchten über HomeMatic Sender dimmen“

  1. IMO eine super Lösung, echt prima.

    Kannst Du Dir vorstellen, das Ganze auch mit einem Taster zu realisieren?

    … ich dachte so hier …….

    – Taster kurz getastet, Licht geht auf 100% Dimmwert EIN oder wenn das Licht schon eingeschaltet ist geht es wieder auf 0% Dimmwert AUS.
    – Taster lang getastet + losgelassen, Licht dimmt herunter bis Minimalwert erreicht, verharrt bei diesem Dimmwert kurz und dimmt dann wieder herauf bis Maximalwert erreicht und immer so weiter …… Tastet man jetzt 1x kurz wird das dimmen beendet und der aktuelle Dimmwert bleibt

    So könnte man mit einem 2-Kanal Taster zwei HUE Leuchten bedienen und mit einem 4-Kanal Einbausender sogar 4 HUE’s

    1. Prima Script, muss man aber wirklich immer pro Hue Lampe die Programme und Systemvariablen einzeln anlegen?

      Würde das gerne zusammenfassen, da ich in jedem Raum sechs Spots habe, die gleich gesteuert werden sollen.

        1. Solle theoretisch genauso gehen, hier muss im Skript nur das Gerät durch die Gruppe ersetzt werden. Da ich nur eine Hue-Lampe habe, kenne ich die Darstellung der Gruppe nicht. Wie ist die Gruppe denn benannt?

      1. Solle theoretisch genauso gehen, hier muss im Skript nur das Gerät durch die Gruppe ersetzt werden. Da ich nur eine Hue-Lampe habe, kenne ich die Darstellung der Gruppe nicht. Wie ist die Gruppe denn benannt?

  2. Super vielen Herzlichen Dank für die Anleitung, werde ich sofort probieren.
    Besteht auch die Möglichkeit die für mehrere Hue (evtll Gruppe) zu realisieren, und könntest du dann das vorgehen mal Posten.
    Gruß Nils

  3. Hallo, erstmal vielen Dank für das TUT.

    ich wollte das ganze mir den 6 fach Tastern von Gira umsetzen. ein und ausschalten funktioniert. Allerdings das dimmen nicht.

    Habe die Kanäle nicht umbenannt und alles 1zu1 so umgesetzt wie du beschrieben hast. Finde den fehler allerdings nicht. Vielleicht könntest du mir dazu helfen.
    Gruß Tobi

  4. Hallo und erst einmal vielen Dank für die Veröffentlichung des Projektes.

    Habe das Projekt heute auf die CCU3 übertragen und kann mich meinen Vorredner nur anschließen. Das Ein/ u, Ausschalten funktioniert soweit, jedoch ist ein Dimmen nicht möglich. Kann es eventuell daran liegen, dass ich einen HmIP-BRC2 Taster in Verwendung habe? Wie ich lesen konnte, sendet dieser ein kontinuierlichen langen Tastendruck. Sie sagten, dass es eventuell leichter sei, das Dimmen zu lösen. Wie kann ich das Skript anpassen, so dass mit einen langen Tastendruck, das Licht herunter gedimmt wird?

    1. Wurde hier vielleicht derselbe Fehler gemacht, den auch Carsten erst gemacht hatte? Das Programm muss auf Aktualisierung ausgelöst werden, nicht auf Änderung, damit es sich selbst immer wieder aufrufen kann.
      Bei IP-Tastern, falls es durch das Mehrfachsenden des langen Tastendrucks zu Problemen kommt, kann man diesen unterbinden.
      Hierzu in die Einstellungen des Tasters gehen und den Timeout für den langen Tastendruck auf 100ms umstellen. Dann sendet der Taster nur einen langen Tastendruck.

  5. Danke für das Skript. Ich habe folgende Konstellation:
    * Taster: HmIP-BRC2
    * Lampe: Ist als CUXD eingebunden (da ich die Hue Geräte alle über ein AddOn eingebunden habe)

    -> Das „kurze“ Tasten funktioniert.
    -> Beim „langen“ Tasten geht die Helligkeit nich automatisch nach oben (oder unten). Man muss immer im Wechsel lang/kurz/lang/etc. drücken.
    Es erscheint fast so als ob sich das Programm nicht selbst wieder aufruft?

    Das ganze ist in einer CCU3 abgebildet.

  6. Hallo,
    TOP Funktionalität. Das Script klappt wirklich gut.
    Ich will hier nochmal das Thema aufgreifen, mehrere HUE Lampen mit einem Taster zu steuern.
    Sie fragten in älteren Einträgen, wie die Darstellung der Gruppen (Zonen) stattfindet: In Homematic anscheinend gar nicht.
    In der statelist.cgi stehen nur die Leuchtmittel, obwohl ich Zonen in HUE angelegt habe. Oder sollten die Gruppen in einer anderen Datei stehen?
    Auch wenn Sie nur ein Leuchtmittel haben, ist es möglich in HUE dafür eine Gruppe (Zone) anzulegen – vielleicht können Sie es so mal selbst probieren.

    Falls aber die Gruppen wirklich nicht übertragen werden: Ist es möglich das Script so zu erweitern, dass die Steuerung von z.B. 5 Leuchtmittel erfolgt.
    In einem der Scripte haben Sie ja die Möglichkeit geschaffen, die LEVEL-Datenpunkte der Lampe zu benennen. Hier sollte es evtl. machbar sein, parallel weitere Leuchten zu benennen.

    Wäre wirklich super, wenn Sie hier noch einen Ansatz liefern können.
    Viele Grüße Tobias

    1. Zum Thema Gruppen, da kommt es glaub ich auf das verwendete HUE AddOn an. Man(n) muss die in HUE angelegten Gruppen/Zonen als „1“ Homematic Gerät anlegen können.
      Ich verwende das Addon von j-a-n bei dem ich sowohl jedes Leuchtmittel einzeln als auch die Gruppen und Zonen ansprechen kann. Funktionsweise bleibt in Homematic dann die gleiche egal ob ein Leuchtmittel und eine Gruppe mit 20.

  7. Danke für die Anleitung!
    Bei mir hängt die HUE Lampe hinter einem HmIP Aktor.

    Das einschalten habe ich implementiert – aber Dimmen und Ausschalten klappt nicht. Wie depugge ich das jetzt 😀 ???

    Danke

    1. Es ist irgendwie wenig zielführend, die Hue hinter einen HmIP Aktor zu setzen, da die ja dauerhaft Strom brauchen.
      Ansonsten kannst Du erstmal schauen, wie sich die beiden Systemvariablen verhalten, die du angelegt hast.

  8. Sehr seltsam – einschalten ging bei mir nach dem setup – ausschalten nicht.

    Dimmen ging, aber fing erst anch 40 sekunden an – irgendwas ist also seltsam – was bestimmt an meinem setup liegt… :/

  9. Vielen Dank für das Skript.

    Ist es möglich,

    1.) den Dimm-Bereich zu ändern, z.B. auf 0,0 – 0,8 (statt 0,05 – 1,=

    2.) die Geschwindigkeit des Dimmvorganges zu ändern, konkret zu reduzieren?

    Vielen Dank!

  10. Danke für den Gedankenanstoß.
    Ich habe mir gerade den HMIP Drehtaster zugelegt und wollte damit 3 Hue Lampen dimmen (gemeinsam).
    Könntest Du mir verraten, wie das Skript zu modifizieren wäre, wenn gedimmt werden soll, so lange man das Rad in eine Richtung dreht?
    Schalten tu ich direkt mit einem HMIP Aktor, Druck auf die Taste toggelt den Schaltzustand.

      1. Super, danke, genau das habe ich gebraucht.
        Wird sogar noch einfacher, weil ich die Lampen mit einem HM-IP Aktor schalte (Direktverknüpfung mit dem Drucktaster).
        Der Drehtaster hat 4 Verknüpfungen pro Drehrichtung, 1x schnelles und 3x langsames Drehen. Konnte nicht herausfinden, bei welcher Drehgeschwindigkeit was aktiviert wird (gibt es irgendeinen „Busmonitor“ wie bei KNX?).
        Habe jetzt aber bei jeder Drehgeschwindigkeit ein Skript hinterlegt, Inkremente 0,15, 0,1, 0,06 und 0,03 haben sich als zweckmäßig erwiesen, die 0,05 wie im Beispielskript haben ein langes „Kurbeln“ nötig gemacht. So geht es richtig „smooth“, wie es neudeutsch heißt.
        Danke nochmals für die Tipps!

Schreibe einen Kommentar zu Tom Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert