KNX mit Hue koppeln

Guten Tag,

Ich habe vor zwei Tagen IP Symcon gekauft und stehe deshalb noch ganz am Anfang.

Bisher habe ich meine bestehende KNX Produkte erfolgreich integriert. Die Kommunikation zwischen IPS und KNX Bus funktioniert reibungslos und über das Webfront sehe ich auch alles.

Mein zweiter Schritt war über diesen Beitrag von PeterChrisben
http://www.ip-symcon.de/forum/threads/20855-PhilIPS-hue-LED-Leuchten

meine Philips Hue Leuchten zu integrieren, was dank seiner super arbeit auch geklappt hat.
Ich kann alle Lampen tadellos über IPS steuern.

Mein dritter Schritt ist nun die Philips Hue Lampen über meine KNX Taster zu steuern. Und zwar nicht durch einen KNX Aktor Spannungsfrei schalten sondern einfach nur über die Bridge die Hue direkt ausschalten.

Natürlich sollte dabei der Status meiner KNX Taster mit dem Status der Hue übereinstimmen.

Mein Versuch war nun folgender:


<?
$var1 = GetValueBoolean(23688  /*[Haus\Licht Garderobe\Value]*/); // KNX Taster
if (($var1) == true){
SetValue(57271  /*[Haus\Garderobe\Garderoben Licht\Status]*/, true);  // Hue Licht
}
?>

Im Prinzip funktioniert das auch bestens! Führe ich das Script manuell aus wird die Hue sofort eingeschaltet. Das signalisiert mir auch nochmal das Webfront.
Nur leider bleibt die Lampe selber dunkel.

Kann mir da bitte jemand einen Denkanstoß geben?
Oder bin ich komplett auf dem falschen Weg?

Vielen Dank!

Moin…

hast Du die ETS? So das Du Gruppenadressen programmieren kannst?!
Wie of führst Du das Status-Skript aus um die Hue’s abzufragen?!

Ich kann sonst mal posten wie ich das mache!?

Gruß,
Peter

Ich schätze Du brauchst nur das Triggern des Scriptes auslösen, entweder so:

