Benachrichtigungen

Verfügbar seit Version: 0.11.0
Autor: Tobias Bräutigam

Beschreibung

Das state-notification Element im Meta-Bereich der Konfiguration erlaubt es Benachrichtigungen zu erstellen wenn ein neuer Wert für ein Widget vom Backend hochgemeldet wird. Diese Benachrichtigungen können als Popup oder als Eintrag in der Benachrichtigungszentrale angezeigt werden.

Sobald Nachrichten in der Benachrichtigungszentrale vorhanden sind, wird die Anzahl der Nachrichten am oberen rechten Rand des Browserfensters und im Favicon (im Browser-Tab) anzeigt. Sollten Nachrichten mit höherer Priotität darunter sein, wird dies durch farbigen Hintergrund gekennzeichnet.

Einfaches Beispiel zeigt eine Nachricht in der Nachrichtenzentrale, wenn die Wohnzimmerlampe eingeschaltet ist.
<meta>
    <notifications>
        <state-notification target="notificationCenter" unique="true">
            <title-template>Wohnzimmerlicht</title-template>
            <message-template>eingeschaltet um {{ time }} Uhr</message-template>
            <condition>1</condition>
            <addresses>
                <address transform="OH:switch">Light_FF_Living</address>
            </addresses>
        </state-notification>
    </notifications>
    ...
</meta>

Hinweis

Die <address> Einträge in den Notifications sind die gleichen, wie sich innerhalb der Widgets benutzt werden. In den Beispielen werden openHAB-Adressen benutzt. Ein entprechendes Beispiel für das Default-Backend wäre: <address transform="DPT:1.001">12/0/3</address>

Erklärung:

Über dass address Element (mehrere sind möglich) wird festgelegt, dass bei eingehenden Status-Updates für diese Addresse eine Nachricht generiert wird. Eine Nachricht besteht aus einem Titel und dem Nachrichteninhalt. Die beiden Elemente title-template und message-template bestimmen den Inhalt der beiden Nachrichtenteile. Bei den Templates handelt es sich um Mustache-Templates, bei denen bestimmte Platzhalter an eine beliebige Stelle in den Text eingefügt werden können. Folgende Platzhalter stehen zur Verfügung:

Name Inhalt
address Adresse von der das Status-Update gekommen ist
value Wert des Status-Updates
date Datum des Empfangs
time Zeit des Empfangs

Das Beispiel würde folgenden Nachricht erzeugen:

Wohnzimmerlicht
eingeschaltet um 12:45 Uhr

Über target="notificationCenter" wird festgelegt, dass diese Benachrichtigung in der Nachrichtenzentrale am linken Rand der Visu angezeigt wird. Ein weiterer möglicher Wert wäre hier popup, um die Nachricht als Popup anzuzeigen.

unique="true" legt fest, dass die Nachricht nur einmal angezeigt wird, und zwar nur, wenn der Wert des Status-Updates gleich dem <condition> festgelegten Wert ON entsprich, d.h. die Nachricht wird angezeigt, wenn die Lampe eingeschaltet ist, wenn sie ausgeschaltet wird, wird die Nachricht automatisch gelöscht.

Erklärung zu den Attributen im state-notification-Element

Element Attribut
  Name Inhalt Beschreibung
state-notification name Text Name muss definiert werden, wenn unique=true ist
target popup, notificationCenter oder speech
  • popup: Nachricht als Popup anzeigen
  • notificationCenter: Nachricht im Notification-Center anzeigen
  • speech: Nachricht per Sprachausgabe ausgeben
unique true oder false Nur eine Nachricht für dieses Update zeigen (name muss angegeben werden)
deletable true oder false Benutzer kann diese Nachricht löschen
skip-initial true oder false Erstes Statusupdate ignorieren
severity urgent, high, normal oder low Nachrichten mit höherer Priorität werden farblich gekennzeichnet

Weitere Beispiele

Komplexes Beispiel mit Mapping

Komplexes Beispiel mit Benachrichtigungen für Bewegungen inkl. Mapping
<meta>
    <mappings>
        <mapping name="Motion_name">
            <entry value="Motion_FF_Corridor">Flur OG</entry>
            <entry value="Motion_FF_Kitchen">Küche</entry>
            <entry value="Motion_FF_Dining">Esszimmer</entry>
        </mapping>
        ...
    </mappings>
    ...
    <notifications>
        <state-notification name="motion" target="notificationCenter" unique="true" severity="high">
            <title-template>Bewegungsalarm</title-template>
            <message-template>Bewegung erkannt: {{ address }}, {{ time }}</message-template>
            <condition>1</condition>
            <addresses address-mapping="Motion_name">
                <address transform="OH:switch">Motion_FF_Dining</address>
                <address transform="OH:switch">Motion_FF_Corridor</address>
                <address transform="OH:switch">Motion_FF_Kitchen</address>
            </addresses>
        </state-notification>
    </notifications>
</meta>

Dieses Beispiel zeigt ein Benachrichtigung wenn einer der Bewegungsmelder eine Bewegung liefert mit hoher Priorität (severity="high", wird orange markiert).

Um den etwas kryptischen Adressennamen in ein lesbares Format zu bringen wird ein Mapping benutzt. Wenn der Bewegungsmelder mit dem Namen Motion_FF_Corridor nun eine Bewegung signalisiert würde die Nachricht folgenden Inhalt haben:

../_images/nachrichten_zentrale.png

Beispiel einer Nachricht in der Nachrichtenzentrale

Sprachausgabe

Ausgabe der Nachricht über die Text-to-speech Engine des Browsers
    <meta>
        <mappings>
            <mapping name="Motion_name">
                <entry value="Motion_FF_Corridor">Flur OG</entry>
                <entry value="Motion_FF_Kitchen">Küche</entry>
                <entry value="Motion_FF_Dining">Esszimmer</entry>
            </mapping>
            ...
        </mappings>
        ...
        <notifications>
            <state-notification name="motion" target="speech">
                <message-template>Bewegung im {{ address }}</message-template>
                <condition>1</condition>
                <addresses address-mapping="Motion_name">
                    <address transform="OH:switch">Motion_FF_Dining</address>
                    <address transform="OH:switch">Motion_FF_Corridor</address>
                    <address transform="OH:switch">Motion_FF_Kitchen</address>
                </addresses>
            </state-notification>
        </notifications>
    </meta>

Dieses Beispiel erzeugt Sprachausgaben über die in modernen Browsers eingebaute Text-to-Speech Engine. In diesem Fall wird, sofern einer der durch die drei address Einträge gekennzeichneten Bewegungsmelder als Wert ON liefert folgende Nachricht ausgegeben.

Bewegung im Flur OG