Hallo zusammen,
ich habe vor gut einem Jahr das dieses DOIF eingebaut:
Internals:
CFGFN Config/05-Eingang.cfg
DEF (([EG.ss.TK.Haustuer:buttons] eq "pressed" or [EG.ss.LS.Eingang:buttons] eq "pressed") and
[?EI.ss.SA.Licht] eq "off" and [?state.NA.Eingangslicht.dum] eq "off" and [?state.TW.Tageslicht.dum] eq "dunkel")
(set EI.ss.SA.Licht on)
DOELSEIF ([seq.01.EG.fl.WS.Eingangslicht:?partial_1] and [EI.ss.SA.Licht] eq "off")
(set EI.ss.SA.Licht on)
DOELSEIF ([00:00] and [?hl.01.Feiertag] eq "Silvester")
(set EI.ss.SA.Licht on)
DOELSEIF ([EG.ss.TK.Haustuer:buttons] eq "released" and [EG.ss.LS.Eingang:buttons] eq "released" and
[EI.ss.SA.Licht] eq "on" and [di.02.EI.ss.SA.Licht] eq "Sensor_on")
(set EI.ss.SA.Licht off)
DOELSEIF ([seq.01.EG.fl.WS.Eingangslicht:?partial_1] and [EI.ss.SA.Licht] eq "on")
(set EI.ss.SA.Licht off)
DOELSEIF ([02:00] and [?hl.01.Feiertag] eq "Neujahr")
(set EI.ss.SA.Licht off)
DOELSEIF ([state.NA.Eingangslicht.dum] eq "on")
NAME di.02.EI.ss.SA.Licht
NR 685
NTFY_ORDER 50-di.02.EI.ss.SA.Licht
STATE manual_off
TYPE DOIF
Readings:
2015-11-05 20:06:10 Device di.02.EI.ss.SA.Licht
2015-11-05 20:06:10 cmd_event di.02.EI.ss.SA.Licht
2015-11-05 21:11:03 cmd_nr 0
2015-11-05 20:02:15 e_EG.ss.LS.Eingang_buttons released
2015-11-05 20:02:15 e_EG.ss.LS.Eingang_events buttons: released
2015-11-05 20:02:30 e_EG.ss.TK.Haustuer_buttons released
2015-11-05 20:02:30 e_EG.ss.TK.Haustuer_events buttons: released
2015-11-05 20:04:10 e_EI.ss.SA.Licht_STATE off
2015-11-05 20:04:10 e_EI.ss.SA.Licht_events off
2015-11-05 20:06:10 e_di.02.EI.ss.SA.Licht_STATE Sensor_off
2015-11-05 20:06:10 e_di.02.EI.ss.SA.Licht_events cmd_nr: 4 cmd_event: di.02.EI.ss.SA.Licht Sensor_off Device: di.02.EI.ss.SA.Licht e_di.02.EI.ss.SA.Licht_STATE: Sensor_off e_di.02.EI.ss.SA.Licht_events: cmd_nr: 4 cmd_event: di.02.EI.ss.SA.Licht Sensor_off Device: di.02.EI.ss.SA.Licht e_di.02.EI.ss.SA.Licht_STATE: Sensor_off
2015-11-04 17:44:42 e_seq.01.EG.fl.WS.Eingangslicht_events partial_1
2015-10-06 18:33:10 e_state.NA.Eingangslicht.dum_STATE off
2015-10-06 18:33:10 e_state.NA.Eingangslicht.dum_events off
2015-11-05 21:11:03 state manual_off
2015-11-05 21:11:18 timer_1_c3 06.11.2015 00:00:00
2015-11-05 21:11:18 timer_2_c6 06.11.2015 02:00:00
2015-11-05 21:11:03 wait_timer no timer
Condition:
0 (ReadingValDoIf('EG.ss.TK.Haustuer','buttons','') eq "pressed" or ReadingValDoIf('EG.ss.LS.Eingang','buttons','') eq "pressed") and InternalDoIf('EI.ss.SA.Licht','STATE','') eq "off" and InternalDoIf('state.NA.Eingangslicht.dum','STATE','') eq "off" and InternalDoIf('state.TW.Tageslicht.dum','STATE','') eq "dunkel"
1 EventDoIf('seq.01.EG.fl.WS.Eingangslicht',$hash->{helper}{triggerDev},$hash->{helper}{triggerEvents},'partial_1') and InternalDoIf('EI.ss.SA.Licht','STATE','') eq "off"
2 DOIF_time_once($hash,$hash->{timer}{0},$wday,"") and InternalDoIf('hl.01.Feiertag','STATE','') eq "Silvester"
3 ReadingValDoIf('EG.ss.TK.Haustuer','buttons','') eq "released" and ReadingValDoIf('EG.ss.LS.Eingang','buttons','') eq "released" and InternalDoIf('EI.ss.SA.Licht','STATE','') eq "on" and InternalDoIf('di.02.EI.ss.SA.Licht','STATE','') eq "Sensor_on"
4 EventDoIf('seq.01.EG.fl.WS.Eingangslicht',$hash->{helper}{triggerDev},$hash->{helper}{triggerEvents},'partial_1') and InternalDoIf('EI.ss.SA.Licht','STATE','') eq "on"
5 DOIF_time_once($hash,$hash->{timer}{1},$wday,"") and InternalDoIf('hl.01.Feiertag','STATE','') eq "Neujahr"
6 InternalDoIf('state.NA.Eingangslicht.dum','STATE','') eq "on"
Days:
Devices:
0 EG.ss.TK.Haustuer EG.ss.LS.Eingang
1 seq.01.EG.fl.WS.Eingangslicht EI.ss.SA.Licht
3 EG.ss.TK.Haustuer EG.ss.LS.Eingang EI.ss.SA.Licht di.02.EI.ss.SA.Licht
4 seq.01.EG.fl.WS.Eingangslicht EI.ss.SA.Licht
6 state.NA.Eingangslicht.dum
all EG.ss.TK.Haustuer EG.ss.LS.Eingang seq.01.EG.fl.WS.Eingangslicht EI.ss.SA.Licht di.02.EI.ss.SA.Licht state.NA.Eingangslicht.dum
Do:
0:
0 set EI.ss.SA.Licht on
1:
0 set EI.ss.SA.Licht on
2:
0 set EI.ss.SA.Licht on
3:
0 set EI.ss.SA.Licht off
4:
0 set EI.ss.SA.Licht off
5:
0 set EI.ss.SA.Licht off
6:
0
Helper:
globalinit 1
last_timer 2
sleeptimer -1
Internals:
1 EI.ss.SA.Licht:STATE
3 EI.ss.SA.Licht:STATE di.02.EI.ss.SA.Licht:STATE
4 EI.ss.SA.Licht:STATE
6 state.NA.Eingangslicht.dum:STATE
all EI.ss.SA.Licht:STATE di.02.EI.ss.SA.Licht:STATE state.NA.Eingangslicht.dum:STATE
Itimer:
Readings:
0 EG.ss.TK.Haustuer:buttons EG.ss.LS.Eingang:buttons
3 EG.ss.TK.Haustuer:buttons EG.ss.LS.Eingang:buttons
all EG.ss.TK.Haustuer:buttons EG.ss.LS.Eingang:buttons
Realtime:
0 00:00:00
1 02:00:00
State:
Time:
0 00:00:00
1 02:00:00
Timecond:
0 2
1 5
Timer:
0 0
1 0
Timerfunc:
Timers:
2 0 0
5 1 1
Trigger:
all seq.01.EG.fl.WS.Eingangslicht
Attributes:
alias autom. Eingangslicht
cmdState Sensor_on|manual_on|Silvester_on|Sensor_off|manual_off|Silvester_off|Notaus
disable 0
group Scripte
initialize manual_off
room 05-Eingang
wait 0:0:0:120:0:0:0
Solange die Haustür aufstand [EG.ss.TK.Haustuer:buttons] eq "pressed"
wurde das Licht set EI.ss.SA.Licht on
nachgetriggert. Soll heißen, die 120s Ausschaltverzögerung starteten erst, nachdem die Tür wieder geschlossen wurde.
Da ich am Code seit fast einem Jahr nichts mehr geändert habe, vermute ich, dass durch fhem Update etwas verändert wurde. Aufgefallen ist mir die Sache erst letzte Woche. Hat jemand eine Idee, wo ich suchen könnte?
Spartacus.
ja, Rekursionen werden jetzt vom Modul selbst unterbunden und nicht von FHEM selbst erst im zweiten Durchlauf.
Und du hast in deinem Konstrukt eine Rekursion, durch einen Trigger auf das Modul selbst, bedingt durch die Abfrage:
[di.02.EI.ss.SA.Licht] eq "Sensor_on"
evtl. mit [?di.02.EI.ss.SA.Licht] den aktuellen Zustand abfragen und nicht den neugesetzten.
Gruß
Damian
Hallo Damin,
danke für den Hinweis. Du meinst diese Anweisung:
DOELSEIF ([EG.ss.TK.Haustuer:buttons] eq "released" and [EG.ss.LS.Eingang:buttons] eq "released" and
[EI.ss.SA.Licht] eq "on" and [di.02.EI.ss.SA.Licht] eq "Sensor_on")
(set EI.ss.SA.Licht off)
in
DOELSEIF ([EG.ss.TK.Haustuer:buttons] eq "released" and [EG.ss.LS.Eingang:buttons] eq "released" and
[EI.ss.SA.Licht] eq "on" and [?di.02.EI.ss.SA.Licht] eq "Sensor_on")
(set EI.ss.SA.Licht off)
abändern.
Habe ich gemacht, und so wie ich es momentan beurteilen kann, läuft das auch. Oder ist das jetzt nur Zufall?
So richtig begriffen habe ich noch nicht, was da jetzt passiert ist! :(
Spartacus