CUxD-Mini-Framework zum E-Mail-Versand

Auch das Mini-Framework profitiert von der besseren Stabilität der CUxD-Systemfunktionen

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.

/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.

! 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

CUxD-Gerät

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.

Systemvariable

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.

E-Mail-Typ

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.

Vorteile

  • 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

Nachteile

  • 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

Navigation