«

»

Apr 14 2016

Hyperion Ambilight per Philips Hue Tap steuern

Im letzten Beitrag habe ich über den Bau meines Ambilights berichtet. Ein interessanter Artikel zum Thema Sonos steuerung per Philips Hue Dimmer auf iphone-ticker.de brachte mich auf die Idee etwas ähnliches mit meinem Philips Hue Tap und dem Raspberri Pi zu machen.

Um die Philips Hue Bridge auslesen macht es Sinn sich erstmal mit der Philips Hue API vertraut zu machen. Dort findet man die Informationen wie man zunächst einen autorisierten User anlegt.

Mit dem Pythonscript prüfe ich ob die Taste mit dem Code 18 am Philips Hue Tap in den letzten 60 Sekunden gedrückt wurde. Ist dies der Fall schaltet ein Shellscript Hyperion ein.

Ich habe das vom ipohen-ticker freigegebene Python Script als Grundlage genommen und entsprechend modifiziert. Ich muss dazusagen das ich mich vorher noch nie mit Python beschäftigt habe. Aber am Ende habe ich dieses Script gebastelt:

#!/usr/bin/env python
import urllib, json, datetime, time, os
import subprocess
import shlex

#Hue Bridge IP Adresse und User
#--------------------------
url = 'http://IPADRESSE/api/USERNAME'
response = urllib.urlopen(url)
data = json.loads(response.read())
button = data['sensors']['2']['state']['buttonevent']
klickzeit = data['sensors']['2']['state']['lastupdated']
klickzeitunix = time.mktime(datetime.datetime.strptime(klickzeit, "%Y-%m-%dT%H:%M:%S").timetuple())
timestamp = int(time.time())

light1 = data['lights']['1']['state']['on']
light2 = data['lights']['2']['state']['on']
light3 = data['lights']['3']['state']['on']
light4 = data['lights']['4']['state']['on']
light5 = data['lights']['5']['state']['on']

#Hyperion Start und Stop befehle
#-------------------------------
hyperiontoggle = "./hyperion_toggle.sh"
args = shlex.split(hyperiontoggle)

if (timestamp-klickzeitunix-7185 > 0 and timestamp-klickzeitunix-7185 < 60):
    if (button == 18):
    	output = subprocess.call(args)
        

Das dazugehörige Shellscript sieht folgendermaßen aus:

#!/bin/bash
if [ `sudo service hyperion status | grep running | wc -l` = 1 ]
then
    hyperion-remote -c black
    sleep 3
    sudo service hyperion stop
else
    sudo service hyperion start
fi

Das Pythonsript muss  dann nur noch per crontab jede Minute ausgeführt werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Sie können diese HTML-Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>