Schnittstellen - Robert-112/Wachalarm-IP-Web GitHub Wiki
Der Wachalarm IP-Web verfügt über mehrere Schnittstellen und Möglichkeiten zum Austausch von Daten. Alle Schnittstellen lassen sich durch Weiterentwicklung noch um zusätzliche Funktionen erweitern.
aktuelle Möglichkeiten der Schnittstellen
- neuen Einsatz speichern (JSON)
- neue oder geänderte Rückmeldung speichern (JSON)
- Verteilung von Rückmeldungen (Schnittstellen zu externem Diensten)
Datenschnittstellen (APIs)
Grundsätzlich prüft der Server die übermittelten Daten und speichert diese im System. Fehlende Datensätze wie z.B. die "uuid" oder "wgs84_area" werden notfalls generiert und mit abgespeichert.
UDP-Schnittstelle (intern)
Der Server verfügt über eine einfache UDP-Schnittstelle. An diese kann ein Einsatz im JSON-Format übermittelt werden (z.B. aus dem Einsatzleitsystem heraus).
Alarmmonitor-Schnittstelle (Clients)
Dritte können sich als Web-Socket-Client (z.B. Socket.io) mit dem Alarmmonitor des Wachalarm-IP-Web verbinden und sofort Alarm-Meldungen erhalten.
Die Socket.io (WSS) Server-URL lautet https://url-der-anwendung/waip (/waip ist der Namespace). Nach erfolgreichem Connect ist durch den Client ein "Emit" mit dem Event "WAIP" und der Wachnummer als Klartextparameter zu übermitteln (z.B. "6114" für die FF Mittenwalde). Ist die Wachennummer valide und im System hinterlegt wird der Verbindungsaufruf akzeptiert und eine stehende Verbindung wird hergestellt. Der Client muss nun noch noch auf eingehende Events lauschen.
Socket.io-Events
Aktuell gibt es folgende Events:
- connect / disconnet
- Verbindung hergestellt / getrennt
- io.new_waip
- ein neuer Einsatz wird übermittelt. Beispiel:
{
"id": 36806,
"uuid": "71910853-8e72-4c9c-83de-34efd02d0e56",
"zeitstempel": "2020-10-27 11:10:01",
"ablaufzeit": "2020-10-27 11:20:01",
"einsatzart": "Rettungseinsatz",
"stichwort": "N1:Bewußtlosigkeit",
"sondersignal": 1,
"objekt": "",
"ort": "Spremberg",
"ortsteil": "",
"strasse": "",
"besonderheiten": "",
"wgs84_x": "",
"wgs84_y": "",
"em_alarmiert": "[{\"name\": \"RT SPN 00/82-01\", \"zeit\": \"19:43\"},{\"name\": \"RT SPN 04/83-01\", \"zeit\": \"19:43\"}]",
"em_weitere": null,
"wgs84_area": "{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"properties\":{},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[14.376387863279826,51.57567631041218],[14.374829289836754,51.57699204704606],[14.372887522422511,51.57809349098791],[14.37063720288459,51.5789382927639],[14.377503352129967,51.57419686842284],[14.376387863279826,51.57567631041218](/Robert-112/Wachalarm-IP-Web/wiki/[14.376387863279826,51.57567631041218],[14.374829289836754,51.57699204704606],[14.372887522422511,51.57809349098791],[14.37063720288459,51.5789382927639],[14.377503352129967,51.57419686842284],[14.376387863279826,51.57567631041218)]}}]}"
}
- io.new_rmld
- eine neue Rückmeldung erhalten. Beispiel:
[{
"id": 180952,
"waip_uuid": "71910853-8e72-4c9c-83de-34efd02d0e56",
"rmld_uuid": "990180a7-d793-4667-b1f5-0c2f1ef9393b",
"alias": null,
"einsatzkraft": 1,
"maschinist": 0,
"fuehrungskraft": 0,
"agt": 1,
"set_time": "Tue Oct 27 2020 11:10:01 GMT+0100 (Mitteleuropäische Normalzeit)",
"arrival_time": "Tue Oct 27 2020 11:20:01 GMT+0100 (Mitteleuropäische Normalzeit)",
"wache_id": 654,
"wache_nr": 719001,
"wache_name": "SPN RW Forst"
}]
- io.playtts
- Start der Audio-Durchsage mit URL der Sound-Datei. Beispiel:
/media/waip7ayIGm5r5RQWXHXAAG3.mp3
- io.stopaudio
- Abbruch der Audio-Durchsage, z.B. bei neuem Einsatz
- enthält keine Daten
- io.version
- Prozess-ID
- ändert sich beim Neustart des Servers
- io.standby
- Standby-Signal für den Alarmmonitor
- enthält keine Daten
- io.error
- eventuelle Fehlermeldungen
Testen der Client-Verbindung (Socket.io)
Sie können die Verbindung mit dem "Socket.io Client Tool" testen.
Reihenfolge:
- http://amritb.github.io/socketio-client-tool/v1/ öffnen
- Oben bei Socket.io-Server https://wachalarm.leitstelle-lausitz.de/waip eingeben (restlichen Felder so lassen)
- Die gewünschten Events hinzufügen. Z.B.:
- io.new_waip
- io.version
- io.standby
- io.error
- jetzt Connect klicken
- auf den Reiter „Emiting“ gehen
- Eventname „WAIP“ und als plaintext die gewünschte Wachennummer setzen, dann EMIT klicken
- 0 -> alle Wachen
- 71 -> Landkreis Spree-Neiße
- 7106 -> Amt Döbern-Land
- 710602 -> Wache Döbern
- Im Reiter Listening werden jetzt aktuelle bzw. neue Alarme per io.new_waip übermittelt, Bsp:
- {"id":193558,"uuid":"57d78400-64e2-42f9-a036-797050e3c207","zeitstempel":"2022-05-16 15:39:41","ablaufzeit":"2022-05-16 16:24:41","einsatzart":"Hilfeleistungseinsatz","stichwort":"H:Tier-in-Not","sondersignal":0,"objekt":"","ort":"Lübben (Spreewald)","ortsteil":"Radensdorf","strasse":"","besonderheiten":"","wgs84_x":"","wgs84_y":"","em_alarmiert":"[{"name": "FL LDS 01/43-01", "zeit": "15:39"},{"name": "FL LDS 01/48-02", "zeit": "15:39"},{"name": "FL LDS 01/11-01", "zeit": "15:39"}]","em_weitere":null,"wgs84_area":"{"type":"FeatureCollection","features":[{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[13.995589036146065,51.8953958144519],[13.993993858326986,51.896696801272775],[13.992017919153808,51.897780702982416],[13.989737175533717,51.89860584424297],[13.98723932005757,51.899140499968354],[13.984620404187115,51.899364116843444],[13.981981137869168,51.89926810421236],[13.979423009181044,51.89885616378447],[13.97704437467072,51.898144145552514],[13.974936672091092,51.89715943573826],[13.973180902211059,51.89593990073634],[13.97184451555769,51.89453242819074],[13.97097882379678,51.89299112184025],[13.97061703470071,51.89137522000419],[13.97077298517418,51.88974681805608],[13.97144061962706,51.88816848256566],[13.972594232199796,51.886700848729966],[13.97418946208519,51.885400293143896],[13.976165002563498,51.88431677089498],[13.978444957425195,51.883491899551665],[13.98094175416071,51.88295736310756],[13.983559502492021,51.88273369671829],[13.986197670219525,51.882829498577806],[13.988754936516397,51.88324109906482],[13.991133076125942,51.883952699939535],[13.993240726639351,51.88493697851897],[13.994996895214369,51.88615613406018],[13.996334070626165,51.88756333668856],[13.997200821127617,51.889104523757794],[13.997563777762748,51.890720475108054],[13.997408925879594,51.892349087827704],[13.99674215381794,51.89392776325898],13.995589036146065,51.8953958144519]}}]}"}
Weitere Bilder zum Testablauf:
API-Schnittstelle (Server)
Zum Austausch zwischen zwei Wachalarm-IP-Web-Servern verfügt die Anwendung über eine Websocket-Schnittstelle die über https://url-der-anwendung/api per WSS angesprochen werden kann.
Über die Datei "server/app_cfg.js" wird die Funktion der Schnittstelle definiert.
...weitere Erläuterungen folgen...
Schnittstellen zur Verteilung von Rückmeldungen
Der Wachalarm IP-Web selbst verwaltet keine Mitglieder- oder Alarmierungslisten. Hierzu werden Dienste anderer Anbieter genutzt. Auf diese Weise kann die Verwaltung von Feuerwehr-Mitgliedern eigenständig und individuell erfolgen, ohne das personenbezogene Daten durch den Wachalarm IP-Web gespeichert werden.
Wie werden dann die Kameraden über einen Einsatz informiert und wie können Sie eine Rückmeldung geben?
Der Wachalarm IP-Web führt Listen darüber, ob für eine Wache ein externer Dienst zum Verteilen von Rückmeldungen verfügbar ist. Im Einsatzfall wird für die jeweilige Wache eine Verbindung zum externen Dienst hergestellt und es werden aus einer dort geführten Liste/Gruppe die Mitglieder ausgelesen. Jedes Mitglied erhält dann vom Wachalarm IP-Web einen individuellen Link zur Einsatz-Rückmeldung.
Aktuell werden Twitter-Listen unterstütz.
Das Auslesen der Liste (oder auch Gruppe) erfolgt über die Datei "server/brocker.js". Hier können weitere Dienste eingebunden werden wie z.B. Telegram, WhatsApp oder andere Chat-Systeme.
die Anbindung weiterer Dienste zum Verteilen der Rückmeldungen ist technisch möglich, dazu muss dieser Dienst jedoch über eine freie API verfügen und bestenfalls muss auch eine fertige node.js-Bibliothek (npm) existieren
Aufbau der Datentelegramme
neuer Einsatz (JSON)
Nachfolgendes Bespiel erläutert den Aufbau des Datentelegramms für einen neuen Einsatz mit zwei Einsatzmitteln.
{
"einsatzdaten": {
"uuid": "bb7a4c31-bb95-442a-34f3-9edd344151c7",
"nummer": "419123456",
"alarmzeit": "19.02.16&17:16",
"art": "Brandeinsatz",
"stichwort": "B:Sonderobjekt",
"sondersignal": 1,
"besonderheiten": "Probeeinsatz für Wachalarm-IP-Web der Leitstelle Lausitz!",
"patient": "Mustermann, Max"
},
"ortsdaten": {
"ort": "Cottbus",
"ortsteil": "Madlow",
"strasse": "Dresdener-Straße 46",
"objekt": "Regionalleitstelle Lausitz",
"objektnr": "-1",
"objektart": "",
"wachfolge": "520201",
"wgs84_x": "51.733266",
"wgs84_y": "14.337831"
},
"alarmdaten": [
{
"typ": "ALARM",
"netzadresse": "192.168.1.120",
"wachenname": "CB FW Cottbus 1",
"einsatzmittel": "FL CB 01/82-01",
"zeit_a": "17:16",
"zeit_b": "",
"zeit_c": ""
},
{
"typ": "ALARM",
"netzadresse": "",
"wachenname": "CB FW Cottbus 2",
"einsatzmittel": "FL CB 02/46-01",
"zeit_a": "17:16",
"zeit_b": "",
"zeit_c": ""
}
]
}
Aufbau neue Rückmeldung (JSON)
Nachfolgendes Bespiel erläutert den Aufbau einer Rückmeldung einer Führungskraft mit AGT die in 5 Minuten zur Wache 197 kommt.
{
"waip_uuid":"3ce467f7-eb46-4d57-9c1b-ae8c15064601",
"rmld_uuid":"be8331b4-5cd6-409b-abfd-67d7fbad9f1d",
"radio_efunction":"fk",
"cb_agt":"1",
"eintreffzeit":"5",
"wachenauswahl":"197"
}