FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: forum-merlin am 05 Januar 2016, 00:32:34

Titel: Bitte um Hilfe bei sendEmail für Feuchtesensor und Probleme mit $EVENT im notify
Beitrag von: forum-merlin am 05 Januar 2016, 00:32:34
Hallo Leute,

ich habe gerade etwas zu kämpfen und bräuchte mal bitte Eure Hilfe.
Ich habe nun doch endlich mal das Update auf 5.7 gewagt und nun habe ich das Problem mit den % und @ Themen
Ich hatte mir einige Notifys angelegt die ich jetzt etwas anpassen muss. Vorher fuktionierte es zwar, aber eben jetzt nicht mehr.
Auch meine 99_myUtils ist da ein wenig betroffen wie es scheint.

Ich habe den Wikibeitrag mal umgesetzt wo es drum geht von meinem Raspi Emails zu versenden.
Das war dieser Wiki Beitrag:
http://www.fhemwiki.de/wiki/E-Mail_senden

Und so schaut meine 99_myUtils aus

############### fhemMail  Mail auf dem RPi versenden ############
sub fhemMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $ret = "";
my $sender = "fhem\@meinedomain.de";
my $konto = "fhem\@meinedomain.de";
my $passwrd = "password";
my $provider = "smtp.mailprovider.de:587";
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";

$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);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}


Von Putty aus schaffe ich es dann auch Mails zu versenden.

Dann habe ich wegen eines Feuchtigkeitssensors noch diesen Teil eines anderen Wikis beachtet:
http://www.fhemwiki.de/wiki/HM-Sec-WDS_Funk-Wassermelder#Automatische_E-Mail_bei_Feuchte.2FN.C3.A4sse

Da steht dann im Wiki weiter unten:
Mittels folgendem Eintrag in der fhem.cfg wird bei jedem Statuswechsel des HM-Sec-WDS auf damp bzw. wet von FHEM eine E-Mail an eine bestimmte E-Mail-Adresse gesendet und ein entsprechender Eintrag in der fhem.logerzeugt:


define n_wasser_chk notify CUL_HM_HM_SEC_WDS_xxxxxx:contact.* { \
if("%" !~ m/dry/) {\
  {fhemMail('Max.Mustermann@@Mustermann.de','FHEM Wasseralarm','@ %')};;\
  Log 3, "@: Wassermeldung %";;\
}\
}



also habe ich mir so ein Notify angelegt:
sieht jetzt so aus (weil ich schon versucht habe es auf $NAME und $EVENT oder EVTPART1 umzustellen):

KE.WasserAlarm:contact.* {
  if("$EVTPART1" !~ m/dry/) {
  {fhemMail('meineEmail@googlemail.com','FHEM_Wasseralarm ', '"$NAME" - "$EVENT"')};
  Log 3, "$NAME: Wassermeldung $EVTPART1";
}
}


Wenn ich das nun triggere bekomme ich eine Mail.
Soweit so gut, aber ich sehe keine infos zu $NAME und $EVENT sondern ich bekomme das hier als Email Body Text:

"$NAME" - "$EVENT"


Ich habe schon ewig viel probiert.
Ich bekomme es aber einfach ned hin.
Wenn ich die ' nach dem Komma hinter 'FHEM_Wasseralarm', weglasse gehts auch ned, und jenachdem was ich da anpasse kommt sogar irgendwann keine Mail mehr.
Ich bin echt verzweifelt.

WAS muss ich WO genau ändern, damit ich eine Mail bekomme die mit dann den Devicenamen ausgibt, und den Status was derzeit anliegt.
Also Beispielsweise:

KE.WasserAlarm - damp
KE.WasserAlarm - wet

Danke Euch!


der Merlin
Titel: Antw:Bitte um Hilfe bei sendEmail für Feuchtesensor und Probleme mit $EVENT im notify
Beitrag von: Baumi am 05 Januar 2016, 00:56:23
Dein Fehler liegt in dieser Zeile:

{fhemMail('meineEmail@googlemail.com','FHEM_Wasseralarm ', '"$NAME" - "$EVENT"')};

Die Variablen stehen in einfachen Anführungszeichen, werden also von Perl nicht ausgewertet. (Dass innerhalb dessen dann wieder doppelte sind, ist wurscht.)

Das hier müsste gehen:

{fhemMail('meineEmail@googlemail.com','FHEM_Wasseralarm ', "$NAME - $EVENT")};
Titel: Antw:Bitte um Hilfe bei sendEmail für Feuchtesensor und Probleme mit $EVENT im notify
Beitrag von: forum-merlin am 05 Januar 2016, 01:39:14
Perfekt! Danke Dir!

Jetzt schaut es so aus:

KE.WasserAlarm:contact.* {
if("$EVTPART1" !~ m/dry/) {
  {fhemMail('meineEmail@googlemail.com','FHEM Wasseralarm ', "$NAME - $EVTPART1")};
  Log 3, "$NAME: Wassermeldung $EVTPART1";
}
}


Das Emailergebnis:

KE.WasserAlarm - damp


Das war es was ich wollte!




Weil es grad so gut läuft... ;-) (Unter dem Motto kleiner Finger ganze Hand)

Wie bekomme ich Temperaturwerte und Feuchtigkeitswerte in einem WhatsApp-Text übergeben wenn die Temperatur unter 16 Grad fällt, oder die Luftfeuchte über 70% ist ?
Ich habe diese Readings vom Sensor:

battery            ok                   2016-01-05 01:17:50
humidity          56                   2016-01-05 01:17:50
state               T: 20.8 H: 56   2016-01-05 01:16:50
temperature   20.8                 2016-01-05 01:17:50

Wie baue ich mir da ein Notify für?

Grundsätzlich weiss ich wie ich WA versende. Aber ich weiss nicht wie ich Readings als Text-Teil übergeben kann.


hier ein funktionierender WhatsApp Notify wenn das Licht im Keller ein- oder ausgeschaltet wird:

KE.Licht { if ("$EVENT" ne "off") { fhem ("set WhatsApp.neu send 49176xxxxxxxx Keller Licht wurde EINgeschaltet!") } else { fhem ("set WhatsApp.neu send 49176xxxxxxxx Keller Licht wurde AUSgeschaltet!")}};


Danke

Gruß

Merlin
Titel: Antw:Bitte um Hilfe bei sendEmail für Feuchtesensor und Probleme mit $EVENT im notify
Beitrag von: Baumi am 05 Januar 2016, 08:36:49
ZitatAber ich weiss nicht wie ich Readings als Text-Teil übergeben kann.

Da antworte ich mal nach dem Motto "Hilfe zur Selbsthilfe".  ;)

Guck Dir mal hier (http://fhem.de/commandref_DE.html#perl) die Beschreibung Funktion ReadingsVal an und google ein paar Beispiele, in denen sie verwendet wird.
Titel: Antw:Bitte um Hilfe bei sendEmail für Feuchtesensor und Probleme mit $EVENT im notify
Beitrag von: Baumi am 05 Januar 2016, 09:47:23
Ach ja: Der Einsteiger-Guide (http://fhem.de/Heimautomatisierung-mit-fhem.pdf) hat auch ausführliche Infos zur Verwendung von ReadingsVal. Sehr lesenswert.