Hi,
mein DOIF für Zeitgesteuerte Steckdose Schaltung macht nicht ganz was sie soll.
Die Steckdose wird bei jedem timer event ausgeschaltet.
[SSR2_mode] steht auf on
log:
2019.10.27 17:30:00 5 : Cmd: >set SSR2 off<
2019.10.27 17:30:00 5 : SSR2, in fileaccess: value 0
2019.10.27 17:30:00 5 : Starting notify loop for SSR2, 1 event(s), first is off
2019-10-27 17:30:00 RPI_GPIO SSR2 off
2019.10.27 17:30:00 5 : wird an setextensions gesendet: SSR2 ?
2019.10.27 17:30:00 5 : End notify loop for SSR2
2019.10.27 17:30:00 5 : Starting notify loop for SSR2_doif, 4 event(s), first is cmd_nr: 6
2019-10-27 17:30:00 DOIF SSR2_doif cmd_nr: 6
2019-10-27 17:30:00 DOIF SSR2_doif cmd: 6
2019-10-27 17:30:00 DOIF SSR2_doif cmd_event: timer_4
2019-10-27 17:30:00 DOIF SSR2_doif cmd_6
2019.10.27 17:30:00 5 : End notify loop for SSR2_doif
definition:
defmod SSR2_doif DOIF ([[SSR2_an]-[SSR2_aus]] and [SSR2_mode] eq "auto" and [SSR2_day] =~ $wday and [SSR2_day_dummy] eq "on") (set SSR2 on) \
DOELSEIF \
([[SSR2_an_2]-[SSR2_aus_2]] and [SSR2_mode] eq "auto" and [SSR2_day_2] =~ $wday and [SSR2_day_2_dummy] eq "on") (set SSR2 on) \
DOELSEIF \
([SSR2_mode] eq "off") (set SSR2 off) \
DOELSEIF \
([SSR2_mode] eq "on") (set SSR2 on) \
DOELSEIF\
([SSR2_mode] eq "timer") (set SSR2 on-for-timer [SSR2_timer:SSR_2_timer])\
DOELSE (set SSR2 off)
attr SSR2_doif do always
attr SSR2_doif room GPIO
setstate SSR2_doif cmd_6
setstate SSR2_doif 2019-10-27 09:49:43 Device SSR2_mode
setstate SSR2_doif 2019-10-27 17:30:00 cmd 6
setstate SSR2_doif 2019-10-27 17:30:00 cmd_event timer_4
setstate SSR2_doif 2019-10-27 17:30:00 cmd_nr 6
setstate SSR2_doif 2019-02-20 05:48:12 e_SSR2_day_2_dummy_STATE off
setstate SSR2_doif 2019-02-20 05:48:10 e_SSR2_day_dummy_STATE off
setstate SSR2_doif 2019-10-27 09:49:43 e_SSR2_mode_STATE on
setstate SSR2_doif 2019-10-27 17:03:35 mode enabled
setstate SSR2_doif 2019-10-27 17:30:00 state cmd_6
setstate SSR2_doif 2019-10-27 07:00:00 timer_01_c01 28.10.2019 05:00:00
setstate SSR2_doif 2019-10-27 07:00:00 timer_02_c01 28.10.2019 07:00:00
setstate SSR2_doif 2019-10-27 17:30:00 timer_03_c02 28.10.2019 16:00:00
setstate SSR2_doif 2019-10-27 17:30:00 timer_04_c02 28.10.2019 17:30:00
list SSR2_doif:
Internals:
DEF ([[SSR2_an]-[SSR2_aus]] and [SSR2_mode] eq "auto" and [SSR2_day] =~ $wday and [SSR2_day_dummy] eq "on") (set SSR2 on)
DOELSEIF
([[SSR2_an_2]-[SSR2_aus_2]] and [SSR2_mode] eq "auto" and [SSR2_day_2] =~ $wday and [SSR2_day_2_dummy] eq "on") (set SSR2 on)
DOELSEIF
([SSR2_mode] eq "off") (set SSR2 off)
DOELSEIF
([SSR2_mode] eq "on") (set SSR2 on)
DOELSEIF
([SSR2_mode] eq "timer") (set SSR2 on-for-timer [SSR2_timer:SSR_2_timer])
DOELSE (set SSR2 off)
MODEL FHEM
NAME SSR2_doif
NR 662
NTFY_ORDER 50-SSR2_doif
STATE cmd_6
TYPE DOIF
.attraggr:
.attrminint:
READINGS:
2019-10-27 09:49:43 Device SSR2_mode
2019-10-27 17:30:00 cmd 6
2019-10-27 17:30:00 cmd_event timer_4
2019-10-27 17:30:00 cmd_nr 6
2019-02-20 05:48:12 e_SSR2_day_2_dummy_STATE off
2019-02-20 05:48:10 e_SSR2_day_dummy_STATE off
2019-10-27 09:49:43 e_SSR2_mode_STATE on
2019-10-27 17:03:35 mode enabled
2019-10-27 17:30:00 state cmd_6
2019-10-27 07:00:00 timer_01_c01 28.10.2019 05:00:00
2019-10-27 07:00:00 timer_02_c01 28.10.2019 07:00:00
2019-10-27 17:30:00 timer_03_c02 28.10.2019 16:00:00
2019-10-27 17:30:00 timer_04_c02 28.10.2019 17:30:00
Regex:
attrtimer:
wait:
waitdel:
condition:
0 DOIF_time($hash,0,1,$wday,$hms) and InternalDoIf($hash,'SSR2_mode','STATE') eq "auto" and InternalDoIf($hash,'SSR2_day','STATE') =~ $wday and InternalDoIf($hash,'SSR2_day_dummy','STATE') eq "on"
1 DOIF_time($hash,2,3,$wday,$hms) and InternalDoIf($hash,'SSR2_mode','STATE') eq "auto" and InternalDoIf($hash,'SSR2_day_2','STATE') =~ $wday and InternalDoIf($hash,'SSR2_day_2_dummy','STATE') eq "on"
2 InternalDoIf($hash,'SSR2_mode','STATE') eq "off"
3 InternalDoIf($hash,'SSR2_mode','STATE') eq "on"
4 InternalDoIf($hash,'SSR2_mode','STATE') eq "timer"
days:
devices:
0 SSR2_mode SSR2_day SSR2_day_dummy
1 SSR2_mode SSR2_day_2 SSR2_day_2_dummy
2 SSR2_mode
3 SSR2_mode
4 SSR2_mode
all SSR2_mode SSR2_day SSR2_day_dummy SSR2_day_2 SSR2_day_2_dummy
do:
0:
0 set SSR2 on
1:
0 set SSR2 on
2:
0 set SSR2 off
3:
0 set SSR2 on
4:
0 set SSR2 on-for-timer [SSR2_timer:SSR_2_timer]
5:
0 set SSR2 off
helper:
DOIF_Readings_events
DOIF_eventas
event timer_4
globalinit 1
last_timer 4
sleeptimer -1
timerdev
timerevent timer_4
triggerDev
timerevents:
timer_4
timereventsState:
state: on
triggerEvents:
timer_4
triggerEventsState:
state: on
internals:
0 SSR2_mode:STATE SSR2_day:STATE SSR2_day_dummy:STATE
1 SSR2_mode:STATE SSR2_day_2:STATE SSR2_day_2_dummy:STATE
2 SSR2_mode:STATE
3 SSR2_mode:STATE
4 SSR2_mode:STATE
all SSR2_mode:STATE SSR2_day:STATE SSR2_day_dummy:STATE SSR2_day_2:STATE SSR2_day_2_dummy:STATE
interval:
0 -1
1 0
2 -1
3 2
intervalfunc:
intervaltimer:
itimer:
all SSR2_an SSR2_aus SSR2_an_2 SSR2_aus_2
localtime:
0 1572235200
1 1572242400
2 1572274800
3 1572280200
perlblock:
readings:
realtime:
0 05:00:00
1 07:00:00
2 16:00:00
3 17:30:00
time:
0 [SSR2_an]
1 [SSR2_aus]
2 [SSR2_an_2]
3 [SSR2_aus_2]
timeCond:
0 0
1 0
2 1
3 1
timer:
0 0
1 0
2 0
3 0
timers:
0 0 1
1 2 3
trigger:
triggertime:
1572235200:
localtime 1572235200
hash:
1572242400:
localtime 1572242400
hash:
1572274800:
localtime 1572274800
hash:
1572280200:
localtime 1572280200
hash:
uiState:
uiTable:
Attributes:
do always
room GPIO
wer findet den Fehler??
wenn ich das DOIF von Hand (checkall) setze, wird der richtige Befehl ausgelöst (cmd_4) also SSR2 "on"
MfG Maik
Aus deinem "list":
timer4 (17:30) hat getriggert.
Zitat von: CommandRefZu beachten ist, dass nur die Bedingungen überprüft werden, die zum ausgelösten Event das dazughörige Device bzw. die dazugehörige Triggerzeit beinhalten.
=> DOELSE cmd6 off
Mit checkall werden tatsächlich alle Bedingungen geprüft. Die erste wahre ist die 4 => on
Ok,
Wie kann ich das Problem lösen?
Mfg Maik
Z.B. so: https://fhem.de/commandref_DE.html#DOIF_checkall
Zitat von: amenomade am 27 Oktober 2019, 18:43:48
Z.B. so: https://fhem.de/commandref_DE.html#DOIF_checkall
Danke funktioniert mit checkall-all