Eines der schönsten Seiten von der Hue Bridge ist, dass man es mit einer API steuern kann. Das ist nicht selbstverständlich. Ich habe zum Beispiel ein Gerät von meross bestellt und musste leider feststellen, dass diese weder von der Hue angesteuert werden können, noch dass eine API Schnittstelle verfügbar ist. Es andere Hersteller bieten keine direkte API an, sondern die Bridge muss zur Implementierung eines APIs geflasht werden.
Um Zugang zur Hue Bridge zu haben, benötigt ihr als erstes die IP Adresse der Bridge und einen API Key. Wie ihr diese bekommen könnt, ist hier aufgeführt:
Python Code
Ich habe die folgende Funktion geschrieben, um mit einem Aufruf alle Lampen eines bestimmten Zimmers an oder aus zu schalten.
import requests
import json
bridge_ip = "192.168.1.185"
bridge_username = "3ds6YY8ZBbjXfEcAcLGAjpdquw9TkEvRP7hyYNeX"
# Beispiel:
# turn_on_group('kitchen')
def turn_on_group(where):
groups = { 'livingRoom': 1, 'kitchen': 2, 'bedRoom': 3 }
group_id = groups[where]
payload = {"on":False}
headers = {'content-type': 'application/json'}
r = requests.put("http://"+bridge_ip+"/api/"+bridge_username+"/groups/"+str(group_id)+"/action", data=json.dumps(payload), headers=headers)
# Beispiel:
# turn_off_group('kitchen')
def turn_off_group(where):
groups = { 'livingRoom': 1, 'kitchen': 2, 'bedRoom': 3 }
group_id = groups[where]
payload = {"on":False}
headers = {'content-type': 'application/json'}
r = requests.put("http://"+bridge_ip+"/api/"+bridge_username+"/groups/"+str(group_id)+"/action", data=json.dumps(payload), headers=headers)
Erklärung
Bibliotheken
Ihr benötigt die Requests und die JSON Bibliothek. Mit der Requests Bibliothek könnt ihr HTTP Requests erstellen und absenden und mit der JSON Bibliothek könnt ihr Python Listenelemente in JSONS konvertieren und vice versa.
bridge_ip und bridge_username
Die IP benötigen wir, um die Bridge anzusprechen und den Benutzernamen (API Key) um uns zu authentifizieren.
groups
Philips Hue verwaltet deine Zimmer und Gruppen unter „groups“. Diese Variable dient dazu, dass ihr nicht alle group ID’s auswendig lernen müsst, sondern namentlich nennen könnt.
Alle Groups (groups) auflisten
Ihr könnt alle Gruppen mit einem einfachen GET Request von der Hue Bridge anfordern. Hierzu müsst ihr einfach nur die folgende Abfrage machen:
http://{HUE_IP}/api/{API_KEY}/groups/
das würde dann zum Beispiel so aussehen:
http://192.168.1.185/api/vdhv897deszhseugh0seg/groups/
Ihr könnt diese Abfrage auch ganz normal im Webbrowser öffnen, jedoch empfehle ich euch einen REST Client zu nutzen da dies die Ansicht vereinfacht. Ich empfehle Nightingale REST API Client. Als Antwort bekommt ihr eine JSON:
{
"1": {
"name": "Schlafzimmer",
"lights": [
"1",
"2"
],
"sensors": [],
"type": "Room",
"state": {
"all_on": false,
"any_on": false
},
"recycle": false,
"class": "Bedroom",
"action": {
"on": false,
"bri": 14,
"ct": 413,
"alert": "lselect",
"colormode": "ct"
}
},
"2": {
"name": "Wohnzimmer",
"lights": [
"3"
],
"sensors": [],
"type": "Room",
"state": {
"all_on": false,
"any_on": false
},
"recycle": false,
"class": "Living room",
"action": {
"on": false,
"bri": 144,
"ct": 443,
"alert": "lselect",
"colormode": "ct"
}
}
Wir ihr seht, hat mein Schlafzimmer die ID 1 und mein Wohnzimmer die ID 2. Ich würde das entsprechend im Code einbinden und dadurch diese Zimmern einfach ansteuern können.
Wenn ihr noch weitere Fragen zu der API oder den Python Scripts habt, würde ich mich freuen, wenn ihr mich hierzu anschreibt. Bis dahin. Happy coding.