FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: hugo am 16 Dezember 2024, 21:56:58

Titel: [gelöst]DOIF schaltet ständig
Beitrag von: hugo am 16 Dezember 2024, 21:56:58
Hallo,

ich habe hier ein Problem mit einem DoIf.
Dieses DoIf schaltet ständig, es wechselt ständig vom cmd1 nach cmd4, obwohl sich kein State ändert.
Kann das am Presence Modul liegen, dass es alle Minute aktualisiert wird.

Das verstehe ich nicht warum dies passiert.


define di.HaustuerSchloss DOIF (([Josef] eq "absent" and [Iris] eq "absent") and [FH_Haustuer] eq "closed")\
(set HausTuerschloss lock)\
DOELSEIF ([FH_Haustuer] eq "open" and [HausTuerschloss] eq "LOCKED")\
(set pushmsg msg 'fhem' 'Schloss schliesst;; Haustuer offen' 'iphone' 0 '')\
DOELSEIF ([FH_Haustuer] eq "open")\
(set pushmsg msg 'fhem' 'Haustür laenger als 30 min offen' 'iphone' 0 '')\
DOELSE ()
attr di.HaustuerSchloss disable 0
attr di.HaustuerSchloss group Haustuer
attr di.HaustuerSchloss icon helper_doif@black
attr di.HaustuerSchloss room Alarm,Zentrale
attr di.HaustuerSchloss wait 10:10:120:5
#   DEF        (([Josef] eq "absent" and [Iris] eq "absent") and [FH_Haustuer] eq "closed")
#(set HausTuerschloss lock)
#DOELSEIF ([FH_Haustuer] eq "open" and [HausTuerschloss] eq "LOCKED")
#(set pushmsg msg 'fhem' 'Schloss schliesst; Haustuer offen' 'iphone' 0 '')
#DOELSEIF ([FH_Haustuer] eq "open")
#(set pushmsg msg 'fhem' 'Haustür laenger als 30 min offen' 'iphone' 0 '')
#DOELSE ()
#   FUUID      65995b68-f33f-07c9-000b-a003b852dbc25811
#   MODEL      FHEM
#   NAME       di.HaustuerSchloss
#   NOTIFYDEV  FH_Haustuer,Iris,global,Josef,HausTuerschloss
#   NR         240
#   NTFY_ORDER 50-di.HaustuerSchloss
#   STATE      cmd_4
#   TYPE       DOIF
#   VERSION    28546 2024-02-23 20:11:05
#   eventCount 17107
#   READINGS:
#     2024-12-16 21:51:57   Device          HausTuerschloss
#     2024-12-16 21:51:59   cmd             4
#     2024-12-16 21:51:59   cmd_event       HausTuerschloss
#     2024-12-16 21:51:59   cmd_nr          4
#     2024-12-16 21:51:57   e_HausTuerschloss_STATE LOCKED
#     2024-12-16 21:51:43   e_Iris_STATE    absent
#     2024-12-16 21:51:43   e_Josef_STATE   absent
#     2024-12-16 21:50:36   mode            enabled
#     2024-12-16 21:51:59   state           cmd_4
#     2024-12-16 21:51:59   wait_timer      no timer
#   Regex:
#     accu:
#     bar:
#     barAvg:
#     collect:
#     cond:
#       FH_Haustuer:
#         0:
#           &STATE     ^FH_Haustuer$
#         1:
#           &STATE     ^FH_Haustuer$
#         2:
#           &STATE     ^FH_Haustuer$
#       HausTuerschloss:
#         0:
#         1:
#           &STATE     ^HausTuerschloss$
#         2:
#       Iris:
#         0:
#           &STATE     ^Iris$
#       Josef:
#         0:
#           &STATE     ^Josef$
#   attr:
#     cmdState:
#     wait:
#       0:
#         10
#       1:
#         10
#       2:
#         120
#       3:
#         5
#     waitdel:
#   condition:
#     0          (::InternalDoIf($hash,'Josef','STATE') eq "absent" and ::InternalDoIf($hash,'Iris','STATE') eq "absent") and ::InternalDoIf($hash,'FH_Haustuer','STATE') eq "closed"
#     1          ::InternalDoIf($hash,'FH_Haustuer','STATE') eq "open" and ::InternalDoIf($hash,'HausTuerschloss','STATE') eq "LOCKED"
#     2          ::InternalDoIf($hash,'FH_Haustuer','STATE') eq "open"
#   do:
#     0:
#       0          set HausTuerschloss lock
#     1:
#       0          set pushmsg msg 'fhem' 'Schloss schliesst; Haustuer offen' 'iphone' 0 ''
#     2:
#       0          set pushmsg msg 'fhem' 'Haustür laenger als 30 min offen' 'iphone' 0 ''
#     3:
#       0         
#   helper:
#     NOTIFYDEV  FH_Haustuer,Iris,global,Josef,HausTuerschloss
#     event      devstate: ok,hmstate: LOCKED
#     globalinit 1
#     last_timer 0
#     sleepdevice HausTuerschloss
#     sleepsubtimer -1
#     sleeptimer -1
#     timerdev   HausTuerschloss
#     timerevent devstate: ok,hmstate: LOCKED
#     triggerDev HausTuerschloss
#     DOIF_eventa:
#       cmd_nr: 4
#       cmd: 4
#       cmd_event: HausTuerschloss
#       cmd_4
#     DOIF_eventas:
#       cmd_nr: 4
#       cmd: 4
#       cmd_event: HausTuerschloss
#       state: cmd_4
#     timerevents:
#       devstate: ok
#       hmstate: LOCKED
#     timereventsState:
#       devstate: ok
#       hmstate: LOCKED
#     triggerEvents:
#       devstate: ok
#       hmstate: LOCKED
#     triggerEventsState:
#       devstate: ok
#       hmstate: LOCKED
#   hmccu:
#   internals:
#     all         Josef:STATE Iris:STATE FH_Haustuer:STATE HausTuerschloss:STATE
#   readings:
#   trigger:
#   uiState:
#   uiTable:
#
setstate di.HaustuerSchloss cmd_4
setstate di.HaustuerSchloss 2024-12-16 21:51:57 Device HausTuerschloss
setstate di.HaustuerSchloss 2024-12-16 21:51:59 cmd 4
setstate di.HaustuerSchloss 2024-12-16 21:51:59 cmd_event HausTuerschloss
setstate di.HaustuerSchloss 2024-12-16 21:51:59 cmd_nr 4
setstate di.HaustuerSchloss 2024-12-16 21:51:57 e_HausTuerschloss_STATE LOCKED
setstate di.HaustuerSchloss 2024-12-16 21:51:43 e_Iris_STATE absent
setstate di.HaustuerSchloss 2024-12-16 21:51:43 e_Josef_STATE absent
setstate di.HaustuerSchloss 2024-12-16 21:50:36 mode enabled
setstate di.HaustuerSchloss 2024-12-16 21:51:59 state cmd_4
setstate di.HaustuerSchloss 2024-12-16 21:51:59 wait_timer no timer


