Benachrichtigung über leere Batterie mit TelegramBot

Begonnen von münster, 30 März 2017, 21:55:57

Vorheriges Thema - Nächstes Thema

münster

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

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Stefan Scholz

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

amenomade

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ß
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

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

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Stefan Scholz

#5
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

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.

Otto123

Hi,

Du musst  mindestens das @ schützen -> \@ (typisch Perl und andere :) )

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Stefan Scholz

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

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Stefan Scholz

Hallo Otto,

beides geht und ich hab die Nachricht erhalten.

Gruß Stefan

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Stefan Scholz

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  ;)

KernSani

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)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Stefan Scholz

Hallo,

ich habe das Thema nicht erstellt, somit kann ich das doch auch nicht ändern oder?

Gruß
Stefan

KernSani

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...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...