Hallo,
da ich sporadisch auch Wochenenddienst habe, habe ich das neue Feature NoWeekend von Rudi in meiner Installation verwendet um den Wecker auch am Wochenende auslösen zu können.
Leider greift das DOIF nicht, obwohl {iswe()} als auch {$we} heute 0 liefern.
Wo könnte das Problem begraben liegen?
Hier das NoWeekend Device:
Internals:
FUUID 5d1b4e6f-f33f-69d4-de29-fa916742814858c8
HOLIDAYFILE ./FHEM/holiday/noWeekEnd.holiday
NAME noWeekEnd
NR 172
READONLY 1
STATE Einarbeiten
TRIGGERTIME 1569686402.98404
TYPE holiday
Helper:
DBLOG:
state:
logdb:
TIME 1569600002.98845
VALUE Einarbeiten
tomorrow:
logdb:
TIME 1569600002.98845
VALUE none
yesterday:
logdb:
TIME 1569600002.98845
VALUE none
READINGS:
2019-09-28 00:00:02 state Einarbeiten
2019-09-28 00:00:02 tomorrow none
2019-09-28 00:00:02 yesterday none
Attributes:
group Termine
und hier ist das DOIF:
Internals:
DEF ([$SELF:P_einaus,"off"] eq "on" and [[$SELF:P_weckzeit,"12:00"]] and !$we) (set Radio on;set Radio volume 10)
FUUID 5d4c1957-f33f-69d4-3147-3a6d70f2371f85d0
MODEL FHEM
NAME di.Wecker
NOTIFYDEV global,di.Wecker
NR 174
NTFY_ORDER 50-di.Wecker
STATE cmd_1
TYPE DOIF
VERSION 20191 2019-09-18 19:19:29
READINGS:
2019-09-03 05:49:44 P_einaus on
2019-09-03 16:55:32 P_weckzeit 05:30
2019-09-27 05:30:00 cmd 1
2019-09-27 05:30:00 cmd_event timer_1
2019-09-27 05:30:00 cmd_nr 1
2019-09-03 05:49:44 e_di.Wecker_P_einaus on
2019-08-08 20:50:50 mode enabled
2019-09-27 05:30:00 state cmd_1
2019-09-28 05:30:00 timer_01_c01 29.09.2019 05:30:00
Regex:
accu:
cond:
di.Wecker:
0:
P_einaus ^di.Wecker$:^P_einaus:
itimer:
di.Wecker:
itimer:
P_weckzeit ^di.Wecker$:^P_weckzeit:
condition:
0 ::ReadingValDoIf($hash,'di.Wecker','P_einaus','"off"') eq "on" and ::DOIF_time_once($hash,0,$wday) and !$we
days:
do:
0:
0 set Radio on;set Radio volume 10
1:
helper:
event timer_1
globalinit 1
last_timer 1
sleeptimer -1
triggerDev
triggerEvents:
timer_1
triggerEventsState:
timer_1
interval:
intervalfunc:
localtime:
0 1569706200
perlblock:
readings:
all di.Wecker:P_einaus
realtime:
0 05:30:00
time:
0 [di.Wecker:P_weckzeit,"12:00"]
timeCond:
0 0
timer:
0 0
timers:
0 0
triggertime:
1569706200:
localtime 1569706200
hash:
uiState:
uiTable:
Attributes:
alias Wecker
do always
group Wecker
readingList P_einaus P_weckzeit
room SZ
setList P_einaus:uzsuSelectRadio,on,off P_weckzeit:time
webCmd P_einaus:P_weckzeit
Gruß
Alex
Wie spät ist es bei dir? Da wurde ein Reading in die Zukunft gesetzt??
Zitat2019-09-28 05:30:00 timer_01_c01 29.09.2019 05:30:00
Ich würde statt
and [[$SELF:P_weckzeit,"12:00"]] and !$we
eher
and [[$SELF:P_weckzeit,"12:00"]|8]
schreiben.
Somit wird weckzeit nur bei !$we triggern.
Deine Variante triggert jeden Tag, und erst dann !$we bewertet.
Hallo amenomade, danke für die Rückmeldung.
Die Zeit ist ok, ich befinde mich in einer anderen Zeitzone ;-)
Ist denn |8 analog zu !$we (auch in Bezug auf NoWeekend)?
Gruß
Alex
Afaik verwendet DOIF eine eigene Auswertung für $we und kennt daher eventuell noWeekend nicht (bzw. wertet das "falsch herum" aus).
Dass jedes Modul eine eigene Logik für $we benötigt hatte, war grade Anlaß für die Einführung von IsWe().
Ja, laut Doku sollte |8 gleich wie !$we sein. In Bezug auf noWeekend, weiss ich nicht.
@Beta-User: Du meinst !IsWe() könnte besser funktionieren als !$we ?
DOIF kennt z. Zt. NoWeekend nicht. Ich werde die Auswertung des Wochentags im DOIF auf IsWe umstellen, damit es einheitlich funktioniert.
Zitat von: Damian am 28 September 2019, 14:47:52
DOIF kennt z. Zt. NoWeekend nicht. Ich werde die Auswertung des Wochentags im DOIF auf IsWe umstellen, damit es einheitlich funktioniert.
Neue DOIF-Version eingecheckt.
Hallo zusammen,
danke, werde ich ausprobieren wenn ich wieder daheim bin.
Gruß
Alex