Philips Hue Lampenstatus

Ich habe inzwischen eine funktionierende Lösung für die Abfrage des Philips Hue Lampenstatus mit Hilfe eines CCU2-Programms gefunden.
Der Lösungsansatz basiert auf einem Skript von FanTC aus dem HomeMatic-Forum. Das im Forum veröffentliche Skript laeuft zur Zeit (Stand: 07.01.17) leider nicht, da Philips den JSON-Output in einem der letzten Firmware-Update der Hue Bridge leicht verändert hat. Ich habe das Skript korrigiert.
Die Hue Lampen erscheinen dabei als Gerät und der Status des Gerätes kann visuell angezeigt, in Programmen abgefragt und als Gerät bedient (On/Off) werden. Eine Einstellung von Helligkeit, Farbe oder Sättigung ist mit diesem CUxD-Gerätes bewusst nicht möglich, dafür ist/sind die Philips-App oder die vielen anderen Hue-Apps besser geeignet.

CUxD-Geräte anlegen

Um den Hue-Lampenstatus in HomeMatic-Programmen abfragen und auswerten zu können, erstellst du für jede deiner Philips Hue-Lampen ein CUxD-Gerät nach folgenden Vorgaben.
Auch das Zusammenfassen aller Hue-Lampen in einem CUxD-Gerät wäre möglich, ich habe mich der Übersichtlichkeit allerdings dafür nicht entschieden.

Dieser Beitrag geht davon aus, dass du bereits einen Philips-API-Key für deine Hue-Bridge erzeugt hast. Eine detaillierte Anleitung findest du in meinem Beitrag Philips Hue mit HomeMatic steuern.

Falls du das CUxD-AdOn noch nicht auf deiner CCU2 installiert hast, solltest du dies jetzt nachholen. Eine detaillierte Anleitung findest du in meinem Beitrag CUx-Daemon Installation – Schritt für Schritt.

CUxD-Gerät anlegen
CUxD-Gerät anlegen

Nachdem du für jede deiner Hue-Lampen ein CUxD-Gerät angelegt hast, rufst du die Web-Oberfläche der CCU2 auf und gehst in den Posteingang.

Posteingang aufrufen
Posteingang aufrufen

Im Posteingang findest du alle neu angelegten CUxD-Geräte und klickst jeweils auf [Fertig] um die Geräte fertig zu stellen.

Neue CUxD-Geräte im Posteingang
Neue CUxD-Geräte im Posteingang

CUxD-Geräte konfigurieren

Die neuen CUxD-Geräte werden anschliessend unter [Einstellungen]/[Geräte] konfiguriert.

CUxD-Gerät konfigurieren
CUxD-Gerät konfigurieren
CUxD-Gerät konfigurieren
CUxD-Gerät konfigurieren
CUxD-Gerät konfigurieren
CUxD-Gerät konfigurieren
CUxD-Gerät konfigurieren
CUxD-Gerät konfigurieren
CUxD-Gerät konfigurieren
CUxD-Gerät konfigurieren

Diese Schritte wiederholst du für alle CUxD-Geräte, die du für deine Philips Hue-Lampen angelegt hast.

Damit die neuen CUxD-Geräte in der CCU2 verwendet werden können, startest du jetzt die CCU2 über die Systemsteuerung neu.

CCU2 - Systemsteuerung
CCU2 – Systemsteuerung
CCU2 - Systemsteuerung/ Zentralen Wartung
CCU2 – Systemsteuerung/ Zentralen-Wartung
CCU2 - Systemsteuerung - Neustart
CCU2 – Systemsteuerung – Neustart
CCU2 - Neustart
CCU2 – Neustart
CCU2 - Neustart
CCU2 – Neustart

Nachdem Neustart der CCU2 geht es weiter.

CCU2 - Neustart
CCU2 – Neustart

Nach dem Neustart der CCU2 kannst du die Philips Hue-Lampen als Gerät über die CCU2 bedienen. Rufe dazu das CUxD-Gerät über [Status und Bedienung] auf.

