Hallo,
Ich würde gerne eine Nachricht per Telegramm bekommen falls die Batterie in meinem Homematic Thermometer mal leer wird.
Ich habe es mit folgen notify versucht:
"define Thermometer_Benachrichtigung_Batterie notify Thermometer_au.low set teleBot message Beim Thermometer ist die Batterie leer!"
"define Thermometer_Benachrichtigung_Batterie notify Thermometer_au:battery low set teleBot message Beim Thermometer ist die Batterie leer!"
"define Thermometer_Benachrichtigung_Batterie notify Thermometer_au: low set teleBot message Beim Thermometer ist die Batterie leer!"
Und das ist der Eintrag aus dem event monitor:
2017-03-30 22:00:15 CUL_HM Thermometer_au battery: ok
2017-03-30 22:00:15 CUL_HM Thermometer_au humidity: 70
2017-03-30 22:00:15 CUL_HM Thermometer_au T: 13.8 H: 70
2017-03-30 22:00:15 CUL_HM Thermometer_au temperature: 13.8
Ich habe es mit diesen trigger versucht auslösen: "trigger Thermometer_au battery: low"
Aber wie gesagt leider kein Erfolg....Wie muss das notify aussehen damit ich die Benachrichtigung bekomme?
Gruß Volker
Hallo Volker,
bei mir hat bisher das hier funktioniert:
https://wiki.fhem.de/wiki/Batterie%C3%BCberwachung
Gruß Otto
Hallo ihr fhem-Profis,
ich würde mich gerne mal hier an dieses Thema hängen, da ich das gleiche Anliegen habe.
Bisher wurden meine Benachrichtigungen, wie von Otto verlinkt, mittels Debian Mail gesendet. Soweit geht das ja ganz gut, nur treten bei mir des öffteren ziemliche Zeit Verzögerungen auf, weswegen ich gern auf TelegramBot umsteigen möchte.
Das manuelle Senden einer Nachricht über TelegramBot funktioniert, nur bekomme ich diese Batteriwarnungen nicht hin.
Habe jetzt schon so oft dieses Notify geändert und ausprobiert, dass ich gar keinen Beispiel Code mehr eistellen kann. Die Fehlermeldungen sind auch immer extrem lang gewesen.
Das Attribut defaultPeer habe ich nicht gesetzt, da ich verschiedene Nachrichten an verschiedene Empfänger senden wollte. Oder geht das nicht?
Entschuldigt die umständliche Fragerei, aber irgendwie fehlt mir der Ansatz. Momentan würde mir die Batteriewarnung erst einmal reichen.
Gruß
Stefan
Zitat von: Stefan 69 am 09 Mai 2017, 17:10:42
Das Attribut defaultPeer habe ich nicht gesetzt, da ich verschiedene Nachrichten an verschiedene Empfänger senden wollte. Oder geht das nicht?
Das sollte m.A. kein Problem sein. Ich rate eher ein Problem bei deiner Regex im Notify. Da Du aber kaum Information geliefert hast, ist es schwierig zu helfen. Du kannst aber im EventMonitor deine Regexp testen, indem du auf dem Filter klicks, "Notify-Type: deviceName:event" auswählst, und dann deine Regexp einträgst. Dann schau mal, ob die Events kommen.
Gruß
Ahja : mit defaultPeer eingestellt, kannst Du trotzdem einen Nachricht an bestimmten Empfänger senden. defaultPeer ist nur da, um den Peer im set msg zu sparen: set <device> msg text
Danke für die Antwort. Sorry für die fehlenden Infos, war eben so verwirrt, dass ich erst mal irgend was anderes machen musste.
Also die Definition mit dem DebianMail schaut so aus und geht auch:.*:[Bb]attery:.* { if($EVENT !~ m/ok/) {
{ DebianMail('xxxxxxxxx@gmail.com',
'FHEM Batteriewarnung', $NAME.': '.$EVENT)};
Log 3, "$NAME: Batteriewarnung $EVENT";
}
}
Das will ich irgendwie zu TelegramBot um fummeln. Dazu habe ich zB dieses Thema hier gefunden und versucht anzuwenden, aber haufenweise Fehlermeldungen erhalten:
https://forum.fhem.de/index.php?topic=54069.msg456893#msg456893 (https://forum.fhem.de/index.php?topic=54069.msg456893#msg456893)
Daraus ist dieser Code entstanden....
.*:[Bb]attery.* { if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}
...und ich bekomme Zeilenweise Fehlermeldung womit ich nix anfangen kann.
2017.05.09 18:31:19 1: PERL WARNING: Possible unintended interpolation of @Stefan in string at (eval 223802) line 1.
2017.05.09 18:31:19 3: eval: my $EVTPART0='battery:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='ok';my $EVENT='battery: ok';my $NAME='Thermostat_Stellantrieb_EG_Wohn_Terasse';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}
2017.05.09 18:31:19 1: ERROR evaluating my $EVTPART0='battery:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='ok';my $EVENT='battery: ok';my $NAME='Thermostat_Stellantrieb_EG_Wohn_Terasse';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}: Global symbol "@Stefan" requires explicit package name at (eval 223802) line 1.
2017.05.09 18:31:19 3: Bat_Meldung return value: Global symbol "@Stefan" requires explicit package name at (eval 223802) line 1.
2017.05.09 18:31:19 1: PERL WARNING: Possible unintended interpolation of @Stefan in string at (eval 223803) line 1.
2017.05.09 18:31:19 3: eval: my $EVTPART0='batteryLevel:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='2.9';my $EVENT='batteryLevel: 2.9';my $NAME='Thermostat_Stellantrieb_EG_Wohn_Terasse';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}
2017.05.09 18:31:19 1: ERROR evaluating my $EVTPART0='batteryLevel:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='2.9';my $EVENT='batteryLevel: 2.9';my $NAME='Thermostat_Stellantrieb_EG_Wohn_Terasse';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}: Global symbol "@Stefan" requires explicit package name at (eval 223803) line 1.
2017.05.09 18:31:19 3: Bat_Meldung return value: Global symbol "@Stefan" requires explicit package name at (eval 223803) line 1.
2017.05.09 18:31:22 1: PERL WARNING: Possible unintended interpolation of @Stefan in string at (eval 223804) line 1.
2017.05.09 18:31:22 3: eval: my $EVTPART0='battery:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='low';my $EVENT='battery: low';my $NAME='TK_Haus';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}
2017.05.09 18:31:22 1: ERROR evaluating my $EVTPART0='battery:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='low';my $EVENT='battery: low';my $NAME='TK_Haus';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}: Global symbol "@Stefan" requires explicit package name at (eval 223804) line 1.
2017.05.09 18:31:22 3: Bat_Meldung return value: Global symbol "@Stefan" requires explicit package name at (eval 223804) line 1.
2017.05.09 18:31:25 1: PERL WARNING: Possible unintended interpolation of @Stefan in string at (eval 223815) line 1.
2017.05.09 18:31:25 3: eval: my $EVTPART0='battery:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='low';my $EVENT='battery: low';my $NAME='TK_Haus';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}
2017.05.09 18:31:25 1: ERROR evaluating my $EVTPART0='battery:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='low';my $EVENT='battery: low';my $NAME='TK_Haus';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}: Global symbol "@Stefan" requires explicit package name at (eval 223815) line 1.
2017.05.09 18:31:25 3: Bat_Meldung return value: Global symbol "@Stefan" requires explicit package name at (eval 223815) line 1.
2017.05.09 18:31:48 1: PERL WARNING: Possible unintended interpolation of @Stefan in string at (eval 223823) line 1.
2017.05.09 18:31:48 3: eval: my $EVTPART0='battery:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='ok';my $EVENT='battery: ok';my $NAME='BM_aussen01';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}
2017.05.09 18:31:48 1: ERROR evaluating my $EVTPART0='battery:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='ok';my $EVENT='battery: ok';my $NAME='BM_aussen01';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}: Global symbol "@Stefan" requires explicit package name at (eval 223823) line 1.
2017.05.09 18:31:48 3: Bat_Meldung return value: Global symbol "@Stefan" requires explicit package name at (eval 223823) line 1.
2017.05.09 18:32:22 1: PERL WARNING: Possible unintended interpolation of @Stefan in string at (eval 223845) line 1.
2017.05.09 18:32:22 3: eval: my $EVTPART0='battery:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='ok';my $EVENT='battery: ok';my $NAME='Thermostat_Stellantrieb_KG_Buero';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}
2017.05.09 18:32:22 1: ERROR evaluating my $EVTPART0='battery:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='ok';my $EVENT='battery: ok';my $NAME='Thermostat_Stellantrieb_KG_Buero';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}: Global symbol "@Stefan" requires explicit package name at (eval 223845) line 1.
2017.05.09 18:32:22 3: Bat_Meldung return value: Global symbol "@Stefan" requires explicit package name at (eval 223845) line 1.
2017.05.09 18:32:22 1: PERL WARNING: Possible unintended interpolation of @Stefan in string at (eval 223846) line 1.
2017.05.09 18:32:22 3: eval: my $EVTPART0='batteryLevel:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='2.4';my $EVENT='batteryLevel: 2.4';my $NAME='Thermostat_Stellantrieb_KG_Buero';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}
2017.05.09 18:32:22 1: ERROR evaluating my $EVTPART0='batteryLevel:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='2.4';my $EVENT='batteryLevel: 2.4';my $NAME='Thermostat_Stellantrieb_KG_Buero';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}: Global symbol "@Stefan" requires explicit package name at (eval 223846) line 1.
2017.05.09 18:32:22 3: Bat_Meldung return value: Global symbol "@Stefan" requires explicit package name at (eval 223846) line 1.
2017.05.09 18:32:54 1: PERL WARNING: Possible unintended interpolation of @Stefan in string at (eval 223850) line 1.
2017.05.09 18:32:54 3: eval: my $EVTPART0='battery:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='ok';my $EVENT='battery: ok';my $NAME='Thermostat_Stellantrieb_EG_Wohn_Erker';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}
2017.05.09 18:32:54 1: ERROR evaluating my $EVTPART0='battery:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='ok';my $EVENT='battery: ok';my $NAME='Thermostat_Stellantrieb_EG_Wohn_Erker';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}: Global symbol "@Stefan" requires explicit package name at (eval 223850) line 1.
2017.05.09 18:32:54 3: Bat_Meldung return value: Global symbol "@Stefan" requires explicit package name at (eval 223850) line 1.
2017.05.09 18:32:54 1: PERL WARNING: Possible unintended interpolation of @Stefan in string at (eval 223851) line 1.
2017.05.09 18:32:54 3: eval: my $EVTPART0='batteryLevel:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='3.1';my $EVENT='batteryLevel: 3.1';my $NAME='Thermostat_Stellantrieb_EG_Wohn_Erker';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}
2017.05.09 18:32:54 1: ERROR evaluating my $EVTPART0='batteryLevel:';my $TYPE='CUL_HM';my $SELF='Bat_Meldung';my $EVTPART1='3.1';my $EVENT='batteryLevel: 3.1';my $NAME='Thermostat_Stellantrieb_EG_Wohn_Erker';{ if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message @Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}: Global symbol "@Stefan" requires explicit package name at (eval 223851) line 1.
2017.05.09 18:32:54 3: Bat_Meldung return value: Global symbol "@Stefan" requires explicit package name at (eval 223851) line 1.
Finde einfach keinen Ansatzpunkt.
Danke,
Gruß Stefan
Edit: Zum Glück ist ja gerade eine Batterie eines Türkontaktes alle, somit kann ich das testen.
Edit2: Habe gerade bemerkt, dass es egal ist welchen Aktor ich betätige, diese komischen Meldungen ballern mir das Log zu. Aber nur wenn der Code so ist wie oben, mit dem DebianMail Code ist alles ok.
Hi,
Du musst mindestens das @ schützen -> \@ (typisch Perl und andere :) )
Gruß Otto
Hi Otto,
nun passiert gar nix mehr. Also noch nicht mal ein Logeintrag ???
.*:[Bb]attery.* { if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message \@Stefan $NAME : Batteriewarnung $EVENT") ;; Log 3, "$NAME : Batteriewarnung $EVENT";;}}
Gruß Stefan
Hallo Stefan,
das teste bitte Schritt für Schritt in der FHEM Kommandozeile:
set NachrichtenBot message @Stefan Batteriewarnung
{ fhem ("set NachrichtenBot message \@Stefan : Batteriewarnung ")}
Gruß Otto
Hallo Otto,
beides geht und ich hab die Nachricht erhalten.
Gruß Stefan
Hallo Stefan,
damit ist der Syntax richtig :)
Dann wird wohl derzeit kein Battery Event erzeugt, deswegen passiert nix ?
Allerdings wenn dein Code unten aus der DEF ist: da gehört nur ein Semikolon hin. Zwei sind es nur beim Schreiben in der Commandozeile. Die letzen beiden m.E. sind sowie überflüssig.
Gruß Otto
Hallo Otto,
das war es ;D
Somit haben wir nun einen funktionierenden Code für die Batteriewarnung über TelegramBot:
.*:[Bb]attery:.* { if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message \@Stefan $NAME : Batteriewarnung $EVENT") ; Log 3, "$NAME : Batteriewarnung $EVENT"}}
Otto, ich danke dir mal wieder für deine Unterstützung:
Gruß
Stefan
Edit: Habe tatsächlich gerade einen Türkontakt, der diese Warnung sendet ;)
Zitat von: Stefan 69 am 11 Mai 2017, 14:15:23
Somit haben wir nun einen funktionierenden Code für die Batteriewarnung über TelegramBot:
Setzt du das Thema dann noch auf [Gelöst] (Subject des ersten Posts ändern)
Hallo,
ich habe das Thema nicht erstellt, somit kann ich das doch auch nicht ändern oder?
Gruß
Stefan
Zitat von: Stefan 69 am 11 Mai 2017, 21:03:14
Hallo,
ich habe das Thema nicht erstellt, somit kann ich das doch auch nicht ändern oder?
Gruß
Stefan
Ups... nein, das muss natürlich der ursprüngliche Themenersteller machen... und natürlich auch nur, wenn sein Problem auch gelöst ist...
Hallo zusammen,
erstmal sorry das ich so einen alten Thread ausgrabe, aber genau vor dem Problem stehe ich auch grad.
Ich hab mir erstmal eine Übersicht aller Geräte mit einer readingGroup gemacht ( https://wiki.fhem.de/wiki/ReadingsGroup#Auswahl_.C3.BCber_Reading-Namen.2C_Status_als_Symbol_dargestellt )
Zusätzlich auch den Wikieintrag zur Batterieüberwachung durchgelesen ( https://wiki.fhem.de/wiki/Batterie%C3%BCberwachung ), womit ich erstmal selbst rumprobierte und letzendlich auf diesen Thread hier gestoßen bin.
Hier schon mal ein großes Danke an euch alle:
Zitat von: Stefan 69 am 11 Mai 2017, 14:15:23
Somit haben wir nun einen funktionierenden Code für die Batteriewarnung über TelegramBot:
.*:[Bb]attery:.* { if ($EVENT !~ m/ok/) { fhem ("set NachrichtenBot message \@Stefan $NAME : Batteriewarnung $EVENT") ; Log 3, "$NAME : Batteriewarnung $EVENT"}}
Funktioniert super bei mir, bis auf eine Ausnahme.
Ich habe zu meinen HM noch zwei HUE Devices, einen Schalter und einen Bewegungsmelder, die derzeitig eine "100" als Batteristatus haben.
Jetzt bekomme ich durch obiges Notify in kleineren Abständen (1-4 Minuten) immer wieder eine Nachricht von den Devices, weil deren Status ja "nicht" "ok" sind.
Hier wollte ich euch fragen ob man die "IF" Clausel noch entsprechend mit einem "ODER unter 20" abändern kann, dass auch Zahlenwerte beachtet werden.
Oder ich baue mir 2, wie sähe denn die Syntax aus um nach allen HM Devices zu suchen mit dem Zusatz Batterie?
Geht so etwas?
HM_.*:battery
Hi,
beachte bitte: Das ist keine IF (https://fhem.de/commandref_DE.html#IF)sondern eine if (http://perldoc.perl.org/perlsyn.html#Compound-Statements)Klausel :)
Klar kannst Du das regEx ändern, schau mal bitte hier (http://perldoc.perl.org/perlre.html)und probiere etwas. Ich habe das aus dem Stand leider nicht drauf.
Gruß Otto
Super, vielen Dank für dein Input.
Ich glaube ich kann mir schon was passendes unter der FHEM Oberfläche, also mit IF bzw DOIF basteln. :)
define check at *02:00:00 DOIF (["HM_:battery"] ne "ok") (set telegram message $NAME : Batteriewarnung $EVENT)
define check at *02:00:00 DOIF (["HUE:battery"] < 20 ) (set telegram message $NAME : Batteriewarnung $EVENT)
Ich probier mal ein wenig.
Frohe Feiertage wünsche ich schon mal. ;D
Hier https://forum.fhem.de/index.php/topic,81333.msg734593.html#msg734593 findest du einen Ansatz für alle Batterie-Devices, falls du eine Wiederholung brauchst.
Hallo zusammen,
hat jemand einen Tip für mich, warum mein AT nicht die Devices mit dieser Syntax bekommt?
*06:00:00 if ((["dimmer.*:battery"] < 20 ) {fhem("set telegram message \@Group $NAME : Batteriewarnung $EVENT")})
Fehlermeldung im Log:
unknown Device: "dimmer.*
Danke für euer Feedback
Hi Patator,
das Problem hat nicht wirklich was mit dem Thread zu tun, daher wäre es besser gewesen, ein neues Thema aufzumachen. Zudem, bitte immer ein ,,list" des devices in code tags.
Zuguterletzt: Du verwendest DOIF -Syntax im AT, das funktioniert nicht...