E-Mail senden bei bestimmter Temperatur?

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

Vorheriges Thema - Nächstes Thema

uwirt

#90
Hallo alle,

ich versuche hier auch einen Alarm für eine Unterschreitung der Aussentemperatur per Mail abzusetzen. Das mit dem Mail senden habe ich hingekriegt und mit der Kommandozeile überprüft.

Leider werden aber keine Alarme aus dem notify weitergereicht - Ich habe zu Testzwecken 20 Grad eingeben. Wenn's mal funktioniert soll es eine Frostwarnung geben.

defmod Temperaturalarm notify Mean_Temp_outside:state:.* {if ($EVTPART1 <= 20 ){DebianMail('xxx@xx.xx','Temperaturwarnung','Achtung, die Aussentemperatur in Bern hat 20 Grad unterschritten!')}}
attr Temperaturalarm alias Temperaturwarnung
attr Temperaturalarm disabledAfterTrigger 3600
attr Temperaturalarm room Weather

setstate Temperaturalarm active
setstate Temperaturalarm 2021-10-07 17:12:31 state active


Der Temperatursensor ist folgendermassen definiert:

defmod Mean_Temp_outside DOIF ##
attr Mean_Temp_outside devStateStyle style="text-align:right"
attr Mean_Temp_outside genericDeviceType TemperatureSensor
attr Mean_Temp_outside homebridgeMapping CurrentTemperature=state
attr Mean_Temp_outside room Homekit,Sensors
attr Mean_Temp_outside state {(sprintf("%.1f",([HM_WDS100:temperature]+[Garten:ambient_temperature-temperature]+[Terrasse:ambient_temperature-temperature])/3))}

setstate Mean_Temp_outside 8.0
setstate Mean_Temp_outside 2021-02-03 18:41:36 cmd 0
setstate Mean_Temp_outside 2021-02-03 18:41:36 mode enabled
setstate Mean_Temp_outside 2021-10-08 11:04:04 statStateDay Min: 6.0 Avg: 6.5 Max: 8.0
setstate Mean_Temp_outside 2021-10-07 23:59:55 statStateDayLast Min: 7.0 Avg: 10.9 Max: 15.8
setstate Mean_Temp_outside 2021-10-08 11:04:04 statStateHour Min: 7.3 Avg: 7.4 Max: 8.0
setstate Mean_Temp_outside 2021-10-08 10:59:55 statStateHourLast Min: 7.3 Avg: 7.3 Max: 7.3
setstate Mean_Temp_outside 2021-10-08 11:04:04 statStateMonth Min: 6.0 Avg: 13.6 Max: 28.1
setstate Mean_Temp_outside 2021-09-30 23:59:55 statStateMonthLast Min: 11.1 Avg: 17.6 Max: 33.5
setstate Mean_Temp_outside 2021-10-08 10:59:55 statStateTendency 1h: +0.0 2h: +0.6 3h: +1.0 6h: +1.3
setstate Mean_Temp_outside 2021-10-08 11:04:04 statStateYear Min: -1.0 Avg: 0.0 Max: 37.7
setstate Mean_Temp_outside 2021-10-08 11:04:04 state 8.0


FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

Otto123

Hi,

da gibt es hier eine nette Hilfe.
Ich vermute der Event (Trigger) stimmt so nicht. normalerweise steht state nicht im Event.
In deinem Fall würde ich beim notify zum attribute addStateEvent raten. Oder besser Du hast einen eindeutigen Event, ist aber bei dem Device unwarscheinlich.
https://fhem.de/commandref_modular.html#notify

Aber warum extra notify? Mach das doch in dem DOIF? ::)

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

uwirt

#92
Danke für den Tip - ich habe es mit DOIF lösen können.

Die Definition schaut so aus:
defmod Temperatur_alarm DOIF ([Mean_Temp_outside:state] < 5.0) ({ DebianMail('xx@xx.xx','FHEM-Temperatur-Alarm','ACHTUNG - die Außentemperatur ist unter 5 Grad gefallen! Die aktuelle Temperatur ist: [Mean_Temp_outside:state] °C');; })
attr Temperatur_alarm room Weather

