Hallo alle zusammen,
ich habe eine Möglichkeit gefunden Servicemeldungen in der CCU über IPS zu bestätigen. Entstanden ist das ganze aus der "Remote HomeMatic Script Schnittstelle.
Das ganze sieht dann So aus:
$CCU_IP = "192.168.2.100";
$HM_Script = "
string itemID;
string address;
object aldp_obj;
foreach(itemID, dom.GetObject(ID_DEVICES).EnumUsedIDs())
{
address = dom.GetObject(itemID).Address();
aldp_obj = dom.GetObject('AL-' # address # ':0.STICKY_UNREACH');
if (aldp_obj)
{
if (aldp_obj.Value())
{
aldp_obj.AlReceipt();
! dom.GetObject('Kommunikationsstörung').State(dom.GetObject(itemID).Name());
}
}
}
";
echo HMRS_HTTP_Post($CCU_IP, $HM_Script);
function HMRS_HTTP_Post($CCU_IP, $HM_Script)
{
/*=============================================
HMRS_HTTP_Post - Martin Heinzel - 20.02.2011
Version: 0.0
Beschreibung:
Mit dieser Funktion werden HomeMatic Scripte per HTTP Post an die HomeMatic
verschickt.
Änderungen
----------
tt.mm.yyyy von Version x.x -> x.x
Berschreibung:
================================================*/
//--------------------------- Main ----------------------------
// Initialisieren der Socket-Verbindung
$fp = fsockopen ($CCU_IP, 8181, $errno, $errstr, 2);
$res = "";
if (!$fp)
{
$res = "$errstr ($errno)<br />
";
}
else
{
// Zusammenstellen des Header für HTTP-Post
fputs($fp, "POST /Test.exe HTTP/1.1
");
fputs($fp, "Content-type: application/x-www-form-urlencoded
");
fputs($fp, "Content-length: ". strlen($HM_Script) ."
");
fputs($fp, "Connection: close
");
fputs($fp, $HM_Script);
while(!feof($fp))
{
$res .= fgets($fp, 500);
}
fclose($fp);
}
return $res;
//----------------------- Main ENDE ----------------------------
}
Dieses Script funktioniert für die STICKY_UNREACH Meldungen.
Und jetzt der Hinkefuss. Ich verstehe das HM-Script nicht.
string itemID;
string address;
object aldp_obj;
foreach(itemID, dom.GetObject(ID_DEVICES).EnumUsedIDs())
{
address = dom.GetObject(itemID).Address();
aldp_obj = dom.GetObject('AL-' # address # ':0.STICKY_UNREACH');
if (aldp_obj)
{
if (aldp_obj.Value())
{
aldp_obj.AlReceipt();
! dom.GetObject('Kommunikationsstörung').State(dom.GetObject(itemID).Name());
}
}
}
Kann mir da jemand helfen? Eventuell kann man dann das Script noch „aufbohren“.
Besten Dank!