Hallo,
mit Fonzos Hilfe habe ich ein Hue Skript angelegt, womit ich einen Toggle Befehl (an/aus) auslösen kann, der eine Hue Szene an- und ausschalten soll.
Leider funktioniert das Skript nicht und ich habe irgendwo einen Fehler gemacht. Wenn ich im Webfont auf den Button drücke, erscheint die Fehlermeldung:
Ich bin blutiger Anfänger und froh, wenn mir einer Schritt für Schritt zur Lösung hilft.
Bisher bin ich Fonzos Anleitung gefolgt:
Im Debug Fenster den Befehl „owner“:„abcdef-32ce-4b87-847e-97dec4b8f5bd“ herauskopiert. (Beispiel).
Skript angelegt:
Blockquote ```
// Config
$HueBridgeID = 12345; // ObjektId der HueBridge (Splitter)
$owner = „abcdef-32ce-4b87-847e-97dec4b8f5bd“;
// Config End
$scenes = PHUE_getAllScenes(31787);
SetupScences($scenes, $HueBridgeID, $owner);
function SetupScences($scenes, $HueBridgeID, $owner)
{
$num = count((array) $scenes);
$idCatScenes = CreateCategory("HUE_Scenes_Category", "Szenen",IPS_GetParent($_IPS['SELF']),0);
echo "Es wurden ".$num." Szenen gefunden \n";
// $id = 0;
foreach ($scenes as $key => $scene)
{
// $id = $id++;
// var_dump($key);
$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 if omitted on creation.
// var_dump($name);
$myScene = @IPS_GetObjectIDByIdent($id, $idCatScenes);
if (!$myScene) //Neu anlegen
{
//echo $id."\n";
$myScene = CreateScene($ident, $name, $id, $idCatScenes, $scene_description, $HueBridgeID, $owner);
}
}
}
function CreateScene($ident, $name, $id, $parentID, $scene_description, $HueBridgeID, $owner)
{
$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, $owner);
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."\n";
}
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."\n";
}
return $InstanceId;
}
function GetIdent($id)
{
$search = „-“;
$replace = „_“;
$ident = str_replace($search, $replace, $id);
return $ident;
}
function CreateScript ($Ident, $Name, $id, $ParentId, $Position=0, $HueBridgeID, $owner)
{
//$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 = $owner;
$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."\n";
}
return $ScriptId;
}
Objekt ID der Hue Bridge und mit dem Wert unter owner habe ich eingesetzt.
Bei PHUE_getAllScenes(31787); die 31787 durch die Objekt ID der Hue Bridge (Splitter) habe ich ebenfalls ersetzt.
Viele Grüße
Marvus