Hallo,
brauche eure Hilfe. Ich habe zwei CCU1 im Betrieb. Nun wollte ich mir die Servicemeldungen auf mein Handy schicken lassen. In der Modulreferenz fand ich auch ein Script dafür. Doch das liefert mir immer einen Fehler:
Parse error: syntax error, unexpected ‚$object‘ (T_VARIABLE) in C:\IP-Symcon\scripts\13166.ips.php on line 5
Script:
//Erstellt eine Variable die im WebFront alle ServiceMeldungen anzeigt. Einfach in ein Skript kopieren und ausführen.
*
//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'], "Auslese-Skript");
$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, "Servicemeldungen");
}
IPS_SetScriptTimer($_IPS['SELF'], 300);
}
*
$texte = Array(
"CONFIG_PENDING" => "Konfigurationsdaten stehen zur Übertragung an",
"LOWBAT" => "Batterieladezustand gering",
"STICKY_UNREACH" => "Gerätekommunikation war gestört",
"UNREACH" => "Gerätekommunikation aktuell gestört"
);
*
$str = "<table width='90%' align='center'>"; // Farbe anpassen oder style entfernen
$str .= "<tr><td><b>Gerätname</b></td><td><b>GeräteID</b></td><td><b>Meldung</b></td></tr>";
*
$ids = IPS_GetInstanceListByModuleID("{A151ECE9-D733-4FB9-AA15-7F7DD10C58AF}");
if(sizeof($ids) == 0)
die("Keine HomeMatic Socket Instanz gefunden!");
*
$msgs = HM_ReadServiceMessages($ids[0]);
if($msgs === false)
die("Verbindung zur CCU fehlgeschlagen");
*
if(sizeof($msgs) == 0)
$str .= "<tr><td colspan=3><br/>Keine Servicemeldungen!</td></tr>";
*
foreach($msgs as $msg)
{
if(array_key_exists($msg['Message'], $texte)) {
$text = $texte[$msg['Message']];
} else {
$text = $msg['Message'];
}
*
$id = GetInstanceIDFromHMID($msg['Address']);
if(IPS_InstanceExists($id)) {
$name = IPS_GetLocation($id);
} else {
$name = "Gerät nicht in IP-Symcon eingerichtet";
}
*
$str .= "<tr><td>".$name."</td><td>".$msg['Address']."</td><td>".$text."</td></tr>";
}
$str .= "</table>";
*
$vid = CreateVariableByName($parentID, "Content", 3);
IPS_SetIcon($vid, "Information");
IPS_SetVariableCustomProfile($vid, "~HTMLBox");
SetValue($vid, $str);
*
function GetInstanceIDFromHMID($sid)
{
$ids = IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}");
foreach($ids as $id)
{
$a = explode(":", IPS_GetProperty($id, 'Address'));
$b = explode(":", $sid);
if($a[0] == $b[0])
{
return $id;
}
}
return 0;
}
*
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);
}
return $vid;
}
Danke im Voraus.
Gruß
Jimmy