FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: ThoTo am 21 Oktober 2018, 19:04:26

Titel: DOIF bei Event pausieren
Beitrag von: ThoTo am 21 Oktober 2018, 19:04:26
Hallo,

ich will mir ein DOIF bauen, das beim Abschalten einer Lampe triggert,  nicht jedoch wenn vorher ein anderes Event stattgefunden hat.
Konkret geht es um einen Taster an einem HM-LC-Sw1-DR.

OFF ÜBER FHEM:
2018-10-21 17:15:34 CUL_HM OGVO.HM.Deckenleuchte set_off
2018-10-21 17:15:34 CUL_HM OGVO.HM.Deckenleuchte deviceMsg: off (to vccu)
2018-10-21 17:15:34 CUL_HM OGVO.HM.Deckenleuchte level: 0
2018-10-21 17:15:34 CUL_HM OGVO.HM.Deckenleuchte pct: 0
2018-10-21 17:15:34 CUL_HM OGVO.HM.Deckenleuchte off
2018-10-21 17:15:34 CUL_HM OGVO.HM.Deckenleuchte timedOn: off


OFF ÜBER SCHALTER:
2018-10-21 17:17:11 CUL_HM OGVO.HM.Deckenleuchte deviceMsg: off (to vccu)
2018-10-21 17:17:11 CUL_HM OGVO.HM.Deckenleuchte level: 0
2018-10-21 17:17:11 CUL_HM OGVO.HM.Deckenleuchte pct: 0
2018-10-21 17:17:11 CUL_HM OGVO.HM.Deckenleuchte off
2018-10-21 17:17:11 CUL_HM OGVO.HM.Deckenleuchte timedOn: off



Mein DOIF Versuch sieht so aus, klappt aber nicht:
defmod OGVO.DOIF.Taster_Licht_aus DOIF (["OGVO.HM.Deckenleuchte:set_off"])\
( )\
DOELSEIF(["OGVO.HM.Deckenleuchte: off"])\
( {Log3 "$SELF", 1, "*** TEST ***" })
attr OGVO.DOIF.Taster_Licht_aus cmdpause 2:0


Bei "OFF ÜBER FHEM" soll der zweite Teil für 2 Sekunden komplett ignoriert werden.
Stehe irgendwie auf der Leitung....  8)

Bitte um Ideen.


LG Thomas
Titel: Antw:DOIF bei Event pausieren
Beitrag von: Ellert am 21 Oktober 2018, 19:55:28
Etwa so
(["OGVO.HM.Deckenleuchte:set_off"]) () ()

DOELSEIF(["OGVO.HM.Deckenleuchte: off"] and [?$SELF] ne "cmd_1_1") (...)

wait 2,0:0
Solange STATE cmd_1_1 ist wird Zweig 2 nicht ausgeführt.
Titel: Antw:DOIF bei Event pausieren
Beitrag von: ThoTo am 21 Oktober 2018, 20:26:11
Zitat von: Ellert am 21 Oktober 2018, 19:55:28
Etwa so
(["OGVO.HM.Deckenleuchte:set_off"]) () ()

DOELSEIF(["OGVO.HM.Deckenleuchte: off"] and [?$SELF] ne "cmd_1_1") (...)

wait 2,0:0
Solange STATE cmd_1_1 ist wird Zweig 2 nicht ausgeführt.

Danke dir!
Ich habs zwischenzeitlich so versucht, was auch zu klappen scheint:

{
  if ([OGVO.HM.Deckenleuchte] eq "set_off") { set_Exec("Timer_Set_Off", 2) }
}
{
  if ([OGVO.HM.Deckenleuchte] eq "off" && !get_Exec("Timer_Set_Off")) { fhem "set TREP.HUE.Wandleuchte off" }
}