DOIF "OR" und "AND" Verknüpfung, ständiges triggern auf jedes Event.

Begonnen von stera, 08 November 2019, 23:03:44

Vorheriges Thema - Nächstes Thema

stera

Hallo zusammen,

warum triggert es in der "or" Verknüpfung auf alles und nicht nur auf das Reading "brightness_down_hold".
Es kann z.B. auch [IkeaSchalterHWR:action] eq "xx" drin stehen. Sobald sich das Reading action ändert wird der cmd ausgeführt.
Ist hier was falsch in der Reihenfolge mit "and" und "or". Die Klammern sind ja auch vorhanden.

Diese Attr. sind gesetzt:
checkReadingEvent 1
disable 0
do always
room 12_Wohnzimmer


(
([HM_Fernbedienung_Wohnzimmer:5.PRESS_SHORT] eq "pressed" or [IkeaSchalterHWR:action] eq "brightness_down_hold") and
[?$SELF:OnOff] eq "off" and
[?$SELF:trigger1] eq "true"
)
(setreading $SELF trigger1 wait, setreading $SELF OnOff on)
((defmod at_autocreate_$SELF at +00:00:03 setreading $SELF trigger1 true))
(set HUE_Wohnzimmer_Stehlampe on)
DOELSEIF
(
([HM_Fernbedienung_Wohnzimmer:5.PRESS_SHORT] eq "pressed" or [IkeaSchalterHWR:action] eq "brightness_down_hold") and
[?$SELF:OnOff] eq "on" and
[?$SELF:trigger1] eq "true"
)
(setreading $SELF trigger1 wait, setreading $SELF OnOff off)
((defmod at_autocreate_$SELF at +00:00:03 setreading $SELF trigger1 true))
(set HUE_Wohnzimmer_Stehlampe off)
DOELSE


amenomade

Wie immer, zur Analyse, vollständiges "list" vom DOIF posten, am besten nachdem er deiner Meinung nach "falsch" getriggert hat.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

stera

Gerne und danke für die Hilfe.
Der HM_Fernbedienung_Wohnzimmer:5.PRESS_SHORT funktioniert weiterhin wie vorher und reagiert auf das Reading
Beim IkeaSchalterHWR wird auf jede Änderung reagiert.

Beide "list" habe hier eingefügt, wo ich vorher jeweils einmal mit dem Schalter eingeschaltet habe.


##Mit IkeaSchalterHWR geschaltet

Internals:
   DEF        (([HM_Fernbedienung_Wohnzimmer:5.PRESS_SHORT] eq "pressed" or [IkeaSchalterHWR:action] eq "xx") and [?$SELF:OnOff] eq "off" and [?$SELF:trigger1] eq "true")
