Hallo zusammen,
ich habe ein Problem mit einem DOIF/DOELSEIF mit verUNDeter Bedingung.
Ich möchte, wenn der Homestatus auf "Nacht" (=2) wechselt UND mein Kind nicht zuhause ist (Variable KIND = "abwesend"), dass alle Lampen ausgehen, außer denen im Flur, Wohnzimmer und Schlafzimmer.
Wenn die Variable "KIND" auf "anwesend" steht, möchte ich zusätzlich das Kinderzimmer Licht anlassen.
Der folgende Code funkitioniert immer genau einmal, nach Initialisierung, danach nicht mehr.
([dummy.STATUS] eq "2" and [KIND] eq "abwesend")
(set dummy.NIGHT on)
(set bazi.Lampe1|kch.Lampe1|kizi.Lampe1|dummy.AWAY|dummy.HOME|dummy.HOLI off)
(set flr.Lampe1|wozi.Lampe1|slzi.Lampe2 pct 50)
DOELSEIF
([dummy.STATUS] eq "2" and [KIND] eq "anwesend")
(set dummy.NIGHT on)
(set bazi.Lampe1|kch.Lampe1|dummy.AWAY|dummy.HOME|dummy.HOLI off)
(set kizi.Lampe1|flr.Lampe1|wozi.Lampe1|slzi.Lampe2 pct 50)
Gibt es bei FHEM DOIF eine Syntax, um eine IF-Anweisung zu beenden, ähnlich wie bei C "end if" oder ähnliches?
Oder erkennt jemand, was ich falsch mache?
Vielen Dank im Voraus!
Gruß
Thomas
Moin
Ein list Deines DOIF waere hilfreicher, als der Ausschnitt!
Wann moechtest du denn die Lampen wieder an, bzw. aus, machen?
Gruss Christoph
Mahlzeit!
Was genau meinst du mit "ein list deines DOIF"?
Die Lichter mache ich nach Bedarf manuell an.
Gruß
Thomas
in der GUI oder auf der Console eingeben:
list <NAME_DEINES_DOIF>
Internals:
DEF ([dy.STATUS] eq "2" and [dy.KIND] eq "abwesend")
(set dy.NIGHT on)
(set bz.Lampe1|kc.Lampe1|kizi.Lampe1|dy.AWAY|dy.HOME|dy.HOLI off)
(set fr.Lampe1|wz.Lampe1|sz.Lampe2 pct 50)
DOELSEIF
([dy.STATUS] eq "2" and [dy.KIND] eq "anwesend")
(set dy.NIGHT on)
(set bz.Lampe1|kc.Lampe1|dy.AWAY|dy.HOME|dy.HOLI off)
(set kizi.Lampe1|fr.Lampe1|wz.Lampe1|sz.Lampe2 pct 50)
MODEL FHEM
NAME s.NIGHT
NR 57
NTFY_ORDER 50-s.NIGHT
STATE cmd_1
TYPE DOIF
READINGS:
2018-09-18 11:32:05 Device dy.STATUS
2018-09-14 12:28:13 cmd 1.3
2018-09-14 12:28:13 cmd_event dy.STATUS
2018-09-14 12:28:13 cmd_nr 1
2018-09-14 12:28:13 cmd_seqnr 3
2018-09-16 19:04:18 e_dy.KIND_STATE off
2018-09-18 11:32:05 e_dy.STATUS_STATE 3
2018-09-14 12:28:06 mode enabled
2018-09-14 12:28:13 state cmd_1
Regex:
attr:
cmdState:
wait:
waitdel:
condition:
0 InternalDoIf($hash,'dy.STATUS','STATE') eq "2" and InternalDoIf($hash,'dy.KIND','STATE') eq "abwesend"
1 InternalDoIf($hash,'dy.STATUS','STATE') eq "2" and InternalDoIf($hash,'dy.KIND','STATE') eq "anwesend"
devices:
0 dy.STATUS dy.KIND
1 dy.STATUS dy.KIND
all dy.STATUS dy.KIND
do:
0:
0 set dy.NIGHT on
1 set bz.Lampe1|kc.Lampe1|kizi.Lampe1|dy.AWAY|dy.HOME|dy.HOLI off
2 set fr.Lampe1|wz.Lampe1|sz.Lampe2 pct 50
1:
0 set dy.NIGHT on
1 set bz.Lampe1|kc.Lampe1|dy.AWAY|dy.HOME|dy.HOLI off
2 set kizi.Lampe1|fr.Lampe1|wz.Lampe1|sz.Lampe2 pct 50
2:
helper:
event 3
globalinit 1
last_timer 0
sleeptimer -1
timerdev dy.STATUS
timerevent 2
triggerDev
DOIF_eventas:
cmd_nr: 1
cmd_seqnr: 3
cmd_event: dy.STATUS
state: cmd_1
timerevents:
2
timereventsState:
state: 2
triggerEvents:
3
triggerEventsState:
state: 3
internals:
0 dy.STATUS:STATE dy.KIND:STATE
1 dy.STATUS:STATE dy.KIND:STATE
all dy.STATUS:STATE dy.KIND:STATE
itimer:
readings:
trigger:
uiState:
uiTable:
Attributes:
alias do.NIGHT
room 0.2 - DOIF
https://forum.fhem.de/index.php/topic,71806.0.html (https://forum.fhem.de/index.php/topic,71806.0.html)
https://fhem.de/commandref_DE.html#DOIF_do_always (https://fhem.de/commandref_DE.html#DOIF_do_always)
Gruß
Thomas
Und noch was hilfreiches:
https://fhem.de/commandref_DE.html#DOIF_Angaben_im_Ausfuehrungsteil (https://fhem.de/commandref_DE.html#DOIF_Angaben_im_Ausfuehrungsteil)
https://fhem.de/commandref_DE.html#DOIF_wait (https://fhem.de/commandref_DE.html#DOIF_wait)
@TomLEE: Vielen Dank, "do always" hat mein Problem gelöst.
Gruß
Thomas