Batteriestatus überwachen und per Email senden

Begonnen von Tommy82, 30 September 2015, 20:02:57

Vorheriges Thema - Nächstes Thema

Tommy82

Hab jetzt mal mit verbose 5 geloggt, dann kommt das im log,
2016.04.10 11:45:49.866 5: Triggering Batterie_Status_nt
2016.04.10 11:45:49.872 4: Batterie_Status_nt exec {
if(Value("BATT_Status") ne "LOW" ) {
Log(3,"$NAME : Batteriewarnung $EVENT");;
{ fhem ("set BATT_Status LOW") } ;;
DebianMail('Batteriewarnung',$NAME.': '.$EVENT);;
    }
}
2016.04.10 11:45:49.936 3: rd_Batterie : Batteriewarnung Heizung_Flur.battery:
2016.04.10 11:45:49.959 4: dummy set BATT_Status LOW
2016.04.10 11:45:49.994 1: sendEmail RCP: xxx@googlemail.com
2016.04.10 11:45:49.994 1: sendEmail Subject: Batteriewarnung
2016.04.10 11:45:49.994 1: sendEmail Text: rd_Batterie: Heizung_Flur.battery:
2016.04.10 11:45:52.606 1: sendEmail returned: Apr 10 11:45:52 localhost sendEmail[14085]: Email was sent successfully!
2016.04.10 11:46:08.264 5: Triggering Batterie_Status_nt
2016.04.10 11:46:08.272 4: Batterie_Status_nt exec {
if(Value("BATT_Status") ne "LOW" ) {
Log(3,"$NAME : Batteriewarnung $EVENT");;
{ fhem ("set BATT_Status LOW") } ;;
DebianMail('Batteriewarnung',$NAME.': '.$EVENT);;
    }
}
2016.04.10 11:46:24.717 5: Triggering Batterie_Status_nt
2016.04.10 11:46:24.723 4: Batterie_Status_nt exec {
if(Value("BATT_Status") ne "LOW" ) {
Log(3,"$NAME : Batteriewarnung $EVENT");;
{ fhem ("set BATT_Status LOW") } ;;
DebianMail('Batteriewarnung',$NAME.': '.$EVENT);;
    }
}
2016.04.10 11:46:37.132 5: Triggering Batterie_Status_nt
2016.04.10 11:46:37.140 4: Batterie_Status_nt exec {
if(Value("BATT_Status") ne "LOW" ) {
Log(3,"$NAME : Batteriewarnung $EVENT");;
{ fhem ("set BATT_Status LOW") } ;;
DebianMail('Batteriewarnung',$NAME.': '.$EVENT);;
    }
}



Aber da kann ich auch nichts erkennen!?

@Puschel
Wie müsste ich mein notify abändern um auf deine Prüfung testweise umzustellen?
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

dev0


Puschel74

#62
Zitat von: dev0 am 10 April 2016, 12:46:57
Welchen Wert hat $EVENT?
Sieht man doch schön  ;)
ZitatHeizung_Flur.battery:

DebianMail('Batteriewarnung',$NAME.': '.$EVENT);
Zitat2016.04.10 11:45:49.994 1: sendEmail Subject: Batteriewarnung
2016.04.10 11:45:49.994 1: sendEmail Text: rd_Batterie: Heizung_Flur.battery:
$NAME = rd_Batterie und
$EVENT = Heizung_Flur.battery:

rd_Batterie sollte aber nicht auf das regexp matchen:
.*[Bb]attery:.(?!ok).*

Bei den letzten 3 Batterie_Status_nt exec {  kam keine Mail mehr durch weil der Dummy auf LOW steht.

Edith: Hm, laut http://www.regexe.com/ sollte rd_Batterie keinen match bei .*[Bb]attery auslösen.
So hätte ich mir das auch erwartet.
Warum das notify dennoch auslöst wundert mich.

Edith1: Ich tippe mal drauf das Heizung_Flur.battery matcht und das auslösende Device ist rd_Batterie - aber das wird garnicht berücksichtigt resp. geprüft.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Tommy82

Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Puschel74

#64
Zitat von: Tommy82 am 10 April 2016, 17:37:18
Und das heißt?

Ich sehe mit meinen bescheidenen Fähigkeiten 2 Möglichkeiten  ;)