(setreading $SELF trigger1 wait, setreading $SELF OnOff on)
((defmod at_autocreate_$SELF at +00:00:03 setreading $SELF trigger1 true))
(set HUE_Wohnzimmer_Stehlampe on)
DOELSEIF
(
([HM_Fernbedienung_Wohnzimmer:5.PRESS_SHORT] eq "pressed" or [IkeaSchalterHWR:action] eq "xx") and
[?$SELF:OnOff] eq "on" and
[?$SELF:trigger1] eq "true"
)
(setreading $SELF trigger1 wait, setreading $SELF OnOff off)
((defmod at_autocreate_$SELF at +00:00:03 setreading $SELF trigger1 true))
(set HUE_Wohnzimmer_Stehlampe off)
DOELSE
   FUUID      5d975a32-f33f-96bc-d362-fef5c4f964ba5220
   FVERSION   98_DOIF.pm:0.202680/2019-09-28
   MODEL      FHEM
   NAME       doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe
   NOTIFYDEV  HM_Fernbedienung_Wohnzimmer,IkeaSchalterHWR,global
   NR         56
   NTFY_ORDER 50-doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe
   STATE      cmd_1
   TYPE       DOIF
   VERSION    20268 2019-09-28 21:00:39
   READINGS:
     2019-11-09 09:57:19   Device          IkeaSchalterHWR
     2019-11-09 09:57:19   cmd             1.3
     2019-11-09 09:57:19   cmd_event       IkeaSchalterHWR
     2019-11-09 09:57:19   cmd_nr          1
     2019-11-09 09:57:19   cmd_seqnr       3
     2019-11-09 09:57:19   e_IkeaSchalterHWR_action brightness_down_click
     2019-11-09 09:56:43   mode            enabled
     2019-11-09 09:57:19   state           cmd_1
     2019-11-09 09:57:22   trigger1        true
     2019-11-09 09:57:19   OnOff   on
   Regex:
     accu:
     cond:
       HM_Fernbedienung_Wohnzimmer:
         0:
           5.PRESS_SHORT ^HM_Fernbedienung_Wohnzimmer$:^5.PRESS_SHORT:
         1:
           5.PRESS_SHORT ^HM_Fernbedienung_Wohnzimmer$:^5.PRESS_SHORT:
       IkeaSchalterHWR:
         0:
           action     ^IkeaSchalterHWR$:^action:
         1:
           action     ^IkeaSchalterHWR$:^action:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          (::ReadingValDoIf($hash,'HM_Fernbedienung_Wohnzimmer','5.PRESS_SHORT') eq "pressed" or ::ReadingValDoIf($hash,'IkeaSchalterHWR','action') eq "xx") and ::ReadingValDoIf($hash,'doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe','OnOff') eq "off" and ::ReadingValDoIf($hash,'doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe','trigger1') eq "true"
     1           (::ReadingValDoIf($hash,'HM_Fernbedienung_Wohnzimmer','5.PRESS_SHORT') eq "pressed" or ::ReadingValDoIf($hash,'IkeaSchalterHWR','action') eq "xx") and ::ReadingValDoIf($hash,'doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe','OnOff') eq "on" and  ::ReadingValDoIf($hash,'doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe','trigger1') eq "true"
   do:
     0:
       0          setreading doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe trigger1 wait, setreading doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe OnOff on
       1          (defmod at_autocreate_doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe at +00:00:03 setreading doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe trigger1 true)
       2          set HUE_Wohnzimmer_Stehlampe on
     1:
       0          setreading doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe trigger1 wait, setreading doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe OnOff off
       1          (defmod at_autocreate_doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe at +00:00:03 setreading doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe trigger1 true)
       2          set HUE_Wohnzimmer_Stehlampe off
     2:
       0         
   helper:
     DEVFILTER  ^global$|^IkeaSchalterHWR$|^HM_Fernbedienung_Wohnzimmer$
     NOTIFYDEV  global|IkeaSchalterHWR|HM_Fernbedienung_Wohnzimmer
     event      action: brightness_down_click
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   IkeaSchalterHWR
     timerevent action: brightness_down_click
     triggerDev IkeaSchalterHWR
     DOIF_eventa:
       cmd_nr: 1
       cmd_seqnr: 3
       cmd_event: IkeaSchalterHWR
       cmd_1
     DOIF_eventas:
       cmd_nr: 1
       cmd_seqnr: 3
       cmd_event: IkeaSchalterHWR
       state: cmd_1
     bm:
       DOIF_Notify:
         cnt        6
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        09.11. 09:57:19
         max        0.0659708976745605
         tot        0.108037710189819
         mAr:
           HASH(0x55ae08468f28)
           HASH(0x55ae0a2dfee0)
       DOIF_Set:
         cnt        27
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        09.11. 09:57:19
         max        0.000105857849121094
         tot        0.00119495391845703
         mAr:
           HASH(0x55ae08468f28)
           doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe
           ?
     timerevents:
       action: brightness_down_click
     timereventsState:
       action: brightness_down_click
     triggerEvents:
       action: brightness_down_click
     triggerEventsState:
       action: brightness_down_click
   internals:
   readings:
     all         HM_Fernbedienung_Wohnzimmer:5.PRESS_SHORT IkeaSchalterHWR:action
   trigger:
   uiState:
   uiTable:
