Mail senden, wenn FHEM nicht auf Fritz oder Win läuft

1,524 views
Skip to first unread message

Mitch

unread,
Aug 20, 2012, 5:54:18 AM8/20/12
to fhem-...@googlegroups.com
Hallo Zusammen,

ich möchte mir ein Mail senden lassen, wenn bestimmte Dinge passieren.

Mein fhem läuft auf einem Linux (Ubuntu) Rechner.
Im Wiki habe ich nur eine Lösung für die Fritz oder Windows Rechner gefunden.

Geht soetwas auch auf Linux?

Vielen Dank!

Gerhard Pfeffer

unread,
Aug 20, 2012, 6:21:20 AM8/20/12
to fhem-...@googlegroups.com

Hej Mitch,

klar geht sowas... ;-)
Und ich will das gerade auch fuer mich umsetzen. Bin jetzt aber noch ein paar Tage auf Urlaub, aber danach werd ich entsprechende Loesung auch ins Wiki stellen.

Greetz,
   Gerhard

--
To unsubscribe from this group, send email to
fhem-users+...@googlegroups.com

hgo

unread,
Aug 20, 2012, 8:12:28 AM8/20/12
to fhem-...@googlegroups.com
Hi Mitch,
ich habe es wie folgt umgesetzt, wobei ich Ubuntu-Server 10.04.3 verwende:

nach "googeln" folgende Seite gefunden: http://netz10.de/2009/09/20/ohne-mailserver-emails-per-shell-script-versenden-smtp-over-tls/
danach vorgegegangen und die fehlenden Pakete installiert
da ich mit includes arbeite, eine neue Mailversand.cfg erstellt mit folgendem Inhalt:

# Mailversand.cfg
# Benachrichtigung/Alarm bei Eintreten von festgelegten Ereignissen
# mittels des Programmes sendEmail und von fhem2mail

#######################################################################################
# Definiton eines Dummys und des FS20 TFK als Aktor Glasbruchmelder                   
#######################################################################################
define ALARM.dum dummy
set    ALARM.dum off

# FS20 TFK
define Glasbruchmelder FS20 acc8 00
attr Glasbruchmelder alias FS20 TFK
attr Glasbruchmelder model FS20tfk
define FileLog_Glasbruchmelder FileLog /var/log/fhem/Glasbruchmelder-%Y-%m-%d.log Glasbruchmelder

# FS20 TFK notify
define AD.not.01 notify Glasbruchmelder:.*on.* {\
  if (ReadingsVal("ALARM.dum","state","off") eq "off") {\
    fhem("set ALARM.dum on");;\
    fhem("define at.ALARM.dum.off at +00:30:00 set ALARM.dum off");;\
    `/usr/local/bin/fhem2mail SMS ALARM "Glasbruchmelder"`;;\
    Log 3, "FS20 @ Alarm ausgeloest, Nachricht gesendet via eMail";;\
  }\
}
#########################################################################################
# Batterieüberwachung aller FHT-Geräte                                                  #
#########################################################################################

define n_batt_chk notify .*:[Bb]attery.* { if("%" !~ m/ok/) {\
 `/usr/local/bin/fhem2mail MAIL BATTERY " :-( "`;;\
  Log 3, "@: Batteriewarnung %, Nachricht gesendet via eMail";;\
  }\
}
#########################################################################################

eine fhem2mail Datei im Verzeichnis /usr/local/bin erstellt mit folgendem Inhalt:

#!/bin/bash
# Mailversandaufruf bei definierten Ereignissen aus FHEM
BASENAME="$(basename $0)"
 
DST=$1
TYP=$2
ARG=$3
FRM="em...@hoster.de"                   ----> hier Deine Mailadresse einsetzen
SERVER="Mailserver"                      ----> hier Mailserver z.B. smtp1und1.de
USERNAME="Benutzername"           ----> Benutzername Mailkonto
PASSWORT="12345678"                  ----> Passwort
 
