DeConz aktualisiert State nach reboot und löst DOIF aus

Begonnen von ReneR1986, 31 März 2022, 12:38:25

Vorheriges Thema - Nächstes Thema

ReneR1986

Hallo zusammen,

ich habe u.a. einige IKEA Switches im Einsatz auf die ich beim Schalten mittels DOIF reagiere.
Bei einem Neustart von Deconz oder wenn die Verbindung mal verloren geht und dann wieder aufgebaut wird, werden die States der entsprechenden Devices scheinbar aktualisiert bzw. neu eingelesen (der Timestamp ändert sich zwar nicht aber die Zeile in der GUI wird rot)
Das führt natürlich dazu, dass verschiedene DOIFs darauf reagieren. Nachts gehen zum Beispiel einige Lichter an oder das Hoftor fährt auf.

Hat jemand eine Idee, wie ich das abfangen könnte?

VG

Nachtrag:
Ist scheinbar nicht immer der Fall...

Otto123

#1
Hallo,

Zitat von: ReneR1986 am 31 März 2022, 12:38:25
Hat jemand eine Idee, wie ich das abfangen könnte?

mit der "Unmenge" an Infos wirds schwer  :-\  https://forum.fhem.de/index.php/topic,71806.0.html

Deconz - wie eingebunden?
list vom Device was auslöst?
list vom DOIF was dMn falsch reagiert?

Vermutung zum suchen - Stichwort Genauigkeit des Triggers - Dein DOIF reagiert auf alles vom Device anstatt exakt auf das Ereignis was Du eigentlich wolltest.
Tool: Eventmonitor

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

ReneR1986

#2
OK, stimmt.

DeConz läuft, wie auch FHEM, in Docker.
Eingebunden als HueBridge.

Auslösendes Device (Bsp.: Ikea Switch)

Internals:
   DEF        sensor 21  IODev=deCONZ
   FUUID      61c09b3a-f33f-5d23-ea7c-9ebef254499154e9
   FVERSION   31_HUEDevice.pm:0.256480/2022-02-07
   ID         S21
   INTERVAL   
   IODev      deCONZ
   NAME       Shortcut_Button_Hoftor
   NR         224
   STATE      1001
   TYPE       HUEDevice
   manufacturername IKEA of Sweden
   modelid    TRADFRI SHORTCUT Button
   name       TRADFRI SHORTCUT Button
   on         1
   reachable  0
   swversion  2.3.015
   type       ZHASwitch
   uniqueid   0c:43:14:ff:fe:b0:7a:9a-01-1000
   READINGS:
     2022-03-30 12:46:58   IODev           deCONZ
     2022-03-07 17:19:46   battery         34
     2022-03-07 17:19:46   batteryPercent  34
     2022-03-06 17:17:28   lastseen        2022-03-06T16:17Z
     2022-03-07 17:19:46   reachable       0
     2022-03-06 18:17:28   state           1001
   helper:
     devtype    S
     state      1001
     update_timeout 1
     configList:
     json:
       ep         1
       etag       7ec0b8460d915cbe55e28dc29dfabc84
       lastseen   
       manufacturername IKEA of Sweden
       mode       1
       modelid    TRADFRI SHORTCUT Button
       name       TRADFRI SHORTCUT Button
       swversion  2.3.015
       type       ZHASwitch
       uniqueid   0c:43:14:ff:fe:b0:7a:9a-01-1000
       config:
         alert      none
         battery    34
         group      2
       state:
         buttonevent 1001
         lastupdated 2022-03-06T16:17:28.489
     setList:
Attributes:
   IODev      deCONZ
   group      HUESensor
   model      TRADFRI SHORTCUT Button
   room       Hof


DOIF