Attributes:
   checkReadingEvent 1
   disable    0
   do         always
   room       12_Wohnzimmer



##Mit HM_Fernbedienung_Wohnzimmer_5.PRESS_SHORT geschaltet

Internals:
   DEF        (([HM_Fernbedienung_Wohnzimmer:5.PRESS_SHORT] eq "pressed" or [IkeaSchalterHWR:action] eq "xx") and [?$SELF:OnOff] eq "off" and [?$SELF:trigger1] eq "true")
(setreading $SELF trigger1 wait, setreading $SELF OnOff on)
((defmod at_autocreate_$SELF at +00:00:03 setreading $SELF trigger1 true))
(set HUE_Wohnzimmer_Stehlampe on)
DOELSEIF
(
([HM_Fernbedienung_Wohnzimmer:5.PRESS_SHORT] eq "pressed" or [IkeaSchalterHWR:action] eq "xx") and
[?$SELF:OnOff] eq "on" and
[?$SELF:trigger1] eq "true"
)
(setreading $SELF trigger1 wait, setreading $SELF OnOff off)
((defmod at_autocreate_$SELF at +00:00:03 setreading $SELF trigger1 true))
(set HUE_Wohnzimmer_Stehlampe off)
DOELSE
   FUUID      5d975a32-f33f-96bc-d362-fef5c4f964ba5220
   FVERSION   98_DOIF.pm:0.202680/2019-09-28
   MODEL      FHEM
   NAME       doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe
   NOTIFYDEV  HM_Fernbedienung_Wohnzimmer,IkeaSchalterHWR,global
   NR         56
   NTFY_ORDER 50-doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe
   STATE      cmd_1
   TYPE       DOIF
   VERSION    20268 2019-09-28 21:00:39
   READINGS:
     2019-11-09 10:03:09   Device          HM_Fernbedienung_Wohnzimmer
     2019-11-09 10:03:09   cmd             1.3
     2019-11-09 10:03:09   cmd_event       HM_Fernbedienung_Wohnzimmer
     2019-11-09 10:03:09   cmd_nr          1
     2019-11-09 10:03:09   cmd_seqnr       3
     2019-11-09 10:03:09   e_HM_Fernbedienung_Wohnzimmer_5.PRESS_SHORT pressed
     2019-11-09 09:57:19   e_IkeaSchalterHWR_action brightness_down_click
     2019-11-09 09:56:43   mode            enabled
     2019-11-09 10:03:09   state           cmd_1
     2019-11-09 10:03:12   trigger1        true
     2019-11-09 10:03:09   OnOff   on
   Regex:
     accu:
     cond:
       HM_Fernbedienung_Wohnzimmer:
         0:
           5.PRESS_SHORT ^HM_Fernbedienung_Wohnzimmer$:^5.PRESS_SHORT:
         1:
           5.PRESS_SHORT ^HM_Fernbedienung_Wohnzimmer$:^5.PRESS_SHORT:
       IkeaSchalterHWR:
         0:
           action     ^IkeaSchalterHWR$:^action:
         1:
           action     ^IkeaSchalterHWR$:^action:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          (::ReadingValDoIf($hash,'HM_Fernbedienung_Wohnzimmer','5.PRESS_SHORT') eq "pressed" or ::ReadingValDoIf($hash,'IkeaSchalterHWR','action') eq "xx") and ::ReadingValDoIf($hash,'doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe','OnOff') eq "off" and ::ReadingValDoIf($hash,'doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe','trigger1') eq "true"
     1           (::ReadingValDoIf($hash,'HM_Fernbedienung_Wohnzimmer','5.PRESS_SHORT') eq "pressed" or ::ReadingValDoIf($hash,'IkeaSchalterHWR','action') eq "xx") and ::ReadingValDoIf($hash,'doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe','OnOff') eq "on" and  ::ReadingValDoIf($hash,'doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe','trigger1') eq "true"
   do:
     0:
       0          setreading doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe trigger1 wait, setreading doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe OnOff on
       1          (defmod at_autocreate_doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe at +00:00:03 setreading doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe trigger1 true)
       2          set HUE_Wohnzimmer_Stehlampe on
     1:
       0          setreading doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe trigger1 wait, setreading doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe OnOff off
       1          (defmod at_autocreate_doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe at +00:00:03 setreading doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe trigger1 true)
       2          set HUE_Wohnzimmer_Stehlampe off
     2:
       0         
   helper:
     DEVFILTER  ^global$|^IkeaSchalterHWR$|^HM_Fernbedienung_Wohnzimmer$
     NOTIFYDEV  global|IkeaSchalterHWR|HM_Fernbedienung_Wohnzimmer
     event      5.PRESS_SHORT: pressed,hmstate: Initialized
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   HM_Fernbedienung_Wohnzimmer
     timerevent 5.PRESS_SHORT: pressed,hmstate: Initialized
     triggerDev HM_Fernbedienung_Wohnzimmer
     bm:
       DOIF_Get:
         cnt        2
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        09.11. 10:00:26
         max        7.89165496826172e-05
         tot        8.89301300048828e-05
         mAr:
           HASH(0x55ae08468f28)
           doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe
           ?
       DOIF_Notify:
         cnt        28
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        09.11. 10:02:55
         max        0.0670139789581299
         tot        0.310815811157227
         mAr:
           HASH(0x55ae08468f28)
           HASH(0x55ae07ecc648)
       DOIF_Set:
         cnt        80
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        09.11. 10:02:55
         max        0.00291800498962402
         tot        0.00624322891235352
         mAr:
           HASH(0x55ae08468f28)
           doif_HM_Fernbedienung_Wohnzimmer_Bt5_Stehlampe
           ?
     timerevents:
       5.PRESS_SHORT: pressed
       hmstate: Initialized
     timereventsState:
       5.PRESS_SHORT: pressed
       hmstate: Initialized
     triggerEvents:
       5.PRESS_SHORT: pressed
       hmstate: Initialized
     triggerEventsState:
       5.PRESS_SHORT: pressed
       hmstate: Initialized
   internals:
   readings:
     all         HM_Fernbedienung_Wohnzimmer:5.PRESS_SHORT IkeaSchalterHWR:action
   trigger:
   uiState:
   uiTable:
