HM-Sec-mdir sendet bei motion mehrere mails

Begonnen von dindihi, 15 September 2014, 09:59:20

Vorheriges Thema - Nächstes Thema

dindihi

Hallo,

ich versuche seit einigen Tagen den HM-Sec-Mdir zu konfigurieren.
Ziel ist:
Wenn Handy presence auf absent ist, ne mail & Licht an, wenn Handy auf present, dann nur Licht.

Momentan hab ich's so:
define Bewegung_Keller notify Bewegungsmelder_Keller:* {if($value{"Bewegungsmelder_Keller"} eq "motion") { DebianMail('xxx@@xxx.lu',"FHEM $NAME","Name: $NAME Event: $EVENT")}}

Natürlich wird hier noch kein Handy State abgefragt.
Jedoch werden immer 3-4 emails verschickt:

sendEmail Text: Name: Bewegungsmelder_Keller Event: motion
Text: Name: Bewegungsmelder_Keller Event: motion: on (to broadcast)
Text: Name: Bewegungsmelder_Keller Event: motionCount: 65_next:7s
Text: Name: Bewegungsmelder_Keller Event: brightness: 33

Ich hab dann auch versucht mittels einer if-perl schleife den Text nach "on (to broadcast)" zu suchen, und dann erst eine email zu versenden.

define Bewegung_Keller notify Bewegungsmelder_Keller:motion.* { if("$EVENT" =~ m/on.\(to.broadcast/) { DebianMail('xxx@@xxx.lu',"FHEM $NAME","Name: $NAME Event: $EVENT");; Log 3,"Name: $NAME Event: $EVENT" }}

Hier wird dann auch nur eine Mail verschickt.

Wenn ich jedoch mit dem presence state versuche das zu konfigurieren, erhalte ich immer Fehler:

define Bewegung_Keller notify Bewegungsmelder_Keller:motion.* IF ([Nexus5:&STATE] eq "absent") ({if("$EVENT" =~ m/on.\(to.broadcast/) {DebianMail('x@@x.lu',"FHEM $NAME","Name: $NAME Event: $EVENT")}})

(ELSE nach IF noch nicht mit drin)

2014.09.15 09:56:22.699 3: Bewegung_Keller return value: IF: no right bracket: ({if("motion" =~ m/on.\(to.broadcast/) {DebianMail('x@@x.lu',"FHEM Bewegungsmelder_Keller","Name: Bewegungsmelder_Keller Event: motion")}})
2014.09.15 09:56:22.711 3: Bewegung_Keller return value: IF: no right bracket: ({if("motion: on (to broadcast)" =~ m/on.\(to.broadcast/) {DebianMail('x@@x.lu',"FHEM Bewegungsmelder_Keller","Name: Bewegungsmelder_Keller Event: motion: on (to broadcast)")}})
2014.09.15 09:56:22.719 3: Bewegung_Keller return value: IF: no right bracket: ({if("motionCount: 68_next:7s" =~ m/on.\(to.broadcast/) {DebianMail('x@@x.lu',"FHEM Bewegungsmelder_Keller","Name: Bewegungsmelder_Keller Event: motionCount: 68_next:7s")}})

Kann's sein dass in der IF Schleife keine perl Funktionen ausgeführt werden?
Wie kann ich dies sonst ohne IF einstellen?

Besten Dank im Voraus


justme1968

es sind unterschiedliche events und reine regex .* ist so allgemein das sie auf alles reagiert. entweder machst du sie so genau das sie nur auf motion reagiert ( in dem du statt .* motion schreibst ) oder du brachst ein if im notify.

ansonsten schmeißt du gerade auch noch if und IF sowie schleifen und bedingungen durcheinander.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

dindihi

Besten Dank!
Jetzt geht's. Hab's so gemacht:
define Bewegung_Keller notify Bewegungsmelder_Keller:motion IF ([Nexus5:&STATE] eq "absent" and [S4_mini:&STATE] eq "absent") ( { DebianMail('x@@x.lu',"FHEM $NAME","Name: $NAME Event: $EVENT if")},set Garage_Licht on-for-timer 300) ELSE
( { DebianMail('x@@x.lu',"FHEM $NAME","Name: $NAME Event: $EVENT else")},set Garage_Licht on-for-timer 300)

Die mails werden nur 1x verschickt, und Lampe geht an&aus.