{"id":2491,"date":"2015-11-25T20:29:37","date_gmt":"2015-11-25T18:29:37","guid":{"rendered":"http:\/\/www.hjgode.de\/wp\/?p=2491"},"modified":"2015-11-26T11:57:31","modified_gmt":"2015-11-26T09:57:31","slug":"fhem-batteriewarnung-per-email","status":"publish","type":"post","link":"http:\/\/www.hjgode.de\/wp\/2015\/11\/25\/fhem-batteriewarnung-per-email\/","title":{"rendered":"FHEM Batteriewarnung per eMail"},"content":{"rendered":"<p>Nach langem hin und her und dem Lesen von vielen unvollst\u00e4ndigen und falschen Posts (manche User k\u00f6nnen noch nicht mal richtig Texte in Posts kopieren oder schreiben irgendwas aus dem Kopf) habe ich meine eMail Warnungen f\u00fcr Batterien jetzt fertig. Ach ja, an alle fhem Forum Poster die Variablen benutzen: wenn es denn keine global definierten Variablen sind muss IMMER ein &#8216;my&#8217; davor! Wenn Du als User also irgenwo fhem Perl Code mit einer Funktion siehst und die Variablen haben kein my davor, dann wird der wahrscheinlich so nicht funktionieren.<\/p>\n<p>Im Grunde ist es ganz einfach. Man darf halt nur nicht alles ungepr\u00fcft \u00fcbernehmen. Antworten zu Hilferufen (von Anf\u00e4ngern) im FHEM Forum sollten auch nicht mit &#8220;Lern erst mal Perl&#8221; benatwortet werden. Zudem kommt, dass die Syntax der Anweisungen mal FHEM und mal Perl ist. Dann noch der Unterschied, ob man direkt in die fhem.cfg schreibt oder \u00fcber die Web Oberfl\u00e4che Kommandos absetzt oder DEF Eingaben vornimmt.<\/p>\n<p>Lange Rede kurzer Sinn. Hier die entsprechenden fhem.cfg Zeilen Original aus meinem laufenden fhem Server:<!--more--><\/p>\n<pre>define n_batt_chk notify .*:[Bb]attery:.* {if($EVENT !~ m\/ok\/i) {\\\r\n my $AttComment=AttrVal($NAME,\"comment\",0);;\\\r\n #Log 3, \"comment ist $AttComment\";;\\\r\n if ($AttComment ne 1) {\\\r\n my $DNAME = AttrVal($NAME,\"alias\",$NAME);;\\\r\n Log 3, 'about to use DebianMail';;\\\r\n { DebianMailNoAttach('receiver@gmail.com','FHEM Batteriewarnung', \"$DNAME -&gt; $EVENT\") };;\\\r\n Log 3,\"Bat $DNAME $EVENT\";;\\\r\n fhem \"attr $NAME comment 1\";;\\\r\n }\\\r\n }elsif($EVENT =~ m\/ok\/i) {\\\r\n if (AttrVal(\"$NAME\",\"comment\",0) eq 1){\\\r\n fhem(\"setreading $NAME lastBatChange \".localtime);;\\\r\n fhem(\"deleteattr $NAME comment\")\\\r\n }\\\r\n }\\\r\n }\r\n attr n_batt_chk room Hideki<\/pre>\n<p>und hier wie es in der Weboberfl\u00e4che aussieht:<\/p>\n<pre>.*:[Bb]attery:.* {if($EVENT !~ m\/ok\/i) {\r\n   my $AttComment=AttrVal($NAME,\"comment\",0);\r\n   #Log 3, \"comment ist $AttComment\";\r\n   if ($AttComment ne 1) {\r\n      my $DNAME = AttrVal($NAME,\"alias\",$NAME);\r\n      Log 3, 'about to use DebianMail';\r\n      { DebianMailNoAttach('receiver@gmail.com','FHEM Batteriewarnung', \"$DNAME -&gt; $EVENT\") };\r\n      Log 3,\"Bat $DNAME $EVENT\";\r\n      fhem \"attr $NAME comment 1\";\r\n   }\r\n}elsif($EVENT =~ m\/ok\/i) {\r\n    if (AttrVal(\"$NAME\",\"comment\",0) eq 1){\r\n       fhem(\"setreading $NAME lastBatChange \".localtime);\r\n       fhem(\"deleteattr $NAME comment\")\r\n    }\r\n  }\r\n}<\/pre>\n<p>Anmerkungen: Das @ in der eMail Adresse muss nicht escaped oder sonst\u00a0 was werden, wenn es in EINFACHEN Anf\u00fchrungszeichen steht. Daf\u00fcr muss aber der Verweis auf fhem Variablen (hier $DNAME und $EVENT) in doppelten Anf\u00fchrunszeichen stehen, damit fhem diese auswertet.<\/p>\n<p>Und als Bild:<\/p>\n<p><a href=\"http:\/\/www.hjgode.de\/wp\/wp-content\/uploads\/2015\/11\/Selection_074.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2496\" src=\"http:\/\/www.hjgode.de\/wp\/wp-content\/uploads\/2015\/11\/Selection_074-300x217.png\" alt=\"Selection_074\" width=\"300\" height=\"217\" srcset=\"http:\/\/www.hjgode.de\/wp\/wp-content\/uploads\/2015\/11\/Selection_074-300x217.png 300w, http:\/\/www.hjgode.de\/wp\/wp-content\/uploads\/2015\/11\/Selection_074-150x108.png 150w, http:\/\/www.hjgode.de\/wp\/wp-content\/uploads\/2015\/11\/Selection_074.png 673w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Dazu geh\u00f6rt dann noch der Inhalt der \/opt\/fhem\/FHEM\/99_myUtils.pm bezgl DebianMail und DebianMailNoAttach:<\/p>\n<pre>######## DebianMail\u00a0 Mail auf dem RPi versenden ############ \r\nsub \r\nDebianMail \r\n{ \r\n\u00a0my $rcpt = shift;\r\n\u00a0my $subject = shift; \r\n\u00a0my $text = shift;\r\n\u00a0my $attach = shift; \r\n\u00a0my $ret = \"\";\r\n\u00a0my $sender = \"sender\\@gmail.com\"; \r\n\u00a0my $konto = \"sender\\@gmail.com\";\r\n\u00a0my $passwrd = \"PASSWORD\";\r\n\u00a0my $provider = \"smtp.gmail.com:587\";\r\n\u00a0Log 1, \"sendEmail RCP: $rcpt\";\r\n\u00a0Log 1, \"sendEmail Subject: $subject\";\r\n\u00a0Log 1, \"sendEmail Text: $text\";\r\n\u00a0Log 1, \"sendEmail Anhang: $attach\";;\r\n\u00a0\r\n\u00a0$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a '$attach' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=auto -o message-charset=utf-8);\r\n\u00a0$ret =~ s,[\\r\\n]*,,g;\u00a0\u00a0\u00a0 # remove CR from return-string \r\n\u00a0Log 1, \"sendEmail returned: $ret\"; \r\n}\r\n\r\nsub \r\nDebianMailNoAttach \r\n{ \r\n\u00a0my $rcpt = shift;\r\n\u00a0my $subject = shift; \r\n\u00a0my $text = shift;\r\n\u00a0my $ret = \"\";\r\n\u00a0my $sender = \"sender\\@gmail.com\"; \r\n\u00a0my $konto = \"sender\\@gmail.com\";\r\n\u00a0my $passwrd = \"PASSWORD\";\r\n\u00a0my $provider = \"smtp.gmail.com:587\";\r\n\u00a0Log 1, \"sendEmail RCP: $rcpt\";\r\n\u00a0Log 1, \"sendEmail Subject: $subject\";\r\n\u00a0Log 1, \"sendEmail Text: $text\";\r\n\u00a0\r\n\u00a0$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=auto -o message-charset=utf-8);\r\n\u00a0$ret =~ s,[\\r\\n]*,,g;\u00a0\u00a0\u00a0 # remove CR from return-string \r\n\u00a0Log 1, \"sendEmail returned: $ret\"; \r\n}<\/pre>\n<p>In der Weboberfl\u00e4che in der Input Box kann man den Trigger und den Mailversand pr\u00fcfen:<\/p>\n<pre>trigger th_3 battery:low<\/pre>\n<p>und<\/p>\n<pre>{DebianMail ('sender@gmail.com','receiver@gmail.com','FHEM Battery','Batterie xy ist schwach','');;}<\/pre>\n<p>oder besser, da wir eh kein Attachement schicken wollen:<\/p>\n<pre>{DebianMailNoAttach ('sender@gmail.com','receiver@gmail.com','FHEM Battery','Batterie xy ist schwach');;}<\/pre>\n<p>sollte beides nicht funktionieren, sendemail setze ich als Installiert voraus, kann man auf der Linux Kommandzeile testen:<\/p>\n<pre>sendEmail -f 'sender@gmail.com' -t 'receiver@gmail.com' -u '$FHEM Battery' -m 'Batterie xy ist schwach' -s 'smtp.gmail.com:587' -xu 'sender@gmail.com' -xp 'PASSWORD' -o tls=auto -o message-charset=utf-8<\/pre>\n<p>Ich hoffe Copy\/Paste funktioniert f\u00fcr euch mit diesen Vorlagen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nach langem hin und her und dem Lesen von vielen unvollst\u00e4ndigen und falschen Posts (manche User k\u00f6nnen noch nicht mal richtig Texte in Posts kopieren oder schreiben irgendwas aus dem Kopf) habe ich meine eMail Warnungen f\u00fcr Batterien jetzt fertig. Ach ja, an alle fhem Forum Poster die Variablen benutzen: wenn es denn keine global [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[542,411,3],"tags":[555,112,554,543],"class_list":["post-2491","post","type-post","status-publish","format-standard","hentry","category-fhem","category-linux","category-programming","tag-batterie","tag-battery","tag-email","tag-fhem"],"_links":{"self":[{"href":"http:\/\/www.hjgode.de\/wp\/wp-json\/wp\/v2\/posts\/2491"}],"collection":[{"href":"http:\/\/www.hjgode.de\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.hjgode.de\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.hjgode.de\/wp\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/www.hjgode.de\/wp\/wp-json\/wp\/v2\/comments?post=2491"}],"version-history":[{"count":10,"href":"http:\/\/www.hjgode.de\/wp\/wp-json\/wp\/v2\/posts\/2491\/revisions"}],"predecessor-version":[{"id":2502,"href":"http:\/\/www.hjgode.de\/wp\/wp-json\/wp\/v2\/posts\/2491\/revisions\/2502"}],"wp:attachment":[{"href":"http:\/\/www.hjgode.de\/wp\/wp-json\/wp\/v2\/media?parent=2491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.hjgode.de\/wp\/wp-json\/wp\/v2\/categories?post=2491"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.hjgode.de\/wp\/wp-json\/wp\/v2\/tags?post=2491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}