6537 Zeichen
Score aktualisiert
100%
Code: 538ed0bdd0514df7935dfd7b17404c11
Token in Entwicklung nicht aktualisiert
img-Tag in Entwicklung deaktiviert
Mein Mini-Framework für den E-Mail-Versand von der CCU hat sich durchaus bewährt. Die
verwendete Funktion system.Exec() ist besser als ihr Ruf. Denoch ist es sicher
nicht schädlich für die Stabilität, zum Versand den CUx-Daemon zu verwenden.
Benennung von Systemvariablen
Prinzipiell kann man Systemvariablen – so wie allen Objekten in der CCU – beliebige
Namen geben, also z. B. auch Umlaute und Sonderzeichen verwenden. Ich empfehle jedoch,
sich auf reguläre Buchstaben (a-z, A-Z) zu beschränken: Bei Umlauten und Sonderzeichen
besteht die Gefahr, dass Systemvariablen in Scripten nicht überall gefunden werden.
Vorbereitung
Zur Installation des CUxD-Mini-Frameworks müssen folgende Voraussetzungen erfüllt
sein:
Wenn Sie bereits das HTML-Framework eingerichtet haben, können Sie diese Anleitung
ebenfalls durchführen. Dort, wo es Abweichungen gibt, erhalten Sie passende Hinweise.
E-Mail-Gerät einrichten
Damit das E-Mail-Add-on mit dem CUx-Daemon vernünftig zusammenarbeitet, muss zunächst
in der CUxD-Weboberfläche ein E-Mail-Gerät angelegt werden.
Auch wenn der E-Mail-Versand hier nicht über CloudMatic oder ähnliche Dienste laufen
wird, wählt man als Gerät 91 und als Funktion Mail aus. Die
Seriennummer spielt keine große Rolle, kann aber gerne bei 1 verbleiben. Der Name ist
frei wählbar und wird später in der WebUI angezeigt.
Mit Gerät auf CCU erzeugen wird das neue Gerät installiert.
Falls das virtuelle Gerät nicht sofort im Posteingang der WebUI auftaucht, muss die
CCU einmal neu gestartet werden. Anschließend muss in den Einstellungen des Gerätes der
Pfad zum E-Mail-Add-on im Feld SYSTEM|CMD_EXEC eingetragen werden.
gesamtes Script markieren / kopieren
/etc/config/addons/email/email_cuxd
Alle anderen Felder bleiben frei bzw. werden mit 0 vorbelegt.
Zum Schluss kann das Gerät fertiggestellt werden und ist bereit für den Mailversand.
Einige Anleitungen schreiben, dass an dieser Stelle ein weiterer Neustart der CCU
erforderlich ist. Bei mir funktionierte es auch so – aber falls nicht, gilt: Jeder Boot
tut gut.
Neues Versand-Script
Das CUxD-Mini-Framework benötigt dieselbe Einrichtung wie das normale Mini-Framework
einschließlich passender Vorlagen. Lediglich ein anderes Versand-Script kommt zum
Einsatz.
gesamtes Script markieren / kopieren
! HomeMatic-Script
! CUXD-MINI-FRAMEWORK ZUM E-MAIL-VERSAND
! http://www.christian-luetgens.de/homematic/cuxd/framework/Mini-Framework.htm
! SYSTEMVARIABLE
object o_versand = dom.GetObject ("E-Mail.Versand");
if (o_versand.Value() > 0) {
! VERSAND
dom.GetObject ("CUxD.CUX9100001:1.MAILTO").State ("");
dom.GetObject ("CUxD.CUX9100001:1.MAILCC").State ("");
dom.GetObject ("CUxD.CUX9100001:1.SUBJECT").State ("");
dom.GetObject ("CUxD.CUX9100001:1.TEXT").State ("");
dom.GetObject ("CUxD.CUX9100001:1.OPTION_1").State ("");
dom.GetObject ("CUxD.CUX9100001:1.OPTION_2").State ("");
dom.GetObject ("CUxD.CUX9100001:1.OPTION_3").State ("");
dom.GetObject ("CUxD.CUX9100001:1.OPTION_4").State ("");
dom.GetObject ("CUxD.CUX9100001:1.OPTION_5").State ("");
dom.GetObject ("CUxD.CUX9100001:1.TYPE").State (0);
dom.GetObject ("CUxD.CUX9100001:1.TEMPLATEID").State (o_versand.Value());
dom.GetObject ("CUxD.CUX9100001:1.SEND").State (1);
o_versand.State (0);
}
! Ende des Scripts
Einige Parameter müssen angepasst werden und es gibt zwei wesentliche Unterschiede
zwischen dem Mini-Framework und dem CUxD-Mini-Framework
Der voreingestellte string entspricht der Standard-Seriennummer der
CUxD-E-Mail-Schnittstelle. Wahrscheinlich müssen Sie hier nichts ändern, aber Sie
sollten auf jeden Fall überprüfen, ob die Seriennummer im Script mit der Seriennummer in
der Geräteliste übereinstimmt.
Genau wie beim Mini-Framework muss auch im CUxD-Mini-Framework ggf. die Bezeichnung der
Systemvariablen angepasst werden.
Der Versand erfolgt beim CUx-Daemon asynchron, d.h. das Script stößt den Versand
über die Schnittstelle an und arbeitet dann sofort weiter. Das Tcl-Script im
E-Mail-Add-on wird unter Umständen erst ausgeführt, wenn das Mini-Framework-Script schon
beendet ist. Darum wird am Ende des Scriptes nur die Systemvariable E-Mail.Versand
zurückgesetzt, nicht die Systemvariablen für Betreff und Textkörper.
Alternativer E-Mail-Versand
Für die CUxD-Schnittstelle müssen nicht unbedingt Vorlagen verwendet werden. Ganz
ähnlich meinem Mini-Framework können per Script oder WebUI ein paar Werte eingesetzt
werden und die E-Mail wird direkt beim Versand erstellt.
Wenn diese Funktion in irgendeinem Programm genutzt wurde, stehen in den entsprechenden
Feldern unter Umständen noch alte Werte, die dann auch verwendet werden. Darum setzt das
Script vor dem Versand alle Felder der Schnittstelle zurück.
Beim Mini-Framework erkennt das E-Mail-Add-on automatisch, ob eine HTML- oder eine
Nur-Text-Vorlage verwendet wird. Die CUxD-Schnittstelle tut das nicht, darum muss der
Datenpunkt TYPE auf 0 (für Nur-Text-E-Mails) oder 1 (für
HTML-E-Mails) gesetzt werden.
Dieses Script ersetzt das Mini-Framework, daher steht hier 0 im Script. Wenn Sie das
HTML-Framework auf den CUxD umstellen möchten, finden Sie hier das passende Script.
Wer es richtig kompliziert mag, mischt HTML- und Nur-Text-Vorlagen … viel Spaß.
Sind alle Werte eingetragen, kann das CUxD-Mini-Framework exakt genauso verwendet
werden wie das Mini-Framework. Wer bereits das Mini-Framework eingerichtet hatte, braucht
also nur den CUxD zu installieren und das
Script zu ändern, um auf das CUxD-Mini-Framework umzusteigen.
Versand direkt aus dem Script
Eine weitere Variante für den CUxD-E-Mail-Versand verzichtet auf Vorlagen: Sämtliche
Inhalte werden direkt im Script zusammengesetzt.
- man muss sich nicht mit Vorlagen und Tcl-Scripten herumschlagen
- kein asynchroner Versand, durch den bei schnell aufeinanderfolgenden E-Mails die
falschen Texte versendet werden können
- E-Mail-Text ist auf 1000 Zeichen begrenzt – Mails mit 1001 oder mehr Zeichen werden
komplett leer versendet
- die CCU hat Probleme mit HTML-Tags in Scripten, die ebenfalls dazu führen, dass
spätestens nach einem Neustart nur noch leere E-Mails gesendet werden
Für mich überwiegen ganz klar die Nachteile – das Mini-Framework soll einfach alles
verschicken, was ich ihm zu futtern gebe, und auf HTML-Mails möchte ich auch nicht
verzichten. Darum bleibt es beim eher umständlichen Versand über Vorlagen, die man zum
Glück nur einmal einrichten muss.
Danach geht der Versand locker über das CUxD-Mini-Framework.
Nächste Schritte
- Wenn Sie Nur-Text-E-Mails versenden möchten, sind Sie fertig.
- Wenn sie bereits das HTML-Framework eingerichtet hatten und nun auf das
CUxD-HTML-Framework umsteigen wollen, folgen Sie der Anleitung zum CUxD-HTML-Framework.
- Um auf den Versand von HTML-E-Mails umzustellen, wenn Sie bisher Nur-Text gesendet
haben, richten Sie zunächst das HTML-Framework
einr.