[Gelöst] DOIF startet nicht (weil kein Event auslöst wird)

Begonnen von Manos, 15 November 2020, 23:51:47

Vorheriges Thema - Nächstes Thema

Manos

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
HP Microserver GEN8 XEON, Ubuntu 22.04, FHEM, ConBee II, CCU2, CUL433, Tradfri, Luxtronik2, Volkszaehler (und wenig Ahnung...)

Frank_Huber

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.

Manos

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!   :)

HP Microserver GEN8 XEON, Ubuntu 22.04, FHEM, ConBee II, CCU2, CUL433, Tradfri, Luxtronik2, Volkszaehler (und wenig Ahnung...)

Per

attr deCONZ_connect_DOIF startup set $SELF checkall

attr startup, spart einen extra Trigger