In einem DOIF möchte ich eine Auswertung je nach Wochentag machen. Da das nicht zu einer bestimmten Zeit erfolgen soll, möchte ich $wday==1 dazu verwenden.
Das list des devices sieht folgendermaßen aus:
Internals:
DEF ([":statDieselDayMinLast"] and $wday==1) (setreading $DEVICE Montag [$DEVICE:statDieselDayMinLast]) DOELSEIF
([":statDieselDayMinLast"] and $wday==2) (setreading $DEVICE Dienstag [$DEVICE:statDieselDayMinLast]) DOELSEIF
([":statDieselDayMinLast"] and $wday==3) (setreading $DEVICE Mittwoch [$DEVICE:statDieselDayMinLast]) DOELSEIF
([":statDieselDayMinLast"] and $wday==4) (setreading $DEVICE Donnerstag [$DEVICE:statDieselDayMinLast]) DOELSEIF
([":statDieselDayMinLast"] and $wday==5) (setreading $DEVICE Freitag [$DEVICE:statDieselDayMinLast]) DOELSEIF
([":statDieselDayMinLast"] and $wday==6) (setreading $DEVICE Samstag [$DEVICE:statDieselDayMinLast]) DOELSEIF
([":statDieselDayMinLast"] and $wday==0) (setreading $DEVICE Sonntag [$DEVICE:statDieselDayMinLast])
NAME Tankstelle_speichern
NR 608
NTFY_ORDER 50-Tankstelle_speichern
STATE disabled
TYPE DOIF
READINGS:
2017-11-10 00:25:50 Device Tankstelle_Sprint
2017-11-10 00:25:50 cmd 5
2017-11-10 00:25:50 cmd_event Tankstelle_Sprint
2017-11-10 00:25:50 cmd_nr 5
2017-11-20 20:50:40 last_cmd disabled
2017-11-10 00:25:50 matched_event_c1_1 statDieselDayMinLast: 1.1
2017-11-10 00:25:50 matched_event_c2_1 statDieselDayMinLast: 1.1
2017-11-10 00:25:50 matched_event_c3_1 statDieselDayMinLast: 1.1
2017-11-10 00:25:50 matched_event_c4_1 statDieselDayMinLast: 1.1
2017-11-10 00:25:50 matched_event_c5_1 statDieselDayMinLast: 1.1
2017-11-20 20:50:40 mode disabled
2017-11-20 20:50:40 state disabled
condition:
0 EventDoIf('',$hash,'statDieselDayMinLast',0) and $wday==1
1 EventDoIf('',$hash,'statDieselDayMinLast',0) and $wday==2
2 EventDoIf('',$hash,'statDieselDayMinLast',0) and $wday==3
3 EventDoIf('',$hash,'statDieselDayMinLast',0) and $wday==4
4 EventDoIf('',$hash,'statDieselDayMinLast',0) and $wday==5
5 EventDoIf('',$hash,'statDieselDayMinLast',0) and $wday==6
6 EventDoIf('',$hash,'statDieselDayMinLast',0) and $wday==0
devices:
do:
0:
0 setreading $DEVICE Montag [$DEVICE:statDieselDayMinLast]
1:
0 setreading $DEVICE Dienstag [$DEVICE:statDieselDayMinLast]
2:
0 setreading $DEVICE Mittwoch [$DEVICE:statDieselDayMinLast]
3:
0 setreading $DEVICE Donnerstag [$DEVICE:statDieselDayMinLast]
4:
0 setreading $DEVICE Freitag [$DEVICE:statDieselDayMinLast]
5:
0 setreading $DEVICE Samstag [$DEVICE:statDieselDayMinLast]
6:
0 setreading $DEVICE Sonntag [$DEVICE:statDieselDayMinLast]
7:
helper:
globalinit 1
last_timer 0
sleeptimer -1
bm:
DOIF_Notify:
cnt 84618
dmx 0
mTS 22.11. 04:42:47
max 7
tot 19
mAr:
HASH(Tankstelle_speichern)
HASH(Stefan_Handy_LANPing)
DOIF_Set:
cnt 13
dmx 0
mTS 20.11. 20:50:40
max 18
tot 18
mAr:
HASH(Tankstelle_speichern)
Tankstelle_speichern
disable
itimer:
regexp:
0:
0 :statDieselDayMinLast
1:
0 :statDieselDayMinLast
2:
0 :statDieselDayMinLast
3:
0 :statDieselDayMinLast
4:
0 :statDieselDayMinLast
5:
0 :statDieselDayMinLast
6:
0 :statDieselDayMinLast
all:
0 :statDieselDayMinLast
state:
STATE:
Attributes:
do always
room Spritpreise
Ziel ist es, dass alle Devices mit dem Reading "statDieselDayMinLast" bei der Aktualisierung den Wert speichern, damit ich eine Grafik über die Woche darstellen kann.
Folgende Fehlermeldung kommt im Log:
"2017.11.17 17:28:18 2: Global symbol "$wday" requires explicit package name at (eval 442093) line 1"
Ich habe das hier versucht, aber ohne Erfolg: https://forum.fhem.de/index.php/topic,50787.msg424211.html#msg424211
$wday ist in der Bedingung eines DOIF definiert. Bei mir funktioniert es ohne Fehlermeldung. Möglicherweise kommt die Meldung von woanders her.
Zitat von: Damian am 26 November 2017, 19:59:21
$wday ist in der Bedingung eines DOIF definiert. Bei mir funktioniert es ohne Fehlermeldung. Möglicherweise kommt die Meldung von woanders her.
OK. Der Fehler kommt tatsächlich von einem anderen Device, welches durch dieses hier getriggert wurde. Dadurch kam die Fehlermeldung immer zeitgleich mit einer Initialisierung.
Dennoch funktioniert dieses DOIF nicht. habe ich einen anderen Syntaxfehler?
([":statDieselDayMinLast"] and $wday==1) (setreading $DEVICE Montag [$DEVICE:statDieselDayMinLast])
Ziel ist es, dass sobald eines der 3 Devices mit dem Reading "statDieselDayMinLast" einen neuen Wert bekommt, dass dieser dann als Montag, Dienstag, ect. als Reading notiert wird.
Zitat von: T3mplate am 26 November 2017, 21:46:26
OK. Der Fehler kommt tatsächlich von einem anderen Device, welches durch dieses hier getriggert wurde. Dadurch kam die Fehlermeldung immer zeitgleich mit einer Initialisierung.
Dennoch funktioniert dieses DOIF nicht. habe ich einen anderen Syntaxfehler?
([":statDieselDayMinLast"] and $wday==1) (setreading $DEVICE Montag [$DEVICE:statDieselDayMinLast])
Ziel ist es, dass sobald eines der 3 Devices mit dem Reading "statDieselDayMinLast" einen neuen Wert bekommt, dass dieser dann als Montag, Dienstag, ect. als Reading notiert wird.
Ich kann hier keinen Fehler sehen. Allerdings war dein DOIF im list disabled.