(ERLEDIGT)DOIF mit HM Bewegungsmelder löst immer 2x aus....

Begonnen von misux, 17 Juli 2023, 18:05:50

Vorheriges Thema - Nächstes Thema

misux

HI!

Ich habe den HM Bewegungsmelder in einem DOIF im Einsatz...

Hier das List vom DOIF:

Internals:
   CFGFN     
   DEF        ([BewegungsmelderPool:?motion] and [?Haus] eq "present")
(set Telegram message Pool Bewegung erkannt)
(set SSCam.Pool snap 3 3)
(set SSCam.Kellereingang snap)
   FUUID      64b559a4-f33f-e7ed-ea6f-44c0d703f6013e34
   MODEL      FHEM
   NAME       DOIFPool
   NOTIFYDEV  BewegungsmelderPool,global
   NR         1002
   NTFY_ORDER 50-DOIFPool
   STATE      cmd_1
   TYPE       DOIF
   VERSION    27740 2023-07-10 09:31:11
   eventCount 29
   READINGS:
     2023-07-17 18:02:50   Device          BewegungsmelderPool
     2023-07-17 17:59:40   cmd             1.3
     2023-07-17 17:59:40   cmd_event       BewegungsmelderPool
     2023-07-17 17:59:40   cmd_nr          1
     2023-07-17 17:59:40   cmd_seqnr       3
     2023-07-17 18:02:50   e_BewegungsmelderPool_events brightness: 198,devstate: ok,hmstate: noMotion
     2023-07-17 17:53:31   mode            enabled
     2023-07-17 17:59:40   state           cmd_1
   Regex:
     accu:
     bar:
     barAvg:
     collect:
     cond:
       BewegungsmelderPool:
         0:
           &STATE     ^BewegungsmelderPool$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::EventDoIf('BewegungsmelderPool',$hash,'motion',1) and ::InternalDoIf($hash,'Haus','STATE') eq "present"
   do:
     0:
       0          set Telegram message Pool Bewegung erkannt
       1          set SSCam.Pool snap 3 3
       2          set SSCam.Kellereingang snap
     1:
   helper:
     NOTIFYDEV  BewegungsmelderPool,global
     event      brightness: 198,devstate: ok,hmstate: noMotion
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   BewegungsmelderPool
     timerevent motion: noMotion
     triggerDev BewegungsmelderPool
     timerevents:
       noMotion
       motion: noMotion
       devstate: ok
       hmstate: noMotion
     timereventsState:
       state: noMotion
       motion: noMotion
       devstate: ok
       hmstate: noMotion
     triggerEvents:
       brightness: 198
       devstate: ok
       hmstate: noMotion
     triggerEventsState:
       brightness: 198
       devstate: ok
       hmstate: noMotion
   hmccu:
   internals:
     all         Haus:STATE
   readings:
   trigger:
     all         BewegungsmelderPool
   uiState:
   uiTable:
Attributes:
   do         always
   room       DOIF

Mein Problem ist das der Bewegungsmelder nach 30Sek von motion auf noMotion stellt UND leider das DOIF auch beim noMotion auslöst... Kann man das irgendwie verhindern?

Das DOIF soll NUR auf motion triggern ...

Vielen Dank!


Damian

([BewegungsmelderPool:"^motion"] and [?Haus] eq "present")
Das sollte schon reichen :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

misux

Hmmm... Nee, leider triggert er immernoch auf noMotion...

Damian

Zitat von: misux am 17 Juli 2023, 19:05:19Hmmm... Nee, leider triggert er immernoch auf noMotion...

Das kann ich mir nicht vorstellen.

Wie sehen die Events aus?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

misux

Leider doch... NAch 30 sek wird es nochmal ausgelöst:

2023-07-17 19:16:49 DOIF DOIFPool cmd_event: BewegungsmelderPool
2023-07-17 19:16:49 DOIF DOIFPool cmd_event: BewegungsmelderPool
2023-07-17 19:16:49 DOIF DOIFPool cmd_event: BewegungsmelderPool
2023-07-17 19:16:49 HMCCUCHN BewegungsmelderPool INSTALL_TEST: 1
2023-07-17 19:16:49 HMCCUCHN BewegungsmelderPool motion
2023-07-17 19:16:49 HMCCUCHN BewegungsmelderPool motion: motion
2023-07-17 19:16:49 HMCCUCHN BewegungsmelderPool brightness: 160
2023-07-17 19:16:49 HMCCUCHN BewegungsmelderPool devstate: ok
2023-07-17 19:16:49 HMCCUCHN BewegungsmelderPool hmstate: motion
2023-07-17 19:17:24 DOIF DOIFPool cmd_event: BewegungsmelderPool
2023-07-17 19:17:24 DOIF DOIFPool cmd_event: BewegungsmelderPool
2023-07-17 19:17:24 DOIF DOIFPool cmd_event: BewegungsmelderPool
2023-07-17 19:17:24 HMCCUCHN BewegungsmelderPool noMotion
2023-07-17 19:17:24 HMCCUCHN BewegungsmelderPool motion: noMotion
2023-07-17 19:17:24 HMCCUCHN BewegungsmelderPool devstate: ok
2023-07-17 19:17:24 HMCCUCHN BewegungsmelderPool hmstate: noMotion

