DOIF Eingangslicht wird nicht nachgetriggert

Begonnen von Spartacus, 05 November 2015, 21:28:51

Vorheriges Thema - Nächstes Thema

Spartacus

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.
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Damian

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

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Spartacus

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
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R