Ich benötige ein verzögertes Ausführen von Befehlen. Dazu habe ich folgendes DOIF definiert:
Internals:
CFGFN
DEF ([ESPEasy_ESP_G01:z.boot] == 1) (
(set ESPEasy_ESP_G01 raw event,set_z.var1=[ESPEasy_ESP_G19:z.Zaehlerstand])
(set ESPEasy_ESP_G01 raw event,set_z.var2=[ESPEasy_ESP_G19:z.total_Tag])
(set ESPEasy_ESP_G01 raw event,set_z.var3=[ESPEasy_ESP_G19:z.Hzg_Tag])
(set ESPEasy_ESP_G01 raw event,set_z.var4=[ESPEasy_ESP_G19:z.WW_Tag])
(set ESPEasy_ESP_G01 raw event,set_z.boot=0)
)
NAME doif.Test_Var_Set
NR 1254293
NTFY_ORDER 50-doif.Test_Var_Set
STATE cmd_2
TYPE DOIF
READINGS:
2018-03-18 18:40:46 Device ESPEasy_ESP_G01
2018-03-18 18:40:46 cmd 2
2018-03-18 18:40:46 cmd_event ESPEasy_ESP_G01
2018-03-18 18:40:46 cmd_nr 2
2018-03-18 18:40:46 e_ESPEasy_ESP_G01_z.boot 0
2018-03-18 18:40:36 mode enabled
2018-03-18 18:40:46 state cmd_2
Regex:
condition:
0 ReadingValDoIf($hash,'ESPEasy_ESP_G01','z.boot') == 1
devices:
0 ESPEasy_ESP_G01
all ESPEasy_ESP_G01
do:
0:
0 (set ESPEasy_ESP_G01 raw event,set_z.var1=[ESPEasy_ESP_G19:z.Zaehlerstand]) (set ESPEasy_ESP_G01 raw event,set_z.var2=[ESPEasy_ESP_G19:z.total_Tag]) (set ESPEasy_ESP_G01 raw event,set_z.var3=[ESPEasy_ESP_G19:z.Hzg_Tag]) (set ESPEasy_ESP_G01 raw event,set_z.var4=[ESPEasy_ESP_G19:z.WW_Tag]) (set ESPEasy_ESP_G01 raw event,set_z.boot=0)
1:
helper:
DOIF_Readings_events
DOIF_eventas
event z.boot: 0,RSSI: -73 Uptime: 8.00 humidity: 41 temperature: 19.90 temperature2_: temperature_1: 19.69 z.Hzg_Tag: z.WW_Tag: z.Zaehlerstan: z.boot: 0 z.total_Tag: z.var1: 4277888 z.var2: 0 z.var3: 0 z.var4: 133
globalinit 1
last_timer 0
sleeptimer -1
timerdev ESPEasy_ESP_G01
timerevent z.boot: 0,RSSI: -73 Uptime: 8.00 humidity: 41 temperature: 19.90 temperature2_: temperature_1: 19.69 z.Hzg_Tag: z.WW_Tag: z.Zaehlerstan: z.boot: 0 z.total_Tag: z.var1: 4277888 z.var2: 0 z.var3: 0 z.var4: 133
triggerDev ESPEasy_ESP_G01
bm:
DOIF_Get:
cnt 1
dmx -1000
dtot 0
dtotcnt 0
mTS 18.03. 18:40:36
max 8.10623168945312e-06
tot 8.10623168945312e-06
mAr:
HASH(0x9efd160)
doif.Test_Var_Set
?
DOIF_Notify:
cnt 39
dmx -1000
dtot 0
dtotcnt 0
mTS 18.03. 18:40:42
max 0.0507369041442871
tot 0.09682297706604
mAr:
HASH(0x9efd160)
HASH(0x7e469b0)
DOIF_Set:
cnt 6
dmx -1000
dtot 0
dtotcnt 0
mTS 18.03. 18:40:42
max 3.98159027099609e-05
tot 0.000200748443603516
mAr:
HASH(0x9efd160)
doif.Test_Var_Set
?
timerevents:
z.boot: 0
RSSI: -73 Uptime: 8.00 humidity: 41 temperature: 19.90 temperature2_: temperature_1: 19.69 z.Hzg_Tag: z.WW_Tag: z.Zaehlerstan: z.boot: 0 z.total_Tag: z.var1: 4277888 z.var2: 0 z.var3: 0 z.var4: 133
timereventsState:
z.boot: 0
state: RSSI: -73 Uptime: 8.00 humidity: 41 temperature: 19.90 temperature2_: temperature_1: 19.69 z.Hzg_Tag: z.WW_Tag: z.Zaehlerstan: z.boot: 0 z.total_Tag: z.var1: 4277888 z.var2: 0 z.var3: 0 z.var4: 133
triggerEvents:
z.boot: 0
RSSI: -73 Uptime: 8.00 humidity: 41 temperature: 19.90 temperature2_: temperature_1: 19.69 z.Hzg_Tag: z.WW_Tag: z.Zaehlerstan: z.boot: 0 z.total_Tag: z.var1: 4277888 z.var2: 0 z.var3: 0 z.var4: 133
triggerEventsState:
z.boot: 0
state: RSSI: -73 Uptime: 8.00 humidity: 41 temperature: 19.90 temperature2_: temperature_1: 19.69 z.Hzg_Tag: z.WW_Tag: z.Zaehlerstan: z.boot: 0 z.total_Tag: z.var1: 4277888 z.var2: 0 z.var3: 0 z.var4: 133
internals:
itimer:
readings:
0 ESPEasy_ESP_G01:z.boot
all ESPEasy_ESP_G01:z.boot
trigger:
uiState:
uiTable:
Attributes:
room Test
wait 0,20,20,20,20
Wie im Log zu sehen gibt es leider keine Verzögerung (bewusst 20 Sekunden gewählt zur Demonstration)
2018.03.18 18:40:42 3: ESPEasy: set ESPEasy_ESP_G01 raw event,set_z.var1=4277896
2018.03.18 18:40:42 3: ESPEasy: set ESPEasy_ESP_G01 raw event,set_z.var2=1160
2018.03.18 18:40:42 3: ESPEasy: set ESPEasy_ESP_G01 raw event,set_z.var3=1027
2018.03.18 18:40:42 3: ESPEasy: set ESPEasy_ESP_G01 raw event,set_z.var4=133
2018.03.18 18:40:42 3: ESPEasy: set ESPEasy_ESP_G01 raw event,set_z.boot=0
Was habe ich übersehen?
LG
Holger
Da sind zwei Klammen zuviel, dadurch hast du die Befehlssequenz zu einem Block definiert:
DEF ([ESPEasy_ESP_G01:z.boot] == 1) (
(set ESPEasy_ESP_G01 raw event,set_z.var1=[ESPEasy_ESP_G19:z.Zaehlerstand])
(set ESPEasy_ESP_G01 raw event,set_z.var2=[ESPEasy_ESP_G19:z.total_Tag])
(set ESPEasy_ESP_G01 raw event,set_z.var3=[ESPEasy_ESP_G19:z.Hzg_Tag])
(set ESPEasy_ESP_G01 raw event,set_z.var4=[ESPEasy_ESP_G19:z.WW_Tag])
(set ESPEasy_ESP_G01 raw event,set_z.boot=0)
)
Danke! Hätte ich bestimmt nicht gefunden.
Den Code musste ich aber noch ändern, da das Komma nach event jetzt als Befehlstrennung angesehen wurde.
Zumindest in der folgenden Variante funktioniert jetzt alles wie es soll.
([ESPEasy_ESP_G01:z.boot] == 1)
{fhem ("set ESPEasy_ESP_G01 raw event,set_z.var1=".ReadingsVal("ESPEasy_ESP_G19", "z.Zaehlerstand", "0"))}
{fhem ("set ESPEasy_ESP_G01 raw event,set_z.var2=".ReadingsVal("ESPEasy_ESP_G19", "z.total_Tag", "0"))}
{fhem ("set ESPEasy_ESP_G01 raw event,set_z.var3=".ReadingsVal("ESPEasy_ESP_G19", "z.Hzg_Tag", "0"))}
{fhem ("set ESPEasy_ESP_G01 raw event,set_z.var4=".ReadingsVal("ESPEasy_ESP_G19", "z.WW_Tag", "0"))}
{fhem ("set ESPEasy_ESP_G01 raw event,set_z.boot=0")}
LG
Holger
Zitat von: Omega am 18 März 2018, 20:40:11
Danke! Hätte ich bestimmt nicht gefunden.
Den Code musste ich aber noch ändern, da das Komma nach event jetzt als Befehlstrennung angesehen wurde.
Zumindest in der folgenden Variante funktioniert jetzt alles wie es soll.
([ESPEasy_ESP_G01:z.boot] == 1)
{fhem ("set ESPEasy_ESP_G01 raw event,set_z.var1=".ReadingsVal("ESPEasy_ESP_G19", "z.Zaehlerstand", "0"))}
{fhem ("set ESPEasy_ESP_G01 raw event,set_z.var2=".ReadingsVal("ESPEasy_ESP_G19", "z.total_Tag", "0"))}
{fhem ("set ESPEasy_ESP_G01 raw event,set_z.var3=".ReadingsVal("ESPEasy_ESP_G19", "z.Hzg_Tag", "0"))}
{fhem ("set ESPEasy_ESP_G01 raw event,set_z.var4=".ReadingsVal("ESPEasy_ESP_G19", "z.WW_Tag", "0"))}
{fhem ("set ESPEasy_ESP_G01 raw event,set_z.boot=0")}
LG
Holger
Es reicht dafür eine zusätzliche Klammerung, z. B.:
((set ESPEasy_ESP_G01 raw event,set_z.var1=[ESPEasy_ESP_G19:z.Zaehlerstand]))
Gefällt mir viel besser - danke.