Szenen auslesen:
// Config
$HueBridgeID = 53208 /*[Philips Hue Bridge]*/; // ObjektId der HueBridge
// Config End
$json_result = GetScences($HueBridgeID);
SetupScences($json_result, $HueBridgeID);
function GetScences($HueBridgeID)
{
$HueIP = IPS_GetProperty($HueBridgeID, "Host");
$HueUserKey = IPS_GetProperty($HueBridgeID, "User");
//Szenen von Hue Auslesen
$url = 'http://'.$HueIP.'/api/'.$HueUserKey.'/scenes';
$ch = curl_init( $url );
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET', // -X
CURLOPT_HTTPHEADER => array('Content-type: application/json') ,
);
curl_setopt_array( $ch, $options );
// Getting results
$json_result = curl_exec($ch);
return $json_result;
}
function SetupScences($json_result, $HueBridgeID)
{
$result = json_decode($json_result, true);
$num = count(json_decode($json_result, true)); // als array
$idCatScenes = CreateCategory("HUE_Scenes_Category", "Szenen",IPS_GetParent($_IPS['SELF']),0);
echo "Es wurden ".$num." Szenen gefunden
";
$id = 0;
foreach ($result as $key => $scene)
{
$id = $id++;
$scene_description = json_encode(array ($key => $scene));
$id = $key; // The id of the scene being modified or created.
$ident = GetIdent($id);
$name = $scene["name"]; // Human readable name of the scene. Is set to <id> if omitted on creation.
$myScene = @IPS_GetObjectIDByIdent($id, $idCatScenes);
if (!$myScene) //Neu anlegen
{
//echo $id."
";
$myScene = CreateScene($ident, $name, $id, $idCatScenes, $scene_description, $HueBridgeID);
}
}
}
function CreateScene($ident, $name, $id, $parentID, $scene_description, $HueBridgeID)
{
$instanceid = @CreateInstance($ident, $name, $parentID, "{485D0419-BE97-4548-AA9C-C083EB82E61E}", $Position=0);
IPS_SetIdent ($instanceid, $ident);
IPS_SetInfo($instanceid, $scene_description);
CreateScript ($ident."_actionscript", $name, $id, $instanceid, $Position=0, $HueBridgeID);
return $instanceid;
}
function CreateCategory ($Ident, $Name, $ParentId, $Position, $Icon=null)
{
$CategoryId = @IPS_GetObjectIDByIdent($Ident, $ParentId);
if ($CategoryId === false)
{
$CategoryId = IPS_CreateCategory();
IPS_SetName($CategoryId, $Name);
IPS_SetIdent($CategoryId, $Ident);
IPS_SetParent($CategoryId, $ParentId);
if ($Position!==false) {
IPS_SetPosition($CategoryId, $Position);
}
if ($Icon!==false) {
IPS_SetIcon($CategoryId, $Icon);
}
echo 'Created Category '.$Name.'='.$CategoryId."
";
}
return $CategoryId;
}
function CreateInstance ($Ident, $Name, $ParentId, $ModulId, $Position=0)
{
$InstanceId = @IPS_GetObjectIDByIdent($Ident, $ParentId);
if ($InstanceId === false) {
$InstanceId = IPS_CreateInstance($ModulId);
IPS_SetName($InstanceId, $Name);
IPS_SetIdent($InstanceId, $Ident);
IPS_SetParent($InstanceId, $ParentId);
IPS_SetPosition($InstanceId, $Position);
echo "Created Instance ".$Name."=".$InstanceId."
";
}
return $InstanceId;
}
function GetIdent($id)
{
$search = "-";
$replace = "_";
$ident = str_replace($search, $replace, $id);
return $ident;
}
function CreateScript ($Ident, $Name, $id, $ParentId, $Position=0, $HueBridgeID)
{
//$json_url = 'http://'.$HueIP.'/api/'.$HueUserKey.'/scenes';
$ScriptId = @IPS_GetObjectIDByIdent($Ident, $ParentId);
if ($ScriptId === false) {
$ScriptId = IPS_CreateScript(0);
IPS_SetName($ScriptId, $Name);
IPS_SetIdent($ScriptId, $Ident);
$content = '<?
$HueIP = IPS_GetProperty('.$HueBridgeID.', "Host");
$HueUserKey = IPS_GetProperty('.$HueBridgeID.', "User");
$data = array ("scene" => "'.$id.'");
$client = curl_init();
curl_setopt($client, CURLOPT_URL, "http://".$HueIP.":80/api/".$HueUserKey."/groups/0/action");
curl_setopt($client, CURLOPT_USERAGENT, "SymconHUE");
curl_setopt($client, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($client, CURLOPT_TIMEOUT, 5);
curl_setopt($client, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($client, CURLOPT_CUSTOMREQUEST, \'PUT\');
curl_setopt($client, CURLOPT_POSTFIELDS, json_encode($data));
$result = curl_exec($client);
$status = curl_getinfo($client, CURLINFO_HTTP_CODE);
curl_close($client);
?>';
IPS_SetScriptContent($ScriptId, $content);
IPS_SetParent($ScriptId, $ParentId);
IPS_SetPosition($ScriptId, $Position);
echo 'Created Script '.$Name.'='.$ScriptId."
";
}
return $ScriptId;
}
Letzte Frage habe ich noch nicht ganz verstanden, willst Du aus IP-Symcon die Szene aufrufen oder von der Harmony?