FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: DatRaspi am 17 Mai 2017, 11:32:47

Titel: E-Mail senden bei bestimmter Temperatur?
Beitrag von: DatRaspi am 17 Mai 2017, 11:32:47
Hallo

Ich versuche, dass ein Temperatursensor auf dem Raspberry bei unter 10°C mir eine Email sendet:
Das habe ich in der 99_myUtils.pm datei:

package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
   my ($hash) = @_;
}
1;

sub
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
my $ret = "";
my $sender = "xxx\@xxx.de";
my $provider = "xxx";
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";
Log 1, "sendEmail Anhang: $attach";

$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a $attach -s '$provider' -o tls=auto -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}


mit {DebianMail('xxx@xxx.de','Titel','text')}; kann ich auch eine E-Mail senden, aber ich weiß nicht wie man es einstellt das der Raspberry automatisch bei der genannten Temperatur eine E-Mail an mich sendet.

Ich habe an sowas gedacht, aber es funktioniert nicht:
define Temperatursensor1 notify GPIO4_DS18B20_00000636c0e6:temperature:.* { if(ReadingsVal("GPIO4_DS18B20_00000636c0e6",
"temperature","") > 10) { DebianMail('xxx@xxx.de','test','hallo')};


Liebe Grüße
Titel: Antw:E-Mail senden bei bestimmter Temperatur
Beitrag von: CoolTux am 17 Mai 2017, 11:37:35
Bitte Deinen Code in Codetags stellen. Oben bei der Symbolleiste das # Zeichen


define Temperatursensor1 notify GPIO4_DS18B20_00000636c0e6:temperature:.* {
                                    if( ReadingsVal("GPIO4_DS18B20_00000636c0e6","temperature","" ) > 10) {
                                                DebianMail('xxx@xxx.de','test','hallo');
                                    }
}
Titel: Antw:E-Mail senden bei bestimmter Temperatur
Beitrag von: DatRaspi am 17 Mai 2017, 11:42:25
Hallo
danke für die schnelle Antwort :)

Wie genau meinst du das mit "Oben bei der Symbolleiste das # Zeichen"?
Titel: Antw:E-Mail senden bei bestimmter Temperatur
Beitrag von: CoolTux am 17 Mai 2017, 11:49:16
Zitat von: DatRaspi am 17 Mai 2017, 11:42:25
Hallo
danke für die schnelle Antwort :)

Wie genau meinst du das mit "Oben bei der Symbolleiste das # Zeichen"?

Da siehst Du ein Symbol das so

#

aus schaut.
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Thorsten Pferdekaemper am 17 Mai 2017, 12:33:42
Hi,
es fehlt ein schließendes "}" und wahrscheinlich wäre es besser, ReadingsNum statt ReadingsVal zu nehmen.
Gruß,
   Thorsten
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: CoolTux am 17 Mai 2017, 12:36:30
Die schließende } hatte ich in meinem Beispiel schon repariert.
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Thorsten Pferdekaemper am 17 Mai 2017, 12:39:44
Zitat von: CoolTux am 17 Mai 2017, 12:36:30
Die schließende } hatte ich in meinem Beispiel schon repariert.
Ich habe das gesehen, aber ich vermute mal der OP nicht.
Gruß,
   Thorsten
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: DatRaspi am 17 Mai 2017, 13:15:44
Also ich habe es jetzt nochmal versucht mit der "}" und ReadingsNum, darauf folgte diese Fehlermeldung:

" Temperatursensor1 already defined, delete it first Unknown command if(, try help. Unknown command DebianMail('xxx@xxx.de','test','hallo'), try help. Unknown command }, try help. Unknown command }, try help. "

Falls das hilft, hier ist meine fhem.cfg:

attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global logfile ./log/fhem-%Y-%m.log
attr global modpath .
attr global motd Error messages while initializing FHEM:\
configfile: Unknown command {define, try help.
attr global statefile ./log/fhem.save
attr global updateInBackground 1
attr global verbose 3

define telnetPort telnet 7072 global

define WEB FHEMWEB 8083 global
attr WEB editConfig 1

define WEBphone FHEMWEB 8084 global
attr WEBphone stylesheetPrefix smallscreen

define WEBtablet FHEMWEB 8085 global
attr WEBtablet stylesheetPrefix touchpad

# Fake FileLog entry, to access the fhem log from FHEMWEB

define autocreate autocreate
attr autocreate filelog ./log/%NAME-%Y.log
define eventTypes eventTypes ./log/eventTypes.txt

# Disable this to avoid looking for new USB devices on startup
define initialUsbCheck notify global:INITIALIZED usb create

define Temperatursensor1 GPIO4 BUSMASTER
attr Temperatursensor1 room GPIO4
define GPIO4_DS18B20_00000636c0e6 GPIO4 28-00000636c0e6
attr GPIO4_DS18B20_00000636c0e6 model DS18B20
attr GPIO4_DS18B20_00000636c0e6 room GPIO4
define FileLog_GPIO4_DS18B20_00000636c0e6 FileLog ./log/GPIO4_DS18B20_00000636c0e6-%Y.log GPIO4_DS18B20_00000636c0e6
attr FileLog_GPIO4_DS18B20_00000636c0e6 logtype text
attr FileLog_GPIO4_DS18B20_00000636c0e6 room GPIO4
define SVG_FileLog_GPIO4_DS18B20_00000636c0e6_1 SVG FileLog_GPIO4_DS18B20_00000636c0e6:SVG_FileLog_GPIO4_DS18B20_00000636c0e6_1:CURRENT
attr SVG_FileLog_GPIO4_DS18B20_00000636c0e6_1 room GPIO4

define Temperatursensor1 notify GPIO4_DS18B20_00000636c0e6:temperature:.* {
                                    if( ReadingsNum("GPIO4_DS18B20_00000636c0e6","temperature","" ) > 10) {
                                                DebianMail('xxx@xxx.de','test','hallo');
                                    }
}

Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: CoolTux am 17 Mai 2017, 13:21:56
Sorry aber mit fhem.cfg Editierung kenne ich mich nicht aus. Du kannst das Notify über FHEMWEB editieren/modifizieren.

Ein list vom notify bringt mir mehr
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 17 Mai 2017, 13:28:47
ZitatTemperatursensor1 already defined
bedeutet das gerät ist schon definiert, Du kannst es nicht noch einmal definieren. Du kannst nicht zwei define Temperatursensor1 ... Befehle hintereinander absetzen. Genau das tust Du in deiner fhem.cfg Und dieser Fehler passiert nur weil Du direkt darin rumfummelst   :P

Gruß Otto
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: DatRaspi am 17 Mai 2017, 13:33:30
Zitat von: CoolTux am 17 Mai 2017, 13:21:56
Sorry aber mit fhem.cfg Editierung kenne ich mich nicht aus. Du kannst das Notify über FHEMWEB editieren/modifizieren.

Ein list vom notify bringt mir mehr

Was für eine list von notify meinst du denn? und wo finde ich diese? :)
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 17 Mai 2017, 13:36:47
in der Kommandozeile von FHEM (Browser) eingeben:list Temperatursensor1   ;) bzw allgemein list <DeviceName>

Gruß Otto
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: DatRaspi am 17 Mai 2017, 13:43:10
Ist es denn das?
Hilft das irgendwie weiter?  :-[
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: nils_ am 17 Mai 2017, 14:14:49
Otto hat dir eigentlich schon alles gesagt.

in der von dir geposteten fhem.cfg gibt es:

define Temperatursensor1 GPIO4 BUSMASTER

und dann ein paar Zeilen  darunter nochmal

define Temperatursensor1 notify GPIO4_DS18B20_00000636c0e6:temperature:.* {
ich hab die codetags bewusst weggelassen, damit ich die beiden sachen fett markieren konnte

das geht so nicht und führt zu dem fehler den du nun hast (weil du die fhem.cfg von hand editiert hast!)
den Fehler erstmal beseitigen!!! zB. durch umbenennen des zweiten devices


weiterhin hast du
if( ReadingsNum("GPIO4_DS18B20_00000636c0e6","temperature","" ) > 10) {
möchtest aber laut deinem eingangspost
Zitatich versuche, dass ein Temperatursensor auf dem Raspberry bei unter 10°C mir eine Email sendet:
würde bedeutet dein > muss durch < ersetzt werden.
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: DatRaspi am 17 Mai 2017, 14:19:26
Achso danke dir, jetzt weiß ich was gemeint war  ;D werde es denn nun korrigieren
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: DatRaspi am 17 Mai 2017, 14:28:11
Wie editiert man denn die fhem.cfg ohne direkt darin rumzubasteln ? :-X

Als Fehlermeldung habe ich nun:
Unknown command if(, try help. Unknown command DebianMail('xxx@xxx.de','test','hallo'), try help. Unknown command }, try help. Unknown command }, try help.
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Frank_Huber am 17 Mai 2017, 14:37:10
cfg editieren: GAR NICHT!!!!!

man editiert das devce im browser!
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: nils_ am 17 Mai 2017, 14:40:10
Zitat von: DatRaspi am 17 Mai 2017, 14:28:11
Wie editiert man denn die fhem.cfg ohne direkt darin rumzubasteln ? :-X
über das Webinterface, da werden dann schon Überprüfungen durchgeführt und Fehler abgefangen!

Zitat von: DatRaspi am 17 Mai 2017, 14:28:11
Als Fehlermeldung habe ich nun:
Unknown command if(, try help. Unknown command DebianMail('xxx@xxx.de','test','hallo'), try help. Unknown command }, try help. Unknown command }, try help.

bitte ein list von dem notify (das war vorhin schon richtig, aber nicht als screenshot, sondern in code-tags posten.)

ich hoffe du hast nicht einfach die Zeile aus meinem Post kopiert, denn das waren nur auszüge!!!
und natürlich die schon erwähnten klammerfehler beheben bzw. den Code von CoolTux kopieren! (größer/kleiner noch ändern!)
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: DatRaspi am 17 Mai 2017, 14:52:00
Internals:
   DEF        BUSMASTER
   NAME       Temperatursensor1
   NR         19
   STATE      Initialized
   TYPE       GPIO4
   Readings:
     2017-05-17 14:48:46   failures        15
Attributes:
   room       GPIO4


Hier die list vom Temperatursensor1
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: DatRaspi am 17 Mai 2017, 14:54:55
So sieht das denn ja im Webinterface des Sensors aus.. wie stelle ich das denn ein? Stehe da etwas auf dem Schlauch..  :-[
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: nils_ am 17 Mai 2017, 15:15:25
so erstmal langsam:

1. hast du die einsteiger doku's gelesen?
2. das war kein list von dem notify!
3. hast du alle änderungen wie erwähnt eingearbeitet? (umbenennung, klammersetzung, ....)





die umbenennung machst du in der fhem.cfg. (und das war dann auch die letzte händische bearbeitung der datei für die zukunft ;) )
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: DatRaspi am 17 Mai 2017, 15:22:27
Nein die Einsteiger Dokus habe ich nicht gelesen.. wo finde ich diese?

Die Änderungen habe ich alle eingearbeitet :)



Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: nils_ am 17 Mai 2017, 15:29:22
bitte keine screenshots posten!!

