einfache Emailbenachrichtigung über FritzBox einrichten

Begonnen von Sonic, 05 Januar 2013, 00:19:45

Vorheriges Thema - Nächstes Thema

Puschel74

Hallo,

2 Abfragen nach der Temperatur klappen so nicht.
Also entweder >25 oder <15 aber nicht beides zugleich (beides zugleich kann
später mal abgefragt werden wenn die Grundlagen zu fhem sitzen).
{ und } sind mit \ zu schützen und Zeilenende sind mit ; zu markieren.
Wenn du das ganze direkt in die fhem.cfg eingibst (über Notepad++ oder ähnliches) dann
sind die Zeichen noch zu doppeln und aufpassen das sich kein unsichtbarer CR/LF einschleicht.

Umgang und Bedienung von FHEM siehe --> Einsteiger.pdf von Uli.
Da werden alle Fragen schnell geholfen ;-)

Grüße
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.

Catze

Zitat von: Sonic schrieb am So, 06 Januar 2013 09:25Ich habe mir das jetzt so gebaut. Bin ich richtig in der Annahme, mit < 25 bekomme ich eine Meldung wenn Temperatur höher als 25Grad,
und mit > 15 eine Meldung bei kleiner als 15 Grad ?


Nein,  das funktioniert genau anders herum:

1 < 2 und 3 > 2

Und wenn Du zwei Bedingungen prüfen willst würdest Du sie in Deinem Fall mit && verbinden.

Als Pseudocode:
if (1 < 2 && 2 < 3)
Wäre eine erfüllte Bedingung, weil beide Aussagen wahr sind.

Aber das einsteiger.pdf hilft hier wirklich weiter.


Catze

Finde den Button zum editieren nicht. Du willst ja prüfen ob eine Temperatur kleiner als x oder  größer als y ist. Dann benutzt man zwei senkrechte Striche: || anstelle von &&

Sonic


Hallo, ich habe gelesen und gelesen und hänge jetzt fest.

Ich habe mich zum Anfang erst mal versucht nur eine Temperatur höher 22 Grad abzufragen


