[gelöst]Fhem bendet sich beim checkall

Begonnen von WhyTea, 19 September 2018, 12:21:07

Vorheriges Thema - Nächstes Thema

WhyTea

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

Damian

#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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

WhyTea

Ok dann danke!

Da ich jetzt weis das das nichts mit meinem Problem zu tun hat kann ich weiter auf Fehlersuche gehen.

Damian

Ich konnte den Fehler bei mir zwar nicht nachstellen, habe aber die potentielle Fehlerquelle abgefangen - korrigierte Version eingecheckt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF