Nach Veränderung Zustend prüfen und Mail versenden

Begonnen von TobiasR, 02 Dezember 2018, 10:18:17

Vorheriges Thema - Nächstes Thema

TobiasR

Hallo,

ich möchte eine EMai Nachricht sobald sich an meinem Hühnerhaus die Tür geöffnet/geschlossen wurde.
Ich habe dafür  einen Reedkontakt an einem HM485 Eingang angeschlossen und erhalte jetzt auch diese Nachricht im Event Monitor:

2018-12-02 09:56:45 HM485 K_Huehner_Tuer sensor: open
2018-12-02 09:56:45 HM485 K_Huehner_Tuer auf

Nun habe ich versucht mit diesem Programm eine Email zu erzeugen:


(
[K_Huehner_Tuer:"^$"]
)

(

IF
   ([K_Huehner_Tuer] eq "auf")

   ({DebianMail('name@adresse.de',
             'Hühnerhaus wurde geöffnet');})
ELSE
   ({DebianMail('name@adresse.de',
             'Hühnerhaus wurde geschlossen');})

)


Mein erster Fehler ist wohl dass ich mit "^$" nicht auf eine Zustandsänderung reagiert. Es passiert nämlich nichts. Was muss ich da anders machen?
Den zweiten Fehler kann ich nicht eingrenzen. Prüfe ich z.B. auf "auf", kommt ebenfalls keine Mail. Wie muss die IF Prüfung anders aussehen?

amenomade

#1
DOIF ([ K_Huehner_Tuer] eq "auf") {Debianmail geöffnet} DOELSE {Debianmail geschlossen}

oder
DOIF ([ K_Huehner_Tuer:"auf"]) {Debianmail geöffnet} DOELSEIF ([ K_Huehner_Tuer:"zu"]) {Debianmail geschlossen}
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

TobiasR

Hallo,

das hatte ich auch schon mal versucht. Hat auch geklappt.

Problem war aber dass der Reedkontakt häufig prellt und somit immer beide Meldung (auf und zu) kamen.
Aus dem Grund habe ich mich entschlossen es mit einer Prüfung des Status nach Änderung zu versuchen.
Deshalb die IF-Abfrage.
Zur Not könnte ich dann dort auch noch eine Wartesekunde einbauen.

Leider bekomme ich es im Moment nicht einmal hin auf jede Änderung zu reagieren.
Habe es jetzt mit [K_Huehner_Tuer:"*"]versucht.

Die Fehlermeldung lautet dann
Zitat2018-12-02 10:51:13 DOIF K_Huehner_Tuer error: condition c01: Quantifier follows nothing in regex; marked by <-- HERE in m/* <-- HERE / at ./FHEM/98_DOIF.pm line 939.

amenomade

#3
Dann wäre es eher [K_Huehner_Tuer:".*"]
Wobei ich nicht ganz verstehe was Du meinst:
DOIF ([ K_Huehner_Tuer:"auf"]) {Debianmail geöffnet} DOELSEIF ([ K_Huehner_Tuer:"zu"]) {Debianmail geschlossen} ist besser als dein IF Konstrukt mit trigger .* : reagiert nur auf bestimmte Events "auf" und "zu".

Mit deinem If Konstrukt mit .* Trigger reaggiert das DOIF auf allen Events (inkl. z.B. Batterie Event), und prüft dann den Zustand => DU kriegst den Zustand in der Email bei jedem Event des Geräts. Es sei denn, Du hast auf dem Device event-on-change-reading gesetzt.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

TobiasR

Hallo,

habe es hinbekommen!
Es war ein simpler Tippfehler und kein Prellen.

Die Lösung ist:

(
[K_Huehner_Tuer:"^sensor:.open$"]
)
(
{DebianMail('Mailadresse',
             'Hühnerhaus ist jetzt auf');
}
)


Ein zweiter DOIF mit zu melden dann das Schließen