Hallo zusammen,
ich würde gerne zwei temporäre at-Definitionen schachteln, aber das funktioniert nicht so, wie ich mir das vorstelle:
fhem("define tmp_SetHomePresenceFalseHelper at +00:00:03 { Log(1, 'test 1') }; define tmp_SetHomePresenceFalse at +00:00:30 set HomePresence false; { Log(1, 'test 2') };");
Es passiert folgendes: Beide Funktionen werden sofort generiert (tmp_SetHomePresenceFalseHelper und tmp_SetHomePresenceFalse). Außerdem wird *erst* "test 2" geloggt und nach drei Sekunden "test 1" :o
Was passieren sollte: tmp_SetHomePresenceFalseHelper wird generiert und baut nach 3 Sekunden wiederum tmp_SetHomePresenceFalse.
Zum Hintergrund, weil das Vorhaben etwas merkwürdig klingt: Ich möchte erreichen, dass nach Schließen der Tür drei Sekunden gewartet wird. Nach diesen drei Sekunden wird 30 Sekunden auf einen Bewegungsmelder gewartet. Wenn der nicht auslöst, weiß ich, dass niemand zu Hause ist. Wenn er auslöst, löscht das Notify "tmp_SetHomePresenceFalse".
Leider überträgt der Bewegungsmelder seine Daten manchmal leicht verzögert, so dass sie erst nach dem Schließen der Tür registriert werden. Ich muss daher drei Sekunden Puffer einbauen und kann es nicht über einen simplen Watchdog lösen.
Das kann so nicht gehen.
So könnte das klappen (ungetestet):
fhem("define tmp_SetHomePresenceFalseHelper at +00:00:03 { fhem(\"define tmp_SetHomePresenceFalse at +00:00:30 set HomePresence false;; { Log(1, 'test 2') }\"); Log(1, 'test 1') }");
Gruß
Dan
mit einem bzw. zwei fhem sleep geht das doch viel einfacher.
sleep 3; {Log 1, 'test1'}; sleep 30; {Log 1, 'test2'}
gruss
andre
ps: warum reicht es nicht einmal 33 sekunden zu warten statt 3 und dann noch mal 30?
Ich habe etwas ähnliches mit dem Modul sequenz gebaut. Schau es Dir mal an.
Hallo,
zwar keine Antwort zum gestellten Problem ABER:
wäre das nicht ein guter Anwendungsfall für "watchdog"!?
http://www.fhemwiki.de/wiki/Watchdog (http://www.fhemwiki.de/wiki/Watchdog)
Gruß, Joachim
Ich hätte es auch gedacht, aber er schreibt ja, dass es das nicht wäre.
Ah, stimmt...
Nicht ganz bis zum letzten Wort gelesen...
Ich habe es jetzt etwas einfacher lösen können: Wenn die Tür geschlossen wird, wird nach drei Sekunden ein Dummy gesetzt. Auf den lauscht jetzt der Watchdog als Initialevent. Trotzdem danke für die Hinweise, vor allem auch an DeeSPe zur Syntax!