Hallo
Ich würde gerne bei Verpassten Anrufen die Rufnummer per EMail bekommen.
Bisher habe ich per
define alarm notify FB_Monitor_Home:missed_call:.* {DebianMail(xxxx@@xxxx.com','Verpasster Anruf','Verpaster Anruf');;}
Damit erhalte ich schon mal die Mail - aber wie sende ich darin die Rufnummer?
stenny
Was ist da mit der Variable $number?
http://fhem.de/commandref_DE.html#FB_CALLMONITOR
"missed_call: $number - Dieses Event wird nur generiert, wenn ein eingehender Anruf nicht beantwortet wird. Sofern der Name dazu bekannt ist, wird dieser ebenfalls mit angezeigt."
Die Variable $number gibt es so nicht. Das ist nur ein Platzhalter in der Commandref damit man weis, das dort dann die Nummer stehen wird.
@stenny73:
In notifys gibt es sogenannte EVENT-Variablen. Mit denen kann man bestimmte Teile eines Events oder das ganze Event als Variable verwenden.
Bsp:
Im Eventmonitor erscheint:
2013-11-30 15:42:14.314 FB_CALLMONITOR FB_Monitor_Home missed_call: 01122334455 (Anrufername)
Dann stehen bei einem Notify folgende Variablen zur Verfügung:
$EVENT = missed_call: 01122334455 (Anrufername)
$EVTPART1 = missed_call:
$EVTPART2 = 01122334455
$EVTPART3 = (Anrufername)
D.h. du kannst folgendes notify verwenden:
define alarm notify FB_Monitor_Home:missed_call:.* {DebianMail(xxxx@@xxxx.com','Verpasster Anruf von $EVTPART2 $EVTPART3','Verpasster Anruf von $EVTPART2 $EVTPART3');;}
siehe dazu auch die Commandref zu notify, da steht das alles drin.
Viele Grüße
Markus
Oder ganz anders:
http://forum.fhem.de/index.php/topic,16370.msg111208.html#msg111208
Danke erstmal für die Antworten.
Bin im Moment nicht vor Ort um es zu Probieren... Erst wieder ab nächster Woche in Deutschland... - dafür wollte ich ja das ja nutzen.....
Hallo,
ich möchte mich hier nochmal einklinken, da mein Problem ganz ähnlich ist. Einzig $EVENT wird bei meiner Email nicht ausgewertet, d.h. es steht dann '$EVENT' in der Email statt dessen Inhalt.
Der Code:
define Mythz.alarm2 notify .*fault.* { if (ReadingsVal("last10errors","number_of_faults",0) > 0 ) { DebianMail('MYNAME@@t-online.de','Tecalor Mythz Alarm','ErrorLog hat ausgeloest: $EVENT');; } }
Ich habe halt noch zusätzlich die if-Bedingung drin, da nur bei einer Anzahl Fehler > 0 gemailt werde soll.
Und: ja, ich bin Anfänger ;) . Habe schon mit Wikis und der commandref gearbeitet, aber dort sind halt immer nur einfacher gestrickte Fälle genannt.
Gruß und Besten Dank für Tipps und Ratschläge
Willy
Hi Willy,
nimm mal den $EVENT aus den Hochkommas raus, also so:
define Mythz.alarm2 notify .*fault.* { if (ReadingsVal("last10errors","number_of_faults",0) > 0 ) { DebianMail('MYNAME@@t-online.de','Tecalor Mythz Alarm','ErrorLog hat ausgeloest:' $EVENT);; } }
Das sollte dann gehen.
Gruß
Frank
leider nicht:
Mythz.alarm return value: syntax error at (eval 3084) line 1, near "'ErrorLog hat ausgeloest:' $EVENT"
So geht's:
define Mythz.alarm2 notify .*fault.* { if (ReadingsVal("last10errors","number_of_faults",0) > 0 ) { DebianMail('MYNAME@t-online.de','Tecalor Mythz Alarm','ErrorLog hat ausgeloest:'. $EVENT);; } }
Geht ebenfalls nicht:
define Mythz.alarm notify .*fault.* { if (ReadingsVal("last10errors","number_of_faults",0) < 1 ) { \
{ DebianMail('xxxxx@t-online.de', 'Tecalor Mythz Alarm', 'ErrorLog hat ausgeloest. "$EVENT"')};; \
} \
}
führt zu Email-Inhalt: ErrorLog hat ausgeloest. "$EVENT"
Wenn ich "$EVENT" außerhalb der ' ' setze kommt wieder der Syntax error.
Was mich ebenfalls wundert (vielleicht ist es ja ein Hinweis auf die Ursache): man liest überall, man müsse bei der Emailadresse das @ verdoppeln, also @@. Ich darf das aber nicht, sonst sagt mir der smtp-Server, die Adresse sei nicht gültig.
Siehe meine Änderung oben. Der Punkt fehlt. Einfache Anführungszeichen waren schon korrekt. Mein Fehler.
Wenn $EVENT verwendet wird, muss @ nicht verdoppelt werden. Siehe commandref.
Ja, mit Punkt hat es jetzt geklappt :) . Ich bin nun etwas konfus: was hat der Punkt hier für eine Funktion?
Er verknüpft die beiden Strings
'beliebiger Text'
und
$EVENT
Ein Verknüpfungszeichen also.
o.k., schon wieder was gelernt. In allen mir geläufigen Sprachen (das sind allerdings nicht so viele) wird dafür das & verwendet.