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 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) · [einsatz](#einsatz) ·
28
- [einsatz.json](#einsatzjson) · [einsatz.tts](#einsatztts) ·
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.** `einsatz.json.current` an ein
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
- `einsatz.beschreibung` macht aus einem kryptischen Alarmierungscode
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 `einsatz.stichwort` auf der
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.** `einsatz.alarmAktiv`
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 `einsatz.stichwort`/`einsatz.beschreibung`
100
- + `einsatz.ort` zu versenden oder eine Lichtszene auszulösen – wenige
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.** `einsatz.tts.last` ist eine fertige, absolute
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 `einsatz.rueckmeldungen.*`
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.** `einsatz.json.history10` hält die letzten
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.** `einsatz.json.routen`
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 – `einsatz.*` in eine
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 (`einsatz.json.history10`)
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 `einsatz.json.*` – ohne Verschachtelung, damit
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 `einsatz.json.history10` und `debug.monitorAudit` (beide
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
- (`einsatz.*`) ebenfalls geleert und füllen sich erst wieder, sobald
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
- `einsatz.json.routen`/`.rueckmeldungen` und die Rückmeldungs-Zähler
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 `einsatz.stichwort`
176
- (`einsatz.beschreibung`), lokal ermittelt aus einer selbst pflegbaren
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 [einsatz](#einsatz)), werden standardmäßig
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 `einsatz.*`-States werden aktualisiert, kein
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
- `einsatz.stichwort` wird unverändert vom Server als bloßer Code
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
- `einsatz.beschreibung` schließt diese Lücke **vollständig lokal**, es
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
- `einsatz.beschreibung` einfach `null` – kein Fehler.
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 `einsatz.kartenbildPfad` geschrieben (siehe
355
- [einsatz](#einsatz)) – typische Verwendung ist der Versand dieser Datei
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 – `einsatz.kartenbildPfad` trägt daher
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. `einsatz.alarmAktiv`) verfügbar werden – allerdings
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 `einsatz.kartenbildPfad` bleibt für diesen
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
- `einsatz.kartenbildPfad` ist deshalb ein echter, absoluter
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 [einsatz](#einsatz)
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 `einsatz.*` allein immer nur den jeweils aktuellsten
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 (`einsatz.*`). Ein
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 `einsatz.*`-Alarmverarbeitung bereits eines erzeugt
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 `einsatz.*` durchlaufen hat. Bei einer
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 `einsatz.json.*` (keine verschachtelten
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
- ### einsatz
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
- `einsatz.json.history10` abrufbar:
487
+ `einsatzAktuell.json.history` abrufbar:
488
488
 
489
489
  > **Hinweis:** Der Adapter bildet immer nur den zuletzt aktiv gemeldeten
490
- > Einsatz ab (`einsatz.*` bzw. `einsatz.json.current`) – analog zum
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
- ### einsatz.json
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 `einsatz.*` oben gilt auch hier: `current`
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 [`einsatz`](#einsatz).
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 `einsatz.*`-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
- | `history10` | 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) |
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
- ### einsatz.tts
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
- `einsatz` statt in einem eigenen Top-Level-Kanal, da sie ohne Einsatzbezug
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 `einsatz`/`einsatz.json`
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 `einsatz.*`, wenn kein Einsatz aktiv ist.
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 `einsatz.tts`
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 `einsatz.json.*`-Gegenstück – es
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 [einsatz.einsatzart](#einsatz) |
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 [einsatz.beschreibung](#einsatz) |
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 [einsatz](#einsatz) |
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 [einsatz.rueckmeldungen](#einsatz), pro Slot |
613
- | `einsatzN.json.current` | string (JSON-Array) | Flache Einsatzdaten dieses Slots, gleiches Schema wie `einsatz.json.current` (ohne `registeredMonitor`/`registeredMonitorName`) |
614
- | `einsatzN.json.routen` | string (JSON-Array) | Routen des Einsatzes dieses Slots, gleiches Schema wie `einsatz.json.routen` |
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 `einsatz.json.*`-Gegenstück |
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