setstate Temperatur_alarm initialized
setstate Temperatur_alarm 2021-10-11 10:38:14 cmd 0
setstate Temperatur_alarm 2021-10-11 10:38:14 mode enabled
setstate Temperatur_alarm 2021-10-11 10:38:14 state initialized
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

uwirt

Ich hätte da jetzt noch eine Nachfolgefrage - wie kann ich das steuern dass ich diese Nachricht nur einmal täglich erhalte?
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

Damian

Zitat von: uwirt am 11 Oktober 2021, 11:31:42
Ich hätte da jetzt noch eine Nachfolgefrage - wie kann ich das steuern dass ich diese Nachricht nur einmal täglich erhalte?
einfach
DOELSEIF([00:00])
dranhängen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

uwirt

#95
So?

([Mean_Temp_outside:state] < 10.0) ({ DebianMail('xx@xx.xx','FHEM-Temperatur-Alarm','ACHTUNG - die Außentemperatur ist unter 3 Grad gefallen! Die aktuelle Temperatur ist: [Mean_Temp_outside:state] °C');; }) DOELSEIF([00:00])

Readings:
setstate Temperaturalarm initialized
setstate Temperaturalarm 2021-10-11 15:40:21 Device Mean_Temp_outside
setstate Temperaturalarm 2021-10-11 15:36:57 cmd 0
setstate Temperaturalarm 2021-10-11 15:40:21 e_Mean_Temp_outside_state 20.7
setstate Temperaturalarm 2021-10-11 15:36:57 mode enabled
setstate Temperaturalarm 2021-10-11 15:36:57 state initialized
setstate Temperaturalarm 2021-10-11 15:36:57 timer_01_c02 12.10.2021 00:00:00
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

uwirt

#96
Ich erhalte trotzdem bei Unterschreitung der Temperatur etwa alle zwei Minuten eine Meldung per Mail:

defmod Temperaturalarm DOIF ([Mean_Temp_outside:state] < 3.0) ({ DebianMail('xx@xx.xx','FHEM-Temperatur-Alarm','ACHTUNG - die Außentemperatur in Saanenmoeser ist unter 3 Grad gefallen! Die aktuelle Temperatur ist: [Mean_Temp_outside:state] °C');;;; }) DOELSEIF([00:00])
attr Temperaturalarm disable 0
attr Temperaturalarm room Weather

setstate Temperaturalarm cmd_1
setstate Temperaturalarm 2021-11-05 08:53:34 Device Mean_Temp_outside
setstate Temperaturalarm 2021-11-05 08:53:35 cmd 1
setstate Temperaturalarm 2021-11-05 08:53:35 cmd_event Mean_Temp_outside
setstate Temperaturalarm 2021-11-05 08:53:35 cmd_nr 1
setstate Temperaturalarm 2021-11-05 08:53:34 e_Mean_Temp_outside_state -0.3
setstate Temperaturalarm 2021-11-05 08:45:33 mode enabled
setstate Temperaturalarm 2021-11-05 08:53:35 state cmd_1
setstate Temperaturalarm 2021-11-05 08:53:03 timer_01_c02 06.11.2021 00:00:00


... ich glaube ich habe den Fehler gefunden - es waren vermutlich zu viele von den Strichpunkten die sich beim copy/paste angesammelt hatten:

...state] °C');;;; }) DOEL...
FHEM / Ubuntu / fitlet2
HomeMatic: CCU3|HmIP-STHD|HmIP-PCBS|HmIP-PCBS2|HmIP-PCBS-BAT|HM-WDC7000|HM-WDS100-C6-O|HM-WDS40|HM-LC-Sw1-FM|HM-LC-RGBW-WM|HM-ES-PMSw1-Pl|HM-ES-TX-WM
NAS: DS218+|DS209j|DS216+II|DS412+
Devices: Panasonic Webcams|Withings|Gardena Smart|Tuya

