iobroker.waip-web 0.7.26 → 0.7.28

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
@@ -19,8 +19,9 @@ ohne dass ein Browser-Tab dauerhaft offen sein muss.
19
19
  - [Konfiguration](#konfiguration)
20
20
  - [Verbindung](#verbindung)
21
21
  - [Warum ein Session-Cookie nötig ist](#warum-ein-session-cookie-nötig-ist)
22
- - [Rettungsdienst-Stichwörter](#rettungsdienst-stichwörter)
22
+ - [Rettungsdienst](#rettungsdienst)
23
23
  - [Stichwort-Stammdaten](#stichwort-stammdaten)
24
+ - [Einsatzkarte](#einsatzkarte)
24
25
  - [States (unter `waip-web.0.*`)](#states-unter-waip-web0)
25
26
  - [info](#info) · [status](#status) · [einsatz](#einsatz) ·
26
27
  [einsatz.json](#einsatzjson) · [einsatz.tts](#einsatztts) ·
@@ -173,14 +174,22 @@ Rettungsdienst-Wache:
173
174
  (`einsatz.beschreibung`), lokal ermittelt aus einer selbst pflegbaren
174
175
  Stichwort-Tabelle sowie einem optionalen Dekoder für das von
175
176
  mehreren Leitstellen verwendete Rettungsdienst-Stichwortschema
176
- (`R<RTW>N<NEF>`) - siehe
177
- [Rettungsdienst-Stichwörter](#rettungsdienst-stichwörter)
177
+ (`R<RTW>N<NEF>`) - siehe [Rettungsdienst](#rettungsdienst)
178
+ - Rettungsdienst-Einsätze können komplett ignoriert werden (keine
179
+ States, keine History, kein TTS) - sinnvoll, wenn WAIP sie in der
180
+ eigenen Region ohnehin nur unzuverlässig signalisiert, siehe
181
+ [Rettungsdienst](#rettungsdienst)
182
+ - Optionales Einsatzkarten-Bild: ein auf die Einsatz-Koordinaten
183
+ zentriertes und mit einem Punkt markiertes PNG, lokal aus
184
+ OpenStreetMap-Kacheln zusammengesetzt, dessen Dateipfad als State
185
+ bereitsteht - siehe [Einsatzkarte](#einsatzkarte)
178
186
 
179
187
  ## Konfiguration
180
188
 
181
189
  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.
190
+ vier Tabs verteilt: **Verbindung**, **Rettungsdienst**,
191
+ **Stichwort-Stammdaten** und **Einsatzkarte** – alle vier unten näher
192
+ beschrieben.
184
193
 
185
194
  ### Verbindung
186
195
 
@@ -214,7 +223,21 @@ Laufzeit, mindestens 55 Sekunden, höchstens die konfigurierte Obergrenze) –
214
223
  genau die gleiche Klammerung, die auch `/js/session_keepalive.js` der
215
224
  Website selbst verwendet.
216
225
 
217
- ### Rettungsdienst-Stichwörter
226
+ ### Rettungsdienst
227
+
228
+ **Rettungsdienst-Einsätze verarbeiten** (Admin-Checkbox, standardmäßig
229
+ **an**): Einsätze, deren `einsatzart` auf einen Rettungsdienst-Einsatz
230
+ hindeutet (enthält "Rettung" oder "Krankentransport", ohne
231
+ Berücksichtigung von Groß-/Kleinschreibung - siehe die
232
+ `einsatzart`-Beispiele unter [einsatz](#einsatz)), werden standardmäßig
233
+ ganz normal verarbeitet, wie in jeder früheren Adapter-Version. Wird die
234
+ Checkbox deaktiviert, ignoriert der Adapter solche Einsätze stattdessen
235
+ **komplett**: keine `einsatz.*`-States werden aktualisiert, kein
236
+ History-Eintrag geschrieben, keine TTS-Ansage ausgelöst - als wäre der
237
+ Einsatz nie eingegangen. Hintergrund: Rettungsdienst-Einsätze werden
238
+ über WAIP Berichten zufolge nur in manchen Regionen/Leitstellen
239
+ überhaupt alarmiert/signalisiert - wo das nicht der Fall ist oder nicht
240
+ gewünscht wird, schaltet diese Checkbox das Rauschen ab.
218
241
 
219
242
  `einsatz.stichwort` wird unverändert vom Server als bloßer Code
220
243
  übernommen (z.B. `B2`, `H:VU mit P`) – WAIP-Web selbst erklärt nicht,
@@ -252,13 +275,18 @@ diese Bezeichnungen nicht automatisch übersetzt werden:
252
275
  ### Stichwort-Stammdaten
253
276
 
254
277
  Wird nur geprüft, falls der Dekoder auf dem Tab
255
- [Rettungsdienst-Stichwörter](#rettungsdienst-stichwörter) nicht gegriffen
278
+ [Rettungsdienst](#rettungsdienst) nicht gegriffen
256
279
  hat: eine Liste von `{Stichwort-Muster, Beschreibung, Abgleich-Typ}`-Zeilen
257
280
  – 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
281
+ case-insensitiv und behandelt Leerzeichen und Bindestriche als
282
+ gleichwertig (jede Folge aus beidem wird vor dem Vergleich zu einem
283
+ Leerzeichen zusammengefasst) – z.B. matchen `H:VU mit P`,
284
+ `H:VU-mit-P` und `H:VU - mit - P` dieselbe Zeile, es muss also keine
285
+ eigene Zeile pro Schreibvariante gepflegt werden. Passen mehrere
286
+ Zeilen, gewinnt automatisch das **spezifischste (längste) Muster** –
287
+ die Zeilenreihenfolge hat keinen Einfluss auf den Abgleich, die
288
+ Tabelle kann also gefahrlos nach jeder Spalte sortiert werden (Klick
289
+ auf die Spaltenüberschrift). Die Tabelle ist mit
262
290
  einer beispielhaften Feuerwehr-/Rettungsdienst-Stichwortliste
263
291
  (`B:...`/`H:...`) als Startpunkt vorbefüllt – das ist **nicht** für
264
292
  irgendeine bestimmte Leitstelle bestätigt, bei Bedarf anpassen oder
@@ -273,6 +301,45 @@ etwas, das dieser Adapter beeinflussen kann).
273
301
  Passt weder diese Tabelle noch der Dekoder oben, bleibt
274
302
  `einsatz.beschreibung` einfach `null` – kein Fehler.
275
303
 
304
+ ### Einsatzkarte
305
+
306
+ **Kartenbild für jeden Einsatz erzeugen** (Admin-Checkbox, standardmäßig
307
+ aus): ist die Checkbox aktiv und liegen für einen Einsatz gültige
308
+ Koordinaten vor, lädt der Adapter die dafür nötigen Kacheln vom
309
+ öffentlichen Server `tile.openstreetmap.org` herunter, setzt sie zu
310
+ einem einzigen PNG zusammen, zentriert auf den Einsatzort, zeichnet eine
311
+ Markierung (roter Punkt, weißer Rand) exakt in die Mitte und stempelt
312
+ die von der ODbL-Lizenz vorgeschriebene OpenStreetMap-Attribution unten
313
+ links auf. Der Dateipfad wird in `einsatz.kartenbildPfad` geschrieben
314
+ (siehe [einsatz](#einsatz)) – typische Verwendung ist der Versand dieser
315
+ Datei aus einem Blockly-/JavaScript-Skript heraus, z.B. als
316
+ Pushover-Benachrichtigungsanhang. Es werden nur die 10 zuletzt erzeugten
317
+ Bilder aufgehoben, ältere werden automatisch gelöscht, sobald ein neues
318
+ geschrieben wird. Die Bilderzeugung läuft im Hintergrund und verzögert
319
+ die Alarmverarbeitung nie – ein langsamer oder fehlschlagender
320
+ Kachel-Download führt höchstens zu einem fehlenden/verspäteten Bild,
321
+ sonst bleibt nichts betroffen.
322
+
323
+ | Feld | Beschreibung | Default |
324
+ | --- | --- | --- |
325
+ | Bildbreite (px) | Breite des erzeugten PNGs | `600` |
326
+ | Bildhöhe (px) | Höhe des erzeugten PNGs | `400` |
327
+ | Zoomstufe | OpenStreetMap-Zoomstufe (1 = ganze Welt, 19 = Gebäudeebene) | `16` |
328
+
329
+ Die Bilder liegen im eigenen Datenverzeichnis dieser Adapterinstanz
330
+ (`iobroker-data/<instance>/maps/`), nicht als ioBroker-Dateiobjekte –
331
+ `einsatz.kartenbildPfad` ist deshalb ein echter, absoluter
332
+ Dateisystempfad, den ein auf demselben Host laufendes Skript direkt
333
+ lesen kann.
334
+
335
+ > **Hinweis:** Genutzt wird der offizielle, kostenlose Server
336
+ > `tile.openstreetmap.org`, der für gelegentliche/geringe Nutzung
337
+ > gedacht ist (siehe die
338
+ > [OSM Tile Usage Policy](https://operations.osmfoundation.org/policies/tiles/)).
339
+ > Ein Bild pro Einsatz bleibt deutlich darunter – die Zoomstufe nicht
340
+ > so weit reduzieren, dass riesige Gebiete abgedeckt werden, und das
341
+ > Ganze nicht zu einem Massen-Kachel-Abruf ausbauen.
342
+
276
343
  ## States (unter `waip-web.0.*`)
277
344
 
278
345
  Rückmeldungen und Routen sind pro Einsatz Listen (1:n). Sie liegen als
@@ -334,13 +401,14 @@ stehen. Der zuletzt abgeschlossene Einsatz bleibt trotzdem über
334
401
  | `uuid` | string | Eindeutige Einsatz-UUID (dient auch der Zuordnung von Rückmeldungen) |
335
402
  | `einsatzart` | string | z. B. „Brandeinsatz", „Hilfeleistungseinsatz", „Rettungseinsatz", „Krankentransport" |
336
403
  | `stichwort` | string | Alarmstichwort |
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 |
404
+ | `beschreibung` | string | Beschreibung zu `stichwort`, lokal ermittelt (wird nicht vom Server gesendet) - siehe [Rettungsdienst](#rettungsdienst)/[Stichwort-Stammdaten](#stichwort-stammdaten) unten. `null` falls nichts passte |
338
405
  | `ort` | string | Ort |
339
406
  | `ortsteil` | string | Ortsteil (falls abweichend vom Ort) |
340
407
  | `zeitstempel` | string (date) | Alarmzeit |
341
408
  | `ablaufzeit` | string (date) | Ende der Standby-Anzeigedauer, Basis für `restzeit` |
342
409
  | `sondersignal` | number | `1` = Sondersignal, sonst kein Sondersignal |
343
410
  | `latitude` / `longitude` | number | Position des Einsatzortes (normalisiert aus wgs84-Feldern oder GeoJSON-Mittelpunkt) |
411
+ | `kartenbildPfad` | string | Pfad zum zuletzt erzeugten Einsatzkarten-Bild (PNG) - siehe [Einsatzkarte](#einsatzkarte). Anders als die Felder oben wird dieser State bei `io.standby` **nicht** geleert (gleiches Muster wie `einsatz.tts.last`), bleibt also auch nach Einsatzende noch verfügbar |
344
412
  | `routenGesamt` | number | Anzahl Routen im aktuellen Einsatz |
345
413
  | `rueckmeldungGesamt` | number | Rückmeldungen gesamt im aktuellen Einsatz |
346
414
  | `rueckmeldungAnzahl.ek` | number | Anzahl Rückmeldungen als Einsatzkraft |
package/README.md CHANGED
@@ -28,8 +28,9 @@ open.
28
28
  - [Configuration](#configuration)
29
29
  - [Connection](#connection)
30
30
  - [Why a session cookie is needed](#why-a-session-cookie-is-needed)
31
- - [Rescue-service keywords](#rescue-service-keywords)
31
+ - [Rescue service](#rescue-service)
32
32
  - [Keyword descriptions](#keyword-descriptions)
33
+ - [Incident map image](#incident-map-image)
33
34
  - [States (under `waip-web.0.*`)](#states-under-waip-web0)
34
35
  - [info](#info) · [status](#status) · [einsatz](#einsatz) ·
35
36
  [einsatz.json](#einsatzjson) · [einsatz.tts](#einsatztts) ·
@@ -176,13 +177,20 @@ adapter provides – typical use in a fire station/EMS environment:
176
177
  (`einsatz.beschreibung`), resolved locally from a user-maintained
177
178
  keyword table plus an optional decoder for the `R<RTW>N<NEF>`
178
179
  rescue-service keyword scheme used by several dispatch
179
- centers - see [Rescue-service keywords](#rescue-service-keywords)
180
+ centers - see [Rescue service](#rescue-service)
181
+ - Rescue-service incidents can be ignored entirely (no states, no
182
+ history, no TTS) - useful where WAIP only signals them unreliably in
183
+ the first place, see [Rescue service](#rescue-service)
184
+ - Optional incident map image: a PNG centered on the incident's
185
+ coordinates and marked with a dot, composed locally from OpenStreetMap
186
+ tiles, with its file path exposed as a state - see
187
+ [Incident map image](#incident-map-image)
180
188
 
181
189
  ## Configuration
182
190
 
183
191
  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.
192
+ four tabs: **Connection**, **Rescue service**, **Keyword descriptions**
193
+ and **Incident map image** – see below for all four.
186
194
 
187
195
  ### Connection
188
196
 
@@ -216,7 +224,20 @@ observed lifetime, at least 55 seconds, at most a fixed 5-minute ceiling)
216
224
  – the exact same clamping that `/js/session_keepalive.js` on the site
217
225
  itself uses.
218
226
 
219
- ### Rescue-service keywords
227
+ ### Rescue service
228
+
229
+ **Process rescue-service incidents** (admin checkbox, **on** by
230
+ default): incidents whose `einsatzart` identifies them as a
231
+ rescue-service call (contains "Rettung" or "Krankentransport",
232
+ case-insensitive - see the `einsatzart` examples in
233
+ [einsatz](#einsatz)) are processed normally by default, matching every
234
+ prior version of the adapter. Unchecking this box makes the adapter
235
+ **completely ignore** such incidents instead: no `einsatz.*` states are
236
+ updated, no history entry is written, no TTS announcement is triggered
237
+ - as if the incident had never arrived. This exists because
238
+ rescue-service incidents reportedly only get alarmed/signaled via WAIP
239
+ in some regions/dispatch centers at all - where they don't, or aren't
240
+ wanted, this box turns the noise off.
220
241
 
221
242
  `einsatz.stichwort` is passed through unchanged from the server as a
222
243
  bare code (e.g. `B2`, `H:VU mit P`) – WAIP-Web itself doesn't explain
@@ -251,13 +272,16 @@ multi-language and these labels aren't translated automatically:
251
272
 
252
273
  ### Keyword descriptions
253
274
 
254
- Checked only if the decoder on the [Rescue-service keywords](#rescue-service-keywords)
275
+ Checked only if the decoder on the [Rescue service](#rescue-service)
255
276
  tab didn't match: a list of `{keyword pattern, description, match type}`
256
277
  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
278
+ case-insensitive and treats spaces and hyphens as equivalent (any run
279
+ of either collapses to one before comparing), so e.g. `H:VU mit P`,
280
+ `H:VU-mit-P` and `H:VU - mit - P` all match the same row – no need to
281
+ add a separate row per spelling variant. If several rows match, the
282
+ **most specific (longest) pattern wins automatically** – row order has
283
+ no effect on matching, so the table can be freely sorted by any column
284
+ (click the column header) without changing behavior. The table is pre-filled
261
285
  with an example fire/rescue keyword list (`B:...`/`H:...`) as a
262
286
  starting point only – it is **not** confirmed to match any specific
263
287
  dispatch center's real catalog, edit or fully replace it as needed.
@@ -271,6 +295,41 @@ itself, not something this adapter controls).
271
295
  If neither this table nor the decoder above match, `einsatz.beschreibung`
272
296
  is simply `null` - not an error.
273
297
 
298
+ ### Incident map image
299
+
300
+ **Generate a map image for each incident** (admin checkbox, off by
301
+ default): when enabled and an incident carries valid coordinates, the
302
+ adapter downloads the tiles it needs from the public
303
+ `tile.openstreetmap.org` server, composites them into a single PNG
304
+ centered on the incident's location, draws a marker (red dot, white
305
+ ring) at the exact center, and stamps the OpenStreetMap attribution
306
+ (required by its ODbL license) into the bottom-left corner. The file
307
+ path is written to `einsatz.kartenbildPfad` (see [einsatz](#einsatz)) –
308
+ typical use is attaching that file from a Blockly/JavaScript script,
309
+ e.g. as a Pushover notification attachment. Only the 10 most recently
310
+ generated images are kept on disk; older ones are deleted automatically
311
+ whenever a new one is written. Image generation runs in the background
312
+ and never delays alarm processing – a slow or failing tile download
313
+ just means a missing/delayed image, nothing else is affected.
314
+
315
+ | Field | Description | Default |
316
+ | --- | --- | --- |
317
+ | Image width (px) | Width of the generated PNG | `600` |
318
+ | Image height (px) | Height of the generated PNG | `400` |
319
+ | Zoom level | OpenStreetMap zoom level (1 = whole world, 19 = building level) | `16` |
320
+
321
+ Images are stored under this adapter instance's own data directory
322
+ (`iobroker-data/<instance>/maps/`), not as ioBroker file objects –
323
+ `einsatz.kartenbildPfad` is therefore a real, absolute filesystem path
324
+ that a script running on the same host can read directly.
325
+
326
+ > **Note:** This uses the official, free `tile.openstreetmap.org`
327
+ > server, which is intended for occasional/low-volume use (see the
328
+ > [OSM Tile Usage Policy](https://operations.osmfoundation.org/policies/tiles/)).
329
+ > One image per incident stays well within that – don't lower the zoom
330
+ > level to cover huge areas or otherwise turn this into bulk tile
331
+ > fetching.
332
+
274
333
  ## States (under `waip-web.0.*`)
275
334
 
276
335
  Feedback and routes are 1:n lists per incident. They are stored as
@@ -331,13 +390,14 @@ The most recently finished incident remains available via
331
390
  | `uuid` | string | Unique incident UUID (also used to associate feedback) |
332
391
  | `einsatzart` | string | e.g. "Brandeinsatz" (fire), "Hilfeleistungseinsatz" (technical assistance), "Rettungseinsatz" (rescue/EMS), "Krankentransport" (patient transport) |
333
392
  | `stichwort` | string | Alarm keyword |
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 |
393
+ | `beschreibung` | string | Description for `stichwort`, resolved locally (not sent by the server) - see [Rescue service](#rescue-service)/[Keyword descriptions](#keyword-descriptions) below. `null` if nothing matched |
335
394
  | `ort` | string | Location/town |
336
395
  | `ortsteil` | string | District (if different from `ort`) |
337
396
  | `zeitstempel` | string (date) | Alarm time |
338
397
  | `ablaufzeit` | string (date) | End of the standby display duration, basis for `restzeit` |
339
398
  | `sondersignal` | number | `1` = special signal (lights & siren), otherwise none |
340
399
  | `latitude` / `longitude` | number | Incident location (normalized from wgs84 fields or GeoJSON centroid) |
400
+ | `kartenbildPfad` | string | Path to the most recently generated incident map image (PNG) - see [Incident map image](#incident-map-image). Unlike the fields above, **not** cleared on `io.standby` (same pattern as `einsatz.tts.last`), so it stays available to pick up the last incident's map after it ended |
341
401
  | `routenGesamt` | number | Number of routes in the current incident |
342
402
  | `rueckmeldungGesamt` | number | Total feedback count for the current incident |
343
403
  | `rueckmeldungAnzahl.ek` | number | Feedback count as team member ("Einsatzkraft") |
@@ -408,6 +468,32 @@ example.
408
468
 
409
469
  ## Changelog
410
470
 
471
+ ### 0.7.28 (2026-08-24)
472
+
473
+ - New: **Process rescue-service incidents** checkbox on the
474
+ [Rescue service](#rescue-service) tab (on by default) - when
475
+ unchecked, incidents identified as rescue-service calls via
476
+ `einsatzart` are ignored completely (no states, no history, no TTS).
477
+ The tab itself was renamed from "Rescue-service keywords" to "Rescue
478
+ service", with the new checkbox placed first.
479
+ - New: [Incident map image](#incident-map-image) tab - optionally
480
+ generates a PNG map (OpenStreetMap tiles, marked with a dot) centered
481
+ on each incident's coordinates, exposed via the new
482
+ `einsatz.kartenbildPfad` state. Configurable image size and zoom
483
+ level; only the 10 most recent images are kept.
484
+
485
+ ### 0.7.27 (2026-08-23)
486
+
487
+ - [Keyword table](#keyword-descriptions) matching now treats spaces
488
+ and hyphens as equivalent (any run of either collapses to one
489
+ before comparing) - e.g. `H:VU mit P` and `H:VU-mit-P` now match
490
+ the same row, so dispatch-center spelling variants no longer need a
491
+ separate row each. Removed the now-redundant `B:Gebäude-Groß`/
492
+ `B:Gebäude-Klein` rows added in 0.7.24 (the existing `B:Gebäude
493
+ groß`/`B:Gebäude klein` rows already cover them). Comparison was
494
+ already case-insensitive before this change. Admin UI help text
495
+ updated accordingly.
496
+
411
497
  ### 0.7.26 (2026-08-23)
412
498
 
413
499
  - [Keyword descriptions](#keyword-descriptions) tab: `Description` and
@@ -417,7 +503,7 @@ example.
417
503
 
418
504
  ### 0.7.25 (2026-08-23)
419
505
 
420
- - Updated the admin UI text for the [rescue-service decoder](#rescue-service-keywords)
506
+ - Updated the admin UI text for the [rescue-service decoder](#rescue-service)
421
507
  to reflect the two supported keyword spellings added in 0.7.23
422
508
  (Leitstelle Lausitz `R1N1p`/`R1N0-NT` and IRLS Brandenburg `R1N1 p`/
423
509
  `R1N0 nt`) - the checkbox label/help and the NT suffix label/help
@@ -440,7 +526,7 @@ example.
440
526
  (v2.7) - previously only the `R<ambulance>N<physician-vehicle>`
441
527
  scheme and the Brand/THL (`B:`/`H:`) table were covered, so
442
528
  `einsatz.beschreibung` stayed `null` for these.
443
- - Fixed the [rescue-service keyword](#rescue-service-keywords) decoder
529
+ - Fixed the [rescue-service keyword](#rescue-service) decoder
444
530
  (`decodeRettungsdienstStichwort`): it only accepted the Leitstelle
445
531
  Lausitz spelling without a space (`R1N1p`, `R1N0-NT`) and silently
446
532
  returned `null` for the IRLS Brandenburg spelling with a space
@@ -470,7 +556,7 @@ example.
470
556
  after using it.
471
557
  - Split the admin configuration UI into 3 tabs -
472
558
  [Connection](#connection), [Rescue-service
473
- keywords](#rescue-service-keywords),
559
+ keywords](#rescue-service),
474
560
  [Keyword descriptions](#keyword-descriptions) - each with a
475
561
  matching icon, replacing the single combined settings page.
476
562
  - Documentation: restructured the configuration section of the
@@ -4,7 +4,13 @@
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
5
  "Connection": "Verbindung",
6
6
  "Description": "Beschreibung",
7
+ "For every incident with valid coordinates, downloads OpenStreetMap tiles and composes a PNG centered on the incident's location, marked with a dot. The file path is written to the einsatz.kartenbildPfad state, e.g. for sending as a Pushover attachment from a Blockly/JavaScript script. Only the 10 most recent images are kept, older ones are deleted automatically. Uses the public tile.openstreetmap.org server - keep this to the intended one-image-per-incident use per the OSM Tile Usage Policy.": "Lädt für jeden Einsatz mit gültigen Koordinaten OpenStreetMap-Kacheln herunter und setzt sie zu einem PNG zusammen, zentriert auf den Einsatzort und mit einem Punkt markiert. Der Dateipfad wird in den State einsatz.kartenbildPfad geschrieben, z.B. um ihn per Blockly/JavaScript-Skript als Pushover-Anhang zu versenden. Es werden nur die 10 neuesten Bilder aufgehoben, ältere werden automatisch gelöscht. Nutzt den öffentlichen Server tile.openstreetmap.org - bitte bei der vorgesehenen Nutzung von einem Bild pro Einsatz bleiben, siehe OSM Tile Usage Policy.",
8
+ "Generate a map image for each incident": "Kartenbild für jeden Einsatz erzeugen",
9
+ "Height of the generated map image in pixels.": "Höhe des erzeugten Kartenbilds in Pixeln.",
7
10
  "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.",
11
+ "Image height (px)": "Bildhöhe (px)",
12
+ "Image width (px)": "Bildbreite (px)",
13
+ "Incident map image": "Einsatzkarte",
8
14
  "Keyword / pattern": "Stichwort / Muster",
9
15
  "Keyword descriptions": "Stichwort-Stammdaten",
10
16
  "Label for N (emergency vehicle count)": "Bezeichnung für N (Anzahl Notfalleinsatzfahrzeuge)",
@@ -13,13 +19,15 @@
13
19
  "Label for suffix f (first responder)": "Bezeichnung für Suffix f (First Responder)",
14
20
  "Label for suffix p (polytrauma)": "Bezeichnung für Suffix p (Polytrauma)",
15
21
  "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.",
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).",
22
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. 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. Der Vergleich ist case-insensitiv und behandelt Leerzeichen/Bindestriche als gleichwertig (jede Folge aus beidem wird vor dem Vergleich zu einem Leerzeichen zusammengefasst), sodass z.B. \"H:VU mit P\" und \"H:VU-mit-P\" dieselbe Zeile matchen - keine eigene Zeile pro Schreibvariante nötig. 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).",
17
23
  "Match": "Abgleich",
18
24
  "Monitor ID": "Monitor-ID",
25
+ "OpenStreetMap zoom level (1 = whole world, 19 = building level). Higher values show a smaller area in more detail.": "OpenStreetMap-Zoomstufe (1 = ganze Welt, 19 = Gebäudeebene). Höhere Werte zeigen einen kleineren Ausschnitt in mehr Detail.",
26
+ "Process rescue-service incidents": "Rettungsdienst-Einsätze verarbeiten",
19
27
  "Reconnect delay (s)": "Wiederverbindungs-Verzögerung (s)",
20
28
  "Registration timeout (s)": "Registrierungs-Timeout (s)",
29
+ "Rescue service": "Rettungsdienst",
21
30
  "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
31
  "Text appended when the keyword ends in \"-NT\" or \" nt\".": "Text, der angehängt wird, wenn das Stichwort auf \"-NT\" oder \" nt\" endet.",
24
32
  "Text appended when the keyword ends in \"f\".": "Text, der angehängt wird, wenn das Stichwort auf \"f\" endet.",
25
33
  "Text appended when the keyword ends in \"p\".": "Text, der angehängt wird, wenn das Stichwort auf \"p\" endet.",
@@ -27,6 +35,9 @@
27
35
  "Text used in the generated description for the R<n> part, e.g. \"Rettungswagen: 1\".": "Text für den R<n>-Teil der erzeugten Beschreibung, z.B. \"Rettungswagen: 1\".",
28
36
  "WAIP server URL": "WAIP-Server-URL",
29
37
  "Wait time before the adapter automatically reconnects after a lost connection or a connection error.": "Wartezeit, bevor der Adapter nach einem Verbindungsabbruch oder -fehler automatisch neu verbindet.",
38
+ "When unchecked, incidents whose einsatzart identifies them as a rescue-service call (contains \"Rettung\" or \"Krankentransport\", case-insensitive) are ignored completely - no states are updated, no history entry is written, no TTS announcement is triggered. Useful because some WAIP dispatch centers only ever signal rescue-service incidents unreliably or not at all. Enabled by default to match previous behavior.": "Wenn deaktiviert, werden Einsätze, deren einsatzart auf einen Rettungsdienst-Einsatz hindeutet (enthält \"Rettung\" oder \"Krankentransport\", ohne Berücksichtigung von Groß-/Kleinschreibung), komplett ignoriert - keine States werden aktualisiert, kein History-Eintrag geschrieben, keine TTS-Ansage ausgelöst. Sinnvoll, weil manche WAIP-Leitstellen Rettungsdienst-Einsätze nur unzuverlässig oder gar nicht signalisieren. Standardmäßig aktiviert, um das bisherige Verhalten beizubehalten.",
39
+ "Width of the generated map image in pixels.": "Breite des erzeugten Kartenbilds in Pixeln.",
40
+ "Zoom level": "Zoomstufe",
30
41
  "contains": "enthält",
31
42
  "starts with": "beginnt mit"
32
43
  }
@@ -1,5 +1,14 @@
1
1
  {
2
2
  "Alarm keyword descriptions": "Alarm keyword descriptions",
3
+ "Generate a map image for each incident": "Generate a map image for each incident",
4
+ "For every incident with valid coordinates, downloads OpenStreetMap tiles and composes a PNG centered on the incident's location, marked with a dot. The file path is written to the einsatz.kartenbildPfad state, e.g. for sending as a Pushover attachment from a Blockly/JavaScript script. Only the 10 most recent images are kept, older ones are deleted automatically. Uses the public tile.openstreetmap.org server - keep this to the intended one-image-per-incident use per the OSM Tile Usage Policy.": "For every incident with valid coordinates, downloads OpenStreetMap tiles and composes a PNG centered on the incident's location, marked with a dot. The file path is written to the einsatz.kartenbildPfad state, e.g. for sending as a Pushover attachment from a Blockly/JavaScript script. Only the 10 most recent images are kept, older ones are deleted automatically. Uses the public tile.openstreetmap.org server - keep this to the intended one-image-per-incident use per the OSM Tile Usage Policy.",
5
+ "Image width (px)": "Image width (px)",
6
+ "Width of the generated map image in pixels.": "Width of the generated map image in pixels.",
7
+ "Image height (px)": "Image height (px)",
8
+ "Height of the generated map image in pixels.": "Height of the generated map image in pixels.",
9
+ "Incident map image": "Incident map image",
10
+ "Zoom level": "Zoom level",
11
+ "OpenStreetMap zoom level (1 = whole world, 19 = building level). Higher values show a smaller area in more detail.": "OpenStreetMap zoom level (1 = whole world, 19 = building level). Higher values show a smaller area in more detail.",
3
12
  "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)",
4
13
  "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)",
5
14
  "Connection": "Connection",
@@ -13,13 +22,15 @@
13
22
  "Label for suffix f (first responder)": "Label for suffix f (first responder)",
14
23
  "Label for suffix p (polytrauma)": "Label for suffix p (polytrauma)",
15
24
  "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).",
25
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. 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. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. 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).",
17
26
  "Match": "Match",
18
27
  "Monitor ID": "Monitor ID",
28
+ "Process rescue-service incidents": "Process rescue-service incidents",
29
+ "When unchecked, incidents whose einsatzart identifies them as a rescue-service call (contains \"Rettung\" or \"Krankentransport\", case-insensitive) are ignored completely - no states are updated, no history entry is written, no TTS announcement is triggered. Useful because some WAIP dispatch centers only ever signal rescue-service incidents unreliably or not at all. Enabled by default to match previous behavior.": "When unchecked, incidents whose einsatzart identifies them as a rescue-service call (contains \"Rettung\" or \"Krankentransport\", case-insensitive) are ignored completely - no states are updated, no history entry is written, no TTS announcement is triggered. Useful because some WAIP dispatch centers only ever signal rescue-service incidents unreliably or not at all. Enabled by default to match previous behavior.",
19
30
  "Reconnect delay (s)": "Reconnect delay (s)",
20
31
  "Registration timeout (s)": "Registration timeout (s)",
32
+ "Rescue service": "Rescue service",
21
33
  "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
34
  "Text appended when the keyword ends in \"-NT\" or \" nt\".": "Text appended when the keyword ends in \"-NT\" or \" nt\".",
24
35
  "Text appended when the keyword ends in \"f\".": "Text appended when the keyword ends in \"f\".",
25
36
  "Text appended when the keyword ends in \"p\".": "Text appended when the keyword ends in \"p\".",
@@ -3,8 +3,15 @@
3
3
  "Automatically decode rescue-service keywords (R<RTW>N<NEF>[p][f][-NT], with or without spaces)": "Decodificar automáticamente las palabras clave del servicio de rescate (R<RTW>N<NEF>[p][f][-NT], con o sin espacios)",
4
4
  "Base URL of the WAIP dispatch server (Socket.IO endpoint, namespace /waip is appended automatically)": "URL base del servidor de envío WAIP (punto final Socket.IO, el espacio de nombres /waip se agrega automáticamente)",
5
5
  "Connection": "Conexión",
6
+ "contains": "contiene",
6
7
  "Description": "Descripción",
8
+ "For every incident with valid coordinates, downloads OpenStreetMap tiles and composes a PNG centered on the incident's location, marked with a dot. The file path is written to the einsatz.kartenbildPfad state, e.g. for sending as a Pushover attachment from a Blockly/JavaScript script. Only the 10 most recent images are kept, older ones are deleted automatically. Uses the public tile.openstreetmap.org server - keep this to the intended one-image-per-incident use per the OSM Tile Usage Policy.": "Para cada incidente con coordenadas válidas, descarga teselas de OpenStreetMap y compone un PNG centrado en la ubicación del incidente, marcado con un punto. La ruta del archivo se escribe en el estado einsatz.kartenbildPfad, por ejemplo para enviarlo como adjunto de Pushover desde un script de Blockly/JavaScript. Solo se conservan las 10 imágenes más recientes, las más antiguas se eliminan automáticamente. Utiliza el servidor público tile.openstreetmap.org - mantén esto en el uso previsto de una imagen por incidente según la OSM Tile Usage Policy.",
9
+ "Generate a map image for each incident": "Generar una imagen de mapa para cada incidente",
10
+ "Height of the generated map image in pixels.": "Alto de la imagen de mapa generada en píxeles.",
7
11
  "How long to wait for the server to confirm the monitor registration before logging a warning; the connection itself keeps running either way.": "Cuánto tiempo esperar para que el servidor confirme el registro del monitor antes de registrar una advertencia; la conexión en sí sigue funcionando en cualquier sentido.",
12
+ "Image height (px)": "Alto de la imagen (px)",
13
+ "Image width (px)": "Ancho de la imagen (px)",
14
+ "Incident map image": "Imagen de mapa del incidente",
8
15
  "Keyword / pattern": "Palabra clave/patrón",
9
16
  "Keyword descriptions": "Descripciones de palabras clave",
10
17
  "Label for N (emergency vehicle count)": "Etiqueta para N (recuento de vehículos de emergencia)",
@@ -13,13 +20,16 @@
13
20
  "Label for suffix f (first responder)": "Etiqueta para el sufijo f (primer interviniente)",
14
21
  "Label for suffix p (polytrauma)": "Etiqueta para el sufijo p (politraumatismo)",
15
22
  "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.": "Cargado en vivo desde la página de descripción general /waip/ del servidor configurado: elija Leitstelle, Kreis, Träger o Wache, o elija 'Alle Wachalarme' (ID 0) para cada incidente. Si no se puede acceder al servidor, aún se puede ingresar una identificación manualmente.",
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).": "Asigna einsatz.stichwort a einsatz.beschreibung. Si varias filas coinciden, el patrón más específico (el más largo) gana automáticamente; el orden de las filas no tiene ningún efecto en la coincidencia, ordene libremente por cualquier columna. Precompletado con una lista de palabras clave de ejemplo de incendio/rescate como punto de partida; no se confirma que coincida con las palabras clave reales de su propio centro de despacho, edite/reemplace según sea necesario. Para hacer una copia de seguridad o transferir esta tabla, utilice la exportación/importación estándar de la configuración de instancia de ioBroker (JSON). Después de usar esa importación estándar, recargue la página de administración antes de comprobar esta tabla - el cuadro de diálogo de configuración abierto no la actualiza automáticamente desde una importación externa (una limitación de sincronización de estado del propio componente de tabla de administración).",
23
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. 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).": "Asigna einsatz.stichwort a einsatz.beschreibung. La comparación no distingue mayúsculas/minúsculas y trata los espacios/guiones como equivalentes (cualquier secuencia de ambos se reduce a uno antes de comparar), de modo que, por ejemplo, \"H:VU mit P\" y \"H:VU-mit-P\" coinciden con la misma fila - no es necesaria una fila separada por cada variante de escritura. Si varias filas coinciden, el patrón más específico (el más largo) gana automáticamente; el orden de las filas no tiene ningún efecto en la coincidencia, ordene libremente por cualquier columna. Precompletado con una lista de palabras clave de ejemplo de incendio/rescate como punto de partida; no se confirma que coincida con las palabras clave reales de su propio centro de despacho, edite/reemplace según sea necesario. Para hacer una copia de seguridad o transferir esta tabla, utilice la exportación/importación estándar de la configuración de instancia de ioBroker (JSON). Después de usar esa importación estándar, recargue la página de administración antes de comprobar esta tabla - el cuadro de diálogo de configuración abierto no la actualiza automáticamente desde una importación externa (una limitación de sincronización de estado del propio componente de tabla de administración).",
17
24
  "Match": "Fósforo",
18
25
  "Monitor ID": "Identificador del monitor",
26
+ "OpenStreetMap zoom level (1 = whole world, 19 = building level). Higher values show a smaller area in more detail.": "Nivel de zoom de OpenStreetMap (1 = todo el mundo, 19 = nivel de edificio). Valores más altos muestran un área más pequeña con más detalle.",
27
+ "Process rescue-service incidents": "Procesar incidentes del servicio de rescate",
19
28
  "Reconnect delay (s)": "Retardo(s) de reconexión",
20
29
  "Registration timeout (s)": "Tiempos de espera de registro",
30
+ "Rescue service": "Servicio de rescate",
21
31
  "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.": "Esquema de palabras clave del servicio de rescate R<RTW>N<NEF>, seguido opcionalmente de un modificador p/f y/o un sufijo NT (p. ej. \"R1N0\" = 1 ambulancia, sin médico de urgencias). Se reconocen dos escrituras: sin espacio y con guion antes de NT (Leitstelle Lausitz, p. ej. \"R1N1p\", \"R1N0-NT\") y con espacio y sin guion (Leitstelle Brandeburgo/IRLS, p. ej. \"R1N1 p\", \"R1N0 nt\") - actívelo solo si su central de despacho utiliza realmente uno de estos patrones. Tiene prioridad sobre la tabla de la pestaña Descripciones de palabras clave cuando una palabra clave coincide.",
22
- "Rescue-service keywords": "Palabras clave del servicio de rescate",
32
+ "starts with": "comienza con",
23
33
  "Text appended when the keyword ends in \"-NT\" or \" nt\".": "Texto añadido cuando la palabra clave termina en \"-NT\" o \" nt\".",
24
34
  "Text appended when the keyword ends in \"f\".": "Texto añadido cuando la palabra clave termina en \"f\".",
25
35
  "Text appended when the keyword ends in \"p\".": "Texto añadido cuando la palabra clave termina en \"p\".",
@@ -27,6 +37,7 @@
27
37
  "Text used in the generated description for the R<n> part, e.g. \"Rettungswagen: 1\".": "Texto utilizado en la descripción generada para la parte R<n>, p.e. \"Rettungswagen: 1\".",
28
38
  "WAIP server URL": "URL del servidor WAIP",
29
39
  "Wait time before the adapter automatically reconnects after a lost connection or a connection error.": "Tiempo de espera antes de que el adaptador se vuelva a conectar automáticamente después de una pérdida de conexión o un error de conexión.",
30
- "contains": "contiene",
31
- "starts with": "comienza con"
40
+ "When unchecked, incidents whose einsatzart identifies them as a rescue-service call (contains \"Rettung\" or \"Krankentransport\", case-insensitive) are ignored completely - no states are updated, no history entry is written, no TTS announcement is triggered. Useful because some WAIP dispatch centers only ever signal rescue-service incidents unreliably or not at all. Enabled by default to match previous behavior.": "Si se desactiva, los incidentes cuyo einsatzart los identifica como un aviso del servicio de rescate (contiene \"Rettung\" o \"Krankentransport\", sin distinguir mayúsculas/minúsculas) se ignoran por completo - no se actualiza ningún estado, no se escribe ninguna entrada en el historial, no se activa ningún aviso de voz (TTS). Útil porque algunas centrales de despacho de WAIP solo señalan los incidentes del servicio de rescate de forma poco fiable o no lo hacen en absoluto. Activado por defecto para mantener el comportamiento anterior.",
41
+ "Width of the generated map image in pixels.": "Ancho de la imagen de mapa generada en píxeles.",
42
+ "Zoom level": "Nivel de zoom"
32
43
  }
@@ -3,8 +3,15 @@
3
3
  "Automatically decode rescue-service keywords (R<RTW>N<NEF>[p][f][-NT], with or without spaces)": "Décoder automatiquement les mots-clés des services de secours (R<RTW>N<NEF>[p][f][-NT], avec ou sans espaces)",
4
4
  "Base URL of the WAIP dispatch server (Socket.IO endpoint, namespace /waip is appended automatically)": "URL de base du serveur de répartition WAIP (point de terminaison Socket.IO, l'espace de noms /waip est ajouté automatiquement)",
5
5
  "Connection": "Connexion",
6
+ "contains": "contient",
6
7
  "Description": "Description",
8
+ "For every incident with valid coordinates, downloads OpenStreetMap tiles and composes a PNG centered on the incident's location, marked with a dot. The file path is written to the einsatz.kartenbildPfad state, e.g. for sending as a Pushover attachment from a Blockly/JavaScript script. Only the 10 most recent images are kept, older ones are deleted automatically. Uses the public tile.openstreetmap.org server - keep this to the intended one-image-per-incident use per the OSM Tile Usage Policy.": "Pour chaque incident avec des coordonnées valides, télécharge des tuiles OpenStreetMap et compose un PNG centré sur l'emplacement de l'incident, marqué d'un point. Le chemin du fichier est écrit dans l'état einsatz.kartenbildPfad, par exemple pour l'envoyer en pièce jointe Pushover depuis un script Blockly/JavaScript. Seules les 10 images les plus récentes sont conservées, les plus anciennes sont supprimées automatiquement. Utilise le serveur public tile.openstreetmap.org - veillez à respecter l'usage prévu d'une image par incident selon la OSM Tile Usage Policy.",
9
+ "Generate a map image for each incident": "Générer une image de carte pour chaque incident",
10
+ "Height of the generated map image in pixels.": "Hauteur de l'image de carte générée en pixels.",
7
11
  "How long to wait for the server to confirm the monitor registration before logging a warning; the connection itself keeps running either way.": "Combien de temps attendre que le serveur confirme l'enregistrement du moniteur avant d'enregistrer un avertissement ; la connexion elle-même continue de fonctionner dans les deux sens.",
12
+ "Image height (px)": "Hauteur de l'image (px)",
13
+ "Image width (px)": "Largeur de l'image (px)",
14
+ "Incident map image": "Image de carte de l'incident",
8
15
  "Keyword / pattern": "Mot-clé/modèle",
9
16
  "Keyword descriptions": "Descriptions des mots-clés",
10
17
  "Label for N (emergency vehicle count)": "Étiquette pour N (nombre de véhicules d'urgence)",
@@ -13,13 +20,16 @@
13
20
  "Label for suffix f (first responder)": "Étiquette pour le suffixe f (premier intervenant)",
14
21
  "Label for suffix p (polytrauma)": "Étiquette pour le suffixe p (polytraumatisme)",
15
22
  "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.": "Chargé en direct depuis la page de présentation /waip/ du serveur configuré - choisissez par Leitstelle, Kreis, Träger ou Wache, ou choisissez 'Alle Wachalarme' (ID 0) pour chaque incident. Si le serveur n'est pas accessible, un identifiant peut toujours être saisi manuellement.",
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).": "Mappe einsatz.stichwort à einsatz.beschreibung. Si plusieurs lignes correspondent, le modèle le plus spécifique (le plus long) l'emporte automatiquement - l'ordre des lignes n'a aucun effet sur la correspondance, triez-la librement par n'importe quelle colonne. Pré-rempli avec un exemple de liste de mots-clés d'incendie/sauvetage comme point de départ - il n'est pas confirmé qu'il correspond aux mots-clés réels de votre propre centre de répartition, modifiez/remplacez si nécessaire. Pour sauvegarder ou transférer ce tableau, utilisez l'export/import standard de la configuration d'instance d'ioBroker (JSON). Après avoir utilisé cet import standard, rechargez la page Admin avant de vérifier ce tableau - la boîte de dialogue de configuration ouverte ne l'actualise pas automatiquement après un import externe (une limitation de synchronisation d'état du composant de tableau Admin lui-même).",
23
+ "Maps einsatz.stichwort to einsatz.beschreibung. Comparison is case-insensitive and treats spaces/hyphens as equivalent (any run of either collapses to one before comparing), so e.g. \"H:VU mit P\" and \"H:VU-mit-P\" match the same row - no need for a separate row per spelling. 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).": "Mappe einsatz.stichwort à einsatz.beschreibung. La comparaison ne tient pas compte de la casse et traite les espaces/tirets comme équivalents (toute suite de l'un ou l'autre est ramenée à un seul avant la comparaison), de sorte que par exemple \"H:VU mit P\" et \"H:VU-mit-P\" correspondent à la même ligne - pas besoin d'une ligne distincte par variante d'orthographe. Si plusieurs lignes correspondent, le modèle le plus spécifique (le plus long) l'emporte automatiquement - l'ordre des lignes n'a aucun effet sur la correspondance, triez-la librement par n'importe quelle colonne. Pré-rempli avec un exemple de liste de mots-clés d'incendie/sauvetage comme point de départ - il n'est pas confirmé qu'il correspond aux mots-clés réels de votre propre centre de répartition, modifiez/remplacez si nécessaire. Pour sauvegarder ou transférer ce tableau, utilisez l'export/import standard de la configuration d'instance d'ioBroker (JSON). Après avoir utilisé cet import standard, rechargez la page Admin avant de vérifier ce tableau - la boîte de dialogue de configuration ouverte ne l'actualise pas automatiquement après un import externe (une limitation de synchronisation d'état du composant de tableau Admin lui-même).",
17
24
  "Match": "Correspondre",
18
25
  "Monitor ID": "ID du moniteur",
26
+ "OpenStreetMap zoom level (1 = whole world, 19 = building level). Higher values show a smaller area in more detail.": "Niveau de zoom OpenStreetMap (1 = monde entier, 19 = niveau du bâtiment). Des valeurs plus élevées affichent une zone plus petite avec plus de détails.",
27
+ "Process rescue-service incidents": "Traiter les incidents du service de secours",
19
28
  "Reconnect delay (s)": "Délai(s) de reconnexion",
20
29
  "Registration timeout (s)": "Délai(s) d'enregistrement",
30
+ "Rescue service": "Service de secours",
21
31
  "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.": "Schéma de mots-clés des services de secours R<RTW>N<NEF>, éventuellement suivi d'un modificateur p/f et/ou d'un suffixe NT (par ex. \"R1N0\" = 1 ambulance, pas de médecin urgentiste). Deux orthographes sont reconnues : sans espace et avec un tiret avant NT (Leitstelle Lausitz, par ex. \"R1N1p\", \"R1N0-NT\") et avec un espace et sans tiret (Leitstelle Brandebourg/IRLS, par ex. \"R1N1 p\", \"R1N0 nt\") - à activer uniquement si votre centre de répartition utilise effectivement l'un de ces modèles. Prioritaire sur la table de l'onglet Descriptions de mots-clés lorsqu'un mot-clé correspond.",
22
- "Rescue-service keywords": "Mots-clés du service de secours",
32
+ "starts with": "commence par",
23
33
  "Text appended when the keyword ends in \"-NT\" or \" nt\".": "Texte ajouté lorsque le mot-clé se termine par \"-NT\" ou \" nt\".",
24
34
  "Text appended when the keyword ends in \"f\".": "Texte ajouté lorsque le mot clé se termine par \"f\".",
25
35
  "Text appended when the keyword ends in \"p\".": "Texte ajouté lorsque le mot clé se termine par \"p\".",
@@ -27,6 +37,7 @@
27
37
  "Text used in the generated description for the R<n> part, e.g. \"Rettungswagen: 1\".": "Texte utilisé dans la description générée pour la pièce R<n>, par ex. \"Rettungswagen: 1\".",
28
38
  "WAIP server URL": "URL du serveur WAIP",
29
39
  "Wait time before the adapter automatically reconnects after a lost connection or a connection error.": "Temps d'attente avant que l'adaptateur ne se reconnecte automatiquement après une perte de connexion ou une erreur de connexion.",
30
- "contains": "contient",
31
- "starts with": "commence par"
40
+ "When unchecked, incidents whose einsatzart identifies them as a rescue-service call (contains \"Rettung\" or \"Krankentransport\", case-insensitive) are ignored completely - no states are updated, no history entry is written, no TTS announcement is triggered. Useful because some WAIP dispatch centers only ever signal rescue-service incidents unreliably or not at all. Enabled by default to match previous behavior.": "Si désactivé, les incidents dont le einsatzart les identifie comme un appel du service de secours (contient \"Rettung\" ou \"Krankentransport\", sans distinction de casse) sont complètement ignorés - aucun état n'est mis à jour, aucune entrée d'historique n'est écrite, aucune annonce TTS n'est déclenchée. Utile car certains centres de répartition WAIP ne signalent les incidents du service de secours que de manière peu fiable, voire pas du tout. Activé par défaut pour conserver le comportement précédent.",
41
+ "Width of the generated map image in pixels.": "Largeur de l'image de carte générée en pixels.",
42
+ "Zoom level": "Niveau de zoom"
32
43
  }