hier die angepinnten beiträge einfach mal durchlesen: https://forum.fhem.de/index.php/board,18.0.html
insbesondere: https://forum.fhem.de/index.php/topic,71806.0.html
und: https://forum.fhem.de/index.php/topic,19621.0.html
und: https://forum.fhem.de/index.php/topic,41693.0.html



//edit:
du hast irgendwie dein notify initialUsbCheck kaputt editiert !
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: DatRaspi am 17 Mai 2017, 15:35:49
Zitat von: nils_ am 17 Mai 2017, 15:29:22
bitte keine screenshots posten!!

hier die angepinnten beiträge einfach mal durchlesen: https://forum.fhem.de/index.php/board,18.0.html
insbesondere: https://forum.fhem.de/index.php/topic,71806.0.html
und: https://forum.fhem.de/index.php/topic,19621.0.html
und: https://forum.fhem.de/index.php/topic,41693.0.html



//edit:
du hast irgendwie dein notify initialUsbCheck kaputt editiert !

Was habe ich denn kaputt editiert?  :-[
Wie bekomme ich das denn wieder hin..?
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: nils_ am 17 Mai 2017, 15:39:48
du musst deine fhem.cfg wieder reparieren.
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: CoolTux am 17 Mai 2017, 15:50:22
Backup einspielen oder von Vorne beginnen.
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: DatRaspi am 18 Mai 2017, 09:23:20
Ich habe ein backup von dem Raspberry raufgespielt
Wie soll ich jetzt weiter vorgehen?
Wie kann ich in dem webbrowser direkt notify einstellen?
Ich dachte erst das geht nur über die fhem.cfg  :-[
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: nils_ am 18 Mai 2017, 09:29:08
ich wiederhole mich wirklich ungern, aber lies doch bitte mal durch was hier so alles schon verlinkt wurde. (Anfängerdoku!!)


ZitatIch dachte erst das geht nur über die fhem.cfg
finger weg von der datei. da wird nur im allerhöchsten notfall dran rumgespielt, und auch nur wenn du dir aller folgen und auswirkungen deines handelns bewusst bist!


ZitatWie kann ich in dem webbrowser direkt notify einstellen?

define myNtfy notify GPIO4_DS18B20_00000636c0e6:temperature:.* { SendeMail(<parameter>);; }

in die eingabezeile.... wird wahrscheinlich so nicht richtig funktionieren. aber das kannste das ÜBER DAS WEBINTERFACE korrigieren.

Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Thorsten Pferdekaemper am 18 Mai 2017, 10:02:06
Zitat von: DatRaspi am 18 Mai 2017, 09:23:20Ich dachte erst das geht nur über die fhem.cfg  :-[
Wer hat Dir das denn erzählt? mytechblogoderso?

Wenn ohne Ahnung, dann ist auch ganz gut im Event Monitor das gewünschte Event markieren und "Create/Modify device" drücken. Was dann kommt ist fast klickibunti.
Gruß,
   Thorsten
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: JoWiemann am 18 Mai 2017, 10:21:09
Im PDF FHEM für Einsteiger wird das wohl immer noch so beschrieben.


Grüße Jörg

Gesendet von iPhone mit Tapatalk
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Thorsten Pferdekaemper am 18 Mai 2017, 11:39:06
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 19 April 2021, 21:00:00
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 19 April 2021, 22:39:07
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 20 April 2021, 10:23:32
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 20 April 2021, 10:49:00
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 20 April 2021, 14:47:23
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag 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
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.
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: JudgeDredd am 20 April 2021, 17:49:01
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 ?
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 20 April 2021, 18:48:22
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 ;)
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: JudgeDredd am 20 April 2021, 18:54:20
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 21 April 2021, 09:50:24
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.
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 21 April 2021, 12:18:32
Antwort #34 Punkt 4.3. :)
https://wiki.fhem.de/wiki/Notify#Anweisung
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 22 April 2021, 17:24:24
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 22 April 2021, 18:30:37
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 26 April 2021, 11:44:26
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 26 April 2021, 12:31:31
Hi,

ZitatdisabledAfterTrigger <sekunden>
deaktiviert die Ausführung für <sekunden> nach dem das notify ausgelöst wurde.
Die Doku ist ja eindeutig.

Wenn Du das einmalig willst, bzw. eigentlich bis ein andere Zustand erreicht ist musst Du mehr Bedingungen einbauen:
Abfragen ist die Markise draußen oder drinnen?
Temperatur nicht nur über sondern auch unterschritten?

Das kannst Du alles in eine Perl Logik bauen, Du kannst auch andere Module (DOIF, THRESHOLD,ASC) dafür nehmen, die das vielleicht einfacher abbilden. Je nach dem wie es für Dich angenehmer ist.

Diese Code ist für die DEF nicht für defmod!
{
if ($EVTPART1 >= 42 and ReadingsNum('Markise','pct',0) < 10 )
   {fhem("set Markise pct 10");
     DebianMail('XXX@XXX.XX','Temperaturwarnung','Achtung, die Temperatur hat 42 Grad erreicht!')}
elsif ($EVTPART1 < 42 and ReadingsNum('Markise','pct',99) != 0 )
    {fhem("set Markise pct 0");
      DebianMail('XXX@XXX.XX','Temperaturwarnung','Markise fährt ein!')}
}


Damit die Markise nicht ständig raus und reinfährt kannst Du das beliebig  ändern / kombinieren: disabledAfterTrigger 300 oder $EVTPART1 < 38 anstatt 42

Gruß Otto
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 26 April 2021, 14:13:00
Danke, Otto.

Das heißt, ich öffne im WI die DEF der Markise, in der zur Zeit nur "336A56" steht und ersetze das durch


HM_336A56 {if ($EVTPART1 >= 42 and ReadingsNum('Markise','pct',0) < 10 )
   {fhem("set Markise pct 10");
     DebianMail('XXX@XXX.XX','Hitzewarnung - Markise fährt aus','Achtung, die Temperatur hat 42 Grad erreicht! Die Markise fährt aus.')}
elsif ($EVTPART1 <= 35 and ReadingsNum('Markise','pct',99) != 0 )
    {fhem("set Markise pct 0");
      DebianMail('XXX@XXX.XX','Entwarnung - Markise fährt ein','Die Temperatur ist wieder unter 35 Grad. Die Markise fährt wieder ein!')}
}


Wenn ich das so mache, bekomme ich den Hinweis "wrong syntax: define <name> CUL_HM 6-digit-hex-code [Raw Message]".

So ähnlich ist es aber auch in der DEF der Temperatur eingetragen:
HM_70A1CA:T:.* {if ($EVTPART1 >= 42 ){DebianMail('XXX@XXX.XX','Temperaturwarnung','Achtung, die Temperatur hat 42 Grad erreicht!')}}

Ich weiß, dass wahrscheinlich absolute Anfängerfehler sind. Aber deshalb poste ich das ja auch in diesem Bereich.

Grüße
Mandel
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 26 April 2021, 14:20:00
Nein, dein Markisen Device darfst Du nicht verändern!
Das ist der Ersatz der DEF die Du schon in deinem notify hast. Als aus dem {....}  wird das in meinem Post.

In der DEF deshalb weil sonst die Zeilenumbrüche und die ; nicht stimmen.
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 27 April 2021, 00:06:09
Danke, das hat super geklappt.

ZitatDiese Code ist für die DEF nicht für defmod!
Obwohl ich den Code in die DEF geschrieben habe, steht in der Raw Definition trotzdem ,,defmode".
Ist das denn trotzdem richtig oder muss ich daraus jetzt ,,def" machen?

Es funktioniert ja trotzdem so:
defmod HM_70A1CA_notify_1 notify HM_70A1CA {if ($EVTPART1 >= 40 and ReadingsNum('Markise','pct',0) < 10 )\
   {fhem("set Markise pct 10");;\
     DebianMail('XXX@XXX.XX','Hitzewarnung - Markise fährt aus','Achtung, die Temperatur hat 42 Grad erreicht! Die Markise fährt aus.')}\
elsif ($EVTPART1 <= 35 and ReadingsNum('Markise','pct',99) != 0 )\
    {fhem("set Markise pct 0");;\
      DebianMail('XXX@XXX.XX','Entwarnung - Markise fährt ein','Die Temperatur ist wieder unter 35 Grad. Die Markise fährt wieder ein!')}\
}
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 23:07:43
setstate HM_70A1CA_notify_1 2021-04-26 18:00:42 state active



Aufgrund dieser Zeile
ReadingsNum('Markise','pct',0) < 10 )\
gehe ich davon aus, dass wenn ich die Markise komplett ausfahre, sie bei einer Temperatur unter 35 Grad nicht wieder einfährt. Das liegt daran, dass die Ausgangsposition nicht <10 war.
Sehe ich das richtig?

Und wenn ich mich entscheiden würde, eine weitere E-Mail bei Minusgraden verschicken zu lassen, müsste ich das ganze noch einmal umschreiben, weil es mit ,,elsif" nicht geht. Oder?

Vielen Dank noch mal, dass das Dank Deiner Hilfe so gut klappt.

Grüße, Mandel
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 27 April 2021, 12:06:13
ZitatObwohl ich den Code in die DEF geschrieben habe, steht in der Raw Definition trotzdem ,,defmode".
Ist das denn trotzdem richtig oder muss ich daraus jetzt ,,def" machen?
Schau Dir doch mal die Unterschiede des Codes an im DEF Editor und in der Raw Definition. (Semikolon Zeilenenden)
Das meinte ich :) - ist immer etwas schwierig das im Redefluss einzuwerfen. Man muss den Code anders formatieren, je nach dem ob man ihn im DEF Editor oder in der Raw Definition eingibt. Das ganze ist als Einsteiger auch schwer zu verstehen, hat aber Entwicklungshistorische Gründe. Im DEF Editor ist es normaler Perl Syntax wie in jedem Editor, in der Raw Definition steht es so wie es in der Config steht, erweitert um Strukturelemente damit FHEM den Code verarbeiten kann.

