PhilIPS hue LED-Leuchten

Moin…

… ich mach dann mal den Startschuss was die hue Led’s von Phillips angeht.
Was wird benötigt?

  1. Die IP-Adresse der hue-Bridge. Die zu bekommen sollte jeder alleine schaffen! :slight_smile:
  2. Diese paar Zeilen im Skript zum erstellen eines Users und einer Device um einen API-Key zu bekommen.

Los geht’s…

Neues Skript erstellen und Skript aus diesem Post einfügen.

Benutzername eingeben (Name eigentlich egal… er wird später nicht mehr benötigt, da aus dem Namen ein „KEY“ generiert wird.

Devicenamen eingeben unter der „IPS“ in der Bridge registriert werden soll. Der Name wird später nicht mehr benötig, hilft aber beim wiederfinden des KEYS auf der Übersichtsseite der Bridge.

Skript ausführen und innerhalb 10 Sek. den Button auf der Bridge drücken!!

Nach den 10 Sekunden sollte folgende Rückmeldung kommen:

{"success":{"username":"e1229bab1c271d1f1796cb0c52ab9933"}}

Achtung: Der Key oben ist nur ein Beispiel!!

Euren KEY kopieren, notieren oder merken! ( WICHTIG!! ).

Sollte irgendwas mit ‚error‘ als Rückmeldung kommen, einfach noch einmal probieren!

Nächster Step: API-KEY prüfen.
Im Browser folgendes einfügen um den Key zu checken:

http://IP der BRIDGE/api/DEIN KEY/ und enter…

Dann solltet Ihr eine Antwort mit diversen Daten Eurer Bridge etc. bekommen.
D.h. der Key funzt und der Spass kann beginnen !!

Das hier ist ein 1. Wurf der Funktioniert! Es ist nicht das schönste Skript, aber darauf kann aufgebaut werden.


<?

/*

	PhilIPS hue LED User und Device Registierung
	Ersteller: peterchrisben
	Datum: 08.02.2013
	Version: 0.1
	
*/


$bridge_ip = 'xxx.xxx.xxx.xxx'; // Hier die IP der Bridge eintragen
$username = 'HansiHinterseher'; // Hier einen Benutzername eintragen...
$devicename = 'PhilIPShue'; // ... oder IPS API etc.



function setUsername($username)
    {
        // Hash username if not already in hash format
        if (!preg_match('/[a-f0-9]{32}/i', $username)) {
            $username = md5($username);
        }

        return $username;
    }


			$json_url = 'http://'.$bridge_ip.'/api';
//			$json_string = '{"transitiontime":10,"xy":['.(rand(1,900)/1000).','.(rand(1,900)/1000).'],"bri":'.rand(1,255).',"ct":'.rand(1,400).'}';
//			$json_string = '{"on":false}';
         //$json_string = '{"on":true, "bri": 150}';

			$json_string = '{"username": "'.setUsername($username).'", "devicetype": "IPS API"}';




			$ch = curl_init( $json_url );
			// Configuring curl options
			$options = array(
							CURLOPT_RETURNTRANSFER => true,
							CURLOPT_CUSTOMREQUEST => 'POST', // -X
							CURLOPT_HTTPHEADER => array('Content-type: application/json') ,
							CURLOPT_POSTFIELDS => $json_string
							);

			sleep(10);

			// Setting curl options
			curl_setopt_array( $ch, $options );

			// Getting results
			$result =  curl_exec($ch);


		print $result."
";




?>

So… weiter im Text.

Hier mal kurz und knapp erklärt wie Ihr eine von den Leuchten steuert.

Gebt im Browser folgendes ein:

[http://IP der BRIDGE/api/DEIN KEY/lights](http://IP der BRIDGE/api/DEIN KEY/lights)

Ihr bekommt eine Liste mit Namen und Nummern der Leuchten. Die Nummern der Leuchten könnt Ihr auch in der hue
-App sehen. Die Nummern sind identisch!

Im Skript folgendes anpassen:

  • Nummer der Leuchte die Ihr schalten möchtet
  • IP der BRIDGE
  • Dein KEY <---- Der API-KEY aus dem 1. Skript

Dann auf „Ausführen“ klicken und die Lampe sollte einschalten und auf mittlere Helligkeit gehen.

Diese 2 Parameter sind die Interessanten! Einfach mal verändern und schauen was passiert.


$json_string = '{"bri":130, "on":true}'; }

Zum ausschalten einfach dies einfügen und ausführen:


$json_string = '{"on":false}'; }