<?
if (($_IPS['SENDER']=='WebFront') OR ($_IPS['SENDER'] == "RunScript"))
{

SetValue(57271  /*[Haus\Garderobe\Garderoben Licht\Status]*/,(GetValueBoolean(23688  /*[Haus\Licht Garderobe\Value]	*/));  // Hue Licht

}
?>

oder in der Variabel das Script eintragen oder als auslösendes Ereignis des Scripte die Variablenänderung von 23688.
Achso: und im Script das Schalten der HUE-Instance eintragen, das fehlt überhaupt, iM gibst Du nur Deiner 57271 den Status der Variablen, nicht aber der HUE Instance.
Gruß Helmut

Ja ich habe die ETS4.

Sorry waren wohl etwas zu wenig Details.
Ich habe eine Gruppenadresse ihn der alle meine Taster sind. Wenn diese Gruppenadresse ein true bekommt soll die Hue Leuchte angesteuert werden und umgekehrt…

Wäre klasse wenn du mir da mal ein Beispiel geben könntest.

Wie oft ich das Script ausführe? uff hmmm ehhmm das schau ich mir jetzt mal etwas genauer an :confused:

So… hier mal wie ich das mache mit den HUE’s und KNX-Tastern.

Ich arbeite mit 2 Gruppenadressen pro HUE. Eine GA zum schalten per KNX-Taster und eine als RÜCKMELDE-GA. Warum?
Das hat zwei Gründe.

  1. Ich habe mir eine iPad-Visu mit OPENREMOTE gebaut. Dieses braucht für Schalter eine SCHALT- und eine STATUS-Gruppenadresse.

  2. Meine restliche KNX-Installation ist ebenfalls so aufgebaut. Ich habe ein SCHALT- und eine RÜCKMELDE-GA.

So… nun zum Skript.

Ich habe mir beim HUE-STATUS Skript ( Skript-timer bei mir alle 4 Sekunden) bei der entsprechende Lampe folgenden Eintrag gemacht.


//LAMPE#1
  	if (GetValue(11030 /*[PhilIPS hue\LAMP 1 (Bodenlampe)\on]*/)!=($LAMP1_on))
	  		{
	  			SetValue(11030 /*[PhilIPS hue\LAMP 1 (Bodenlampe)\on]*/,$LAMP1_on);
	  			EIB_Switch(11441 /*[EIB/KNX\EG ESSBEREICH\BODENLAMPE HUE SCHALTEN  RÜCKMELDE]*/,$LAMP1_on);

Damit wird, wenn die Lampe Ein oder Aus geschaltet wird (Taster,Webfront, Hue-App etc.) der entsprechende Zustand auf den Bus gesendet und zwar an die RÜCKMELDE GA. ( Damit wüssten andere KXN-Geräte die auf diese GA mithören schon ein mal den aktuellen Zustand ).

Dann habe ich mir bei der Lampe die ich per KNX-Taster schalten möchte 2 Skripte angelegt. Jeweils einmal mit TRIGGER „AN“ und „AUS“.

Das sieht für „AUS“ z.B so aus( Ist nix anderes wie schon bei dem HUE-Threat beschrieben):


<?



$bridge_ip = GetValue(27395 /*[PhilIPS hue\BRIDGE\IP]*/);
$lamp_no=2;
$key= GetValue(53945 /*[PhilIPS hue\BRIDGE\USER KEY]*/);


			$json_url = 'http://'.$bridge_ip.'/api/'.$key.'/lights/'.$lamp_no.'/state';
			$json_string = '{"on":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);

//$json_dc = json_decode($result);

//print_r($json_dc);



?>

Nun zu den KNX-TASTERN. Die sind wie folgt programmier. Die SCHALT und RÜCKMELDE-Gruppenadresse auf einen Taster und die SCHALT-Gruppenadresse als SENDEND ( Wichtig ). Fertig.

Nun sendet der Taster bei betätigen ein EIN oder AUS. Dieses wird von IPS erfasst und schaltet die HUE per Skript oben. Das STATUS-Skript registriert das die HUE EIN/AUS ist und schickt auf die RÜCKMELDE-GA den entsprechenden Wert. Das bekommen alle KNX-Geräte mit die auf die GA mithören und wissen nun den aktuellen Zustand ( EIN / AUS) der HUE. Das ist sofern interessant, da Du sonst ein KNX-Taster 2 mal drücken müsstest, um eine Lampe „AUS“ zu schalten, da er den aktuellen Status nicht kennt.
Thats it…

Ich habe bei mir u.a. HUE’S in 2 großen Esstischlampen. Abends erstrahlen die in einer schicken Farbe. Zum Essen sollen Sie in einem angenehmen warmen Farbton leuchten. Ich wollte das die Esstischlampen per KNX-TASTER in diesem warmen angenehmen Farbton angeschaltet werden und nicht in den letzten Zustand gehen. Daher das „Extra“-Skript bei der SCHALT-GA. Farbspiele und Auswahl werden bei mir per App oder Webfront gemacht.

So… ich hoffe ich konnte Dir das einigermaßen erklären!? Wenn fragen sind, raus damit!

Gruß,
Peter

Hallo Helmut und Peter

Vielen Dank für eure Beiträge!

Leider habe ich deinen Ansatz (Peter) nicht ganz verstanden. Bei mir funktioniert das ganze nun mit nur einer GA. Da die Taster ja Senden und Lesen können. Aber vielleicht habe ich das ganze Prinzip auch einfach noch nicht so ganz verstanden.
Ich habe das ganze jetzt recht simpel hinbekommen. Ich denke das geht an die Lösung von Helmut. Bei jeder Hue Lampe habe ich zwei Scripte. Wenn KNX GA true dann Hue an und umgekehrt. Und das gleiche mache ich mit zwei Scripten bei der KNX GA. Wenn Hue An dann GA auf true. Ist wohl ziemlich primitiv aber ich bin froh es hinbekommen zu haben :slight_smile:

Ich muss nun dringend meine PHP Kenntnisse verbessern um diese mächtige Software richtig einzusetzen! Und ich muss wirklich betonen das ich Leute wie euch einfach super finde! Vielen Dank für die Hilfe und den Denkanstoß.

Leider tue ich mir auch mit der Doku etwas schwer. Aber ich bin hoch motiviert und versuche mich einzuarbeiten.

Meine nächste Hürde habe ich auch schon. :slight_smile: Den Hue HSL Slider.

Vielen DANK nochmal!

Gruß
Chris

Hi Chris,
ist doch schön wenn Du es hinbekommen hast und das auch noch fast alleine. Da ist der Lerneffekt nochmals höher.
Mein Lösungsansatz ist auch nicht wirklich einfach. Ich schalte die Hue’s über verschiedene Arten (KNX, WebFront und meine Freundin viel über die Hue-App), daher wollte ich eine Lösung haben die nicht unnötig doppelt und dreifach Skripte ausführt.
Und das habe ich nur mit 2 GA’s fürs KNX hinbekommen, abgesehen davon das ich eh 2 GA’s für Openremote brauchte.
Lange Rede kurzer Sinn: Es freut mich das es bei Dir funzt und vielleicht magst ja Dein Lösungsansatz mit einer kurzen Erklärung mit uns teilen?!
Gruß,
Peter

Hi Peter!
Klar mach ich gerne.

Also in meinem Beispiel ist die InstanzID 35857 die Staus Variable der Hue Lampe Nr.4 und die InstanzID 38633 die KNX Gruppenadresse meiner KNX Taster.

Für die KNX GA habe ich zwei Scripte angelegt.


<?

EIB_Switch(10633 /*[Haus\OG Licht\Licht Garderobe]*/,true);

?>

mit dem Ereignis: Wenn InstanzID 35857 (Hue Lampe Status) auf „true“ geht wird das Script ausgeführt.

Das gleiche habe ich noch einmal jeweils mit „false“

Für die Hue Lampe habe ich ebenfalls zwei Scripte angelegt.


<?



$bridge_ip = '192.168.1.30';
$lamp_no=4;
$key= "f5d12d8d47fc987c488db1b1dc9a92c7";


            $json_url = 'http://'.$bridge_ip.'/api/'.$key.'/lights/'.$lamp_no.'/state';
            $json_string = '{"on":true}';
            $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);

//$json_dc = json_decode($result);

//print_r($json_dc);


?>

Mit dem Ereignis: Wenn KNX GA auf „true“ für dieses Script aus. Das gleiche habe ich ebenfalls einmal mit „false“

So Funktioniert das für mich Synchron zwischen KNX - HUE - WebFront