Hallo zusammen!
Ich knoble an einem vermeintlich simplen DOIF: Es soll einmal wöchentlich ein reduceLog ausgeführt werden. Wegen der Wochentags-Logik möchte ich das gerne mit einem DOIF und nicht mit einem einfach at machen.
defmod dif_MySQL_reduceLog DOIF ([02:30|Mi]) (set rep_MySQL_reduceLog reduceLog average)
Nach dem Anlegen bzw. Initialisieren funktioniert das DOIF genau einmal und bleibt dann immer auf "cmd1" stehen. Ich habe alternativ auch schon
defmod dif_MySQL_reduceLog DOIF ([02:30|Mi]) (set rep_MySQL_reduceLog reduceLog average) DOELSE ()
versucht, das ändert aber nichts.
Wo ist denn mein Denkfehler, warum funktioniert das nicht?
Hier noch das komplette List:
Internals:
DEF ([02:30|Mi]) (set rep_MySQL_reduceLog reduceLog average) DOELSE ()
FUUID 5d4eba31-f33f-73da-5952-ef0a5dd320983059
MODEL FHEM
NAME dif_MySQL_reduceLog
NOTIFYDEV global
NR 487
NTFY_ORDER 50-dif_MySQL_reduceLog
STATE cmd_1
TYPE DOIF
VERSION 22428 2020-07-18 20:32:08
READINGS:
2020-10-07 02:30:00 cmd 1
2020-10-07 02:30:00 cmd_event timer_1
2020-10-07 02:30:00 cmd_nr 1
2020-09-30 08:20:47 mode enabled
2020-10-07 02:30:00 state cmd_1
2020-10-08 02:30:00 timer_01_c01 09.10.2020 02:30:00|Mi
Regex:
accu:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::DOIF_time_once($hash,0,$wday,"Mi")
days:
0 Mi
do:
0:
0 set rep_MySQL_reduceLog reduceLog average
1:
0
helper:
DEVFILTER ^global$
NOTIFYDEV global
event timer_1
globalinit 1
last_timer 1
sleeptimer -1
timerdev
timerevent timer_1
triggerDev
timerevents:
timer_1
timereventsState:
timer_1
triggerEvents:
timer_1
triggerEventsState:
timer_1
interval:
intervalfunc:
localtime:
0 1602203400
realtime:
0 02:30:00
time:
0 02:30:00
timeCond:
0 0
timer:
0 0
timers:
0 0
triggertime:
1602203400:
localtime 1602203400
hash:
uiState:
uiTable:
Attributes:
group DbLog
Ich habe FHEM schon ein paar Monate nicht mehr aktualisiert und würde das auch gerne vermeiden. Die Version vom DOIF Modul ist die 22428. Wenn es am Versionsstand liegt, dann würde ich das DOIF selektiv aktualisieren.
Viele Grüße,
weini
https://fhem.de/commandref_DE.html#DOIF_do_always
Danke dir!
Kenne ich natürlich. Dann mache ich das gerne so.
Ich hatte nur gedacht, dass die Bedingung "[02:30|Mi]" nach 2:30 nicht mehr erfüllt ist und er damit auf cmd2 gehen müsste.
Muss das DOELSE () drin bleiben oder kann ich mir das sparen?
Zitat von: weini am 08 Oktober 2020, 07:39:51
Danke dir!
Kenne ich natürlich. Dann mache ich das gerne so.
Ich hatte nur gedacht, dass die Bedingung "[02:30|Mi]" nach 2:30 nicht mehr erfüllt ist und er damit auf cmd2 gehen müsste.
Muss das DOELSE () drin bleiben oder kann ich mir das sparen?
Und wer soll es nach 2:30 Uhr triggern?
DOELSE brauchst du bei do always nicht.
PS.
Im Perl-Modus braucht man z. B. kein do always
defmod dif_MySQL_reduceLog DOIF {[02:30|Mi];;fhem_set("rep_MySQL_reduceLog reduceLog average")}
Du hast ja recht, ist eigentlich unter "Ereignissteuerung" gut beschrieben.
Danke dir nochmals!