FHEM Forum

FHEM => Sonstiges => Thema gestartet von: link611 am 07 November 2019, 15:38:14

Titel: Batteriewarnung - Homematic & Aqara
Beitrag von: link611 am 07 November 2019, 15:38:14
Servus,

seit gestern habe ich in meiner Installation auch Aqara Sensoren, die brav ihren Batteriestatus übermitteln.

Jetzt habe ich seit Urzeiten die Batteriewarnung wie im Wiki beschrieben.

Jetzt melden die Aqara Sensoren aber nicht ok sondern einen Wert 100, 95, etc.

Ich sitze jetzt schon ewig rum um das Notify entsprechend anzupassen, aber ich komme nicht weiter....

vielleicht kann mir ja jemand helfen.


.*:[Bb]attery:.* { if(($EVENT !~ m/ok/) || ($EVENT eq "15")) { fhem ("set Pushover msg 'Batteriewarnung' '$NAME $EVENT' '' 0 ''");}}


prinzipiell müsste ich ja nur die erste Bedingung abändern zu eq low, das scheint aber nicht zu funktionieren....

Ist es vielleicht alternativ möglich die Sensoren aus der Readingsgroup auszuschließen und dafür eine eigene zu machen?


-------
edit


habe es jetzt so abgeändert:

.*:[Bb]attery:.* { if(("$EVENT" eq "battery:low") || ("$EVENT" eq "Battery:low") || ("$EVENT" eq "battery:15")) { fhem ("set Pushover msg 'Batteriewarnung' '$NAME $EVENT' '' 0 ''");}}

damit scheint es zu klappen, aber geht das nicht einfacher?
Titel: Antw:Batteriewarnung - Homematic & Aqara
Beitrag von: pflaume88 am 03 Januar 2020, 10:47:27
Hallo

ich habe etwas versucht.
Hier ein Notify für die Batteriewarnung mit selbst zu definierenden Grenz bzw Schaltwerten.

########################################################

.*:[Bb]attery:.*|.*:[Bb]atteryS:.*|.*:[Bb]attery_level:.*


{
## Dies ist beliebig erweiterbar und kann auf und für viele Batterie "Readings" reagieren.
## Es spielt keine Rolle ob ein Wert oder ein Wort übergeben wird, es muss über den Fall angebpasst werden.

## Hier werden die Texte definiert die gesendet werden sollen.
my $text1 = 'FHEM Batteriewarnung!!!\n';
my $text2 = ': Batterie=';
my $text3 = '\nBatterien sollten demnächst gewechselt werden!';

## EVENT wir geteielt in zwei Parameter $read und $para.
## $raed ist das Reading vom Gerät und $para der Wert des Readings.
my ($read, $para) = split(/:/, $EVENT, 2);
## Zurück setzen der Variable für die Nachricht bzw. Warnung.
my $warn = '';
## Zu definieren ist das Reading vom Gerät und der "Grenzwert".
## In diesen Fall ist "battery" das Reading und "low" der Grenzwert.
if ($read eq 'battery' && $para eq 'low') {$warn=1}
if ($read eq 'Battery' && $para eq 'low') {$warn=1}   
## In diesen Fall ist "25" der Grenzwert, weil bei diesen Reading der Batteriestatus in Prozent übergeben wird.   
if ($read eq 'battery_level' && $para < '25') {$warn=1}
if ($read eq 'Battery_level' && $para < '25') {$warn=1}

## Wenn der Wert $warn = 1 wird eine Nachricht gesendet.   
if ($warn eq '1')
   {
     ## Dies dient dazu den Aliasnamen zu übergeben und den tazächlichen Wert des Readings zu übertragen.
    ## In diesen Fall über Telegram.
    my $geraet = AttrVal($NAME,'alias','');
    my $wert = ReadingsVal($NAME,$read,'');
     fhem ("set Telegram message $text1$geraet$text2$wert$text3");   
      }

}
################################################

Bei funktioniert es mit verschiedenen Readings.
Verbesserungen sind gewünscht.

Viel Spaß damit.
Titel: Antw:Batteriewarnung - Homematic & Aqara
Beitrag von: link611 am 12 Februar 2020, 15:57:52
Zitat von: pflaume88 am 03 Januar 2020, 10:47:27
Hallo

ich habe etwas versucht.
Hier ein Notify für die Batteriewarnung mit selbst zu definierenden Grenz bzw Schaltwerten.

########################################################

.*:[Bb]attery:.*|.*:[Bb]atteryS:.*|.*:[Bb]attery_level:.*