Hier das Skript:


<?
/*

    PhilIPS hue LED Leuchte Schalten
    Ersteller: peterchrisben
    Datum: 08.02.2013
    Version: 0.1
    
*/
$bridge_ip = 'IP der BRIDGE';
$lamp_no= 3; // Hier die Nummer der Leuchte die geschaltet werden soll
$key='DEIN KEY'; 


			$json_url = 'http://'.$bridge_ip.'/api/'.$key.'/lights/'.$lamp_no.'/state';

			$json_string = '{"bri":254, "on":true}'; } // "bri" = Helligkeit (0-254) "on" = ein/aus (true/false)

			$ch = curl_init( $json_url );
			// Configuring curl options
			$options = array(
							CURLOPT_RETURNTRANSFER => true,
							CURLOPT_CUSTOMREQUEST => 'PUT', // -X
							CURLOPT_HTTPHEADER => array('Content-type: application/json') ,
							CURLOPT_POSTFIELDS => $json_string
							);


			// Setting curl options
			curl_setopt_array( $ch, $options );

			// Getting results
			$result =  curl_exec($ch);


		print_r ($result);



?>

Cool, das läuft schon mal bei mir. Für die Antworten: kennst du json_decode?

Sehr schön!!! Wie gesagt… sollte ne Starthilfe werden und hoffe das hier Gemeinsam was COOLES draus wird.

jsons_decode kenne ich und hatte kurz damit gespielt. Hatte aber gestern nicht soviel Zeit!!

Also wenn Du da was hast nur her damit! Könnten ja sonst oben immer den aktuellen Stand der Dinge posten!

Hier ist noch ein Link zu einer hue-API-DOKU.
http://blog.ef.net/2012/11/02/philips-hue-api.html

Gruß,
Chris

Weisst du schon wie Farben gesetzt werden können und wie man das nach RGB zur Anzeige in IPS umwandelt?

Jupp… Farbe setzt Du so:

$json_string = '{"hue": 57890, "sat": 254}';

„hue“ ist die Farbe…
„sat“ die Sättigung…

Du musst mal nach HSL to RGB Googeln… Man könnte auch HSL zu HEX bzw. HEX zu HSL benutzen und dann das RGB-Profil für die Int-Variable nehmen, das ist m.M. nach HEX.

Hi Peter,

als erstes einmal vielen Dank für die bisherige Arbeit, hat mir viel Zeit gespart.

Was mich nervte war die relativ schnelle Fade Zeit, kann man anpassen:

$json_string = '{"transitiontime": 50, "ct": 500, "bri": 254}';

sorgt dafür das:

„transitiontime“ = innerhalb von 50 x 1/10 Sekunden, also 5 Sekunden
„ct“ = Color Temperature (nur für weiss gültig) auf den Wert 500 = max. Warmweiss gesetzt wird,
untere Grenze liegt bei 154, entsprechend Kaltweiss.
„bri“ ist bereits bekannt.

Als Alternative zum „ct“, bzw. „hue“ gibt es noch die Möglichkeit die Farben gemäss CIE 1391 zu setzen mit dem Parameter: „xy“, da fehlt mir aber die Ahnung.

Zum Blitzen:

„alert“: „select“, blitzt einmal,
„alert“: „lselect“, blitzt andauernd,
„alert“: „none“, schaltet das Generve wieder ab.

mfg

BerndJ

Habe jetzt mal ein erstes Grundgerüst zusammengezimmert. Lampen werden automatisch ausgelesen, in IPS angelegt und schaltbar gemacht. Unterstützt werden on, bri, sat, hue und ct.

HueWF.PNGHue2.PNG

Zur Installation Kategorie „Hue“ anlegen, alle Skripte importieren und „hue_Include“ anpassen. Im Zweifel zuerst hue_Login durchführen. Dann kann mit hue_Query der Status der Lampen abgefragt werden - ich lasse das aktuell alle 10 Sekunden laufen.

