Mail:

2. Vorlagen Einstellungen:

Unter dem Reiter „E-Mails“ können 50 Mail-Vorlagen definiert werden. In der Zeile „An“ wird die Mail-Adresse des Empfängers und unter „Betreff“ der Betreff der Mail eingetragen. In das große Eingabefeld wird der eigentliche Email Text eingetragen, hier können auch zuvor unter „TCL“ definierte Variablen bzw. Platzhalter mittels einem vorangestellten Dollar-Zeichen ($) eingebunden werden. Sofern Variablen/Platzhalter verwendet werden sollen, muss unten der Haken für „Tcl aktivieren“ gesetzt werden. Siehe auch Punkt 4 „Was ist TCL?“

3. Das Skript zum Versenden der Mail:

Die folgenden drei Code-Zeilen werden in das Zentralen-Programm unter „Aktivität: Dann…“ > „Skript“ eingefügt. Damit eine Email versendet werden kann, muss unter „Bedingung: Wenn…“ ein auslösendes (triggerndes) Ereignis definiert werden. Zum Beispiel: Wenn… „Geräteauswahl“ Türkontakt bei „offen“ „bei Änderung auslösen“ Die ID aus der dritten Code-Zeile muss durch die Nummer der entsprechenden Mail-Vorlage ersetzt werden (01-50).

string stdout; string stderr; system.Exec(„/etc/config/addons/email/email ID“, &stdout, &stderr);

4. Was ist TCL?

TCL ist ein mächtiges Werkzeug, welches die Möglichkeit bietet Platzhalter für eine Mail-Vorlage zu definieren, aber auch das Auslesen von CCU Variablen oder Zuständen ist hiermit einfach möglich. Ein erstelltes TCL-Skript wird vor dem Versand einer E-Mail ausgeführt, sofern die Tcl-Option in der Mail-Vorlage aktiviert ist. Folgend ein Beispiel TCL-Skript, welches die Temperatur und Luftfeuchte eines HomeMatic Sensors ausließt und in die Variablen (v1 und v2) schreibt. In der Mail-Vorlage werden die Variablen (v1 und v2) dann mit vorangestellten Dollar-Zeichen ($v1 und $v2) in den Emailtext oder auch der Betreff-Zeile eingefügt. Die Seriennummer im TCL-Skript muss durch die Seriennummer eurer HomeMatic Komponente ersetzt werden. Weiter Informationen zu HomeMatic Datenpunkten können dem eQ-3 HomeMatic Script Teil 4 entnommen werden.

Beispiel, Temperatur & Luftfeuchte: load tclrega.so

array set values [rega_script { var v1 = dom.GetObject(„BidCos-RF.FEQ0001234:1.TEMPERATURE“).Value(); var v2 = dom.GetObject(„BidCos-RF.FEQ0001234:1.HUMIDITY“).Value(); } ]

set v1 $values(v1) set v2 $values(v2)

Beispiel, Status eines Fensterkontakts auslesen: load tclrega.so

array set values [rega_script { if (dom.GetObject(„BidCos-RF.LEQ0187617:1.STATE“).Value() == 'false') { var v1 = „offen“; }else { var v1 = „geschlossen“; } } ]

set v1 $values(v1)

Beispiel, Variable „Anwesenheit“ auslesen: Damit bei einer ausgelesenen Variable nicht „true“ bzw. „false“ in der Email steht, können die Zustände wie folgt übersetzt werden. load tclrega.so

array set values [rega_script { if if (dom.GetObject(„Anwesenheit“).Value() == 'false') { var v1 = „Zuhause“; }else { var v1 = „nicht da!“; } } ]

set v1 $values(v1)

5. Umlaute richtig anzeigen:

Damit die Umlaute einer Variable korrekt in der Mail dargestellt werden, muss der Zeichensatz der Variable konvertiert werden. Dies kann mit der folgenden Zeile umgesetzt werden.

set test [encoding convertfrom utf-8 $values(test)]

Beispiel, auslesen einer Variable (test, Typ: Zeichenkette): load tclrega.so

array set values [rega_script { var v1 = dom.GetObject(„test“).Value(); } ]

set v1 [encoding convertfrom utf-8 $values(v1)]

6. Mails mittels CUxD Gerätetyp 91 versenden:

Das CCU Addon CUx-Daemon ist bekannter weise in der Lage, neue „virtuelle“ Geräte direkt in die CCU einzubinden. Mit dem CUxD Gerätetyp 91 (CloudMatic Mail) ist es ab Version 0.67 durch ändern des CMD_EXEC Parameters möglich die Mails direkt im Zentralen Programmen zu definieren ohne hierfür ein Skript zu verwenden. Hinweis: hierzu wird kein „meine-homematic/CloudMatic“ Zugang benötigt. Die Account Einstellungen werden nach wie vor im Email-Addon vorgenommen.

Vorgehensweise: 1. Über CUxD ein neues Geräte (91 CloudMatic Mail) erstellen. 2. In der WebUI unter > Einstellungen > Posteingang > das neue Gerät in die CCU übernehmen (auf Fertig klicken). 3. In der WebUI unter > Einstellungen > Geräte > hinten zu diesem Gerät auf „Einstellen“ klicken. 4. Die Zeile aus dem unteren Eingabefeld (SYSTEM|CMD_EXEC) durch folgende Zeile ersetzen:

/etc/config/addons/email/email_cuxd

5. CCU neustarten!

Im Zentralen-Programm kann dann wie im folgenden Bild zusehen durch mehrfaches einfügen des CUxD-Email-Gerätes die Mail aufgebaut und abschließend mit dem Parameter SEND abgeschickt werden:

Mögliche Parameter: SEND Tastendruck auf WebUI zum Versenden der Mail MAILTO Email-Empfänger MAILCC Kopie der Email an weiteren Empfänger SUBJECT Betreff der Mail TYPE=STANDARD Email im Text-Format TYPE=HTML Email im HTML-Format TEXT Der Text der Email TEMPLATEID 1-50, zur Verwendung der Email-Vorlagen aus dem Addon OPTION_1 bis OPTION_5 für vordefiniertes Template, können in den Geräteeinstellungen definiert werden 7. Fehlermeldungen der Logfiles.

Im Hilfe-Bereich werden zwei verschiedene Logfiles angezeigt, diese werden alle 10 Sekunden automatisch aktualisiert. Je nach Fehler kann die Anzeige des Log-Eintrags mehrere Minuten dauern! Die „email.log“ welche direkt vom Email-Addon erstellt wird, gibt Meldungen über erfolgreiches oder fehlerhaftes senden einer Email aus. Das zweite Logfile, die „CCU-Syslog“, gibt Meldungen über ggf. fehlerhafte Nutzung des msmtp-Diensts aus.

Mögliche Meldungen: Meldung email.log Meldung Syslog Fehlerbeschreibung exitcode=EX_OK kein Eintrag Die Email wurde erfolgreich gesendet Connection timed out' exitcode=EX_TEMPFAIL msmtp: cannot connect to SMTP-SERVER, port XXX: Connection timed out msmtp: could not send mail Zeitüberschreitung: falscher Port Error: authentication failed: authentication failure' errormsg='authentication failed (method PLAIN)' exitcode=EX_NOPERM msmtp: authentication failed (method PLAIN) Authentifikation fehlgeschlagen: Benutzername oder Kennwort falsch, bzw. falsche Authentifikations-Methode

errormsg='the server does not support authentication method XXX' exitcode=EX_UNAVAILABLE msmtp: the server does not support authentication method XXX Ausgewählte Authentifikations-Methode wird vom Server nicht unterstützt

errormsg='cannot locate host SMTP-SERVER.de: Name or service not known' exitcode=EX_NOHOST msmtp: cannot locate host SMTP-SERVER.de: Name or service not known SMTP-Server Adresse ist falsch errormsg='cannot connect to SMTP-SERVER.de, port 587: Network is unreachable' exitcode=EX_TEMPFAIL msmtp: cannot connect to SMTP-SERVER.de, port 587: Network is unreachable Internetverbindung unterbrochen oder CCU-Netzwerkeinstellungen fehlerhaft: Gateway prüfen

errormsg='envelope from address TEST@TEST.de not accepted by the server' exitcode=EX_DATAERR msmtp: envelope from address TEST@TEST.de not accepted by the server Authentifikation ausgeschaltet - versenden ohne Authentifikation nicht möglich

8. Wieso kann ich keine Mails versenden?

Sofern trotz korrekter Account-Einstellungen keine Mails versandt werden können, liegt dies häufig an einer fehlerhaften Netzwerk-Konfiguration der CCU. Bitte prüfen Sie unter > „Einstellungen“ > „Systemsteuerung“ > „Netzwerkeinstellungen“, ob die Netzwerk-Einstellungen nach folgendem Schema eingetragen sind. Wichtig ist, dass die ersten drei Segmente der IP-Adresse, des Gateways und des DNS-Servers identisch sind. Zudem entspricht die IP-Adresse des Gateways und des Bevorzugten DNS-Servers in der Regel der Router IP-Adresse.

