Hallo,
ich hätte eine Frage zum nachfolgendem Script
<?
// Quelle: http://www.ip-symcon.de/forum/threads/11771-Homematic-Adapter-und-Ger%C3%A4te-anzeigen?highlight=homematic+interface
// Autor: RWN
if ($_IPS['SENDER'] == "WebFront") return;
include IPS_GetKernelDir()."scripts\\xmlrpc.inc";
$client = new xmlrpc_client("192.168.115.50:2001"); // Adresse anpassen
//Ab hier nichts mehr ändern
$object = IPS_GetObject($_IPS['SELF']);
$parentID = $object['ParentID'];
//Installer
if ($_IPS['SENDER'] == "Execute")
{
IPS_SetHidden($_IPS['SELF'], true);
IPS_SetName($_IPS['SELF'], "Auswertung");
$parentObject = IPS_GetObject($parentID);
if ($parentObject['ObjectType'] !== 1)
{
$instanceID = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
IPS_SetParent($instanceID, $parentID);
$parentID = $instanceID;
IPS_SetParent($_IPS['SELF'], $parentID);
IPS_SetName($instanceID, "Homematic Interfaces");
}
IPS_SetScriptTimer($_IPS['SELF'], 900);
}
$abfrage = new xmlrpcmsg("listBidcosInterfaces");
$send = $client->send($abfrage);
$result = php_xmlrpc_decode($send->value());
for($i=0; $i <count($result); $i++)
{
$adresse = CreateVariableByName($parentID, $result[$i]['DESCRIPTION'].": Adresse", 3);
IPS_SetIcon($adresse, "Information");
IPS_SetVariableCustomProfile($adresse, "~String");
SetValue($adresse, $result[$i]['ADDRESS']);
$connect = CreateVariableByName($parentID, $result[$i]['DESCRIPTION'].": Status", 0);
if(!IPS_VariableProfileExists("Status"))
{
IPS_CreateVariableProfile("Status", 0);
IPS_SetVariableProfileAssociation("Status", 1, "Online", "");
IPS_SetVariableProfileAssociation("Status", 0, "Offline", "");
}
$action = IPS_GetVariable($connect);
if($action['VariableCustomAction'] == 0)
{
IPS_SetVariableCustomAction($connect, $IPS_SELF);
IPS_SetIcon($connect, "Information");
IPS_SetVariableCustomProfile($connect, "Status");
}
SetValue($connect, $result[$i]['CONNECTED']);
$default = CreateVariableByName($parentID, $result[$i]['DESCRIPTION'].": Default", 0);
if(!IPS_VariableProfileExists("Default"))
{
IPS_CreateVariableProfile("Default", 0);
IPS_SetVariableProfileAssociation("Default", 1, "Aktiv", "");
IPS_SetVariableProfileAssociation("Default", 0, "Inaktiv", "");
}
$action = IPS_GetVariable($default);
if($action['VariableCustomAction'] == 0)
{
IPS_SetVariableCustomAction($default, $IPS_SELF);
IPS_SetIcon($default, "Information");
IPS_SetVariableCustomProfile($default, "Default");
}
SetValue($default, $result[$i]['DEFAULT']);
}
function CreateVariableByName($id, $name, $type)
{
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid === false)
{
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
IPS_SetInfo($vid, "this variable was created by script ");
}
return $vid;
}
?>
Es wird nur ein LAN-Adapter angezeigt. D.h. es wird nur ein Variablensatz angelegt. Kann es sein das das Sript nur mit LAN-Adaptern funktioniert und nicht mit der CCU (LAN-Adapter sind zur Reichweitenerhöhung angeschlossen)
Wenn das Script manuell ausgeführt wird kann man ganz kuer erkennen das der zweite Adapter abgefragt wird.
Andreas