define Tempalarm_WZ notify thermostat:measured-temp.* { \
if (ReadingsVal("thermostat","measured-temp",20) < 22) { \
{ use FritzBoxUtils;; FB_mail('klaus.kirstein@@online.de' (@@online.de')[/email],'Temperatur Alarm im Wohnzimmer','text 123')} \
}

im Log steht dann

2013.01.06 15:47:44 3: Tempalarm_WZ return value: Search pattern not terminated at (eval 37) line 1.


Wo ist der Fehler ?

gruss
KLAUS

Puschel74

Zitat von: Sonic schrieb am So, 06 Januar 2013 15:56Hallo, ich habe gelesen und gelesen und hänge jetzt fest.

Ich habe mich zum Anfang erst mal versucht nur eine Temperatur höher 22 Grad abzufragen


define Tempalarm_WZ notify thermostat:measured-temp.* { \
if (ReadingsVal("thermostat","measured-temp",20) < 22) { \
{ use FritzBoxUtils;; FB_mail('klaus.kirstein[email]@@online.de'[/email][/email],'Temperatur Alarm im Wohnzimmer','text 123')} \
}\
[b]}[/b]

im Log steht dann

2013.01.06 15:47:44 3: Tempalarm_WZ return value: Search pattern not terminated at (eval 37) line 1.


Wo ist der Fehler ?

gruss
KLAUS

Hallo,

Gleich viele öffnende wie schliessende Klammern.
Allerdings prüfst du auf < (kleiner) 22 und willst aber eine Temp. >(grösser) 22 abfangen ;-)
Nur bei dem Teil
{ useFritzBoxUtils ;; _____ }
weiß ich auch nicht genau ob mit oder ohne {} da ich diesen Teil in meiner Abfrage direkt an
fbmail übergebe und nicht den Umweg über die FritzBoxUtils mache.

Grüße
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.

UliM

RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Puschel74

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.

Sonic


Habe folgende Frage:
Ich habe eine 99-myUtils.pm angelegt.
Reicht es dort wie beschreiben nur use FritzBoxUtils einzutragen ?
Oder muss dort auch noch

sub fb_mail {
  my $rcpt = $_[0];
  my $subject = $_[1];
  my $text = $_[2];
  system("/bin/echo \"$text\" > /var/tmp/fhem_nachricht.txt");
  system("/sbin/mailer send -i '/var/tmp/fhem_nachricht.txt' -s \"$subject\" -t \"$rcpt\"");
  system("rm /var/tmp/fhem_nachricht.txt");
}

einkopiert werden ?
Bin ratlos :(


WIKI Beschreibung Mail Benachrichtigung einrichten:

FB 7390 (non-chroot)

Seit 10/2012 ist diese Funktion Bestandteil der fhem Standardauslieferung. Sie ist untergebracht in FritzBoxUtils.pm und heisst dort FB_mail($$$)  (Groß-Kleinschreibung beachten)
 Da der Dateiname von FritzBoxUtils.pm nicht mit 99_ beginnt, wird diese Programmdatei nicht automatisch beim Start von fhem geladen. fhem muss zum Laden dieser Programmdatei aufgefordert werden. Dazu (zB in 99_myUtils.pm) die Zeile use FritzBoxUtils; einfügen.

sub fb_mail {
  my $rcpt = $_[0];
  my $subject = $_[1];
  my $text = $_[2];
  system("/bin/echo \"$text\" > /var/tmp/fhem_nachricht.txt");
  system("/sbin/mailer send -i '/var/tmp/fhem_nachricht.txt' -s \"$subject\" -t \"$rcpt\"");
  system("rm /var/tmp/fhem_nachricht.txt");
}


Aufruf dann mittels { fb_mail('empfaenger@mail.de' ('empfaenger@mail.de'),'Subject','text 123') } bzw. { FB_mail('empfaenger@mail.de' ('empfaenger@mail.de'),'Subject','text 123') }
Hinweis: Wenn der Aufruf der Mailfunktion aus einem notify oder at erfolgt, muss das @@ in der Adresse des mailempfängers gedoppelt werden, da ein einfaches @ sonst durch den getriggerten device-namen ersetzt würde. Bei Verwendung in der fhem-Kommandozeile oder einem eigenen *Utils.pm ist diese Doppelung nicht erforderlich. Bitte bei den ersten Mails ins Log schauen, ob die Mailadresse wie gewünscht verwendet wird.


Puschel74

Hallo,

äh, ja das sollte da rein.
Sonst dürftest du aber auch keine Mail bekommen haben ??

Ich hab das so

sub
MyUtils_Initialize($$)
{
  my ($hash) = @_;
}

sub fb_mail {
  my $rcpt = $_[0];
  my $subject = $_[1];
  my $text = $_[2];
  system("echo \"$text\" > fhem_nachricht.txt");
  system("mailer send -i 'fhem_nachricht.txt' -s \"$subject\" -t \"$rcpt\"");
  system("rm fhem_nachricht.txt");
}


in meiner 99_MyUtils stehen.

Grüße
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.

Sonic

danke für die schnelle Antwort.

Bei mir steht jetzt wie im Wiki beschrieben:

use FritzBOXUtils;

sub fb_mail {
  my $rcpt = $_[0];
  my $subject = $_[1];
  my $text = $_[2];
  system("/bin/echo \"$text\" > /var/tmp/fhem_nachricht.txt");
  system("/sbin/mailer send -i '/var/tmp/fhem_nachricht.txt' -s \"$subject\" -t \"$rcpt\"");
  system("rm /var/tmp/fhem_nachricht.txt");
}



bekomme aber tatsächlich kein Mails....
:(

Puschel74

Hallo,

so

##############################################
# $Id: 99_Utils.pm 1099 2011-11-12 07:53:34Z rudolfkoenig $
package main;

use strict;
use warnings;
use POSIX;

sub
MyUtils_Initialize($$)
{
  my ($hash) = @_;
}

sub fb_mail {
  my $rcpt = $_[0];
  my $subject = $_[1];
  my $text = $_[2];
  system("echo \"$text\" > fhem_nachricht.txt");
  system("mailer send -i 'fhem_nachricht.txt' -s \"$subject\" -t \"$rcpt\"");
  system("rm fhem_nachricht.txt");
}

sehen bei mir die ersten 22 Zeilen meiner 99_MyUtils.pm aus.
Damit bekomme ich brav die Mails wenn das
define CheckEventHeute at *02:40:00 {\
  my $Eventname;;\
  my $EventHeute;;\
  $EventHeute = fhem("get events ".strftime("%m-%d",localtime()));;\
  print $EventHeute;;\
  if ($EventHeute ne "none") {\
    $Eventname = "Reminder: $EventHeute" ;;\
    fb_mail('meine.mailadresse@beimprovider.de',$Eventname);;\
  }\
}
attr CheckEventHeute room 98_Notify

abgearbeitet wird und tatsächlich ein Eintrag für den heutigen Tag in der Datei
events.holiday vorhanden ist.
Das funktioniert einwandfrei auf meiner FB7390.

Äh. Ich weiß ja nicht ob das was ausmacht aber ...
hast du AVM-Labor oder das Image von fhem.de auf deiner FB installiert?

Grüße
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.

UliM

Hi,
die Routine doppelt zu haben machts aber auch nicht besser....
Es steht doch ausdrücklich im wiki, dass die Routine ausgeliefert ist.Ein kurzer Blick in die Datei FrittzboxUtils.pm sollte das klären :)

Danach muss man nur beim Aufruf die richtige Schreibweise (Groß/Klein-Schreibung) beachten.

Oder ist das im Wiki missverständlich formuliert?

Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Sonic

Hallo Uli,
danke für deine Nachricht.

ich habe lediglich eine 99_myUtils.pm erstellt, und da steht drin use FritzBoxUtils;
Beim Restart von FHEM sehe ich im Logfile diese Meldung; reload: Error:Modul 99_myUtils deactivated:
Ich verstehe nicht was ich da falsch gemacht habe.

Ich habe heute den ganzen Tag versucht diese einfache Benachrichtigung hinzubekommen.
Mein grosser Frust:

Mein Script

define Tempalarm_WZ notify thermostat:measured-temp.* { \
if (ReadingsVal("thermostat","measured-temp",20) < 25) { fhem { \
{ use FritzBoxUtils;; FB_mail('mail@@online.de' (@@online.de'),'Subject','text 123') }

funktioniert nicht.
Ich finde einfach nicht warum.

Im Log steht diese Fehlermeldung:

2013.01.06 23:32:44 3: Tempalarm_WZ return value: "use" not allowed in expression at (eval 21) line 1, near "{ "
syntax error at (eval 21) line 1, near "{ use FritzBoxUtils"
Missing right curly or square bracket at (eval 21) line 2, at end of line
syntax error at (eval 21) line 2, at EOF

Schade, es ist einfach zu schwer......

Kannst du mir die Lösung sagen ?

gruss
KLAUS

Sonic


Auch diese Version (ohne  fhem {) funktioniert nicht.....


define Tempalarm_WZ notify thermostat:measured-temp.* { \
if (ReadingsVal("thermostat","measured-temp",20) < 25) { \
{ use FritzBoxUtils;; FB_mail('mail@@online.de' (@@online.de'),'Subject','text 123') }

UliM

Hi Klaus,
Dein Log sagt: es fehlt eine schliessende runde oder geschweifte Klammer. Das scheint auch mir so. Zähl mal die Kammerpaare. Du hast mehr öffnende als schliessende geschweifte Kalmmern.
Auch ist ein ungeschützter Zeilenumbruch drin, also eine Leerzeile ohne \

define Tempalarm_WZ notify thermostat:measured-temp.* { \
if (ReadingsVal("thermostat","measured-temp",20) < 25) { \
  FB_mail('mail@@online.de' (@@online.de'),'Subject','text 123');\
 }

könnte funktionieren, sofern das "use FritzboxUtils" in 99_myUtils.pm steht.
Wo dort der Fehler liegt, steht ebenfalls in Deinem log, direkt unter der Meldung "Error:Modul 99_myUtils deactivated", hast Du aber hier nicht gepostet, daher keine Hilfe möglich.

Darf ich vorschlagen, erstmal möglichst einfach anzufangen.
- Geht das Versenden der Mail durch Absetzen des Befehls über das Kommandofeld, siehe meine erste Antwort
- Erst wenn das geht, mit notify anfangen. Dabei erstmal alle Fehlermeldungen im log genau anschauen und beheben.
- Und weitere Komplikationen wie das Verschieben von "use FritzboxUtils" erst ganz am Schluss wenn's eh schon läuft

Aber für den Anfang: keep it simple!

Gruß,
Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.