Fehlermeldung bei $wday==1 im DOIF

Begonnen von T3mplate, 26 November 2017, 17:43:44

Vorheriges Thema - Nächstes Thema

T3mplate

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

Damian

$wday ist in der Bedingung eines DOIF definiert. Bei mir funktioniert es ohne Fehlermeldung. Möglicherweise kommt die Meldung von woanders her.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

T3mplate

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.

Damian

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