Attributes:
   checkReadingEvent 1
   disable    0
   do         always
   room       12_Wohnzimmer

amenomade

Also... beim ersten "list" hat "action" getriggert. Wenn 5.PRESS_SHORT wahr war, dann ist der OR auch wahr.
Beim 2. umgekehrt.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Damian

mit [HM_Fernbedienung_Wohnzimmer:5.PRESS_SHORT] eq "pressed" fragst du einen Aktor wie einen Schalter ab, er liefert ein Event beim Schalten und behält seinen Zustand, der abgefragt wird.

Du willst aber nur das Ereignis abfragen, ähnlich einem Taster, der ist immer aus und liefert nur beim Drücken ein Event.

Daher Ereignisabfrage angeben:

[HM_Fernbedienung_Wohnzimmer:"5.PRESS_SHORT: pressed"]

statt Statusabfrage.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

stera

Ja danke Damian,

das wollte ich auf den letzten post auch schreiben. Der Zustand "pressed" wird nur neu getriggert.

Die Ereignisabfrage wie du sie beschreibst, kannte ich noch gar nicht. Werde das gleich mal testen.

Danke, Stefan

amenomade

Zitat von: stera am 09 November 2019, 17:53:44

Die Ereignisabfrage wie du sie beschreibst, kannte ich noch gar nicht. Werde das gleich mal testen.

Das hatte aber Eistee hieroben schon erwähnt ;)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

stera

Das stimmt schon und vielen Dank an Eistee.

Ich war nur bei der Variante wie sie auch beschrieben ist z.B. [HM_Fernbedienung_Wohnzimmer:"pressed"] stehen geblieben. Das hätte dann bei jeder Taste getriggert.  ???