E-Mail senden bei bestimmter Temperatur?

Begonnen von DatRaspi, 17 Mai 2017, 11:32:47

Vorheriges Thema - Nächstes Thema

Thorsten Pferdekaemper

Zitat von: JoWiemann am 18 Mai 2017, 10:21:09
Im PDF FHEM für Einsteiger wird das wohl immer noch so beschrieben.
Ich hab mal kurz eine Antwort an den Thread gehängt:
https://forum.fhem.de/index.php?topic=19621.msg636916#msg636916
...mal sehen, vielleicht reagiert ja jemand, der das Ding ändern kann.
Gruß,
   Thorsten
FUIP

MandelHL

Hallo,
ich möchte hier auch noch einmal ansetzen und mir eine E-Mail schicken lassen, wenn mein Temperatursensor eine bestimmte Temperatur feststellt bzw. eine bestimmte Temperatur überschritten wird.
Das Thermometer ist in FHEM eingerichtet. Die Temperatur lässt sich auch abrufen.
Auch der E-Mail-Versand funktioniert einwandfrei.

Ich weiß allerdings nicht, wie ich jetzt über den Webbrowser die Programmierung vornehmen kann und wo ich am besten ansetze.

Kann mir jemand behilflich sein?

Danke und viele Grüße
Mandel

Otto123

Hallo Mandel,

Eventmonitor auf, den Sensor als Filter eintragen, warten bis eine Temperaturmeldung kommt von dieser Zeile ein notify (oder DOIF) anlegen lassen. Jede Zahl auswählen.
Beim notify steht dann eine leere Perlklammer {}
Dort schreibst Du deinen Code rein, in der Art:
if ($EVTPART1 == 21 ){debianmail()}

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

MandelHL

Danke, Otto.

Ich frage mich, wie man als ,,Normalo" das selbst hinbekommen soll. Aber da bin ich froh, Leute wie Euch zu haben, die einen geduldig unterstützen.

Ich habe das so gemacht, wie Du geschrieben hast. Allerdings wurde bei Erreichen der Temperatur von 15 Grad als Test keine E-Mail versandt.
Das ist wahrscheinlich auch nicht schlimm, da ich ansonsten wohl mit E-Mails bombardiert worden wäre. Denn die 15 Grad wären ja den ganzen Tag erreicht. Ich müsste also zudem einen Stop setzen, dass eine E-Mail als Warnung reicht. Oder dass ich jede Stunde eine bekomme.

Meine Raw Definition sieht so aus:
defmod HM_70A1CA_notify_1 notify HM_70A1CA:T:.* {if ($EVTPART1 == 15 ){debianmail('XXX@XXX.XXeu','Temperaturwarnung','Achtung, die Temperatur hat 15 Grad erreicht!')}}
attr HM_70A1CA_notify_1 alias Temperaturwarnung
attr HM_70A1CA_notify_1 room Außentemperatur

setstate HM_70A1CA_notify_1 2021-04-20 10:16:14
setstate HM_70A1CA_notify_1 2021-04-19 23:48:40 state active


Warum wurde die E-Mail nicht versandt? Bzw. warum wurden nicht gleich zig E-Mails versandt?

Danke noch einmal für Eure Unterstützung.
Mandel

Otto123

Hallo Mandel,

Du hast den ungünstigen  Event genommen, es gibt ja diese beiden (sieht bei Dir nach Homematic aus). Eventuell musst Du in den Channel schauen, hängt vom konkreten Sensor ab.
2021-04-20 10:34:26 CUL_HM SensorAussen T: 11.3 H: 79
2021-04-20 10:34:26 CUL_HM SensorAussen temperature: 11.3


Wobei wenn ich richtig überlege, es könnte egal sein. Hier gibt es noch einen Artikel zum notify und was mache ich wenn. https://wiki.fhem.de/wiki/Notify

Kann es sein, Du musst >= 15 nehmen - weil exakt 15 wird nicht erreicht?

Wenn Du das einmalig willst musst Du entweder das notify nach dem trigger deaktivieren (disableAfterTrigger).
Es gibt noch watchdog - das kann einmalig auslösen.
Oder DOIF hat auch solche Möglichkeiten.

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

MandelHL

Danke, Otto.

Ich habe das nun geändert. Eine E-Mail bekomme ich trotzdem nicht. Bei anderen Ereignissen, z.B. Ein- und Ausschalten von Beleuchtung klappt es mit dem E-Mail-Versand.

