Email benachrichtigung wenn Wert festgelegten Wert übersteigt

Begonnen von MichlB, 29 August 2015, 22:11:04

Vorheriges Thema - Nächstes Thema

franky08

Joh, ist so wie ich es oben schon gepostet habe (ohne das device und den Namen direkt anzugeben)  ;)
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Knallfrosch

Ich habe da ja noch Verwirrung mit dem DOIF gestiftet.

Jetzt wo du es sagst....du hattest die Lösung ja eigentlich schon gepostet.  :o
Ich hatte mich jetzt nochmal dran gesetzt und mir aus den Bsp. in der Commandref und dem Forum was zusammengebastelt.

Ich tue mich mit den Befehlen einfach schwer.

Franky08, einigen wir uns darauf das wir die Lösung gemeinsam gefunden haben? ;-)
Wenigstens ein kleiner Streichler für mein Ego.....hihi!

Grüße und gute N8
Thorsten

franky08

#32
Na klar aber erst wenn er es getestet hat, Thorsten  ;D ;)

P.S. durch fhem habe ich mittlerweile drei Perl Bücher und Linux Referenzen, bringt einen ungemein weiter  8)

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

MichlB

#33
guten morgen oder besser Mahlzeit....

also ich kann euch mitteilen, dass folgende zeile in der fhem.cfg den erfolg brache:

define Wasserverbrauch notify MYSENSOR_100 {if (ReadingsVal("MYSENSOR_100","flow1",0) > 15) { DebianMail(asdf@@asdf.at','Sicherheitsbericht','ACHTUNG - Wasserverbrauch hoch!!')}}


ABER: das ist leider nicht das gelbe vom Ei!
mein Sensor loggt zwar brav immer 12l (mehr geht ja auch nicht durch die Leitung bei voll aufgedrehten Wasserhähnen binnen 15sec) aber das Problem ist, dass mir das nix bringt, denn ich habe heute in der früh ca. 250 mails mit der Benachrichtigung bekommen :-O

Fazit: eigentlich möchte ich ja wissen, wenn das wasser über einen längeren Zeitraum fließt, und wie viel Liter da geflossen sind... nicht, wenn 12l fließen...

zb.: sollte das wasser länger als 30min laufen, dann mail oder sollten auf einmal mehr als 100l entnommen werden (Zeitraum ist egal aber durchgängig) dann mail...

wie kann ich das loggen? meine Idee: FHEM merkt wenn wasser aufgedreht wird und "notiert" die Zeitspanne der wasserentnahme und die menge... sollte ein wert eine Grenze überschreiten -> MAIL....
geht so was???
1x PI 2B+ FHEM - Heizung
1x Pi 3b+ - FHEM - Haussteuerung
1x Pi 3 - MagicMirror
2x Pi B - Musicbox

Wernieman

Ich persönlich würde .... in Pseudocode

1.
Wenn mehr als X Wasser -> Dummy auf 1
Wenn weniger als Y Wasser -> Dummy auf 0
(Y < X um etwas Toleranz zu haben, Stichwort Hysterese)

2.
Wenn Dummy länger als T on, dann -> Mail

Gibt natürlich noch mehr Lösungen ...
- 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

MichlB

ich steck schon wieder fest!

wollte jetzt ein DOIF erstellen, selches einen Dummy auf ON stetzt wenn mein MYSENSOR einen Flow ausgibt.
Wenn ich beim Eventmonitor {ReadingsVal("MYSENSOR_100","flow1",0)} eingebe bekomme ich den flow-wert. passt ja auch so weit.. jetzt wollte ich
define di_WasserOn DOIF ({ReadingsVal("MYSENSOR_100","flow1",0)}>0) (set Wasserdum on) DOELSE (set Wasserdum off)
aber bekomme nur die Fehlermeldung "di_WasserOn DOIF: no trigger in condition: {ReadingsVal("MYSENSOR_100","flow1",0)}>0"

habs auch schon so versucht:
define di_WasserOn DOIF ([MYSENSOR_100]:flow1>0) (set Wasserdum on) DOELSE (set Wasserdum off)
und bekomme nur "initialized" als State...

was mach ich falsch?
1x PI 2B+ FHEM - Heizung
1x Pi 3b+ - FHEM - Haussteuerung
1x Pi 3 - MagicMirror
2x Pi B - Musicbox

MichlB

guten morgen

wieder einen Schritt weiter!
die Übertragung an einen dummy funktioniert...
define di_WasserOn DOIF ([MYSENSOR_100:flow1]>0) (set Wasserdum on) DOELSE (set Wasserdum off)

schaltet mir den Dummy ...
mittlerweile habe ich auch herausgefunden, wie ich den Zeitstempel auslesen kann -> also kann das als Bedingung verwenden...

ich dachte mir, folgende Vorgehensweise:
1. Prüfen ob Dummy = On
2. Wenn dummy ON - wie lange ist der Schon on?
3. Wenn dummy ON-Zeit länger als x-Min -> Emailbenachrichtigung...

als Code könnte das so aussehen
define Wasserverbrauch notify MYSENSOR_100 {if (ReadingsVal("Wasserdum","state",0) = "on") {if (localtime()-ReadingTimestamp("Wasserdum","state",0) > 2) ({ DebianMail('sdfad@sdfgdfg.at','Sicherheitsbericht','ACHTUNG - Wasserverbrauch hoch!!')})}


theoretisch sollte das funktionieren...
TUT ES ABER LEIDER NICHT  :'(

wieso rechnet der das nicht???

ich vermute meinen fehler irgendwo bei
{if (localtime()-ReadingTimestamp("Wasserdum","state",0) > 2)
weil der rest funktioniert ... =getestet...

1x PI 2B+ FHEM - Heizung
1x Pi 3b+ - FHEM - Haussteuerung
1x Pi 3 - MagicMirror
2x Pi B - Musicbox