HI!
Ich habe den HM Bewegungsmelder (https://wiki.fhem.de/wiki/HM-Sen-MDIR-O_Funk-IR-Bewegungsmelder_au%C3%9Fen#Einsatzbeispiele_(per_DOIF)) 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!
([BewegungsmelderPool:"^motion"] and [?Haus] eq "present")
Das sollte schon reichen :)
Hmmm... Nee, leider triggert er immernoch auf noMotion...
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?
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
ja klar, das Reading "motion" kommt ebenfalls zwei mal vor.
([BewegungsmelderPool:" motion"] and [?Haus] eq "present")
sollte eindeutig sein.
HA! TOP! Das ist es!
Vielen Dank! Habe vor lauter Bewegung das motion nicht gesehen... ;D
Vielen Dank!
Hallo Damian,
wie müsste ich das DOIF ändern für mehrere Bewegungsmelder?
["^BewegungsmelderPool":" motion"]?
Eigentlich mit eine "or" oder nicht... Also immer
[BewegungsmelderPool1:" motion"] or [BewegungsmelderPool2:" motion"] or [BewegungsmelderPool3:" motion"]
Und so weiter....
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.
Danke für den Hinweis, habe ich angepasst und beobachte es jetzt 8)
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
Dann müssen deine Events anders aussehen.
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..
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.
Habe meinen Fehler gefunden, es fehlt eine Klammer am Anfang :-)
Mit der Definition ["^Bewegungsmelder:^motion: motion"]
gibt es nun endlich keine Doppelevents.
Danke für die Unterstützung Damian!
Zitat von: Damian am 20 Juli 2023, 09:19:53Mit der Definition kann auch nichts ausgelöst werden, die entspricht nicht meinem Vorschlag.
Auch wenn der erste Teil stimmt, ist die Begründung im zweiten doch etwas sagen wir mal "mutig". ;)