case $DST in
  SMS)
    RCP="Handy...@t-mobile-sms.de"   ----> wenn eine SMS gesendet werden soll und Du bei t-mobile Kunde bist
    ;;
  MAIL)
    RCP="ma...@hoster.de"                            ----> Mailadresse, an die Nachricht gesendet werden soll
    ;;
  *)
    ;;
esac
 
case $TYP in
  BATTERY)
    SUB="BATTERY: ${ARG}"
    TXT="Batterie schwach: ${ARG}"
    ;;
  FIRE)
    SUB="FEUERALARM ${ARG}"
    TXT="Feueralarm wurde ausgeloest!"
    ;;
  GAS)
    SUB="GASALARM ${ARG}"
    TXT="Gasalarm wurde ausgeloest!"
    ;;
  MOTION)
    SUB="BEWEGUNG"
    TXT="Bewegungsmelder wurde ausgeloest!"
    ;;
  ALARM)
    SUB="ALARM wurde ausgelöst: ${ARG}"
    TXT="FS20 TFK als Glasbruchmelder wurde ausgeloest!"
    ;;
  *)
    SUB="FHEM: ${ARG}"
    TXT="${ARG}"
    ;;
esac
 
/usr/local/bin/sendEmail -f ${FRM} -s ${SERVER} -xu ${USERNAME} -xp ${PASSWORT} -t ${RCP} -u ${SUB} -m ${TXT} -q -o message-content-type=text
exit 0

Je nach Aufruf durch die Mailversand.cfg wird nun die entsperchende Nachricht gesendet. Die Scropte habe hier aus der Gruppe "geklaut" und auf mein System angepasst

Gruss
HGO

jude

unread,
Aug 20, 2012, 9:17:03 AM8/20/12
to fhem-...@googlegroups.com
Hi Mitch, 

dafür habe ich mir eine 99_myUtils.pm angelegt und eine separate Funktion geschrieben. Diese mailt dir dann entsprechendes. Vielleicht kannst du sie ja gebrauchen:

Das Mail muss auf ubuntu wie oben beschrieben installiert sein. 

Die Kleinigkeit, welche dieser Mailversand macht: Prefix des Betreffs ist "FHEM" und der Suffix ist des Betreffs ist das aktuelle Datum. 


Der Aufruf ist:
     send_mail( 'Mailadresse und Achtung mit dem @', 'Betreff', 'Text'); 

und die komplette 99_myUtils.pm:

##############################################
# $Id: 99_myUtils.pm von JDE 15.08.2012
package main;

use strict;
use warnings;
use POSIX;

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


## meine Mailfunktion
sub send_mail {
  my $rcpt = $_[0];
  my $subject = $_[1];
  my $text = $_[2];
  my $zeit = strftime "%Y.%m.%d %H:%M:%S", localtime(time);

  system("/bin/echo \"$text\" | /usr/bin/mail -s \"FHEM: $subject  -$zeit\" \"$rcpt\" ");

}



1;

Martin Fischer

unread,
Aug 20, 2012, 9:45:16 AM8/20/12
to fhem-...@googlegroups.com
hallo mitch,

Am Montag, 20. August 2012, 05:12:28 schrieb hgo:
> [...]
> ich habe es wie folgt umgesetzt, wobei ich Ubuntu-Server 10.04.3 verwende:
> [...]
> # Mailversand.cfg
> # Benachrichtigung/Alarm bei Eintreten von festgelegten Ereignissen
> # mittels des Programmes sendEmail und von fhem2mail

und hier findest du das "original-script" inkl. fhem-definitionen:

http://www.fischer-net.de/hausautomation/fhem/24-fhem-benachrichtigt-bei-event.html

martin

hgo

unread,
Aug 20, 2012, 1:44:22 PM8/20/12
to fhem-...@googlegroups.com
ja, jetzt weiss ich auch wieder, wo ich es gefunden hatte.
Gruss
HGO