Mit Deiner weiteren Annahme hast Du nicht Recht.
elsif ($EVTPART1 <= 35 and ReadingsNum('Markise','pct',99) != 0 )
Wenn die temp kleinergleich 35 ist und die Markise nicht eingefahren ist (pct ist nicht 0) dann fahre sie ein. Wo sie vorher stand ist da nicht hinterlegt.
Der erste Teil:
if ($EVTPART1 >= 40 and ReadingsNum('Markise','pct',0) < 10 )
Wenn die Temp größergleich 40 ist und die Markise nicht wenigsten auf pct 10 steht dann fahre sie auf pct 10
Mit dem "Längenvergleich" wird ja primär sichergestellt, das alles nur einmal passiert. Der Zustand der Markise wird dazu abgefragt (genaugenommen nur der Zustand des Aktors).

ZitatUnd wenn ich mich entscheiden würde, eine weitere E-Mail bei Minusgraden verschicken zu lassen, müsste ich das ganze noch einmal umschreiben, weil es mit ,,elsif" nicht geht. Oder?
Warum nicht? Einfach ein weiteres elsif dazu? Nur dann brauchst ein Kriterium damit die Email nicht fortlaufend kommt. Wenn die Markise bei 0 steht springt ja der zweite Zweig nicht an, also kann der dritte bei < 0 zuschlagen.
Es ist die Frage ob man die Steuerung der Markise und die Meldung zu bestimmten Temperaturen nicht lieber getrennt abhandelt.
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 27 April 2021, 15:31:10
Vielen Dank, Otto.

Dann kann ich mein Notify ja so stehen lassen.

Wenn ich das jetzt richtig sehe, dann habe ich Stand jetzt zwei Voraussetzungen, die zum Einfahren der Markise führen:
1. Die Temperatur sinkt wieder auf 35 Grad. Und
2. Der Disabledtrigger sorgt mit der "3600" dafür, dass das Einfahren frühestens nach einer Stunde erfolgt.

Ich gehe davon aus, dass die "3600" Vorrang hat, was bedeutet, wenn die Temperatur von 35 Grad schon nach 10 Minuten erreicht ist, fährt die Markise trotzdem erst nach einer Stunde ein.
Wenn das richtig ist, muss ich mal sehen, ob ich das so lasse oder den "disabledrigger" rausnehme.

Der jetzige Grund der Programmierung ist, dass ich zwei Lautsprecher habe, die direkt unter dem Glasdach hängen. Die möchte ich vor der Sonne bzw. den hohen Temperaturen zu schützen, indem die Markise darüber fährt.

Leider fällt mir nichts ein, wie ich die Markise ausfahren kann, ohne dass sie gleich wieder einfährt, weil z.B. nur die Sonne blendet, aber die Temperatur nicht so hoch ist.
Es sei denn ich baue einen Button, mit dem ich eine Deaktivierung programmiere und nur diesen Knopf drücke.

Wenn jemand eine bessere Idee hat ....

Danke für alles, viele Grüße
Mandel
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 27 April 2021, 20:58:03
Hi Mandel,

mit einem Temperatur Differenz sensor HM-WDS30-OT2-SM kannst Du simpel einen Sonnensensor bauen. Einen Sensor mit Alufolie umwickeln, beide zusammen in die Sonne hängen, Diff > 3 grad -> Sonne scheint.

Gruß Otto
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 28 April 2021, 09:53:56
Super Idee, aber eher für einen anderen Fall.

In diesem Fall geht es nur darum, nicht mehr als 40 Grad auf die Lautsprecher einwirken zu lassen. Dann muss die Markise einen Meter raus. Darunter kann sie wieder rein, es sei denn, dass ich diese aus anderen Gründen nutzen und ausfahren möchte.
Hier sehe ich hier noch die größte Herausforderung.

Obwohl es vielleicht sogar mit Deinem vorgeschlagenen Sensor klappen kann, weil die Temperatur wahrscheinlich extrem auseinander liegen würde. Ich probiere das mal aus.

Danke für den Tipp und beste Grüße
Mandel
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 16 Mai 2021, 09:39:50
Hallo,

ich habe gerade Probleme mit meiner Programmierung beim Ausfahren der Markise bei einer bestimmten Temperatur. Ich meine, dass das schon mal ging.
Aber jetzt fährt die Markise bei 40 und mehr Grad nicht um 10 % aus und schickt mir auch keine E-Mail.

Wenn ich sie dann aber manuell um 10 % ausfahre, fährt sie bei bei 35 Grad und weniger wieder ein. Die E-Mail erhalte ich dann auch.

Kann mir jemand helfen und mitteilenden, woran das liegt?

defmod HM_70A1CA_notify_1 notify HM_70A1CA {if ($EVTPART1 >= 40 and ReadingsNum('Markise','pct',0) < 10 )\
   {fhem("set Markise pct 10");;\
     DebianMail('XXX@XXX.eu','Hitzewarnung - Markise fährt aus','Achtung, die Temperatur hat 42 Grad erreicht! Die Markise fährt aus.')}\
elsif ($EVTPART1 <= 35 and ReadingsNum('Markise','pct',99) != 0 )\
    {fhem("set Markise pct 0");;\
      DebianMail('XXX@XXX.eu','Entwarnung - Markise fährt ein','Die Temperatur ist wieder unter 35 Grad. Die Markise fährt wieder ein!')}\
}
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-05-16 08:40:19
setstate HM_70A1CA_notify_1 2021-05-10 11:22:24 state active



Wenn noch etwas an Infos fehlt, schicke ich das gerne noch hinterher.

Danke und viele Grüße
Mandel
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 16 Mai 2021, 13:29:20
Moin,

ich weiß nicht warum, aber Du hast mal irgendwann im Laufe dieser Diskussion den Trigger einfach umgebaut. Du bist weg vom: Trigger auf temperature bzw: T: und hast gewechselt zum: trigger auf alles!? Das ist für Homematic Geräte sozusagen ein no go!
Also bau das wieder so um wie ich das schon mal empfohlen hatte:
HM_70A1CA:temperature:.*

Gruß Otto
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 16 Mai 2021, 14:02:29
Danke, Otto.

Dann sollte ich das so jetzt richtig gemacht haben, oder?

defmod HM_70A1CA_notify_1 notify HM_70A1CA:temperature:.* {if ($EVTPART1 >= 40 and ReadingsNum('Markise','pct',0) < 10 )\
   {fhem("set Markise pct 10");;\
     DebianMail('XXX@ XX.eu','Hitzewarnung - Markise fährt aus','Achtung, die Temperatur hat 42 Grad erreicht! Die Markise fährt aus.')}\
elsif ($EVTPART1 <= 35 and ReadingsNum('Markise','pct',99) != 0 )\
    {fhem("set Markise pct 0");;\
      DebianMail('XXX@XXX.eu','Entwarnung - Markise fährt ein','Die Temperatur ist wieder unter 35 Grad. Die Markise fährt wieder ein!')}\
}
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-05-16 13:46:32
setstate HM_70A1CA_notify_1 2021-05-10 11:22:24 state active



Kannst Du das bitte noch einmal bestätigen?

Danke und schönen Sonntag
MandelHL
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 16 Mai 2021, 14:33:38
Hi,

sieht so aus: kontrolliere doch solche Dinge immer im Evenmonitor! Da sieht man doch genau was passiert. Deinen trigger als Filter:
HM_70A1CA:temperature:.*
Er soll nur auf Temperaturen triggern!

im Gegensatz zu HM_70A1CA als Filter (und Eventmonitor auf notifyType gestellt!) da siehst Du auf was er sonst noch triggert und dann immer eine Stunde pause macht! -> disabledAfterTrigger 3600

Gruß Otto
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 16 Mai 2021, 15:01:03
Danke, es funktioniert. Den Trigger habe ich erst einmal rausgenommen.
Mal sehen, wie ich den später setze. Nicht, dass die Markise ständig aus- und einfährt.
Aber so sind die Lautsprecher auf jeden Fall vor der Hitze geschützt.

Das mit dem Eventmonitor habe ich nicht ganz verstanden.
Ich habe
HM_70A1CA:temperature:.*
eingetragen und ,,Match the whole line" gelassen. Aber nichts passiert.
Oder war ich nur zu ungeduldig?

VG
Mandel
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 16 Mai 2021, 15:20:15
ZitatDen Trigger habe ich erst einmal rausgenommen.
Was meinst Du damit?
Eventmonitor:
Sorry habe ich nicht extra dazu geschrieben. Entweder notify Type - das musst Du in diesem Fall wählen
Oder match the whole line, dann ist es nicht die (spezielle) Variante deviceName:regExp sondern ein komplettes regExp sowas wie .*temperature.*
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 16 Mai 2021, 16:42:01
Sorry, ,,DisabledAfterTrigger 3600" habe ich erst mal gelöscht.
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MadMax-FHEM am 06 Juni 2021, 09:53:51
Zitat
Ich würde das gerne so programmieren, dass sie nur automatisch einfährt, wenn sie auf ,,10" ausgefahren ist.
Bei allen anderen Werten soll diese Funktion deaktiviert werden.

Dann einfach statt '!=0' im elsif '==10' schreiben, dann passiert das Einfahren nur bei pct 10, so wie du im Text geschrieben hast...

Ob es tatsächlich GENAU das ist was du willst musst du wissen... ;)

Gruß, Joachim
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 11 Juni 2021, 11:14:07
Hallo noch mal,

ich möchte die Funktion der automatischen Markisensteuerung noch mehr automatisieren.

Mit der derzeitigen Steuerung fährt die Markise ausschließlich bei Stand "10" temperaturgesteuert aus und ein, was auch so sein soll:
defmod HM_70A1CA_notify_1 notify HM_70A1CA:temperature:.* {if ($EVTPART1 >= 42 and ReadingsNum('Markise','pct',0) < 10 )\
   {fhem("set Markise pct 10");;\
     DebianMail('XXX@XXX.XX','Hitzewarnung - Markise fährt aus','Achtung, die Temperatur hat 42 Grad erreicht! Die Markise fährt aus.')}\ elsif ($EVTPART1 <= 30 and ReadingsNum('Markise','pct',99) == 10 )\{fhem("set Markise pct 0");;\
      DebianMail('XXX@XXX.XX','Entwarnung - Markise fährt ein','Die Temperatur ist wieder unter 30 Grad. Die Markise fährt wieder ein!')}\ } attr HM_70A1CA_notify_1 alias Markise Hitze-Automatik attr HM_70A1CA_notify_1 appOptions { \
"template": "switch",\
"home": true,\
"sortby": "2",\
"setup": {\
"status": \
{\
    "bar": [\
        "state:inactive:0:#DE3A1F:success", \
        "state:active:100:success" \
    ]\
        },\
"main": \
[{\
"leftBtn": "mdi-power-off" ,\
"leftClick": ["state::inactive"],\
"text": \
[\
"state:inactive:deaktiviert" ,\
"state:active:aktiviert" ,\
"state::%s"\
],\
"rightBtn": "mdi-power-on" ,\
"rightClick": ["state::active"]\
}] \
}\
}\
\

