iobroker.waip-web 0.12.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.de.md +68 -59
- package/README.md +140 -103
- package/admin/i18n/de.json +8 -6
- package/admin/i18n/en.json +2 -0
- package/admin/i18n/es.json +2 -0
- package/admin/i18n/fr.json +2 -0
- package/admin/i18n/it.json +2 -0
- package/admin/i18n/nl.json +2 -0
- package/admin/i18n/pl.json +2 -0
- package/admin/i18n/pt.json +2 -0
- package/admin/i18n/ru.json +2 -0
- package/admin/i18n/uk.json +2 -0
- package/admin/i18n/zh-cn.json +2 -0
- package/admin/jsonConfig.json +15 -0
- package/io-package.json +38 -63
- package/main.js +430 -176
- package/package.json +1 -1
package/README.de.md
CHANGED
|
@@ -24,8 +24,8 @@ ohne dass ein Browser-Tab dauerhaft offen sein muss.
|
|
|
24
24
|
- [Einsatzkarte](#einsatzkarte)
|
|
25
25
|
- [Dashboard](#dashboard)
|
|
26
26
|
- [States (unter `waip-web.0.*`)](#states-unter-waip-web0)
|
|
27
|
-
- [info](#info) · [status](#status) · [
|
|
28
|
-
[
|
|
27
|
+
- [info](#info) · [status](#status) · [einsatzAktuell](#einsatzaktuell) ·
|
|
28
|
+
[einsatzAktuell.json](#einsatzaktuelljson) · [einsatzAktuell.tts](#einsatzaktuelltts) ·
|
|
29
29
|
[dashboard](#dashboard-states) · [debug](#debug)
|
|
30
30
|
- [Logging](#logging)
|
|
31
31
|
- [Lizenz und Changelog](#lizenz-und-changelog)
|
|
@@ -79,51 +79,51 @@ In diesem Abschnitt geht es darum, was sich mit den States dieses Adapters
|
|
|
79
79
|
konkret **bauen** lässt – typischer Einsatz auf einer Feuerwehr-/
|
|
80
80
|
Rettungsdienst-Wache:
|
|
81
81
|
|
|
82
|
-
- **Wandmontierte Alarmanzeige.** `
|
|
82
|
+
- **Wandmontierte Alarmanzeige.** `einsatzAktuell.json.current` an ein
|
|
83
83
|
VIS-Tabellen-Widget auf einem wandmontierten Tablet/TV im Aufenthalts-
|
|
84
84
|
raum oder in der Fahrzeughalle binden – Einsatzart, Stichwort, Adresse
|
|
85
85
|
und alarmierte Einsatzmittel erscheinen automatisch, ohne dass dort
|
|
86
86
|
dauerhaft ein Browser-Tab offen gehalten werden muss (genau dafür
|
|
87
87
|
existiert dieser Adapter).
|
|
88
88
|
- **Klartext-Stichwort auf Anzeigen und Benachrichtigungen.**
|
|
89
|
-
`
|
|
89
|
+
`einsatzAktuell.beschreibung` macht aus einem kryptischen Alarmierungscode
|
|
90
90
|
(`B:Wald groß/WSP`, `R1N0`) eine lesbare Beschreibung
|
|
91
91
|
("Wald-/Getreidefeldbrand (groß)", "Rettungswagen: 1,
|
|
92
|
-
Notfalleinsatzfahrzeug: 0") – neben `
|
|
92
|
+
Notfalleinsatzfahrzeug: 0") – neben `einsatzAktuell.stichwort` auf der
|
|
93
93
|
Wandanzeige einblenden oder in Push-Benachrichtigung/TTS-Ansage mit
|
|
94
94
|
aufnehmen, damit nicht jeder alle Stichwörter auswendig kennen muss.
|
|
95
|
-
- **Automationen direkt bei Alarmeingang auslösen.** `
|
|
95
|
+
- **Automationen direkt bei Alarmeingang auslösen.** `einsatzAktuell.alarmAktiv`
|
|
96
96
|
(ggf. zusammen mit `info.connection`) in einem Script/einer Blockly-Regel
|
|
97
97
|
beobachten, um bei Alarm Licht in der Fahrzeughalle einzuschalten, ein
|
|
98
98
|
Tor/eine Tür zu öffnen, eine Push-Benachrichtigung (z. B. über einen
|
|
99
|
-
Telegram-/Pushover-Adapter) mit `
|
|
100
|
-
+ `
|
|
99
|
+
Telegram-/Pushover-Adapter) mit `einsatzAktuell.stichwort`/`einsatzAktuell.beschreibung`
|
|
100
|
+
+ `einsatzAktuell.ort` zu versenden oder eine Lichtszene auszulösen – wenige
|
|
101
101
|
Sekunden nach der eigentlichen Alarmierung, da ioBroker-State-Änderungen
|
|
102
102
|
sofort feuern und kein Polling nötig ist.
|
|
103
|
-
- **Alarm laut ansagen.** `
|
|
103
|
+
- **Alarm laut ansagen.** `einsatzAktuell.tts.last` ist eine fertige, absolute
|
|
104
104
|
mp3-URL; eine `sonos`-/`snapcast`-/`text2speech`-Automation darauf
|
|
105
105
|
ansetzen (oder die URL direkt abspielen), um den Einsatz über
|
|
106
106
|
Gebäudelautsprecher anzusagen, sobald `io.playtts` feuert – hilfreich,
|
|
107
107
|
wenn nicht alle Mitglieder gerade auf einen Bildschirm schauen.
|
|
108
|
-
- **Live-Übersicht der Rückmeldungen.** Die `
|
|
108
|
+
- **Live-Übersicht der Rückmeldungen.** Die `einsatzAktuell.rueckmeldungen.*`
|
|
109
109
|
Zähler (`rollen.ek`/`.gf`/`.zf`/`.vf` pro Rolle, `funktionen.agt`/`.fzf`/
|
|
110
110
|
`.ma`/`.med` pro Zusatzfunktion) aktualisieren sich in Echtzeit, sobald
|
|
111
111
|
Einsatzkräfte per App zurückmelden – als Gauge- oder Zahlen-Widget
|
|
112
112
|
gebunden ergibt das eine
|
|
113
113
|
Übersicht auf einen Blick, wer bereits kommt.
|
|
114
|
-
- **Nachbereitung/Statistik.** `
|
|
114
|
+
- **Nachbereitung/Statistik.** `einsatzAktuell.json.history` hält die letzten
|
|
115
115
|
10 abgeschlossenen Einsätze als flache Tabelle vor – an eine zweite
|
|
116
116
|
VIS-Ansicht binden oder periodisch exportieren (z. B. per Script, das
|
|
117
117
|
den State bei `io.standby` ausliest), um ein längerfristiges Log zu
|
|
118
118
|
führen oder Einsatzzahlen in ein Statistik-/Dashboard-Adapter
|
|
119
119
|
einzuspeisen.
|
|
120
|
-
- **Routen-/Fahrzeugübersicht auf einer Karte.** `
|
|
120
|
+
- **Routen-/Fahrzeugübersicht auf einer Karte.** `einsatzAktuell.json.routen`
|
|
121
121
|
enthält für jede alarmierte Wache `lat`/`lon` und `color` – an ein
|
|
122
122
|
VIS-Kartenwidget gebunden ergibt das auf einen Blick, wer unterwegs ist,
|
|
123
123
|
unabhängig von der WAIP-Web-eigenen Karte.
|
|
124
124
|
- **Anbindung an weitere ioBroker-Automationen.** Da jedes Feld ein
|
|
125
125
|
gewöhnlicher ioBroker-State ist, lässt sich das Ganze mit allem
|
|
126
|
-
kombinieren, was ohnehin in der Instanz läuft – `
|
|
126
|
+
kombinieren, was ohnehin in der Instanz läuft – `einsatzAktuell.*` in eine
|
|
127
127
|
Smart-Home-Szenensteuerung einspeisen, eine Grafana-/InfluxDB-Historie
|
|
128
128
|
für Reaktionszeit-Auswertungen führen, oder per ioBroker-MQTT-Adapter
|
|
129
129
|
in einen Node-RED-artigen Flow einbinden, ganz ohne eigene Anbindung an
|
|
@@ -141,7 +141,7 @@ Rettungsdienst-Wache:
|
|
|
141
141
|
- Registrierungs-Timeout mit Audit-Log (`debug.monitorAudit`)
|
|
142
142
|
- Normalisierung von Geodaten (wgs84-Felder, `position` oder
|
|
143
143
|
GeoJSON-`geometry` → Mittelpunkt)
|
|
144
|
-
- History der letzten 10 abgeschlossenen Einsätze (`
|
|
144
|
+
- History der letzten 10 abgeschlossenen Einsätze (`einsatzAktuell.json.history`)
|
|
145
145
|
- Getrennte Handler für Alarm (`io.new_waip`), Rückmeldung (`io.new_rmld`),
|
|
146
146
|
Routen (`io.routes`), TTS (`io.playtts`) und Standby (`io.standby`)
|
|
147
147
|
- Automatisches Session-Cookie-Management (siehe unten), damit die
|
|
@@ -149,20 +149,20 @@ Rettungsdienst-Wache:
|
|
|
149
149
|
- Server-Neustart-Erkennung über `io.version` mit automatischem
|
|
150
150
|
Session-Refresh + Reconnect
|
|
151
151
|
- Einsatz-, Rückmeldungs-, Routen- und Einsatzmittel-Daten als eigene,
|
|
152
|
-
flache JSON-Arrays unter `
|
|
152
|
+
flache JSON-Arrays unter `einsatzAktuell.json.*` – ohne Verschachtelung, damit
|
|
153
153
|
VIS-Tabellen-Widgets direkt daran binden können
|
|
154
154
|
- Aggregierte Rückmeldungs-Zähler pro Rolle/Fähigkeit, analog zu den
|
|
155
155
|
Live-Badges der Weboberfläche
|
|
156
156
|
- Sauberer Zustand bei jedem Neustart: alle States werden beim Adapter-
|
|
157
157
|
Start aktiv auf ihren leeren Wert zurückgesetzt (`false`/`0`/`null`/
|
|
158
|
-
`[]`), außer `
|
|
158
|
+
`[]`), außer `einsatzAktuell.json.history` und `debug.monitorAudit` (beide
|
|
159
159
|
bleiben über Neustarts hinweg erhalten). Startet der Adapter neu,
|
|
160
160
|
während gerade ein Einsatz läuft, werden dessen Live-Felder
|
|
161
|
-
(`
|
|
161
|
+
(`einsatzAktuell.*`) ebenfalls geleert und füllen sich erst wieder, sobald
|
|
162
162
|
der Server das nächste Event zu diesem Einsatz sendet.
|
|
163
163
|
- Schutz vor veralteten Daten: Beginnt ein neuer Einsatz, bevor für ihn
|
|
164
164
|
eigene Routen-/Rückmeldungs-Events eingetroffen sind, werden
|
|
165
|
-
`
|
|
165
|
+
`einsatzAktuell.json.routen`/`.rueckmeldungen` und die Rückmeldungs-Zähler
|
|
166
166
|
sofort geleert, statt auf diese Events zu warten. Und falls `io.standby`
|
|
167
167
|
für einen Einsatz jemals verpasst wird (z.B. durch einen Disconnect
|
|
168
168
|
zum falschen Zeitpunkt), schließt ein Watchdog den Einsatz automatisch
|
|
@@ -172,8 +172,8 @@ Rettungsdienst-Wache:
|
|
|
172
172
|
- Zeigt immer nur den zuletzt aktiven Einsatz; mehrere gleichzeitig
|
|
173
173
|
laufende Einsätze sind aktuell nur über das Dashboard der
|
|
174
174
|
WAIP-Web-Instanz selbst einsehbar
|
|
175
|
-
- Optionale Klartext-Beschreibung zu `
|
|
176
|
-
(`
|
|
175
|
+
- Optionale Klartext-Beschreibung zu `einsatzAktuell.stichwort`
|
|
176
|
+
(`einsatzAktuell.beschreibung`), lokal ermittelt aus einer selbst pflegbaren
|
|
177
177
|
Stichwort-Tabelle sowie einem optionalen Dekoder für das von
|
|
178
178
|
mehreren Leitstellen verwendete Rettungsdienst-Stichwortschema
|
|
179
179
|
(`R<RTW>N<NEF>`) - siehe [Rettungsdienst](#rettungsdienst)
|
|
@@ -239,10 +239,10 @@ Website selbst verwendet.
|
|
|
239
239
|
**an**): Einsätze, deren `einsatzart` auf einen Rettungsdienst-Einsatz
|
|
240
240
|
hindeutet (enthält "Rettung" oder "Krankentransport", ohne
|
|
241
241
|
Berücksichtigung von Groß-/Kleinschreibung - siehe die
|
|
242
|
-
`einsatzart`-Beispiele unter [
|
|
242
|
+
`einsatzart`-Beispiele unter [einsatzAktuell](#einsatzaktuell)), werden standardmäßig
|
|
243
243
|
ganz normal verarbeitet, wie in jeder früheren Adapter-Version. Wird die
|
|
244
244
|
Checkbox deaktiviert, ignoriert der Adapter solche Einsätze stattdessen
|
|
245
|
-
**komplett**: keine `
|
|
245
|
+
**komplett**: keine `einsatzAktuell.*`-States werden aktualisiert, kein
|
|
246
246
|
History-Eintrag geschrieben, keine TTS-Ansage ausgelöst - als wäre der
|
|
247
247
|
Einsatz nie eingegangen. Hintergrund: Rettungsdienst-Einsätze werden
|
|
248
248
|
über WAIP Berichten zufolge nur in manchen Regionen/Leitstellen
|
|
@@ -253,11 +253,11 @@ wird nur angezeigt, solange diese Checkbox aktiv ist - ist sie aus,
|
|
|
253
253
|
werden Rettungsdienst-Einsätze ohnehin komplett ignoriert, ihre
|
|
254
254
|
Stichwort-Dekodierung ist dann irrelevant.
|
|
255
255
|
|
|
256
|
-
`
|
|
256
|
+
`einsatzAktuell.stichwort` wird unverändert vom Server als bloßer Code
|
|
257
257
|
übernommen (z.B. `B2`, `H:VU mit P`) – WAIP-Web selbst erklärt nicht,
|
|
258
258
|
was das bedeutet, und es gibt kein bundesweit einheitliches Schema:
|
|
259
259
|
jede Leitstelle nutzt ihr eigenes Stichwortverzeichnis.
|
|
260
|
-
`
|
|
260
|
+
`einsatzAktuell.beschreibung` schließt diese Lücke **vollständig lokal**, es
|
|
261
261
|
werden dabei keine Daten irgendwohin gesendet. Dieser Tab ist die erste
|
|
262
262
|
von zwei Quellen, die der Reihe nach geprüft werden (die zweite steht
|
|
263
263
|
unter [Stichwort-Stammdaten](#stichwort-stammdaten)):
|
|
@@ -314,7 +314,7 @@ State-Sync-Einschränkung der Admin-Tabellenkomponente selbst, nicht
|
|
|
314
314
|
etwas, das dieser Adapter beeinflussen kann).
|
|
315
315
|
|
|
316
316
|
Passt weder diese Tabelle noch der Dekoder oben, bleibt
|
|
317
|
-
`
|
|
317
|
+
`einsatzAktuell.beschreibung` einfach `null` – kein Fehler.
|
|
318
318
|
|
|
319
319
|
### Einsatzkarte
|
|
320
320
|
|
|
@@ -351,18 +351,18 @@ Bildbreite/-höhe für das Bild selbst in beiden Fällen. Nur die
|
|
|
351
351
|
wirklich nur den Polygon-Umriss betrifft - die Größe der
|
|
352
352
|
Punkt-Markierung ist fest vorgegeben, nicht einstellbar.
|
|
353
353
|
|
|
354
|
-
Der Dateipfad wird in `
|
|
355
|
-
[
|
|
354
|
+
Der Dateipfad wird in `einsatzAktuell.kartenbildPfad` geschrieben (siehe
|
|
355
|
+
[einsatzAktuell](#einsatzaktuell)) – typische Verwendung ist der Versand dieser Datei
|
|
356
356
|
aus einem Blockly-/JavaScript-Skript heraus, z.B. als
|
|
357
357
|
Pushover-Benachrichtigungsanhang. Es werden nur die 10 zuletzt erzeugten
|
|
358
358
|
Bilder aufgehoben, ältere werden automatisch gelöscht, sobald ein neues
|
|
359
359
|
geschrieben wird. Die Alarmverarbeitung wartet auf die Fertigstellung
|
|
360
|
-
des Bildes, bevor sie fortfährt – `
|
|
360
|
+
des Bildes, bevor sie fortfährt – `einsatzAktuell.kartenbildPfad` trägt daher
|
|
361
361
|
garantiert schon den richtigen Wert, sobald auch die übrigen Felder des
|
|
362
|
-
Einsatzes (z.B. `
|
|
362
|
+
Einsatzes (z.B. `einsatzAktuell.alarmAktiv`) verfügbar werden – allerdings
|
|
363
363
|
höchstens bis zum konfigurierbaren **OSM-Timeout**: Ist der
|
|
364
364
|
Kachel-Download/die Bildzusammensetzung bis dahin nicht fertig, wird
|
|
365
|
-
eine Warnung geloggt und `
|
|
365
|
+
eine Warnung geloggt und `einsatzAktuell.kartenbildPfad` bleibt für diesen
|
|
366
366
|
Einsatz leer, ohne die Alarmverarbeitung unbegrenzt zu blockieren.
|
|
367
367
|
|
|
368
368
|
| Feld | Beschreibung | Default |
|
|
@@ -377,7 +377,7 @@ Einsatz leer, ohne die Alarmverarbeitung unbegrenzt zu blockieren.
|
|
|
377
377
|
|
|
378
378
|
Die Bilder liegen im eigenen Datenverzeichnis dieser Adapterinstanz
|
|
379
379
|
(`iobroker-data/<instance>/maps/`), nicht als ioBroker-Dateiobjekte –
|
|
380
|
-
`
|
|
380
|
+
`einsatzAktuell.kartenbildPfad` ist deshalb ein echter, absoluter
|
|
381
381
|
Dateisystempfad, den ein auf demselben Host laufendes Skript direkt
|
|
382
382
|
lesen kann. Dieses Verzeichnis wird **nicht** automatisch gelöscht,
|
|
383
383
|
wenn der Adapter gestoppt oder seine Instanzkonfiguration
|
|
@@ -398,12 +398,12 @@ die Option **"Auch Instanzdaten löschen"** anhaken (seit js-controller
|
|
|
398
398
|
### Dashboard
|
|
399
399
|
|
|
400
400
|
**Dashboard aktivieren** (Admin-Checkbox, standardmäßig aus): spiegelt
|
|
401
|
-
zusätzlich zum einzelnen aktuellen Einsatz unter [
|
|
401
|
+
zusätzlich zum einzelnen aktuellen Einsatz unter [einsatzAktuell](#einsatzaktuell)
|
|
402
402
|
die letzten N Einsätze, die zum konfigurierten Monitor dieser Instanz
|
|
403
403
|
passen, als `dashboard.einsatz1` … `dashboard.einsatzN`. Sinnvoll bei
|
|
404
404
|
einer Monitor-ID, die auf "alle Wachalarme" (`0`) oder einen größeren
|
|
405
405
|
Kreis/Träger eingestellt ist, wo mehrere Einsätze gleichzeitig aktiv
|
|
406
|
-
sein können und `
|
|
406
|
+
sein können und `einsatzAktuell.*` allein immer nur den jeweils aktuellsten
|
|
407
407
|
zeigt.
|
|
408
408
|
|
|
409
409
|
Anders als die dauerhaft offene `/waip`-Verbindung dieses Adapters wird
|
|
@@ -426,7 +426,7 @@ das Minimum beim **Refresh-Intervall** unten trägt dem Rechnung.
|
|
|
426
426
|
Zusätzlich zum regulären Timer läuft ein Refresh auch einmal sofort
|
|
427
427
|
nach jedem (Neu-)Start des Adapters (damit das Dashboard nicht bis zum
|
|
428
428
|
konfigurierten Intervall leer bleibt) sowie einmal bei jedem neuen
|
|
429
|
-
Alarm für den eigenen Monitor dieser Instanz (`
|
|
429
|
+
Alarm für den eigenen Monitor dieser Instanz (`einsatzAktuell.*`). Ein
|
|
430
430
|
manueller Refresh lässt sich jederzeit über den Button-State
|
|
431
431
|
`dashboard.refreshNow` auslösen, z. B. per VIS-Button oder Skript.
|
|
432
432
|
|
|
@@ -435,11 +435,11 @@ eigens für Dashboard-Slots erzeugt – sie werden aus demselben
|
|
|
435
435
|
Datei-Fundus abgeleitet, den [Einsatzkarte](#einsatzkarte) für den
|
|
436
436
|
eigenen Monitor dieser Instanz bereits erzeugt hat. Ein Slot hat also
|
|
437
437
|
nur dann ein Kartenbild, wenn dieser Adapter für genau diesen Einsatz
|
|
438
|
-
über die eigene `
|
|
438
|
+
über die eigene `einsatzAktuell.*`-Alarmverarbeitung bereits eines erzeugt
|
|
439
439
|
hat – am vollständigsten, wenn die **Monitor-ID** auf `0` (alle
|
|
440
440
|
Wachalarme) steht und **Kartenbild für jeden Einsatz erzeugen**
|
|
441
441
|
aktiviert ist, da dann jeder Einsatz, der im Dashboard erscheinen kann,
|
|
442
|
-
zuvor auch schon einmal `
|
|
442
|
+
zuvor auch schon einmal `einsatzAktuell.*` durchlaufen hat. Bei einer
|
|
443
443
|
enger gefassten Monitor-ID fehlt Dashboard-Slots für Einsätze außerhalb
|
|
444
444
|
der eigenen Alarm-Historie das Kartenbild – das ist erwartetes
|
|
445
445
|
Verhalten, kein Fehler.
|
|
@@ -457,7 +457,7 @@ noch offen ist).
|
|
|
457
457
|
## States (unter `waip-web.0.*`)
|
|
458
458
|
|
|
459
459
|
Rückmeldungen und Routen sind pro Einsatz Listen (1:n). Sie liegen als
|
|
460
|
-
**flache** JSON-Arrays unter `
|
|
460
|
+
**flache** JSON-Arrays unter `einsatzAktuell.json.*` (keine verschachtelten
|
|
461
461
|
Objekte/Arrays innerhalb einer Zeile), damit sie direkt an VIS-Tabellen-
|
|
462
462
|
Widgets gebunden werden können – ergänzt um schnell bindbare Zähler,
|
|
463
463
|
damit Bindings und Trigger komplett ohne JSON-Parsing auskommen.
|
|
@@ -478,16 +478,16 @@ damit Bindings und Trigger komplett ohne JSON-Parsing auskommen.
|
|
|
478
478
|
| `registrationAccepted` | boolean | `true` sobald das erste Event empfangen wurde, sonst `false` direkt nach Connect oder nach Ablauf des Registrierungs-Timeouts |
|
|
479
479
|
| `registrationPending` | boolean | `true` direkt nach Connect, solange noch auf eine Antwort vom Server gewartet wird, sonst `false` sobald bestätigt oder Timeout erreicht |
|
|
480
480
|
|
|
481
|
-
###
|
|
481
|
+
### einsatzAktuell
|
|
482
482
|
|
|
483
483
|
Flache Felder des aktuell laufenden Einsatzes. Werden bei `io.standby`
|
|
484
484
|
geleert (`null`/`0`), analog zum offiziellen Frontend – `alarmAktiv` ist
|
|
485
485
|
damit ein verlässlicher Schalter dafür, ob hier gerade echte Live-Daten
|
|
486
486
|
stehen. Der zuletzt abgeschlossene Einsatz bleibt trotzdem über
|
|
487
|
-
`
|
|
487
|
+
`einsatzAktuell.json.history` abrufbar:
|
|
488
488
|
|
|
489
489
|
> **Hinweis:** Der Adapter bildet immer nur den zuletzt aktiv gemeldeten
|
|
490
|
-
> Einsatz ab (`
|
|
490
|
+
> Einsatz ab (`einsatzAktuell.*` bzw. `einsatzAktuell.json.current`) – analog zum
|
|
491
491
|
> Alarmmonitor des offiziellen WAIP-Web-Frontends. Theoretisch können in
|
|
492
492
|
> WAIP-Web mehrere Einsätze gleichzeitig aktiv sein (z. B. wenn kurz
|
|
493
493
|
> hintereinander zwei Alarmierungen eingehen). Diese States sind **kein
|
|
@@ -534,7 +534,7 @@ stehen. Der zuletzt abgeschlossene Einsatz bleibt trotzdem über
|
|
|
534
534
|
| `rueckmeldungen.funktionen.ma` | number | Anzahl Rückmeldungen als Maschinist |
|
|
535
535
|
| `rueckmeldungen.funktionen.med` | number | Anzahl Rückmeldungen mit medizinischer Befähigung |
|
|
536
536
|
|
|
537
|
-
###
|
|
537
|
+
### einsatzAktuell.json
|
|
538
538
|
|
|
539
539
|
Flache JSON-Objekte/Arrays, maximal eine Verschachtelungsebene, gedacht
|
|
540
540
|
zum direkten Binden an VIS-Tabellen-Widgets (verschachtelte Strukturen wie
|
|
@@ -542,23 +542,32 @@ ein einfaches `{routen, rueckmeldungen, ...}`-Objekt werden von diesen
|
|
|
542
542
|
Widgets in der Regel nicht dargestellt). `routen`/`rueckmeldungen`/
|
|
543
543
|
`emAlarmiert`/`emWeitere` enthalten immer nur die Daten des **aktuellen**
|
|
544
544
|
Einsatzes – sie werden bei `io.standby` geleert (`[]`) und sind **nicht**
|
|
545
|
-
Teil der History. Wie bei `
|
|
545
|
+
Teil der History. Wie bei `einsatzAktuell.*` oben gilt auch hier: `current`
|
|
546
546
|
enthält immer nur den zuletzt aktiven Einsatz – siehe Hinweis im
|
|
547
|
-
Abschnitt [`
|
|
547
|
+
Abschnitt [`einsatzAktuell`](#einsatzaktuell).
|
|
548
548
|
|
|
549
549
|
| State | Typ | Beschreibung |
|
|
550
550
|
| --- | --- | --- |
|
|
551
|
-
| `current` | string (JSON-Array) | Flache Daten des aktuellen Einsatzes: dieselben 12 Felder wie die einzelnen `
|
|
552
|
-
| `
|
|
553
|
-
| `routen` | string (JSON-Array) | Routen des aktuellen Einsatzes; jeder Eintrag hat `nr_wache`, `name_wache`, `color`, `lat`, `lon` (`position` zu flachem `lat`/`lon` aufgelöst) |
|
|
551
|
+
| `current` | string (JSON-Array) | Flache Daten des aktuellen Einsatzes: dieselben 12 Felder wie die einzelnen `einsatzAktuell.*`-States oben (`id` … `sondersignal`, plus `beschreibung`, `alarmierungszeit`, `lat`/`lon`), zusätzlich `registeredMonitor`/`registeredMonitorName` (der Monitor, auf den der Adapter zu diesem Zeitpunkt registriert war), gebündelt als ein Objekt innerhalb eines Arrays mit einem Element (`[]` falls kein Einsatz aktiv) – der Array-Wrapper ist nötig, weil die meisten Tabellen-Widgets am Root ein Array statt eines nackten Objekts erwarten |
|
|
552
|
+
| `history` | string (JSON-Array) | Letzte 10 abgeschlossenen Einsätze, gleiches Schema wie `current`, ein Array-Eintrag pro Einsatz, geschrieben bei `io.standby` |
|
|
553
|
+
| `routen` | string (JSON-Array) | Routen des aktuellen Einsatzes; jeder Eintrag hat `nr_wache`, `name_wache`, `color`, `lat`, `lon` (`position` zu flachem `lat`/`lon` aufgelöst - siehe Hinweis unten, wofür `lat`/`lon` bei einer Route steht) |
|
|
554
554
|
| `rueckmeldungen` | string (JSON-Array) | Rückmeldungen des aktuellen Einsatzes, wie vom Server empfangen |
|
|
555
555
|
| `emAlarmiert` | string (JSON-Array) | Alarmierte Einsatzmittel des aktuellen Einsatzes; jeder Eintrag hat `name`, `zeit`, `wache`, `zeit_alarmierung_iso`, `zeit_ausgerueckt_iso` |
|
|
556
556
|
| `emWeitere` | string (JSON-Array) | Weitere Einsatzmittel des aktuellen Einsatzes, gleiches Schema wie `emAlarmiert` |
|
|
557
557
|
|
|
558
|
-
|
|
558
|
+
> **Hinweis:** `routen[].lat`/`.lon` ist der **Standort der alarmierten Wache**, kein
|
|
559
|
+
> Punkt entlang der tatsächlichen Anfahrtsroute und nicht der Einsatzort. Der Server
|
|
560
|
+
> sendet jede Route entweder als vollständigen `LineString` (die berechnete Strecke
|
|
561
|
+
> von der Wache zum Einsatzort) oder, wenn keine Strecke berechnet werden konnte, als
|
|
562
|
+
> einzelnes Koordinatenpaar für die Wache selbst - in beiden Fällen löst der Adapter
|
|
563
|
+
> `lat`/`lon` auf den Wachenstandort auf (im `LineString`-Fall der erste Punkt der
|
|
564
|
+
> Linie), damit die Bedeutung über alle Einträge hinweg konsistent bleibt. Die
|
|
565
|
+
> vollständige Routen-Geometrie selbst wird nicht als State bereitgestellt.
|
|
566
|
+
|
|
567
|
+
### einsatzAktuell.tts
|
|
559
568
|
|
|
560
569
|
Sprachansage (`io.playtts`) zum aktuell laufenden Einsatz – liegt unter
|
|
561
|
-
`
|
|
570
|
+
`einsatzAktuell` statt in einem eigenen Top-Level-Kanal, da sie ohne Einsatzbezug
|
|
562
571
|
keine Bedeutung hat. Keine History: eine TTS-Ansage ist nur im Moment
|
|
563
572
|
relevant, deshalb wird nur die jeweils letzte vorgehalten.
|
|
564
573
|
|
|
@@ -574,7 +583,7 @@ relevant, deshalb wird nur die jeweils letzte vorgehalten.
|
|
|
574
583
|
Nur vorhanden, wenn [Dashboard](#dashboard) aktiviert ist – siehe dort
|
|
575
584
|
für den Objektbaum-Lebenszyklus bei Aktivierung/Deaktivierung/
|
|
576
585
|
Größenänderung. `dashboard.einsatzN` (`N` = 1 … die konfigurierte
|
|
577
|
-
Slot-Anzahl) spiegelt dasselbe Schema wie `
|
|
586
|
+
Slot-Anzahl) spiegelt dasselbe Schema wie `einsatzAktuell`/`einsatzAktuell.json`
|
|
578
587
|
oben, für den N-aktuellsten Einsatz, der zum Monitor dieser Instanz
|
|
579
588
|
passt – **nicht** beschränkt auf den einen aktuellen Einsatz. Alle
|
|
580
589
|
Felder eines belegten Slots werden bei jedem Refresh immer komplett
|
|
@@ -582,13 +591,13 @@ neu geschrieben (nicht nur bei Änderung), damit laufende Rückmeldungen
|
|
|
582
591
|
für einen Einsatz, der über mehrere Refreshs hinweg auf demselben Slot
|
|
583
592
|
bleibt, weiter aktualisiert werden; ein unbelegter Slot (weniger
|
|
584
593
|
passende Einsätze als konfigurierte Slots) trägt an allen Feldern den
|
|
585
|
-
Leerwert, genau wie `
|
|
594
|
+
Leerwert, genau wie `einsatzAktuell.*`, wenn kein Einsatz aktiv ist.
|
|
586
595
|
|
|
587
596
|
Bewusst **ohne** `restzeit`/`ablaufzeit` (WAIP-Webs `/dbrd/`-
|
|
588
597
|
Einsatzdetaildaten haben kein entsprechendes Feld, anders als der
|
|
589
|
-
Live-Alarmstream unter `/waip`) und ohne Entsprechung zu `
|
|
598
|
+
Live-Alarmstream unter `/waip`) und ohne Entsprechung zu `einsatzAktuell.tts`
|
|
590
599
|
(kein TTS-Event im `/dbrd`-Namespace vorhanden). Umgekehrt hat
|
|
591
|
-
`dashboard.einsatzN.json.wachen` kein `
|
|
600
|
+
`dashboard.einsatzN.json.wachen` kein `einsatzAktuell.json.*`-Gegenstück – es
|
|
592
601
|
stammt aus einem Feld (`wachen[]`, die am Einsatz beteiligten Wachen),
|
|
593
602
|
das nur im `/dbrd`-Payload enthalten ist.
|
|
594
603
|
|
|
@@ -598,23 +607,23 @@ das nur im `/dbrd`-Payload enthalten ist.
|
|
|
598
607
|
| `einsatzN.alarmAktiv` | boolean | `true`, solange der Slot mit einem passenden Einsatz belegt ist |
|
|
599
608
|
| `einsatzN.id` | number | Interne Einsatz-ID |
|
|
600
609
|
| `einsatzN.uuid` | string | Eindeutige Einsatz-UUID |
|
|
601
|
-
| `einsatzN.einsatzart` | string | Gleiche Bedeutung wie [
|
|
610
|
+
| `einsatzN.einsatzart` | string | Gleiche Bedeutung wie [einsatzAktuell.einsatzart](#einsatzaktuell) |
|
|
602
611
|
| `einsatzN.stichwort` | string | Alarmstichwort |
|
|
603
|
-
| `einsatzN.beschreibung` | string | Beschreibung zum Stichwort, ermittelt wie bei [
|
|
612
|
+
| `einsatzN.beschreibung` | string | Beschreibung zum Stichwort, ermittelt wie bei [einsatzAktuell.beschreibung](#einsatzaktuell) |
|
|
604
613
|
| `einsatzN.ort` | string | Ort |
|
|
605
614
|
| `einsatzN.ortsteil` | string | Ortsteil (falls abweichend von `ort`) |
|
|
606
615
|
| `einsatzN.alarmierungszeit` | string (date) | Alarmierungszeitpunkt |
|
|
607
616
|
| `einsatzN.sondersignal` | number | `1` = Sondersignal (Blaulicht & Martinshorn), sonst keins |
|
|
608
|
-
| `einsatzN.latitude` / `einsatzN.longitude` | number | Einsatzort, gleiche Normalisierung wie bei [
|
|
617
|
+
| `einsatzN.latitude` / `einsatzN.longitude` | number | Einsatzort, gleiche Normalisierung wie bei [einsatzAktuell](#einsatzaktuell) |
|
|
609
618
|
| `einsatzN.kartenbildPfad` | string | Pfad zu einem passenden, bereits erzeugten Einsatzkarten-Bild – siehe [Dashboard](#dashboard) oben. Leer, falls keins gefunden wurde |
|
|
610
619
|
| `einsatzN.routenGesamt` | number | Anzahl Routen für den Einsatz dieses Slots |
|
|
611
620
|
| `einsatzN.rueckmeldungenGesamt` | number | Rückmeldungen gesamt für den Einsatz dieses Slots |
|
|
612
|
-
| `einsatzN.rueckmeldungen.rollen.*` / `.funktionen.*` | number | Dieselben acht Rückmeldungs-Zähler wie bei [
|
|
613
|
-
| `einsatzN.json.current` | string (JSON-Array) | Flache Einsatzdaten dieses Slots, gleiches Schema wie `
|
|
614
|
-
| `einsatzN.json.routen` | string (JSON-Array) | Routen des Einsatzes dieses Slots, gleiches Schema wie `
|
|
621
|
+
| `einsatzN.rueckmeldungen.rollen.*` / `.funktionen.*` | number | Dieselben acht Rückmeldungs-Zähler wie bei [einsatzAktuell.rueckmeldungen](#einsatzaktuell), pro Slot |
|
|
622
|
+
| `einsatzN.json.current` | string (JSON-Array) | Flache Einsatzdaten dieses Slots, gleiches Schema wie `einsatzAktuell.json.current` (ohne `registeredMonitor`/`registeredMonitorName`) |
|
|
623
|
+
| `einsatzN.json.routen` | string (JSON-Array) | Routen des Einsatzes dieses Slots, gleiches Schema wie `einsatzAktuell.json.routen` |
|
|
615
624
|
| `einsatzN.json.rueckmeldungen` | string (JSON-Array) | Rückmeldungen des Einsatzes dieses Slots |
|
|
616
625
|
| `einsatzN.json.emAlarmiert` | string (JSON-Array) | Alarmierte Einsatzmittel des Einsatzes dieses Slots |
|
|
617
|
-
| `einsatzN.json.wachen` | string (JSON-Array) | Am Einsatz dieses Slots beteiligte Wachen (`em_station_id`/`em_station_name`) – nur über `/dbrd` verfügbar, kein `
|
|
626
|
+
| `einsatzN.json.wachen` | string (JSON-Array) | Am Einsatz dieses Slots beteiligte Wachen (`em_station_id`/`em_station_name`) – nur über `/dbrd` verfügbar, kein `einsatzAktuell.json.*`-Gegenstück |
|
|
618
627
|
|
|
619
628
|
### debug
|
|
620
629
|
|