FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: onix20 am 16 Juni 2018, 09:22:04

Titel: Aktuelle Temperatur per Email senden
Beitrag von: onix20 am 16 Juni 2018, 09:22:04
Hallo,

ich habe ein Alarm für den Gefrieschrank angelegt. Wenn der Gefrierschrank eine Temperatur >-16° errecht,
wird eine Email an mich gesendet. Wenn die Temperatur nach 30min. immer noch >16° ist, wird eine weitere Emailwarnung gesendet. Das funktioniert schon mal.
Jetzt würde ich gerne die aktuelle Temperatur in der Email angeben. Das bekomme ich einfach nicht hin.
Kann mir jemand sagen, wie ich das umsetzen kann?

Hier meine aktuelle Konfiguration:

Gefrierschrank:temperature:.* {
if ( (ReadingsVal("Gefrierschrank","temperature",0) > -16.0) && (time > $main::NewMailtime)) {DebianMail(######@#####.de','FHEM-Temperatur-Alarm Gefrierschrank','ACHTUNG - die Temperatur vom Gefrierschrank ist über -16° gestiegen!');$main::NewMailtime = time+1800;
  }
}
Titel: Antw:Aktuelle Temperatur per Email senden
Beitrag von: Otto123 am 16 Juni 2018, 09:29:35
Moin,

genaugenommen steht der Wert schon im $EVENT, du brauchst nicht mal neu auslesen.

Du kannst auch ReadingsVal("Gefrierschrank","temperature",0) durch $EVTPART1 ersetzen. (Ich hoffe $EVTPART1 ist richtig, die Zählung beginnt bei 0, musst Du genau im Eventmonitor schauen)
https://commandref.fhem.de/#notify

Gruß Otto
Titel: Antw:Aktuelle Temperatur per Email senden
Beitrag von: amenomade am 16 Juni 2018, 10:35:51
Und pass auf, dass innerhalb von single quotes die Variables nicht interpretiert werden.
Titel: Antw:Aktuelle Temperatur per Email senden
Beitrag von: Otto123 am 16 Juni 2018, 10:49:59
Guter Hinweis :)
@onix20 und nimm bitte beim posten von Code die Code Tags - die # Taste über dem  :-X Smiley
Titel: Antw:Aktuelle Temperatur per Email senden
Beitrag von: onix20 am 16 Juni 2018, 12:21:02
Hallo Otto,
dein Hinweis hat funktioniert.

Ich habe es so geändert:

Gefrierschrank:temperature:.* {
if (($EVTPART1 > -16.0) && (time > $main::NewMailtime)) {DebianMail('#####@#####.de','FHEM-Temperatur-Alarm Gefrierschrank','ACHTUNG - die Temperatur vom Gefrierschrank ist auf'.$EVTPART1);$main::NewMailtime = time+1800;
  }
}


Die Ausgabe sieht so aus:

ACHTUNG - die Temperatur vom Gefrierschrank ist auf -13.3

Wie kriege ich nun die Ausgabe formatiert, dass sie so aussieht:

ACHTUNG - die Temperatur vom Gefrierschrank ist auf -13.3°C  gestiegen

Titel: Antw:Aktuelle Temperatur per Email senden
Beitrag von: amenomade am 16 Juni 2018, 12:50:31
'ACHTUNG - die Temperatur vom Gefrierschrank ist auf'.$EVTPART1.' gestiegen'?
Titel: Antw:Aktuelle Temperatur per Email senden
Beitrag von: Otto123 am 16 Juni 2018, 13:14:46
Oder so sollte es auch gehen.
"ACHTUNG - die Temperatur vom Gefrierschrank ist auf $EVTPART1 gestiegen"

@ Jürgen Du wolltest doch Deine Email schwärzen?  ;)
Titel: Antw:Aktuelle Temperatur per Email senden
Beitrag von: onix20 am 16 Juni 2018, 13:44:35
Zitat von: Otto123 am 16 Juni 2018, 13:14:46
Oder so sollte es auch gehen.
"ACHTUNG - die Temperatur vom Gefrierschrank ist auf $EVTPART1 gestiegen"

@ Jürgen Du wolltest doch Deine Email schwärzen?  ;)
Ups, danke für den Hinweis
Titel: Antw:Aktuelle Temperatur per Email senden
Beitrag von: taskkill am 08 Januar 2020, 22:18:49
Kann ich wenn Alarm ausgelöst, die Pollingzeit irgendwie vergrößern so das ich nicht alle 3 Minuten eine Mail bekomme ? Oder nur einmalig eine beim Unter/Überschreiten des Wertes erhalten ?
Titel: Antw:Aktuelle Temperatur per Email senden
Beitrag von: Pfriemler am 08 Januar 2020, 22:56:47
Uh ... Leichenfledderei :-)
Aber wo wir schon mal dabei sind:
In diesem Fall wäre DOIF dein Freund. Zustandswechsel (Temperatur ok/nicht ok), Warnungen in definierten Abständen mit definierter Wiederholungszahl usw. Meines Wissens gibt es sogar ein Beispiel in der commandref.
Ein notify wird direkt durch das Event der Temperaturmeldung getriggert. Man kann da auch was bauen, aber es ist m.M.n. ungleich komplizierter.

Titel: Antw:Aktuelle Temperatur per Email senden
Beitrag von: Otto123 am 08 Januar 2020, 23:01:22
Hi,

hier geht es normal nicht um Polling sondern darauf auf eine Event zu reagieren.
Du kannst also die Events verändern oder die Reaktion auf die Events.
event-on-change-reading würde die Events am Temperatur sensor verringern helfen.
disabledAfterTrigger beim notify würde die Reaktion des notify verändern.
ZitatdisabledAfterTrigger someSeconds
disable the execution for someSeconds after it triggered.

Es gibt sicher 100 andere Ansätze...

Gruß Otto