attr HM_70A1CA_notify_1 group Markise
attr HM_70A1CA_notify_1 room Markise
attr HM_70A1CA_notify_1 sortby ,,2"
attr HM_70A1CA_notify_1 webCmd active:inactive


Damit das aber nicht alle 10 Minuten passiert, stelle ich den Schalter bei sonnigem Wetter dann immer manuell auf "inactive".

Ich würde das jetzt aber gerne so einstellen, dass keine manuelle Deaktivierung mehr vorgenommen werden muss.

Wenn die Markise auf "pct 10" steht, die Helligkeit des Devices "Wetterstation" unter <=240 ist oder es nach 19 Uhr ist, soll die Markise einfahren.

Mein Problem ist in diesem Fall, dass ich mehrere Bedingungen habe und das deshalb nicht hinbekomme.

Oder ist es vielleicht sogar empfehlenswert, das in die "99_myUtils.pm" auszulagern und da die Abfrage vorzunehmen?

Eine Frage habe ich noch zum ReadingsNum:
ReadingsNum('Markise','pct',0) < 10 )
ReadingsNum('Markise','pct',99) == 10 )


Ich habe verstanden, dass der dritte Wert in den Klammern der default Wert ist. Ist es aber in meinem Fal überhaupt wichtig, welche Zahl da steht?
Es geht mir nur darum, das zu verstehen. Es funktioniert ja einwandfrei.

Danke und Grüße
Mandel
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 11 Juni 2021, 12:05:50
Hi,

ist doch aber analog zu den anderen?
($EVTPART1 >= 42 and ReadingsNum('Markise','pct',0) < 10 )
($EVTPART1 >= 42 and ReadingsNum('Markise','pct',0) < 10  and (ReadingsNum('Wetterstation','Helligkeit',0) <= 240 or $hour >= 19))

Der Defaultwert wird häufig dafür genommen um Fehler zu behandeln, da Du das nicht tust kann darin stehen was will.

Gruß Otto
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 11 Juni 2021, 12:23:27
Danke, Otto.

Aber ich denke, das ist nicht das, was ich meine.

Derzeit sieht es so aus:
($EVTPART1 >= 42 and ReadingsNum('Markise','pct',0) < 10 )

Das bedeutet, wenn die Temperatur mindestens 42 Grad ist und die Markise pct weniger als 10 ist, mache dieses und jenes.

Deine Zeile bedeutet doch:
($EVTPART1 >= 42 and ReadingsNum('Markise','pct',0) < 10  and (ReadingsNum('Wetterstation','Helligkeit',0) <= 240 or $hour >= 19))

Wenn die Temperatur mindestens 42 Grad beträgt und die Helligkeit niedriger 240 ist oder es später als 19 Uhr ist, mache dieses oder jenes.

Der erste Befehl passt da schon.

Allerdings kommt nach
($EVTPART1 >= 42 and ReadingsNum('Markise','pct',0) < 10 )
die Bedingung, nämlich:

Fahre die Markise auf pct 10 aus
{fhem("set Markise pct 10");;\
und lasse sie da solange, bis die Helligkeit von 240 unterschritten wird oder es mindestens 19 Uhr ist.

Das soll aber nur gelten, wenn sich die Markise auf pct 10 befindet, da diese sonst auch bei allen anderen Positionen aus- und einfährt.

Mir fällt dabei auf, dass ich dann mit den 30 Grad gar nicht mehr arbeiten muss.

ich würde das dann so eintragen:
elsif (ReadingsNum('Wetterstation','Helligkeit',0) <= 240 or $hour >= 19 and ReadingsNum('Markise','pct',99) == 10 )\

Ist das so richtig?

Viele Grüße
Mandel
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 11 Juni 2021, 12:58:36
Bedenke:
das and dies or jenes and alles ist etwas anderes als das and (dies or jenes) and alles
ich hatte verstanden es soll entweder dunkel oder spät sein wenn es 10 ist, in deiner Lösung ist es (10 und spät) oder es ist dunkel. Also bei dunkel ist der Zweig wahr.
https://perldoc.perl.org/perlop#Operator-Precedence-and-Associativity
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 11 Juni 2021, 13:08:05
Danke Dir. Das ist wie Punktrechnung vor Strichrechnung.

elsif (ReadingsNum('Wetterstation','Helligkeit',0) <= 240 or $hour >= 19 and ReadingsNum('Markise','pct',99) == 10 )\

Das heißt, das ist von den Klammern her falsch?

https://perldoc.perl.org/perlop#Operator-Precedence-and-Associativity
Das sehe ich mir mal an. Danke.
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 11 Juni 2021, 13:24:19
Zitat von: MandelHL am 11 Juni 2021, 13:08:05
Das heißt, das ist von den Klammern her falsch?
Ja mMn schon. Da sind ja keine für die Operatoren :)
Als ganz grobe Regel für den Hinterkopf: Bei Mischung aus and und or muss man nachdenken und den or Teil meistens einklammern  ;)
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 11 Juni 2021, 13:46:03
elsif (ReadingsNum(('Wetterstation','Helligkeit',0) <= 240 or $hour >= 19) && ReadingsNum('Markise','pct',99) == 10 )\

Dann würde ich denken, dass es so richtig ist. Ich habe jetzt "and" durch && ersetzt.

So dürfte das passen, oder?
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Beta-User am 11 Juni 2021, 13:47:27
Zitat von: MandelHL am 11 Juni 2021, 13:46:03
Dann würde ich denken, dass es so richtig ist. Ich habe jetzt "and" durch && ersetzt.
Ist etwas besser, aber:
Zitat von: Otto123 am 11 Juni 2021, 13:24:19
Als ganz grobe Regel für den Hinterkopf: Bei Mischung aus and und or muss man nachdenken und den or Teil meistens einklammern  ;)
Noch eine "grobe Regel" als Ergänzung:
Immer "&&" statt "and" bzw. "||" statt "or" (und kein "not", dafür "!"). Der "Text" ist zwar einfacher zu lesen, aber wenn man (unbeabsichtigt) mischt, kommen uU. komische Ergebnisse raus...

So eine "knackige" Erkläung bekommt man dafür nicht so recht, aber ggf. mal das hier nach http://perlcritic.com/ einfügen und mit mind. "stern" analysieren lassen:
if ($a > $b and $c < $d && $e < $f) {
};

Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 11 Juni 2021, 14:12:33
Zitat von: MandelHL am 11 Juni 2021, 13:46:03
Dann würde ich denken, dass es so richtig ist. Ich habe jetzt "and" durch && ersetzt.
Na jetzt habe ich was gemacht  ;D
Du hast zusätzlich eine Klammer um or gemacht, damit passt das auf alle Fälle - aber wie Beta-User sagt: nicht mischen, das erhöht die Komplexität :)
Also entweder durchgängig die Worte nehmen and or not oder besser durchgängig die Zeichen && || !
Für mich fühlen sich die Worte geschmeidiger an - aber ich weiß die Empfehlung ist anders ;)
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Beta-User am 11 Juni 2021, 14:23:04
Zitat von: Otto123 am 11 Juni 2021, 14:12:33
Für mich fühlen sich die Worte geschmeidiger an
...kann ich nachvollziehen, ich war auch mal "unless"-fanboy ;D ...
Aber spätestens, wenn man erfolgreich zwei oder drei Bedingungen in unless reingebastelt hat, stellt man dann mit ziemlicher Sicherheit dann "irgendwann" später fest, dass man was ergänzen muss, aber dass da ja eine "oder"-Negation drin ist, und hat definitiv keinen Plan mehr davon, was das ganze denn eigentlich sollte....?!?
Kurz: es ist unwartbar!
(Ich habe da noch ein ganz spezielles "unless" in einem fremden Modul im Kopf, von dem ich beim gemeinsamen Überarbeiten ausdrücklich die Finger gelassen habe, weil ich schlicht bis auf den heutige Tag nicht mit letzter Genauigkeit verstehe, was da warum (nicht) passieren soll; dem Maintainer ging es ähnlich...).

Ergo: Raus (!) mit "and", "or" "not" und "unless" wo es einem vor die Flinte läuft... Ist auf die Dauer einfacher, wenn man sich mal dran gewöhnt hat.
(Dasselbe gilt übrigens für "zu viele" Klammern: Wenn eine (logische) Klammer irgendwo steht, sollte sie eine Bedeutung haben).

Just my2ct.
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 11 Juni 2021, 16:13:14
Ich bekomme leider eine Fehlrmeldug, mit der ich nichts anzufangen weiß

Auf
elsif (ReadingsNum(('Wetterstation','Helligkeit',0) <= 240 || $hour >= 19) && ReadingsNum('Markise','pct',99) == 10 )\
bekomme ich die Meldung
Not enough arguments for main::ReadingsNum at (eval 37805) line 4, near "19) "

Welches Argument fehl denn da?
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Beta-User am 11 Juni 2021, 16:39:00
Zitat von: MandelHL am 11 Juni 2021, 16:13:14
Ich bekomme leider eine Fehlrmeldug, mit der ich nichts anzufangen weiß
Du solltest einen Editor mit "syntax-highlighting" (wie codemirror für FHEMWEB) verwenden, dann ist das Klammern zählen bzw. erkennen, was zu was gehört deutlich einfacher:

Zitat
elsif (ReadingsNum(('Wetterstation','Helligkeit',0) <= 240 || $hour >= 19) && ReadingsNum('Markise','pct',99) == 10 )\
Du bist m.E. beim "Verteilen"  Verrutscht:
elsif ( ( ReadingsNum('Wetterstation','Helligkeit',0) <= 240 || $hour >= 19 ) && ReadingsNum('Markise','pct',99) == 10 )\
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 18 August 2021, 10:14:15
Hallo mal wieder,

