Hallo,
irgendwie verhällt sich dieses DOIF nicht erwartungsgemäß.
Ich möchte mit dem letzten DOELSEIF zwei readingsproxys (Steckdosen) immer einschalten, sobald jemand zu Hause ist. Das funktioniert aber nicht.
Täglich ab ca 20 Uhr sind die Steckdosen aus und auch ein "checkall" Befehl schaltet die Steckdosen nicht wieder an.
Wo könnte denn hier der Fehler zu finden sein?
Internals:
CFGFN
DEF ([08:00-00:29] and [Bewohner] eq "home" ) (set Master on;)
DOELSEIF ([Bewohner] eq "home" and ![00:31-06:30] and [FritzBox:box_wlan_5GHz] eq "off") (set FritzBox wlan on;)
DOELSEIF ([Bewohner] eq "home" and ![00:30-08:00] and [prxPort3d.2:state] eq "off") (set prxPort3d.2 on)
DOELSEIF ([Bewohner] eq "home" and [08:30]) ({TemperaturAnsage("Wetter", "Sonos_Kueche")})
DOELSEIF ([Bewohner] eq "absent") (sleep 60 ; set Master off; set FritzBox wlan off ; set FritzBox guestwlan off )
DOELSEIF ([Bewohner] eq "absent" and [E3b.4:"^on$"] ) (set mybot message Vorsicht! Jemand befindet sich in der Wohnung! Obwohl von uns keiner da ist.)
DOELSEIF ([Bewohner] eq "home") (set prxPort24.0 on; set prxPort22.7 on;)
DOELSE ()
FUUID 682ce3a8-f33f-e3f7-8ef9-c2d3cf3fa123b2ff
MODEL FHEM
NAME Wohnung
NOTIFYDEV prxPort3d.2,global,Bewohner,E3b.4,FritzBox
NR 14210
NTFY_ORDER 50-Wohnung
STATE initialized
TYPE DOIF
VERSION 29460 2024-12-29 20:25:48
eventCount 32
Helper:
DBLOG:
cmd:
logdb:
TIME 1747772328.32496
VALUE 0
mode:
logdb:
TIME 1747772328.32496
VALUE enabled
state:
logdb:
TIME 1747772328.32496
VALUE initialized
READINGS:
2025-05-20 22:29:53 cmd 0
2025-05-20 22:29:53 mode enabled
2025-05-20 22:29:53 state initialized
2025-05-20 22:29:53 timer_01_c01 21.05.2025 08:00:00
2025-05-20 22:29:53 timer_02_c01 21.05.2025 00:29:00
2025-05-20 22:29:53 timer_03_c02 21.05.2025 00:31:00
2025-05-20 22:29:53 timer_04_c02 21.05.2025 06:30:00
2025-05-20 22:29:53 timer_05_c03 21.05.2025 00:30:00
2025-05-20 22:29:53 timer_06_c03 21.05.2025 08:00:00
2025-05-20 22:29:53 timer_07_c04 21.05.2025 08:30:00
Regex:
accu:
bar:
barAvg:
collect:
cond:
Bewohner:
0:
&STATE ^Bewohner$
1:
&STATE ^Bewohner$
2:
&STATE ^Bewohner$
3:
&STATE ^Bewohner$
4:
&STATE ^Bewohner$
5:
&STATE ^Bewohner$
6:
&STATE ^Bewohner$
E3b.4:
5:
&STATE ^E3b.4$
FritzBox:
1:
box_wlan_5GHz ^FritzBox$:^box_wlan_5GHz:
prxPort3d.2:
2:
state ^prxPort3d.2$:^state:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms) and ::InternalDoIf($hash,'Bewohner','STATE') eq "home"
1 ::InternalDoIf($hash,'Bewohner','STATE') eq "home" and !::DOIF_time($hash,2,3,$wday,$hms) and ::ReadingValDoIf($hash,'FritzBox','box_wlan_5GHz') eq "off"
2 ::InternalDoIf($hash,'Bewohner','STATE') eq "home" and !::DOIF_time($hash,4,5,$wday,$hms) and ::ReadingValDoIf($hash,'prxPort3d.2','state') eq "off"
3 ::InternalDoIf($hash,'Bewohner','STATE') eq "home" and ::DOIF_time_once($hash,6,$wday)
4 ::InternalDoIf($hash,'Bewohner','STATE') eq "absent"
5 ::InternalDoIf($hash,'Bewohner','STATE') eq "absent" and ::EventDoIf('E3b.4',$hash,'^on$',1)
6 ::InternalDoIf($hash,'Bewohner','STATE') eq "home"
days:
do:
0:
0 set Master on;
1:
0 set FritzBox wlan on;
2:
0 set prxPort3d.2 on
3:
0 {TemperaturAnsage("Wetter", "Sonos_Kueche")}
4:
0 sleep 60 ; set Master off; set FritzBox wlan off ; set FritzBox guestwlan off
5:
0 set mybot message Vorsicht! Jemand befindet sich in der Wohnung! Obwohl von uns keiner da ist.
6:
0 set prxPort24.0 on; set prxPort22.7 on;
7:
0
helper:
NOTIFYDEV prxPort3d.2,global,Bewohner,E3b.4,FritzBox
globalinit 1
last_timer 7
sleeptimer -1
internals:
all Bewohner:STATE
interval:
0 -1
1 0
2 -1
3 2
4 -1
5 4
intervalfunc:
localtime:
0 1747807200
1 1747780140
2 1747780260
3 1747801800
4 1747780200
5 1747807200
6 1747809000
readings:
all FritzBox:box_wlan_5GHz prxPort3d.2:state
realtime:
0 08:00:00
1 00:29:00
2 00:31:00
3 06:30:00
4 00:30:00
5 08:00:00
6 08:30:00
time:
0 08:00:00
1 00:29:00
2 00:31:00
3 06:30:00
4 00:30:00
5 08:00:00
6 08:30:00
timeCond:
0 0
1 0
2 1
3 1
4 2
5 2
6 3
timer:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
timers:
0 0 1
1 2 3
2 4 5
3 6
trigger:
all E3b.4
triggertime:
1747780140:
localtime 1747780140
hash:
1747780200:
localtime 1747780200
hash:
1747780260:
localtime 1747780260
hash:
1747801800:
localtime 1747801800
hash:
1747807200:
localtime 1747807200
hash:
1747809000:
localtime 1747809000
hash:
uiState:
uiTable:
Attributes:
DbLogExclude .*
do always
Einiges fällt mir auf:
- Code nicht in Code Tags
- ; statt ,
- leeres DOELSE, zusätzlich do always
- unübersichtliche Sortierung der Bedingungen
- der Meesagebot wird nie eine Meldung
schicken, weil der Fall schon vorher angefangen wird - fhem sleep statt DOIF wait (kann richtig sein, das Ergebnis ist aber ein anderes)
- wer oder was schaltet die FB 20 Uhr aus?