2.6.2.7. Filterung von Alarmierungen

Mithilfe von Filterregeln kann man genau steuern unter welchen Bedingungen eine Alarmierung ausgelöst werden soll. Wenn eine Filterregel hinterlegt und aktiviert ist, wird eine Alarmierung nur dann ausgelöst, wenn alle Bedingungen der Filterregel gelten. Mehrere Filterregeln können mit den Begriffen “und” sowie “oder” miteinander verbunden werden.

Tipp

Filterregeln sind möglichst einfach aufgebaut. Verdeutlichen wir dies an einem Beispiel. Betrachtet werden soll beispielsweise die Filterregel:

alarmieren wenn Tag ist Samstag

Ist für eine Alarmgruppe diese Filterregel hinterlegt und aktiviert, dann sorgt diese Filterregel dafür, dass die zugehörige Alarmgruppe nur samstags alarmiert wird.

2.6.2.7.1. Struktur von Filterregeln

Jede Filterregel ist aus verschiedenen Teilen aufgebaut. Genauer gesagt, besteht eine Filterregel immer aus einer Aktivität und einer Bedingung. Die Bedingung ist hierbei wiederum aus einem Feld, einer Vergleichsfunktion und einem Vergleichwert oder einer Liste von Vergleichswerten aufgebaut.

Betrachten wir die Filterregel alarmieren wenn Betreff enthält "Alarm". In diesem Beispiel wird bei jeder eingehenden Alarmierung verglichen,ob das Feld Betreff mit der Vergleichsfunktion enthält den Vergleichswert Alarm enthält. Eine Alarmierung kann dementsprechend nur erfolgen, wenn im Betreff der Alarmnachricht der Wert Alarm vorkommt.

Mehrere Filterregeln können mit logischen Operatoren miteinander verknüpft werden. Die Filterregel Tag ist Samstag und Betreff enthält "Alarm" löst beispielsweise eine Alarmierung nur dann aus, wenn die Alarmierung samstags erfolgt und der Betreff der Alarmnachricht das Wort Alarm enthält.

2.6.2.7.2. Aktivitäten

Aktivität Beschreibung
Alarmieren Gilt die Bedingung der Filterregel wird eine Alarmierung ausgelöst
Informieren Gilt die Bedingung der Filterregel, wird eine Information versendet
Abbrechen Gilt die Bedingung der Filterregel, wird die Alarmierung abgebrochen

2.6.2.7.3. Felder

Felder Beschreibung
Tag Wochentag der Alarmierung
Uhrzeit Uhrzeit der Alarmierung
Betreff Betreff des Alarmtextes
Text Textnachricht der Alarmierung
Kurztext Verkürzte Textnachricht der Alarmierung
Absender Absender der Alarmierung (nur bei Mail)
Auslöser Art, wie die Alarmierung ausgelöst wurde
Alarmcode Alarmcode der Alarmierung
Datum Aktuelles Datum
Straße Zugeordnete Straße (optional)
Hausnummer Hausnummer des Einsatzortes (optional)
PLZ Postleitzahl (optional)
Ort Ortsbezeichnung (optional)
Land Vollständige Landesbezeichnung (optional)
GeoPosLänge Geographische Position / Längengrad
GeoPosBreite Geographische Position / Breitengrad

Weiterhin können beliebige neue Felder definiert werden, beispielsweise um Zwischenergebnisse bei der Filterung abzuspeichern. Diese Felder sind jedoch nur temporär für die Laufzeit des Filters verfügbar.

Tipp

Das Feld Kurztext wird auch Benutzern angezeigt, die nicht berechtigt sind, den detaillierten Alarmstatus einzusehen. Verwenden Sie Filter um dieser Personengruppe eine Kurzbeschreibung des Einsatzes anzuzeigen.

2.6.2.7.4. Vergleichsfunktionen

Vergleichsfunktion Beschreibung
ist Prüft ob der Wert des Felds gleich dem Referenzwert ist
in Prüft ob der Wert des Feldes in einer Liste mit Referenzwerten ist
zwischen Prüft, ob der Wert des Feldes zwischen zwei Referenzwerten ist
größer Prüft, ob der Wert des Feldes größer als der Referenzwert ist
kleiner Prüft, ob der Wert des Feldes kleiner als der Referenzwert ist
enthält Prüft, ob der Referenzwert im Feld vorkommt

2.6.2.7.5. Vergleichswerte

