Hier einmal in die Kategorie kopieren unter der die Szenen angelegt werden sollen, dann die ObjektID der Hue Bridge eintragen und ausführen. Dann kannst Du deine Szenen schalten. Könnte man auch ins Modul aufnehmen geht aber auch so. Sind alles Dummy Instanzen mit einem Skript zum Aufrufen der Szene. Da es sehr viele HUE Szenen sein können wäre sonst der Variablenverbrauch immens. Wenn man aber sowieso unendlich Variablen hat kannst Du das Skript ja auch noch modifizieren und Dir Variablen anlegen lassen mit den Lampen der Szene usw. Alle Infos, wenn Du was wissen willst, stehen aber im Beschreibungsfeld der Dummy Instanz.
<?
// Config
$HueBridgeID = 44625 /*[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+1;
$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;
}
?>