Philips HUE-Api ansprechen

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
LuckyJoe
Posts: 265
Joined: 02 Oct 2013, 09:52

Philips HUE-Api ansprechen

16 Dec 2016, 14:51

Hallo zusammen,

ich beschäftige mich mit dem Lichtsystem "Philips HUE", das eine API zum Programmieren zur Verfügung stellt. Bisher habe ich ganz einfache Kommandos über Batch-Dateien bewerkstelligt, die über die lokale Webadresse an die Bridge (Kommandozentrale) weitergegeben werden. Dazu wird das Kommandozeilentool "cURL.exe" verwendet. Zum "Programmieren" benötigt man einen "Key", den man nach einer Registrierung erhält (im Folgenden "APIKey"). So kann ich beispielsweise über folgendes Kommando die Helligkeit (hier: 160) einer bestimmten Lampe (hier: 8) verändern:

Code: Select all

@echo off
set Licht08 = http://192.168.10.177/api/<APIKey>/lights/8/state
curl -X PUT -d "{\"on\":true, \"bri\":160}" %Licht08% >>NUL
Das kann ich auch nach AHK übertragen:

Code: Select all

#NoEnv
#SingleInstance force
HueUrl  = http://192.168.10.177
HueKey  = ...<APIKey>
HueAPI  = %HueURL%/api/%HueKey%
Licht08  = lights/8/state
Run, cURL -X PUT -d "{\"on\":true`, \"bri\":160}" %HueAPI%/%Licht08%,, hide
Ich würde aber lieber ohne das Tool "curl.exe" direkt über Autohotkey arbeiten (z.B. um später mit Schiebereglern das Licht zu dimmen oder ähnliches). Bei meinen Recherchen bin ich bisher auf das Tool "WinHttpRequest" gestoßen, aber ich komme mit meinem bescheidenen Basiswissen damit nicht zurecht. Gibt es eine einfache Möglichkeit, wie ich die Kommandos direkt über Autohotkey an die Bridge senden kann?
Notfalls: wie muss ich "WinHttpRequest" in meinem Script ansprechen, wenn ich es über "#Include" eingebunden habe und mein obriges Beispiel damit umsetzen will? Mir fehlt einfach die richtige Syntax dafür.

Danke im Voraus.
Lucky Joe
Herzliche Grüße aus dem Rheinland
Lucky Joe
just me
Posts: 7114
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Philips HUE-Api ansprechen

16 Dec 2016, 16:48

Das ist wirklich gruselig. Wie lange wird es wohl dauern, bis Dir ein russischer Hacker (siehe aktuelle Berichterstattung aus den USA) das Licht abdreht?

Edit: Missverständiches Smiley entfernt.
User avatar
nnnik
Posts: 4461
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Philips HUE-Api ansprechen

16 Dec 2016, 16:56

Das Hypertext Transfer Protocol oder auch kurz HTTP genannt ist das Hauptübertragsungsprotokoll des Internets.
Bei dem Protokoll stellt ein Server die Möglichkeit bereit sich mit ihm auf eine gewisse Weise übers Internet zu verbinden und eine Anfrage zu senden ( Request ) woraufhin der Server Antwort sendet.
Mit der WinHTTPRequest API kannst du diese Requests auch senden.
WinHTTPRequest ist ein COM Object das du über WinHTTPRequest := ComObjCreate( "WinHttp.WinHttpRequest.5.1" ) erzeugen kannst.
Danach kannst du über verschiedene Funktionen kontollieren mit welchem Gerät du dich verbinden willst, wie du dich verbinden willst, wer genau du bist und was genau du senden willst.
Ein kurzer Blick ins Internet hat mir verraten, dass du mit der Bridge über JSON kommunizieren kannst. ( Javascript Object Notation ( eine Textform für Objekte ( eine ziemlich schöne wenn du mich fragst ) ) )
Ich werde mich morgen mal eingehender damit beschäftigen ( das Thema klingt ziemlich interessant )
Hier ist ein ziemlich cooler Artikel darüber, wie jemand einen Mikrocontroller mit Bewegungssensor in das System eingebunden hat:
http://www.makeuseof.com/tag/control-ph ... on-sensor/
Das ganze sollte schön in AHK umsetzbar sein.
Recommends AHK Studio
User avatar
LuckyJoe
Posts: 265
Joined: 02 Oct 2013, 09:52

