gelöst - Shelly Flood, E-Mail Benachrichtigung

Begonnen von fh555, 23 Februar 2021, 00:07:26

Vorheriges Thema - Nächstes Thema

fh555

Hi,
ich verzweifel bald, sitze jetzt schon Stunden vor den Problem und langsam sehe ich den Wald vor lauter Bäumen nicht mehr.

Theoretisch ganz einfach. Ich möchte eine E-Mail Benachrichtigung auslösen, wenn der Shelly Flood "Wasser" detektiert.
Ich habe es mit notify und DOIF versucht aber mit beiden bekomme ich es nicht hin.

Hier mein Versuch mit "notify"
MQTT2_shellyflood_C8A89B {if(ReadingsVal("MQTT2_shellyflood_C8A89B","flood","") eq "true") ({DebianMail('FHEM-Wasserschaden-Alarm','ACHTUNG - Keller steht unter Wasser!')})

Fehler: Alarm_Flood DOIF: Perlblck: no right bracket:

oder mit DOIF
([MQTT2_shellyflood_C8A89B:flood] == "true") ({DebianMail('FHEM-Wasserschaden-Alarm','ACHTUNG - Keller steht unter Wasser!');;})

Fehler: condition c01: Bareword "true" not allowed while "strict subs" in use, line 1.

Sowie zahlreiche weitere Versuche. Ich habe die Commandoref und Wiki und durchforstet aber leider erfolglos :-(

Die Anbindung habe ich mit MQTT2 gemacht, wie ihr sehen könnt.

Habe es jetzt endlich hinbekommen :-)

elektrikpe2

Hallo, ich stehe vor dem gleichen Problem. Kannst Du uns Deine Lösung zeigen? Danke. LG Peter

fh555

#2
Hi elektrikpe2,
ich habe ein neues Device Notify "Alarm_Flood_notify" angelegt und in der DEF folgendes deklariert:

MQTT2_shellyflood_C8A89B:flood:.* {if( ReadingsVal( "MQTT2_shellyflood_C8A89B","flood","" ) == "true") {DebianMail('FHEM-Wasserschaden-Alarm','ACHTUNG - Keller steht unter Wasser!');;}}

Die Benachrichtigung funktioniert, aber leider hatte ich die Nacht ein Problem.

Ich bekam eine E-Mail, dass mein Keller unter Wasser steht, was aber nicht sein kann, da der Shelly Flood bei mir noch auf den Schreibtisch steht.
Es war halt zu spät gewesen als ich die Lösung hatte und wollte nicht mehr in den Keller gehen.

Ich muß jetzt ersteinmal die Logs des Shelly überprüfen, ob es eine Fehlfunktion von Shelly ist oder ein Problem in meiner Auswertung.

Wenn ich eine Sirene als Alarmgeber angeschlossen hätte, wären wir alle Nachts kurz nach 3:00 Uhr in den Betten gestanden.

P.S.: Habe gerade mal das LOG angeschaut, Der Shelly hat seinen Stus gesendet, da die Temperatur um 1° gefallen war, kann er ja auch, ist ja so eingestellt, aber er übermittelt den Status Flood: false

2021-02-24_03:29:14 MQTT2_shellyflood_C8A89B flood: false

Also stimmt noch was nicht mit der Auswertung meines notify's

------
So, nun endlich doch gelöst :-)
------

MQTT2_shellyflood_C8A89B:flood:.* {if(ReadingsVal("MQTT2_shellyflood_C8A89B","flood","") eq "true") {DebianMail('FHEM-Wasserschaden-Alarm','ACHTUNG - Keller steht unter Wasser!');;}}

Bei einer Statusmeldung zwecks Temperaturänderung geht keine E-Mail raus und bei Wasserkontakt wird eine versendet :-)

Beta-User

1. Wenn du Text vergleichen willst, ist "==" ungeeignet (=> "eq" &Co)
2. Wenn du nur reagieren willst, wenn "true" paßt, solltest du den TRIGGER (=> vorne, vermutlich: MQTT2_shellyflood_C8A89B:flood:.true) anpassen, dann kannst du dir das if hinten sparen...

(Grundsätzlich: In Events denken, nicht in Zuständen).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

fh555

Hi Beta-User,
danke für deinen Beitrag  :)

Ich habe den Code jetzt, wie von Dir vorgeschlagen, geändert und einen Testlauf (Wasser und Temperaturänderung) gemacht.
MQTT2_shellyflood_C8A89B:flood:.true {DebianMail('FHEM-Wasserschaden-Alarm','ACHTUNG - Keller steht unter Wasser!');;}

Das Ergebnis ist das selbe, wie mit meinen Code. Nur dass deiner minimalistischer ist, was die Sache natürlich ungemein vereinfacht.

Vielen Dank dafür.

Wernieman

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html