Hallo zusammen,
ich hab da mal eine vermutlich dumme Frage aber auch mit der Suche komme ich gerade nicht so recht weiter. :-(
Ich habe einen Temperatursensor über den GPIO4 Port des RPi angeschlossen und lese die Messungen via FHEM aus. Soweit sogut....alles klappt bestens. :-)
Nun möchte ich noch eine Infomail verschicken wenn eine gewisse Temperatur unterschritten wurde. Also z.b. wenn ein Messwert unter 5 Grad fällt soll einmalig eine Mail versendet werden.
Hier der aktuelle Sensor:
# TemperaturSensoren
define Temperatur GPIO4 10-000802b66763
attr Temperatur alias aktuelle Temperatur
attr Temperatur fp_Erdgeschoss 32,324,1,
attr Temperatur group Wettervorhersage
attr Temperatur icon icoTempBaum
attr Temperatur model DS18S20
attr Temperatur pollingInterval 300
attr Temperatur room Wetter
Ich habe bereits andere Aktoren im Einsatz und lasse da Mails über einen "notify" und "DebianMail" versenden...das klappt gut.
In dem Fall habe ich schon gelesen...könnte das auch gehen...nur müsste man wohl einen Zähler (UserReadings) mit einbauen der den Zähler beim versenden der Mail auf 1 setzt...sonst gibt es SPAM Mails. ;-)
Beim Überschreiten der 5 Grad müsste dieser Zähler dann wohl wieder zurück gesetzt werden.
Könnt ihr mich hierbei bitte unterstützen?
Vielen lieben Dank im Voraus und viele Grüße
Fox
Hallo,
ich habe das per DOIF gelöst.
Verschickt bei mir zwar keine Mails, sondern macht 'ne Ansage, aber das ist ja schlussendlich wurscht.
define Hzg_Wz_alarm DOIF ([Hzg_Wz:measured-temp] < 17) (set nexus_webview ttsSay Das Wohnzimmer hat nur noch 17 Grad.
Und die Ansage kommt nur einmal. ;)
Gruß
Hallo,
danke für die schnelle Antwort....
also quasi so dann?
define Temperatur_alarm DOIF ([Temperatur:temperature] < 10) ({ DebianMail('info@@all4everyone.de','FHEM-Temperatur','ACHTUNG - Temperatur zu niedrig!');;;; })
Klappt glaub noch nicht so ganz..:-/
Hallo zusammen,
hier noch zum Abschluss wie es jetzt funktioniert. ;-)
define Temperatur_alarm DOIF ([Temperatur:temperature] < 5.0) ({ DebianMail('mail@mail.de','FHEM-Temperatur-Alarm','ACHTUNG - die Außentemperatur ist unter 5 Grad gefallen!');;;; })
Vielen Dank noch mal für den Tipp mit "DOIF" ! ;-)
LG
Fox
Sehr schön!
Ich rätsel seit 3 Tagen vergeblich an einer Variante, in der mir der Temperaturwert in der Nachricht mitgeteilt wird.
Wer kann mir das umschreiben?
Gute Frage....das wäre noch ein nützliches Feature. :-)
Hier gabs schon mal sowas ähnliches...aber habs irgendwie auch noch nicht damit hinbekommen...:-/
http://forum.fhem.de/index.php?topic=25121.0
Nunmehr 120 Tage später kommt evtl. ein Ansatz.
define Temperatur_alarm DOIF ([Temperatur:temperature] < 5.0)
({ DebianMail('mail@mail.de','FHEM-Temperatur-Alarm','ACHTUNG - die Außentemperatur ,ReadingsVal("Temperatur", "temperature", "30")');;;; })
Zitat von: paintyourworld am 18 Januar 2017, 13:31:58
Nunmehr 120 Tage später kommt evtl. ein Ansatz.
...
ReadingsVal könnte klappen. Ich habe in einem at mal etwas ähnliches gemacht. Dort waren es aber so viele Werte, dass ich mir die alle vorher in Variablen habe schreiben lassen - der Übersicht halber.
Also so in etwa (ungetestet!):
define Temperatur_alarm DOIF ([Temperatur:temperature] < 5.0) ({
# Variablen sammeln
my $Temperatur = ReadingsVal("Temperatur", "Temperatur");;
my $ZweiterMesswert = ReadingsVal("Anderes_Geraet", "ZweiterMesswert ");;
# usw.
# Mail senden
DebianMail('mail@mail.de','FHEM-Temperatur-Alarm',"ACHTUNG - die Außentemperatur ist gering (" . $Temperatur . " °C) - zweiter Messwert: " . $ZweiterMesswert");;
})
Mhhh.. hab es mal mit deiner Beschreibung versucht.
Leider geht keine Email raus. Evtl. einen TIP was nicht stimmt..
*15:25:00 ({my $Temperatur = ReadingsVal("Innentemperatur", "state");; DebianMail('test123@gmx.de,'FHEM-Aktuelle Temperatur,"Die Aktuelle Temperatur ist : (" . $Temperatur . " °C) ");;
})
( Ich hole mir den Temperaturwert aus der LOGO8! Diese wird mir als "state" in das S7-DRead geschrieben. )
DebianMail funktioniert normalerweise einwandfrei !
gruß pYw
Zitat von: paintyourworld am 18 Januar 2017, 15:31:52
Mhhh.. hab es mal mit deiner Beschreibung versucht.
Leider geht keine Email raus. Evtl. einen TIP was nicht stimmt...
Was steht denn im Log?
Wie gesagt: Der Code ist ungetestet, da ich gerade nicht an der FHEM sitze.
Edit:
Hier mal ein Auszug aus meinem Code (ist wie gesagt ein at und kein doif):
*08:00:00 {
# Tägliche Mail zum Systemzustand senden via sendMail
# Uptime System (FHEM)
my $uptime = ReadingsVal("sys_Raspberry","uptime_text","");;
my $fhemuptime_text = ReadingsVal("sys_Raspberry","fhemuptime_text","");;
# Load average
my $loadavg = ReadingsVal("sys_Raspberry","loadavg","");;
# CPU Werte
my $cpu_freq_stat = ReadingsVal("sys_Raspberry","cpu_freq_stat","");;
my $cpu_temp = ReadingsVal("sys_Raspberry","cpu_temp","");;
my $cpu_temp_avg = ReadingsVal("sys_Raspberry","cpu_temp_avg","");;
# Speicherplatz
my $ram = ReadingsVal("sys_Raspberry","ram","");;
my $fs_boot = ReadingsVal("sys_Raspberry","fs_boot","");;
my $fs_root = ReadingsVal("sys_Raspberry","fs_root","");;
DebianMail('me@ahost.com','FHEM Daily Mail','Begin FHEM Daily Mail\n---\nSystem Uptime: ' . $uptime . ' (FHEM: ' . $fhemuptime_text . ')\n\nLoad average: ' . $loadavg . '\n\nCPU Temperature: ' . $cpu_temp . ' °C (average: ' . $cpu_temp_avg . ' °C)\nCPU Frequency Statistic: ' . $cpu_freq_stat . '\n\nMemory (RAM): ' . $ram . '\n\nFile System (boot): ' . $fs_boot . '\nFile System (root): ' . $fs_root . '\n---\nEnd FHEM Daily Mail','');;
}
Denke die Struktur sollte ersichtlich sein.
Zitat von: paintyourworld am 18 Januar 2017, 15:31:52
*15:25:00 ({my $Temperatur = ReadingsVal("Innentemperatur", "state");; DebianMail('test123@gmx.de,'FHEM-Aktuelle Temperatur,"Die Aktuelle Temperatur ist : (" . $Temperatur . " °C) ");;
Mein Mail macht das einfacher:
DebianMail('irgendeine@mail.de',"Info vom FHEM System","Fritzbox-IP: $dslip, Temperatur: $temperatur, Wohnzimmer: $WZ_temperatur");}
Die Variablen (vorher wie bei dir zugewiesen) werden also direkt ersetzt.
Zitat von: pcbastler am 18 Januar 2017, 20:37:28
Mein Mail macht das einfacher:
...
Die Variablen (vorher wie bei dir zugewiesen) werden also direkt ersetzt...
Das funktioniert aber nur, wenn Du doppelte Anführungszeichen [
"] verwendest - und nicht bei Einfachen [
'].
Denn nur dann wird per Interpolation der Wert der zuvor zugewiesenen Variable richtig in den Ausdruck gesetzt. :)
Zitat von: paintyourworld am 18 Januar 2017, 15:31:52
Leider geht keine Email raus. Evtl. einen TIP was nicht stimmt..
... DebianMail('test123@gmx.de,'FHEM-Aktuelle
Hi,
da fehlt im markierten Bereich mindestens ein " und das Komma steht falsch!
Gruß Otto
Stimmt, da fehlen sogar zwei Anführungszeichen, wenn ich richtig gezählt habe (dann steht das Komma auch wieder richtig):
...DebianMail('test123@gmx.de,'FHEM-Aktuelle Temperatur,"Die Aktuelle Temperatur ist : (" . $Temperatur . " °C) ");;
Sollte eher so sein:
...DebianMail('test123@gmx.de','FHEM-Aktuelle Temperatur',"Die Aktuelle Temperatur ist : (" . $Temperatur . " °C) ");;
Das hätte aber spätestens beim Betrachten der Log-Einträge durch DebianMail auffallen müssen...
Da stimme ich zu... so funktioniert es wunderbar... aber Danke für die Info!
Kleiner Auszug:
Der Merker M5 wird mit einem Schwellwertblock (Grenzwert) in der LOGO8! beschrieben.
Sobald der Schwellwert über bzw. unterschritten wird, übergibt der M5 an FHEM die Wertigkeit.
( *S7 Connection vorausgesetzt* S7_DRead ** define <Name> S7_DRead {inputs|outputs|flags|db} <DB> <byteaddress>.<bitaddress> ->> define SPS_M5_Read S7_DRead db 0 1104.4 )
Auch hier sollte im SPS_M5_Read "attr event-on-change-reading" auf "state" gesetzt werden, sonst bekommt mal je nach *Connection Intervall* immer wieder eine Email, solange die Wertigkeit ansteht!
define LOGO8_M5 notify SPS_M5_Read:on
{
my $Temp = ReadingsVal("Innentemperatur", "state", "30");;
DebianMail('test1223@mail.de','LOGO8! Grenzwert >Max',"Aktuelle: $Temp");;
}