CUxD-Gerät bedienen
CUxD-Gerät bedienen

Philips Hue Lampenstatus

Jetzt folgt das Programm zur eigentlichen Statusabfrage der Hue-Lampen.

CCU2 - Programme-Verknüpfungen
CCU2 – Programme-Verknüpfungen
CCU2 - Neues Programm anlegen
CCU2 – Neues Programm anlegen
CCU2 - Philips Hue Lampenstatus
CCU2 – Philips Hue Lampenstatus
CCU2-Programm - Zeitsteuerung für Philips Hue Lampenstatus
CCU2-Programm – Zeitsteuerung für Philips Hue Lampenstatus
! Grundlage dieses Skipts komm von FanTC aus dem HomeMatic-Forum
!
! http://homematic-forum.de/forum/viewtopic.php?f=31&t=29319
!
! Das Skript von FanTC laeuft zur Zeit (Stand: 07.01.17) leider nicht,
! da Philips den JSON-Output leicht verändert hat, dies habe ich hier korrigiert
!
! Das Skript setzt ein CUxD-Geraete vom "Typ 2(28) System" und der Funktion "Exec" voraus 
! und für jede zu steuernde Lampe ein CUxD-Gerät vom "Typ 2(28) System" und der Funktion "Multi-DIM-Exec"
! mit jeweils drei Kanaelen
!
! Dieses Skript setzt den Status von drei Hue-Lampen und kann für weitere Lampen ausgebaut werden

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -f http://<IP-Hue-Bridge>/api/<API-Key>/lights");

dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
string seperator = ':{\"state\":{';

! ## Separieren der einzelnen JSON pro Light ##
string Light01 = v.StrValueByIndex(seperator, 01);
string Light02 = v.StrValueByIndex(seperator, 02);
string Light03 = v.StrValueByIndex(seperator, 03);

! ## Dimmlevel der Lampen Bestimmen ##
string BriHelp01 = Light01.StrValueByIndex(",",1);   integer Bri01 = BriHelp01.Substr(6, 3); Bri01 = 0 - Bri01.ToInteger();
string BriHelp02 = Light02.StrValueByIndex(",",1);   integer Bri02 = BriHelp02.Substr(6, 3); Bri02 = 0 - Bri02.ToInteger();
string BriHelp03 = Light03.StrValueByIndex(",",1);   integer Bri03 = BriHelp03.Substr(6, 3); Bri03 = 0 - Bri03.ToInteger();

! ## Farbwerte der Lampe bestimmen
string HueHelp01 = Light01.StrValueByIndex(",",2); integer Hue01 = HueHelp01.Substr(6, 6); Hue01 = Hue01.ToInteger();
string HueHelp02 = Light02.StrValueByIndex(",",2); integer Hue02 = HueHelp02.Substr(6, 6); Hue02 = Hue02.ToInteger();
string HueHelp03 = Light03.StrValueByIndex(",",2); integer Hue03 = HueHelp03.Substr(6, 6); Hue03 = Hue03.ToInteger();

! ## Farbsaettigung der Lampe bestimmen
string SatHelp01 = Light01.StrValueByIndex(",",3); integer Sat01 = SatHelp01.Substr(6, 6); Sat01 = Sat01.ToInteger();
string SatHelp02 = Light02.StrValueByIndex(",",3); integer Sat02 = SatHelp02.Substr(6, 6); Sat02 = Sat02.ToInteger();
string SatHelp03 = Light03.StrValueByIndex(",",3); integer Sat03 = SatHelp03.Substr(6, 6); Sat03 = Sat03.ToInteger();

