Mail bei unterschreiten einer Temperatur

Begonnen von foxmulder, 16 November 2014, 13:16:12

Vorheriges Thema - Nächstes Thema

foxmulder

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

bergadler

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ß
aktuelles FHEM auf Raspberry B+, FHEM von fhem.de V.5.7, CUL868 V1.57, (6x FHT80B+ FHTTK, div. IT,div. FS20,Harmony Hub)

foxmulder

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..:-/

foxmulder

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

superdoek

#4
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?

foxmulder

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

paintyourworld

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")');;;; })

r00t2

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");;
})
FHEM 6.0 (Raspberry Pi 2 B | Raspberry Pi OS Lite | Perl 5.28.1 | UZB Z-WAVE.Me | Hue Bridge V1 | SIGNALDuino 433 MHz | FritzBox | Kodi | Pioneer AVR | MQTT | Node-RED | Diverse Google Dienste)

paintyourworld

#8
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

r00t2

#9
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.
FHEM 6.0 (Raspberry Pi 2 B | Raspberry Pi OS Lite | Perl 5.28.1 | UZB Z-WAVE.Me | Hue Bridge V1 | SIGNALDuino 433 MHz | FritzBox | Kodi | Pioneer AVR | MQTT | Node-RED | Diverse Google Dienste)

pcbastler

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.


r00t2

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. :)
FHEM 6.0 (Raspberry Pi 2 B | Raspberry Pi OS Lite | Perl 5.28.1 | UZB Z-WAVE.Me | Hue Bridge V1 | SIGNALDuino 433 MHz | FritzBox | Kodi | Pioneer AVR | MQTT | Node-RED | Diverse Google Dienste)

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

r00t2

#13
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...
FHEM 6.0 (Raspberry Pi 2 B | Raspberry Pi OS Lite | Perl 5.28.1 | UZB Z-WAVE.Me | Hue Bridge V1 | SIGNALDuino 433 MHz | FritzBox | Kodi | Pioneer AVR | MQTT | Node-RED | Diverse Google Dienste)

paintyourworld

#14
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");;
}