defmod HM_70A1CA_notify_1 notify HM_70A1CA:T:.* {if ($EVTPART1 >= 15 ){debianmail('XXX@XXX.XX','Temperaturwarnung','Achtung, die Temperatur hat 15 Grad erreicht!')}}
attr HM_70A1CA_notify_1 alias Temperaturwarnung
attr HM_70A1CA_notify_1 disabledAfterTrigger 3600
attr HM_70A1CA_notify_1 room Außentemperatur

setstate HM_70A1CA_notify_1 2021-04-20 14:28:27
setstate HM_70A1CA_notify_1 2021-04-20 14:27:32 state active


Im Eventmonitor wird das angezeigt:
2021-04-20 14:43:16 CUL_HM HM_70A1CA battery: ok
2021-04-20 14:43:16 CUL_HM HM_70A1CA T: 32.7
2021-04-20 14:43:16 CUL_HM HM_70A1CA temperature: 32.7


Warum gibt es überhaupt die beiden fast gleichen Ausgaben bei der Temperatur, einmal mit ,,T: 32.7" und einmal mit ,,temperature: 32.7"?

Danke und und Grüße
Mandel

Otto123

Also rein optisch sieht das alles gut aus. Ich habe gerade kein Idee. Der Trigger passt zum Event.  :o
Kannst Du mal den kompletten Event mit dem notify loggen, wie in meinem Wiki Link beschrieben?

die beiden Events: Der Eine ist die state Meldung - da siehst Du bei mir noch zusammengefasst mit der Luftfeuchte. Das Andere ist nur das temperature Reading. Ist eben so bei den Homematicgeräten.
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

JudgeDredd

Zitat von: Otto123 am 20 April 2021, 17:37:53
Also rein optisch sieht das alles gut aus. Ich habe gerade kein Idee. Der Trigger passt zum Event.  :o

Ich mische mich ja nur ungern ein, aber sollte der Trigger nicht:
HM_70A1CA.T:.*
lauten ?
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

Otto123

Nein. Wäre nicht völlig verkehrt, belastet aber unnötig das System, da kein NOTIFYDEV gebildet wird.
https://forum.fhem.de/index.php?topic=115414.0
Der empfohlene Trigger für notify lautet device:regexp und nicht regexp ;)
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

JudgeDredd

Zitat von: Otto123 am 20 April 2021, 18:48:22
Der empfohlene Trigger für notify lautet device:regexp und nicht regexp ;)
Oh, wieder was gelernt. Dann werde ich das in meinem System auch mal anpassen. Danke für den Hinweis
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

MandelHL

ZitatKannst Du mal den kompletten Event mit dem notify loggen, wie in meinem Wiki Link beschrieben?

Kannst Du mit mal bitte den Link schicken. Ich finde den nicht und weiß nicht, wie ich das loggen kann - Danke.

Otto123

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

MandelHL

ZitatKannst Du mal den kompletten Event mit dem notify loggen, wie in meinem Wiki Link beschrieben?

Im Logfile steht bei mir gar nichts. Das ist immer leer.

Ich habe aber den Fehler gefunden. Ich habe jetzt anstatt "debianmail" "DebianMail" eingetragen.
Nun kommen die E-Mails an.

Vielen Dank und Grüße
Mandel

Otto123

Zitat von: MandelHL am 19 April 2021, 21:00:00
Auch der E-Mail-Versand funktioniert einwandfrei.
Zitat von: MandelHL am 20 April 2021, 14:47:23
Bei anderen Ereignissen, z.B. Ein- und Ausschalten von Beleuchtung klappt es mit dem E-Mail-Versand.
:o
deswegen habe ich den Ausführungsteil nicht vordergründig angezweifelt!
ZitatIm Logfile steht bei mir gar nichts. Das ist immer leer.
Wie soll ich das jetzt verstehen? Der Sinn der Anleitung im Wiki ist doch genau den Ausführungsteil durch einen Logbefehl zu ersetzen!? Und dieser Befehl funktioniert bei Dir nicht?  ::)

Grüße 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

MandelHL

Hallo noch mal,

@Otto: Ich glaube, dass ich das mit dem Logfile und dem Logbefehl nicht richtig gemacht habe. Das sehe ich mir noch einmal an.

Ich habe nun aber noch eine andere Frage:
Kann ich mit ,,disabledtrigger" das Versenden der E-Mail auf einmal begrenzen? Jetzt habe ich ,,3600" dahinter stehen, damit ich die Nachricht jede Stunde bekomme, solange die Temperatur überschritten ist.
Kann ich die Zahl dahinter weglassen, damit die E-Mail dann wirklich nur einmal kommt?

Als Steigerung möchte ich jetzt, dass die Markise bei mehr als 42 Grad um 10 % ausfährt. Darunter kann sie dann auch wieder einfahren.
Es sei denn, ich fahre sie manuell aus.