das mit dem Aus- und Einfahren der Markise bei bestimmter Temperatur oder bestimmter Helligkeit klappt super.

Nun würde ich mir noch gerne eine E-Mail schicken lassen, wenn die Windstärke 9 bft bzw. 75 km/h erreicht.

Die Beiträge #61, #62 und #63 fassen zusammen, wie die Programmierung derzeit aussieht.

Ich weiß jetzt allerdings nicht, wo und wie ich die Programmierung für die E-Mail bei Erreichen der genannten Windstärke programmiert werden muss.
Das Wie würde ich aus der obengenannten Programmierung ableiten. Aber über das Wo bin ich mir nicht bewusst.

Danke für Eure Hilfe,
Mandel
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MadMax-FHEM am 18 August 2021, 10:26:31
Zitat von: MandelHL am 18 August 2021, 10:14:15
Hallo mal wieder,

das mit dem Aus- und Einfahren der Markise bei bestimmter Temperatur oder bestimmter Helligkeit klappt super.

Nun würde ich mir noch gerne eine E-Mail schicken lassen, wenn die Windstärke 9 bft bzw. 75 km/h erreicht.

Die Beiträge #61, #62 und #63 fassen zusammen, wie die Programmierung derzeit aussieht.

Ich weiß jetzt allerdings nicht, wo und wie ich die Programmierung für die E-Mail bei Erreichen der genannten Windstärke programmiert werden muss.
Das Wie würde ich aus der obengenannten Programmierung ableiten. Aber über das Wo bin ich mir nicht bewusst.

Danke für Eure Hilfe,
Mandel

Wäre deutlich einfacher du würdest ein aktuelles list posten...
...ansonsten müssen wir zusammensuchen (mit der Gefahr es doch anders "zusammenzubauen" wie du es tatsächlich hast)... :-\

Gruß, Joachim
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 18 August 2021, 10:46:21
Ok, ich dachte, es wäre so einfacher ... Aber wenn ich mal denke ...

Wetterstation List:
help


Internals:
   DEF        6808C9
   FUUID      60b6a9be-f33f-6379-94dd-4d1a2074f34443e8
   HMLANGW_MSGCNT 1404
   HMLANGW_RAWMSG 050000378E86706808C900000000965883B3C08544EED1
   HMLANGW_RSSI -55
   HMLANGW_TIME 2021-08-18 10:38:00
   IODev      HMLANGW
   LASTInputDev HMLANGW
   MSGCNT     1404
   NAME       Wetterstation
   NR         87
   NTFY_ORDER 50-Wetterstation
   STATE      Temperatur: 15 °C, Feuchtigkeit: 88 %, Helligkeit: 209, Regen: 279.365 mm/qm, Wind: 13.3 km/h,  Richtung: NNW; ⬊
   TYPE       CUL_HM
   chanNo     01
   disableNotifyFn 1
   lastMsg    No:8E - t:70 s:6808C9 d:000000 00965883B3C08544EED1
   protCmdPend 3 CMDs_pending
   protLastRcv 2021-08-18 10:38:00
   protRcv    1404 last_at:2021-08-18 10:38:00
   protState  CMDs_pending
   rssi_at_HMLANGW cnt:1404 min:-59 max:-53 avg:-56.36 lst:-55
   CL:
     Authenticated 0
     BUF       
     FD         16
     FW_ID      3863
     LASTACCESS 1629276007
     NAME       WEB_192.168.178.203_50279
     NR         3865
     PEER       192.168.178.203
     PORT       50279
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     READINGS:
       2021-08-18 10:40:03   state           Connected
   READINGS:
     2021-06-06 12:34:49   D-firmware      1.6
     2021-06-06 12:34:49   D-serialNr      PEQ0001456
     2021-08-15 23:10:52   IODev           HMLANGW
     2021-06-07 16:19:47   LuftdruckHpa    0
     2021-06-07 16:19:47   RegenGesamtMm   0
     2021-06-07 16:19:47   RegenMm         0
     2021-06-07 16:19:47   TaupunktTempC   -17.8
     2021-06-07 16:19:47   TemperaturC     -4.1
     2021-06-07 16:19:47   TemperaturGefuehltC -17.8
     2021-06-07 16:19:47   WindKm          6.8
     2021-06-07 16:19:47   WindboeenKm     0.0
     2021-06-07 16:19:47   WindrichtungGrad -180
     2021-08-18 10:38:00   battery         ok
     2021-08-18 10:38:00   brightness      209
     2021-08-15 23:11:55   cfgState        updating
     2021-08-15 23:11:55   commState       CMDs_pending
     2021-08-18 10:38:00   humidity        88
     2021-08-18 10:38:00   isRaining       1
     2021-06-02 07:35:17   peerList        13D5A503
     2021-06-06 12:36:20   powerOn         2021-06-06 12:36:20
     2021-08-18 10:38:00   rain            279.365
     2021-06-06 12:36:20   recentStateType info
     2021-08-18 10:38:00   state           T: 15 H: 88 W: 13.3 R: 279.365 IR: 1 WD: 340 WDR: 67.5 S: 238 B: 209
     2021-08-18 10:38:00   sunshine        238
     2021-08-18 10:38:00   temperature     15
     2021-06-06 12:36:20   unknown         06000030
     2021-08-18 10:38:00   windDirRange    67.5
     2021-08-18 10:38:00   windDirection   340
     2021-08-18 10:38:00   windDirectionIcon ⬊
     2021-08-18 10:38:00   windDirectionText NNW
     2021-08-18 10:38:00   windSpeed       13.3
     2021-06-07 08:09:18   winddirText     N
   cmdStack:
     ++A00125788A6808C900040000000000
     ##A00125788A6808C90103
     ##A00125788A6808C901040000000001
   helper:
     HM_CMDNR   142
     getCfgList all
     getCfgListNo ,1,4
     lastMsgTm  1629275880.27979
     mId        00AE
     peerFriend peerAct,peerVirt
     peerOpt    1p:THSensor,4:THSensor,p:THSensor
     regLst     0,1,1p,4p
     rxType     140
     supp_Pair_Rep 0
     cmds:
       TmplKey    :no:1629061852.60786
       TmplTs     1629061852.60786
       cmdKey     1:1:0::Wetterstation:00AE:01:
       cmdLst:
         assignHmKey noArg
         burstXmit  noArg
         clear      [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
         deviceRename -newName-
         fwUpdate   -filename- [-bootTime-]
         getConfig  noArg
         getDevInfo noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerChan   0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
         peerSmart  -peerOpt-
         raw        -data- [...]
         regBulk    -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         reset      noArg
         sign       [(on|{off})]
         tplDel     -tplDel-
         trgEventL  -peer- -condition-
         trgEventS  -peer- -condition-
         trgPressL  [(-peer-|{all})]
         trgPressS  [(-peer-|{all})]
         unpair     noArg
       lst:
         condition  slider,0,1,255
         peer       
         peerOpt    Charlotte_Heizungsventil_WindowRec,Charlotte_Heizungsventil_remote,Garten_links,Garten_rechts,Haustuerbeleuchtung,Hochbeet_links,Hochbeet_rechts,Markise,SchalterBeleuchtungVorgarten,Schuppen_Garten
         tplDel     
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         list       [({normal}|full)]
         param      -param-
         reg        -addr- -list- [-peerChn-]
         regList    noArg
         regTable   noArg
         regVal     -addr- -list- [-peerChn-]
         saveConfig [-filename-]
         tplInfo    noArg
     expert:
       def        0
       det        0
       raw        1
       tpl        0
     io:
       flgs       0
       newChn     +6808C9,00,00,00
       nextSend   1629275880.37452
       rxt        0
       vccu       
       p:
         6808C9
         00
         00
         00
       prefIO:
     mRssi:
       mNo        8E
       io:
         HMLANGW:
           -49
           -49
     peerIDsH:
     prt:
       bErr       0
       sProc      2
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
     rssi:
       at_HMLANGW:
         avg        -56.3696581196581
         cnt        1404
         lst        -55
         max        -53
         min        -59
     tmpl:
Attributes:
   IODev      HMLANGW
   alias      Wetterstation
   appOptions { "template": "thermometer"}
   autoReadReg 4_reqStatus
   expert     rawReg
   firmware   1.6
   group      Wetterstation
   model      HM-WDS100-C6-O-2
   room       Wetter
   serialNr   PEQ0001456
   stateFormat Temperatur: temperature °C, Feuchtigkeit: humidity %, Helligkeit: brightness, Regen: rain mm/qm, Wind: windSpeed km/h,  Richtung: windDirectionText; windDirectionIcon
   subType    THSensor
   userReadings windDirectionText:windDirection:.* {
  UConv::direction2compasspoint(ReadingsVal($name,'windDirection',0));
},
windDirectionIcon:windDirection:.* {
  my $dir = ReadingsVal($name,'windDirection',0);
  UConv::direction2compasspoint((($dir < 180)? $dir+180: $dir-180),3);
}


OK


Und hier die RAW-Definition der ,,Hitzeautomatik":
defmod HM_70A1CA_notify_1 notify HM_70A1CA:temperature:.* {if ($EVTPART1 >= 40 and ReadingsNum('Markise','pct',0) < 10 )\
   {fhem("set Markise pct 10");;\
     DebianMail('XXX@XXX.eu','Hitzewarnung - Markise fährt aus','Achtung, die Temperatur hat 40 Grad erreicht! Die Markise fährt aus.')}\
elsif ( ( ReadingsNum('Wetterstation','brightness',0) <= 200 or $hour >= 18 ) and ReadingsNum('Markise','pct',99) == 10 )\
    {fhem("set Markise pct 0");;\
      DebianMail('XXX@XXX.eu','Entwarnung - Markise fährt ein','Die Markise fährt wieder ein!')}\
}
attr HM_70A1CA_notify_1 alias Markise Hitze-Automatik
attr HM_70A1CA_notify_1 appOptions { \
"template": "switch",\
"home": true,\
"sortby": "2",\
"setup": {\
"status": \
{\
    "bar": [\
        "state:inactive:0:#DE3A1F:success", \
        "state:active:100:success" \
    ]\
        },\
"main": \
[{\
"leftBtn": "mdi-power-off" ,\
"leftClick": ["state::inactive"],\
"text": \
[\
"state:inactive:deaktiviert" ,\
"state:active:aktiviert" ,\
"state::%s"\
],\
"rightBtn": "mdi-power-on" ,\
"rightClick": ["state::active"]\
}] \
}\
}\
\

attr HM_70A1CA_notify_1 group Markise
attr HM_70A1CA_notify_1 room Markise
attr HM_70A1CA_notify_1 sortby ,,2"
attr HM_70A1CA_notify_1 webCmd active:inactive

setstate HM_70A1CA_notify_1 2021-08-18 10:42:26
setstate HM_70A1CA_notify_1 2021-08-15 23:10:44 state active


Und hier noch das List des Temperatursensors für die Hitzeautomatik, was aber ja nichts mit der E-Mail bei Sturm zu tun hat.
Ich füge das nur bei, um den Zusammenhang zur ,,Hitzeautomatik" herzustellen.
DEF        70A1CA
   FUUID      5fa31fcd-f33f-ef18-0ab3-7b733ac6d85ba5b8
   HMLANGW_MSGCNT 1416
   HMLANGW_RAWMSG 050000318A867070A1CA00000000EF64
   HMLANGW_RSSI -49
   HMLANGW_TIME 2021-08-18 11:00:18
   IODev      HMLANGW
   LASTInputDev HMLANGW
   MSGCNT     1416
   NAME       HM_70A1CA
   NR         81
   NTFY_ORDER 50-HM_70A1CA
   STATE      T: 23.9
   TYPE       CUL_HM
   chanNo     01
   disableNotifyFn 1
   lastMsg    No:8A - t:70 s:70A1CA d:000000 00EF64
   protCmdDel 2
   protLastRcv 2021-08-18 11:00:18
   protRcv    1416 last_at:2021-08-18 11:00:18
   protResnd  3 last_at:2021-08-15 23:16:50
   protResndFail 1 last_at:2021-08-15 23:19:10
   protSnd    4 last_at:2021-08-15 23:19:04
   protState  CMDs_done_Errors:1
   rssi_at_HMLANGW cnt:1416 min:-54 max:-47 avg:-48.83 lst:-49
   CL:
     Authenticated 0
     BUF       
     FD         16
     FW_ID      3900
     LASTACCESS 1629277243
     NAME       WEB_192.168.178.203_50343
     NR         3902
     PEER       192.168.178.203
     PORT       50343
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     READINGS:
       2021-08-18 11:00:32   state           Connected
   READINGS:
     2021-03-06 00:26:05   D-firmware      1.3
     2021-03-06 00:26:05   D-serialNr      QEQ1895228
     2021-08-15 23:19:04   IODev           HMLANGW
     2021-08-17 23:27:43   RegL_00.       
     2021-08-18 11:00:18   battery         ok
     2021-08-15 23:11:22   cfgState        updating
     2021-08-15 23:19:10   commState       CMDs_done_Errors:1
     2021-08-18 11:00:18   state           T: 23.9
     2021-08-18 11:00:18   temperature     23.9
   helper:
     HM_CMDNR   138
     cSnd       0125788A70A1CA00040000000000,0125788A70A1CA00040000000000
     getCfgListNo
     lastMsgTm  1629277218.58345
     mId        003E
     peerFriend
     peerOpt    p:THSensor
     regLst     0
     rxType     12
     supp_Pair_Rep 0
     cmds:
       TmplKey    :no:1629061852.50118
       TmplTs     1629061852.50118
       cmdKey     1:1:0::HM_70A1CA:003E:01:
       cmdLst:
         assignHmKey noArg
         clear      [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
         deviceRename -newName-
         fwUpdate   -filename- [-bootTime-]
         getConfig  noArg
         getDevInfo noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerChan   0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
         raw        -data- [...]
         regBulk    -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         reset      noArg
         tplDel     -tplDel-
         unpair     noArg
       lst:
         condition  slider,0,1,255
         peer       
         peerOpt   
         tplDel     
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         list       [({normal}|full)]
         param      -param-
         reg        -addr- -list- [-peerChn-]
         regList    noArg
         regTable   noArg
         regVal     -addr- -list- [-peerChn-]
         saveConfig [-filename-]
         tplInfo    noArg
     expert:
       def        0
       det        0
       raw        1
       tpl        0
     io:
       flgs       0
       newChn     +70A1CA,00,00,00
       nextSend   1629277218.66425
       rxt        2
       vccu       
       p:
         70A1CA
         00
         00
         00
       prefIO:
     mRssi:
       mNo        8A
       io:
         HMLANGW:
           -41
           -41
     peerIDsH:
     prt:
       bErr       0
       sProc      0
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
     rssi:
       at_HMLANGW:
         avg        -48.8347457627119
         cnt        1416
         lst        -49
         max        -47
         min        -54
     tmpl:
Attributes:
   IODev      HMLANGW
   alias      Lautsprecher Terrasse
   appOptions {"home": true,
"template": "thermometer",
"sortby": "2" }

   autoReadReg 4_reqStatus
   expert     rawReg
   firmware   1.3
   group      Temperatursensor Lautsprecher Terrasse
   icon       temp_temperature
   model      HM-WDS30-T-O
   room       Wetter
   serialNr   QEQ1895228
   subType    THSensor


Reicht das so aus?

Danke und viele Grüße
Mandel
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MadMax-FHEM am 18 August 2021, 11:04:34
Zitat von: MandelHL am 18 August 2021, 10:14:15
Nun würde ich mir noch gerne eine E-Mail schicken lassen, wenn die Windstärke 9 bft bzw. 75 km/h erreicht.

Naja dein aktuelles notify triggert ja "nur" auf Temperatur...

Also entweder auch noch auf Windstärke triggern lassen (welches Reading interessiert dich denn dann dafür?) oder ein 2tes notify (einfacher, weil sich das ja nur darum "kümmern" muss)...

-> EventMonitor öffnen, warten (oder provozieren) bis das entsprechende Event kommt -> create/modify

Und dann eben anpassen.

Also "if($EVENT > XXX){send message}"...
...oder $EVTPART1... ja nachdem...

Falls (sieht so aus) Einheiten im Reading sind, dann eben mit $EVTPART oder selber spilt...
...oder Abfrage des Readings (troz dem der Wert ja im Event mitkommt) per ReadingsNum, dann hast du nur den Zahlenwert...
(wie immer: es gibt viele Möglichkeiten)

EDIT: wenn dir das als Trigger reicht (weil du zwar auf Temperatur triggerst aber ja auch einen Zweig hast, der mit Temperatur grad gar nix macht ;)  ), dann kannst du ja auch einen weiteren elsif-Zweig einbauen...

Gruß, Joachim
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MadMax-FHEM am 18 August 2021, 14:42:24
Jetzt wollte ich grad anschauen was du nettes gepostet hast/hattest: schwupp war es weg ;)

