Hallo, ich bräuchte mal eure Hilfe.
Ich habe ein DOIF mit verschiedenen Zweigen für die Steuerung eines Bodenlichtes. In einem Zweig, der zur Steuerung als Nachtlicht dient, ist ein Fehler, so dass er nicht ausgeführt wird auch wenn alle Bedingungen zutreffend sind. Doch ich finde den Fehler nicht.
(([unit_sz_dm7020hd:state] ne "on") and (([rr_Marion:state] eq "asleep") or ([rr_Marion:state] eq "gotosleep")) and ([?sensor_sz_bewegungsmelder:brightness] < [Einstellungsdaten:lichtschwelle_schlafzimmer-tv]))
unit_sz_dm7020hd ist ein Device einer Multimediabox die nicht eingeschaltet sein soll,
rr_Marion ist ein Roommate-Device, das über das AMAD-Modul prüft ob das Device "schläft" (Handy wird geladen),
sensor_sz_bewegungsmelder ist ein Homematic-Bewegungsmelder, der in dem Fall aber nur die Helligkeit prüft und nur in anderen Zweigen die Bewegung abfragt,
Einstellungsdaten:lichtschwelle_schlafzimmer-tv ist der Helligkeitswert ab dem die Nachtlichter eingeschaltet werden sollen.
Trage ich für die Lichtschwelle einen festen Wert ein funktioniert es, daher liegt es Nahe, dass dort der Fehler liegt. Doch ich habe mein ganzens System so aufgebaut, dass ich nach Möglichkeit alle Werte einfach per TabletUI editieren kann.
In dem entsprechenden Reading ist einfach nur der Wert 85 hinterlegt.
Hier ein ist des DOIF's:
Internals:
DEF (([unit_sz_dm7020hd:state] eq "on") and ([sensor_sz_bewegungsmelder:brightness] < [Einstellungsdaten:lichtschwelle_schlafzimmer-tv]))
(set HUEDevice11 rgb FFED9D : pct 100)
DOELSEIF (([unit_sz_dm7020hd:state] ne "on") and (([rr_Marion:state] eq "asleep") or ([rr_Marion:state] eq "gotosleep")) and ([?sensor_sz_bewegungsmelder:brightness] < [Einstellungsdaten:lichtschwelle_schlafzimmer-tv]))
(set HUEDevice11 rgb 000004 : pct 5)
DOELSEIF (([Marion_S21Ultra:lichtwecker] eq "on") and [([Marion_S21Ultra:nextAlarmTime]-550)|[Marion_S21Ultra:nextAlarmDay]] and ([rr_Marion:state] eq "asleep"))
{my @sonne_marion = ('A34472','A80C5F','0B0300','190601','230902','2F0D03','370F03','401204','481405','521806','591007','622108','6E2508','772809','7F2A09','882D0A','90300A','96320A','9D330A','A6360A','B0390A','B0450A','B9480B','C1580B','CB610B','D3650C','D6740C','DC770B','DC810B','E5860B','ED8E12','F2A113','F2B013','F5B51A','F9BA22','FBBD29','FEC232','FFC742','FECC55','FED166','FDD473','FDD880','FEDD8C','FDDF97','FDE4A7','FDEABC','FDEEC8','FDF0D1','FDF3DA','FCF4E2','FFFFFF');
my $counter_marion = 10;
for(my $i_marion = 0; $i_marion < @sonne_marion; $i_marion++) {
fhem("sleep ".$counter_marion." LW_Marion".$i_marion."; set HUEDevice11 rgb ".$sonne_marion[$i_marion] .10);
$counter_marion = $counter_marion + 10;}}
DOELSEIF (([rr_Marion:state] eq "home") and ([?rr_Marion:lastState] eq "asleep"))
{for(my $i_marion = 0; $i_marion < 150; $i_marion++) {fhem("cancel LW_Marion".$i_marion);} fhem("set HUEDevice11 off")}
DOELSEIF (([unit_sz_dm7020hd:state] ne "on") and (([rr_Marion:state] ne "asleep") and ([rr_Marion:state] ne "gotosleep")) or ([sensor_sz_bewegungsmelder:brightness] > [Einstellungsdaten:lichtschwelle_schlafzimmer-tv]))
(set HUEDevice11 off)
FUUID 6404aaea-f33f-7706-911f-1d8d5ee28184a34a
FVERSION 98_DOIF.pm:0.285460/2024-02-23
MODEL FHEM
NAME nachtlicht_marion
NOTIFYDEV sensor_sz_bewegungsmelder,Einstellungsdaten,global,rr_Marion,Marion_S21Ultra,unit_sz_dm7020hd
NR 264
NTFY_ORDER 50-nachtlicht_marion
STATE cmd_5
TYPE DOIF
VERSION 28546 2024-02-23 20:11:05
eventCount 152
READINGS:
2024-07-11 19:36:56 Device sensor_sz_bewegungsmelder
2024-07-10 23:00:36 cmd 5
2024-07-11 19:36:56 cmd_event sensor_sz_bewegungsmelder
2024-07-10 23:00:36 cmd_nr 5
2024-07-11 19:35:05 e_rr_Marion_state home
2024-07-11 19:36:56 e_sensor_sz_bewegungsmelder_brightness 117
2024-07-11 13:23:32 e_unit_sz_dm7020hd_state off
2024-07-10 22:56:21 mode enabled
2024-07-10 23:00:36 state cmd_5
2024-07-11 10:00:36 timer_01_c03 12.07.2024 09:50:50|[Marion_S21Ultra:nextAlarmDay]
Regex:
accu:
bar:
barAvg:
collect:
cond:
Einstellungsdaten:
0:
lichtschwelle_schlafzimmer-tv ^Einstellungsdaten$:^lichtschwelle_schlafzimmer-tv:
1:
lichtschwelle_schlafzimmer-tv ^Einstellungsdaten$:^lichtschwelle_schlafzimmer-tv:
4:
lichtschwelle_schlafzimmer-tv ^Einstellungsdaten$:^lichtschwelle_schlafzimmer-tv:
Marion_S21Ultra:
2:
lichtwecker ^Marion_S21Ultra$:^lichtwecker:
rr_Marion:
0:
1:
state ^rr_Marion$:^state:
2:
state ^rr_Marion$:^state:
3:
state ^rr_Marion$:^state:
4:
state ^rr_Marion$:^state:
sensor_sz_bewegungsmelder:
0:
brightness ^sensor_sz_bewegungsmelder$:^brightness:
1:
2:
3:
4:
brightness ^sensor_sz_bewegungsmelder$:^brightness:
unit_sz_dm7020hd:
0:
state ^unit_sz_dm7020hd$:^state:
1:
state ^unit_sz_dm7020hd$:^state:
2:
3:
4:
state ^unit_sz_dm7020hd$:^state:
itimer:
Marion_S21Ultra:
itimer:
nextAlarmTime ^Marion_S21Ultra$:^nextAlarmTime:
attr:
cmdState:
repeatcmd:
0
5
0
repeatsame:
1
3
1
wait:
0:
0
1:
2
2:
0
waitdel:
condition:
0 (::ReadingValDoIf($hash,'unit_sz_dm7020hd','state') eq "on") and (::ReadingValDoIf($hash,'sensor_sz_bewegungsmelder','brightness') < ::ReadingValDoIf($hash,'Einstellungsdaten','lichtschwelle_schlafzimmer-tv'))
1 (::ReadingValDoIf($hash,'unit_sz_dm7020hd','state') ne "on") and ((::ReadingValDoIf($hash,'rr_Marion','state') eq "asleep") or (::ReadingValDoIf($hash,'rr_Marion','state') eq "gotosleep")) and (::ReadingValDoIf($hash,'sensor_sz_bewegungsmelder','brightness') < ::ReadingValDoIf($hash,'Einstellungsdaten','lichtschwelle_schlafzimmer-tv'))
2 (::ReadingValDoIf($hash,'Marion_S21Ultra','lichtwecker') eq "on") and ::DOIF_time_once($hash,0,$wday,"[Marion_S21Ultra:nextAlarmDay]") and (::ReadingValDoIf($hash,'rr_Marion','state') eq "asleep")
3 (::ReadingValDoIf($hash,'rr_Marion','state') eq "home") and (::ReadingValDoIf($hash,'rr_Marion','lastState') eq "asleep")
4 (::ReadingValDoIf($hash,'unit_sz_dm7020hd','state') ne "on") and ((::ReadingValDoIf($hash,'rr_Marion','state') ne "asleep") and (::ReadingValDoIf($hash,'rr_Marion','state') ne "gotosleep")) or (::ReadingValDoIf($hash,'sensor_sz_bewegungsmelder','brightness') > ::ReadingValDoIf($hash,'Einstellungsdaten','lichtschwelle_schlafzimmer-tv'))
days:
0 [Marion_S21Ultra:nextAlarmDay]
do:
0:
0 set HUEDevice11 rgb FFED9D : pct 100
1:
0 set HUEDevice11 rgb 000004 : pct 5
2:
0 {my @sonne_marion = ('A34472','A80C5F','0B0300','190601','230902','2F0D03','370F03','401204','481405','521806','591007','622108','6E2508','772809','7F2A09','882D0A','90300A','96320A','9D330A','A6360A','B0390A','B0450A','B9480B','C1580B','CB610B','D3650C','D6740C','DC770B','DC810B','E5860B','ED8E12','F2A113','F2B013','F5B51A','F9BA22','FBBD29','FEC232','FFC742','FECC55','FED166','FDD473','FDD880','FEDD8C','FDDF97','FDE4A7','FDEABC','FDEEC8','FDF0D1','FDF3DA','FCF4E2','FFFFFF'); my $counter_marion = 10; for(my $i_marion = 0; $i_marion < @sonne_marion; $i_marion++) { fhem("sleep ".$counter_marion." LW_Marion".$i_marion."; set HUEDevice11 rgb ".$sonne_marion[$i_marion] .10); $counter_marion = $counter_marion + 10;}}
3:
0 {for(my $i_marion = 0; $i_marion < 150; $i_marion++) {fhem("cancel LW_Marion".$i_marion);} fhem("set HUEDevice11 off")}
4:
0 set HUEDevice11 off
5:
helper:
NOTIFYDEV sensor_sz_bewegungsmelder,Einstellungsdaten,global,rr_Marion,Marion_S21Ultra,unit_sz_dm7020hd
event battery: ok,brightness: 117,sabotageError: off
globalinit 1
last_timer 1
sleeptimer -1
timerdev sensor_sz_bewegungsmelder
timerevent battery: ok,brightness: 117,sabotageError: off
triggerDev sensor_sz_bewegungsmelder
timerevents:
battery: ok
brightness: 117
sabotageError: off
timereventsState:
battery: ok
brightness: 117
sabotageError: off
triggerEvents:
battery: ok
brightness: 117
sabotageError: off
triggerEventsState:
battery: ok
brightness: 117
sabotageError: off
internals:
interval:
intervalfunc:
intervaltimer:
localtime:
0 1720770650
readings:
all unit_sz_dm7020hd:state sensor_sz_bewegungsmelder:brightness Einstellungsdaten:lichtschwelle_schlafzimmer-tv rr_Marion:state Marion_S21Ultra:lichtwecker
realtime:
0 09:50:50
time:
0 ([Marion_S21Ultra:nextAlarmTime]-550)
timeCond:
0 2
timer:
0 0
timers:
2 0
trigger:
triggertime:
1720770650:
localtime 1720770650
hash:
uiState:
uiTable:
Attributes:
alias Nachtlicht Marion
do always
event-on-change-reading .*
group Nachtlicht
repeatcmd 0:5:0
repeatsame 1:3:1
room Steuerung->Licht->Schlafzimmer
timestamp-on-change-reading .*
wait 0:2:0
Und hier noch das List des Device mit dem Einstelungswert für die Lichtschwelle:
Internals:
FUUID 6685b36b-f33f-7706-ecd1-842393f73b0d7a8a
FVERSION 98_dummy.pm:0.256060/2022-02-01
NAME einstellungsdaten
NR 599
STATE ???
TYPE dummy
eventCount 3
READINGS:
2024-07-10 22:44:33 giessabstand_blumen 4
2024-07-10 22:44:33 giessabstand_blumen_priority 5
2024-07-10 22:44:33 giessabstand_blumen_urgend 6
2024-07-03 22:25:48 lichtschwelle_schlafzimmer-tv 85
Attributes:
alias Einstellungen
group .
room System
userReadings giessabstand_blumen_priority { ReadingsVal("$NAME","giessabstand_blumen",0)+1 },
giessabstand_blumen_urgend { ReadingsVal("$NAME","giessabstand_blumen",0)+2 }
Ich sitze gerade nicht am PC, aber ich würde mal den Bindestrich (oder Minus) gg was anderes tauschen.
Scheint es gewesen zu sein, jedenfalls funktioniert es jetzt. Danke