Ich möchte bei verschiedenen DOIFs, die gleichzeitig getriggert werden eine Zeitverzögerung des ersten Befehls erreichen.
Gemäß commandref sollte es so aussehen:
Beispieldefinition bei mehreren DO-Blöcken mit Befehlssequenzen:
DOIF (Bedingung1)
(set ...) ## erster Befehl der ersten Sequenz soll um eine Sekunde verzögert werden
(set ...) ## zweiter Befehl der ersten Sequenz soll um 2 Sekunden nach dem ersten Befehl verzögert werden
DOELSEIF (Bedingung2)
(set ...) ## erster Befehl der zweiten Sequenz soll um 3 Sekunden verzögert werden
(set ...) ## zweiter Befehl der zweiten Sequenz soll um 0,5 Sekunden nach dem ersten Befehl verzögert werden
attr <DOIF-module> wait 1,2:3,0.5
Das list meines Tests sieht so aus:
Internals:
DEF ([[$SELF:HAn]-[$SELF:HEn]])
(set Dummy11 on)
(set Dummy12 on)
DOELSE
(set Dummy11 off)
(set Dummy12 off)
FUUID 5c765501-f33f-d4cb-e59c-64c459b277e00aa7
MODEL FHEM
NAME Test1
NR 193
NTFY_ORDER 50-Test1
STATE cmd_2
TYPE DOIF
VERSION 18706 2019-02-23 21:48:22
READINGS:
2019-02-27 10:40:46 HAn 10:45
2019-02-27 10:46:09 HEn 10:50
2019-02-27 10:50:10 cmd 2.2
2019-02-27 10:50:10 cmd_event timer_2
2019-02-27 10:50:10 cmd_nr 2
2019-02-27 10:50:10 cmd_seqnr 2
2019-02-27 10:42:53 mode enabled
2019-02-27 10:50:10 state cmd_2
2019-02-27 10:50:00 timer_01_c01 28.02.2019 10:45:00
2019-02-27 10:50:00 timer_02_c01 28.02.2019 10:50:00
2019-02-27 10:50:10 wait_timer no timer
Regex:
accu:
attr:
cmdState:
wait:
0:
5
10
1:
5
10
waitdel:
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms)
days:
devices:
do:
0:
0 set Dummy11 on
1 set Dummy12 on
1:
0 set Dummy11 off
1 set Dummy12 off
helper:
event timer_2
globalinit 1
last_timer 2
sleepdevice timer_2
sleepsubtimer -1
sleeptimer -1
timerdev
timerevent timer_2
timereventsState
triggerDev
triggerEventsState
DOIF_eventas:
cmd_nr: 2
cmd_seqnr: 2
cmd_event: timer_2
state: cmd_2
timerevents:
timer_2
triggerEvents:
timer_2
internals:
interval:
0 -1
1 0
intervalfunc:
intervaltimer:
itimer:
all Test1
localtime:
0 1551347100
1 1551347400
readings:
realtime:
0 10:45:00
1 10:50:00
time:
0 [Test1:HAn]
1 [Test1:HEn]
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
triggertime:
1551347100:
localtime 1551347100
hash:
1551347400:
localtime 1551347400
hash:
uiState:
uiTable:
Attributes:
readingList HAn HEn
room DOIF
setList HAn:time HEn:time
verbose 5
wait 5,10:5,10
webCmd HAn:HEn
Das Ergebnis im EventMonitor zeigt aber,dass keine Verzögerung des ersten Befehls erfolgt:
2019-02-27 10:45:00 dummy Dummy11 on
2019-02-27 10:45:00 DOIF Test1 cmd_nr: 1
2019-02-27 10:45:00 DOIF Test1 cmd_seqnr: 1
2019-02-27 10:45:00 DOIF Test1 cmd: 1.1
2019-02-27 10:45:00 DOIF Test1 cmd_event: timer_1
2019-02-27 10:45:00 DOIF Test1 cmd_1_1
2019-02-27 10:45:00 DOIF Test1 wait_timer: 27.02.2019 10:45:10 cmd_1_2 timer_1
2019-02-27 10:45:10 DOIF Test1 wait_timer: no timer
2019-02-27 10:45:10 dummy Dummy12 on
2019-02-27 10:45:10 DOIF Test1 cmd_nr: 1
2019-02-27 10:45:10 DOIF Test1 cmd_seqnr: 2
2019-02-27 10:45:10 DOIF Test1 cmd: 1.2
2019-02-27 10:45:10 DOIF Test1 cmd_event: timer_1
2019-02-27 10:45:10 DOIF Test1 cmd_1
2019-02-27 10:50:00 dummy Dummy11 off
2019-02-27 10:50:00 DOIF Test1 cmd_nr: 2
2019-02-27 10:50:00 DOIF Test1 cmd_seqnr: 1
2019-02-27 10:50:00 DOIF Test1 cmd: 2.1
2019-02-27 10:50:00 DOIF Test1 cmd_event: timer_2
2019-02-27 10:50:00 DOIF Test1 cmd_2_1
2019-02-27 10:50:00 DOIF Test1 wait_timer: 27.02.2019 10:50:10 cmd_2_2 timer_2
2019-02-27 10:50:10 DOIF Test1 wait_timer: no timer
2019-02-27 10:50:10 dummy Dummy12 off
2019-02-27 10:50:10 DOIF Test1 cmd_nr: 2
2019-02-27 10:50:10 DOIF Test1 cmd_seqnr: 2
2019-02-27 10:50:10 DOIF Test1 cmd: 2.2
2019-02-27 10:50:10 DOIF Test1 cmd_event: timer_2
2019-02-27 10:50:10 DOIF Test1 cmd_2
Wo ist mein Denkfehler?
Du verwendest eine Zeitangabe mit wait zusammen, damit das funktioniert gibt es ein Attribut, es ist in der Attributliste leicht zu finden ;)
Alternativ könntest Du die die erste Wartezeit des ersten Zweiges zum Timer addieren.
Vieln Dank Ellert,
wie war das mit dem Wald und den vielen Attributen. :P