HM_CC_RT_DN; $EVENT

Begonnen von Apollon, 15 Mai 2016, 22:06:40

Vorheriges Thema - Nächstes Thema

Apollon

Hallo,

ich habe zu meinem HM_CC_RT_DN eine Batteriewarnung eingefügt, die eine Mail versenden soll. Die vorgeschlagene Prozedur funktioniert jedoch nicht.
define n_batt_chk notify .*:[Bb]attery:.* {if("%" !~ m/ok/) { \
{DebianMail('xxx@xxx', 'FHEM Batteriewarnung N', @.': '.%)};; \
Log 3, "@: Batteriewarnung %";;\
}}

Daher habe ich eine Alternative versucht. Ich habe für mich jedoch ein unerklärliches Phänomen. Um zu prüfen, ob ich bei einem niedrigen Batteriestatus auch die Mail erhalte, habe ich zunächst die Einstellung so vorgenommen, dass ich eine Mail erhalte, wenn der Batteriestatus OK ist.
define n_batt_chk notify .*:[Bb]attery.* {if("$EVENT" =~ m/ok/) { \
{DebianMail('xxx@xxx', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};; \
Log 3, "$NAME : Batteriewarnung $EVENT";;\
}}

Ich erhalte dann auch die Mail mit folgenden Text: HM_Bad: battery: ok
Bis hier ist alles gut.

Nun habe ich die Einstellung geändert und die If-Bedingung negiert.
define n_batt_chk notify .*:[Bb]attery.* {if("$EVENT" !~ m/ok/) { \
{DebianMail('xxx@xxx', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};; \
Log 3, "$NAME : Batteriewarnung $EVENT";;\
}}

Der einzige Unterschied ist die Änderung in der If-Bedingung von = nach ! Nun habe ich mit keiner Mail gerechnet. Jedoch erhalte ich weiterhin Mails. Nun aber mit einem anderen Text: HM_Bad: batteryLevel: 3
$EVENT hat nun einen anderen Wert. Das kann nicht sein, ist aber so.
Hat jemand dafür eine Erklärung?

Gruß
Apollon

MadMax-FHEM

Der Thermostat schickt sowohl den "battery ok" als auch den tatsächlichen Batteriespannungswert batteryLevel XVolt...
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Apollon

#2
Aber warum ist $EVENT einmal battery: ok und einmal batteryLevel :3 zurück? Das kann doch nicht sein, nur durch die Änderung der If-Bedingung. Das ergibt keinen Sinn.

MadMax-FHEM

Doch weil '3' eben auch ungleich 'ok' ist...
...wenn aber batteryLevel mit '3' kommt du aber nach '=ok' frägst fällt es raus...

Wenn du im EventMonitor kuckst, dann siehst du dass der Thermostat beides schickt...

Also 'battery:ok' und 'batteryLevel' mit der aktuellen noch vorhandenen Spannung der Batterien...
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Linef

Es gibt mehrere verschiedene Events. Eins heißt battery und eins heißt batteryLevel. Und die regexp "[Bb]attery.*" matcht beide.
fhem auf cubietruck, HM-USB-CFG-2, CUL-V3, 6x HM-CC-RT-DN, 5x HM-SEC-SD, 2x HM-SEC-SCo, 5x HM Eigenbausensoren, AVR-Heizungsgateway

Apollon

Ahh danke, nun ist der Groschen gefallen. Mir war nicht klar, welche Events ausgelöst werden. Damit wird es ganz einfach. Habe einiges getestet und es funktioniert alles.

Aber eine Frage habe ich noch. Es geht um dier Variable %. Was soll damit kommen?

dev0

@ und % im notify/etc gibt es seit FL 5.7 nicht mehr: Link

ph1959de

Zitat von: Apollon am 16 Mai 2016, 10:03:40
Aber eine Frage habe ich noch. Es geht um dier Variable %. Was soll damit kommen?

Da stellt sich die Frage, woher Du die Codebeispiele hast ... offensichtlich wurden da die Anpassungen nicht gemacht, die durch FHEM 5.7 (siehe Update und Anpassungshinweise) erforderlich wurden. Ähnliche Beispiele im FHEM-Wiki haben die korrekte Syntax.

Peter
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

Apollon

Um möglichst viel zu verstehen, lese ich sehr viel. Dabei sind natürlich auch ältere Hinweise (%). Das Eine oder Andere geht mir leider dabei durch oder mir fehlt noch das Verständnis. Irgendwann habe ich sogar mal die Anpassungshinweise gelesen. Zu dem Zeitpunkt habe ich sie aber nicht verinnerlicht.

Derzeit bin ich in der Testphase. Z.b. wird die Batteriewarnung nicht die endgültige Lösung sein. Wenn ich damit fertig bin, wird sich in einer Datei eine Funktion befinden, die mir nur einmal eine Nachricht schickt. Diese Datei soll auch nicht die 99_myUtils.pm sein, sondern eine separate Datei, die über Includes eingebunden wird. Momentan habe ich alle Funktionen in der 99_myUtils.

Die Möglichkeit selber zu programmieren hat mich dazu bewogen auf FHEM unzusteigen.