iobroker.waip-web 0.7.20 → 0.7.26

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
@@ -16,9 +16,11 @@ ohne dass ein Browser-Tab dauerhaft offen sein muss.
16
16
  - [Über WAIP-Web](#über-waip-web)
17
17
  - [Praktische Anwendungsfälle](#praktische-anwendungsfälle)
18
18
  - [Funktionen](#funktionen)
19
- - [Warum ein Session-Cookie nötig ist](#warum-ein-session-cookie-nötig-ist)
20
19
  - [Konfiguration](#konfiguration)
21
- - [Stichwort-Beschreibungen](#stichwort-beschreibungen)
20
+ - [Verbindung](#verbindung)
21
+ - [Warum ein Session-Cookie nötig ist](#warum-ein-session-cookie-nötig-ist)
22
+ - [Rettungsdienst-Stichwörter](#rettungsdienst-stichwörter)
23
+ - [Stichwort-Stammdaten](#stichwort-stammdaten)
22
24
  - [States (unter `waip-web.0.*`)](#states-unter-waip-web0)
23
25
  - [info](#info) · [status](#status) · [einsatz](#einsatz) ·
24
26
  [einsatz.json](#einsatzjson) · [einsatz.tts](#einsatztts) ·
@@ -81,14 +83,21 @@ Rettungsdienst-Wache:
81
83
  und alarmierte Einsatzmittel erscheinen automatisch, ohne dass dort
82
84
  dauerhaft ein Browser-Tab offen gehalten werden muss (genau dafür
83
85
  existiert dieser Adapter).
86
+ - **Klartext-Stichwort auf Anzeigen und Benachrichtigungen.**
87
+ `einsatz.beschreibung` macht aus einem kryptischen Alarmierungscode
88
+ (`B:Wald groß/WSP`, `R1N0`) eine lesbare Beschreibung
89
+ ("Wald-/Getreidefeldbrand (groß)", "Rettungswagen: 1,
90
+ Notfalleinsatzfahrzeug: 0") – neben `einsatz.stichwort` auf der
91
+ Wandanzeige einblenden oder in Push-Benachrichtigung/TTS-Ansage mit
92
+ aufnehmen, damit nicht jeder alle Stichwörter auswendig kennen muss.
84
93
  - **Automationen direkt bei Alarmeingang auslösen.** `einsatz.alarmAktiv`
85
94
  (ggf. zusammen mit `info.connection`) in einem Script/einer Blockly-Regel
86
95
  beobachten, um bei Alarm Licht in der Fahrzeughalle einzuschalten, ein
87
96
  Tor/eine Tür zu öffnen, eine Push-Benachrichtigung (z. B. über einen
88
- Telegram-/Pushover-Adapter) mit `einsatz.stichwort` + `einsatz.ort` zu
89
- versenden oder eine Lichtszene auszulösen – wenige Sekunden nach der
90
- eigentlichen Alarmierung, da ioBroker-State-Änderungen sofort feuern und
91
- kein Polling nötig ist.
97
+ Telegram-/Pushover-Adapter) mit `einsatz.stichwort`/`einsatz.beschreibung`
98
+ + `einsatz.ort` zu versenden oder eine Lichtszene auszulösen – wenige
99
+ Sekunden nach der eigentlichen Alarmierung, da ioBroker-State-Änderungen
100
+ sofort feuern und kein Polling nötig ist.
92
101
  - **Alarm laut ansagen.** `einsatz.tts.last` ist eine fertige, absolute
93
102
  mp3-URL; eine `sonos`-/`snapcast`-/`text2speech`-Automation darauf
94
103
  ansetzen (oder die URL direkt abspielen), um den Einsatz über
@@ -161,11 +170,31 @@ Rettungsdienst-Wache:
161
170
  laufende Einsätze sind aktuell nur über das Dashboard der
162
171
  WAIP-Web-Instanz selbst einsehbar
163
172
  - Optionale Klartext-Beschreibung zu `einsatz.stichwort`
164
- (`einsatz.beschreibung`), lokal ermittelt aus einer selbst pflegbaren,
165
- export-/importierbaren Stichwort-Tabelle sowie einem optionalen
166
- Dekoder für das von mehreren Leitstellen verwendete
167
- Rettungsdienst-Stichwortschema (`R<RTW>N<NEF>`) - siehe
168
- [Stichwort-Beschreibungen](#stichwort-beschreibungen)
173
+ (`einsatz.beschreibung`), lokal ermittelt aus einer selbst pflegbaren
174
+ Stichwort-Tabelle sowie einem optionalen Dekoder für das von
175
+ mehreren Leitstellen verwendete Rettungsdienst-Stichwortschema
176
+ (`R<RTW>N<NEF>`) - siehe
177
+ [Rettungsdienst-Stichwörter](#rettungsdienst-stichwörter)
178
+
179
+ ## Konfiguration
180
+
181
+ In der Admin-Oberfläche der Adapterinstanz sind die Einstellungen auf
182
+ drei Tabs verteilt: **Verbindung**, **Rettungsdienst-Stichwörter** und
183
+ **Stichwort-Stammdaten** – alle drei unten näher beschrieben.
184
+
185
+ ### Verbindung
186
+
187
+ | Feld | Beschreibung | Default |
188
+ | --- | --- | --- |
189
+ | WAIP-Server-URL | Basis-URL der WAIP-Web-Instanz | `https://wachalarm.leitstelle-lausitz.de` |
190
+ | Monitor-ID | Auswahl per Live-Dropdown, geladen von der `/waip/`-Übersichtsseite des konfigurierten Servers und gruppiert nach Leitstelle/Kreis/Träger/Wache; manuelle Eingabe bleibt möglich, falls der Server nicht erreichbar ist. Leer/`0` = globaler Monitor (alle Einsätze) | *(leer)* |
191
+ | Registrierungs-Timeout (s) | Zeit bis eine ausbleibende Registrierungsbestätigung geloggt wird | `10` |
192
+ | Wiederverbindungs-Verzögerung (s) | Wartezeit vor manuellem Reconnect nach Disconnect/Fehler | `5` |
193
+
194
+ Das Session-Keepalive-Intervall ist **nicht konfigurierbar** – es wird bei
195
+ jeder Erneuerung vollautomatisch aus der vom Server gemeldeten Cookie-
196
+ Laufzeit abgeleitet (min. 55s, max. 5 Min., analog zu
197
+ `/js/session_keepalive.js` der Website selbst).
169
198
 
170
199
  ### Warum ein Session-Cookie nötig ist
171
200
 
@@ -185,65 +214,64 @@ Laufzeit, mindestens 55 Sekunden, höchstens die konfigurierte Obergrenze) –
185
214
  genau die gleiche Klammerung, die auch `/js/session_keepalive.js` der
186
215
  Website selbst verwendet.
187
216
 
188
- ## Konfiguration
189
-
190
- In der Admin-Oberfläche der Adapterinstanz:
191
-
192
- | Feld | Beschreibung | Default |
193
- | --- | --- | --- |
194
- | WAIP-Server-URL | Basis-URL der WAIP-Web-Instanz | `https://wachalarm.leitstelle-lausitz.de` |
195
- | Monitor-ID | Auswahl per Live-Dropdown, geladen von der `/waip/`-Übersichtsseite des konfigurierten Servers und gruppiert nach Leitstelle/Kreis/Träger/Wache; manuelle Eingabe bleibt möglich, falls der Server nicht erreichbar ist. Leer/`0` = globaler Monitor (alle Einsätze) | *(leer)* |
196
- | Registrierungs-Timeout (s) | Zeit bis eine ausbleibende Registrierungsbestätigung geloggt wird | `10` |
197
- | Wiederverbindungs-Verzögerung (s) | Wartezeit vor manuellem Reconnect nach Disconnect/Fehler | `5` |
198
-
199
- Das Session-Keepalive-Intervall ist **nicht konfigurierbar** – es wird bei
200
- jeder Erneuerung vollautomatisch aus der vom Server gemeldeten Cookie-
201
- Laufzeit abgeleitet (min. 55s, max. 5 Min., analog zu
202
- `/js/session_keepalive.js` der Website selbst).
203
-
204
- ### Stichwort-Beschreibungen
217
+ ### Rettungsdienst-Stichwörter
205
218
 
206
219
  `einsatz.stichwort` wird unverändert vom Server als bloßer Code
207
220
  übernommen (z.B. `B2`, `H:VU mit P`) – WAIP-Web selbst erklärt nicht,
208
221
  was das bedeutet, und es gibt kein bundesweit einheitliches Schema:
209
222
  jede Leitstelle nutzt ihr eigenes Stichwortverzeichnis.
210
223
  `einsatz.beschreibung` schließt diese Lücke **vollständig lokal**, es
211
- werden dabei keine Daten irgendwohin gesendet:
212
-
213
- 1. **Rettungsdienst-Dekodierung** (Admin-Checkbox, standardmäßig aus):
214
- passt das Stichwort auf das Muster `R<Anzahl RTW>N<Anzahl NEF>[p][f][-NT]`
215
- (z.B. `R1N0` → "Rettungswagen: 1, Notfalleinsatzfahrzeug: 0"), wird
216
- automatisch eine Beschreibung erzeugt. Dieses Schema wird von
217
- mehreren Leitstellen verwendet, nicht nur einer einzelnen Instanz
218
- (siehe [die dokumentierte Erklärung der Leitstelle Lausitz](https://www.leitstelle-lausitz.de/anpassung-der-einsatzstichworte-rettungsdienst/)
219
- dazu) – nur aktivieren, wenn eure Leitstelle dieses Muster tatsächlich
220
- verwendet. Der Text für jeden Teil ist selbst konfigurierbar (5
221
- zusätzliche Textfelder erscheinen, sobald die Checkbox aktiviert
222
- ist), da der Adapter mehrsprachig ist und diese Bezeichnungen nicht
223
- automatisch übersetzt werden:
224
-
225
- | Teil | Bedeutung | Default-Bezeichnung |
226
- | --- | --- | --- |
227
- | `R<n>` | Anzahl Rettungswagen | `Rettungswagen` |
228
- | `N<n>` | Anzahl Notfalleinsatzfahrzeuge | `Notfalleinsatzfahrzeug` |
229
- | Suffix `p` | Polytrauma | `Polytrauma` |
230
- | Suffix `f` | First Responder einbezogen | `First Responder` |
231
- | Suffix `-NT` | Notfalltransport mit Notfallkrankenwagen | `Notfalltransport mit Notfallkrankenwagen` |
232
- 2. **Stichwort-Tabelle** (Admin-Tabelle, wird nur geprüft, falls Schritt 1
233
- nicht gegriffen hat): eine Liste von `{Stichwort-Muster, Beschreibung,
234
- Abgleich-Typ}`-Zeilen – Abgleich-Typ ist `beginnt mit` oder `enthält`,
235
- der Vergleich ist case-insensitiv, und passen mehrere Zeilen, gewinnt
236
- automatisch das **spezifischste (längste) Muster** – die Zeilenreihenfolge
237
- hat keinen Einfluss auf den Abgleich, die Tabelle kann also gefahrlos
238
- nach Stichwort sortiert werden (Klick auf die Spaltenüberschrift). Die
239
- Tabelle ist mit einer beispielhaften Feuerwehr-/Rettungsdienst-
240
- Stichwortliste (`B:...`/`H:...`) als Startpunkt vorbefüllt – das ist
241
- **nicht** für irgendeine bestimmte Leitstelle bestätigt, bei Bedarf
242
- anpassen oder komplett ersetzen. Die Tabelle lässt sich über die
243
- Buttons oberhalb davon als CSV exportieren/importieren.
244
-
245
- Passt weder Schritt 1 noch 2, bleibt `einsatz.beschreibung` einfach
246
- `null` – kein Fehler.
224
+ werden dabei keine Daten irgendwohin gesendet. Dieser Tab ist die erste
225
+ von zwei Quellen, die der Reihe nach geprüft werden (die zweite steht
226
+ unter [Stichwort-Stammdaten](#stichwort-stammdaten)):
227
+
228
+ **Rettungsdienst-Dekodierung** (Admin-Checkbox, standardmäßig aus):
229
+ passt das Stichwort auf das Muster `R<Anzahl RTW>N<Anzahl NEF>[p][f][-NT]`
230
+ (z.B. `R1N0` → "Rettungswagen: 1, Notfalleinsatzfahrzeug: 0"), wird
231
+ automatisch eine Beschreibung erzeugt. Zwei Schreibweisen des
232
+ `p`/`f`/`NT`-Teils werden erkannt: ohne Leerzeichen und mit Bindestrich
233
+ vor `NT` (z.B. `R1N1p`, `R1N0-NT`, siehe
234
+ [die dokumentierte Erklärung der Leitstelle Lausitz](https://www.leitstelle-lausitz.de/anpassung-der-einsatzstichworte-rettungsdienst/)
235
+ dazu) sowie mit Leerzeichen und ohne Bindestrich (z.B. `R1N1 p`,
236
+ `R1N0 nt`, wie von der IRLS Brandenburg verwendet) – dieses Schema
237
+ (in beiden Schreibweisen) wird von mehreren Leitstellen verwendet,
238
+ nicht nur diesen beiden – nur aktivieren, wenn eure Leitstelle eines
239
+ dieser Muster tatsächlich verwendet. Der Text für jeden Teil ist
240
+ selbst konfigurierbar (5 zusätzliche Textfelder erscheinen, sobald
241
+ die Checkbox aktiviert ist), da der Adapter mehrsprachig ist und
242
+ diese Bezeichnungen nicht automatisch übersetzt werden:
243
+
244
+ | Teil | Bedeutung | Default-Bezeichnung |
245
+ | --- | --- | --- |
246
+ | `R<n>` | Anzahl Rettungswagen | `Rettungswagen` |
247
+ | `N<n>` | Anzahl Notfalleinsatzfahrzeuge | `Notfalleinsatzfahrzeug` |
248
+ | Suffix `p` | Polytrauma | `Polytrauma` |
249
+ | Suffix `f` | First Responder einbezogen | `First Responder` |
250
+ | Suffix `-NT`/` nt` | Notfalltransport mit Notfallkrankenwagen | `Notfalltransport mit Notfallkrankenwagen` |
251
+
252
+ ### Stichwort-Stammdaten
253
+
254
+ Wird nur geprüft, falls der Dekoder auf dem Tab
255
+ [Rettungsdienst-Stichwörter](#rettungsdienst-stichwörter) nicht gegriffen
256
+ hat: eine Liste von `{Stichwort-Muster, Beschreibung, Abgleich-Typ}`-Zeilen
257
+ – Abgleich-Typ ist `beginnt mit` oder `enthält`, der Vergleich ist
258
+ case-insensitiv, und passen mehrere Zeilen, gewinnt automatisch das
259
+ **spezifischste (längste) Muster** – die Zeilenreihenfolge hat keinen
260
+ Einfluss auf den Abgleich, die Tabelle kann also gefahrlos nach jeder
261
+ Spalte sortiert werden (Klick auf die Spaltenüberschrift). Die Tabelle ist mit
262
+ einer beispielhaften Feuerwehr-/Rettungsdienst-Stichwortliste
263
+ (`B:...`/`H:...`) als Startpunkt vorbefüllt – das ist **nicht** für
264
+ irgendeine bestimmte Leitstelle bestätigt, bei Bedarf anpassen oder
265
+ komplett ersetzen. Zum Sichern/Übertragen dieser Tabelle die
266
+ Standard-Instanzkonfiguration von ioBroker exportieren/importieren
267
+ (JSON). Nach einem solchen Import **die Admin-Seite neu laden**, bevor
268
+ du diese Tabelle prüfst – der offene Konfigurationsdialog aktualisiert
269
+ sie bei einem externen Import nicht automatisch (eine
270
+ State-Sync-Einschränkung der Admin-Tabellenkomponente selbst, nicht
271
+ etwas, das dieser Adapter beeinflussen kann).
272
+
273
+ Passt weder diese Tabelle noch der Dekoder oben, bleibt
274
+ `einsatz.beschreibung` einfach `null` – kein Fehler.
247
275
 
248
276
  ## States (unter `waip-web.0.*`)
249
277
 
@@ -306,7 +334,7 @@ stehen. Der zuletzt abgeschlossene Einsatz bleibt trotzdem über
306
334
  | `uuid` | string | Eindeutige Einsatz-UUID (dient auch der Zuordnung von Rückmeldungen) |
307
335
  | `einsatzart` | string | z. B. „Brandeinsatz", „Hilfeleistungseinsatz", „Rettungseinsatz", „Krankentransport" |
308
336
  | `stichwort` | string | Alarmstichwort |
309
- | `beschreibung` | string | Beschreibung zu `stichwort`, lokal ermittelt (wird nicht vom Server gesendet) - siehe [Stichwort-Beschreibungen](#stichwort-beschreibungen) unten. `null` falls nichts passte |
337
+ | `beschreibung` | string | Beschreibung zu `stichwort`, lokal ermittelt (wird nicht vom Server gesendet) - siehe [Rettungsdienst-Stichwörter](#rettungsdienst-stichwörter)/[Stichwort-Stammdaten](#stichwort-stammdaten) unten. `null` falls nichts passte |
310
338
  | `ort` | string | Ort |
311
339
  | `ortsteil` | string | Ortsteil (falls abweichend vom Ort) |
312
340
  | `zeitstempel` | string (date) | Alarmzeit |
package/README.md CHANGED
@@ -25,9 +25,11 @@ open.
25
25
  - [About WAIP-Web](#about-waip-web)
26
26
  - [Practical use cases](#practical-use-cases)
27
27
  - [Features](#features)
28
- - [Why a session cookie is needed](#why-a-session-cookie-is-needed)
29
28
  - [Configuration](#configuration)
30
- - [Alarm keyword descriptions](#alarm-keyword-descriptions)
29
+ - [Connection](#connection)
30
+ - [Why a session cookie is needed](#why-a-session-cookie-is-needed)
31
+ - [Rescue-service keywords](#rescue-service-keywords)
32
+ - [Keyword descriptions](#keyword-descriptions)
31
33
  - [States (under `waip-web.0.*`)](#states-under-waip-web0)
32
34
  - [info](#info) · [status](#status) · [einsatz](#einsatz) ·
33
35
  [einsatz.json](#einsatzjson) · [einsatz.tts](#einsatztts) ·
@@ -89,13 +91,20 @@ adapter provides – typical use in a fire station/EMS environment:
89
91
  automatically, without anyone having to keep a browser tab open on that
90
92
  screen (which is the whole reason this adapter exists in the first
91
93
  place).
94
+ - **Plain-language keyword on displays and notifications.**
95
+ `einsatz.beschreibung` turns a cryptic dispatch code (`B:Wald groß/WSP`,
96
+ `R1N0`) into a readable description ("Wald-/Getreidefeldbrand (groß)",
97
+ "Rettungswagen: 1, Notfalleinsatzfahrzeug: 0") – bind it next to
98
+ `einsatz.stichwort` on the wall display or include it in the push
99
+ notification/TTS announcement, so members don't have to memorize every
100
+ keyword.
92
101
  - **Trigger automations the instant an alarm comes in.** Watch
93
102
  `einsatz.alarmAktiv` (or `info.connection` together with it) in a
94
103
  script/blockly rule to switch on lights in the vehicle hall, open a
95
104
  gate/door, send a push notification (e.g. via a Telegram/Pushover
96
- adapter) with `einsatz.stichwort` + `einsatz.ort`, or flash a
97
- smart-light scene – all a few seconds after the actual pager alert,
98
- no polling required since ioBroker state changes fire instantly.
105
+ adapter) with `einsatz.stichwort`/`einsatz.beschreibung` + `einsatz.ort`,
106
+ or flash a smart-light scene – all a few seconds after the actual pager
107
+ alert, no polling required since ioBroker state changes fire instantly.
99
108
  - **Announce the alarm out loud.** `einsatz.tts.last` is a ready-to-play
100
109
  absolute mp3 URL; point a `sonos`/`snapcast`/`text2speech`-style
101
110
  automation at it (or just play the URL directly) to have the incident
@@ -164,10 +173,30 @@ adapter provides – typical use in a fire station/EMS environment:
164
173
  concurrently active incidents can currently only be viewed via the
165
174
  WAIP-Web instance's own dashboard
166
175
  - Optional plain-language description for `einsatz.stichwort`
167
- (`einsatz.beschreibung`), resolved locally from a user-maintained,
168
- export-/importable keyword table plus an optional decoder for the
169
- `R<RTW>N<NEF>` rescue-service keyword scheme used by several dispatch
170
- centers - see [Alarm keyword descriptions](#alarm-keyword-descriptions)
176
+ (`einsatz.beschreibung`), resolved locally from a user-maintained
177
+ keyword table plus an optional decoder for the `R<RTW>N<NEF>`
178
+ rescue-service keyword scheme used by several dispatch
179
+ centers - see [Rescue-service keywords](#rescue-service-keywords)
180
+
181
+ ## Configuration
182
+
183
+ In the admin UI of the adapter instance, settings are grouped across
184
+ three tabs: **Connection**, **Rescue-service keywords** and **Keyword
185
+ descriptions** – see below for all three.
186
+
187
+ ### Connection
188
+
189
+ | Field | Description | Default |
190
+ | --- | --- | --- |
191
+ | WAIP server URL | Base URL of the WAIP-Web instance | `https://wachalarm.leitstelle-lausitz.de` |
192
+ | Monitor ID | Picked from a live dropdown, fetched from the configured server's `/waip/` overview page and grouped by Leitstelle/Kreis/Träger/Wache; manual entry stays possible if the server can't be reached. Empty/`0` = global monitor (all incidents) | *(empty)* |
193
+ | Registration timeout (s) | Time until a missing registration confirmation is logged | `10` |
194
+ | Reconnect delay (s) | Wait time before a manual reconnect after disconnect/error | `5` |
195
+
196
+ The session keepalive interval is **not configurable** – it's derived
197
+ fully automatically on every renewal from the cookie lifetime the server
198
+ reports (min. 55s, max. 5 min., matching `/js/session_keepalive.js` on
199
+ the site itself).
171
200
 
172
201
  ### Why a session cookie is needed
173
202
 
@@ -187,63 +216,60 @@ observed lifetime, at least 55 seconds, at most a fixed 5-minute ceiling)
187
216
  – the exact same clamping that `/js/session_keepalive.js` on the site
188
217
  itself uses.
189
218
 
190
- ## Configuration
191
-
192
- In the admin UI of the adapter instance:
193
-
194
- | Field | Description | Default |
195
- | --- | --- | --- |
196
- | WAIP server URL | Base URL of the WAIP-Web instance | `https://wachalarm.leitstelle-lausitz.de` |
197
- | Monitor ID | Picked from a live dropdown, fetched from the configured server's `/waip/` overview page and grouped by Leitstelle/Kreis/Träger/Wache; manual entry stays possible if the server can't be reached. Empty/`0` = global monitor (all incidents) | *(empty)* |
198
- | Registration timeout (s) | Time until a missing registration confirmation is logged | `10` |
199
- | Reconnect delay (s) | Wait time before a manual reconnect after disconnect/error | `5` |
200
-
201
- The session keepalive interval is **not configurable** – it's derived
202
- fully automatically on every renewal from the cookie lifetime the server
203
- reports (min. 55s, max. 5 min., matching `/js/session_keepalive.js` on
204
- the site itself).
205
-
206
- ### Alarm keyword descriptions
219
+ ### Rescue-service keywords
207
220
 
208
221
  `einsatz.stichwort` is passed through unchanged from the server as a
209
222
  bare code (e.g. `B2`, `H:VU mit P`) – WAIP-Web itself doesn't explain
210
223
  what it means, and there is no nationwide standard: every dispatch
211
224
  center uses its own keyword catalog. `einsatz.beschreibung` fills that
212
- gap **entirely locally**, no data is sent anywhere:
213
-
214
- 1. **Rescue-service decoding** (admin checkbox, off by default): if the
215
- keyword matches the pattern `R<RTW-count>N<NEF-count>[p][f][-NT]`
216
- (e.g. `R1N0` → "Rettungswagen: 1, Notfalleinsatzfahrzeug: 0"), a
217
- description is generated automatically. This scheme is used by
218
- several German dispatch centers, not just one specific instance (see
219
- [Leitstelle Lausitz's documented explanation](https://www.leitstelle-lausitz.de/anpassung-der-einsatzstichworte-rettungsdienst/)
220
- of it) – only enable it if your dispatch center actually uses this
221
- pattern. The text for each part is itself configurable (5 additional
222
- text fields appear once the checkbox is enabled), since the adapter
223
- is multi-language and these labels aren't translated automatically:
224
-
225
- | Part | Meaning | Default label |
226
- | --- | --- | --- |
227
- | `R<n>` | Number of ambulances (Rettungswagen) | `Rettungswagen` |
228
- | `N<n>` | Number of emergency vehicles (Notfalleinsatzfahrzeug) | `Notfalleinsatzfahrzeug` |
229
- | `p` suffix | Polytrauma | `Polytrauma` |
230
- | `f` suffix | First responder included | `First Responder` |
231
- | `-NT` suffix | Special ambulance transport | `Notfalltransport mit Notfallkrankenwagen` |
232
- 2. **Keyword table** (admin table, checked only if step 1 didn't
233
- match): a list of `{keyword pattern, description, match type}`
234
- rows – match type is `starts with` or `contains`, comparison is
235
- case-insensitive, and if several rows match, the **most specific
236
- (longest) pattern wins automatically** – row order has no effect on
237
- matching, so the table can be freely sorted by keyword (click the
238
- column header) without changing behavior. The table is pre-filled
239
- with an example fire/rescue keyword list (`B:...`/`H:...`) as a
240
- starting point only – it is **not** confirmed to match any specific
241
- dispatch center's real catalog, edit or fully replace it as needed.
242
- The table can be exported/imported as CSV via the buttons above it
243
- in the admin UI.
244
-
245
- If neither step produces a match, `einsatz.beschreibung` is simply
246
- `null` - not an error.
225
+ gap **entirely locally**, no data is sent anywhere. This tab is the
226
+ first of two sources checked, in order (see
227
+ [Keyword descriptions](#keyword-descriptions) for the second):
228
+
229
+ **Rescue-service decoding** (admin checkbox, off by default): if the
230
+ keyword matches the pattern `R<RTW-count>N<NEF-count>[p][f][-NT]`
231
+ (e.g. `R1N0` → "Rettungswagen: 1, Notfalleinsatzfahrzeug: 0"), a
232
+ description is generated automatically. Two spellings of the `p`/`f`/`NT`
233
+ part are recognized: without a space and with a hyphen before `NT`
234
+ (e.g. `R1N1p`, `R1N0-NT`, see
235
+ [Leitstelle Lausitz's documented explanation](https://www.leitstelle-lausitz.de/anpassung-der-einsatzstichworte-rettungsdienst/)
236
+ of it), and with a space and without a hyphen (e.g. `R1N1 p`, `R1N0 nt`,
237
+ as used by the IRLS Brandenburg) – this scheme (in either spelling) is
238
+ used by several German dispatch centers, not just these two – only
239
+ enable it if your dispatch center actually uses one of these patterns.
240
+ The text for each part is itself configurable (5 additional text
241
+ fields appear once the checkbox is enabled), since the adapter is
242
+ multi-language and these labels aren't translated automatically:
243
+
244
+ | Part | Meaning | Default label |
245
+ | --- | --- | --- |
246
+ | `R<n>` | Number of ambulances (Rettungswagen) | `Rettungswagen` |
247
+ | `N<n>` | Number of emergency vehicles (Notfalleinsatzfahrzeug) | `Notfalleinsatzfahrzeug` |
248
+ | `p` suffix | Polytrauma | `Polytrauma` |
249
+ | `f` suffix | First responder included | `First Responder` |
250
+ | `-NT`/` nt` suffix | Special ambulance transport | `Notfalltransport mit Notfallkrankenwagen` |
251
+
252
+ ### Keyword descriptions
253
+
254
+ Checked only if the decoder on the [Rescue-service keywords](#rescue-service-keywords)
255
+ tab didn't match: a list of `{keyword pattern, description, match type}`
256
+ rows – match type is `starts with` or `contains`, comparison is
257
+ case-insensitive, and if several rows match, the **most specific
258
+ (longest) pattern wins automatically** – row order has no effect on
259
+ matching, so the table can be freely sorted by any column (click the
260
+ column header) without changing behavior. The table is pre-filled
261
+ with an example fire/rescue keyword list (`B:...`/`H:...`) as a
262
+ starting point only – it is **not** confirmed to match any specific
263
+ dispatch center's real catalog, edit or fully replace it as needed.
264
+ To back up or transfer this table, use ioBroker's standard instance
265
+ configuration export/import (JSON). After using that import,
266
+ **reload the Admin page** before checking this table – the open
267
+ config dialog doesn't refresh it from an external import
268
+ automatically (a state-sync limitation of the Admin table component
269
+ itself, not something this adapter controls).
270
+
271
+ If neither this table nor the decoder above match, `einsatz.beschreibung`
272
+ is simply `null` - not an error.
247
273
 
248
274
  ## States (under `waip-web.0.*`)
249
275
 
@@ -305,7 +331,7 @@ The most recently finished incident remains available via
305
331
  | `uuid` | string | Unique incident UUID (also used to associate feedback) |
306
332
  | `einsatzart` | string | e.g. "Brandeinsatz" (fire), "Hilfeleistungseinsatz" (technical assistance), "Rettungseinsatz" (rescue/EMS), "Krankentransport" (patient transport) |
307
333
  | `stichwort` | string | Alarm keyword |
308
- | `beschreibung` | string | Description for `stichwort`, resolved locally (not sent by the server) - see [Alarm keyword descriptions](#alarm-keyword-descriptions) below. `null` if nothing matched |
334
+ | `beschreibung` | string | Description for `stichwort`, resolved locally (not sent by the server) - see [Rescue-service keywords](#rescue-service-keywords)/[Keyword descriptions](#keyword-descriptions) below. `null` if nothing matched |
309
335
  | `ort` | string | Location/town |
310
336
  | `ortsteil` | string | District (if different from `ort`) |
311
337
  | `zeitstempel` | string (date) | Alarm time |
@@ -382,6 +408,78 @@ example.
382
408
 
383
409
  ## Changelog
384
410
 
411
+ ### 0.7.26 (2026-08-23)
412
+
413
+ - [Keyword descriptions](#keyword-descriptions) tab: `Description` and
414
+ `Match` columns are now sortable too (previously only `Keyword /
415
+ pattern`), and the table's help text was moved above the table
416
+ instead of below - with many rows it used to sit far out of view.
417
+
418
+ ### 0.7.25 (2026-08-23)
419
+
420
+ - Updated the admin UI text for the [rescue-service decoder](#rescue-service-keywords)
421
+ to reflect the two supported keyword spellings added in 0.7.23
422
+ (Leitstelle Lausitz `R1N1p`/`R1N0-NT` and IRLS Brandenburg `R1N1 p`/
423
+ `R1N0 nt`) - the checkbox label/help and the NT suffix label/help
424
+ previously only mentioned the hyphenated no-space form.
425
+
426
+ ### 0.7.24 (2026-08-23)
427
+
428
+ - Extended the default [keyword table](#keyword-descriptions) with two
429
+ more Brandenburg spelling variants: `B:Gebäude-Groß` and
430
+ `B:Gebäude-Klein` (hyphen instead of space, as used by some dispatch
431
+ centers) - same descriptions as the existing `B:Gebäude groß`/`B:Gebäude
432
+ klein` entries. Only affects the shipped example table for new
433
+ installs - existing configured tables are untouched.
434
+
435
+ ### 0.7.23 (2026-08-23)
436
+
437
+ - Extended the default [keyword table](#keyword-descriptions) with the
438
+ 29 `K`/`V`/`M`/`S` keywords (Krankentransport, Verlegung, MANV,
439
+ Sonderstichwörter) from the IRLS Brandenburg rescue-service catalog
440
+ (v2.7) - previously only the `R<ambulance>N<physician-vehicle>`
441
+ scheme and the Brand/THL (`B:`/`H:`) table were covered, so
442
+ `einsatz.beschreibung` stayed `null` for these.
443
+ - Fixed the [rescue-service keyword](#rescue-service-keywords) decoder
444
+ (`decodeRettungsdienstStichwort`): it only accepted the Leitstelle
445
+ Lausitz spelling without a space (`R1N1p`, `R1N0-NT`) and silently
446
+ returned `null` for the IRLS Brandenburg spelling with a space
447
+ (`R1N1 p`, `R1N0 nt`) - both are now recognized.
448
+ - Only affects the shipped example table and the decoder logic for
449
+ new installs/upgrades - existing configured tables are untouched.
450
+
451
+ ### 0.7.22 (2026-08-23)
452
+
453
+ - Extended the default [keyword table](#keyword-descriptions) with
454
+ `H:Person-TMR` (technical human rescue) and corrected three entries
455
+ whose pattern didn't match the actual dispatch keyword:
456
+ `H:Flugunfall` → `H:Flugzeugunfall` (`klein`/`groß`), `H:Öl Wasser`
457
+ → `H:Öl auf Wasser`, `H:Rettung aus Höhen/Tiefen` → `H:Rettung aus
458
+ Höhen und Tiefen` (source: Regionalleitstellen Brandenburg keyword
459
+ list, v7.1). Only affects the shipped example table for new
460
+ installs - existing configured tables are untouched.
461
+
462
+ ### 0.7.21 (2026-08-23)
463
+
464
+ - Removed the keyword table's CSV export/import: a bug in ioBroker
465
+ Admin's own `table` component corrupted German umlauts on CSV
466
+ import (e.g. `ä`/`Ã` instead of `ä`/`ß`) - confirmed to be entirely
467
+ inside the Admin UI, not this adapter's code. Use ioBroker's
468
+ standard instance configuration export/import (JSON) instead - see
469
+ [Keyword descriptions](#keyword-descriptions) for the reload caveat
470
+ after using it.
471
+ - Split the admin configuration UI into 3 tabs -
472
+ [Connection](#connection), [Rescue-service
473
+ keywords](#rescue-service-keywords),
474
+ [Keyword descriptions](#keyword-descriptions) - each with a
475
+ matching icon, replacing the single combined settings page.
476
+ - Documentation: restructured the configuration section of the
477
+ README to mirror the 3 admin tabs, fixed a stale reference to the
478
+ removed CSV feature, and added a couple of small clarifications
479
+ (mentioned `einsatz.beschreibung` in the practical-use-cases
480
+ section, mentioned the 3-tab structure up front). All code comments
481
+ in `main.js` are now bilingual (German + English).
482
+
385
483
  ### 0.7.20 (2026-08-22)
386
484
 
387
485
  - Added `einsatz.beschreibung`: a plain-language description for
@@ -463,19 +561,6 @@ example.
463
561
  incident is shown - see [`einsatz`](#einsatz)), and enforced the
464
562
  changelog's own 5-entry limit.
465
563
 
466
- ### 0.7.16 (2026-08-22)
467
-
468
- - Fixed two stale-data gaps around incident transitions:
469
- - When a new incident starts before its own routes/feedback events
470
- arrive, `einsatz.json.routen`/`.rueckmeldungen` and the feedback
471
- counters are now cleared immediately instead of waiting for those
472
- events.
473
- - Added a watchdog that automatically finalizes an incident
474
- (archives it, clears live fields) if its `ablaufzeit` is exceeded
475
- by more than 60s without a matching `io.standby` ever arriving -
476
- previously a missed `io.standby` (e.g. due to a disconnect at the
477
- wrong moment) could leave stale "active" data indefinitely.
478
-
479
564
  Older entries have moved to [CHANGELOG_OLD.md](CHANGELOG_OLD.md).
480
565
 
481
566
  ## License
@@ -1,23 +1,26 @@
1
1
  {
2
2
  "Alarm keyword descriptions": "Stichwort-Stammdaten",
3
- "Automatically decode rescue-service keywords (R<RTW>N<NEF>[p][f][-NT])": "Rettungsdienst-Stichwörter automatisch dekodieren (R<RTW>N<NEF>[p][f][-NT])",
3
+ "Automatically decode rescue-service keywords (R<RTW>N<NEF>[p][f][-NT], with or without spaces)": "Rettungsdienst-Stichwörter automatisch dekodieren (R<RTW>N<NEF>[p][f][-NT], mit oder ohne Leerzeichen)",
4
4
  "Base URL of the WAIP dispatch server (Socket.IO endpoint, namespace /waip is appended automatically)": "Basis-URL des WAIP-Leitstellenservers (Socket.IO-Endpunkt, Namespace /waip wird automatisch angehängt)",
5
+ "Connection": "Verbindung",
5
6
  "Description": "Beschreibung",
6
7
  "How long to wait for the server to confirm the monitor registration before logging a warning; the connection itself keeps running either way.": "Wartezeit auf die Bestätigung der Monitor-Registrierung durch den Server, bevor eine Warnung geloggt wird; die Verbindung läuft in jedem Fall weiter.",
7
8
  "Keyword / pattern": "Stichwort / Muster",
9
+ "Keyword descriptions": "Stichwort-Stammdaten",
8
10
  "Label for N (emergency vehicle count)": "Bezeichnung für N (Anzahl Notfalleinsatzfahrzeuge)",
9
11
  "Label for R (ambulance count)": "Bezeichnung für R (Anzahl Rettungswagen)",
10
- "Label for suffix -NT (special ambulance transport)": "Bezeichnung für Suffix -NT (Notfalltransport)",
12
+ "Label for suffix -NT / nt (special ambulance transport)": "Bezeichnung für Suffix -NT / nt (Notfalltransport mit Notfallkrankenwagen)",
11
13
  "Label for suffix f (first responder)": "Bezeichnung für Suffix f (First Responder)",
12
14
  "Label for suffix p (polytrauma)": "Bezeichnung für Suffix p (Polytrauma)",
13
15
  "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.": "Wird live von der /waip/-Übersichtsseite des konfigurierten Servers geladen - Auswahl nach Leitstelle, Kreis, Träger oder Wache, oder 'Alle Wachalarme' (ID 0) für jeden Einsatz. Ist der Server nicht erreichbar, kann die ID weiterhin manuell eingegeben werden.",
14
- "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by keyword freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. Export/import as CSV via the buttons above the table.": "Ordnet einsatz.stichwort eine Beschreibung für einsatz.beschreibung zu. Passen mehrere Zeilen, gewinnt automatisch das spezifischste (längste) Muster - die Zeilenreihenfolge hat keinen Einfluss auf den Abgleich, die Tabelle kann also frei nach Stichwort sortiert werden. Vorbefüllt mit einer beispielhaften Feuerwehr-/Rettungsdienst-Stichwortliste als Startpunkt - nicht bestätigt für eure eigene Leitstelle, bei Bedarf anpassen/ersetzen. Export/Import als CSV über die Buttons oberhalb der Tabelle.",
16
+ "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Ordnet einsatz.stichwort eine Beschreibung für einsatz.beschreibung zu. Passen mehrere Zeilen, gewinnt automatisch das spezifischste (längste) Muster - die Zeilenreihenfolge hat keinen Einfluss auf den Abgleich, die Tabelle kann also frei nach jeder Spalte sortiert werden. Vorbefüllt mit einer beispielhaften Feuerwehr-/Rettungsdienst-Stichwortliste als Startpunkt - nicht bestätigt für eure eigene Leitstelle, bei Bedarf anpassen/ersetzen. Zum Sichern/Übertragen dieser Tabelle die Standard-Instanzkonfiguration von ioBroker exportieren/importieren (JSON). Nach einem solchen Import die Admin-Seite neu laden, bevor du diese Tabelle prüfst - der offene Konfigurationsdialog aktualisiert sie bei einem externen Import nicht automatisch (eine State-Sync-Einschränkung der Admin-Tabellenkomponente selbst).",
15
17
  "Match": "Abgleich",
16
18
  "Monitor ID": "Monitor-ID",
17
19
  "Reconnect delay (s)": "Wiederverbindungs-Verzögerung (s)",
18
20
  "Registration timeout (s)": "Registrierungs-Timeout (s)",
19
- "Rescue-service keyword scheme (R<RTW>N<NEF>[p][f][-NT], e.g. \"R1N0\" = 1 ambulance, no emergency physician) used by several German dispatch centers (documented example: Leitstelle Lausitz) - only enable if your dispatch center actually uses this pattern. Takes priority over the table below when a keyword matches.": "Schema für Rettungsdienst-Stichwörter (R<RTW>N<NEF>[p][f][-NT], z.B. \"R1N0\" = 1 Rettungswagen, kein Notarzt), das von mehreren Leitstellen verwendet wird (dokumentiertes Beispiel: Leitstelle Lausitz) - nur aktivieren, wenn eure Leitstelle dieses Muster tatsächlich verwendet. Hat Vorrang vor der Tabelle unten, wenn ein Stichwort passt.",
20
- "Text appended when the keyword ends in \"-NT\".": "Text, der angehängt wird, wenn das Stichwort auf \"-NT\" endet.",
21
+ "Rescue-service keyword scheme R<RTW>N<NEF>, optionally followed by a p/f modifier and/or an NT suffix (e.g. \"R1N0\" = 1 ambulance, no emergency physician). Two spellings are recognized: without a space and with a hyphen before NT (Leitstelle Lausitz, e.g. \"R1N1p\", \"R1N0-NT\") and with a space and without a hyphen (Leitstelle Brandenburg/IRLS, e.g. \"R1N1 p\", \"R1N0 nt\") - only enable if your dispatch center actually uses one of these patterns. Takes priority over the table on the Keyword descriptions tab when a keyword matches.": "Rettungsdienst-Stichwortschema R<RTW>N<NEF>, optional gefolgt von einem p/f-Modifikator und/oder einem NT-Suffix (z.B. \"R1N0\" = 1 Rettungswagen, kein Notarzt). Zwei Schreibweisen werden erkannt: ohne Leerzeichen und mit Bindestrich vor NT (Leitstelle Lausitz, z.B. \"R1N1p\", \"R1N0-NT\") sowie mit Leerzeichen und ohne Bindestrich (Leitstelle Brandenburg/IRLS, z.B. \"R1N1 p\", \"R1N0 nt\") - nur aktivieren, wenn eure Leitstelle eines dieser Muster tatsächlich verwendet. Hat Vorrang vor der Tabelle im Tab Stichwort-Stammdaten, wenn ein Stichwort passt.",
22
+ "Rescue-service keywords": "Rettungsdienst-Stichwörter",
23
+ "Text appended when the keyword ends in \"-NT\" or \" nt\".": "Text, der angehängt wird, wenn das Stichwort auf \"-NT\" oder \" nt\" endet.",
21
24
  "Text appended when the keyword ends in \"f\".": "Text, der angehängt wird, wenn das Stichwort auf \"f\" endet.",
22
25
  "Text appended when the keyword ends in \"p\".": "Text, der angehängt wird, wenn das Stichwort auf \"p\" endet.",
23
26
  "Text used in the generated description for the N<n> part, e.g. \"Notfalleinsatzfahrzeug: 0\".": "Text für den N<n>-Teil der erzeugten Beschreibung, z.B. \"Notfalleinsatzfahrzeug: 0\".",
@@ -1,29 +1,32 @@
1
1
  {
2
- "WAIP server URL": "WAIP server URL",
2
+ "Alarm keyword descriptions": "Alarm keyword descriptions",
3
+ "Automatically decode rescue-service keywords (R<RTW>N<NEF>[p][f][-NT], with or without spaces)": "Automatically decode rescue-service keywords (R<RTW>N<NEF>[p][f][-NT], with or without spaces)",
3
4
  "Base URL of the WAIP dispatch server (Socket.IO endpoint, namespace /waip is appended automatically)": "Base URL of the WAIP dispatch server (Socket.IO endpoint, namespace /waip is appended automatically)",
4
- "Monitor ID": "Monitor ID",
5
- "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.": "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.",
6
- "Registration timeout (s)": "Registration timeout (s)",
5
+ "Connection": "Connection",
6
+ "Description": "Description",
7
7
  "How long to wait for the server to confirm the monitor registration before logging a warning; the connection itself keeps running either way.": "How long to wait for the server to confirm the monitor registration before logging a warning; the connection itself keeps running either way.",
8
- "Reconnect delay (s)": "Reconnect delay (s)",
9
- "Wait time before the adapter automatically reconnects after a lost connection or a connection error.": "Wait time before the adapter automatically reconnects after a lost connection or a connection error.",
10
- "Automatically decode rescue-service keywords (R<RTW>N<NEF>[p][f][-NT])": "Automatically decode rescue-service keywords (R<RTW>N<NEF>[p][f][-NT])",
11
- "Rescue-service keyword scheme (R<RTW>N<NEF>[p][f][-NT], e.g. \"R1N0\" = 1 ambulance, no emergency physician) used by several German dispatch centers (documented example: Leitstelle Lausitz) - only enable if your dispatch center actually uses this pattern. Takes priority over the table below when a keyword matches.": "Rescue-service keyword scheme (R<RTW>N<NEF>[p][f][-NT], e.g. \"R1N0\" = 1 ambulance, no emergency physician) used by several German dispatch centers (documented example: Leitstelle Lausitz) - only enable if your dispatch center actually uses this pattern. Takes priority over the table below when a keyword matches.",
12
- "Label for R (ambulance count)": "Label for R (ambulance count)",
13
- "Text used in the generated description for the R<n> part, e.g. \"Rettungswagen: 1\".": "Text used in the generated description for the R<n> part, e.g. \"Rettungswagen: 1\".",
8
+ "Keyword / pattern": "Keyword / pattern",
9
+ "Keyword descriptions": "Keyword descriptions",
14
10
  "Label for N (emergency vehicle count)": "Label for N (emergency vehicle count)",
15
- "Text used in the generated description for the N<n> part, e.g. \"Notfalleinsatzfahrzeug: 0\".": "Text used in the generated description for the N<n> part, e.g. \"Notfalleinsatzfahrzeug: 0\".",
16
- "Label for suffix p (polytrauma)": "Label for suffix p (polytrauma)",
17
- "Text appended when the keyword ends in \"p\".": "Text appended when the keyword ends in \"p\".",
11
+ "Label for R (ambulance count)": "Label for R (ambulance count)",
12
+ "Label for suffix -NT / nt (special ambulance transport)": "Label for suffix -NT / nt (special ambulance transport)",
18
13
  "Label for suffix f (first responder)": "Label for suffix f (first responder)",
19
- "Text appended when the keyword ends in \"f\".": "Text appended when the keyword ends in \"f\".",
20
- "Label for suffix -NT (special ambulance transport)": "Label for suffix -NT (special ambulance transport)",
21
- "Text appended when the keyword ends in \"-NT\".": "Text appended when the keyword ends in \"-NT\".",
22
- "Alarm keyword descriptions": "Alarm keyword descriptions",
23
- "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by keyword freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. Export/import as CSV via the buttons above the table.": "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by keyword freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. Export/import as CSV via the buttons above the table.",
24
- "Keyword / pattern": "Keyword / pattern",
25
- "Description": "Description",
14
+ "Label for suffix p (polytrauma)": "Label for suffix p (polytrauma)",
15
+ "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.": "Loaded live from the configured server's /waip/ overview page - choose by Leitstelle, Kreis, Träger or Wache, or pick 'Alle Wachalarme' (ID 0) for every incident. If the server can't be reached, an ID can still be entered manually.",
16
+ "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).": "Maps einsatz.stichwort to einsatz.beschreibung. If several rows match, the most specific (longest) pattern wins automatically - row order has no effect on matching, sort by any column freely. Pre-filled with an example fire/rescue keyword list as a starting point - it is not confirmed to match your own dispatch center's actual keywords, edit/replace as needed. To back up or transfer this table, use ioBroker's standard instance configuration export/import (JSON). After using that import, reload the Admin page before checking this table - the open config dialog doesn't refresh it from an external import automatically (a state-sync limitation of the Admin table component itself).",
26
17
  "Match": "Match",
27
- "starts with": "starts with",
28
- "contains": "contains"
18
+ "Monitor ID": "Monitor ID",
19
+ "Reconnect delay (s)": "Reconnect delay (s)",
20
+ "Registration timeout (s)": "Registration timeout (s)",
21
+ "Rescue-service keyword scheme R<RTW>N<NEF>, optionally followed by a p/f modifier and/or an NT suffix (e.g. \"R1N0\" = 1 ambulance, no emergency physician). Two spellings are recognized: without a space and with a hyphen before NT (Leitstelle Lausitz, e.g. \"R1N1p\", \"R1N0-NT\") and with a space and without a hyphen (Leitstelle Brandenburg/IRLS, e.g. \"R1N1 p\", \"R1N0 nt\") - only enable if your dispatch center actually uses one of these patterns. Takes priority over the table on the Keyword descriptions tab when a keyword matches.": "Rescue-service keyword scheme R<RTW>N<NEF>, optionally followed by a p/f modifier and/or an NT suffix (e.g. \"R1N0\" = 1 ambulance, no emergency physician). Two spellings are recognized: without a space and with a hyphen before NT (Leitstelle Lausitz, e.g. \"R1N1p\", \"R1N0-NT\") and with a space and without a hyphen (Leitstelle Brandenburg/IRLS, e.g. \"R1N1 p\", \"R1N0 nt\") - only enable if your dispatch center actually uses one of these patterns. Takes priority over the table on the Keyword descriptions tab when a keyword matches.",
22
+ "Rescue-service keywords": "Rescue-service keywords",
23
+ "Text appended when the keyword ends in \"-NT\" or \" nt\".": "Text appended when the keyword ends in \"-NT\" or \" nt\".",
24
+ "Text appended when the keyword ends in \"f\".": "Text appended when the keyword ends in \"f\".",
25
+ "Text appended when the keyword ends in \"p\".": "Text appended when the keyword ends in \"p\".",
26
+ "Text used in the generated description for the N<n> part, e.g. \"Notfalleinsatzfahrzeug: 0\".": "Text used in the generated description for the N<n> part, e.g. \"Notfalleinsatzfahrzeug: 0\".",
27
+ "Text used in the generated description for the R<n> part, e.g. \"Rettungswagen: 1\".": "Text used in the generated description for the R<n> part, e.g. \"Rettungswagen: 1\".",
28
+ "WAIP server URL": "WAIP server URL",
29
+ "Wait time before the adapter automatically reconnects after a lost connection or a connection error.": "Wait time before the adapter automatically reconnects after a lost connection or a connection error.",
30
+ "contains": "contains",
31
+ "starts with": "starts with"
29
32
  }