Internals:
   DEF        ([dummy_hoftor:state] eq "auf" or [Shortcut_Button_Hoftor:state] eq 1002 or [Shortcut_Button_Hoftor:state] eq 1003) ({system("ssh torsteuerung\@192.168.1.10 python3 relais.py &")})
   FUUID      61f79204-f33f-5d23-deaa-4be8eb614588d15a
   MODEL      FHEM
   NAME       di_hoftor
   NOTIFYDEV  Shortcut_Button_Hoftor,global,dummy_hoftor
   NR         240
   NTFY_ORDER 50-di_hoftor
   STATE      cmd_1
   TYPE       DOIF
   VERSION    25663 2022-02-09 17:05:11
   READINGS:
     2022-03-31 11:56:29   Device          dummy_hoftor
     2022-03-31 11:56:29   cmd             1
     2022-03-31 11:56:29   cmd_event       dummy_hoftor
     2022-03-31 11:56:29   cmd_nr          1
     2022-03-31 11:53:10   e_Shortcut_Button_Hoftor_state 1001
     2022-03-31 11:56:29   e_dummy_hoftor_state auf
     2022-03-31 11:56:29   error           {system("ssh torsteuerung\@192.168.1.10 python3 relais.py &")}: -1
     2022-02-17 13:24:03   mode            enabled
     2022-03-31 11:56:29   state           cmd_1
   Regex:
     accu:
     collect:
     cond:
       Shortcut_Button_Hoftor:
         0:
           state      ^Shortcut_Button_Hoftor$:^state:
       dummy_hoftor:
         0:
           state      ^dummy_hoftor$:^state:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'dummy_hoftor','state') eq "auf" or ::ReadingValDoIf($hash,'Shortcut_Button_Hoftor','state') eq 1002 or ::ReadingValDoIf($hash,'Shortcut_Button_Hoftor','state') eq 1003
   do:
     0:
       0          {system("ssh torsteuerung\@192.168.1.10 python3 relais.py &")}
     1:
   helper:
     NOTIFYDEV  Shortcut_Button_Hoftor,global,dummy_hoftor
     event      auf
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   dummy_hoftor
     timerevent auf
     triggerDev dummy_hoftor
     DOIF_eventa:
       cmd_nr: 1
       cmd: 1
       cmd_event: dummy_hoftor
       error: {system("ssh torsteuerung\@192.168.1.10 python3 relais.py &")}: -1
       cmd_1
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: dummy_hoftor
       error: {system("ssh torsteuerung\@192.168.1.10 python3 relais.py &")}: -1
       state: cmd_1
     timerevents:
       auf
     timereventsState:
       state: auf
     triggerEvents:
       auf
     triggerEventsState:
       state: auf
   internals:
   perlblock:
   readings:
     all         dummy_hoftor:state Shortcut_Button_Hoftor:state
   trigger:
   uiState:
   uiTable:
Attributes:
   do         always
   room       Hof



Was ich hier schon etwas seltsam finde ist, dass der Button (habe ich schon lange nicht genutzt) schon seit dem 06.03 den State (buttonevent) 1001 hat.
Darauf sollte das DOIF eigentlich gar nicht reagieren...Hat es aber scheinbar.

Thyraz

#3
Siehe Diskussion ab diesem Post von mir, zieht sich dann bis zur letzten Seite mit Unterbrechungen:
https://forum.fhem.de/index.php/topic,122075.msg1206701.html#msg1206701

Fazit:
Workaround ist ReadingsAge abfragen, an den Stellen an denen du auf die Events reagierst.

Langzeitlösung wird wohl ein Attribut für die HUEDevices sein, mit dem man sagen kann ob es ein Gerät ist bei dem ein "veralteter" letzter Wert übernommen werden sollte (z.B. bei Thermometern interessiert der letzte Wert unabhängig ob FHEM da nun lief oder nicht) oder nicht (Bei Tastern will man z.B. normal keine veralteten Events nachgeliefert bekommen).

Und noch zusätzlich:
Das Problem verstärkt sich, wenn man das StateFile nicht regelmäßig sichert und FHEM dann z.B. crashed.
Die für FHEM zuletzt "aktuellen" Werte können dann sehr alt sein (z.B. 06.03 falls das StateFile tatsächlich zwischendurch nicht durch einen geregelten FHEM Neustart gesichert wurde).

Es schadet also nicht das Speichern des SateFiles regelmäßig zu triggern (IMHO wäre es nicht verkehrt wenn FHEM das auf einer Standardinstallation regelmäßig machen würde).

Siehe diesen Tip hier aus demselben Thread:
https://forum.fhem.de/index.php/topic,122075.msg1207325.html#msg1207325


Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

ReneR1986

Das hört sich genau nach meinem Problem an.

Auch was du im Beitrag mit der Zeitumstellung erwähnst...
War bei mir genauso. Am nächsten Tag stand das Tor offen und das Licht im Wohnzimmer war an.

Ich versuch erst mal den Ansatz mit ReadingsAge und versuche das StateFile mit {WriteStatefile()} regelmäßig zu sichern.