MandelHL

Hallo,

Ich habe auch noch einmal eine Frage dazu.
Ich habe es so programmiert, dass bei >40 Grad die Markise auf Position 10 ausfährt. Sollte es nach 18 Uhr sein oder der Helligkeitswert 190 unterschreiten, fährt sie wieder ein.
Dazu bekomme ich eine E-Mail, sowohl beim Aus- als auch beim Einfahren. In der Mail beim Einfahren wird mir zudem die aktuelle Temperatur angezeigt.

Ich würde mir auch gerne den Helligkeitswert anzeigen lassen. Das klappt aber nicht.
Offensichtlich habe ich es mir zu einfach gemacht, indem ich einfach 'brightness:state" eingetragen habe.
Ich bin davon ausgegangen, dass dieser Helligkeitswert durch die Abfrage <190 bekannt ist.
Aber so funktioniert es nicht.

Hat jemand einen Tipp für mich?

defmod ThermometerLautsprecher_notify_1 notify ThermometerLautsprecher:T:.* {if ($EVTPART1 >= 40 and ReadingsNum('Markise','pct',0) < 10 )\
  {fhem("set Markise pct 10");;\
    DebianMail('XXXXXX@XXXX.eu','Hitzewarnung - Markise fährt aus','Achtung, die Temperatur hat 40 Grad erreicht! Die Markise fährt aus. Der Helligkeitswert beträgt [brightness:state].')}\
elsif ( ( ReadingsNum('Wetterstation','brightness',0) <= 190 or $hour >= 18 ) and ReadingsNum('Markise','pct',99) == 10 )\
   {fhem("set Markise pct 0");;\
     DebianMail('XXXXXX@XXXX.eu','Entwarnung - Markise fährt ein','Die Markise fährt wieder ein! Der Helligkeitswert beträgt [brightness:state]. Die Temperatur beträgt '.$EVTPART1.' Grad.')}\
}

setstate ThermometerLautsprecher_notify_1 2022-04-14 14:03:14
setstate ThermometerLautsprecher_notify_1 2022-04-13 11:53:08 state active
setstate ThermometerLautsprecher_notify_1 2022-04-14 14:03:14 triggeredByDev ThermometerLautsprecher
setstate ThermometerLautsprecher_notify_1 2022-04-14 14:03:14 triggeredByEvent T: 25.1


Danke und viele Grüße
Mandel

Beta-User

Zitat von: MandelHL am 14 April 2022, 14:12:16
Ich bin davon ausgegangen, dass dieser Helligkeitswert durch die Abfrage <190 bekannt ist.
Der Wert wird aber doch nur abgefragt und nicht irgendwo in dem Code-Schnipsel (zwischen-) gespeichert...

Ergo: Entweder in eine Variable einlesen und das so ähnlich lösen wie mit "Grad", oder eben versuchen, das auf andere Weise zu umschiffen.
Falls (!) deine DebianMail "replace magic" überhaupt unterstützt, wäre das hier ggf. möglich (statt deines "verhauenen" Verweises):
[Wetterstation:brightness]
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Otto123

#99
debianmail ist eine Perlfunction. Da geht nur ReadingsVal('Wetterstation','brightness','')

Nicht schön aber mit Kettenbildung (ungetestet)
DebianMail('XXXXXX@XXXX.eu','Entwarnung - Markise fährt ein','Die Markise fährt wieder ein! Der Helligkeitswert beträgt '.ReadingsVal('Wetterstation','brightness','').'. Die Temperatur beträgt '.$EVTPART1.' Grad.')}

Zitat"replace magic"
wäre ein verstecktes Easteregg  ;D ;D ;D
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

Beta-User

