Philips Hue per Homematic Steuern

Ein weiterer Artikel zu meinem Lieblingsthema: Die Verbindung verschiedener Smarthome Systeme untereinander. Wer gerne Homematic nutzt, kann leider nicht auf die große Vielfalt an RGB LEDs zurückgreifen. Hier hilft Hue, aber leider ist die Verbindung zur CCU2 nicht so ganz einfach.

In diesem Artikel zeige ich, wie sich Hue Lampen relativ einfach über die CCU2 steuern lassen. Die Lampen können selbstverständlich weiter über die Hue-App bedient werden.

Die verschiedenen Lösungswege

Zum Ansprechen der Hue Bridge wird ein einfacher HTTP Aufruf verwendet. Dies kann natürlich aus dem Browser heraus erfolgen, oder über ein Skript der CCU2. Für die CCU2 gibt es folgende Möglichkeiten:

  • System.Exec: Dabei wird direkt über das Betriebssystem der CCU2 ein HTTP Aufruf gestartet, da das aber bei macnhen Usern zu Problemen führt, werde ich das hier nicht verwenden. Der Befehl wird offiziell auch nciht unterstützt. Wer sehen möchte wie das funktioniert, kann sich mein Tutorial zum Thema Push Nachrichten mit der CCU anschauen.
  • Über CUxD: Hierbei wird der HTTP Aufruf über die Zusatzsoftware CUxD durchgeführt. Genaugenommen bringt das CUxD PAket die Anwendung curl mit sich, welche dafür zuständig ist. Dieseen Weg verwende ich in diesem Tutorial.
  • Über ein Skript von hobbyquaker + CUxD: Es gibt noch ein Skript, welches ein paar Aufgaben übernimmt. Dazu muss allerdings das Skript manuell auf das Dateisystem der CCU kopiert werden. anschließend ruft es auch den CUxD Befehl auf. Es vereinfacht das ganze letztlich nur wenig. Diesen Weg habe ich mir bis jetzt nicht angeschaut, aber es ist nicht so komfortabel wie die Integration von Lightify in die CCU. Wen es interessiert, das Skript findet ihr bei GitHub.

Da das Skript von Hobbyquaker nur den Aufwand etwas reduziert, aber einen Eingriff in das Dateisystem und CUxD erfordert, habe ich mich für den zweiten Weg entschieden. Sollte das Skript irgendwann so weit sein, dass die Hue Lampen automatisch in der Geräteliste auftauchen, würde ich das ganze natürlich nochmal überdenken…


Erstellen eines API Keys auf der Hue Bridge

Um auf die API der Bridge zugreifen zu können, muss ein User bzw. Api Key angelegt werden. Dazu öffnet ihr folgende URL im Webbrowser: http://<bridge ip address>/debug/clip.html (natürlich mit der IP-Adresse der Bridge. Die IP Adresse sollte übrigens im Router fest zugewiesen werden, ansonsten funktioniert es irgendwann nicht mehr!

Nun sollten ein paar Eingabefelder erscheinen. Die folgenden Schritte zeigen, wie sich der API Key abrufen lässt.

  • Im Feld URL wird die vorgegebene URL /api/1234/ durch /api/ ersetzt.
  • Im Feld Message Body wird folgendes eingetragen: {„devicetype“:“ccu_zugriff#user1″}
  • Jetzt wird der Button auf der Bridge gedrückt
  • Ein Klick auf POST schickt die Anfrage los
  • Das Ergebnis sollte jetzt das Wort Success und einen Feld ‚username‚ enthalten. Der Username (bzw. API-Key) ist die zufällig aussehende Zeichenkette (ohne Anführungszeichen). Diese irgendwo hinkopieren, da sie später benötigt wird um sich gegenüber der Bridge zu authentifizieren.

Wenn alles richtig lief, sollte das ganze in etwa so aussehen:

Einrichtung des CUX-Daemon (CUxD)

Falls noch nicht geschehen, muss CUxD auf der CCU2 installiert werden. Wer das nicht möchte, kann auch darauf verzichten und System.Exec verwenden, dazu muss natürlich das Skript angepasst werden.

Zur Installation von CUxD wird das Paket wird von https://www.homematic-inside.de/software/cuxdaemon heruntergeladen (Achtung – CCU Version beachten!). Anschließend wird es über die Weboberfläche der CCU2 unter Einstellungen -> Systemsteuerung -> Zusatzsoftware hinzugefügt.


Nun muss noch ein Gerät auf der CCU2 erzeugt werden. Dazu unter Einstellungen -> Systemsteuerung -> CUx-Daemon die Weboberfläche öffnen.  Ein Klick auf Geräte in der oberen Navigationsleiste öffnet die Geräteverwaltung. Hier muss nun ein neues Gerät angelegt werden, dazu im linken Dropdown Feld den Eintrag ‚(28) System‚ auswählen und wie folgt konfigurieren:

Sollte die Seriennummer 1 schon belegt sein, muss das später im Skript angepasst werden, also merken! Der Name ist relativ egal, da das Gerät für alle Systembefehle verwendet werden kann. Es müssen also nicht zwei Geräte angelegt werden, wenn man Hue steuern möchte und auch Push nachrichten verschicken möchte.

Nach einem Klick auf ‚Gerät auf CCU erzeugen!‚ taucht ein neues Gerät im Posteingang der CCU2 auf. Dieses Wird einfach bestätigt. Weitere Einstellungen sind nicht notwendig.

Anlegen des Skripts

Nun wird noch ein Skript inklusive Aufruf angelegt. Dazu unter Programme und Verknüpfungen auf Programme & Zentralenverknüpfungen gehen. Mit einem Klick auf Neu wird ein neues Programm angelegt. Die Triggerbedingung überlasse ich euch…

Als Aktivität wird Skript ausgewählt. Ein klick auf die kleinen drei Punkte, öffnet die Skripteingabe, hier wird nun das folgende Skript eingegeben. Die IP-Adresse der Bridge und der API Key (siehe oben) müssen natürlich angepasst werden!

Um eine Lampe mit einem vordefinierten Farbwert einzuschalten, wird folgender Code eingefügt:

Falls im vorherigen Schritt das CUxD Gerät nicht mit der Seriennummer 1 angelegt wurde, muss die Seriennummer im Skript entsprechend angepasst werden. Die Seriennummer ist die letzte Ziffer von CUX2801001 (vor dem Doppelpunkt).

Um die Lampe wieder auszuschalten, wird in der Variable ‚reqdata‘ einfach der on-Wert auf false gesetzt und die Farbinformationen können gelöscht werden. Man kann die Farbinformationen auch drin lassen, das Licht geht trotzdem aus ;) Sieht dann so aus:

