Ich habe ein Problem, dass ich nicht verstehen kann :(
Nach jedem Server Neustart muss ich meine Dresden Electronics conBEE II mit FHEM anbinden. Dafuer reicht der Befehl "set deCONZ active".
Ich habe ein DOIF erstellt, dass waehrend der ersten 15 Minuten vom FHEM Start, den Befehl "set deCONZ active" ein Mal pro Minute sendet:
Internals:
DEF ([sysmon:fhemuptime] <900 and ( ([deCONZ:state] eq "initialized") or ([deCONZ:state] eq "inactive") or ([deCONZ:state] eq "active") ) )
( set deCONZ active, set myTelegramBot message setting deCONZ active )
FUUID 5f901886-f33f-6a06-a4b7-2048dc178d050201
FVERSION 98_DOIF.pm:0.229130/2020-10-04
MODEL FHEM
NAME deCONZ_connect_DOIF
NOTIFYDEV sysmon,deCONZ,global
NR 263
NTFY_ORDER 50-deCONZ_connect_DOIF
STATE initialized
TYPE DOIF
VERSION 22913 2020-10-04 21:46:02
Helper:
DBLOG:
cmd:
Logdb:
TIME 1605479226.81969
VALUE 0
mode:
Logdb:
TIME 1605479226.81969
VALUE enabled
state:
Logdb:
TIME 1605479226.81969
VALUE initialized
READINGS:
2020-11-15 23:27:06 cmd 0
2020-11-15 23:27:06 mode enabled
2020-11-15 23:27:06 state initialized
Regex:
accu:
cond:
deCONZ:
0:
state ^deCONZ$:^state:
sysmon:
0:
fhemuptime ^sysmon$:^fhemuptime:
attr:
repeatcmd:
60
repeatsame:
20
condition:
0 ::ReadingValDoIf($hash,'sysmon','fhemuptime') <900 and ( (::ReadingValDoIf($hash,'deCONZ','state') eq "initialized") or (::ReadingValDoIf($hash,'deCONZ','state') eq "inactive") or (::ReadingValDoIf($hash,'deCONZ','state') eq "active") )
do:
0:
0 set deCONZ active, set myTelegramBot message setting deCONZ active
1:
helper:
DEVFILTER ^global$|^deCONZ$|^sysmon$
NOTIFYDEV global|deCONZ|sysmon
globalinit 1
last_timer 0
sleeptimer -1
readings:
all sysmon:fhemuptime deCONZ:state
uiTable:
Attributes:
do always
repeatcmd 60
repeatsame 20
do always, repeatcmd 60, repeatsame 20 sind da.
Trotzdem funktioniert es nicht! (nach Server Neustart).
Die Variabeln sind korrekt.
Wenn ich aber mit dem Befehl "set checkall" das DOIF ueberpruefe, ab diesem Punkt faengt alles ordnungsgemaess zu arbeiten!
Internals:
DEF ([sysmon:fhemuptime] <2900 and ( ([deCONZ:state] eq "initialized") or ([deCONZ:state] eq "inactive") or ([deCONZ:state] eq "active") ) )
( set deCONZ active, set myTelegramBot message setting deCONZ active )
FUUID 5f901886-f33f-6a06-a4b7-2048dc178d050201
FVERSION 98_DOIF.pm:0.229130/2020-10-04
MODEL FHEM
NAME deCONZ_connect_DOIF
NOTIFYDEV global,deCONZ,sysmon
NR 263
NTFY_ORDER 50-deCONZ_connect_DOIF
STATE cmd_1
TYPE DOIF
VERSION 22913 2020-10-04 21:46:02
Helper:
DBLOG:
cmd:
Logdb:
TIME 1605480175.69051
VALUE 1
cmd_count:
Logdb:
TIME 1605480175.66678
VALUE 1
cmd_event:
Logdb:
TIME 1605480175.69051
VALUE deCONZ_connect_DOIF
cmd_nr:
Logdb:
TIME 1605480175.69051
VALUE 1
mode:
Logdb:
TIME 1605480170.70706
VALUE enabled
state:
Logdb:
TIME 1605480175.69051
VALUE cmd_1
wait_timer:
Logdb:
TIME 1605480175.6821
VALUE 15.11.2020 23:43:55 cmd_1 deCONZ
READINGS:
2020-11-15 23:42:55 Device deCONZ
2020-11-15 23:42:55 cmd 1
2020-11-15 23:42:55 cmd_count 1
2020-11-15 23:42:55 cmd_event deCONZ_connect_DOIF
2020-11-15 23:42:55 cmd_nr 1
2020-11-15 23:42:55 e_deCONZ_state connected
2020-11-15 23:42:50 mode enabled
2020-11-15 23:42:55 state cmd_1
2020-11-15 23:42:55 wait_timer 15.11.2020 23:43:55 cmd_1 deCONZ
Regex:
accu:
cond:
deCONZ:
0:
state ^deCONZ$:^state:
sysmon:
0:
fhemuptime ^sysmon$:^fhemuptime:
attr:
cmdState:
repeatcmd:
60
repeatsame:
20
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'sysmon','fhemuptime') <2900 and ( (::ReadingValDoIf($hash,'deCONZ','state') eq "initialized") or (::ReadingValDoIf($hash,'deCONZ','state') eq "inactive") or (::ReadingValDoIf($hash,'deCONZ','state') eq "active") )
do:
0:
0 set deCONZ active, set myTelegramBot message setting deCONZ active
1:
helper:
DEVFILTER ^global$|^deCONZ$|^sysmon$
NOTIFYDEV global|deCONZ|sysmon
event connected
globalinit 1
last_timer 0
sleepdevice deCONZ
sleepsubtimer 0
sleeptimer 0
timerdev deCONZ
timerevent active
triggerDev deCONZ
DOIF_eventa:
cmd_nr: 1
cmd: 1
cmd_event: deCONZ_connect_DOIF
cmd_1
DOIF_eventas:
cmd_nr: 1
cmd: 1
cmd_event: deCONZ_connect_DOIF
state: cmd_1
timerevents:
active
active
connected
timereventsState:
state: active
triggerEvents:
connected
triggerEventsState:
state: connected
internals:
readings:
all sysmon:fhemuptime deCONZ:state
trigger:
uiState:
uiTable:
Attributes:
do always
repeatcmd 60
repeatsame 20
Kann irgendjemand sehen, was ich falsch gemacht habe?
Vielen Dank im Voraus
Ich denke dass die fhemuptime keinen Event auslöst. evtl kannst Du nier mit den event-on... Attributen was ändern.
Ansonsten kannst Du auch auf GLOBAL:initialized triggern. Der wird nach FHEM start einmalig ausgelöst.
Zitat von: Frank_Huber am 16 November 2020, 08:30:33
Ich denke dass die fhemuptime keinen Event auslöst. evtl kannst Du nier mit den event-on... Attributen was ändern.
Ansonsten kannst Du auch auf GLOBAL:initialized triggern. Der wird nach FHEM start einmalig ausgelöst.
Vielen Dank Frank, das war der Grund!
ich hatte mein SYSMON mit
attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,fs_.*,stat_cpu_percent
definiert (fhemtime war nicht auf der Liste).
Ich habe addiert
attr sysmon event-on-change-reading fhemuptime
Und mein DOIF hat sofort funktioniert! :)
attr deCONZ_connect_DOIF startup set $SELF checkall
attr startup (https://fhem.de/commandref_DE.html#DOIF_startup), spart einen extra Trigger