Das regexp des notify passend modifizieren das nur erwünschte Geräte durchkommen oder
im Code auf nur erwünschte Geräte prüfen und rd_Batterie verwerfen.

Ersteres dürfte vermutlich auf sowas
(!rd_Batterie).*:.*[Bb]attery:.(?!ok).*
in der Richtung hinauslaufen.
Zweiteres auf sowas
if ($NAME ne "rd_Batterie") ...

Beides ungetestet und ohne Gewähr.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Tommy82

Du meinst also ungefähr so?
.*[Bb]attery:.(?!ok).* {
if ($NAME ne "rd_Batterie" && Value("BATT_Status") ne "LOW" ) {
Log(3,"$NAME : Batteriewarnung $EVENT");
{ fhem ("set BATT_Status LOW") } ;
DebianMail('Batteriewarnung',$NAME.': '.$EVENT);
    }
}


Mal sehen was passiert
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Tommy82

Hi,
muss dann doch nochmal fragen, ich hab das notify so gelöst:
Internals:
   DEF        .*[Bb]attery:.(?!ok).* {
if ($NAME ne "rd_Batterie" && "rd_Batterie2" && "rd_Rauchmelder" && Value("BATT_Status") ne "LOW" ) {
Log(3,"$NAME : Batteriewarnung $EVENT");
{ fhem ("set BATT_Status LOW") } ;
DebianMail('Batteriewarnung',$NAME.': '.$EVENT);
    }
}
   NAME       Batterie_Status_nt
   NR         274
   NTFY_ORDER 50-Batterie_Status_nt
   REGEXP     .*[Bb]attery:.(?!ok).*
   STATE      2016-12-28 21:00:44
   TYPE       notify
   Readings:
     2016-12-11 15:05:56   state           active
Attributes:
   group      Info
   room       Zentral


Allerdings bekomme ich bei einer Batterie LOW folgende Email Meldung:
Batteriewarnung Kinderzimmer.battery: <html>ok</html>

Das
Zitat<html>ok</html>
ist ja so nicht richtig, weder die html Tags sollten in der Email stehen, noch stimmt der Wert OK, denn der müsste ja bei der benachrichtigung LOW sein.

Was mache ich da noch falsch?

Danke
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Puschel74

if ($NAME ne "rd_Batterie" && "rd_Batterie2" && "rd_Rauchmelder" && Value("BATT_Status") ne "LOW" ) {
Was auch immer du dir davon erhoffst wird so sicher nicht funktionieren wie du es dir erwartest  ;)

$NAME ne "rd_Batterie"
ist ok und funktioniert
&& Value("BATT_Status") ne "LOW"
ist auch ok und sollte so klappen.

Aber das
&& "rd_Batterie2" && "rd_Rauchmelder"
???
Was erwartest du das hier passiert?
Nein, es wird nicht mit $NAME verglichen - wie auch, steht ja nirgends das es das soll  ;)

if (($NAME ne "rd_Batterie") && ($NAME ne "rd_Batterie2") && ($NAME ne "rd_Rauchmelder") && (Value("BATT_Status") ne "LOW" )) {
Vermutlich meintest du sowas (ich klammer gerne zuviel als zuwenig).

Wobei sich das dank Perl-regexp noch vereinfachen lässt wenn alles ausgeschlossen werden soll was mit rd_ anfängt zu
alles was nicht mit rd_ anfängt
Aber da darfst du deine liebste Suchmaschine selbst quälen  8)
So lernst du auch gleich ein bischen regexp und Perl  ;)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Tommy82

Hi Puschel,
wieso klappt mein Code nicht? wegen denn Fehlenden Klammern, bzw. wegen dem fehlenden
Zitat$NAME ne "
?

Danke für deine Hilfe, werd es testen
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Puschel74