Vergleichswert Beispiel
Wochentag Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag Sonntag
Uhrzeit 09:00, 14:00, 11:00, 8:00, 6:51
Liste (“A”, “B”, “C”)
Zeichenkette “Alarmierung für die Feuerwehr”
Auslöser “email”, “web_push”, “alarmcode”
Datum datum(01.01), datum(26.05), datum(13.11)
Straße “Dorfstraße”
Hausnummer “17a”
PLZ “65201”
Ort “Musterhausen”
Land “Deutschland”
GeoPosLänge 50.00123
GeoPosBreite 10.02384

2.6.2.7.6. Prüfen ob kürzlich eine Alarmierung ausgelöst wurde

Mit der Funktion ist_alarmierung_vorhanden(t_sek, alarmgruppe) kann geprüft werden, ob in den vergangen t Sekunden eine Alarmierung in der angegebenen Alarmgruppe aufgetreten ist. Optional kann der Name der zu prüfenden Alarmgruppe auch leer gelassen werden, dann wird für alle Alarmgruppen geprüft ob eine Alarmierung aufgetreten ist.

Dies ist beispielsweise nützlich, um ein empfangenes Alarmfax der korrekten Alarmgruppe zuzuweisen.

Beispiel, welches ein Alarmfax je nach vorab alarmierter Alarmgruppe an den richtigen Empfängerkreis weiterleitet:

weiterleiten an "Vollalarm" wenn ist_alarmierung_vorhanden(300, "Vollalarm")
weiterleiten an "Technische Hilfeleistung" wenn ist_alarmierung_vorhanden(300, "Technische Hilfeleistung")

2.6.2.7.7. Zugriff auf Werte aus der letzten Alarmierung

Mit der Funktion letzter_einsatz() kann der letzte Einsatz abgerufen werden. So ist es beispielsweise möglich, beim Zusammenfassen den Betreff des letzten Einsatzes zu übernehmen, den Text jedoch mit einem neuen Wert zu überschreiben. Die Funktion gibt ein Objekt mit dem letzten Einsatz zurück. Dieses Objekt besitzt ähnliche Felder wie der aktuelle Einsatz. Jedoch muss die Funktion element() verwendet werden, um auf die Felder zuzugreifen - ein direkter Zugriff ist nicht möglich.

Beispiel, welches den Betreff und den Text aus dem letzten Einsatz übernimmt:

Betreff = element(letzter_einsatz(), "Betreff")
Text = element(letzter_einsatz(), "Text")

2.6.2.7.8. Feldwerte ändern

Mithilfe von Filtern ist es möglich, die Werte von Feldern abzuändern. So kann man beispielsweise den Text oder den Betreff einer Alarmierung verändern um den Nutzern auf dem Smartphone eine bessere Darstellung der Alarmierung zu ermöglichen. Ein Feld kann entweder auf einen konstanten Wert gesetzt werden oder es kann eine Funktion genutzt werden, um den Wert des Feldes zu verändern. Funktionen zum Ändern der Feldwerte können beliebig ineinander geschachtelt werden.

Beispiel: Text = ersetzten(Text, "EINSATZ_STICHWORT", "Stichwort")

Es existieren die folgenden Funktionen um den Wert von Feldern zu verändern.