define Josef PRESENCE function {checkAllFritzMACpresent("2E:50:01:73:79:33")}
attr Josef event-on-update-reading state
attr Josef icon it_smartphone@blue
attr Josef room Alarm,Zentrale
#   DEF        function {checkAllFritzMACpresent("2E:50:01:73:79:33")}
#   FUUID      6378c698-f33f-07c9-de32-864a8f1e51402e43
#   INTERVAL_NORMAL 30
#   INTERVAL_PRESENT 30
#   MODE       function
#   NAME       Josef
#   NOTIFYDEV  global
#   NR         214
#   NTFY_ORDER 50-Josef
#   STATE      absent
#   TYPE       PRESENCE
#   eventCount 17686
#   READINGS:
#     2024-12-10 16:28:59   model           function
#     2024-12-16 21:54:14   presence        absent
#     2024-12-16 21:54:14   state           absent
#   helper:
#     CURRENT_STATE present
#     call       {checkAllFritzMACpresent("2E:xx:xx:xx:xx:xx")}
#   hmccu:
#
setstate Josef absent
setstate Josef 2024-12-16 21:54:14 .absenceThresholdCounter 0
setstate Josef 2024-12-16 21:54:14 .presenceThresholdCounter 0
setstate Josef 2024-12-10 16:28:59 model function
setstate Josef 2024-12-16 21:54:14 presence absent
setstate Josef 2024-12-16 21:54:14 state absent


Gruß Josef
Titel: Aw: DOIF schaltet ständig
Beitrag von: Damian am 17 Dezember 2024, 13:37:15
Du fragst den Status von [HausTuerschloss] ab. Solche Abfragen reagieren auf alle Events des Devices.

Probiere mal [HausTuerschloss:state] abzufragen, diese Abfrage sollte nur noch auf Änderungen des Readings state reagieren.
Titel: Aw: DOIF schaltet ständig
Beitrag von: hugo am 19 Dezember 2024, 15:30:10
Hallo Damian,
Du hattest natürlich recht. Seid ich bei jeder Abfrage das :state angehängt habe ist Ruhe.

Vielen herzlichen Dank

Josef