Poste doch ein list des neuen notify :)

Ich weiß auch nicht genau was du mit "wird als LautsprecherXXX aufgelöst" meinst...
...bzw. habe ich eben nur eine "Idee"...

Du meinst unter "Probably associated with"?

Dann hat das notify verm. keine NOTIFYDEV, das kommt wenn z.B. kein NAME im notify "aufgelöst" werden kann:

Device: Lautsprecher_Aussen

notify: define nLAlle Lautsprecher_.*:.* {} EDIT: -> wird wohl NICHT unter associated with angezeigt, da Lautsprecher_.* nicht auf ein Device passt, das dann "referenziert" werden könnte

im Gegensatz zu: define nLAlle Lautsprecher_Aussen:.* {} EDIT: -> taucht beim Device Lautsprecher_Aussen auf, da der Name Lautsprecher_Aussen "referenziert" werden kann/wird

Also falls du das gemeint hast...
...wenn nicht: keine Ahnung ;)

Gruß, Joachim
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 18 August 2021, 14:46:52
Sorry, Joachim. Ich dachte, dass das Bild nicht beigefügt war. Deshalb hier noch mal.

Danke, das hat gut geklappt.

Nun frage ich mich allerdings, wie ich das hinbekomme, dass bei dem Notify für den Lautsprecher auch der Name aufgelöst wird, so wie es bei der Wetterstation passiert.
Allerdings hatte ich das Lautsprecher Notify nicht über den EventMonitor erstellt.

Wie kann ich das nachträglich ändern? Ich habe einiges probiert und nicht hinbekommen, finde das aber übersichtlicher.

Danke noch mal und viele Grüße
Mandel

Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 18 August 2021, 15:00:12
Das ist das List. Oder meinst Du etwas anderes?
Wie man das Notify listet, weiß ich nicht.

Internals:
   DEF        HM_70A1CA:temperature:.* {if ($EVTPART1 >= 40 and ReadingsNum('Markise','pct',0) < 10 )
   {fhem("set Markise pct 10");
     DebianMail('XXX@XXX.XX','Hitzewarnung - Markise fährt aus','Achtung, die Temperatur hat 40 Grad erreicht! Die Markise fährt aus.')}
elsif ( ( ReadingsNum('Wetterstation','brightness',0) <= 200 or $hour >= 18 ) and ReadingsNum('Markise','pct',99) == 10 )
    {fhem("set Markise pct 0");
      DebianMail('XXX@XXX.XX','Entwarnung - Markise fährt ein','Die Markise fährt wieder ein!')}
}
   FUUID      607df7ed-f33f-6379-cabb-b1f5add5d425fa74
   NAME       HM_70A1CA_notify_1
   NR         86
   NTFY_ORDER 50-HM_70A1CA_notify_1
   REGEXP     HM_70A1CA:temperature:.*
   STATE      active
   TYPE       notify
   READINGS:
     2021-08-18 14:25:50   state           active
Attributes:
   alias      Markise Hitze-Automatik
   appOptions {
"template": "switch",
"home": true,
"sortby": "2",
"setup": {
"status":
{
    "bar": [
        "state:inactive:0:#DE3A1F:success",
        "state:active:100:success"
    ]
        },
"main":
[{
"leftBtn": "mdi-power-off" ,
"leftClick": ["state::inactive"],
"text":
[
"state:inactive:deaktiviert" ,
"state:active:aktiviert" ,
"state::%s"
],
"rightBtn": "mdi-power-on" ,
"rightClick": ["state::active"]
}]
}
}


   group      Markise
   room       Markise
   sortby     ,,2"
   webCmd     active:inactive
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MadMax-FHEM am 18 August 2021, 16:40:51
Ja das ist wohl ein list.
Aber von dem notify hattest du doch schon das RawDef gepostet?

Ich meinte ein list des NEUEN notify...

Bzw. verstehe ich (immer noch nicht) was du mit "Name auflösen" meinst...

EDIT: und welches notify ist denn das für den Lautsprecher?

EDIT: ich habe oben noch etwas hinzugefügt, vielleicht jetzt klarer. Vors. du meinst mit "aufgelöst" eben das "associated with"... Und wenn du ein list des notify postest, um das es dir geht, dann kann man auch helfen. So nicht...

