Anleitung: WakeUp Light mit Deconz / Philips Hue

  • Da die Frage immer wieder aufkam und der Smartapfel Artikel nicht bei jedem richtig funktioniert, klaue ich mal die hervorragende Anleitung von to0b und passe sie dementsprechend an, um ein WakeUp Light mit Philips Hue oder Deconz zu erstellen.


    Ziel ist, über einen gewissen Zeitraum (hier mal 30 Minuten) das Licht in einem Raum langsam, aber flüssig auf 100% zu fahren.


    Grundlegende API Bedienung

    1. API Client

    Als erstes benötigt man einen API Client. Ich nutze für OS X den Insomnia.rest Client.

    Philips bietet zwar auf der Hue Bridge einen eigenen Client an, dieser ist jedoch bei größeren Abfragen umständlich.

    http://<bridge ip address>/debug/clip.html

    2. API Benutzer anlegen

    Dazu über den API Client eurer Wahl folgendes absetzten:

    Methode: POST


    URL: http://<bridge ip address>/api


    Body: {"devicetype":"MyApp"}



    Es folgt die Aufforderung den Link Button auf der Hue Bridge zu drücken.


    Nachdem der Button gedrückt wurde, wird die Abfrage aus 2.1 erneut ausgeführt und ihr solltet nun einen Benutzernamen angezeigt bekommen:

    [{ "success": { "username": "XXXXXXXXXXXXXXXXXXXXXXXXXXX" }}]


    Nun müsst ihr den Username heraus kopieren und mit in die URL einbauen, damit ihr Authentifiziert seid und weitere Abfragen ausführen könnt:

    http://<bridge ip address>/api/XXXXXXXXXXXXXXXXXXXXXXXXXXX


    3. Abfragen

    Als Test fragen wir nun einfach alle Lampen mit folgendem Befehl ab:

    Methode: GET

    URL: http://<bridge ip address>/api/XXXXXXXXXXXXXXXXXXXXXXXXXXX/lights

    Body:


    Es sollten nun alle Lampen im JSON Format ausgegeben werden. Beispiel:


    Einzelne Lampen werden dann einfach mit der jeweiligen Nummer in der URL angesprochen:

    Methode: GET

    URL: http://<bridge ip address>/api/XXXXXXXXXXXXXXXXXXXXXXXXXXX/lights/1

    Body:


    Die gleichen GET Abfragen kann man für alle Ressourcen auf der Bridge ausführen:

    Sensoren : /sensors/

    Regeln: /rules/

    Gruppen: /groups/

    Szenen: /scenes/

    Zeitpläne: /schedules/


    4. Ändern

    Über die Anfragen kann man ebenso Ressourcen ändern.


    Beispiele:


    Einschalten einer Lampe:

    Methode: PUT

    URL: http://<bridge ip address>/api/XXXXXXXXXXXXXXXXXXXXXXXXXXX/lights/1/state

    Body: { "on": true }


    Ausschalten einer Lampe:

    Methode: PUT

    URL: http://<bridge ip address>/api/XXXXXXXXXXXXXXXXXXXXXXXXXXX/lights/1/state

    Body: { "on": false }


    Anpassen der Helligkeit auf 100%:

    Methode: PUT

    URL: http://<bridge ip address>/api/XXXXXXXXXXXXXXXXXXXXXXXXXXX/lights/1/state

    Body: { "on": true, "bri": 254 }


    Gruppe auf 100% Helligkeit in Blau einschalten:

    Methode: PUT

    URL: http://<bridge ip address>/api/XXXXXXXXXXXXXXXXXXXXXXXXXXX/groups/0/action

    Body: { "on":true, "bri": 254, "sat": 255, "hue": 46920 }


    Eine Liste mit den Parametern findet ihr hier: http://www.burgestrand.se/hue-api/


    Dies sollte euch nun ein bisschen ein Grundverständnis geben, um zu sehen, wie man über die API arbeitet.


    Weitere Hilfreiche Anleitungen für die API findet hier:

    https://developers.meethue.com/documentation/core-concepts

    http://www.burgestrand.se/hue-api/


    Hue API mit Homebridge-hue nutzen

    Kommen wir nun zu den Funktionen, die man über die Hue API in Kombination mit dem hue Plugin nutzen kann.



    Ich habe mir zum Beispiel in HomeKit einen virtuellen Switch über die Hue API angelegt, der über eine Regel alle Lampen für 10 Sekunden in der Farbe Rot blinken lässt. Dies hatte ich zuerst über das IFTTT Plugin realisiert, aber die Reaktionszeit war mir dort teilweise deutlich zu langsam.


    1. CLIPGenericFlag anlegen

    Zuerst muss man einen neuen Sensor anlegen:


    Methode: POST

    URL: http://<bridge ip address>/api/XXXXXXXXXXXXXXXXXXXXXXXXXXX/sensors

    Body:

    Code: Body
    { 
        "manufacturername": "homebridge-hue", 
        "modelid": "CLIPGenericFlag", 
        "name": "WakeUp Light", 
        "swversion": "1", 
        "type": "CLIPGenericFlag", 
        "uniqueid": "WakeUp Light"
    }

    Es folgt eine success Rückmeldung mit der entsprechenden Sensor Nummer /sensors/XX/. Diese Nummer merken!


    Diesen Sensor kombiniert man nun mit einer Regel, was der Sensor auslösen soll:

    Methode: POST

    URL: http://<bridge ip address>/api/XXXXXXXXXXXXXXXXXXXXXXXXXXX/rules

    Body:


    Achtung, folgendes müsst ihr selber anpassen:

    1. Sensor Nummer 2x anpassen mit der Nummer, die ihr im oberen Schritt erhalten habt! "address": "/sensors/XX/state"
    2. "address": "/groups/0/action/", bedeutet, dass ALLE Lampen geschaltet werden. Anstatt der 0 müsst ihr hier die Gruppennummer eintragen, die ihr hochfahren wollt.
    3. "transitiontime": 18000 sind 30 Minuten in Dezisekunden. Es besteht ein Limit von 65535ds, also nicht übertreiben!


    2. Homebridge-Hue Plugin config anpassen

    Um den Switch in HomeKit angezeigt zu bekommen muss man nun die Homebridge config.json anpassen.


    In der Hue Platform:

    Sensoren müssen aktiviert sein

    "sensors": true,



    Ebenso darf "CLIP" nicht als "excludeSensorTypes" gesetzt sein.

    Ich habe bei mir nur folgende Sensoren ausgeschlossen:

    "excludeSensorTypes": ["CLIPPresence", "CLIPGenericStatus", "Geofence"]



    Nach einem Neustart der Homebridge sollte nun in HomeKit ein Schalter mit dem Namen des zuvor angelegten CLIPGenericFlag erscheinen.


    Dies als kleines Beispiel, was mit der API und homebridge-hue zusätzlich möglich ist.

  • Natürlich ist die API sehr mächtig. Für ein normales Wake Up Light würde ich aber einfach eine Szene erstellen, die Transition Time enthält. Ist vom Aufwand her doch geringer und lässt sich dynamischer anpassen.