Hauptmenü

HM-Sec-MDIR und ?motion

Begonnen von Frood42, 24 März 2019, 09:26:56

Vorheriges Thema - Nächstes Thema

Frood42

Da wurde zwar schon einiges zu geschrieben, aber irgendwie ist mein Bewegungsmelder ein bisschen anders.

Ich habe einen
HM-Sec-MDIR3 und teste ihn Gerade mit
defmod di_motion_on DOIF ([HM_5FE95A_MOTION:?motion) (set teleBot message @@frood13 Entrance door - motion deteced)


Warum das hier nicht funktioniert:
defmod di_motion_on_lights DOIF ([HM_5FE95A_MOTION:motion] = on*) (set teleBot message @@food13 Entrance door - motion deteced)
ist eine andere Frage aber durchaus damit in Zusammenhang.

Wenn ich das abfrage
([HM_5FE95A_MOTION:?motion])

Kriege ich ja zwei events
Zitat
2019-03-21_19:52:30 HM_5FE95A_MOTION motion: on (to VCCU)
und
2019-03-21_19:56:30 HM_5FE95A_MOTION motion: off

Wobei ich den zweiten nicht brauche und vor allem mit dem im Forum vorgeschlagenen ?motion immer bekommen muss.

Wie kann ich den denn herausfiltern bzw unterdrücken?


Viele Grüße, Frood

Otto123

#1
Hallo Frood,

das hier ([HM_5FE95A_MOTION:motion] = on*) ist nur ausgedacht.
Du hast statt eines Vergleiches eine Zuweisung versucht, das hätte eigentlich Fehlermeldung geben müssen.

So wäre es ein Vergleich: ([HM_5FE95A_MOTION:motion] eq "on")
Zum Nachlesen: https://perldoc.perl.org/perlop.html
Nur den Zustand ohne Trigger abfragen kannst Du so ([?HM_5FE95A_MOTION:motion] eq "on")

Den Event filterst/triggerst Du am Besten so:
([HM_5FE95A_MOTION:"motion:.on"])

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

Frood42

Vielen Dank.
Das habe ich verwendet
([HM_5FE95A_MOTION:"motion:.on"])
Das funktioniert akkurat, und die FEhlmessungen, die wohl gar keine waren sind auch weg. Das waren wohl motion: off die ohne motion: on reinkamen.

Aber in einer Docku habe ich das mit dem motion:.on also mit :. nirgends sonst gesehen. Das war sehr hilfreich.

Otto123

Wenn der Event so aussieht -> motion: on - kannst Du das Leerzeichen in einem regExp mit einem Punkt ersetzen -> motion:.on
Ohne Ersetzung des Leerzeichen funktioniert es nicht.

Das ist eine wichtige Grundlage und muss Du Dir merken :)
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

Damian

Zitat von: Otto123 am 24 März 2019, 18:23:57
Wenn der Event so aussieht -> motion: on - kannst Du das Leerzeichen in einem regExp mit einem Punkt ersetzen -> motion:.on
Ohne Ersetzung des Leerzeichen funktioniert es nicht.

Das ist eine wichtige Grundlage und muss Du Dir merken :)

Das mag im notify so sein (dort wird das Leerzeichen als Trennzeichen angesehen), aber nicht beim DOIF.

Hier kann man ruhig [HM_5FE95A_MOTION:"motion: on"] angeben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Frood42

Also ein "." ist ein " " an diesen Stellen. Ok.

Otto123

Nein. Ein Punkt steht im regExp für irgendein Zeichen! Auch für ein Leerzeichen  ;D
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

Frood42

Ich wusste nicht dass an dieser Stelle ein regExp steht!?! Das war auch wieder neu.

Das Problem ist aber, dass ich regExps nicht mag. Ich verstehe nicht wie jemand regExps verstehen kann. Ich verstehe sie nicht. Kann aber auch sein, dass ich sie nicht verstehen will, weil ich sie nicht mag.  :-\

Otto123

Ich hoffe deine Erkenntnis ist jetzt nicht zu weit gegriffen.
An der Stelle ([HM_5FE95A_MOTION:"motion:.on"]) steht ein regEx https://commandref.fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events
An der Stelle ([HM_5FE95A_MOTION:motion] eq "on") steht ein Reading 
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

Damian

#9
Zitat von: Frood42 am 25 März 2019, 10:55:57
Ich wusste nicht dass an dieser Stelle ein regExp steht!?! Das war auch wieder neu.

Das Problem ist aber, dass ich regExps nicht mag. Ich verstehe nicht wie jemand regExps verstehen kann. Ich verstehe sie nicht. Kann aber auch sein, dass ich sie nicht verstehen will, weil ich sie nicht mag.  :-\

ja, RegEx ist eine Wissenschaft für sich. Allerdings kann man mit RegEx auch einfache Sachen definieren. Oft reichen diese für die eigenen Bedürfnisse aus.

"motion: on" heißt z. B. einfach: wenn irgendwo im Event "motion: on" vorkommt, "^motion" bedeutet, wenn das Event mit "motion" beginnt oder "on$", wenn das Event mit "on" endet.



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