{
## Dies ist beliebig erweiterbar und kann auf und für viele Batterie "Readings" reagieren.
## Es spielt keine Rolle ob ein Wert oder ein Wort übergeben wird, es muss über den Fall angebpasst werden.

## Hier werden die Texte definiert die gesendet werden sollen.
my $text1 = 'FHEM Batteriewarnung!!!\n';
my $text2 = ': Batterie=';
my $text3 = '\nBatterien sollten demnächst gewechselt werden!';

## EVENT wir geteielt in zwei Parameter $read und $para.
## $raed ist das Reading vom Gerät und $para der Wert des Readings.
my ($read, $para) = split(/:/, $EVENT, 2);
## Zurück setzen der Variable für die Nachricht bzw. Warnung.
my $warn = '';
## Zu definieren ist das Reading vom Gerät und der "Grenzwert".
## In diesen Fall ist "battery" das Reading und "low" der Grenzwert.
if ($read eq 'battery' && $para eq 'low') {$warn=1}
if ($read eq 'Battery' && $para eq 'low') {$warn=1}   
## In diesen Fall ist "25" der Grenzwert, weil bei diesen Reading der Batteriestatus in Prozent übergeben wird.   
if ($read eq 'battery_level' && $para < '25') {$warn=1}
if ($read eq 'Battery_level' && $para < '25') {$warn=1}

## Wenn der Wert $warn = 1 wird eine Nachricht gesendet.   
if ($warn eq '1')
   {
     ## Dies dient dazu den Aliasnamen zu übergeben und den tazächlichen Wert des Readings zu übertragen.
    ## In diesen Fall über Telegram.
    my $geraet = AttrVal($NAME,'alias','');
    my $wert = ReadingsVal($NAME,$read,'');
     fhem ("set Telegram message $text1$geraet$text2$wert$text3");   
      }

}
################################################

Bei funktioniert es mit verschiedenen Readings.
Verbesserungen sind gewünscht.

Viel Spaß damit.

Hey, danke für das Script,
habe es eben eingebaut und um HM IP erweitert.
Mal sehen ob es klappt.
Titel: Antw:Batteriewarnung - Homematic & Aqara
Beitrag von: MadMax-FHEM am 12 Februar 2020, 16:31:08
Sowas in der Art gibt es auch hier ;)

https://forum.fhem.de/index.php/topic,82637.msg747514.html#msg747514

Gruß, Joachim
Titel: Antw:Batteriewarnung - Homematic & Aqara
Beitrag von: link611 am 10 März 2020, 21:57:31
Zur Info, es waren noch ein paar Fehler im Script, habe es entsprechend angepasst:



.*:[Bb]attery:.*|.*:0.LOW_BAT:.*
{
## Dies ist beliebig erweiterbar und kann auf und für viele Batterie "Readings" reagieren.
## Es spielt keine Rolle ob ein Wert oder ein Wort übergeben wird, es muss über den Fall angebpasst werden.

## Hier werden die Texte definiert die gesendet werden sollen.
my $text1 = 'FHEM Batteriewarnung!!!\n';
my $text2 = ': Batterie=';

## EVENT wird geteilt in zwei Parameter $read und $para.
## $read ist das Reading vom Gerät und $para der Wert des Readings.
my ($read, $para) = split(/:/, $EVENT, 2);


## Zu definieren ist das Reading vom Gerät und der "Grenzwert".
## In diesen Fall ist "battery" das Reading und "low" der Grenzwert.
if ($read eq 'battery' && $para eq 'low') {goto notify;}
if ($read eq 'Battery' && $para eq 'low') {goto notify;}
if ($read eq 'battery' && $para eq ' ok') {goto ende;}
if ($read eq 'Battery' && $para eq ' ok') {goto ende;}
   
## In diesen Fall ist "30" der Grenzwert, weil bei diesen Reading der Batteriestatus in Prozent übergeben wird.   
if ($read eq 'battery' && $para < '31') {goto notify;}
if ($read eq 'Battery' && $para < '31') {goto notify;}

##Hier für HM IP
if ($read eq '0.LOW_BAT' && $para > '0') {goto notify;}

goto ende;

notify:

     ## Dies dient dazu den Namen zu übergeben und den tatsächlichen Wert des Readings zu übertragen.
    ## In diesen Fall über Telegram.

    my $wert = ReadingsVal($NAME,$read,'');
     fhem ("set Telegram message $text1$NAME$text2$wert");   

ende:

}
Titel: Antw:Batteriewarnung - Homematic & Aqara
Beitrag von: pflaume88 am 11 März 2020, 20:44:10
Hallo

kannst Du mir kurz erklären warum Du auf den Status ok reagieren möchtest?
Mich interesiert nur wenn der Wer bzw. Status nicht mehr ok oder kleiner als ist.
Wo ist die Verbesserung?
Nicht böse gemeint bitte erleuchte mich, ich betreibe das Thema FHEM erst seit einem Jahr.