! ## Status der Lampe (bei false wird der Bri-Wert auf 0 gesetzt) ##
! ## Beruecksichtigt schon die Aenderung durch Update ##
string StateHelp01 = Light01.StrValueByIndex(",", 0);   if (StateHelp01.Substr(15, 5) == false) {Bri01 = -0;}
string StateHelp02 = Light02.StrValueByIndex(",", 0);   if (StateHelp02.Substr(15, 5) == false) {Bri02 = -0;}
string StateHelp03 = Light03.StrValueByIndex(",", 0);   if (StateHelp03.Substr(15, 5) == false) {Bri03 = -0;}

! ## Übernehmen der Werte ins HM Frontend ! ##
! 1. Lampe
dom.GetObject("CUxD.CUX2801002:1.SET_STATE").State(Bri01);   dom.GetObject("CUxD.CUX2801002:1.LEVEL").State();

! 2. Lampe
dom.GetObject("CUxD.CUX2801003:1.SET_STATE").State(Bri02);   dom.GetObject("CUxD.CUX2801003:1.LEVEL").State();

! 3. Lampe
dom.GetObject("CUxD.CUX2801004:1.SET_STATE").State(Bri03);   dom.GetObject("CUxD.CUX2801004:1.LEVEL").State();

Im Skript bitte die IP-Adresse deiner Hue-Bridge und deinen Philips-API-Key eintragen, dabei bitte auch die spitzen Klammern (<>) löschen.
Falls du mit dieser Lösung nur eine Hue-Lampe bedienen möchtest, kannst du die Zeilen für die weiteren Lampen entweder löschen oder zunächst durch ein !-Zeichen auskommentieren.

Ab sofort kannst du deine Hue-Lampen in HomeMatic-Programmen als Gerät abfragen oder ansprechen. Ein kleines Programmbeispiel soll dir zeigen, wie du eine Hue-Lampe in Verbindung mit einen HomeMatic-Taster einschalten kannst.

Programmbeispiel - Hue-Lampe mit Taster einschalten
Programmbeispiel – Hue-Lampe mit Taster einschalten

 Fehlerbehebung

  • Wurde das CUxD-AddOn installiert? Eine Anleitung dazu findest du in meinem Beitrag CUxD-Installation – Schritt für Schritt.
  • Wurde das Hue-AddOn installiert? Eine Anleitung dazu findest du in meinem Beitrag Philips Hue mit HomeMatic steuern.
  • Wurden alle neu angelegten CUxD-Geräte im Posteingang der CCU2 „fertig gestellt“?
  • Wurde die CCU2 nach der Anlage der CUxD-Geräte neu gestartet?
  • Wurden die CUxD-Geräte richtig konfiguriert?
    /usr/local/addons/hue/hue.tcl 1 false => die 1 steht für die erste Hue-Lampe, bei deinem zweiten CUxD-Gerät muss dort eine 2 stehen.
  • Haben deine CUxD-Geräte evtl. eine andere Gerätenummer erhalten?
    Diese musst du dann im Skript anpassen.

Falls keine dieser Lösungshinweise weiter helfen, bitte einfach melden.

Autor: Erhard Simdorn

Am 1. September 2014 habe ich mir meine erste CCU2 gekauft und war von den Möglichkeiten der Hausautomation sofort begeistert. Am 22. November 2014 folgte dann die zweite CCU2 für einen weiteren Standort und bis heute sind es schon acht CCU2 für die ich der "Auslöser" war.