Funktionsname Beschreibung
ersetzen(text, alt, neu) Ersetzt jedes Vorkommen von alt durch neu in der Zeichenkette text
reg_ersetzen(text, muster, ersatz) Ersetzt auf das Muster passende Zeichenketten im Text durch den Ersatz Hierbei entspricht das Muster einem Python-kompatiblen regulären Ausdruck mit dem Zeile der Zeichenkette erfasst werden können.
verketten(txt1, txt2...) Verkettet beliebig viele Zeichenketten miteinander
zeilenweise_filtern(text, filter) Filtert die Zeichenkette text zeilenweise mit dem angegebenen filter
filtern_ab(text, filter) Gibt die Zeichenkette text ab dem Schlüsselwort filter zurück
filtern_bis(text, filter) Gibt die Zeichenkette text bis zum Schlüsselwort filter zurück
filtern_nach(text, filter) Gbit die Zeichenkette text nach dem Schlüsselwort filter zurück
zerlegen(text, trennzeichen) Zerlegt den Text anhand des gegebenen Trennzeichens
element(liste, position) Ermittelt das Listenelement an der gegebenen Position beginnend beim Wert 0
trimmen(text) Entfernt Leerzeichen am Anfang und Ende der Zeichenkette
ist_erster_wochentag_im_monat() Gibt den Wert Wahr zurück wenn eine Alarmierung am ersten Wochentag eines Monats passiert ist.
ist_zweiter_wochentag_im_monat() Gibt den Wert Wahr zurück wenn eine Alarmierung am zweiten Wochentag eines Monats passiert ist.
ist_dritter_wochentag_im_monat() Gibt den Wert Wahr zurück wenn eine Alarmierung am dritten Wochentag eines Monats passiert ist.
ist_vierter_wochentag_im_monat() Gibt den Wert Wahr zurück wenn eine Alarmierung am vierten Wochentag eines Monats passiert ist.
ist_fuenfter_wochentag_im_monat() Gibt den Wert Wahr zurück wenn eine Alarmierung am fünften Wochentag eines Monats passiert ist.
ist_ungerade_kalenderwoche() Gibt Wahr zurück, wenn eine Alarmierung in einer ungeraden Kalenderwoche passiert ist.
ist_gerade_kalenderwoche() Gibt Wahr zurück, wenn eine Alarmierung in einer geraden Kalenderwoche passiert ist.
laenge Gibt die Länge einer Zeichenkette oder einer Liste zurück

Tipp

Wenn Sie eine Filterregel bearbeiten, haben Sie Möglichkeit, mithilfe eines Test-Formulars die Filterregel zu überprüfen. So können Sie sich auch die Ergebnisse einer Änderung von Feldwerten anzeigen lassen.

2.6.2.7.9. Weiterleitungen

Alarmierungen können an andere Alarmgruppen weitergeleitet werden. Die Weiterleitung erfolgt hierbei über den Befehl

weiterleiten an "<Alarmgruppe>"
weiterleiten an "<Alarmgruppe>" mit <Feld1>=<Wert1>, <Feld2>=<Wert2>
weiterleiten an "<Alarmgruppe>" wenn <Bedingung>

Hierbei entspricht der Text <Alarmgruppe> dem Namen der Alarmgruppe, an die eine Alarmierung weitergeleitet werden soll. Bei der Weiterleitung kann der Text der weiterzuleitenden Alarmierung beliebig überschrieben werden. So können beispielsweise SMS-Nutzer über einen statischen Text informiert werden.

Wenn eine Weiterleitung mit einer Bedingung versehen wurde, wird die Weiterleitung nur dann ausgeführt, wenn die Bedingung zu “Wahr” ausgewertet wird.

Beispiele für Weiterleitungen:

weiterleiten an "Probealarm" wenn Tag = Samstag und Uhrzeit zwischen 09:00 und 10:00
weiterleiten an "SMS-Empfänger" mit Text="", Betreff="Alarmierung für die Feuerwehr Musterstadt"

Achtung

Als Ziel einer Weiterleitung müssen Sie immer den Namen einer Alarmgruppe angeben. Kann die Alarmgruppe nicht gefunden werden, kann dies zum vollständigen Abbruch der Alarmierung führen.

2.6.2.7.10. Statusbericht absenden

Mithilfe der Filtersprache kann der Versand von Statusberichten eingestellt werden. Dies erfolgt über den Befehl:

statusbericht an "<email1>;<email2>;..." nach <verzögerung> sekunden mit Betreff="<Betreff>"

Hierbei kann eine oder mehrere Email-Adressen angegeben werden, die jeweils durch ein Semikolon (;) getrennt sein müssen. Über das Feld <Verzögerung> kann eingestellt werden, nach welcher Zeit in Sekunden der Statusbericht versendet werden soll. Das Feld <Betreff> gibt an, mit welchem Titel die Statusberichts-Email versendet werden soll.

Beispiele

statusbericht an "frank@alarmapp.org" nach 60 sekunden
statusbericht an "frank@alarmapp.org;support@alarmapp.org" nach 60 sekunden mit Betreff="[AlarmStatus]"

2.6.2.7.11. Verzweigung (wenn)

Mithilfe einer Verzweigung ist es möglich, bestimmte Filterteile nur dann auszuführen, wenn die angegebenen Bedingungen zutreffen. Hierbei ist die Verzweigung nicht auf einzelne Ausdrücke beschränkt sondern kann ganze Unterprogramme ausführen.

Beispiel

