FHEM ereignisabhängige Emails senden

ereignisabhängige Emails mit FHEM

Click here for English version

Wie versende ich mit FHEM eine EMail?

  1. Installation von Debian Paketen
  2. Template in FHEM erstellen
  3. Auslöser definieren
  4. Testen!

Debian Pakete

Zunächst installieren wir auf unserem Raspberry PI einige Pakete. Dazu loggen wir uns auf dem Rechner ein und starten eine Shell. Für das Release wheezy und jessie gilt:

sudo apt-get update
sudo apt-get install sendEmail libio-socket-ssl-perl libnet-ssleay-perl perl

Sollten das Paket sendEmail nicht gefunden werden, dann haben wir das Release Stretch oder neuer und geben

sudo apt-get update
sudo apt-get install sendemail libio-socket-ssl-perl libnet-ssleay-perl perl

ein.

Konfiguration FHEM

In FHEM müssen wir eine kleine Routine anlegen, bevor wir mit der Definition der Ereignisse beginnen können. Dazu legen wir uns die Datei 99_myUtils.pm in FHEM an:

1. Unten links klicken wir in FHEM auf den Menüpunkt „Edit files“

edit_files

2. Dann klicken wir auf ‚myUtilsTemplate.pm‘

myutilstemplate

3. Wir speichern es mit „Save as“ unter dem Namen „99_myUtils.pm“

save 99_myutils

4. „Save as“ klicken nicht vergessen.

Nun können wir auf die Datei 99_myUtils klicken und editieren. Wir fügen den folgenden Code ein und ändern unsere Email Adresse, unser Passwort und unseren Provider. Ich habe für FHEM einen eigenen Mailaccount bei einem Provider angelegt.

package main;
 use strict;
 use warnings;
 use POSIX;
 sub
 myUtils_Initialize($)
 {
   my ($hash) = @_;
 }
 1;
######## DebianMail  Mail auf dem RPi versenden ############
sub
DebianMail
{
 my $rcpt = shift;
 my $subject = shift;
 my $text = shift;
 my $attach = shift;
 my $ret = "";
 my $sender = "Absender\@account.de";
 my $konto = "KontoName\@account.de";
 my $passwrd = "DeinGeheimesPasswort";
 my $provider = "smtp.provider.de:587";
 Log 1, "sendEmail RCP: $rcpt";
 Log 1, "sendEmail Subject: $subject";
 Log 1, "sendEmail Text: $text";
 Log 1, "sendEmail Anhang: $attach";

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

Vergesst nicht, den Code mit Euren Account Details zu personalisieren. Nun können wir Mails für beliebige Auslöser versenden.

99_myutils

Definion der Auslöser

Wir legen ein Notify in FHEM an, d.h. ein Element, welches eine Aktion auslöst, wenn zum Beispiel der Rauchmelder auslöst. Wir geben dazu in das Kommandofeld von FHEM folgendes ein, wobei wir den Empfänger dementsprechend setzen:

define nfty_fire notify Smoke_LR:on.* { DebianMail('<strong>Empfaengeradresse@account.de</strong>','Rauchmelder',"Feueralarm $NAME $EVENT",'');; }
def_nfty _fire

Wenn wir mehrere Rauchmelder haben, können wir mehrere Schalter angeben und diese mit „|“ trennen: [

Smoke_LR:on.*|Smoke_LR1:on.*|Smoke_LR2:on.*.

Test

Der Test ist sehr einfach. Mit einem Druck auf den Knopf des Rauchmelders oder in FHEM einem Klick auf „on“ lösen wir das Notify aus.

Der Empfänger sollte dann eine Mail erhalten haben. Außerdem ist die Aktion im Logfile dokumentiert.

Email bei Alarm Auslösung

English Version

How do I send an Email with FHEM?

  1. Install appropriate packages in FHEM
  2. Define a template in FHEM
  3. Set triggers to send emails
  4. Test it!

Debian packages

First we install a few packages on our Raspberry PI. We log into our server and start a shell. For the debian releases wheezy and jessie we install

sudo apt-get update
sudo apt-get install sendEmail libio-socket-ssl-perl libnet-ssleay-perl perl

If the package sendEmail wasn’t found we probably got hte release Stretch or newer and enter

sudo apt-get update
sudo apt-get install sendemail libio-socket-ssl-perl libnet-ssleay-perl perl

FHEM Setup

In FHEM we need to create a small routine before we can start defining the events. To do this, we create the file 99_myUtils.pm in FHEM:

1. On the bottom left we click in FHEM on the menu item „Edit files“.

edit_files

2. Then we click on ‚myUtilsTemplate.pm‘

myutilstemplate

3. Now we save it with „Save as“ and the file name „99_myUtils.pm“

save 99_myutils

4. Do not forget clicking on „Save as“.

Now we can click on the file 99_myUtils and edit it. We insert the following code and change our email address, our password and our provider. I have created a mail account for FHEM at a provider.

package main;
 use strict;
 use warnings;
 use POSIX;
 sub
 myUtils_Initialize($)
 {
   my ($hash) = @_;
 }
 1;
######## DebianMail  Mail auf dem RPi versenden ############
sub
DebianMail
{
 my $rcpt = shift;
 my $subject = shift;
 my $text = shift;
 my $attach = shift;
 my $ret = "";
<strong> my $sender = "Absender\@account.de";
 my $konto = "KontoName\@account.de";
 my $passwrd = "DeinGeheimesPasswort";
 my $provider = "smtp.provider.de:587";
 Log 1, "sendEmail RCP: $rcpt";
 Log 1, "sendEmail Subject: $subject";
 Log 1, "sendEmail Text: $text";
 Log 1, "sendEmail Anhang: $attach";

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

Don’t forget to personalize the code with your account details. Now we can send mails for any trigger.

99_myutils

Definition of the triggers

We create a Notify in FHEM, i.e. an element that triggers an action when, for example, the smoke detector triggers. To do this, we enter the following in the command field of FHEM and set the receiver accordingly:

define nfty_fire notify Smoke_LR:on.* { DebianMail('<strong>Empfaengeradresse@account.de</strong>','Rauchmelder',"Feueralarm $NAME $EVENT",'');; }
def_nfty _fire

If we have several smoke detectors, we can specify several switches and separate them with „|“:

Smoke_LR:on.*|Smoke_LR1:on.*|Smoke_LR2:on.*.

Testing

The test is very simple. By pressing the button of the smoke detector or in FHEM by clicking on „on“ we trigger the Notify.

The recipient should have received a mail. The action is also documented in the log file.

Email bei Alarm Auslösung

Eine Antwort zu „FHEM ereignisabhängige Emails senden”.

  1. Avatar von Chq
    Chq

    Super erklärt, danke!