Hallo zusammen,
ich wollte mir gerne eine Mail Warnung bei hoher Luftfeuchtigkeit schicken.
So weit ja recht einfach mit notify (in diesem Beispiel zum debug nur mit Log).
.*:humidity.* {
if($EVTPART1 > 65) {
Log 2,"ACHTUNG: Hohe Luftfeuchtigkeit bei $NAME -> Status: $EVTPART1";
}
}
Problem (das wohl viele haben) ist, dass diese Meldung jedes Mal kommt wenn ein Sensor humidity > 65 meldet.
Habe jetzt schon Lösungen im Forum gefunden die das über einen dummy machen, der dann über Zeit zurückgesetzt wird.
Siehe hier: http://forum.fhem.de/index.php/topic,16432.msg122266.html#msg122266 (http://forum.fhem.de/index.php/topic,16432.msg122266.html#msg122266)
Ich fände es jedoch viel einfacher dafür das THRESHOLD Modul zu verwenden, da es genau das macht was ich erwarte.
Eine Aktion (Mail) wenn der Wert überschritten wird.
Auch das ist noch einfach:
LaCrosse_Keller:humidity:0:65 |{
Log 2,"ACHTUNG: Im Keller herscht Luftfeuchtigkeit größer 65%";
}
Wie man aber schon sieht müsste ich hier für jeden Sensor ein eigenes THRESHOLD anlegen, da das Modul leider keine * akzeptiert, so wie das notify.
Außerdem gibt es innerhalb des Moduls keine Möglichkeit auf den tatsächlichen Wert zuzugreifen, so wie bei notify mit $EVTPART1.
Gibt es hier noch eine dritte einfachere Möglichkeit, die ich übersehen?
Ist es möglich/angedacht das THRESHOLD Modul um diese Funktionen zu erweitern?
Vielen Dank im Voraus.
Gruß
Matze
Da ich gerade genau das gleiche Problem habe, schiebe ich das alte Thema nochmal hoch...
hat schon jemand eine gute Überwachung der Luftfeuchtigkeit hinbekommen ohne eine Mailflut zu bekommen?
Ich wäre auch zufrieden wenn das Notify auslöst und dann für 1 stunde Pause macht, kann aber das "event-min-intervall" nicht für den Lacrosse sensor setzen, da sonst meine SVG Kurven zerstört werden....
hat jemand eine gute Idee? Wäre echt dankbar.
Gruss
Das könnte man mit DOIF (http://fhem.de/commandref_DE.html#DOIF) lösen
Voraussetzung: alle Readings heissen "humidity"
Die Meldung wird einmal pro Gerät erzeugt bei >65 und bei <60 zurückgesetzt.
([":humidity: "] and [$DEVICE:humidity] > 65)
((IF (!ReadingsVal("$SELF","hum_$DEVICE",0))
({Log 2,"ACHTUNG: Hohe Luftfeuchtigkeit bei $DEVICE -> Status: [$DEVICE:humidity]"},
setreading $SELF hum_$DEVICE 1)))
DOELSEIF ([":humidity: "] and [$DEVICE:humidity] < 60)
(IF (ReadingsVal("$SELF","hum_$DEVICE",1))
(setreading $SELF hum_$DEVICE 0))
und das Attribut
do always
Danke schonmal für den Hinweis, ich bekomme aber folgenden Fehler: :'(
Unknown command ((IF, try help. Unknown command ({Log, try help. Please define $SELF first Unknown command DOELSEIF, try help. Unknown command (IF, try help. Unknown command (setreading, try help.
wie hast du Ellert's Code eingegeben ?
In der GUI des DOIF über DEF ?
Oder die fhem.cfg editiert ?
Zitat von: pillepalle12 am 10 November 2016, 07:52:13
Danke schonmal für den Hinweis, ich bekomme aber folgenden Fehler: :'(
Unknown command ((IF, try help. Unknown command ({Log, try help. Please define $SELF first Unknown command DOELSEIF, try help. Unknown command (IF, try help. Unknown command (setreading, try help.
Welche DOIF-Version hast Du? "version <Name des DOIF>"
Poste mal ein "list <Gerätename>"
Edit: Bei mir funktioniert es, wie es soll, habe ich gerade nochmal getestet.
Wie ein DOIF zu erstellen ist findest Du hier. (http://www.fhemwiki.de/wiki/DOIF/Tools_und_Fehlersuche#Standardisierte_Ger.C3.A4teerstellung_und_Bearbeitung) und auch an dieser Stelle (http://www.fhemwiki.de/wiki/DOIF/Tipps_zur_leichteren_Bedienung#Verwenden_des_DEF-Editors_zum_Erstellen_und_Bearbeiten_des_DOIF)
Eingegeben hab ich den Code direkt in die fhem.cfg so:
define Luftfeuchtewarner DOIF ([":humidity: "] and [$DEVICE:humidity] > 65)
((IF (!ReadingsVal("$SELF","hum_$DEVICE",0))
({Log 2,"ACHTUNG: Hohe Luftfeuchtigkeit bei $DEVICE -> Status: [$DEVICE:humidity]"},
setreading $SELF hum_$DEVICE 1)))
DOELSEIF ([":humidity: "] and [$DEVICE:humidity] < 60)
(IF (ReadingsVal("$SELF","hum_$DEVICE",1))
(setreading $SELF hum_$DEVICE 0))
bei Version bekomme ich folgende Meldung (?):
no loaded modules found that match: Luftfeuchtewarner
leg mal ein DOIF-Template in der Form an.
define Luftfeuchtewarner DOIF ([00:00])
Dann kannst Du in der GUI das DOIF "öffnen" (liegt sicher im Raum Unsorted) und bei Internals auf DEF klicken.
Der Editor öffnet sich und dort dann Ellert's Code reinkopieren.
Die ([00:00]) natürlich überschreiben.
Button modify klicken und dann sollte das DOIF funktionieren.
Die cfg sollte man nur editieren, wenn man weiss, wie man es richtig macht und sonst den DEF-Editor nutzen.
Es hätte "version DOIF" heissen müssen, mein Fehler.
Also mal den Links in Antwort 5 folgen und lesen.
Version DOIF ergibt:
98_DOIF.pm 12215 2016-09-26 21:02:49Z damian-s
@kumue, ich habe jetzt ein UPDATE gemacht und bin nach Deiner Anleitung vorgegangen, jetzt scheint es zu klappen.
VIELEN DANK EUCH BEIDEN!!!
Zur Vervollständigung, hier mein funktionierender Code mit humidity und Einschränkung auf Geräte, die Mit "T_" beginnen:
define Luftfeuchtewarner DOIF (["^T_:humidity: "] and [$DEVICE:humidity] > 70)\
((IF (!ReadingsVal("$SELF","hum_$DEVICE",0))\
({DebianMail('xxxxxx@xxx.com', 'Luftfeuchte bei $DEVICE mit [$DEVICE:humidity]%', "FHEM ACHTUNG: Hohe Luftfeuchtigkeit bei $DEVICE -> Feuchte: [$DEVICE:humidity]%");;;;Log 2,"ACHTUNG: Hohe Luftfeuchtigkeit bei $DEVICE -> Feuchte: [$DEVICE:humidity]%"},\
setreading $SELF hum_$DEVICE 1)))\
DOELSEIF (["^T_:humidity: "] and [$DEVICE:humidity] < 60)\
(IF (ReadingsVal("$SELF","hum_$DEVICE",1))\
(setreading $SELF hum_$DEVICE 0))
attr Luftfeuchtewarner do always