der Code ist eigentlich ganz gut lesbar:
definiere eine Globale Variable, die einen Zeiger auf einen Timer hält. (global, weil außerhalb der Rules)
Code: Alles auswählen
rule "alarm wenn mehr als 2 sek ON"
when
Item myMonitoredItem changed
then
Kopf der Rule mitsamt Triggern, also wann die Rule ausgelöst werden soll. In diesem Fall bei jeder Statusänderung des Items myMonitoredItem
Falls (das ist das ?) die Variable tOnTime einen Zeiger auf einen Timer enthält, stoppe den Timer und lösche ihn aus dem Scheduler.
Falls der neue Status (des Items, welches die Rule getriggert hat) ON ist
Lege einen Timer an und weise der Variablen tOnTime den Zeiger auf den Timer zu. Der Timer hat folgende Eigenschaften:
zwei Sekunden von nun an (also "in 2 Sekunden")
Beginn des Codeblocks, der ausgeführt wird, wennn der Timer abläuft.
Code: Alles auswählen
logInfo("alarm","Item myMonitoredItem länger als 2 Sekunden ON")
Gebe eine Logmeldung aus, der Logger heißt alarm, die Meldung lautet "Item myMonitoredItem länger als 2 Sekunden ON".
End des Codeblocks, der vom Timer ausgeführt wird und Ende der createTimer-Anweisung.
Ende der Rule.