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 die neue SYSMON Funktion ShowValuesText auf den Fhem Server mit Raspberry Pi für Pushover und E-Mail genutzt werden?

Das coole Tool SYSMON im Fhem Server kann nun auch seit ein paar Tagen seine Informationen als Text mit der Funktion SYSMON_ShowValuesText wiedergeben. Diese Infos können dann wie hier als HTML Tabelle auch per E-Mail oder Pushover versendet werden:

Bildschirmfoto 2014-03-04 um 18.59.03

Ich habe es in meiner täglichen Pushover Benachrichtigung eingefügt, so bekomme ich immer um 12 Uhr diese Meldung direkt auf mein Handy bzw. iPad:
Bildschirmfoto 2014-03-04 um 18.57.50

Hier der entsprechende Code, für die fhem.cfg:

#
# Fhem: Um 12 Uhr täglich den rPi Systemstatus versenden
#
define pushSystmonStatus at *12:00:00 {\
my $sysinfo=SYSMON_ShowValuesText('sysmon', ('date:Datum', 'cpu_temp:CPU Temperatur: °C', 'uptime_text:System up time:', 'fhemuptime_text:FHEM up time', 'ram:RAM', 'idletime_text:idle time', 'stat_cpu_text:CPU'));;\
system ("curl -s -F 'token=-dein Token-' -F 'user=-dein User' -F 'message=$sysinfo' -F 'title=Fhem Systemstatus' http://api.pushover.net/1/messages.json");;\
}

Wenn man alle Parameter haben will, kann man auch einfach nur sysmon verwenden:
my $sysinfo=SYSMON_ShowValuesText('sysmon')
Für die Pushover Benachrichtigung wird aber nicht alles angezeigt, da die max. Anzahl an Zeichen bei 512 liegt. Aber für E-Mail oder andere Zwecke gehts.

Noch weitere Ideen?

Wie können E-Mails vom Raspberry Pi (rPi) inklusive Anhang mit mutt (nSMPT) versendet werden?

E-Mails vom Raspberry Pi aus versende geht wie schon für den WR703N beschrieben. Ist halt auch Linux.

Also hier noch einmal kurz zusammengefasst, die Installation für den Raspberry Pi mit zusätzlichem Beispiel für das versenden einer E-Mail via mutt inkl. Dateianhang. Vorraussetzung ist eine Raspberry 2014-09-09-wheezy-raspbian.zip installation.

Dann das System updaten und einige Tools installieren mit

Es sind dann folgende Versionen nach ein paar Minuten installiert:

Dann die drei Dateien wie in beschrieben anpassen:

Wenn alles konfiguriert ist, können E-Mails mit Anhang über mutt wie folgt versendet werden:

Nach Enter öffnet sich ein Eingabefeld für die Empfänger E-Mail (to). Bestätigen mit Enter oder anpassen. Dann kommt das Betreff (subject). Weiter mit Enter oder anpassen. Dann öffnet sich der default Editor (nano 2.2.6 oder vi) dort kann der Text der E-Mail eingegeben werden. Speichern (ctrl und O) und Beenden (ctrl und X). Es öffnet sich das mutt Fenster und y zum versenden der E-Mail mit Anhang drücken.

Schon wird die E-Mail versendet.

Oder ohne den mutt Dialog

versendet die E-Mail sofort nach Enter.

So lief es zumindestens auf einen Raspbeery Pi mit einem älteren Debian. Bei dieser aktuellen Version bekomme ich immer diesen Fehler mit mutt:

*** glibc detected *** sendmail: munmap_chunk(): invalid pointer: 0x0141153f ***

Da habe ich auch noch keine Lösung für gefunden. [UPDATE 1.11.2014] Habe den Fehler jetzt gefunden. In der Datei /etc/ssmtp/smtp.conf hatte ich unter rewriteDomain den Username hinzugefügt (rewriteDomain=username@wenzlaff.de) richtig ist aber nur der Domain Name z.B. rewriteDomain=wenzlaff.de. Damit läuft es nun super. [/UPDATE]

Habe es deshalb wie hier beschrieben mit einem nSMTP Client versucht. D.h. erstellen von /etc/msmtprc und (optional) .msmtprc.

Damit läuft das versenden von E-Mails erst einmal.

Hier die Config-Dateien für Strato:

Eine globale /etc/msmtprc Datei, wird gelesen wenn keine im Userverzeichnis vorhanden ist.

Die .msmtprc überschreibt die globale /etc/msmtprc Datei wenn vorhanden (optional).

Wenn die .msmtprc vorhanden ist, muss sie dem User gehören und darf nur für den User schreib und lesbar sein. Ein ls-la muss so aussehen

-rw------- 1 pi pi 479 Oct 13 22:53 .msmtprc

Also evl. noch anpassen:

Testen des E-Mail versand mit:

Ergebnis Auszug:

Habt ihr noch andere Alternativen oder ein Lösung warum mutt nich läuft? Dann hier als Kommentar posten.

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.

Wie können unter OpenWrt E-Mails versendet werden?

Das geht mit dem msmtp Client (msmtp version 1.4.27).

Dazu den msmtp Client und mutt (Version 1.5.21 (2010-09-15)) auch gleich mit installieren.

Die Konfigurationsdatei vi /etc/msmtprc wie folgt anlegen und die entsprechenden smtp Daten eingeben:

Testen ob alles richtig konfiguriert wurde geht mit dem absetzen folgender Kommandos auf der Konsole:

Oder mit cat mit Betreff und Absender:

Dann testen ob die E-Mail angekommen ist.

Für das Versenden aus dem Fhem Script reicht das noch nicht. Wir brauchen noch ssmtp

Diese zwei Dateien anpassen /etc/ssmtp/ssmtp.conf

Und die /etc/ssmtp/revaliases

Check auf der Konsole mit:

dann Enter und die Nachricht der E-Mail eingeben.

Zum Schluss Strg+D drücken. Dann wird die E-Mail versendet.

Wie können WordPress-Blog Einträge via E-Mail geschrieben und veröffentlicht werden?

Um Beiträge in WordPress via E-Mail zu veröffentlichen, musst du ein geheimes E-Mail-Konto mit POP3-Zugang einrichten. Jede E-Mail, die an diese Adresse geschickt wird, wird auf deiner Seite veröffentlicht, halt deshalb diese Adresse strengstens geheim.

Also zum Beispiel eine E-Mail: geheim-121334341@beispiel.de einrichten und in WordPress unter “Einstellungen – Schreiben” eintragen. Dann noch den Mailserver (z.B. pop3.beispiel.de), Login-Name (das ist die eingerichtete E-Mail), Passwort und die Kategorie in der der Eintrag erscheinen soll auswählen.
Dann auf “Änderungen übernehmen” klicken.

Jetzt kann an diese geheime E-Mail Adresse ein Blog-Eintrag gesendet werden. Er wird aber nur veröffentlicht, wenn nach dem senden, die folgende URL im Browser aufgerufen wird z.B. blog.beispiel.de/wp-admin/post-new.php.

WordPress quittiert diesen Aufruf mit z.B.:

Der Autor ist senderf@beispiel.de

Autor: 2

Vergebener Titel: Testeintrag

Mission erfüllt.

Der Beitrag ist nun unter dem Menü “Seiten” zu finden und wird nur dann auch gleichzeitig veröffentlicht, wenn der Sender als Benutzer eingetragen ist.
Also evl. noch unter “Benutzer – neuen Benutzer” einen Benutzer mit der E-Mail-Adresse des Absender anlegen.

Weitere Möglichkeiten sind auf WordPress (engl.) zu finden.