Zitat von: Otto123 am 14 April 2022, 21:20:16
debianmail ist eine Perlfunction. Da geht nur ReadingsVal('Wetterstation','brightness','')
Eben. Da kann man ja durchaus für den zu versendenden Text "ReplaceSetMagic($$@)" aus fhem.pl aufrufen (#1883)

Zitat
wäre ein verstecktes Easteregg  ;D ;D ;D
Vielleicht magst du es verstecken...?!?
(Aber bitte erst testen...)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Otto123

Da hast Du mich ganz schön auf Ostereiersuche geschickt ;)
Ich habe keine Dokumentation zu dieser Funktion gefunden, nicht mal ein Kommentar in der fhem.pl, der dort erwähnte Forenthread startet auf einem Level wo sich mir der Grundsyntax auch nicht erschließt.
Ich bin kurz zu den oft erwähnten msg (xxx) Funktionen gewandert - auch da keine Doku aber dafür ein schwindelerregender Thread.
Dann habe ich überlegt, als würgaround ein Dummy "Mail" Device mit set Befehlen zu füttern und die debianmail Funktion per userReadings zu triggern ;)
Am Ende hab ich mir nochmal die fhem.pl angeschaut und folgende "Idee" abgeschaut und getestet:
(undef, $subject) = ReplaceSetMagic(undef, 1, $subject);
(undef, $text) = ReplaceSetMagic(undef, 1, $text);

Funktioniert  ;D - aber ist es wirklich das, was ich wieder ohne weiteren Kommentar im Wiki verstecken soll?
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

Beta-User

Zitat von: Otto123 am 17 April 2022, 00:26:46
Da hast Du mich ganz schön auf Ostereiersuche geschickt ;)
::) Das Stichwort hattest du selbst geliefert, und für "große Kinder" soll Ostereier suchen ja andererseits auch nicht zu einfach sein :P ...

ZitatFunktioniert  ;D - aber ist es wirklich das, was ich wieder ohne weiteren Kommentar im Wiki verstecken soll?
Na ja - ich glaube nicht, dass so eine zentrale Funktion großen Änderungen unterworfen ist, von daher könnte man das schon machen. Aber im Zweifel hast du recht: Man sollte wenn, dann sehr bewußt auf diese zwei Zeilen eingehen (ggf. die Ergänzung in einer Info-Box unterbringen?), und eigentlich die User eher darauf "schubsen", dass der (m.E.) bessere Weg der ist, den Umweg über die "msg"-Funktion zu nutzen - dann kann man nämlich später viel einfacher entscheiden, ob man "schwierige" Infos eher per Mail oder per Telegram/Signal/whatever haben will (und/oder per TTS-System ausgegeben, weil der User grade da ist...). (Auch dazu gibt es afaik keine wirklich gute Doku).

Apropos Sprachausgabe: Ich kenne die Funktion auch nur deswegen näher, weil es einen "Klon" davon in RHASSPY gibt/schon immer gab (und sich Perlcritic über die darin enthaltenen "nested subroutines" beklagt hat)....
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Otto123

naja wenn Du erstmal nichts an meinem "adaptierten" Anwendungsbeispiel von evalStateFormat($) zu meckern hast, mach ich das mal so ;)
;D ;D ;D
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

Beta-User

Zitat von: Otto123 am 17 April 2022, 09:13:25
naja wenn Du erstmal nichts an meinem "adaptierten" Anwendungsbeispiel von evalStateFormat($) zu meckern hast
...damit das "nicht meckern" nicht falsch verstanden wird: Ich habe da NICHTS gegengecheckt, sondern wollte nur den Hinweis geben, dass "das ist Perl-Code" an sich kein Hindernis ist, um "Replace Magic" (oder wie auch immer man das nennen möchte) trotzdem zu haben...
Wie gesehen: Es funktioniert, aber damit ist eben nicht gesagt, dass es "gut" (oder empfehlenswert) ist (ich _glaube_ aber, dass es unproblematisch sein sollte; das ist aber eben "Bauchgefühl" :P ...).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files