[Gelöst] Batterieüberwachung nur für TYPE=CUL_HM oder battery=<30

Begonnen von webdandy, 09 April 2019, 16:21:32

Vorheriges Thema - Nächstes Thema

webdandy

Hallo zusammen,

wie oben im Betreff geschrieben, versuche ich auch den Status der Batterien zu überwachen und mir dann das Ergebnis per Telegram zu schicken.
Dies hat auch alles wunderbar funktioniert, bis ich heute einen Hue Motion Sensor hinzugefügt habe.

Mein notify sieht wie folgt aus:
define battery.check notify .*:[Bb]attery:.* { if($EVENT !~ m/ok/) {{ fhem ("set fhem_bot message FHEM Batteriewarnung\n$NAME $EVENT\nBatterien sollten demnächst gewechselt werden!");; Log 3, "$NAME: Batteriewarnung $EVENT";; }}}

Nun zu meinem Problem, das Reading vom Hue Motion Sensor schreibt eine Zahl:
Motion_Kueche: Batteriewarnung battery: 100

Somit bekomme ich bei jeder erkannten Bewegung eine Nachricht, da ja das Reading ungleich ok ist.

Jetzt stehe ich leider etwas auf dem Schlauch. Ich würde das notify gerne so umschreiben, dass dieses nur für Geräte des Typs CUL_HM gilt, oder aber dass das reading battery =<30 prüft.

Könnte mir hier vielleicht jemand behilflich sein?

Vielen Dank im voraus!

Grüße
Fabian

DeeSPe

define battery.check notify .*:[Bb]attery:.* { if($EVENT !~ m/ok/ && InternalVal($NAME,"TYPE","") eq "CUL_HM") { fhem ("set fhem_bot message FHEM Batteriewarnung\n$NAME $EVENT\nBatterien sollten demnächst gewechselt werden!");; Log 3, "$NAME: Batteriewarnung $EVENT";; }}

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

#2
Oder um auch den Fall mit <30 abzudecken:
define battery.check notify .*:[Bb]attery:.* { if(($EVENT !~ m/ok/ && InternalVal($NAME,"TYPE","") eq "CUL_HM") || ($EVTPART1 =~ m/^\d+/ && $EVTPART1 < 30)) { fhem ("set fhem_bot message FHEM Batteriewarnung\n$NAME $EVENT\nBatterien sollten demnächst gewechselt werden!");; Log 3, "$NAME: Batteriewarnung $EVENT";; }}

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

webdandy

Wow, besten Dank! Das ging ja super schnell.

Doch leider bekomme ich folgende Meldungen im Log:

2019.04.09 16:39:06 1: ERROR evaluating my $EVTPART0='battery:';my $EVTPART1='ok';my $EVENT='battery: ok';my $SELF='battery.check';my $NAME='Temp_Wohnzimmer';my $TYPE='LaCrosse';{ if(($EVENT !~ m/ok/ && InternalVal($NAME,"TYPE","") eq "CUL_HM") || ($EVTPART2 =~ m/^\d+/ && $EVTPART2 < 30)) { fhem ("set fhem_bot message FHEM Batteriewarnung\n$NAME $EVENT\nBatterien sollten demnächst gewechselt werden!"); Log 3, "$NAME: Batteriewarnung $EVENT"; }}: Global symbol "$EVTPART2" requires explicit package name (did you forget to declare "my $EVTPART2"?) at (eval 9729) line 1.
Global symbol "$EVTPART2" requires explicit package name (did you forget to declare "my $EVTPART2"?) at (eval 9729) line 1.

2019.04.09 16:39:06 3: battery.check return value: Global symbol "$EVTPART2" requires explicit package name (did you forget to declare "my $EVTPART2"?) at (eval 9729) line 1.
Global symbol "$EVTPART2" requires explicit package name (did you forget to declare "my $EVTPART2"?) at (eval 9729) line 1.