Mitch

unread,
Aug 21, 2012, 3:23:26 AM8/21/12
to fhem-...@googlegroups.com
Danke euch schonmal, ich werde das heute nachmittag testen und berichten.

Mitch

unread,
Aug 21, 2012, 6:51:48 AM8/21/12
to fhem-...@googlegroups.com
So, habe mal ein bischen gespielt und das in meine cfg eingebaut:

define n_HaustuerAuf notify Haustuer2 {\
  if (ReadingsVal("Haustuer2", "state", "") eq "on") {\
    '/usr/local/bin/fhem2mail MAIL HAUSTUERAUF" ! "';;\
    Log 3, "@: Haustuer_auf %, Nachricht gesendet via eMail";;\
  }\
  else {\
    '/usr/local/bin/fhem2mail MAIL HAUSTUERZU" ! "';;\
    Log 3, "@: Haustuer_zu %, Nachricht gesendet via eMail";;\
  }\
}

Leider bekomme ich aber kein Mail??
Im Log stehen die Einträge drinne, also die Befehle stimmen wohl.

Kann ich von Hand mal das Mail testen?

hgo

unread,
Aug 21, 2012, 7:43:15 AM8/21/12
to fhem-...@googlegroups.com
hallo mitch,
du hast aber die datei fhem2mail im verzeichnis /usr/local/bin/ angelegt ?
und dort einen Sub mit den Bezeichnung HAUSTUERAUF + ZU ?

hgo

unread,
Aug 21, 2012, 7:54:18 AM8/21/12
to fhem-...@googlegroups.com
Hallo Mitch,
ich noch mal zur Frage ob ein Test von Hand möglich ist, ja
ich habe es so getestet: mit z.B. putty eine Verbindung zum Rechner auf dem die Linux-Anwendung läuft hergestellt;
in die Befehlszeile dann eingegeben die Anweisung aus der cfg in Deinem Fall      --->         /usr/local/bin/fhem2mail MAIL HAUSTUERAUF" ! "
wenn alles oK, müsste kurz darauf in Deinem Maileingang die Nachricht sein

Mitch

unread,
Aug 21, 2012, 8:20:08 AM8/21/12
to fhem-...@googlegroups.com
So, danke für den Tip.
Habe mich gerade auf die Linuxbüchse verbunden und /usr/local/bin/fhem2mail MAIL HAUSTUERAUF eingegeben.

Erst gab es ein Rechteproblem und jetzt kommt folgende Meldung:
bash: /usr/local/bin/fhem2mail: /bin/bash^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden

Hier nochmal der Ausschnitt aus der cfg:

define n_HaustuerAuf notify Haustuer2 {\
  if (ReadingsVal("Haustuer2", "state", "") eq "on") {\
    '/usr/local/bin/fhem2mail MAIL HAUSTUERAUF" ! "';;\
    Log 3, "@: Haustuer_auf %, Nachricht gesendet via eMail";;\
  }\
  else {\
    '/usr/local/bin/fhem2mail MAIL HAUSTUERZU" ! "';;\
    Log 3, "@: Haustuer_zu %, Nachricht gesendet via eMail";;\
  }\
}


Wobei ich mir hier nicht sciher bin über die Hochkomme vor /usr/local/...
Ist das ein ' oder ein ´oder ein ` ?

Hier zur Sicherheit meine fhem2mail:
#!/bin/bash
# Mailversandaufruf bei definierten Ereignissen aus FHEM
BASENAME="$(basename $0)"
 
DST=$1
TYP=$2
ARG=$3
FRM="xxx"
SERVER="xxx"
USERNAME="xxx"
PASSWORT="xxx"

 
case $DST in
  SMS)
    RCP="Handy...@t-mobile-sms.de"   ----> wenn eine SMS gesendet werden soll und Du bei t-mobile Kunde bist
    ;;
  MAIL)
    RCP="xxx"                            ----> Mailadresse, an die Nachricht gesendet werden soll

    ;;
  *)
    ;;
