Dokumentation
HM_ReadServiceMessages
array HM_ReadServiceMessages (int $InstanzID)
Parameterliste
InstanzID | ID der HomeMatic Socket Instanz |
Rückgabewert
Folgende Informationen stehen als key => value Paare zur Verfügung:
Index | Typ | Beschreibung |
---|---|---|
Address | string | Adresse des betreffenden Geräts |
Message | string | Kryptische Beschreibung der Fehlermeldung. Text kann teilweise der stringtable_de.txt aus dem HomeMatic Konfigurationstool entnommen werden. |
Value | variant | Wert der Fehlermeldung |
Beschreibung
Liest die Service-Meldungen des CCU/LAN-Adapters mit der ID InstanzID aus.
Beispiel
//Erstellt eine Variable die in der Visualisierung 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;
}