FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Spartacus am 05 November 2015, 21:28:51

Titel: DOIF Eingangslicht wird nicht nachgetriggert
Beitrag von: Spartacus am 05 November 2015, 21:28:51
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.
Titel: Antw:DOIF Eingangslicht wird nicht nachgetriggert
Beitrag von: Damian am 05 November 2015, 22:18:17
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

Titel: Antw:DOIF Eingangslicht wird nicht nachgetriggert
Beitrag von: Spartacus am 06 November 2015, 09:26:22
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