Gruß, Joachim
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 19 August 2021, 11:37:20
Das ist der Temperatursensor über dem Lautsprecher, der mir zeigt, wie doll die Sonne auf den knallt und ob vielleicht besser die Markise zum Schutz ausfahren soll.

defmod HM_70A1CA_notify_1 notify HM_70A1CA:temperature:.* {if ($EVTPART1 >= 40 and ReadingsNum('Markise','pct',0) < 10 )\
   {fhem("set Markise pct 10");;\
DAS HABE ICH JETZT WEGGELASSEN.
HIER KOMMT DANN NUR NOCH DIE ALIAS, DIE DIE ZUORDNUNG VEREINFACHT.
...
attr HM_70A1CA_notify_1 alias Markise Hitze-Automatik


Bei diesem Temperatursensor muss ich ja erst einmal nachsehen, welches Device das ist.

Da habe ich es mit dem Windsensor einfacher.
Hier hat der EventMonitor den Befehl erstellt und das Device nicht mit CUL_HM 6808C9 dargestellt, sondern ,,Wetterstation" genommen.
So ist die Zuordnung für mich natürlich schneller möglich.

defmod Wetterstation_notify_1 notify Wetterstation:windSpeed:.* {if ($EVTPART1 >= 35 ){DebianMail('XXX@XXX.XX','Sturmwarnung','Achtung, es droht Sturm!')}}
attr Wetterstation_notify_1 alias Sturmwarnung


Ich hatte gedacht ::), dass durch diese Programmierung das Device auch im Notify ,,ThermometerLautsprecher" darstellt, ist aber nicht so:

defmod ThermometerLautsprecher CUL_HM 70A1CA
attr ThermometerLautsprecher .mId 003E
attr ThermometerLautsprecher IODev HMLANGW
attr ThermometerLautsprecher alias Lautsprecher Terrasse
attr ThermometerLautsprecher appOptions {"home": true,\
"template": "thermometer",\
"sortby": "2" }\

attr ThermometerLautsprecher autoReadReg 4_reqStatus
attr ThermometerLautsprecher expert rawReg
attr ThermometerLautsprecher firmware 1.3
attr ThermometerLautsprecher group Temperatursensor Lautsprecher Terrasse
attr ThermometerLautsprecher icon temp_temperature
attr ThermometerLautsprecher model HM-WDS30-T-O
attr ThermometerLautsprecher room Wetter
attr ThermometerLautsprecher serialNr QEQ1895228
attr ThermometerLautsprecher subType THSensor


Viele Grüße
Mandel
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MadMax-FHEM am 19 August 2021, 11:44:50
Ich verstehe immer noch nicht was du willst/meinst.

Also Events sehen so aus (naja so ungefähr):

Devicename:Readingname:Wert

Wenn also das Device, auf dessen Events du reagieren willst XYZ statt Warngeraet heißt, dann musst du das Device eben Warngeraet nennen statt XYZ:

XYZ:ReadingOfInterest:Wert

rename XYZ Warngeraet

-> Warngeraet:ReadingOfInterest:Wert

Wenn dir also der autom. angelegte Name nicht gefällt: rename

Stört dich nun, dass das notify bzgl. Lautsprecher nicht Lautsprecher-irgendwas heißt? -> rename das notify

EDIT: also rename HM_70A1CA_notify_1 Lautsprecher_notify_1

Stört dich nun, dass das notify bzgl. Lautsprecher nicht auf Lautsprecher-irgendwas reagiert? -> rename des Homematic-Devices (nutze doch die dort "eingebaute" rename-Funktion)

EDIT: also rename HM_70A1CA Lautsprecher bzw. besser set HM_70A1CA rename Lautsprecher
EDIT: dann musst du nat. das RegEx des notify anpassen!!!

Ansonsten siehe meinen Eingangssatz und alle meine Antwortversuche zuvor: ich habe keinen Schimmer was du meinst. Solange du es nicht schaffst MIR das zu vermitteln kann ICH nicht helfen...
...vielleicht haben ja andere mitlesende eine Idee...

Gruß, Joachim
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 19 August 2021, 13:13:59
Vielen Dank, das hilft mir schon.

Ich habe erkannt, dass durch das Notify über den EventMonitor automatisch das Device umbenannt wurde, nämlich in "Wetterstation".
Das Notify lautet dann "Wetterstation_notify_1 (Sturmwarnung).

Bei dem nicht durch EventMonitor erzeugten Notify steht halt "HM_70A1CA_notify_1 (Markise Hitze Automatik)".
Das heißt, hier muss ich erst einmal checken, was "HM_70A1CA" überhaupt ist.

Siehe dazu auch mein Bild aus Beitrag #78.

Aber das mit der Rename-Funktion habe ich verstanden und versuche, das mal umzusetzen. Allerdings befürchte ich, dass sich die Änderung nicht auf "HM_70A1CA_notify_1 (Markise Hitze Automatik)" auswirken wird.

Aber ich werde es sehen.

Vielen Dank, ich mache das mit dem Rename-Befehl.
Mandel
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MadMax-FHEM am 19 August 2021, 14:08:43
Zitat von: MandelHL am 19 August 2021, 13:13:59
Ich habe erkannt, dass durch das Notify über den EventMonitor automatisch das Device umbenannt wurde, nämlich in "Wetterstation".
Das Notify lautet dann "Wetterstation_notify_1 (Sturmwarnung).

Das halte ich für ein Gerücht, dass der Eventmonitor-Mechanismus irgendwelche BESTEHENDEN Devices umbenennt!

Er schlägt als Name für das notify, das beim autom. Generieren erzeugt werden kann eben etwas vor, wo der Devicename des Event-erzeugenden Devices "drinsteckt", that's it.



Zitat von: MandelHL am 19 August 2021, 13:13:59
Bei dem nicht durch EventMonitor erzeugten Notify steht halt "HM_70A1CA_notify_1 (Markise Hitze Automatik)".
Das heißt, hier muss ich erst einmal checken, was "HM_70A1CA" überhaupt ist.

Ganz einfach:


list Devicename


also


list HM_70A1CA



VERY VERY BASICS von fhem... ;)


Zitat von: MandelHL am 19 August 2021, 13:13:59
Aber das mit der Rename-Funktion habe ich verstanden und versuche, das mal umzusetzen. Allerdings befürchte ich, dass sich die Änderung nicht auf "HM_70A1CA_notify_1 (Markise Hitze Automatik)" auswirken wird.

Wenn du


rename HM_70A1CA_notify_1 AndererName_notify_1


eingibst (wobei ich immer nicht verstehe wo das in Klammern her kommt, also Markise Hitze Automatik, weil es im Devicename KEIN Leerzeichen [und keine Klammern] geben KANN!)
dann heißt das notify einfach anders.

Es wird weiterhin auf Events vom Device HM_70A1CA reagieren die "temperature" enthalten (also mit der notify RegEx "matchen")...

Wenn du das Device, welches die Events erzeugt (also HM_70A1CA) umbenennst und da es sich (verm.) um ein Homematic Device handelt besser DESSEN rename verwenden!
(also set HM_70A1CA rename NeuerName)

Dann MUSST du auch die RegEx des notify anpassen!!
Weil ja der Event ganz anders aussieht!!
(siehe oben)

Also wenn du das Device umbenennst, das die Events erzeugt, dann wird das notify NICHT mehr reagieren!

Wenn du nur das notify selbst umbenennst, dann ändert sich nichts, außer, dass eben das notify anders heißt... 8)

EDIT: was hat es mit deiner "defmod-Anpassung" (ich nehme an RawDef) in Antwort #81 auf sich? Hast du das Device HM_70A1CA mittes RawDef "bearbeitet"? Ich weiß ja nicht genau was du getan hast aber das ist NICHT der Weg bei einem Device den Namen zu ändern!! Du hast jetzt verm. 2 Devices, die irgendwie mit dem tatsächlichen Homematic-Gerät (also das tatsächlich "physische") "verbunden" sind. Bin nicht sicher wie sich das auswirkt! Besser wirklich etwas fhem Basics lernen, sonst kannst du dir 1. dein System ganz schnell "kaputt schießen" und 2. musst du dann nicht wegen so einfacher/basic Sachen (immer wieder) hier aufschlagen... Nix für ungut...
EDIT: bei list TYPE=CUL_HM tauchen da beide auf, also 1x HM_70A1CA und 1x ThermometerLautsprecher ? -> das ist schlecht! Wenn nur ThermometerLautsprecher auftaucht, dann hast du (teilweise) umbenamst irgendwie aber fragwürdig. Wenn nur HM_70A1CA (evtl. mit mehreren Kanälen/Channel), dann hattest du offenbar Glück und kannst ja jetzt mit rename anpassen wie du willst... Aber: vergiss nicht die RegEx des notify! Weil das dann eben nicht mehr funktioniert... Also anpassen oder neu anlegen (lassen)...

Gruß, Joachim
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: TomLee am 19 August 2021, 15:53:56
Zitat(wobei ich immer nicht verstehe wo das in Klammern her kommt, also Markise Hitze Automatik, weil es im Devicename KEIN Leerzeichen [und keine Klammern] geben KANN!)

Das kann ich beantworten  :)

Das ist der alias des notify  ;D
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MadMax-FHEM am 19 August 2021, 16:32:17
Zitat von: TomLee am 19 August 2021, 15:53:56
Das kann ich beantworten  :)

Das ist der alias des notify  ;D

Dachte ich mir schon ;)

(verwirrt an der Stelle aber mehr als es hilft ;)  )

Gruß, Joachim
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 02 September 2021, 11:12:29
Hallo,

Danke für Eure Unterstützung. Nun habe ich das ganze aus den Augen verloren, was dazu geführt hat, dass der Lautsprecher nun doch mehr als 60 Grad ausgesetzt war, weil das automatische Ausfahren der Markise nicht mehr funktioniert hat.

Zitatalso

Code: [Auswählen]
list HM_70A1CA


VERY VERY BASICS von fhem... ;)

Dieses List führt zu dem Ergebnis
"No device named HM_70A1CA"

Es scheint, dass ich da wohl was zerschossen habe, oder?