Wer mehrere Lampen Schalten will, kann das auch in einem Skript hintereinander tun. Das würde dann z.b. so gehen:

Hinweis: Sollten mehrere Skripte verwendet werden, empfehle ich alle Variablen im zweiten Skript umzubenennen, da es sonst zu Problemen führen kann. Die Variablen werden nach Abarbeitung des Skripts nämlich nicht gelöscht. Wer viele Skripte verwendet, sollte außerdem die Variablen entfernen und direkt in den Befehl einsetzen.

Ermitteln des Farbwerts

Um den Farbwert anzupassen muss die Variable reqdata in dem Skript angepasst werden. Das Feld hue gibt die Farbe vor, bri, die Helligkeit und sat die Sättigung. Zum ändern, einfach die Zahlen anpassen. Eine Hilfestellung zu den Farben (hue) gibt es hier: https://www.developers.meethue.com/documentation/core-concepts. Helligkeit und Sättigung lassen sich von 0-254 einstellen.

Ermittlung der Lampennummern

Um eine Übersicht über alle Lampen zu bekommen, wird einfach folgende URL aufgerufen:

http://<ip der bridge>/api/<api key>/

Die Antwort lässt sich mit einem JSON-Beautifier ganz gut anschauen. Dort finden sich alle Einstellungen, Softwareversionen und Lampen. Ich verwende übrigens ein Notepad++ Plugin, um JSON Daten anzuschauen. Damit erhalte ich über Strg+Shift+Alt+J eine Baumansicht.

Fazit

Wer schon im Besitz von Philips Hue ist, hat mit diesem Skript eine super Möglichkeit, seine bestehenden Lampen per Homematic zu Steuern. Wer über eine Neuanschaffung nachdenkt, sollte vielleicht auch mal einen Blick auf Lightify von Osram schauen. Diese Lampen lassen sich direkt mit der CCU (natürlich mit Umweg über das Gateway) verbinden. Diese Möglichkeit kommt direkt von eQ-3. Wie das geht habe ich hier beschrieben.

Passende Beiträge


3 Comments

  • Christian

    11. Mai 2017

    Hallo Philipp,

    super Anleitung! Das Skript funktioniert super!

    Habe zwei Fragen dazu:
    Ist es auch möglich, anstatt der einzelnen Lampen eine Gruppe von Lampen anzusteuern (die Hue-Bridge fasst ja mehrere Lampen in Gruppen zusammen) … das könnte ein paar Code-Zeilen sparen.

    Ich würde gerne auf einen Toogle einrichten (1. kurzer Tip Lampe an und 2. kurzer Tip Lampe aus), um die beiden Tasten eines Schalters z.B. unterschiedlichen Lampen zuzuordnen. Geht das?

    Viele Grüße
    Christian

    Reply
    • Philipp

      Philipp

      11. Mai 2017

      Hi,
      das mit den Gruppen geht nach meinem Verständnis nicht. Über die API sieht man halt nur einzelne Lampen.

      Toggeln ist möglich, dazu musst du per Script vorher den Zustand auslesen und dann den jeweils anderen setzen. Wie man generell den Zustand eines Geräts über eine API ausliest, habe ich hier beschrieben: https://www.technikkram.net/2017/05/zustand-eines-yamaha-receivers-per-homematic-auslesen Das Script muss natürlich angepasst werden, insbesondere der Teil, an dem der String zerlegt wird.

      Hoffe, du kannst mit der Antwort was anfangen ;)

      Reply
  • Peter

    8. Mai 2017

    [
    {
    „error“: {
    „type“: 2,
    „address“: „“,
    „description“: „body contains invalid json“
    }
    }
    ]

    Reply

Schreibe einen Kommentar