Bestätigen von Servicemeldungen

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!

Warum machst Du es so umständlich und schiebst das Skript über IPS nach CCU/LAN.

Ich nutze das selbe Skript nur macht es die CCU selbst.

Wenn Du mit erweitern meinst nicht klickbare Servicemeldungen zu löschen wirst Du nicht weit kommen da es schlicht weg nicht geht.

Damit habe ich aber immer noch nicht das Script verstanden.
Des weiteren habe ich schon des öfteren hier im Forum die Frage gelesen wie man über IPS einen Reset macht. Das ist die Antwort.
Ich selber nutze das Script nicht.

Ich meine damit ander Meldungen wie „STICKY_UNREACH“.

Edit:

Ich sehe gerade das Du kurz vor den 2000 Beiträgen bist !!

Hallo Martin,

ich denke das andere Servicemeldungen wie „STICKY_UNREACH“ nicht klickbar bzw. bestätigbar sind, somit wird ein Skript diese auch nicht aus den Servicemeldungen löschen können, natürlich egal ob es durch IPS oder der CCU gestartet wird.

Was das Skript genau macht kann ich Dir auch nicht sagen, ich denke es durchsucht für alle Geräte ob Servicemeldungen vorliegen, sollten diese dem Kriterium „STICKY_UNREACH“ entsprechen, also eine Kommunikationstörung vorgelegen haben, bestätigt sie diese und der Eintrag ist aus den Servicemeldungen verschwunden.

Auch denke ich das wenn einen Kommunikationsstörung oder z.B. auch ein Lastproblem an einem Dimmer vorliegt diese weder durch ein Skript noch durch einen Klick in der Servicemeldungsseite löschbar/bestätigbar sind, ebenso wie bei mir die Meldungen das ein Fensterdrehgriff nicht gesendet hat. Hier muss man auf der Hardwareseite Hand anlegen.

Hallo Werner,

sorry für die späte Antwort. Wir habe Karneval!!! :smiley:

Was mir gerade erst aufgefallen ist. Diese Zeile kann fehlen.


! dom.GetObject('Kommunikationsstörung').State(dom.GetObject(itemID).Name()); 

Es ist nur ein Kommentar.

Was ich in der Script-Dokumentation nicht finden kann ist die Konstante „ID_DEVICES“. Das gleiche gilt für „AlReceipt()“.

…ich denke es durchsucht für alle Geräte ob Servicemeldungen vorliegen, sollten diese dem Kriterium „STICKY_UNREACH“ entsprechen, also eine Kommunikationstörung vorgelegen haben, bestätigt sie diese und der Eintrag ist aus den Servicemeldungen verschwunden.

Das sehe ich auch so. Es ist nur schade das „eQ-3“ nich alle Karten auf den Tisch legt.

Na ja… Lassen wir es jetzt einfach mal so stehen. Mit dem Script kann man über IPS „STICKY_UNREACH“ Meldungen quittieren.

Trotzdem besten Dank für deine Mühe.