ZitatNein, es wird nicht mit $NAME verglichen - wie auch, steht ja nirgends das es das soll
Es wird nur das verglichen was auch geschrieben ist - und nicht das was man möchte.
Ja, es scheitert an den fehlenden Vergleichen weil eben nicht angegeben wird womit "rd_Batterie2" verglichen werden soll.

Und bitte nicht Zusammenhanglos zitieren - ein $NAME ne " hilft nicht.
Ich hab dir doch die Langversion eines möglichen Versuchs gepostet:
if (($NAME ne "rd_Batterie") && ($NAME ne "rd_Batterie2") && ($NAME ne "rd_Rauchmelder") && (Value("BATT_Status") ne "LOW" )) {

Denken und lesen musst du schon selbst - hier kann dir zwar beides abgenommen werden aber ob dir das was bringt  ???
Guten Rutsch aber erstmal
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Tommy82

Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Tommy82

Hi,
muss nochmal fragen, das notify sieht so aus:
Internals:
   DEF        .*[Bb]attery:.(?!ok).* {
if (($NAME ne "rd_Batterie") && ($NAME ne "rd_Batterie2") && ($NAME ne "rd_Rauchmelder") && (Value("BATT_Status") ne "LOW" )) {
Log(3,"$NAME : Batteriewarnung $EVENT");
{ fhem ("set BATT_Status LOW") } ;
DebianMail('Batteriewarnung',$NAME.': '.$EVENT);
    }
}
   NAME       Batterie_Status_nt
   NR         273
   NTFY_ORDER 50-Batterie_Status_nt
   REGEXP     .*[Bb]attery:.(?!ok).*
   STATE      2017-03-20 15:37:03
   TYPE       notify
   Readings:
     2017-03-20 12:28:36   state           active
Attributes:
   group      Info
   room       Zentral

und ich habe ein HM-CC-RT_DN welcher battery
low
hat, allerdings habe ich keine Email bekommen.
Aber auch nirgens eine Fehlermeldung, was hab ich noch falsch gemacht?

Danke
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Wuppi68

Zitat von: Tommy82 am 29 Dezember 2016, 21:28:01
Hi, vielen Dank erst mal und guten Rutsch

liegt es daran?

&& (Value("BATT_Status") ne "LOW" )) {
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

igami

Darf ich hier auch mal das monitoring Modul vorstellen?

Batterieüberwachung

defmod Batterie_monitoring monitoring .*:battery:.low .*:battery:.ok
attr Batterie_monitoring errorReturn {return unless(@errors);;\
$_ = AttrVal($_, "alias", $_) foreach(@errors);;\
return("Bei dem Gerät \"$errors[0]\" muss die Batterie gewechselt werden.") if(int(@errors) == 1);;\
@errors = sort {lc($a) cmp lc($b)} @errors;;\
return(join("\n - ", "Die folgenden ".@errors." Geräten muss die Batterie gewechselt werden:", @errors))\
}
attr Batterie_monitoring errorWait 60*60*24*14
attr Batterie_monitoring warningReturn {return unless(@warnings);;\
$_ = AttrVal($_, "alias", $_) foreach(@warnings);;\
return("Bei dem Gerät \"$warnings[0]\" muss die Batterie demnächst gewechselt werden.") if(int(@warnings) == 1);;\
@warnings = sort {lc($a) cmp lc($b)} @warnings;;\
return(join("\n - ", "Die folgenden ".@warnings." Geräten muss die Batterie demnächst gewechselt werden:", @warnings))\
}

Sobald ein Gerät ein "battery: low" Event auslöst wird das Gerät auf die warning-Liste gesetzt und es wird ein Timer gestartet nach dessen Ablauf das Gerät von der warning- auf die error-Liste verschoben wird. Die Wartezeit ist auf 14 Tage eingestellt.
Sobald ein Gerät ein "battery: ok" Event auslöst wird das Gerät von beiden Listen gelöscht und noch laufende Timer werden gestoppt.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Tommy82

Zitat von: Wuppi68 am 20 März 2017, 16:14:28
liegt es daran?

&& (Value("BATT_Status") ne "LOW" )) {

Hi, was meinst du damit?

@igami, danke für den Tip, kannte ich noch nicht, werde ich mir aber mal ansehen.
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI