FHEM Forum

FHEM => Automatisierung => Thema gestartet von: grappa24 am 05 Dezember 2013, 17:20:25

Titel: Suche notify mit Verzögerung
Beitrag von: grappa24 am 05 Dezember 2013, 17:20:25
Hallo zusammen,

ich suche nach einer Möglichkeit, ein notify zeitverzögert an ein Event zu koppeln, sprich die Aktion soll erst x Sekunden nach Eintreten des Event ausgelöst werden.

VG, Dieter

Titel: Antw:Suche notify mit Verzögerung
Beitrag von: rudolfkoenig am 05 Dezember 2013, 17:32:01
define ntfy1 notify Fernbedienung:.* sleep 7.5;; set Lampe $EVENT
Titel: Antw:Suche notify mit Verzögerung
Beitrag von: grappa24 am 05 Dezember 2013, 17:34:50
Danke!
Titel: Antw:Suche notify mit Verzögerung
Beitrag von: maci am 06 Dezember 2017, 11:30:50
Hallo,

Ich wäre jetzt dein wirklich alten Beitrag wieder auf.

Ich beschäftige mich derzeit mit dem Thema.

Ich habe dies nun ausprobiert, es funktioniert, jedoch habe ich entdeckt, wenn ich in der sleeptime noch einmal ein event auf dem Device Fernbedienung auslöse, dann passiert es dass das Device Lampe 2 mal geschaltet wird.
wenn es ein set Lampe off oder on ist passiert nicht viel, wenn es jedoch wie in dem Beispiel ein $EVENT ausgelöst wird, kann die Lampe in den Beispiel ein und gleich darauf wieder ausgeschaltet wird (bzw. umgekehrt).

Lässt sich dieses Verhalten verhindern?
Bzw. lässt sich das erneute triggern nutzen, dass die Zeit allgemein verlängert wird. Dazu müsste aber die sleeptime erneut zu laufen beginnen.
Derzeit läuft die sleeptime 2 mal ab, wenn ich 1 mal erneut triggere.
Titel: Antw:Suche notify mit Verzögerung
Beitrag von: Beta-User am 06 Dezember 2017, 11:41:27
Man kann das z.B. dadurch lösen, dass man ein at definiert (mit defmod), (angelehnt an den bisherigen Code hier) in etwa so:

define ntfy1 notify Fernbedienung:.* defmod at_ntfy1 at +00:00:08 set Lampe $EVENT

Gruß, Beta-User
Titel: Antw:Suche notify mit Verzögerung
Beitrag von: CoolTux am 06 Dezember 2017, 12:37:02

define ntfy1 notify Fernbedienung:.* set $SELF inactive; sleep 7.5; set Lampe $EVENT; set $SELF active
Titel: Antw:Suche notify mit Verzögerung
Beitrag von: maci am 06 Dezember 2017, 13:19:06
Zitat von: CoolTux am 06 Dezember 2017, 12:37:02

define ntfy1 notify Fernbedienung:.* set $SELF inactive; sleep 7.5; set Lampe $EVENT; set $SELF active


Ja das funktioniert jetzt so wie sollte.
Das sollte eigentlich im Wiki ergänzt werden. Ich habe aber keinen Zugang und die Lösung ist auch nicht von mir.

Eine ander Frage als Ergänzung: wenn ich die Sleepzeit variabel haben will.
Ich habe es versucht als Dummy. Wenn ich ein sleep [Dummy] mache, steht im Log das dies keine Sekunden sind.
Aber im Dummy habe ich zB 10 angegeben.
Titel: Antw:Suche notify mit Verzögerung
Beitrag von: CoolTux am 06 Dezember 2017, 13:28:03
Das so genannte SetMagic Variante geht nur bei aufruf der CommandSet Funktion, also bei set Befehlen. sleep ist ein Befehl für sich. Da musst Du dann wenn auf Perl Ebene gehen.


define ntfy1 notify Fernbedienung:.* { fhem("set $SELF inactive; sleep " . Value('timerDummy') . "; set Lampe $EVENT; set $SELF active") }
Titel: Antw:Suche notify mit Verzögerung
Beitrag von: ahstax am 16 Januar 2019, 08:42:36
Hallo,

Eine Verständnisfrage:

dieses Notify sollte ja eine LED auf rot schalten, wenn ein Fenster 30 Minuten offen ist, verstehe ich das richtig?

define ntfy1 notify Fenster:open sleep 1800;; set LED:red


Was passiert denn, wenn das Fenster innerhalb der Sleep-Zeit wieder geschlossen wird, Zustand also Fenster:close? Wird das Notify abgebrochen?

Neugierige Grüße,
Andreas
Titel: Antw:Suche notify mit Verzögerung
Beitrag von: Byte09 am 16 Januar 2019, 08:48:54
Zitat von: ahstax am 16 Januar 2019, 08:42:36
Hallo,

Eine Verständnisfrage:

dieses Notify sollte ja eine LED auf rot schalten, wenn ein Fenster 30 Minuten offen ist, verstehe ich das richtig?

define ntfy1 notify Fenster:open sleep 1800;; set LED:red


Was passiert denn, wenn das Fenster innerhalb der Sleep-Zeit wieder geschlossen wird, Zustand also Fenster:close? Wird das Notify abgebrochen?

Neugierige Grüße,
Andreas

nein, da das notify das schliessen nichtmal mitbekommt ( rein Event-basierend ) . nach ablauf des sleep findet keine prüfung des statuses statt.

gruss Byte09
Titel: Suche notify mit Verzögerung
Beitrag von: justme1968 am 16 Januar 2019, 08:49:20
nein. das sleep läuft weiter.

es gibt aber ein benanntes sleep das sich abbrechen lässt.

WATCHDOG solltest du dir auch anschauen
Titel: Antw:Suche notify mit Verzögerung
Beitrag von: Wernieman am 16 Januar 2019, 10:09:49
das ist der Vorteil der oben genannten defmod-Lösung. Beim Fenster-.Schließen kannst Du mit einem delete das Temp-at löschen und damit genau das erreichen.
Titel: Antw:Suche notify mit Verzögerung
Beitrag von: Beta-User am 16 Januar 2019, 10:21:42
WATCHDOG ist sicher einen Blick wert;

Wer das mit dem "defmod-at" verfeinern will:
define ntfy1 notify Fenster:open defmod at_Check_Fenster at +00:01:30 {if (Value("Fenster") eq "open" ) {fhem "set set LED red"}}

Sowas macht aber eigentlich nur dann Sinn, wenn es sich nicht mit watchdog lösen läßt. Hier z.B. meine virtuellen verzögerten Türkontakte (zwei Außentüren im Wohnzimmer):
define Tuerkontakt_WZ_notify notify (Balkontuer|Terrassentuer_WZ):(open|closed).* {\
  if($EVENT eq "open" )\
{fhem 'defmod at_Check_WZ at +00:01:30 {if (Value("Balkontuer") eq "open" or Value("Terrassentuer_WZ") eq "open" ) {fhem "set Virtueller_Tuerkontakt_WZ offen"}}';;\
  } else {\
fhem "set Virtueller_Tuerkontakt_WZ geschlossen" if( Value("Virtueller_Tuerkontakt_WZ") ne "geschlossen" && Value("Balkontuer") eq "closed" && Value("Terrassentuer_WZ") eq "closed")\
  }\
}

(Man könnte das auch mit structure machen, schon klar...)