Beispiel (bei Verwendung einer Fritz!Box): IP-Adresse: 192.168.178.xxx (xxx steht für eine beliebige freie Adresse) Subnetmaske: 255.255.255.0 Gateway: 192.168.178.1 (IP-Adresse des Routers) Bevorzugter DNS-Server: 192.168.178.1 (IP-Adresse des Routers) Alternativer DNS-Server: 0.0.0.0 Mit dem folgenden Skript kann zusätzlich über die WebUI unter > „Programme & Zentralenverknüpfung“ > „Skript testen“, geprüft werden, ob die CCU mit der Außenwelt kommunizieren kann.

string stderr; string stdout; integer Auslese; system.Exec(„ping -c 1 www.google.de“,&stdout, &stderr); Auslese = stdout.Find(„ms“); if ( Auslese == -1 ) { WriteLine(„CCU ist NICHT mit der Welt verbunden“); } if ( Auslese > 0) { WriteLine('CCU ist mit der Welt verbunden, und der DNS funktioniert'); }

Sofern das Skript ausgibt, das die CCU ist NICHT mit der Welt verbunden ist, sollten folgende Punkte geprüft werden.

1. Internetverbindung okay? 2. Netzwerkkabel okay? 3. Bei der Fritz!Box für den LAN-Port an dem die CCU hängt von GreenMode auf PowerMode umstellen (7 Energieeinstellungen der FRITZ!Box anpassen). 4. Der CCU nach dem obengenannten Schema eine Feste-IP zuweisen. 5. Für das vierte Segment der CCU IP-Adresse eine zweistellige und freie Adresse vergeben (z.B. 192.168.x.22).


Hallo liebe Familie,

das ist eine Info - Mail!

$v3

Mit freundlichen Grüßen Dein Haus

PS: hier noch ein paar Infos in eigener Sache Es ist zur Zeit $v4 zu Hause! Wetter: Die Temperatur beträgt $v5 °C und wir haben eine Rel. Luftfeuchte $v6 % Status: die Stubentür ist $v7 die Terrassentür ist $v8

$v9


TCL - Code:

load tclrega.so

array set values [rega_script { var v1 = dom.GetObject(„EmailEmpfaenger“).Value(); var v2 = dom.GetObject(„EmailBetreff“).Value(); var v3 = dom.GetObject(„EmailText“).Value(); } ]

set v1 $values(v1) set v2 $values(v2) set v3 $values(v3)

#Anwesenheit array set values [rega_script { var av4= dom.GetObject(„Anwesenheit.string“).Value(); if (dom.GetObject(„Anwesenheit“).Value() == 'true') {

 var mv04 = "keiner";

}else {

 var mv04 = av4;

} } ] set v4 $values(mv04)

#Temperatur und Luftfeuchte: array set values [rega_script { var v5 = dom.GetObject(„BidCos-RF.EEQ0047170:1.TEMPERATURE“).Value(); var v6 = dom.GetObject(„BidCos-RF.EEQ0047170:1.HUMIDITY“).Value(); } ]

set v5 $values(v5) set v6 $values(v6) set v5 [format „%.2f“ $v5]

# #Türen: array set values [rega_script { if (dom.GetObject(„BidCos-RF.LEQ0631130:1.STATE“).Value() == '0') {

  var v1 = "geschlossen";

} if (dom.GetObject(„BidCos-RF.v:1.STATE“).Value() == '1') {

  var v1 = "gekippt";

} if (dom.GetObject(„BidCos-RF.LEQ0631130:1.STATE“).Value() == '2') {

  var v1 = "offen";

}

if (dom.GetObject(„BidCos-RF.LEQ0630530:1.STATE“).Value() == '0') {

  var v2 = "geschlossen";

} if (dom.GetObject(„BidCos-RF.LEQ0630530:1.STATE“).Value() == '1') {

  var v2 = "gekippt";

} if (dom.GetObject(„BidCos-RF.LEQ0630530:1.STATE“).Value() == '2') {

  var v2 = "offen";

}

} ] set v7 $values(v1) set v8 $values(v2)

#Datum: set v9 [clock format [clock seconds] -format „%d.%m.%Y %H:%M“]

homematic/mail.txt · Zuletzt geändert: 2016/11/23 13:20 von ahinueber
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0