Das mit der Temperatur habe ich nun ja so weingerichtet:
defmod HM_70A1CA_notify_1 notify HM_70A1CA:T:.* {if ($EVTPART1 >= 42 ){DebianMail('XXX@XXX.XX','Temperaturwarnung','Achtung, die Temperatur hat 42 Grad erreicht!')}}
attr HM_70A1CA_notify_1 alias Temperaturwarnung
attr HM_70A1CA_notify_1 disabledAfterTrigger 3600
attr HM_70A1CA_notify_1 room Außentemperatur

setstate HM_70A1CA_notify_1 2021-04-26 11:19:48
setstate HM_70A1CA_notify_1 2021-04-25 21:06:32 state active


Die Markise ist so eingerichtet:
defmod Markise CUL_HM 336A56
attr Markise .devInfo 010100
attr Markise .mId 006A
attr Markise .stc 30
attr Markise IODev HMLANGW
attr Markise IOgrp vccu:HMLANGW
attr Markise autoReadReg 5
attr Markise devStateIcon .*:shutter_closed
attr Markise event-on-change-reading .*
attr Markise eventMap on:ausfahren off:einfahren
attr Markise expert defReg,rawReg
attr Markise model HM-LC-BL1PBU-FM
attr Markise peerIDs 00000000
attr Markise room Markise
attr Markise serialNr LEQ1435668
attr Markise subType blindActuator
attr Markise webCmd stop:ausfahren:90:70:50:30:10:einfahren

setstate Markise einfahren
setstate Markise 2021-03-06 00:26:05 .D-devInfo 010100
setstate Markise 2021-03-06 00:26:05 .D-stc 30
setstate Markise 2021-03-06 15:12:13 .R-confBtnTime permanent
setstate Markise 2021-03-06 15:12:13 .R-intKeyVisib invisib
setstate Markise 2021-03-06 15:12:13 .R-localResDis off
setstate Markise 2021-03-06 15:12:14 .R-refRunCounter 0
setstate Markise 2021-03-06 15:12:14 .R-statusInfoMinDly 2 s
setstate Markise 2021-03-06 15:12:14 .R-statusInfoRandom 1 s
setstate Markise 2021-03-06 15:12:14 .R-transmitTryMax 6
setstate Markise 2021-04-25 21:06:33 .associatedWith Markise,Markise
setstate Markise 2021-03-06 15:12:14 .peerListRDate 2021-03-06 15:12:14
setstate Markise 2021-04-25 21:06:54 .protLastRcv 20210425210654
setstate Markise 2021-04-25 21:01:31 CommandAccepted yes
setstate Markise 2021-03-06 00:26:05 D-serialNr LEQ1435668
setstate Markise 2021-03-06 15:12:13 PairedTo 0x25788A
setstate Markise 2021-03-06 15:12:14 R-driveDown 50 s
setstate Markise 2021-03-06 15:12:14 R-driveTurn 0.5 s
setstate Markise 2021-03-06 15:12:14 R-driveUp 50 s
setstate Markise 2021-03-06 15:12:13 R-pairCentral 0x25788A
setstate Markise 2021-03-06 15:12:14 R-sign off
setstate Markise 2021-03-06 15:12:13 RegL_00. 00:00 02:01 0A:25 0B:78 0C:8A 15:FF 18:00
setstate Markise 2021-03-06 15:12:14 RegL_01. 00:00 08:00 09:00 0A:00 0B:01 0C:F4 0D:01 0E:F4 0F:05 10:00 30:06 57:24
setstate Markise 2021-03-06 15:12:12 cfgState updating
setstate Markise 2021-04-25 21:06:54 commState CMDs_done
setstate Markise 2021-04-25 21:06:54 deviceMsg off (to HMLANGW)
setstate Markise 2021-04-25 21:06:54 level 0
setstate Markise 2021-04-25 21:06:54 motor stop:off
setstate Markise 2021-04-25 21:06:54 pct 0
setstate Markise 2021-04-25 21:06:54 recentStateType info
setstate Markise 2021-04-25 21:06:54 state off
setstate Markise 2021-04-25 21:06:54 timedOn off
setstate Markise 2021-04-25 21:01:31 trigLast fhem:02


Empfiehlt es sich jetzt, den bestehenden DEF-Befehl bei der Temperatur zu erweitern bzw. zu ergänzen oder sollte ich besser einen neues notify setzen, damit es wie gewünscht funktioniert?

Danke noch mal, dass Ihr mir hier behilflich seid,
Mandel