Raspberry Pi: Karotz liest über Fhem das Betreff eintreffende E-Mails (IMAP) vor

Es währe doch toll, wenn man bei eintreffender E-Mail benachrichtigt würde oder?

So braucht man nicht immer die 148 Mails checken, und kann die Welt retten.

In diesem Projekt, beschreibe ich wie das Betreff jeder eintreffende E-Mail per Sprachausgabe ausgegeben wird. Dazu wird der Karotz benutzt, der nicht nur für Sprachausgabe nützlich ist.

Zuerst das System aktuallisieren und die nötigen cpan Packages installieren:

Folgende Zeile in der Datei fhem.cfg ergänzen:

z.B. der IMAP von Strato:

define mailcheck mailcheck imap.strato.de e-mail-von@wenzlaff.de passwort

Nach einem restart von Fhem steht die letzte Betreffzeilen der E-Mails als Reading bereit. So sieht es dann in Fhem aus:
Bildschirmfoto 2014-10-12 um 15.46.32

Jetzt fehlt noch den Subject als userReadings zu setze und eine notify Funktion in der fhem.cfg die das Subject liest und an eine Funktion übergibt. Diese Funktion macht die Sprachausgabe des Karotz und wurde an anderer stelle hier im Blog beschrieben.

Nach einem reread von Fhem, wird jetzt jedesmal das Betreff von Karotz angesagt.

Mögliche Fehler:

1. Wenn dieser Fehler im Log steht, wurden die obigen cpan Packages nicht oder nicht richtig installiert:

2. Wenn der MIME::Parser nicht installiert ist, wird aus diesem Betreff:

mit üüüüääää dann

Bildschirmfoto 2014-10-11 um 19.02.27

Wenn der MIME Parser aber installiert wurde, und Fhem restartet wurde, klappt es auch mit den Umlauten:
Bildschirmfoto 2014-10-11 um 20.22.32

3. Fhem aktualisieren.
Habe festgestellt, das Fhem mit einem update nicht mehr die Scripte autom. aktualisiert. Mit einem update force hat es nach ein paar Fehlermeldungen wieder geklappt. Es waren an einigen Dateien nicht mehr die nötigen Userrechte gesetzt.

Wie kann mit Fhem auf OpenWrt eine E-Mail versendet werden beim öffnen oder schließen einer Tür?

Nachdem das E-Mail System wie in beschrieben eingerichtet wurde, kann eine E-Mail versendet werden wenn eine Tür auf oder zu geht.

Dazu in der fhem.cfg diese Benachrichtigungen einrichten:

# Reagiert auf Event:
# 2013-09-11_17:22:53 wz_Tuerschalter contact: open (to HMLAN_1)
define terrassenTuerOffenEMail notify wz_Tuerschalter:contact.*open.*HMLAN_1.* \
{\
fb_mail('emali@@test.de','Fhem: Terrassen Tuer offen!','Die Terrassen Tuer ist auf.') \
}
# Reagiert auf Event:
# 2013-09-11_17:22:53 wz_Tuerschalter contact: closed (to HMLAN_1)
define terrassenTuerZuEMail notify wz_Tuerschalter:contact.*closed.*HMLAN_1.* \
{\
fb_mail('email@@test.de','Fhem: Terrassen Tuer zu!', 'Die Terrassen Tuer ist zu.') \
}

Dabei beachten das das @ zweimal angegeben werden muss.
Wichtig auch, das alles in einfachen Hochkomma stehen muss.

Testen kann man dies auch mit dem Trigger Befehl, wenn man den auszulösenden Event in das Eingabefeld vom Web-Fhem eingibt:

trigger wz_Tuerschalter contact: open (to HMLAN_1)

Dann muss auch eine E-Mail versendet werden.

Folgende Datei erstellen /fhem/FHEM/99_myTWUtil.pm und E-Mail Adresse anpassen.

#
#   99_myTWUtils.pm Version 1.0 vom 11.09.2013
#
#   Dieses Perl Script (99_myTWUtils.pm) enthaelt alle Tools die fuer Fhem noch benoetigt werden.
#   1. fb_mail Methode zum versenden von E-Mails
#
#   (C) 2013 Thomas Wenzlaff http://www.wenzlaff.de
#
#   This program is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program. If not, see {http://www.gnu.org/licenses/}.

package main;
use strict;
use warnings;
use POSIX;

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

sub
fb_mail
{
 my $empfaenger = $_[0];
 my $subject = $_[1];
 my $text = $_[2];
 Log 5, ">>> fb_mail Eintrag: Empfaenger: $empfaenger Betreff: $subject Text: $text";
 Log 5, ">>> ---------------------------------------------------------------------------------";

 system("/bin/echo -e \"To: $empfaenger\nFrom: $empfaenger\nReply-to: $empfaenger\nSubject: $subject\n\n$text\" | ssmtp \"$empfaenger\"");

 return "OK, E-Mail an $empfaenger versendet! Betr.: $subject Inhalt: $text";
}

1;

Ein „reload 99_myTWUtil.pm“ und ein „rereadcfg“ absetzen oder ein „reboot“ ausführen und schon wird eine E-Mail nach dem öffnen und schließen der Tür gesendet.

Weitere Links:
FhemWiki zum Thema E-Mail senden.
Perl infos.