In erster Linie ist einfach das Problem, dass meiner Freundin wieder mal halbwegs verständlich zu machen. Ansonsten gibt es eigentlich kein Problem.
Ich bevorzuge DOIF, weil man dort meiner Meinung nach besser mehrere Stati gleichzeitig prüfen kann.
Mein Steuerungs-DOIF sieht so aus:
Internals:
DEF (([sensor_sz_bewegungsmelder:state] eq "motion") and ([?sensor_sz_bewegungsmelder:brightness] < 70) and ([?Schlafend] eq "off") and ([unit_sz_dm7020hd] ne "on"))
(set HUEGroup9 rgb ffffff : pct 100 : on-for-timer 150)
DOELSEIF ([sensor_sz_bewegungsmelder:state] eq "noMotion")
(set HUEGroup9 off)
DOELSEIF ([Homestatus] eq "2")
(set HUEGroup9 off)
FUUID 612be67d-f33f-6c14-6e8d-8f58fc6531c94da4
FVERSION 98_DOIF.pm:0.261590/2022-06-19
MODEL FHEM
NAME sw_deckenlicht_starten
NOTIFYDEV Homestatus,global,unit_sz_dm7020hd,sensor_sz_bewegungsmelder
NR 159
NTFY_ORDER 50-sw_deckenlicht_starten
STATE cmd_2
TYPE DOIF
VERSION 26159 2022-06-19 16:10:29
eventCount 18
READINGS:
2022-11-10 10:57:18 Device sensor_sz_bewegungsmelder
2022-11-10 10:57:18 cmd 2
2022-11-10 10:57:18 cmd_event sensor_sz_bewegungsmelder
2022-11-10 10:57:18 cmd_nr 2
2022-11-10 07:56:02 e_Homestatus_STATE undefined
2022-11-10 10:57:18 e_sensor_sz_bewegungsmelder_state noMotion
2022-11-10 09:28:47 e_unit_sz_dm7020hd_STATE off
2022-11-02 20:17:19 mode enabled
2022-11-10 10:57:18 state cmd_2
Regex:
accu:
collect:
cond:
Homestatus:
0:
1:
2:
&STATE ^Homestatus$
sensor_sz_bewegungsmelder:
0:
state ^sensor_sz_bewegungsmelder$:^state:
1:
state ^sensor_sz_bewegungsmelder$:^state:
2:
unit_sz_dm7020hd:
0:
&STATE ^unit_sz_dm7020hd$
1:
2:
attr:
cmdState:
wait:
0:
0
1:
0
2:
15
waitdel:
condition:
0 (::ReadingValDoIf($hash,'sensor_sz_bewegungsmelder','state') eq "motion") and (::ReadingValDoIf($hash,'sensor_sz_bewegungsmelder','brightness') < 70) and (::InternalDoIf($hash,'Schlafend','STATE') eq "off") and (::InternalDoIf($hash,'unit_sz_dm7020hd','STATE') ne "on")
1 ::ReadingValDoIf($hash,'sensor_sz_bewegungsmelder','state') eq "noMotion"
2 ::InternalDoIf($hash,'Homestatus','STATE') eq "2"
do:
0:
0 set HUEGroup9 rgb ffffff : pct 100 : on-for-timer 150
1:
0 set HUEGroup9 off
2:
0 set HUEGroup9 off
3:
helper:
NOTIFYDEV Homestatus,global,unit_sz_dm7020hd,sensor_sz_bewegungsmelder
event motion: off,motionDuration: 32,noMotion
globalinit 1
last_timer 0
sleeptimer -1
timerdev sensor_sz_bewegungsmelder
timerevent motion: off,motionDuration: 32,noMotion
triggerDev sensor_sz_bewegungsmelder
timerevents:
motion: off
motionDuration: 32
noMotion
timereventsState:
motion: off
motionDuration: 32
state: noMotion
triggerEvents:
motion: off
motionDuration: 32
noMotion
triggerEventsState:
motion: off
motionDuration: 32
state: noMotion
internals:
all Schlafend:STATE unit_sz_dm7020hd:STATE Homestatus:STATE
perlblock:
readings:
all sensor_sz_bewegungsmelder:state
trigger:
uiState:
uiTable:
Attributes:
alias Deckenlicht bei Bewegung
do always
group Deckenstrahler
room Steuerung->Licht->Schlafzimmer
wait 0:0:15
In die einzelnen Äste kommt jetzt noch ein "([Dummy:state] eq "auto") and " hinzu, wodurch das DOIF nicht mal aktiviert/deaktiviert, sondern einfach nicht ausgeführt wird.
Das Dummy muss ich erst noch erstellen, leider fehlt mir aktuell die Zeit um wirklich voran zu kommen.