FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Rampler am 19 August 2015, 15:25:11

Titel: notify verzögert ??
Beitrag von: Rampler am 19 August 2015, 15:25:11
Hallo zusammen,
möchte das der notify verzögert startet:
define HW.gk.watchclose notify HW.gk.closed.* {if \
(ReadingsVal('HW.tk','state','') eq "closed") {fhem("sleep 2 ;; set FL.EG.anzeige.led07 led green");;} \
elsif(ReadingsVal('HW.tk','state','') eq "open"){fhem('set FL.EG.anzeige.led07 led orange');;}}

"define HW.gk.watchclose notify HW.gk.closed.* sleep 1 {if \...."
funkioniert leider nicht.
Hintergrund:
der HW.tk state kommt teilweise etwas verzögert...

Titel: Antw:notify verzögert ??
Beitrag von: marvin78 am 19 August 2015, 15:54:37
Ungetestet aber das hier müsste funktionieren:



HW.gk.closed.* sleep 2;{if [...]


(Code für den DEF Bereich)
Titel: Antw:notify verzögert ??
Beitrag von: igami am 19 August 2015, 16:06:25
oder ein DOIF mit wait attribut.
Titel: Antw:notify verzögert ??
Beitrag von: Rampler am 19 August 2015, 16:09:55

HW.gk.closed.* sleep 2;{if [...]


Leider Nein, hatte ich auch probiert ..
Titel: Antw:notify verzögert ??
Beitrag von: Rampler am 19 August 2015, 16:16:30
So müsste es funktionieren:
define HW.gk.watchclose notify HW.gk.closed.* {
{fhem('sleep 1')}
if(ReadingsVal('HW.tk','state','') eq "closed") {fhem("set FL.EG.anzeige.led07 led green");}
elsif(ReadingsVal('HW.tk','state','') eq "open"){fhem('set FL.EG.anzeige.led07 led orange');}
}


Doch dann bekomme ich:
WARNING: sleep without additional commands is deprecated and blocks FHEM
Genau das wollte ich aber doch vermeiden, indem ich das sleep in ein Fhem schreibe ..
Titel: Antw:notify verzögert ??
Beitrag von: justme1968 am 19 August 2015, 16:44:36
das sleep muss mit in den fhem(...) aufruf mit dem set und nicht einzeln alleine stehen.

gruss
  andre
Titel: Antw:notify verzögert ??
Beitrag von: Rampler am 19 August 2015, 16:53:06
Zitat von: justme1968 am 19 August 2015, 16:44:36
das sleep muss mit in den fhem(...) aufruf mit dem set und nicht einzeln alleine stehen.

gruss
  andre

Das hatte ich zuerst, funktioniert auch, jedoch möchte ich beim Event HW.gk (closed) etwas warten, da der Status des HW.tk noch nicht im FHEM angekommen sein kann.
HW.tk ist ein Türkontakt.
HW.gk ist ein Griffkontakt.
Meine Jungs schaffen es, die Türe quasi zeitgleich zu schließen (HW.tk) und zu verschließen (HW.gk).
Dann passiert es ab und zu, dass der HW.gk schneller ist als der HW.tk, deshalb der sleep.
Der sleep vor dem set bringt mir da also nichts, da der Türkontakt vorher abgefragt wurde...
 
Titel: Antw:notify verzögert ??
Beitrag von: justme1968 am 19 August 2015, 16:55:21
dann muss das {if...} hinter das sleep. fhem sleep funktioniert nur wenn danach noch etwas kommt.

aber der ansatz das selber von hand in einem notify zu machen ist eigentlich schon falsch.

steck beide in eine structure und setz das notify auf die structure an.

gruss
  andre
Titel: Antw:notify verzögert ??
Beitrag von: Rampler am 19 August 2015, 17:46:07
Danke, das ist das, was ich gesucht habe, danke für den Hinweis ..
Titel: Antw:notify verzögert ??
Beitrag von: AndyMu am 30 November 2015, 19:46:19
Habe ich über ein DOIF realisiert... klappt einwandfrei.
eg_bar_fk ist mein Fensterkontakt, terrasse_ls der UP-Lichtschalter für die Terrasse
Wenn jemand die Türe aufmacht, geht das Licht mit Hilfe eines "Notify" an (wenn es dunkel ist, über Twilight gesteuert).
Beim Schließen kommt dann das DOIF, wartet erstmal 30 Sekunden (über das wait-Attribut) und prüft dann, ob das Licht noch an ist.
Wenn ja, dann wird nochmal ein on-for-timer über 4,5 Minuten gesetzt... damit bleibt nach dem Schließen der Tür das Licht max. 5 Minuten an.
([eg_bar_fk] eq "closed") ({
my $terrasse_ls_status=ReadingsVal("terrasse_ls","state","on");;
if($terrasse_ls_status eq "on"){
fhem("set terrasse_ls on-for-timer 270");;
}
})