Click here for English version
Wie versende ich mit FHEM eine EMail?
- Installation von Debian Paketen
- Template in FHEM erstellen
- Auslöser definieren
- 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“

2. Dann klicken wir auf ‚myUtilsTemplate.pm‘

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

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.

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",'');; }

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.

How do I send an Email with FHEM?
- Install appropriate packages in FHEM
- Define a template in FHEM
- Set triggers to send emails
- 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“.

2. Then we click on ‚myUtilsTemplate.pm‘

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

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.

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",'');; }

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.

Eine Antwort zu „FHEM ereignisabhängige Emails senden”.
Super erklärt, danke!