FHEM Forum

FHEM => Automatisierung => Thema gestartet von: zap am 15 Dezember 2014, 18:53:40

Titel: Presence - Watchdog wird nur einmal ausgeführt
Beitrag von: zap am 15 Dezember 2014, 18:53:40
Hallo,
ich möchte eine Anwesenheitserkennung realisieren. Leider werden die Watchdogs nur einmal ausgeführt. Ich habe folgendes PRESENCE device definiert:


define p_dbphone PRESENCE local-bluetooth BC:3B:AF:54:D6:1F 30 60
attr p_dbphone event-on-change-reading state


Das funktioniert soweit, d.h. bei jeder Statusänderung wird ein Event generiert.

Nun habe ich 2 Watchdogs definiert:


define w_absent watchdog p_dbphone.absent 00:01:30 p_dbphone.present "/opt/fhem/scripts/tracker.sh absent"
define w_present watchdog p_dbphone.present 00:01:30 p_dbphone.absent "/opt/fhem/scripts/tracker.sh absent"


Damit will ich erreichen, dass bei einem present/absent Event zunächst 1:30 gewartet wird. Wenn dann kein umgekehrter Status gemeldet wird, soll das Shellscript ausgeführt werden. Die Wartezeit benötige ich, da manchmal die Verbindung zum Handy zwischen Haustür und Wohnzimmer (Ablageplatz des Handys) manchmal kurz weg ist. Dieses "Flattern" wird damit ignoriert.

Das Script wird nun jeweils beim Kommen und Gehen genau einmal ausgeführt, nachdem die Watchdogs definiert wurden. Ein 2. Mal nicht. Ich habe dann testweise die Watchdogs um einen Träger Befehl ergänzt:


define w_absent watchdog p_dbphone.absent 00:01:30 p_dbphone.present "/opt/fhem/scripts/tracker.sh absent";; trigger w_absent .
define w_present watchdog p_dbphone.present 00:01:30 p_dbphone.absent "/opt/fhem/scripts/tracker.sh absent";; trigger w_present .


Aber auch hier werden die Watchdogs nur 1x aktiviert, dann nie wieder.

Woran könnte das liegen?
Titel: Antw:Presence - Watchdog wird nur einmal ausgeführt
Beitrag von: PatrickR am 18 Dezember 2014, 22:05:07
Hi!

Probiere doch mal
setstate w_absent defined
statt
trigger w_absent .

In welchem State steht der Watchdog, wenn er ausgelöst hat?

Dass die Watchdogs nur 1x auslösen ist m. E. eine ungünstige Design-Entscheidung.

/Edit: Sorry, das "defined" hinter setstate w_absent hatte ich vergessen.

Patrick
Titel: Antw:Presence - Watchdog wird nur einmal ausgeführt
Beitrag von: devil77 am 19 Dezember 2014, 07:48:34
Wäre es nicht einfacher das ganze mit DOIF auf die Beine zu stellen.
Titel: Antw:Presence - Watchdog wird nur einmal ausgeführt
Beitrag von: PatrickR am 19 Dezember 2014, 08:39:59

Zitat von: devil77 am 19 Dezember 2014, 07:48:34
Wäre es nicht einfacher das ganze mit DOIF auf die Beine zu stellen.

Kann ich mir auf Anhieb nicht vorstellen. Ein Beispiel wäre gut.

Patrick


Gesendet von meinem iPhone mit Tapatalk
Titel: Antw:Presence - Watchdog wird nur einmal ausgeführt
Beitrag von: devil77 am 19 Dezember 2014, 08:56:51
Schau mal in die commandref, da stehen jede Menge Beispiele.
Titel: Antw:Presence - Watchdog wird nur einmal ausgeführt
Beitrag von: lukasbastelpeter am 19 Dezember 2014, 08:58:40
SPOILER!

So, da ich gerade genau das gleiche Problem hatte, und nach einem Blick in die comandRef hier meine Lösung:
Zitatdefine w_Sleeptimer Zuhause:gotosleep 00:30 Zuhause set Zuhause asleep; setstate w_Zuhause_Sleeptimer defined

das wichtigste hier ist das
Zitatsetstate w_Zuhause_Sleeptimer defined
am Ende...
Hoffe ich liege richtig und viel Spaß