"list ThermometerLautsprecher" führt hingegen dazu:
Internals:
   DEF        70A1CA
   FUUID      5fa31fcd-f33f-ef18-0ab3-7b733ac6d85ba5b8
   HMLANGW_MSGCNT 492
   HMLANGW_RAWMSG 05000033CA867070A1CA00000000ED64
   HMLANGW_RSSI -51
   HMLANGW_TIME 2021-09-02 10:50:53
   IODev      HMLANGW
   LASTInputDev HMLANGW
   MSGCNT     492
   NAME       ThermometerLautsprecher
   NR         81
   NTFY_ORDER 50-ThermometerLautsprecher
   STATE      T: 23.7
   TYPE       CUL_HM
   chanNo     01
   disableNotifyFn 1
   lastMsg    No:CA - t:70 s:70A1CA d:000000 00ED64
   protCmdDel 2
   protLastRcv 2021-09-02 10:50:53
   protRcv    492 last_at:2021-09-02 10:50:53
   protResnd  3 last_at:2021-09-01 14:10:57
   protResndFail 1 last_at:2021-09-01 14:13:43
   protSnd    4 last_at:2021-09-01 14:13:38
   protState  CMDs_done_Errors:1
   rssi_at_HMLANGW cnt:492 min:-54 max:-50 avg:-51.96 lst:-51
   READINGS:
     2021-03-06 00:26:05   D-firmware      1.3
     2021-03-06 00:26:05   D-serialNr      QEQ1895228
     2021-09-01 14:13:38   IODev           HMLANGW
     2021-09-01 18:17:37   RegL_00.       
     2021-09-02 10:50:53   battery         ok
     2021-09-01 14:05:40   cfgState        updating
     2021-09-01 14:13:43   commState       CMDs_done_Errors:1
     2021-09-02 10:50:53   state           T: 23.7
     2021-09-02 10:50:53   temperature     23.7
   helper:
     HM_CMDNR   202
     cSnd       0125788A70A1CA00040000000000,0125788A70A1CA00040000000000
     getCfgListNo
     lastMsgTm  1630572653.7149
     mId        003E
     peerFriend
     peerOpt    p:THSensor
     regLst     0
     rxType     12
     supp_Pair_Rep 0
     cmds:
       TmplKey    :no:1630512816.6876
       TmplTs     1630512816.6876
       cmdKey     1:1:0::ThermometerLautsprecher:003E:01:
       cmdLst:
         assignHmKey noArg
         clear      [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
         deviceRename -newName-
         fwUpdate   -filename- [-bootTime-]
         getConfig  noArg
         getDevInfo noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerChan   0 -actChn- [({single})] [({set}|unset)] [actor|remote|both]
         raw        -data- [...]
         regBulk    -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         reset      noArg
         tplDel     -tplDel-
         unpair     noArg
       lst:
         condition  slider,0,1,255
         peer       
         peerOpt   
         tplDel     
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         list       [({normal}|full)]
         param      -param-
         reg        -addr- -list- [-peerChn-]
         regList    noArg
         regTable   noArg
         regVal     -addr- -list- [-peerChn-]
         saveConfig [-filename-]
         tplInfo    noArg
     expert:
       def        0
       det        0
       raw        1
       tpl        0
     io:
       flgs       0
       newChn     +70A1CA,00,00,00
       nextSend   1630572653.80889
       rxt        2
       vccu       
       p:
         70A1CA
         00
         00
         00
       prefIO:
     mRssi:
       mNo        CA
       io:
         HMLANGW:
           -45
           -45
     peerIDsH:
     prt:
       bErr       0
       sProc      0
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
     rssi:
       at_HMLANGW:
         avg        -51.9613821138212
         cnt        492
         lst        -51
         max        -50
         min        -54
     tmpl:
Attributes:
   IODev      HMLANGW
   alias      Lautsprecher Terrasse
   appOptions {"home": true,
"template": "thermometer",
"sortby": "2" }

   autoReadReg 4_reqStatus
   expert     rawReg
   firmware   1.3
   group      Temperatursensor Lautsprecher Terrasse
   icon       temp_temperature
   model      HM-WDS30-T-O
   room       Wetter
   serialNr   QEQ1895228
   subType    THSensor


Zitat
Wenn du

Code: [Auswählen]
rename HM_70A1CA_notify_1 AndererName_notify_1

eingibst (wobei ich immer nicht verstehe wo das in Klammern her kommt, also Markise Hitze Automatik, weil es im Devicename KEIN Leerzeichen [und keine Klammern] geben KANN!)
dann heißt das notify einfach anders.

Das hat geklappt. Nun steht da bei "Probably associated with"
"LautsprecherTerrasse_notify_1 (Marksie Hitze-Automatik)"

In Klammern steht das Alias, wie TomLee geschrieben hat.

Das ist das List von "LautsprecherTerrasse_notofy_1":

Internals:
   DEF        HM_70A1CA:temperature:.* {if ($EVTPART1 >= 40 and ReadingsNum('Markise','pct',0) < 10 )
   {fhem("set Markise pct 10");
     DebianMail('XXX@XXX.XX','Hitzewarnung - Markise fährt aus','Achtung, die Temperatur hat 40 Grad erreicht! Die Markise fährt aus.')}
elsif ( ( ReadingsNum('Wetterstation','brightness',0) <= 200 or $hour >= 18 ) and ReadingsNum('Markise','pct',99) == 10 )
    {fhem("set Markise pct 0");
      DebianMail('XXX@XXX.XX','Entwarnung - Markise fährt ein','Die Markise fährt wieder ein!')}
}
   FUUID      607df7ed-f33f-6379-cabb-b1f5add5d425fa74
   NAME       LautsprecherTerrasse_notify_1
   NR         86
   NTFY_ORDER 50-LautsprecherTerrasse_notify_1
   REGEXP     HM_70A1CA:temperature:.*
   STATE      active
   TYPE       notify
   READINGS:
     2021-09-02 10:56:40   state           active
Attributes:
   alias      Markise Hitze-Automatik
   appOptions {
"template": "switch",
"home": true,
"sortby": "2",
"setup": {
"status":
{
    "bar": [
        "state:inactive:0:#DE3A1F:success",
        "state:active:100:success"
    ]
        },
"main":
[{
"leftBtn": "mdi-power-off" ,
"leftClick": ["state::inactive"],
"text":
[
"state:inactive:deaktiviert" ,
"state:active:aktiviert" ,
"state::%s"
],
"rightBtn": "mdi-power-on" ,
"rightClick": ["state::active"]
}]
}
}


   group      Markise
   room       Markise
   sortby     ,,2"
   webCmd     active:inactive


Diese Funktion geht im Moment aber nicht, so dass die Markise trotz der Voraussetzungen von Temperatur und Helligkeit nicht reagiert.

Dass die Funktion nicht mehr geht, hast Du, MadMax, hier ja quasi geschrieben:
Wenn du das Device, welches die Events erzeugt (also HM_70A1CA) umbenennst und da es sich (verm.) um ein Homematic Device handelt besser DESSEN rename verwenden!
(also set HM_70A1CA rename NeuerName)

Dann MUSST du auch die RegEx des notify anpassen!!
Weil ja der Event ganz anders aussieht!!
(siehe oben)

Also wenn du das Device umbenennst, das die Events erzeugt, dann wird das notify NICHT mehr reagieren!

Wenn du nur das notify selbst umbenennst, dann ändert sich nichts, außer, dass eben das notify anders heißt... 8)


Ich frage mich allerdings, wie ich das jetzt noch retten kann bzw. wie ich das RexEx des notify anpassen kann.

ZitatEDIT: bei
Code: [Auswählen]
list TYPE=CUL_HM

ergibt:
ActionDetector
Bewegungssensor_1
Bewegungssensor_2
Charlotte_Heizungsventil
Charlotte_Heizungsventil_Clima
Charlotte_Heizungsventil_ClimaTeam
Charlotte_Heizungsventil_Climate
Charlotte_Heizungsventil_Weather
Charlotte_Heizungsventil_WindowRec
Charlotte_Heizungsventil_remote
Garten_links
Garten_rechts
HM_4DD7D7
Haustuerbeleuchtung
Hochbeet_links
Hochbeet_rechts
Markise
SchalterBeleuchtungVorgarten
Schuppen_Garten
Sensor_Badezimmerfenster_EG
Sensor_Haustuer
Sensor_Kellertuer
Sensor_Schlafzimmerfenster
ThermometerLautsprecher
Wetterstation



Ich weiß, dass Ihr Recht habt, dass ich mich in den Basics mehr belesen muss.

Es wäre trotzdem super, wenn Ihr mir noch einmal helfen könntet, damit erst einmal die Markise wieder auf das Thermometer in Verbindung mit Helligkeit und Uhrzeit reagiert.

Vielen Dank,
Mandel
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MadMax-FHEM am 02 September 2021, 11:27:38
Notify anpassen: auf DEF des notify klicken und Trigger-Regex anpassen...
Alternativ den Ausführungsteil des aktuellen notify kopieren/merken.
Notify löschen und mit dem Eventmonitor ein neues/passendes anlegen (lassen)...

Oder (noch besser): (endlich) fhem-Grundlagen aneignen...

Gruß, Joachim
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 05 September 2021, 12:27:32
ZitatAlternativ den Ausführungsteil des aktuellen notify kopieren/merken.
Notify löschen und mit dem Eventmonitor ein neues/passendes anlegen (lassen)...

Danke, über diesen Weg hat es perfekt geklappt ...
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: uwirt am 08 Oktober 2021, 10:00:57
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


Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 08 Oktober 2021, 17:36:41
Hi,

da gibt es hier eine nette Hilfe (https://wiki.fhem.de/wiki/Notify#Mein_notify_geht_nicht_-_wie_kann_ich_mir_selbst_helfen:_Debugging).
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: uwirt am 11 Oktober 2021, 10:41:14
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag 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?
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Damian am 11 Oktober 2021, 15:02:52
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.
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: uwirt am 11 Oktober 2021, 15:41:20
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: uwirt am 05 November 2021, 08:55:34
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...
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: MandelHL am 14 April 2022, 14:12:16
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Beta-User am 14 April 2022, 14:25:45
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]
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 14 April 2022, 21:20:16
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
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Beta-User am 15 April 2022, 12:48:25
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...)
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 17 April 2022, 00:26:46
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?
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Beta-User am 17 April 2022, 06:44:26
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)....
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Otto123 am 17 April 2022, 09:13:25
naja wenn Du erstmal nichts an meinem "adaptierten" Anwendungsbeispiel von evalStateFormat($) zu meckern hast, mach ich das mal so ;)
;D ;D ;D
Titel: Antw:E-Mail senden bei bestimmter Temperatur?
Beitrag von: Beta-User am 17 April 2022, 10:10:14
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 ...).