ich habe folgendes DOIF zum Test
([14:23]) (set dummy on,set $SELF initialize)
Leider setzt es sich nicht selbst auf initialize, der STATE bleibt auf cmd_1.
Ist das nicht vorgesehen ?
list do_test
Internals:
CFGFN
DEF ([14:23]) (set dummy on,set $SELF initialize)
NAME do_test
NR 13598
NTFY_ORDER 50-do_test
STATE cmd_1
TYPE DOIF
Helper:
Dblog:
Cmd:
Mydblog:
TIME 1482498948.41724
VALUE 0
State:
Mydblog:
TIME 1482498948.41724
VALUE initialized
Readings:
2016-12-23 14:23:00 cmd 1
2016-12-23 14:23:00 cmd_event timer_1
2016-12-23 14:23:00 cmd_nr 1
2016-12-23 14:23:00 state cmd_1
2016-12-23 14:23:00 timer_1_c1 24.12.2016 14:23:00
Condition:
0 DOIF_time_once($hash,$hash->{timer}{0},$wday,"")
Days:
Devices:
Do:
0:
0 set dummy on,set do_test initialize
Helper:
event timer_1
globalinit 1
last_timer 1
sleeptimer -1
timerdev
timerevent timer_1
timereventsState
triggerDev
timerevents:
timer_1
triggerEvents:
timer_1
Internals:
Interval:
Itimer:
Localtime:
0 1482585780
Readings:
Realtime:
0 14:23:00
Regexp:
State:
Time:
0 14:23:00
Timecond:
0 0
Timer:
0 0
Timers:
0 0
Triggertime:
1482585780:
localtime 1482585780
Hash:
Attributes:
DbLogExclude .*
Frohes Fest in die Runde !
Zitat von: kumue am 23 Dezember 2016, 14:28:32
ich habe folgendes DOIF zum Test
([14:23]) (set dummy on,set $SELF initialize)
Leider setzt es sich nicht selbst auf initialize, der STATE bleibt auf cmd_1.
Ist das nicht vorgesehen ?
list do_test
Internals:
CFGFN
DEF ([14:23]) (set dummy on,set $SELF initialize)
NAME do_test
NR 13598
NTFY_ORDER 50-do_test
STATE cmd_1
TYPE DOIF
Helper:
Dblog:
Cmd:
Mydblog:
TIME 1482498948.41724
VALUE 0
State:
Mydblog:
TIME 1482498948.41724
VALUE initialized
Readings:
2016-12-23 14:23:00 cmd 1
2016-12-23 14:23:00 cmd_event timer_1
2016-12-23 14:23:00 cmd_nr 1
2016-12-23 14:23:00 state cmd_1
2016-12-23 14:23:00 timer_1_c1 24.12.2016 14:23:00
Condition:
0 DOIF_time_once($hash,$hash->{timer}{0},$wday,"")
Days:
Devices:
Do:
0:
0 set dummy on,set do_test initialize
Helper:
event timer_1
globalinit 1
last_timer 1
sleeptimer -1
timerdev
timerevent timer_1
timereventsState
triggerDev
timerevents:
timer_1
triggerEvents:
timer_1
Internals:
Interval:
Itimer:
Localtime:
0 1482585780
Readings:
Realtime:
0 14:23:00
Regexp:
State:
Time:
0 14:23:00
Timecond:
0 0
Timer:
0 0
Timers:
0 0
Triggertime:
1482585780:
localtime 1482585780
Hash:
Attributes:
DbLogExclude .*
Frohes Fest in die Runde !
Der hat sich bestimmt initialisiert. Nach der Ausführung des Befehlszweigs wird der entsprechende Zustand (hier: cmd_1) gesetzt. Hast du etwas anders erwartet?
Erwartet hatte ich, daß es dann wieder auf initalize steht (state/STATE)
ich habe es mal mit dem wait-Attribut versucht..., dummy wird auf on gesetzt, 30sec später der zweite Befehlsteil ausgeführt, aber der Staus geht nicht auf initialize
list do_test
Internals:
CFGFN
DEF ([14:40]) (set dummy on) (set $SELF initialize)
NAME do_test
NR 13598
NTFY_ORDER 50-do_test
STATE cmd_1
TYPE DOIF
Helper:
Dblog:
Cmd:
Mydblog:
TIME 1482498948.41724
VALUE 0
State:
Mydblog:
TIME 1482498948.41724
VALUE initialized
Readings:
2016-12-23 14:40:30 cmd 1.2
2016-12-23 14:40:30 cmd_event timer_1
2016-12-23 14:40:30 cmd_nr 1
2016-12-23 14:40:30 cmd_seqnr 2
2016-12-23 14:40:30 state cmd_1
2016-12-23 14:40:00 timer_1_c1 24.12.2016 14:40:00
2016-12-23 14:40:30 wait_timer no timer
Condition:
0 DOIF_time_once($hash,$hash->{timer}{0},$wday,"")
Days:
Devices:
Do:
0:
0 set dummy on
1 set do_test initialize
Helper:
event timer_1
globalinit 1
last_timer 1
sleepdevice timer_1
sleepsubtimer -1
sleeptimer -1
timerdev
timerevent timer_1
timereventsState
triggerDev
triggerEventsState
timerevents:
timer_1
triggerEvents:
timer_1
Internals:
Interval:
Itimer:
Localtime:
0 1482586800
Readings:
Realtime:
0 14:40:00
Regexp:
State:
Time:
0 14:40:00
Timecond:
0 0
Timer:
0 0
Timers:
0 0
Triggertime:
1482586800:
localtime 1482586800
Hash:
Attributes:
DbLogExclude .*
wait 0,30
So würde es ja morgen um 14.40 Uhr nicht wieder triggern, da do always nicht gesetzt ist... oder ?
Zitat von: kumue am 23 Dezember 2016, 14:48:11
Erwartet hatte ich, daß es dann wieder auf initalize steht (state/STATE)
ich habe es mal mit dem wait-Attribut versucht..., dummy wird auf on gesetzt, 30sec später der zweite Befehlsteil ausgeführt, aber der Staus geht nicht auf initialize
list do_test
Internals:
CFGFN
DEF ([14:40]) (set dummy on) (set $SELF initialize)
NAME do_test
NR 13598
NTFY_ORDER 50-do_test
STATE cmd_1
TYPE DOIF
Helper:
Dblog:
Cmd:
Mydblog:
TIME 1482498948.41724
VALUE 0
State:
Mydblog:
TIME 1482498948.41724
VALUE initialized
Readings:
2016-12-23 14:40:30 cmd 1.2
2016-12-23 14:40:30 cmd_event timer_1
2016-12-23 14:40:30 cmd_nr 1
2016-12-23 14:40:30 cmd_seqnr 2
2016-12-23 14:40:30 state cmd_1
2016-12-23 14:40:00 timer_1_c1 24.12.2016 14:40:00
2016-12-23 14:40:30 wait_timer no timer
Condition:
0 DOIF_time_once($hash,$hash->{timer}{0},$wday,"")
Days:
Devices:
Do:
0:
0 set dummy on
1 set do_test initialize
Helper:
event timer_1
globalinit 1
last_timer 1
sleepdevice timer_1
sleepsubtimer -1
sleeptimer -1
timerdev
timerevent timer_1
timereventsState
triggerDev
triggerEventsState
timerevents:
timer_1
triggerEvents:
timer_1
Internals:
Interval:
Itimer:
Localtime:
0 1482586800
Readings:
Realtime:
0 14:40:00
Regexp:
State:
Time:
0 14:40:00
Timecond:
0 0
Timer:
0 0
Timers:
0 0
Triggertime:
1482586800:
localtime 1482586800
Hash:
Attributes:
DbLogExclude .*
wait 0,30
So würde es ja morgen um 14.40 Uhr nicht wieder triggern, da do always nicht gesetzt ist... oder ?
Wie schon geschrieben wird nach der Ausführung des Befehlszweigs der Zustand gesetzt und nicht vorher, da dieser im Befehlszweig vom User abgefragt werden kann. Damit wirst du es nicht schaffen innerhalb des selben Moduls den Zustand selbst zu beeinflussen.
Hintergrund des Ganzen: Ein Dash Button, der mehrere short events absetzt.
Das DOIF dazu:
(["^SW_Dash_05:short"]) (msg 1 blablabla)
Ist do always gesetzt, bekomme ich eben auch mehrere Messages, was natürlich nicht gewollt ist.
Deshalb habe ich do always weggelassen. Auch Tests mit event-min-interval waren nicht vielversprechend.
Nun dachte ich mir, daß das DOIF sich ja nach 1min wieder selbst initilisieren kann.
(["^SW_Dash_05:short"]) (msg 1 blablabla) (set $SELF initialize)
wait 0,60
Workaround derzeit: Ein at, welches das DOIF nachts wieder auf initialize setzt.
1. Müsste das nicht
set [$SELF] initialize
heißen?
2. Was, wenn du mit cmdState ...|initialize arbeitest?
3. Was ist mit cmdPause?
Zitat von: Per am 23 Dezember 2016, 15:15:15
1. Müsste das nicht
set [$SELF] initialize
heißen?
2. Was, wenn du mit cmdState ...|initialize arbeitest?
3. Was ist mit cmdPause?
Mit
set [$SELF] initialize
kommt FM
DO_SW_Dash_05: set cmd_1_1 initialize: Please define cmd_1_1 first
Die anderen Attribute schau ich mir an.
Danke schon mal.
Zitat von: Per am 23 Dezember 2016, 15:15:15
3. Was ist mit cmdPause?
Mit cmdPause und noch do always funktioniert es ;)
Danke !