Hue per Skript ansprechen

Nachdem im letzten Artikel beschrieben wurde wie ich die IKEA Lampe Hue tauglich gemacht hab gibt es nun ein kleines Beispiel was man damit so machen kann.

Ziel ist es einen kleinen „Warp-Antrieb Simulator“ zu programmieren. Dazu wird ein kleines Skript benötigt. Da es für das Hue-System bereits eine fertige Python-Bibliothek gibt hab ich mich entschieden das Skript mit ebendieser Skriptsprache zu schreiben.

Erster Schritt ist daher natürlich das Python zu installieren (unter Debian/Ubunutu Linux: apt-get install python). Anschließend brauchen wir noch die Hue-Bibliothek „phue“. Die ist ebenfalls schnell mit „pip install phue“ installiert. Eine etwas ausführlichere Anleitung steht auf der entsprechende Projektseite.

Um die drei Hue-Leuchten jetzt Warp-Antriebmässig aufleuchten zu lassen schalten wir sie einfach der Reihe nach ein bzw. aus. Damit das nicht zu schnell abläuft ist jeweils eine kleine Verzögerung zwischen den Schaltvorgängen nötig. Außerdem definieren wir eine kurze „Transitiontime“ um keine harten Schaltvorgänge zu sehen zu kriegen. Wie bei dem echten Warp-Antreib soll das Leuchten sanft wechseln.
Um einen Nachleucht-Effekt zu simulieren werden die abgeschalteten Hues nicht direkt auf Helligkeit Null gesetzt sondern erst auf 50 und im zweiten Schritt auf 20. Zum Einschalten wird die entsprechende Hue auf 254 gesetzt (entspricht dann 100% Helligkeit).

Insgesamt sieht das ganze Skript folgendermaßen aus:

#!/usr/bin/python

from phue import Bridge
from time import sleep

b = Bridge('192.168.10.72')

# If the app is not registered and the button is not pressed, press the button and call connect() (this only needs to be run a singl
b.connect()

# Get the bridge state (This returns the full dictionary that you can explore)
b.get_api()

lights = b.get_light_objects('id')

# Define light parameters for all three bulbs
# Transitiontime is measured in 1/10 seconds. So 5 means half a second
#
oben = lights[2]
oben.transitiontime=5
oben.hue = 46920
oben.saturation = 180

mitte = lights[3]
mitte.transitiontime=5
mitte.hue = 46920
mitte.saturation = 180

unten = lights[1]
unten.transitiontime=5
unten.hue = 46920
unten.saturation = 180

while True:
   oben.brightness=254
   mitte.brightness=20
   unten.brightness=50
   sleep(0.6)
   oben.brightness=50
   mitte.brightness=254
   unten.brightness=20
   sleep(0.6)
   oben.brightness=20
   mitte.brightness=50
   unten.brightness=254
   sleep(0.6)

Im Betrieb schaut das Skript folgendermaßen aus: