Fehlermeldungen als E-Mails versenden

Fehlermeldungen als E-Mails versenden

Das connect-Gateway kann Maschinendaten erfassen und live überwachen. In diesem Beitrag zeigen wir wie das connect-Gateway E-Mails verschicken kann, wenn die Maschine einen Fehler meldet.

Ausgangssituation

Zunächst gehen wir davon aus, dass wir bereits Fehlermeldungen einer Maschine erfassen. Wenn die Maschine einen neuen Fehler meldet, soll dieser direkt per E-Mail an den Fertigungsleiter versendet werden.

Demzufolge haben wir für unser Beispiel folgenden Datapoint, der die Fehlermeldung der Maschine als String enthält.

<datapoints>
    <datapoint>
        <path>/machine/errormessage</path>
        <type>string</type>
    </datapoint>
</datapoints>

Konfiguration

Wir definieren im nächsten Schritt den Endpoint, über den die E-Mails erzeugt und versendet werden. Hierfür setzen wir das SMTP_CLIENT Plugin ein.

Die Konfiguration des Plugins ist analog zur Konfiguration eines E-Mail Clients. Hierzu geben wir den SMTP-Server an, der die E-Mails versendet. Darüberhinaus machen wir Einstellungen zur Verschlüsselung, zur Authentifizierung und zum Absender der E-Mails. Der Absender ist hier die “Maschine 1”.

<endpoint>
        <name>SMTP</name>
        <protocol plugin="SMTP_CLIENT">
            <name>GMX</name>
            <parameters>
                <param key="host">mail.company.net</param>
                <param key="port">587</param>
                <param key="security">START_TLS</param>
                <param key="user">maschine1@company.net</param>
                <param key="password">Test123</param>
            </parameters>

Trigger

Wir möchten möglichst schnell von möglichen Fehlern erfahren. Deswegen installieren wir als nächstes einen passiven Trigger. Damit wird unser Consumer immer dann angestoßen, wenn sich die Fehlermeldung irgendwie verändert.

            <trigger>
                <passive>
            </trigger>

Consumer

Der Consumer erzeugt die eigentliche E-Mail. Zunächst geben wir ihm einen passenden Namen.

            <consumer>
                <name>ErrorMessageSender</name>

Wie erwähnt wird dieser Consumer immer dann angestoßen, wenn die Fehlermeldung aktualisiert wird. Dies geschieht auch, wenn die selbe Meldung erneut gemeldet wurde oder auch wenn die Meldung gelöscht wird und der Text nun leer ist.

Trigger Conditions

Wir möchten aber nur dann eine E-Mail erhalten, wenn die Maschine eine neue Fehlermeldung ausgibt, die sich von der vorherigen unterscheidet und die nicht leer sein darf. Dazu verwenden wir Consumer Trigger Conditions. Hiermit können wir verschachtelte logische Bedingungen formulieren, die erfüllt sein müssen, damit in diesem Falle eine E-Mail verschickt wird.

Für unser Beispiel sieht die Konfiguration wie folgt aus:

                <condition> 
                    <and>
                        <previousEquals>
                            <datapoint>/machine/errormessage</datapoint>
                            <missing/>
                        </previousEquals>
                        <not>
                            <equals>
                                <datapoint>/machine/errormessage</datapoint>
                                <missing/>
                            </equals>
                        </not>
                    </and>
                </condition>

Das <and>-Tag verbindet die zwei verschachtelte Bedingungen. Die E-Mail wird also nur versendet, wenn beide erfüllt sind.

<previousEquals> beschreibt den vorherigen Wert des Datenpunkts. <missing> sagt aus, dass der Datenpunkt keinen Wert enthält. Im ersten Teil der Condition stellen wir somit sicher, dass bisher keine Fehlermeldung im Datenpunkt erfasst war.

Über <not> kehren wir eine Bedingung um und fordern so, dass etwas nicht gilt. In Kombination mit <equals> überprüfen wir so die Ungleichheit des aktuellen Wertes. Der zweite Teil der Condition überprüft also, dass der Datenpunkt zum aktuellen Zeitpunkt nicht leer ist, sondern eine Fehlermeldung enthält.

E-Mail Absender, Empfänger und Betreff

Nach der Konfiguration aller Bedingungen legen wir nun über die Parameter des Plugins den Absender, Empfänger und den Betreff fest.

               <parameters>
                   <param key="from">Maschine 1 <maschine1@company.net></param>
                   <param key="to">Fertigungsleitung <fertigung@company.net></param>
                   <param key="subject">Fehler an Maschine 1</param>                
               </parameters>

Der E-Mail Inhalt

Abschließend legen wir nun den Inhalt der automatisch generierten E-Mail fest. Hierzu verwenden wir das TEMPLATE_ENCODER Plugin, um den Body der E-Mail zu füllen.

Templating

Das template nimmt beliebigen Text auf. Innerhalb dieses Textes können wir über {{#TEMPLATE xxx}} Platzhalter definieren, die wir dann im Mapping mit den Werten aus Datenpunkten füllen.

                <encoder plugin="TEMPLATE_ENCODER" id="body">
                    <parameters>
                        <param key="template"> 
                           Maschine 1 sendet folgende Meldung:
                                         {{#TEMPLATE error}}
                           Bitte überprüfen sie die Maschine.
                           Viele Grüße von Maschine 1 
                        </param>
                    </parameters>
                    <mapping>
                        <datapoint>/machine/errormessage</datapoint>
                        <parameters>
                            <param key="identifier">error</param>
                        </parameters>
                    </mapping>
                </encoder>
            </consumer>
        </protocol>
    </endpoint>

Den Text des Bodys können wir so mit beliebigen Informationen füllen. Innerhalb des Textes legen wir über {{TEMPLATE error}} den genauen Ort im Body der E-Mail fest, an dem die Fehlermeldung eingefügt wird.

Im mapping verknüpfen wir den Datapoint mit dem Namen des Platzhalters, den wir im Template verwendet haben. So kommen die Werte an die richtige Stelle. In diesem Beispiel wird der Wert des Datenpunkts /machine/errormessage verwendet.

Zusammenfassung

Die Überwachung einer großen Anzahl an Maschinen kann viel Zeit kosten. Durch das Monitoring von Fehlermeldungen in Verbindung mit dem Versand von E-Mails bei kritischen Werten erleichtert das connect-Gateway die Wartung großer Maschinenparks.

Das SMTP_CLIENT Plugin ermöglicht die flexible Konfiguration für jeden Mail-Server. Der TEMPLATE_ENCODER erlaubt es, beliebige Inhalte zu hinterlegen, die für den entsprechenden Anwendungsfall benötigt werden. Auch HTML-formatierte E-Mails lassen sich so ohne Probleme erzeugen.