Ich habe für die Farbtemperatur („ct“) ein Profil "hue_Temperature mit möglichen Werten von 153 bis 500 sowie Farbeigenschaft „Hue“ ein Profil „hue_Hue“ angelegt. Ist aber alles noch nicht optimal.

hue_scripts-0.01.zip (3.82 KB)

Hat das jemand in Betrieb und Plan von der Farbsetzung? Das ist hier noch stark Verbesserungswürdig, ich komme aber nicht weiter. :frowning:

Moin!
Was meinst genau?!

Hat jemand meine Skripte in Betrieb? und etwa bereits mit einem RGB-Fader o.ä. verheiratet?

Ich versuche im speziellen Szenen anzulegen. Mein Ansatz war, in der App alles entsprechend einzustellen, dann die Basis abfragen und genaue diese Parameter bei Szenenwahl wieder zu setzen. Geht aber leider nicht richtig.

Bei Abfrage erhalteich bspw.: {„lights“:{„1“:{„state“: {„on“:true,„bri“:207,„hue“:722,„sat“:236,„xy“:[0.6472,0.3310],„ct“:500,„alert“:„none“,„effect“:„none“,„colormode“:„hs“,„reachable“:true}, „type“: „Extended color light“, „name“: „Eßtisch 1“, „modelid“: „LCT001“, „swversion“: „65003148“, „pointsymbol“: { „1“:„none“, „2“:„none“, „3“:„none“, „4“:„none“, „5“:„none“, „6“:„none“, „7“:„none“, „8“:„none“ }},„2“: …

Wenn ich jetzt ‚„on“:true,„bri“:207,„hue“:722,„sat“:236,„xy“:[0.6472,0.3310],„ct“:500,„alert“:„none“,„effect“:„none“,„colormode“:„hs“‘ an die Lampe sende, erscheint trotzdem nicht die richtige Farbe.

Stehe auf dem Schlauch - hat jemand eine Idee?

Danke & Gruß, Axel

Moin… das brauchst Du nicht alles senden. Nur die Parameter die Du ändern willst. Colormode auch nicht. Je nach dem was Du der Lampe sendest schreibt Sie die den aktuellen Colormode!

Ich probiere das nachher auch mal und schreib dann noch mal. Das sollte aber eigentlich kein Problem sein!

Ich wollte das genau so lösen, weil es ja leider nicht möglich ist die Hue-Szenen direkt abzurufen.

Gruß,
Peter

Stimmt, das ist besser.

Bei mir steht die Eigenschaft ‚reachable‘ immer auf True - auch wenn ich die Teile stromlos schalte. Ist dem bei euch auch so?

Hallo Zusammen,

axelp
Bei mir steht die Eigenschaft ‚reachable‘ immer auf True - auch wenn ich die Teile stromlos schalte. Ist dem bei euch auch so?

Ja, das Verhalten ist seltsam. Bei mir sind sogar im Karton liegende Lampen „AN“, waren nur kurz eingeschaltet zum anmelden…
Viele Grüße aus OBC
Udo

Obacht, liegt der Karton auf dem Induktionsherd???

Obacht, liegt der Karton auf dem Induktionsherd???

Danke für den Tip!!
Hatte schon WLAN-AP und DECT-Base in Verdacht. :smiley:

Aber Spaß beiseite, die Dinger sind schon cool, musste direkt ein zweites Starterset kaufen. Mittels „lampstealer“ liessen sich sich die Neuen auch problemlos an der vorhandenen Bridge anmelden, steuern per CURL aus der Linux-Shell geht auh schon gut. Bin dabei meiner Asterisk das Steuern der HUEs beizubringen: grün blinken=VIP-Anrufer, blau=Bekannte, gelb=Rest und rot für unterdrückte Nummern usw… Man müsste einfach mehr Zeit haben…
LG
Udo

Moin… was zahlst Du für ein Starterset?!

Der „günstigste“ Preis is EUR 199 im Apple Shop. Trau nur nicht der Verfügbarkeitsanzeige: Bestellt mit angezeigter Lieferzeit von 6 Wochen, tag’s darauf kam ein netter DHL-Express Mensch mit einer Sendung aus Tschechien. Bei meinem Kollegen ging es genau so schnell, er steuert mittlerweile seine Ph-Living-Colors mit der HUE-Bridge.
-Udo