Templates
Dateiname
Der Aufbau der Dateinamen muss folgende Struktur befolgen:
{Eventklasse}(-{Status})(-Extended)-{Sprache}.html
Eventklasse:
Hier wird die Eventklasse eingesetzt, für die die Vorlage gelten soll.
Neben den in der PLC definieren Eventklassen gibt es folgende interne Meldeklassen und zugehörige Status:
- Verbindungsstörungen
- Present: Verbindung wurde unterbrochen
- Gone: Verbindung wurde wiederhergestellt
- HMI-Extension Monitoring
- Present: Eine überwachte Extension läuft nicht
- Wartungsmodus
- Present: Der Wartungsmodus ist aktiviert
- Gone: Der Wartungsmodus wurde deaktiviert
Status (optional):
Hier wird definiert, für welchen Status die Vorlage benutzt wird. Mögliche Zustände sind:
- Present
- PresentAck
- Gone
- GoneAck
Extended (optional):
Ein Nutzer erhält diese Vorlage, wenn die Option "Additional Information" in der HMI-Config bei dem Nutzer für die jeweilige Ereignisklasse gesetzt ist. Dies bietet die Möglichkeit, eine einfache und eine informative Vorlage für das gleiche Ereignis erstellen zu können.
Sprache:
Momentan werden folgende Sprachen unterstützt:
- de
- en
Default
Statt einer expliziten Eventklasse kann auch die "Default"-Vorlage verwendet werden. Diese Vorlage wird automatisch benutzt, wenn keine spezifische Eventklassen-Vorlage gefunden wurde.
Die Default-Vorlagen haben folgenden Aufbau:
- Default-{Sprache}.html
Wird diese Vorlage auch nicht gefunden, wird der Text und der Betreff statisch generiert.
Ereingnis-Zusammenfassungen
Die Vorlagen Summary-{Sprache}.html und MultiSummary-{Sprache}.html werden benötigt, um Sammelmeldungen übersichtlich verschicken zu können.
Der Platzhalter (siehe Platzhalter / Zusammenfassungen) für die Meldungen beinhaltet alle Events, die als Sammlung verschickt werden sollen in ihren jeweiligen Vorlagen. Es wird folglich für jedes enthaltene Ereignis die zugehörige Vorlage für die Einzelmeldung aufgelöst und die Platzhalter durch die Werte ersetzt.
Eine Zusammenfassung kommt zustande, wenn die Anzahl der Ereignisse den Wert in der Config ("Common settings" → "Notification flood suppression" → "Count of messages overall allowed") oder das Ereignis mehr als einmal in der Config definierten Zeit ("Common settings" → "Notification flood suppression" → "Delay in seconds") übersteigt.
Wenn ein Ereignis wiederholt ausgelöst wird, wird die Vorlage Summary-{Sprache}.html verwendet.
Wenn mehrere Ereignisse wiederholt ausgelöst werden, wird die Vorlage MultiSummary-{Sprache}.html verwendet.
Aufbau einer Vorlage
Die Vorlage besteht aus drei Teilen: dem Betreff, Inhalt und Fußzeile. Diese Teile werden als HTML-Tag voneinander abgegrenzt. Benutzt wird, was innerhalb der Tags steht. Der Betreff und der Inhalt sollten vorhanden sein, sonst werden sie statisch generiert.
Betreff (Subject)
Der E-Mail-Betreff wird zwischen dem Tag <subject> und </subject> definiert.
Bei Sammelmeldungen wird dieser Tag nur von der Vorlage der Sammelmeldung berücksichtigt. Das bedeutet, dass bei einer Sammelmeldung nicht der Betreff der betroffenen Ereignisklassen benutzt wird, sondern der Betreff aus der Vorlage der Sammelmeldung.
Inhalt (Template)
Der E-Mail-Inhalt wird zwischen dem Tag <template> und </template> definiert.
Da E-Mails auf HTML basieren, können simple HTML-Tags benutzt werden.
Ein Guide dazu ist auf der Website von Mailchimp zu finden.
Bei Sammelmeldungen wird dieser Inhalt in der Auflistung verwendet.
Footer
Der E-Mail-Footer wird zwischen dem Tag <footer> und </footer> definiert.
Dieser dient dazu, Informationen nur einmal in der E-Mail anzuzeigen auch bei Sammelmeldungen. Das bedeutet, dass in einer Sammelmeldung dieses Tag nur aus dem Template der Sammelmeldung benutzt wird.
Der Tag aus den einzelnen Ereignisvorlagen wird ignoriert.
Platzhalter
Für alle Ereignisse
Platzhalter | Bedeutung |
|---|---|
EventClass | Die Eventklasse. |
Description | Die Beschreibung der Eventklasse. |
DeviceName | Name des Gerätes, auf dem das Ereignis ausgelöst wurde. |
DeviceAddress | Adresse des Gerätes, auf dem das Ereignis ausgelöst wurde. |
DevicePort | Port der Anwendung des Gerätes, auf dem das Ereignis ausgelöst wurde. |
DeviceProjectName | Name des Projektes, in dem das Ereignis ausgelöst wurde. |
Device | Informationen über das Gerät in folgender Syntax: |
Date | Datum des Ereignisses im Format "D" (siehe Microsoft Dokumentation „standard-date-and-time-format-strings#LongDate“). |
Time | Zeit des Ereignisses im Format "T" (siehe Microsoft Dokumentation „the-long-time-t-format-specifier“). |
DateTime | Datum und Zeit des Ereignisses in dem Standard-Format der jeweiligen Sprache (siehe Microsoft Dokumentation „how-standard-format-strings-work“). |
HmiLink | Der Link zur HMI. Wird in der Config-Seite des HMI-Servers konfiguriert. |
SubscribedEventClassId | Die Eventklasse, weshalb der Nutzer benachrichtigt wird. Diese kann abweichen, wenn der Benutzer unter der Eventklasse -99: "Alle empfangen" / "Receive all" eingetragen ist. Dann ist dieser Wert beispielsweise -99. |
SubscribedEventClassDescription | Die Beschreibung der Eventklasse, weshalb der Nutzer benachrichtigt wird. |
State | Der Status des Events. Beispielsweise Present, Present|Ack, Gone, Gone|Ack. |
Symbol | Das Symbol, welches das Event ausgelöst hat. |
TimeCaptured | Eine Auflistung von allen Zeitpunkten, an denen dieses Ereignis aufgetreten ist. Wenn es keine Zusammenfassung einer Meldeflut ist, wird dieser Platzhalter mit einem Datum ersetzt mit dem Format "O" ersetzt. Bei einer Sammelmeldung wird der Platzhalter mit einer Auflistung der Daten im Format "O" ersetzt. |
Errors | Wenn unerwartete Betriebsverhalten aufgetreten sind, werden diese als aufzählender Text eingefügt. |
Subject | Eine kurze Beschreibung des Ereignisses |
Interne Events:
- Verbindung
Diese Vorlage sollte Informationen beinhalten, um die Verbindung wiederherzustellen (siehe Tabelle oben). - HMI-Extensions:
Platzhalter | Bedeutung |
|---|---|
HMI.ConfigVersion | Config-Version der HMI-Erweiterung, die das Ereignis ausgelöst hat |
HMI.DebuggerAttached | Gibt an, ob ein Debugger an der HMI-Erweiterung angehangen ist. Sprachabhängig. |
HMI.Error | Gibt Informationen zu dem Property "Error" der HMI-Erweiterung an, die das Ereignis ausgelöst hat. |
HMI.ExtensionName | Name der HMI-Erweiterung, die das Ereignis ausgelöst hat. |
HMI.Guid | Guid der HMI-Erweiterung, die das Ereignis ausgelöst hat. |
HMI.Licensed | Gibt an, ob die HMI-Erweiterung lizenziert ist. Sprachabhängig. |
HMI.PackageVersion | Package-Version der HMI-Erweiterung, die das Ereignis ausgelöst hat. |
HMI.Remote | Gibt an, ob die HMI-Erweiterung "Remote" ist. Sprachabhängig. |
HMI.Required | Gibt an, ob die HMI-Erweiterung "Required" ist. Sprachabhängig. |
HMI.State | Der State der HMI-Erweiterung, die das Ereignis ausgelöst hat. |
HMI.ThirdParty | Gibt an, ob die HMI-Erweiterung von einem Drittanbieter ist. Sprachabhängig. |
HMI.Updated | Gibt an, wann die HMI-Erweiterung aktualisiert wurde. |
HMI.Version | Die Version der HMI-Erweiterung, die das Ereignis ausgelöst hat. |
HMI.Visibility | Gibt die Sichtbarkeit der HMI-Erweiterung an, die das Ereignis ausgelöst hat. |
- Wartung
Platzhalter | Bedeutung |
|---|---|
Maintenance.ShutoffDate | Das Datum und Uhrzeit, bei dem sich der Wartungsmodus automatisch deaktiviert im Format der jeweiligen Sprache. |
PLC Events
Platzhalter | Bedeutung |
|---|---|
TF8040.ObjectName | Objektname des Symbols, das das Ereignis ausgelöst hat. |
TF8040.ObjectDescription | Objektbeschreibung des Symbols, das das Ereignis ausgelöst hat. |
TF8040.MessageEventTexts | "MessageEventText" des Symbols, das das Ereignis ausgelöst hat. |
TF8040.StatusFlags | "Status flags" des Symbols, das das Ereignis ausgelöst hat. |
TF8040.SymbolPath | Symbolpfad des Symbols, das das Ereignis ausgelöst hat. |
TF8040.LockPrio | "Lock prio" des Symbols, das das Ereignis ausgelöst hat. |
TF8040.Versions | Versionen der Runtime des Symbols, das das Ereignis ausgelöst hat. Diese werden in tabellarischer Form ausgegeben. Der Stil ist nicht veränderbar. |
TF8040.BuildingName | Gebäudename, der dem Gerät in der Konfiguration zugeordnet wurde. |
PLC-Events tragen die Nummern 0-254.
Zusammenfassungen
Basis
Platzhalter | Bedeutung |
|---|---|
Summary.Counter | Wie oft wurde das Ereignis ausgelöst? |
Summary.LastRisen | Wann das Ereignis das letzte Mal ausgelöst wurde. Wird als Datum mit dem Format "O" angegeben. |
Summary.Events | Ersetzt diesen Platzhalter mit den/der Vorlage(n) für das/die Event (s), die wiederholt ausgelöst wurden. |
Zusammenfassung von einer Eventklasse-Status-Kombination
Platzhalter | Bedeutung |
|---|---|
Summary.FirstOccurrence | Das Datum in der jeweiligen Sprache, an dem das Ereignis das erste Mal in dieser Folge ausgelöst wurde. |
Summary.LastOccurrence | Das Datum in der jeweiligen Sprache, an dem das Ereignis das letzte Mal in dieser Folge ausgelöst wurde. |
Multiple Ereigniszusammenfassungen
Platzhalter | Bedeutung |
|---|---|
Summary.EventClasses | Alle Ereignisklassen der zusammengefassten Ereignisse, sortiert aufgelistet. |
Speicherort der Vorlagen
Die Vorlagen werden als Bestandteil des NuGet-Paketes ausgeliefert.
Diese werden unter {HMI-Projekt-Ordner}\BaMessageSystem\Templates ausgeliefert und in das Projekt eingehängt.
Zudem wird ein Ordner 'UserTemplates' angelegt. Dieser wird bei der Auswahl von Vorlagen priorisiert. In diesen können Vorlagen kopiert und verändert werden.
Änderungen in diesem Ordner bleiben auch bestehen, wenn das NuGet-Paket entfernt oder aktualisiert wird.
Vorlagen im 'Template'-Ordner sollten nicht bearbeitet werden, da Änderungen hier nur bis zu einer Änderung des Paketes bestehen bleiben.
Beispiel Auflösung der Dateinamen
Eventklasse 30, Present, Extended Information und Deutsch
Die Abarbeitung erfolgt chronologisch nach den folgenden Punkten:
- Der Dateiname '30-Present-Extended-de.html' wird gesucht.
- Der Dateiname '30-Present-de.html' wird gesucht.
- Der Dateiname '30-de.html' wird gesucht.
- Ist dieser nicht vorhanden, wird der Dateiname 'Default-de.html' gesucht.
- Zuletzt wird die E-Mail statisch generiert.