esac
 
case $TYP in
  BATTERY)
    SUB="BATTERY: ${ARG}"
    TXT="Batterie schwach: ${ARG}"
    ;;
  KLINGEL)
    SUB="TUERKLINGEL"
    TXT="Es klingelt an der Tuer"
    ;;
  HAUSTUERAUF)
    SUB="HAUSTUER"
    TXT="Haustuer wurde geoeffnet"
    ;;
  HAUSTUERZU)
    SUB="HAUSTUER"
    TXT="Haustuer wurde geschlossen"

    ;;
  ALARM)
    SUB="ALARM wurde ausgelöst: ${ARG}"
    TXT="FS20 TFK als Glasbruchmelder wurde ausgeloest!"
    ;;
  *)
    SUB="FHEM: ${ARG}"
    TXT="${ARG}"
    ;;
esac
 
/usr/local/bin/sendEmail -f ${FRM} -t ${RCP} -u ${SUB} -m ${TXT} -s ${SERVER} -xu ${USERNAME} -xp ${PASSWORT} -o tls=auto
exit 0

hgo

unread,
Aug 21, 2012, 8:30:57 AM8/21/12
to fhem-...@googlegroups.com
Hi Mitch,
bei mir ist es ein `   (Shift und Taste rechts neben ß)

Mitch

unread,
Aug 21, 2012, 9:05:43 AM8/21/12
to fhem-...@googlegroups.com
So, habe jetzt den Script fhem2mail neu gemacht, nun geht es.
War wohl ein Formatfehler zwischen Win und Unix, obwohl ich einen Unixeditor auf dem Windoof verwende .-(

Steffen

unread,
Sep 1, 2012, 2:10:39 PM9/1/12
to fhem-...@googlegroups.com
Guten Nabend!

Ich versuche von meinem Nas(debian6) auch per sendEmail eine email zu senden über googlemail.com aber leider klappt es nicht und es kommt nichts an,
sendEmail ist installiert und script fhem2mail ist angelegt:

#!/bin/bash
# Mailversandaufruf bei definierten Ereignissen aus FHEM
BASENAME="$(basename $0)"
DST=$1
TYP=$2
ARG=$3
USERNAME="xxx"
PASSWORT="xxx"
case $DST in
  SMS)
    RCP="<mail2sms-empfänger>"
    ;;
  MAIL)
    RCP="<x...@googlemail.com>"
    ;;
  *)
    ;;
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 -f ${FRM} -s ${SERVER} -xu ${USERNAME} -xp ${PASSWORT} -t ${RCP} -u ${SUB} -m ${TXT} -q -o message-content-type=text
exit 0

aber bei Eingabe zum Test in Terminal: root@NASC87667:~# /usr/bin/fhem2mail MAIL HAUSTUERAUF" ! " kommt keine Fehlermeldung, nichts!

Geht es überhaupt mit googlemail oder ist was falsch an meiner config???

Mfg Steffen

Mitch

unread,
Sep 2, 2012, 5:48:31 AM9/2/12
to fhem-...@googlegroups.com
Hi Steffen,

gmail sollte schon gehen, Du musst aber ein paar Dinge beachten:

1. gmail nutzt authentication
2. Port for TLS/STARTTLS: 587
3. Port for SSL : 465

d.h. Du musst diese Parameter mitgeben:

USERNAME="dein Username"
PASSWORT="dein Passwort"

und beim Aufruf muss TLS aktiviert werden:
/usr/bin/sendEmail -f ${FRM} -s ${SERVER} -xu ${USERNAME} -xp ${PASSWORT} -t ${RCP} -u ${SUB} -m ${TXT} -q -o tls=auto message-content-type=text
exit 0

Alles ungetestet aus dem Knopf geschrieben.
Probier mal aus, ob es geht.
Reply all
Reply to author
Forward
0 new messages