Damian

ja klar, das Reading "motion" kommt ebenfalls zwei mal vor.


([BewegungsmelderPool:" motion"] and [?Haus] eq "present")
sollte eindeutig sein.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

misux

HA! TOP! Das ist es!

Vielen Dank! Habe vor lauter Bewegung das motion nicht gesehen... ;D

Vielen Dank!

Nighthawk

Hallo Damian,

wie müsste ich das DOIF ändern für mehrere Bewegungsmelder?

["^BewegungsmelderPool":" motion"]?

misux

Eigentlich mit eine "or" oder nicht... Also immer
[BewegungsmelderPool1:" motion"] or [BewegungsmelderPool2:" motion"] or [BewegungsmelderPool3:" motion"]

Und so weiter....

Damian

Zitat von: Nighthawk am 17 Juli 2023, 20:10:49Hallo Damian,

wie müsste ich das DOIF ändern für mehrere Bewegungsmelder?

["^BewegungsmelderPool":" motion"]?

Die Syntax lautet: ["<device regex>:<event regex>"]

siehe: https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events

Daher:

["^BewegungsmelderPool: motion"]

Das Leerzeichen vor "motion" ist wichtig, weil "motion" auch im Readingnamen vorkommt.

Man könnte auch angeben:

["^BewegungsmelderPool:^motion: motion"]
Wenn man auf das ganze Ereignis (ohne Device) von Anfang an inklusive der Readingangabe filtern möchte.


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

Nighthawk

Danke für den Hinweis, habe ich angepasst und beobachte es jetzt  8)

Nighthawk

Hallo Damian,

leider funktioniert das DOIF weder so:
["^Bewegungsmelder: motion"]noch so: ["^Bewegungsmelder:^motion: motion"]
Da wird einfach nichts ausgelöst.

Hier ein List des DOIFs
Internals:
   DEF        ["^Bewegungsmelder":motion] or
["^Bewegungsmelder:on"] )
(set Signal send Bewegung an $DEVICE erkannt!!!!  \n {(ReadingsTimestamp("$DEVICE", "occupancy", ""))})
   FVERSION   98_DOIF.pm:0.276160/2023-05-25
   MODEL      Perl
   NAME       di.Bewegungsmelder
   NOTIFYDEV  global
   NR         586
   NTFY_ORDER 50-di.Bewegungsmelder
   STATE      initialized
   TYPE       DOIF
   VERSION    27616 2023-05-25 17:55:36
   eventCount 622
   READINGS:
     2023-07-19 21:20:06   mode            enabled
     2023-07-19 21:20:06   state           initialized
   Regex:
     accu:
     bar:
     barAvg:
     collect:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
   helper:
     NOTIFYDEV  global
     globalinit 1
     last_timer 0
     sleeptimer -1
   perlblock:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   do         always
   icon       helper_doif
   room       04_Licht

Gruß
Alex

Damian

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

Nighthawk

Die Events sehen folgendermaßen aus:

2023-07-20 09:07:18 HMCCUCHN Bewegungsmelder_Terasse brightness: 181
2023-07-20 09:07:18 HMCCUCHN Bewegungsmelder_Terasse motion
2023-07-20 09:07:18 HMCCUCHN Bewegungsmelder_Terasse motion: motion
2023-07-20 09:07:18 HMCCUCHN Bewegungsmelder_Terasse hmstate: motion


das Problem des Doppelfeuerns wird wohl durch hmstate mit ausgelöst..

Damian

Zitat von: Nighthawk am 19 Juli 2023, 21:23:46Hallo Damian,

leider funktioniert das DOIF weder so:
["^Bewegungsmelder: motion"]noch so: ["^Bewegungsmelder:^motion: motion"]
Da wird einfach nichts ausgelöst.

Hier ein List des DOIFs
Internals:
   DEF        ["^Bewegungsmelder":motion] or
["^Bewegungsmelder:on"] )
(set Signal send Bewegung an $DEVICE erkannt!!!!  \n {(ReadingsTimestamp("$DEVICE", "occupancy", ""))})
   FVERSION   98_DOIF.pm:0.276160/2023-05-25
   MODEL      Perl
   NAME       di.Bewegungsmelder
   NOTIFYDEV  global
   NR         586
   NTFY_ORDER 50-di.Bewegungsmelder
   STATE      initialized
   TYPE       DOIF
   VERSION    27616 2023-05-25 17:55:36
   eventCount 622
   READINGS:
     2023-07-19 21:20:06   mode            enabled
     2023-07-19 21:20:06   state           initialized
   Regex:
     accu:
     bar:
     barAvg:
     collect:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
   helper:
     NOTIFYDEV  global
     globalinit 1
     last_timer 0
     sleeptimer -1
   perlblock:
   uiState:
   uiTable:
Attributes:
   DbLogExclude .*
   do         always
   icon       helper_doif
   room       04_Licht

Gruß
Alex

Mit der Definition kann auch nichts ausgelöst werden, die entspricht nicht meinem Vorschlag.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF