FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: dindihi am 15 September 2014, 09:59:20

Titel: HM-Sec-mdir sendet bei motion mehrere mails
Beitrag von: dindihi am 15 September 2014, 09:59:20
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

Titel: Antw:HM-Sec-mdir sendet bei motion mehrere mails
Beitrag von: justme1968 am 15 September 2014, 10:46:09
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
Titel: Antw:HM-Sec-mdir sendet bei motion mehrere mails
Beitrag von: dindihi am 15 September 2014, 11:34:31
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.