Hallo
Ich habe das Problem das mein Wecker nicht mehr funktioniert. Bei dem Versuch eine Lösung zu finden beendet sich Fhem immer wieder mit folgendem, Logeintrag:
Can't use an undefined value as an ARRAY reference at /var/fhem/FHEM/98_DOIF.pm line 2081.
Genau nachdem ich ein checkall bei diesem DOIF ausführe.
define OG1_SZ_di_Wecker DOIF ([?$SELF:W_Aktiv, "off"] eq "on"\
and ([[$SELF:W_Montag]|1]\
or [[$SELF:W_Dienstag]|2]\
or [[$SELF:W_Mittwoch]|3]\
or [[$SELF:W_Donnerstag]|4]\
or [[$SELF:W_Freitag]|5]\
or [[$SELF:W_Samstag]|6]\
or [[$SELF:W_Sonntag]|0]))\
(set OG1_SZ_Radio on;;\
set TabletOG volume 9)\
DOELSEIF (["$SELF:W_Reset: on"])\
( set $SELF W_Montag 06:30;;\
set $SELF W_Dienstag 06:30;;\
set $SELF W_Mittwoch 06:30;;\
set $SELF W_Donnerstag 06:30;;\
set $SELF W_Freitag 06:30;;\
set $SELF W_Samstag 10:00;;\
set $SELF W_Sonntag 10:00)
attr OG1_SZ_di_Wecker do always
attr OG1_SZ_di_Wecker notexist "09:00"
attr OG1_SZ_di_Wecker readingList W_Aktiv W_Reset W_Montag W_Dienstag W_Mittwoch W_Donnerstag W_Freitag W_Samstag W_Sonntag
attr OG1_SZ_di_Wecker room OG1_Schlafzimmer
attr OG1_SZ_di_Wecker selftrigger wait
attr OG1_SZ_di_Wecker setList W_Aktiv:on,off W_Reset:on W_Montag:time W_Dienstag:time W_Mittwoch:time W_Donnerstag:time W_Freitag:time W_Samstag:time W_Sonntag:time
attr OG1_SZ_di_Wecker wait 1:1
Ich hänge jetzt schon seit Tagen an diesem Problem und hoffe auf Hilfe.
Gruß
Daniel
Hier das List von dem Device:
Internals:
CFGFN /var/fhem/FHEM/wecker.cfg
DEF ([?$SELF:W_Aktiv, "off"] eq "on"
and ([[$SELF:W_Montag]|1]
or [[$SELF:W_Dienstag]|2]
or [[$SELF:W_Mittwoch]|3]
or [[$SELF:W_Donnerstag]|4]
or [[$SELF:W_Freitag]|5]
or [[$SELF:W_Samstag]|6]
or [[$SELF:W_Sonntag]|0]))
(set OG1_SZ_Radio on;
set TabletOG volume 9)
DOELSEIF (["$SELF:W_Reset: on"])
( set $SELF W_Montag 06:30;
set $SELF W_Dienstag 06:30;
set $SELF W_Mittwoch 06:30;
set $SELF W_Donnerstag 06:30;
set $SELF W_Freitag 06:30;
set $SELF W_Samstag 10:00;
set $SELF W_Sonntag 10:00)
MODEL FHEM
NAME OG1_SZ_di_Wecker
NR 1392
NTFY_ORDER 50-OG1_SZ_di_Wecker
STATE initialized
TYPE DOIF
Helper:
DBLOG:
W_Aktiv:
mylogdb:
TIME 1537352341.71476
VALUE on
READINGS:
2018-09-19 12:19:01 W_Aktiv on
2018-09-19 11:25:39 W_Dienstag 06:30
2018-09-19 11:25:39 W_Donnerstag 06:30
2018-09-19 11:25:39 W_Freitag 06:30
2018-09-19 11:25:39 W_Mittwoch 06:30
2018-09-19 11:25:39 W_Montag 06:30
2018-09-19 11:25:39 W_Samstag 10:00
2018-09-19 11:25:39 W_Sonntag 10:00
2018-09-19 11:43:30 cmd 0
2018-09-19 11:43:30 mode enabled
2018-09-19 11:43:30 state initialized
2018-09-19 12:08:19 timer_01_c01 20.09.2018 06:30:00|1
2018-09-19 12:08:19 timer_02_c01 20.09.2018 06:30:00|2
2018-09-19 12:08:19 timer_03_c01 20.09.2018 06:30:00|3
2018-09-19 12:08:19 timer_04_c01 20.09.2018 06:30:00|4
2018-09-19 12:08:19 timer_05_c01 20.09.2018 06:30:00|5
2018-09-19 12:08:19 timer_06_c01 20.09.2018 10:00:00|6
2018-09-19 12:08:19 timer_07_c01 20.09.2018 10:00:00
Regex:
cond:
:
1:
"OG1_SZ_di_Wecker:W_Reset: on" OG1_SZ_di_Wecker:W_Reset: on
attr:
wait:
0:
1
1:
1
condition:
0 ReadingValDoIf($hash,'OG1_SZ_di_Wecker','W_Aktiv',' "off"') eq "on" and (DOIF_time_once($hash,0,$wday,"1") or DOIF_time_once($hash,1,$wday,"2") or DOIF_time_once($hash,2,$wday,"3") or DOIF_time_once($hash,3,$wday,"4") or DOIF_time_once($hash,4,$wday,"5") or DOIF_time_once($hash,5,$wday,"6") or DOIF_time_once($hash,6,$wday,"0"))
1 EventDoIf('OG1_SZ_di_Wecker',$hash,'W_Reset: on',0)
days:
0 1
1 2
2 3
3 4
4 5
5 6
devices:
do:
0:
0 set OG1_SZ_Radio on; set TabletOG volume 9
1:
0 set OG1_SZ_di_Wecker W_Montag 06:30; set OG1_SZ_di_Wecker W_Dienstag 06:30; set OG1_SZ_di_Wecker W_Mittwoch 06:30; set OG1_SZ_di_Wecker W_Donnerstag 06:30; set OG1_SZ_di_Wecker W_Freitag 06:30; set OG1_SZ_di_Wecker W_Samstag 10:00; set OG1_SZ_di_Wecker W_Sonntag 10:00
2:
helper:
globalinit 1
last_timer 7
sleeptimer -1
intervalfunc:
itimer:
all OG1_SZ_di_Wecker
localtime:
0 1537417800
1 1537417800
2 1537417800
3 1537417800
4 1537417800
5 1537430400
6 1537430400
perlblock:
realtime:
0 06:30:00
1 06:30:00
2 06:30:00
3 06:30:00
4 06:30:00
5 10:00:00
6 10:00:00
time:
0 [OG1_SZ_di_Wecker:W_Montag]
1 [OG1_SZ_di_Wecker:W_Dienstag]
2 [OG1_SZ_di_Wecker:W_Mittwoch]
3 [OG1_SZ_di_Wecker:W_Donnerstag]
4 [OG1_SZ_di_Wecker:W_Freitag]
5 [OG1_SZ_di_Wecker:W_Samstag]
6 [OG1_SZ_di_Wecker:W_Sonntag]
timeCond:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
timer:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
timers:
0 0 1 2 3 4 5 6
triggertime:
1537417800:
localtime 1537417800
hash:
1537430400:
localtime 1537430400
hash:
uiState:
uiTable:
Attributes:
do always
notexist "09:00"
readingList W_Aktiv W_Reset W_Montag W_Dienstag W_Mittwoch W_Donnerstag W_Freitag W_Samstag W_Sonntag
room OG1_Schlafzimmer
selftrigger wait
setList W_Aktiv:on,off W_Reset:on W_Montag:time W_Dienstag:time W_Mittwoch:time W_Donnerstag:time W_Freitag:time W_Samstag:time W_Sonntag:time
wait 1:1
Den Fehler werde ich ausbauen. Es liegt daran, dass beim set ... checkall keine Events vorliegen.
Unabhängig davon macht set ... checkall hier wenig Sinn, weil die Triggerangaben [?$SELF:W_Aktiv, "off"] oder ["$SELF:W_Reset: on"] dann nicht wahr sind und die jeweiligen Zweige nicht ausgeführt werden können.
Ok dann danke!
Da ich jetzt weis das das nichts mit meinem Problem zu tun hat kann ich weiter auf Fehlersuche gehen.
Ich konnte den Fehler bei mir zwar nicht nachstellen, habe aber die potentielle Fehlerquelle abgefangen - korrigierte Version eingecheckt.