DOIF - neue Funktionen aus dem Weihnachtspaket

Begonnen von Spartacus, 26 Dezember 2014, 11:09:12

Vorheriges Thema - Nächstes Thema

Spartacus

Hallo,
damals hatte ich ein Problem welches mit einem klassischen DOIF nicht gelöst werden konnte.
Damian hatte damals ein "Helfer-DOIF" geabut, was die Funktion übernommen hat. Solange ich nur einen Sensor habe, funktioniert das auch ganz hervorragend. Da ich aber einen zweiten Sensor eingebaut habe (Lichtschranke),muss die Funktion angepasst werden.

Derzeit ist es so realisiert:
define di.02.EI.ss.SA.Licht DOIF ((([EG.ss.TK.Haustuer:buttons] eq "pressed") or \
   [EG.ss.LS.Eingang:buttons] eq "pressed") and [Tageslicht.dum] eq "dunkel" or \
   [00:00-02:00] and [hl.01.Feiertag] eq "Neujahr")\
   (set EI.ss.SA.Licht on)\
DOELSEIF\
([EG.ss.TK.Haustuer:buttons] eq "released" and [EG.ss.LS.Eingang:buttons] eq "released" and [hl.01.Feiertag] ne "Neujahr" )\
   (set EI.ss.SA.Licht off)\
DOELSEIF \
  (([TK.Notaus.dum] eq "on" or [LS.Notaus.dum] eq "on") and [hl.01.Feiertag] ne "Neujahr")\

attr di.02.EI.ss.SA.Licht alias autom. Eingangslicht
attr di.02.EI.ss.SA.Licht cmdState on|off|off
attr di.02.EI.ss.SA.Licht devStateIcon .*on:light_light_dim_100@lightgreen .*off:light_light_dim_00@red
attr di.02.EI.ss.SA.Licht disable 0
attr di.02.EI.ss.SA.Licht initialize cmd_2
attr di.02.EI.ss.SA.Licht room 05-Eingang
attr di.02.EI.ss.SA.Licht wait 0:120:0:0

und...
# Email senden, wenn Tür länger als 10min auf steht
#
define di.03.EI.ss.SA.Licht DOIF ([EG.ss.TK.Haustuer:buttons] eq "pressed") ({eMail('name@domain.de','Warnung','Haustür steht offen')}, \
set EI.ss.SA.Licht off, set TK.Notaus.dum on)\

attr di.03.EI.ss.SA.Licht alias Warnung Eingang
attr di.03.EI.ss.SA.Licht cmdState Notaus|Leerlauf
attr di.03.EI.ss.SA.Licht room 05-Eingang
attr di.03.EI.ss.SA.Licht wait 600
#
# Email senden, wenn Lichtschranke länger als 10min blockiert ist
#
define di.04.EI.ss.SA.Licht DOIF ([EG.ss.LS.Eingang:buttons] eq "pressed") ({eMail('name@domain.de.de','WARNUNG! Lichtschranke blockiert!')}, \
set EI.ss.SA.Licht off, set LS.Notaus.dum on)\

attr di.04.EI.ss.SA.Licht alias Warnung Lichtschranke
attr di.04.EI.ss.SA.Licht cmdState Notaus|Leerlauf
attr di.04.EI.ss.SA.Licht room 05-Eingang
attr di.04.EI.ss.SA.Licht wait 600



Problem:
Wenn z.B. das Notaus des Türkontaktes kommt und während die Tür noch offen steht, jemand durch die LS geht, geht das Licht wieder an. Beide Sensoren sollten aber jeweils so lange das Schalten des Aktors verhindern, bis der "Fehler" (Tür zu und LS wieder frei)  behoben ist.
Heißt Konkret:
Wenn die LS blockiert, darf der Aktor auch nicht auf den Türkontakt reagieren bis die Blockade beseitigt wurde. Und umgekehrt, darf der Aktor nach dem "Notaus" nicht schalten, bis die Tür zumindest einmal wieder geschlossen wurde.

Und dabei breche ich mir gerade ziemlich einen ab! Zum einen versuche ich die neuen Kommandos aus dem Weihnachtspaket einzusetzten, um die 3 DOIFs aufzulösen und zum anderen versuche ich die gegenseitige Blockade der Sensoren zu verquicken! Ich vermute das zur Lösunf des ersten Problems "cmdpause" und/oder "waitsame" ein Ansatz ist.

Christian.
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