Re: Philips HUE-Api ansprechen

17 Dec 2016, 14:01

... Danke für das Lesen ... hier der erste erfolgreiche Schritt - die erste Lampe dimmt:

Code: Select all

#NoEnv
#SingleInstance, Force
#Persistent
#Include WinHttpRequest.ahk

HueUrl  = http://<IP-Adresse deiner Bridge>
HueKey  = <dein API-Key>
HueAPI  = %HueURL%/api/%HueKey%

; z.B. Lampe 12 ...
Licht12 = lights/12/state

; Helligkeit (1-254) der Lampe einstellen
L12Bri  = 240

URL  = %HueAPI%/%Licht12%
Body = {"on":true, "bri":%L12Bri%}

oHTTP := ComObjCreate("WinHttp.WinHttpRequest.5.1")
oHTTP.Open("PUT", URL , false)
oHTTP.SetRequestHeader("Content-Type", "application/json")
oHTTP.Send(Body)

Msgbox % oHTTP.ResponseText
<to be continued> ...
So, jetzt nur noch Schleifen für mehrere Lampen, neben Helligkeiten auch Farbwerte, dann noch Gruppen, Szenen, Zeitpläne, Sensoren, Alarme, Ereignisse, Regeln, Konfiguration, Fehlerbehandlung, Sicherheit nach außen und der übrige Kleinkram halt ;)

VG
Lucky Joe
Herzliche Grüße aus dem Rheinland
Lucky Joe
just me
Posts: 7114
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Philips HUE-Api ansprechen

17 Dec 2016, 17:51

Hallo,

wenn Du das etwas kompletter hast, könntest Du es in "Skripte und Funktionen" einstellen. Mein Sohn ist auch gerade dabei, sich dieses Lichtssytem zu installieren. Er würde sich bestimmt freuen (und ich mich auch, weil ich dann weniger Arbeit damit hätte!).

Grüße,
just me
User avatar
haichen
Posts: 467
Joined: 09 Feb 2014, 08:24

Re: Philips HUE-Api ansprechen

18 Dec 2016, 06:11

Den #include brauchst du nicht. Du hast ja direkt das com-objekt erzeugt.

"Das ist wirklich gruselig." ? Die ip-adresse ist eine private falls Du (just me) das gemeint hast. Russen kommen so jedenfalls nicht in das Netz. Hoffe ich. Oder war etwas anderes gemeint?

Finde ich übrigens klasse, dass man die Lampen so ansprechen kann!

haichen
just me
Posts: 7114
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Philips HUE-Api ansprechen

18 Dec 2016, 06:23

Hallo haichen,

'privat' ist das nur solange, bis jemand in das Netz kommt, über das die 'private' Adresse angesprochen wird.
User avatar
haichen
Posts: 467
Joined: 09 Feb 2014, 08:24

Re: Philips HUE-Api ansprechen

18 Dec 2016, 06:58

Hi, hab jetzt mal ein wenig gegoogelt. Hat wohl ein firmware update für die lampen gegeben. Jetzt soll alles sicher sein. Ansonsten - klar - ist man erstmal im Netz ist das hacken einfach.
Hoffentlich spioniert mich meine Kaffeemaschine nicht aus :-)
just me
Posts: 7114
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Philips HUE-Api ansprechen

18 Dec 2016, 07:14

Ich habe meine vom Netz getrennt, weil sie immer teuren Kaffee nachbestellt hat. ;)
User avatar
LuckyJoe
Posts: 265
Joined: 02 Oct 2013, 09:52

Re: Philips HUE-Api ansprechen

18 Dec 2016, 10:18

Hallo haichen,

danke für den Hinweis, dass ich #include gar nicht brauche ... so bin ich dann auch an die Dokumentation von WinHttpRequest gekommen. :roll:

Somit kann ich die Bridge auslesen (GET) und Befehle senden (PUT). Die Auswertung der Results steht noch an - und dann vielleicht das ganze in eine Oberfläche gießen. ... Naja, das braucht noch Zeit, aber die API ist eigentlich sehr gut kommentiert. Vielleicht setze ich das tatsächlich beizeiten mal etwas komplexer um.

VG - Lucky Joe
Herzliche Grüße aus dem Rheinland
Lucky Joe

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 4 guests