Praxis – Watch Dog Timer

Das folgende Beispiel zeigt, wie man einen Watch Dog Timer programmiert.
Aufgabe:
Der Gassensor HMS 100MG soll überwacht werden und eine Alarmmeldung erzeugt werden,
wenn dieser mehr als 2 Stunden keine Werte mehr gesendet hat.
(Wenn das Steckernetzteil ausfällt, gibt es keine LowBatt-Meldung)

[u]Lösung:

[/u]


<?
/*
*******************************
 IP-SYNCOM Event Scripting
*******************************
*/
//Trigger: alle 1200 Sekunden
//Lebt der Gas-Sensor noch? (C) by MST 04.05
//File: WatchDogHMS.ips.php
//GetUpdateTime gibt die Zeit der letzten Aktualisierung als UNIX Timestamp
$last_TX = GetUpdateTime("IN_Sensor_Gas");

//Wenn über 2 Stunden (2*60*60=7200) nicht gesendet wurde > Alarm
if(($last_TX  + 7200) < (time())) {
  echo "Alarm! Der Gas-Sensor ist defekt";
  TTS_Speak(37579, "Alarm! Der Gas-Sensor ist defekt");
}

?>

Eine andere Möglichkeit:


<?
//Trigger: alle 1200 Sekunden
$timeout = 2 * 60 * 60; //2 Stunden
$watcharr = Array("IN_Sensor_Gas","IN_Sensor_H2O","IN_PIRI");

foreach($watcharr as $item) {
  $itemtime = GetUpdateTime($item);
  if($itemtime > 0) { //Variable gefunden
	if(($itemtime + $timeout) < time()) {
	  echo "Alarm! Variable ".$item." wurde zu lange nicht aktualisiert";
	}
  }
}
?>

Grüße, paresy

HM hab gerade eines der Skripte probiert, bekomme folgende Fehlermeldung:

<br />
<b>Fatal error</b>: Call to undefined function GetUpdateTime() in <b>C:\Programme\IP-SYMCON\scripts.currentscript</b> on line <b>11</b><br />

Versuch es mal mit dem Befehl: IPS_GetUpdateTime
http://www.ipsymcon.de/~hjh/HelpStudio/html/IPS-Manual/IPS_GetUpdatetime.html

Gruß
A.