24 Gedanken zu „Philips Hue Lampenstatus“

  1. Ich schalte mit deinem Skript aus dem ersten Beitrag meine Hue-Lampen. Auf meiner CCU1 habe ich jedoch eine Schaltverzögerung von ca. 2 Sekunden, die mich echt nervt. Ich habe schon die Variabeln weggelassen, was aber (wie zu erwarten war) keinen Einfluss auf die Schaltgeschwindigkeit hat. Selbst wenn die die Statusabfrage weglasse und einfach nur schalte, wir es nicht schneller. Ich denke, dass es einfach daran liegt, dass der CUxD-Befehl auf der CCU1 so langsam ausgeführt wird.

    Wie lange ist die Schaltverzögerung auf eine CCU2? Ich überlege nämlich, ob sich das Aktualisieren lohnt.

    1. Hallo Daniel,

      ich habe in meiner CCU2 knapp 90 Geräte und ca. 200 HomeMatic-Programme. Bei mir läuft ausser CUxD, das E-Mail-AddOn und das Hue-AdOn.
      Wenn ich die Hue Lampen per Programm oder jetzt per CUxD-Geräte schalte, reagieren diese verzögerungsfrei. In der selben Reaktionszeit, als wenn ich sie per Hue-App steuere.
      Ein Wechsel auf eine CCU2 lohnt sich bestimmt, der Aufwand bei vielen angelernten Geräten soll allerdings nicht ohne sein. Ich habe zum Glück gleich mit einer CCU2 vor gut 2 Jahren begonnen.

  2. Hallo Erhard,
    deine Guideline ist wie immer erstklassig – dickes LOB!!!
    Werde die Umsetzung in den nächsten Tagen angehen – Feedback folgt…

    Eine Frage: du hast zufällig keine FRITZ!BOX, die du über die CCU2 anbinden möchtest, um z.B. eine DECT200 Steckdose an-/auszuschalten, die angeschlossenen Telefone bei Alarm alle läuten zu lassen, Gast WLAN an-/auszuschalten? Hab das Fritz Add-On zwar schon mal eingespielt, aber die Anleitung im Forum von Dragonfly stellt mich noch vor Rätsel…
    http://homematic-forum.de/forum/viewtopic.php?f=37&t=27994&start=40

    Gruß
    Andreas

    1. Hallo Andreas,

      die Mühe eine DECT200 Steckdose über die CCU2 zu steuern würde ich mir nicht machen, da ist ein HomeMatic-Zwischenstecker die sinnvollere Lösung. Grundsätzlich ist die Anbindung einer Fritz!Box bestimmt interessant, allerdings auch herausfordernd. AVM hat seit ca. 1 Jahr eine Software-Entwicklungsoffensive, da ändert sich im Moment sehr viel an der Firmware. Für solche Integrationsprojekte ist dann das Projekt ioBroker sinnvoll.

      Gruß Erhard

      1. Danke Erhard für die Einschätzung – mache ich mich zuerst mal an deine Hue Umsetzung 🙂

        Schönes Wochenende!
        Andreas

      2. Hallo Erhard,

        bin jetzt durch mit der FB – ist eigentlich relativ einfach, wenn man sich mal durch das Forum gelesen hat. Bei Interesse schicke ich dir gerne meine Doku – hab einen Ein/Aus Schalter für FRITZDECT200, GästeWLAN ein/aus, und bei Alarm klingeln die Telefone…

        Gruß
        Andreas

  3. Ich habe die Anleitung einmal durch geführt, muss aber feststellen, dass das Gerät mit Android via Homedroid falsch angesprochen wird. Es erscheint in der App ein Dimmaktor. Wenn man versucht einen Prozentsatz einzugebene stürzt die App ab. Es ist mir nicht möglich das Gerät mit Homedroid zu bedienen beziehungsweise den Status zu sehen.

    1. Hallo Steven,

      leider steht mir kein Android-Smartphone zum Testen zur Verfügung. Vielleicht orientiert sich Homedroid bei CUxD-Geräten am Geräte-Icon und stellt dir deshalb die Controls eines Dimmaktors zur Verfügung. Bitte ändere das CUxD-Geräte-Icon zum „Schaltaktor 1-fach Schalter“. Dazu rufst du zunächst die Web-Oberfläche deiner CCU2 auf, wechselst in „Einstellungen/ Systemsteuerung“ und klickst auf den Button „Zusatzsatzsoftware“. Beim CUx-Daemon klickst du auf „Einstellen“ und anschliessend auf den letzten Button „Geräte“. Hier erscheinen alle eingerichteten CUxD-Geräte. Klicke auf dein für den Hue-Lampenstatus eingerichtetes Gerät, in meiner Anleitung habe ich es z.B. „VT_Hue-State01“ genannt, und anschliessend auf „Gerät bearbeiten“. Auf der linken Seite im Browser-Fenster kannst du das Geräte-Icon auf „Schaltaktor 1-fach Schalter“ ändern und anschliessend „Gerät auf CCU ändern !“ anklicken. Es erscheint über dem Geräte-Icon eine grüne „OK“ Meldung. Das war’s! Jetzt solltest du auf deinem Smartphone in der Homedroid-App die Geräte aktualisieren, es sollte jetzt ein ganz normaler Schalter angezeigt werden.
      Bitte gib mir Bescheid, ob du jetzt die Hue-Lampe über die Homedroid-App schalten kannst.

      Gruß Erhard

  4. Hi,
    ich habe die o.g. Lösung implementiert. Leider werden bei mir die „SET_STATE“-Befehle nicht auf der HM-Seite angezeigt. Die Variablen zeigen die korrekten Werte an. Die Hinweise zur Fehlerbehebung habe ich befolgt. Soweit alles korrekt. Gerätenummern passen auch. Irgendwie stehe ich auf dem „Schlauch“.

    1. Hallo wesseli,

      wenn du die Anleitung befolgt hast, solltest in der CCU2 unter Geräte drei neue bedienbare Geräte mit den Namen VT_Hue-State01, VT_Hue-State02, VT_Hue-State03 mit dem entsprechenden Status finden. Deren Status wird im Script mit dem SET_STATE-Befehl gesetzt.

      Gruß Erhard

      1. Hallo Erhard,

        ich habe das gleiche Problem. Ich habe deine Anleitung genau befolgt, einzig die Lampen habe ich anders benannt. Das Skript scheint auch zu funktionieren, aber ich kann nirgends den aktuellen Status der Lampen bzw. der CUxD Dimmaktoren erkennen und daher auch nicht weiter verwenden?

        Gruß

        Kerschten

        1. Hallo Kerschten,

          wenn du strikt nach meiner Anleitung vorgegangen bist, solltest du für jede deiner Hue-Lampen ein virtuelles CUxD-Gerät in der CCU2 finden. Nach meiner Anleitung heissen die zum Beispiel „VT_Hue-State01“. Unter Geräte kannst du in der CCU2 jetzt den Schaltzustand der entsprechenden Hue-Lampe erkennen und diese auch bedienen. Den Dimmlevel kannst du über dieses virtuelle Gerät leider nicht ablesen, du kannst ihn aber über einen HTTP-Befehl einstellen. Die Anleitung dazu findest du in meinem Beitrag „Philips Hue mit HomeMatic steuern„.

          Gruß Erhard

  5. Hi,
    im obigen Script ist ein Fehler drin. Unter der Farbsättigung werden die Werte von den Farbwerten angezeigt.
    „string SatHelp01 = Light01.StrValueByIndex(„,“,3); integer Sat01 = SatHelp01.Substr(6, 6); Sat01 = Hue01.ToInteger();“
    Korrekt wäre doch:
    string SatHelp01 = Light01.StrValueByIndex(„,“,3); integer Sat01 = SatHelp01.Substr(6, 6); Sat01 = Sat01.ToInteger();
    VG
    wesseli

    1. Hallo wesseli,

      vielen Dank für den Hinweis, ich habe den copy & paste-Fehler korrigiert. Ich selbst frage inzwischen lediglich den Status ab, reicht für eine Anwendungen vollkommen aus.

      Gruß Erhard

  6. Hallo Erhard,

    sehr schoener Post. Ich habe bist zum Abschnitt „Philips Hue Lampenstatus“ alle Schritte nachverfolgt. Über das API der HUE-Bridge habe ich auch die im HUE-Addon hinterlegten Parameter und die im Gerät angelegten Befehle verifiziert. Beim Einschalten meiner Lampe über den in der CCU angelegten Schalter tut sich aber nichts. In der Hoffnung auf Hinweise, warum die Lampe nicht einschaltet habe ich das Log eingeschatet. Hier bekomme ich die Fehlermeldung „unbekannte Meldung (WORKING=TRUE), unbekannte Meldung (CMD_RETL) 126, unbekannte Meldung (WORKING=FALSE)“. Hast Du eine Idee was das bedeutet ?

    Vielen Dank
    Ger

      1. Hallo Erhard,
        ich habe die angepassten Dateien in das /usr/local/addons/ -Verzeichnis der CCU2 kopiert. Gibt es noch ein Stück Software, welches ich als Zusatzsoftware installieren muss?
        Mich würde auch interessieren, ob es eine Möglichkeit gibt, aus der CCU mehr Informationen als „unbekannte Meldung“ zu bekommen.
        Vielen Dank
        Ger

        1. Hallo Ger,

          hast du die CUxD-Geräte angelegt?

          Über die CUxD-Console kannst du das Fehler-Log einsehen. Über [Einstellungen]/ [Systemsteuerung]/ [Zusatzsoftware]/ [CUx-Daemon/Einstellen]/ [Info]/ [Full Syslog] erfährst du mehr.

          Gruß Erhard

          1. Hallo Erhard,

            erst einmal Danke für eine ausführliche Anleitung … ich habe genau das Problem, welches auch Ger hat. Nach mehrfachem Überprüfen bin ich sicher, alles korrekt gemacht zu haben.
            Jedoch scheitert bereits die Bedienung (On-Off) der Lampen bevor ich mich mit dem Status beschäftigen kann.
            Das Fehler-Log gibt mit folgende 3 Zeilen als Fehler … kannst du damit was anfangen … ich leider nicht.

            *FEHLER-LOG-START*
            Jun 12 11:40:00 homematic-ccu2 local0.err ReGaHss: Error: IseXmlRpc::CallGetValue: XmlrpcTypeToIseVal failed [../Platform/DOM/iseXmlRpc.cpp (1455)]

            Jun 12 11:40:00 homematic-ccu2 local0.err ReGaHss: Error: IseHssDP::ReadValue: CallGetValue failed; sVal = [../Platform/DOM/iseDOMdpHSS.cpp (130)]

            Jun 12 11:41:57 homematic-ccu2 local0.err ReGaHss: Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 97 0x61 [1] 0 0x00 [2] 99 0x63 [3] 0 0x00 [4] 100 0x64 [../Platform/DOM/iseESPexec.cpp (11622)]
            *FEHLER-LOG-ENDE*

            Sollten diese Meldungen nicht mit der Steuerung der Hue zu tun haben, bleibt mir noch die Frage, ob es etwas mit der Firmware der CCU oder der Programmversion des CuxD zu tun haben kann.

            Grüße Jochen

          2. Hallo Jochen,

            schau doch bitte mal im CUxD-Log rein, du erreichst ihn über die CUxD-Console.

            Gruß Erhard

          3. Hallo Erhard,

            habe im Log des CUx-Dämon den Hinweis „exit (126)“ gelesen … allerdings ohne zu verstehen, was gemeint ist …. Google hat mich dann auf eine Seite geführt, auf der ich den Hinweis fand, dass „exit (126)“ auf einen Fehler in den Dateiberechtigungen im Verzeichnis usr/local/addons/hue hinweist. Ich habe somit den Dateien in diesem Verzeichnis die Berechtigungen 0755 gegeben und alles funktionierte wie gewünscht.

            Gruß
            Jochen

  7. Hallo Erhard

    noch eine kurze Ergänzung … ich habe auf der CCU2 die Firmware 2.27.8 … der CUx-DÄMON läuft mit der Version 1.10a.
    Inzwischen habe ich die Script für die Statusabfrage eingebaut. Diese Abfrage läuft korrekt, so dass es „nur“ um den Schaltvorgang geht

    Nochmals Grüße

    Jochen

Kommentare sind geschlossen.