als Ergänzung zu den bereits im Internet und hier im Forum veröffentlichten Scripten zur Ansteuerung der Philips Hue Bridge möchte ich hier an dieser Stelle auch meine Eigenentwicklung posten; vielleicht mag sie noch jemand anderem nützlich sein.
Beschreibung:
Die meisten bereits existierenden Scripte sind in TCL geschrieben und rufen daraus meist curl auf, um die entsprechende Anfrage per HTTP and die API der Hue Bridge zu senden.
Diese funktionieren soweit ganz gut. Das Laden der TCL und curl Binaries benötigt auf der nicht gerade mit Rechenleistung überschütteten CCU2 allerdings eine gewisse Zeit, so dass eine Anfrage ca. 650 ms benötigt. Da ich bei mir u.a. über einen Wandtaster die Lichtfarbe meiner Hue verändere, wollte ich dies noch etwas optimieren, um die an dieser Stelle auftretende Verzögerung so gering wie möglich zu halten.
Dazu habe ich ein Script gebastelt, welches komplett in der busybox Shell läuft, ganz ohne TCL. Der HTTP Aufruf erfolgt zudem durch Ausführen des leichtgewichtigen busybox telnet, so dass komplett auf 3rd Party Binaries wie z.B. curl verzichtet werden kann.
Dadurch benötigt eine Anfrage mit diesem Script nur noch rund 100 ms.
Das Script enthält neben der Implementierung mittels telnet zusätzlich auch kompatible Alternativen mittels netcat oder dem klassischen curl.
Installation:
Der Inhalt des angehängten tar Archivs ist nach /usr/local/addons/hue zu entpacken.
Anschließend sind in der Konfigurationsdatei config.sh die Variablen HUE_BRIDGE und HUE_USER entsprechend anzupassen.
Das Script hue.sh sollte als ausführbar gekennzeichnet sein (chmod +x).
Verwendung:
Mit dem Script hue.sh können generische Anfragen an die Hue API geschickt werden. Dazu ist die jeweilige API URL sowie eine Auflistung von key/value Paaren mit zu übergeben. Das Script erstellt daraus die JSON Daten sowie den HTTP Request. Einen Aufruf aus HomeMatic Scripten heraus realisiert man am besten mittel CUxD cmd_exec.
Code: Alles auswählen
Usage: /usr/local/addons/hue/hue.sh <API URL> [<key1> <val1> [<key2> <val2>...]]
Common API URLs:
lights/<light>/state
on: true/false (State)
bri: 0-254 (Brightness)
hue: 0-65535 (Hue)
sat: 0-254 (Saturation)
transitiontime: 0+ (1/10 sec)
groups/<group>/action
on: true/false (State)
bri: 0-254 (Brightness)
hue: 0-65535 (Hue)
sat: 0-254 (Saturation)
Code: Alles auswählen
# Ausschalten der Hue Lampe 1:
hue.sh lights/1/state on false
# Setzen von Helligkeit, Farbton und Sättigung der Hue Lampe 1:
hue.sh lights/1/state on true bri 254 hue 3000 sat 254 transitiontime 0
# Ausschalten der Gruppe 1:
hue.sh groups/1/action on false
Ein HomeMatic Script, wleches eine Gruppe von Hue Lampen anhand von HomeMatic Systemvariablen parametrisiert, könnte exemplarisch wie folgt aussehen:
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/usr/local/addons/hue/hue.sh groups/1/action on " # dom.GetObject("Hue.1.Zustand").Value().ToString() # " bri " # dom.GetObject("Hue.1.Helligkeit").Value().ToString(0) # " hue " # dom.GetObject("Hue.1.Farbton").Value().ToString(0) # " sat " # dom.GetObject("Hue.1.Saettigung").Value().ToString(0) # " transitiontime 5");