2019.04.09 16:39:06 1: ERROR evaluating my $EVENT='battery: ok';my $EVTPART0='battery:';my $EVTPART1='ok';my $TYPE='LaCrosse';my $SELF='battery.check';my $NAME='Temp_Kueche';{ if(($EVENT !~ m/ok/ && InternalVal($NAME,"TYPE","") eq "CUL_HM") || ($EVTPART2 =~ m/^\d+/ && $EVTPART2 < 30)) { fhem ("set fhem_bot message FHEM Batteriewarnung\n$NAME $EVENT\nBatterien sollten demnächst gewechselt werden!"); Log 3, "$NAME: Batteriewarnung $EVENT"; }}: Global symbol "$EVTPART2" requires explicit package name (did you forget to declare "my $EVTPART2"?) at (eval 9730) line 1.
Global symbol "$EVTPART2" requires explicit package name (did you forget to declare "my $EVTPART2"?) at (eval 9730) line 1.

DeeSPe

Sorry, mach mal überall wo $EVTPART2 steht $EVTPART1 draus.

Gruß
Dan

P.S. Habe es oben geändert.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

webdandy

Habe es so geändert:

define battery.check notify .*:[Bb]attery:.* { if(($EVENT !~ m/ok/ && InternalVal($NAME,"TYPE","") eq "CUL_HM") || ($EVTPART1 =~ m/^\d+/ && $EVTPART1 < 30)) { fhem ("set FHEM_bot message FHEM Batteriewarnung\n$NAME $EVENT\nBatterien sollten demnächst gewechselt werden!");; Log 3, "$NAME: Batteriewarnung $EVENT";; }}

Und bekomme bei einem Trigger folgendes:

2019.04.09 17:11:53 1: ERROR evaluating my $EVTPART0='battery:low';my $EVENT='battery:low';my $NAME='Fernbedienung_Schlafzimmer';my $SELF='battery.check';my $TYPE='CUL_HM';{ if(($EVENT !~ m/ok/ && InternalVal($NAME,"TYPE","") eq "CUL_HM") || ($EVTPART1 =~ m/^\d+/ && $EVTPART1 < 30)) { fhem ("set FHEM_bot message FHEM Batteriewarnung\n$NAME $EVENT\nBatterien sollten demnächst gewechselt werden!"); Log 3, "$NAME: Batteriewarnung $EVENT"; }}: Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 17580) line 1.
Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 17580) line 1.

2019.04.09 17:11:53 3: battery.check return value: Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 17580) line 1.
Global symbol "$EVTPART1" requires explicit package name (did you forget to declare "my $EVTPART1"?) at (eval 17580) line 1.


Vielen Dank für Deine schnellen Antworten  :)

Gruß
Fabian

DeeSPe

Dann mal so:
define battery.check notify .*:[Bb]attery:.* { if(($EVENT !~ m/ok/ && $TYPE eq "CUL_HM") || ($EVENT =~ m/^[Bb]attery:(\d+)/ && $1 < 30)) { fhem ("set FHEM_bot message FHEM Batteriewarnung\n$NAME $EVENT\nBatterien sollten demnächst gewechselt werden!");; Log 3, "$NAME: Batteriewarnung $EVENT";; }}


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

webdandy

So sieht es schon mal ganz gut aus. Bei den Hue Sensoren müsste noch ein Leerzeichen zwischen dem : und der Zahl damit der Trigger korrekt läuft.

Motion_Kueche: Batteriewarnung battery: 20

Kann man bei dem Type noch eine oder Verknüpfung einbauen für "LaCrosse"?

Ich danke dir  :D

DeeSPe

Dann so:
define battery.check notify .*:[Bb]attery:.* { if(($EVENT !~ m/ok/ && $TYPE =~ /^CUL_HM|LaCrosse$/) || ($EVENT =~ m/^[Bb]attery:\s?(\d+)/ && $1 < 30)) { fhem ("set FHEM_bot message FHEM Batteriewarnung\n$NAME $EVENT\nBatterien sollten demnächst gewechselt werden!");; Log 3, "$NAME: Batteriewarnung $EVENT";; }}


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

webdandy


DeeSPe

Zitat von: webdandy am 09 April 2019, 17:50:51
Super, vielen Dank! Läuft alles  :)

Gruß
Fabian

Super!
Dann setzt mal bitte ein [gelöst] vor das Thema.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe