gelöst: Zeitverzögerung bei DOIF funktioniert bei mir nicht richtig

Begonnen von wk, 27 Februar 2019, 11:02:01

Vorheriges Thema - Nächstes Thema

wk

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?

Ellert

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.

wk

Vieln Dank Ellert,

wie war das mit dem Wald und den vielen Attributen.   :P