SystemScript für POCSAG Auswertung

Aus REV Plus Handbuch
Wechseln zu: Navigation, Suche

In diesem Tutorial beschreibe ich die Erstellung eines SystemScripts zur automatischen Auswertung eines Alarmtextes (z.B. FMS Text, POCSAG oder Alarm E-Mail) it dem automatisch ein entsprechender Einsatz angelegt wird.

Zuersteinmal müssen wir mehrere Alarmtelegramme sammeln um den Syntax des Telegramms verstehen zu können. Alternativ kann natürlich auch der Syntax bei der Leitstelle angefordert werden.

In unserem Beispiel werden folgende 3 Texte verwendet:

 Person eingeklemmt StadtteilA, Musterautobahn ohne Hausnummer    1 pkw 2pers im fzg
 Garage/Schuppen StadtteilB, Musterstrasse 12   gegenüber
 Zimmerbrand StadtteilC, Mustergasse 76   im 2. Obergeschoss

Anhand dieser Telegramme können wir nun den Syntax der Telegramme auswerten. Dazu schauen wir uns die Telegramme nun genau an. Sehr wichtig ist es, dass alle Datenfelder von einander getrennt werden können. Denn wenn wir nun Telegramm 1 und 2 vergleichen, sehen wir, dass eine Trennung zwischen Stichwort und Stadtteil nicht möglich ist. (Das Stichwort enthält Leerzeichen und ist mit einem Leerzeichen vom Stadtteil getrennt. Das heißt wir können nicht eindeutig zwischen Stichwort und Stadtteil schließen.) Das einfachste wäre nun, bei der Leitstelle anzurufen und ein entsprechendes Trennzeichen einfügen zu lassen. (z.B. ein Komma ",")

Wir nehmen uns jetzt allerdings den Telegrammen 2 und 3 an und ignorieren Stichwörter die ein Leerzeichen beeinhalten können.

Wir schauen uns nun die weiteren Felder an. Nach dem Stadtteil folgt ein , und ein Leerzeichen. Danach die Straße und Hausnummer getrennt durch ein Leerzeichen. Zuletzt folgen 3 Leerzeichen und dann das Bemerkungsfeld.

Ausgeschrieben sieht das entsprechend so aus:

Stichwort<Leerzeichen>Stadt<Komma><Leerzeichen>Strasse<Leerzeichen>Hausnummer<3x Leerzeichen>Bemerkung

So wir fangen nun an das ganze mit Hilfe von VBScript zu trennen. Dafür überlegen wir uns ein paar Regeln wie wir das trennen:

1. Trennen an <Komma><Leerzeichen>
2. Erstes Element von 1 trennen an <Leerzeichen>
3. Erstes Element von 2 ist Stichwort, zweites Element von 2 ist Stadt
4. Im zweiten Element von 1 trennen wir an <3x Leerzeichen>
5. Das zweite Element von 4 ist die Bemerkung, das erste Element enthält Straße und Hausnummer
6. Wir trennen das erste Element von 4 an Leerzeichen.
7. Das letzte Element von 6 enthält die Hausnummer. Alle Elemente davor enthalten den Straßennamen.

Das wars theoretisch schon. Nun setzen wir das ganze noch in VB Script um.

Wir öffnen die Verwaltung und navigieren zu SystemScripts un legen dort ein neues Script an. Je nachdem aus welcher Quelle die Daten stammen (POCSAG, FMS, Mail) wählen wir ein Event aus. (In unserem Beispiel bleiben wir nun bei POCSAG)

NeuesSystemScript.png

Zur Verfügung stehen im Auswahlmodus onPOCSAG die Variablen datKennung, datSubRic und datText.

datText enthält nun den Alarmtext der Leitstelle. Diese Variable können wir nun Auswerten. Dazu benötigen wir im folgenden Beispiel hauptsächlich die VB Funktion

Split(expression[, delimiter[, count[, compare]]])

diese trennt eine Zeichenkette an einem angegebenen Zeichen. Weitere Informationen und die VBScript Sprachreferenz finden Sie in der Mircosoft Hilfe.

Informationen zu den REV spezifischen Objekten und Events finden Sie bei uns im Forum.

Nun zu unserem Script:

'Zu Beginn überprüfen wir ob das POCSAG Telegramm überhaupt für uns ist
If datKennung = "12345678" Then
'Als erstes entfernen wir überflüssige Leerzeichen am Anfang und am Ende
datText = Trim(datText)
Elemente1 = Split(datText, ", ") 'Schritt 1
Elemente2 = Split(Elemente1(0), " ") 'Schritt 2
Stichwort = Elemente2(0) 'Schritt 3
Stadt = Elemente2(1)
Elemente3 = Split(Elemente1(1), "   ") 'Schritt 4
Bemerkung = Elemente3(1) 'Schritt 5
StrasseUndHnr = Elemente3(0)
Elemente4 = Split(StrasseUndHnr, " ") 'Schritt 6
Hausnummer = Elemente4(Ubound(Elemente4)) 'Schritt 7
'Hier werden nun alle Elemente bis auf das letzte aus Elemente4 aneinander gehängt
For i = 0 To Ubound(Elemente4) - 1
  Strasse = Strasse & Elemente4(i) & " "
Next i
'Ein zusätzliches Leerzeichen am Ende wird abgeschnitten
Strasse = Left(Strasse, Len(Strasse) - 1)
'Wir haben nun alle Felder zusammen und müssen den Einsatz erstellen
'Dafür steht uns das Objekt Einsatz zur Verfügung
Einsatz.Add()
Einsatz.SetData("stadt", Stadt)
Einsatz.SetData("hnr", Hausnummer)
Einsatz.SetData("strasse", Strasse)
Einsatz.SetData("bemerkung", Bemerkung)
'Das Stichwort wird mit einer Suche verbunden, damit das Stichwort möglichst von einem bisherigen ausgewählt wird
Einsatz.SucheStichwortKlartext(Stichwort)
'Die nächste Zeile für die Vorschläge aus, die für diesen Einsatz hinterlegt sind
Einsatz.RunVorschlag()
'Die nun folgende Zeile setzt den Status auf alarmiert und aktiviert so den Einsatzmonitor und die automatische Alarmdurchsage
Einsatz.Alarm()
'Ende der Überprüfung
End If

Nun speichern wir das Script ab und können es testen, in dem wir die Funksteuerung starten und mit Rechtsklick auf das TrayIcon den Simulator öffnen. (Siehe Bild) Dort können wir nun ein beliebiges Telegramm einfügen und zum Testen simulieren. Hat alles geklappt, ist der Einsatz nun im ELP sichtbar. Andernfalls findet man in der Server-Debug weitere Informationen zu dem was schief gelaufen ist.

POCSAGSimulator.png


(Zurzeit ist das obige Script noch nicht getestet)