Das Hilfsmodul watchdog erlaubt es, gewisse Dinge - wie der Name schon sagt - wie ein Wachhund zu überwachen. Dabei kann zum einen nach einem Event nach einer gewissen Zeiten eine Aktion ausgelöst werden, diese aber bei Eintreffen eines anderen Ereignisses auch eben nicht ausgeführt werden. Ebenso kann auch das Ausbleiben von Ereignissen überwacht werden.

Beispiel 1

Ein Thermostat soll auf eine bestimmte Temperatur gesetzt werden, sobald ein Fenster mehr als 90 Sekunden offen ist. Wird es innerhalb dieser Zeit wieder geschlossen, so soll der Watchdog natürlich nicht auslösen (und damit die Temperatur beibehalten). Als praktischer Anwendungsfall wäre eine Gartentür zu nennen. Der Grillmeister rennt ständig rein und raus und will nur kurz nach dem Grill sehen - hier lohnt es sich nicht, die Heizung permanent rauf und runter zu drehen. Vergisst er aber die Türe zu schließen, so wird ausgelöst.

Definition wäre (Angelehnt an COMMANDREF und mit meiner Namenskonvention):

1
2
3
4
5
6
define BA1_WADG_SHUTTERCONTACT_OPENED watchdog BA1_STRUC_SHUTTERCONTACTS:opened 00:01:30 BA1_STRUC_SHUTTERCONTACTS:closed set TEC_MAX_CUL fakeSC BA_THERMOSTAT 1; trigger BA1_WADG_SHUTTERCONTACT_OPENED .
attr BA1_WADG_SHUTTERCONTACT_OPENED room Technik-Bad
attr BA1_WADG_SHUTTERCONTACT_OPENED group BA-Klima
attr BA1_WADG_SHUTTERCONTACT_OPENED icon dog_silhouette
attr BA1_WADG_SHUTTERCONTACT_OPENED regexp1WontReactivate 1
attr BA1_WADG_SHUTTERCONTACT_OPENED verbose 0

Nun haben wir also das Fenster mindestens 90 Sekunden offen gelassen und der Watchdog hat auch reagiert. Nun wird das Fenster wieder geschlossen - der Watchdog hier soll ebenfalls 90 Sekunden warten. Dies sieht dann so aus (Angelehnt an COMMANDREF und mit meiner Namenskonvention):

1
2
3
4
5
6
define BA1_WADG_SHUTTERCONTACT_CLOSED watchdog BA1_STRUC_SHUTTERCONTACTS:closed 00:01:30 BA1_STRUC_SHUTTERCONTACTS:opened set TEC_MAX_CUL fakeSC BA_THERMOSTAT 0; trigger BA1_WADG_SHUTTERCONTACT_CLOSED .
attr BA1_WADG_SHUTTERCONTACT_CLOSED room Technik-Bad
attr BA1_WADG_SHUTTERCONTACT_CLOSED group BA-Klima
attr BA1_WADG_SHUTTERCONTACT_CLOSED icon dog_silhouette
attr BA1_WADG_SHUTTERCONTACT_CLOSED regexp1WontReactivate 1
attr BA1_WADG_SHUTTERCONTACT_CLOSED verbose 0

Gehen wir kurz die Attribute durch:

  • room, group & icon: Lediglich zur Sortierung und Verschönerung des Interfaces
  • verbose: Wird hier auf 0 gesetzt, da bei Fehlen dieses Attributes (und bei Default verbose-Level 3 in FHEM) jede Auslösung einen Logeintrag erzeugt
  • regexp1WontReactivate: Dieses Attribut bewirkt, dass die Zeit bei erneutem Eintreffen des Events (in diesem Falle z.B. BA_STRUC_SHUTTERCONTACTS:closed) nicht zurückgesetzt wird. Trifft jedoch BA_STRUC_SHUTTERCONTACTS:opened ein, so läuft der Watchdog wieder von vorne los.

Beispiel 2

Ein Sensor sendet lediglich Messdaten, jedoch keine Batteriewerte. Bleiben dessen Daten für mehr als 1 Stunde aus, so soll ein Alarm ausgelöst werden.

1
2
3
4
5
define BA1_WADG_BA_ULISTEMPERATURE_BATTERYISSUE watchdog BA1_ULISTEMPERATURE:temperature 01:00:00 SAME set BA1_DMY_ULISTEMPERATURE_BATTERYISSUE 1; trigger BA1_WADG_BA_ULISTEMPERATURE_BATTERYISSUE .
attr BA1_WADG_SHUTTERCONTACT_CLOSED room Technik-Bad
attr BA1_WADG_SHUTTERCONTACT_CLOSED group BA-Klima
attr BA1_WADG_SHUTTERCONTACT_CLOSED icon dog_silhouette
attr BA1_WADG_SHUTTERCONTACT_CLOSED verbose 0

Für die weiteren Attribute des watchdogs empfehle ich einen Blick in die deutsche  oder englische  Commandref. Ebenso hält das Wiki  nützliche Hinweise bereit.