FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: webdandy am 09 April 2019, 16:21:32

Titel: [Gelöst] Batterieüberwachung nur für TYPE=CUL_HM oder battery=<30
Beitrag von: webdandy am 09 April 2019, 16:21:32
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
Titel: Antw:Batterieüberwachung nur für TYPE=CUL_HM oder battery=<30
Beitrag von: DeeSPe am 09 April 2019, 16:31:52
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
Titel: Antw:Batterieüberwachung nur für TYPE=CUL_HM oder battery=<30
Beitrag von: DeeSPe am 09 April 2019, 16:35:57
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
Titel: Antw:Batterieüberwachung nur für TYPE=CUL_HM oder battery=<30
Beitrag von: webdandy am 09 April 2019, 16:42:35
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.
Titel: Antw:Batterieüberwachung nur für TYPE=CUL_HM oder battery=<30
Beitrag von: DeeSPe am 09 April 2019, 17:08:31
Sorry, mach mal überall wo $EVTPART2 steht $EVTPART1 draus.

Gruß
Dan

P.S. Habe es oben (https://forum.fhem.de/index.php/topic,99472.msg928616.html#msg928616) geändert.
Titel: Antw:Batterieüberwachung nur für TYPE=CUL_HM oder battery=<30
Beitrag von: webdandy am 09 April 2019, 17:18:12
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
Titel: Antw:Batterieüberwachung nur für TYPE=CUL_HM oder battery=<30
Beitrag von: DeeSPe am 09 April 2019, 17:23:18
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
Titel: Antw:Batterieüberwachung nur für TYPE=CUL_HM oder battery=<30
Beitrag von: webdandy am 09 April 2019, 17:34:04
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
Titel: Antw:Batterieüberwachung nur für TYPE=CUL_HM oder battery=<30
Beitrag von: DeeSPe am 09 April 2019, 17:36:09
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
Titel: Antw:Batterieüberwachung nur für TYPE=CUL_HM oder battery=<30
Beitrag von: webdandy am 09 April 2019, 17:50:51
Super, vielen Dank! Läuft alles  :)

Gruß
Fabian
Titel: Antw:Batterieüberwachung nur für TYPE=CUL_HM oder battery=<30
Beitrag von: DeeSPe am 09 April 2019, 17:51:56
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