wenn Tag ist Samstag und Uhrzeit zwischen 11:00 und 11:05 dann
  Betreff=verketten("PROBEALARM ", Betreff)
  Text=verketten("PROBEALARM \n", Text)
ende

2.6.2.7.12. Mehrzeilige Filterausdrücke

Mehrere Filteregeln können direkt aufeinander folgen um komplexere Fälle abzudecken. Hierbei werden die Filterregeln der Reihe nach abgearbeitet. Sobald die Vergleichsbedingung für eine Filterregel zutrifft, wird die zugehörige Aktivität dieser Filterregel ausgeführt. Wenn mehrzeilige Filterregeln definiert werden, muss ein Standardwert angegeben werden. Dieser gibt die Aktion an, welche ausgeführt wird, sollte keine der Filterregeln zu wahr ausgewertet werden können.

Beispiel:

informieren wenn Tag ist Samstag und Uhrzeit zwischen 09:00 und 10:00
informieren wenn Text enthält "Probealarm"
sonst alarmieren

2.6.2.7.13. Nachalarmierung

Mithilfe diese Funktion kann eine Nachalarmierung ausgelöst werden, wenn nicht genügend Einsatzkräfte die Einsatzteilnahme bestätigt haben.

Aufbau

nachalarmieren von "<Alarmgruppe>" nach <Zeitdauer in Sekunden> sekunden wenn <Filterbedingung>
Parameter Beschreibung
Alarmgruppe Name der Alarmgruppe, welche nachalarmiert werden soll, falls die angegebene Filterbedingung zu WAHR augewertet wird
Zeitdauer Zeitdauer in Sekunden, nach der die Nachalarmierung aus geführt werden soll
Filterausdruck Filterausdruck, welcher überprüft ob die Nachalarmierung ausgeführt werden soll.

Um die Anzahl der Einsatzkräfte in einem gewissen Status zu ermitteln, kann die Funktion anzahl(<Status>, <Funktionsgruppen-Code>) verwendet werden. Mögliche Status-Werte sind akzeptiert und abgelehnt. Optional kann der Parmater Funktionsgruppen-Code gesetzt werden. Ist dieser Parameter gesetzt werden nur Einsatzkräfte gezählt, welche den angeforderten Status übermittelt haben und Mitglied in der entsprechenden Funktionsgruppe sind.

Beispiele

nachalarmieren von "Zug 2" nach 300 sekunden wenn anzahl("akzeptiert") kleiner 25

nachalarmieren von "Zug 2" nach 300 sekunden wenn anzahl("abgelehnt") größer 15

# Diese Funktion löst eine Alarmierung aus, wenn nach 300 Sekunden
# weniger als 4 Atemschutzgeräteträger akzeptiert haben
nachalarmieren
  von "Atemschutzgeräteträger"
  nach 300 sekunden
  wenn anzahl("akzeptiert", "AGT") kleiner 4

Achtung

Das verketten von Eskalationen ist derzeit nicht möglich. Wenn im Rahmen einer Nachalarmierung eine Alarmgruppe alarmiert werden soll, welche selbst eine Eskalation eingestellt hat, so wird die zweite Eskalationsstufe vom System nicht ausgeführt.

So kann sichergestellt werden, dass keine Schleifen mit Nachalarmierungen entstehen.

2.6.2.7.14. Beispiele für Filterregeln

  1. alarmieren wenn Tag zwischen Montag und Donnerstag Eine Auslösung von Alarmen dieser Alarmgruppe erfolgt nur Montags bis Freitags
  2. alarmieren wenn Uhrzeit größer 09:00 und Uhrzeit kleiner 18:00 Die Auslösung diese Alarmgruppe erfolgt nur zwischen 09:00 Uhr und 18:00
  3. abbrechen wenn Betreff enthält "Info" Wenn der Betreff der Alarmierung den Text “Info” enthält, wird die Alarmierung für diese Alarmgruppe abgebrochen
  4. alarmieren wenn Auslöser in ("email", "web_push") oder Tag ist Samstag Eine Alarmauslösung mit dieser Filterregel erfolgt, wenn die Alarmierung an samstagen passiert oder wenn der Alarm entweder per Email oder per WebPush ausgelöst wird.
  5. alarmieren wenn Datum in (03.01, 04.01, 05.01) Eine Alarmauslösung erfolgt nur am 03., 04. und 05. Januar jedes Jahres