Hi
ich möchte gerne ein email verschicken vom Synology aus, wenn die Batterie zu ende geht.
Ich hab's probiert mit dem code von der fritzbox , aber net hinbekommen, hat da jemand evtl ne idee und kann mir weiterhelfen ???
Danke im voraus...
Hallo Jumbo,
siehe
E-Mail Versand aus FHEM auf einer Qnap NAS [Beitrag #57184]
oder
http://www.fischer-net.de/hausautomation/fhem/24-fhem-benachrichtigt-bei-event.html (//www.fischer-net.de/hausautomation/fhem/24-fhem-benachrichtigt-bei-event.html)
Zitat:
Da FHEM inzwischen auf den unterschiedlichsten Systeme betrieben wird und das Versenden einer eMail sich auf diesen zum Teil stark unterscheidet, greife ich in diesem Beispiel auf den Stand-Alone Befehl SendEmail zurück. Dieser kann von der Homepage des Entwickler heruntergeladen werden und ist auf fast allen Systemen (Linux, Windows) sofort einsatzbereit. SendEmail ist komplett in Perl geschrieben und benötigt in der Regel keine weiteren Perl-Module.
Hoffe es hilft.
Gruss Billy
Guten Morgen zusammen...
Habe mal wieder ein "problemchen".
Ich wollte nach folgender Anleitung :
http://www.fischer-net.de/hausautomation/fhem/24-fhem-benachrichtigt-bei-event.html (//www.fischer-net.de/hausautomation/fhem/24-fhem-benachrichtigt-bei-event.html)
den Email versand auf einer DS einrichten.
Das Problem war es war kein "bash" vorhanden.
Also:
- ipkg installiert
- bash installiert
- versucht das script (fhem2mail) auszuführen --> nix ausser "Command not Found"
Kenn mich nicht so gut mit Linux aus, deshalb komme ich hier nicht weiter...
- sendEmail allein funktioniert einwandfrei (von der Shell)
Also dachte ich kann ich ja das Shell-command direkt aus einem Perl Script absenden.
Also Perl-script in 99_Utils erstellt und testweise ein Shell-command abgesendet.
`pwd` --> geht mit Rückantwort: /usr/syno/synoman/webman/modules/PkgManApp
qx(pwd) --> geht mit Rückantwort: /usr/syno/synoman/webman/modules/PkgManApp
Also schnell den sendEmail Befehl da reingehauen:
qx(/usr/local/FHEM/share/fhem/FHEM/sendEmail -f $from -t $rcpt -u $subject -m $text);
--> NIX passiert...
Die Variablen sind alle deklariert und werden auch eingesetzt.
Versucht die Variablen mit " und ' zu escapen, war aber leider auch erfolglos.
Hat jemand einen kleinen Tipp für mich, wie ich das jetzt zum laufen bekomme ?
Habe es jetzt geschafft per fhem2mail.sh die Mail per Shell zu versenden.
Aber aus FHEM-Commandline oder per Perl-Script geht es leider immer noch nicht.
...Ich habe irgendwie den Gedanken, das es ein "Rechte-Problem" sein könnte.
Hier eine kleine Anleitung wie ich auf einer Synology DS211 den Mail aus FHEM hinbekommen habe:
In einer Putty Konsole:
ipkg install nail
Die Datei /opt/etc/nail.rc folgendermassen bearbeitet:
Die Zeile "set hold" auskommentiert.
Folgende Zeilen am Ende hinzugefügt (domain, ich und meinpasswort entsprechend erestzen.):
set smtp=
smtp://smtp.domain.deset from="ich@domain.de (ich@domain.de)"
set smtp-auth=login
set smtp-auth-user=ich
set smtp-auth-password=meinpasswort
Test in einer Putty Konsole:
echo "First NAS mail test" | /opt/bin/nail -s "test" ich@domain.de (ich@domain.de)
/usr/local/FHEM/etc/sendmail.sh erstellen:
echo -e $2 | /opt/bin/nail -s $1 ich@domain.de (ich@domain.de)
Nicht vergessen sendmail.sh ausführbar zu machen.
In fhem Eingabefeld:
define MyMacro notify MyMacro "/usr/local/FHEM/etc/sendmail.sh "subject" "body""
Zum Testen:
trigger MyMacro
Bei Verwendung zwischen {}:
system "/usr/local/FHEM/etc/sendmail.sh "subject" "body""
In der Hoffnung es wird für Jemanden hilfreich sein,
Windsurfer.
Ich wärme diesen Thread noch einmal auf, da es der Einzige zu diesem Thema ist und ich Tage zugebracht habe um das Thema hinzubekommen.
Ausgangssituation war eine Synology DS212+ (ARM) mit DSM 4.3 und den Paketen von Fischer-Net.de (http://www.fischer-net.de/hausautomation/downloads/category/4-synology.html (http://www.fischer-net.de/hausautomation/downloads/category/4-synology.html)):
openssl-1.0.0j-mfr-1.0-syno-88f628x.spk
perl-5.16.0-mfr-1.0-syno-88f628x.spk
fhem-5.3-mfr-1.1-syno-noarch.spk
Ich hatte bereits das Perl-Paket von Synology installiert (5.8.6-0003), da dieses Voraussetzung für den Mailserver ist.
Daher musste ich das Perl-Paket von Fischer-Net zusätzlich installieren. Perl 5.16.0 liegt bei mir daher unter /usr/local/perl/bin.
ACHTUNG: Das OpenSSL Paket in Kombination mit dem Perl-Paket von Fischer-Net ist Voraussetzung für eine funktionierende SSL Verbindung zum Emailserver!
1. Installation von sendemail
- Das offizielle Release hier herunterladen http://caspian.dotconf.net/menu/Software/SendEmail/ (http://caspian.dotconf.net/menu/Software/SendEmail/)
- Lokal entpacken und den Ordner in "sendemail" umbenennen.
- Den Ordner in ein Verzeichnis auf der DS kopieren. Ich habe mich für "/usr/local" entschieden.
- Das Script noch ausführbar machen: chmod +x /usr/local/sendemail/sendEmail
2. Pfad zu Perl in sendemail anpassen
- Das Skript "sendEmail" mit einem Editor öffnen (z.B. mit "vi sendEmail")
- Die erste Zeile ersetzen mit "#!/usr/local/perl/bin/perl -w"
3. SendEmail testen
- SendEmail sollte nun mit "./sendEmail" bzw. "/usr/local/sendemail/sendEmail" ausführbar sein.
- Ohne Argumente erscheint eine Übersicht
- Da ich ein Gmail Konto für den Versand nutze habe ich folgendes zum Test eingegeben:
/usr/local/sendemail/sendEmail -f "benutzername@googlemail.com" -t "empfaenger@provider.com" -u "Test-Subject" -m "Test-Message" -q -o message-content-type=text -s smtp.googlemail.com -xu benutzername@googlemail.com -xp AnwendungsspezifischesPasswort -o tls=yes
- Bei mir kam dann eine Fehlermeldung, dass es ein Problem mit einer "invalid SSL_version" geben würde.
Update: Hier gibt es 2 Möglichkeiten:
a) Die erwähnte Datei "SSL.pm" editieren (davon rate ich ab, wenn SSL auch für FHEMWEB verwendet wird!):
- Die Datei, die in der Fehlermeldung erwähnt wird, beschreibbar machen und editieren.
- Nach "m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1" suchen und das "$" Zeichen am Ende entfernen (siehe auch http://unix.stackexchange.com/questions/53065/invalid-ssl-version-specified-at-usr-share-perl5-io-socket-ssl-pm-line-332 (http://unix.stackexchange.com/questions/53065/invalid-ssl-version-specified-at-usr-share-perl5-io-socket-ssl-pm-line-332))
- Speichern
b) Das sendEmail Skript anpassen (hat bei mir funktioniert und auch FHEMWEB war noch via SSL erreichbar):
http://forum.fhem.de/index.php/topic,17767.msg124724.html#msg124724 (http://forum.fhem.de/index.php/topic,17767.msg124724.html#msg124724)
- Wieder testen. Jetzt sollte die Email erfolgreich verschickt werden
4. Fhem2mail Script anlegen
- Am besten lokal eine neue Datei "fhem2mail" anlegen und den Text von Fischer-Net reinkopieren (http://www.fischer-net.de/hausautomation/fhem/24-fhem-benachrichtigt-bei-event.html (http://www.fischer-net.de/hausautomation/fhem/24-fhem-benachrichtigt-bei-event.html)).
- Die eigenen Email-Adressen eintragen.
- Die Parameter "-s", "-xu", "-xp" sowie "-o tls=yes" ergänzen.
- Ausserdem sollte die erste Zeile geprüft werden. Wenn ipkg und bash installiert sind, dann müsste in der ersten Zeile "#!/opt/bin/bash" stehen. Ich wollte jedoch ipkg nicht installieren, um kein Risiko mit den Start-/Stop-Skripten der Synology einzugehen. Daher habe ich mich für die Standard-Shell "sh" entschieden, die bereits vorinstalliert ist. Die erste Zeile muss dann "#!/bin/sh" lauten.
- Mein Script "fhem2mail" sieht also so aus:
#!/bin/sh
BASENAME="$(basename $0)"
DST=$1
TYP=$2
ARG=$3
FRM="<absender-email@googlemail.com>"
case $DST in
SMS)
RCP="<mail2sms-empfänger>"
;;
MAIL)
RCP="<email-empfänger>"
;;
*)
;;
esac
case $TYP in
BATTERY)
SUB="FHEM: ${ARG}"
TXT="Batterie schwach: ${ARG}"
;;
FIRE)
SUB="FHEM: FEUERALARM ${ARG}"
TXT="Feueralarm wurde ausgeloest!"
;;
GAS)
SUB="FHEM: GASALARM ${ARG}"
TXT="Gasalarm wurde ausgeloest!"
;;
MOTION)
SUB="FHEM: BEWEGUNG"
TXT="Bewegungsmelder wurde ausgeloest!"
;;
WATER)
SUB="FHEM: WASSERALARM: ${ARG}"
TXT="Wasseralarm wurde ausgeloest!"
;;
*)
SUB="FHEM: ${ARG}"
TXT="${ARG}"
;;
esac
/usr/bin/sendemail/sendEmail -f ${FRM} -t ${RCP} -u ${SUB} -m ${TXT} -q -o message-content-type=text -s smtp.googlemail.com -xu BenutzernameGoogle -xp AnwendungsspezifischesPasswortGoogle -o tls=yes
exit 0
- Das Script in ein Verzeichnis auf der DS kopieren. Ich habe mich für das bereits angelegte Verzeichnis "/usr/local/sendemail" entschieden.
- Das Script noch ausführbar machen: chmod +x /usr/local/sendemail/fhem2mail
5. Fhem2mail testen
- Im Terminal "/usr/local/sendemail/fhem2mail MAIL WATER" eingeben.
6. Notify in fhem anlegen
- Um in fhem eine Email zu verschicken wie bei Fischer-Net angegeben ein Notify erstellen (http://www.fischer-net.de/hausautomation/fhem/24-fhem-benachrichtigt-bei-event.html (http://www.fischer-net.de/hausautomation/fhem/24-fhem-benachrichtigt-bei-event.html))
- Allerdings haben bei mir die backticks nicht funktioniert:
`/usr/local/sendemail/fhem2mail MAIL WATER "Tiefgarage"`;
Daher diese Zeile ersetzen durch system("/usr/local/sendemail/fhem2mail", "MAIL", "WATER", "Tiefgarage");
Wichtig ist dabei, dass NACH jedem Kommata ein Leerzeichen kommt (siehe auch http://www.perlhowto.com/executing_external_commands (http://www.perlhowto.com/executing_external_commands)).
- Erst dann hat es bei mir aus FHEM funktioniert...
Ich hoffe, das hilft auch anderen...
Hallo!
Super Hilfe - meine Synology versendet nun auch Mails. Besten Dank dafür! Ich denke, die Anleitung sollte noch ihren Weg ins Wiki (http://www.fhemwiki.de/wiki/E-Mail_senden) finden.
Ein kleiner Hinweis jedoch - Ich bin beim kopieren des modifizierten "fhem2mail" scripts drüber gestolpert :
In den letzten Zeilen steht
esac
/usr/bin/sendemail -f ${FRM} -t ${RCP} -u ${SUB} -m ${TXT} -q -o message-content-type=text -s smtp.googlemail.com -xu BenutzernameGoogle -xp AnwendungsspezifischesPasswortGoogle -o tls=yes
exit 0
Bei zuvorgelesender Anleitung müsste dort jedoch
esac
/usr/local/sendemail/sendEmail -f ${FRM} -t ${RCP} -u ${SUB} -m ${TXT} -q -o message-content-type=text -s smtp.googlemail.com -xu BenutzernameGoogle -xp AnwendungsspezifischesPasswortGoogle -o tls=yes
exit 0
stehen. Ich für meinen Teil bin kurz drüber gestolpert :)
Grüße,
Florian
@kroemmel: Danke für den Hinweis mit dem falschen Pfad im fhem2mail script. Habe ich in meinem Post oben korrigiert.
Hallo zusammen,
ich habe sendemail zum laufen bekommen und es funktioniert auch anscheinend recht gut. Das einzige Problem das ich hab ist, dass ich keine 2 Emailempfänger angeben kann. Ich habe versucht die 2 eMail Adressen mit Komma oder Semikolon zu trennen aber nichts hat funktioniert. Es scheint als ob immer nur die zweite Adresse eine eMail bekommen würde. Hat es jemand hinbekommen eine eMail an 2 Empfänger zu senden? Ich habe die Empfänger beide in die Varable "RCP" geschrieben
Gruß
Thomas
Hey,
kurzer Blick in die sendEmail Doku :)
(http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.png)
So wie ich die verstehe, einfach Leerzeichen zwischen die Adressen, oder einfach option -cc verwenden und die zweite Mailadresse als "CC" zustellen.
Gruß,
florian