Ich habe mehrere fs20pira Bewegungsmelder im Einsatz und möchte jetzt von einem einfachen notify, das bei Bewegung auslöst auf ein DOIF bei Dunkelheit über das twilight Modul umstellen.
Dazu habe ich folgenden Code hinterlegt:
define Bewegungmelder_Haustuer_On_DI DOIF ([Aussen_Garten_Bewegungmelder_Haustuer:"on"] and [[Twilight_Home:ss_civil]-[Twilight_Home:sr_indoor]]) (set Aussen_Garten_Lampe_Haustuer on-for-timer 60)
Ich befürchte aber, dass das Licht zwischen SS_civil und sr_indoor immer an ist, da ein fs20pira immer den state "on" hat.
Das bisherige notify triggert über das Event "on" des fs20pira.
Bei DOIF ist das doch aber nicht so, oder?
ZitatBei DOIF ist das doch aber nicht so, oder?
Ja, so habe ich die Befehlsreferenz auch verstanden. Hast Du etwas anderes beobachtet?
Du musst auf das Event triggern, ausserdem sehen die Klammern um twilight komisch aus
Zitat von: Mitch am 11 Oktober 2016, 11:17:46
Du musst auf das Event triggern, ausserdem sehen die Klammern um twilight komisch aus
Sorry, wie mache ich das?
http://fhem.de/commandref_DE.html#DOIF ;)
Zitat von: Fredi69 am 11 Oktober 2016, 11:28:56
Sorry, wie mache ich das?
Deine Definition ist in Ordnung. Poste mal ein
list Bewegungmelder_Haustuer_On_DI
wenn es nicht klappt.
Sorry, habe gerade erst gesehen, dass Du ja schon auf das Event triggerst.
Dann passt das, wie Ellert geschrieben hat.
Hast Du beim Bewegungsmelder evtl. ein Attribut ala event-on?
Was sagt der Eventmonitor?
Zitat von: Ellert am 11 Oktober 2016, 12:17:34
Deine Definition ist in Ordnung. Poste mal ein list Bewegungmelder_Haustuer_On_DI
wenn es nicht klappt.
Es funktioniert leider nur genau einmal.
Edit1: Do always gesetzt, jetzt geht es mehrfach
So weit so gut:
Ein andere fs20pira hat mit einem notify folgendes ausgelöst:
set Aussen_Garten_Lampe_Haustuer on-for-timer 60;set Bewegungmelder_Haustuer_On inactive;sleep 30;set Bewegungmelder_Haustuer_On active
Das scheint mit einem DOIF nicht zu funktionieren, oder?
set Aussen_Garten_Lampe_Haustuer on-for-timer 60,set Bewegungmelder_Haustuer_On inactive,sleep 30,set Bewegungmelder_Haustuer_On active
Mit dem set xxx hat DOIF wohl ein Problem
Ich verstehe wieder nicht was Du willst.
Wäre schön, wenn Du dich mal ein bisschen einliest vorher ;)
Habe mich eingelesen, was verstehst Du nicht?
Dein Problem
Das DOIF soll eine Lampe einschalten und dann einen anderen Bewegungsmelder für 30 Sekunden deaktivieren
Ja, und was hast du wie definiert? List?
Wie gesagt, lies dich mal das command ref zu DOIF, das hilft ungemein.
Zitat von: Mitch am 11 Oktober 2016, 21:54:39
Ja, und was hast du wie definiert? List?
Wie gesagt, lies dich mal das command ref zu DOIF, das hilft ungemein.
Ich vermute du möchtest mich nicht verstehen, es steht bereits alles da!
8) Sorry, dann halt nicht
Zitat von: Fredi69 am 11 Oktober 2016, 21:23:31
So weit so gut:
Ein andere fs20pira hat mit einem notify folgendes ausgelöst:
set Aussen_Garten_Lampe_Haustuer on-for-timer 60;set Bewegungmelder_Haustuer_On inactive;sleep 30;set Bewegungmelder_Haustuer_On active
Das scheint mit einem DOIF nicht zu funktionieren, oder?
set Aussen_Garten_Lampe_Haustuer on-for-timer 60,set Bewegungmelder_Haustuer_On inactive,sleep 30,set Bewegungmelder_Haustuer_On active
Mit dem set xxx hat DOIF wohl ein Problem
ZitatMit dem set xxx hat DOIF wohl ein Problem
Nein, mit sleep, dafür hat DOIF das Attribut wait.
Vielen Dank für den Hinweis. Das schaue ich mir an und berichte dann.
Zitat von: Ellert am 11 Oktober 2016, 23:37:01Nein, mit sleep
Zur Erläuterung: im
notify ist es ein FHEM-Befehl, gefolgt durch das Semicolon, letzteres fehlt bei DOIF wg. der anderen Syntax.
Aber statt
set 1;sleep 30;set 2
schreibst du hier
(set 1)(set 2)
mit
attr DOIF_NAME wait 30
ABER: während im ersten Fall
set 2 immer ausgeführt wird, kann es beim DOIF durch das Eintreffen neuer Events zu einem Abbruch kommen. Manchmal gewollt, manchmal nicht...
Zitat von: Per am 12 Oktober 2016, 13:38:27
Zur Erläuterung: im notify ist es ein FHEM-Befehl, gefolgt durch das Semicolon, letzteres fehlt bei DOIF wg. der anderen Syntax.
Aber statt
set 1;sleep 30;set 2
schreibst du hier
(set 1)(set 2)
mit
attr DOIF_NAME wait 30
ABER: während im ersten Fall set 2 immer ausgeführt wird, kann es beim DOIF durch das Eintreffen neuer Events zu einem Abbruch kommen. Manchmal gewollt, manchmal nicht...
Danke so habe ich das auch umgesetzt.
Schön zu lesen, das mich anscheinend doch die allermeisten verstehen ;)
Zitat von: Per am 12 Oktober 2016, 13:38:27ABER: während im ersten Fall set 2 immer ausgeführt wird, kann es beim DOIF durch das Eintreffen neuer Events zu einem Abbruch kommen. Manchmal gewollt, manchmal nicht...
Damit fällt das DOIF im Zusammenhang mit einem Bewegungsmelder aber aus meiner Sicht raus, denn die Wahrscheinlichkeit das ein neuer Event kommt ist relativ hoch.
Warum ist das denn so?
Wieso, in dem Fall gewollt, neuer Event -> neuer Zeitraum.
Zitat von: Fredi69 am 13 Oktober 2016, 14:29:03
Danke so habe ich das auch umgesetzt.
attr DOIF_NAME wait 30
bedeutet, dass mit der Ausführung des 1. Befehls 30 s gewartet wird und der 2. Befehl sofort danach ausgeführt wird.
Wenn nur der zweite Befehl verzögert werden soll, dann so
attr DOIF_NAME wait 0,30
Zitat von: Fredi69 am 13 Oktober 2016, 15:57:25
Schön zu lesen, das mich anscheinend doch die allermeisten verstehen ;)
Damit fällt das DOIF im Zusammenhang mit einem Bewegungsmelder aber aus meiner Sicht raus, denn die Wahrscheinlichkeit das ein neuer Event kommt ist relativ hoch.
Warum ist das denn so?
Wenn eine Bedingung ohne Statuswechsel wiederholt wahr wird, dann wird wait nicht zurückgesetzt, es sei denn Du verwendest das Attribut do resetwait.