iobroker.waip-web 0.7.27 → 0.7.29

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,25 @@ 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 PNG, lokal aus OpenStreetMap-Kacheln zusammengesetzt, mit
184
+ dem von WAIP-Web gesendeten Einsatzgebiet als Umriss in
185
+ konfigurierbarer Farbe/Stärke eingezeichnet (Rückfall auf
186
+ Punkt-Markierung), zoomt bei Bedarf automatisch so heraus, dass das
187
+ gesamte Gebiet sichtbar bleibt, Dateipfad als State bereitgestellt -
188
+ siehe [Einsatzkarte](#einsatzkarte)
178
189
 
179
190
  ## Konfiguration
180
191
 
181
192
  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.
193
+ vier Tabs verteilt: **Verbindung**, **Rettungsdienst**,
194
+ **Stichwort-Stammdaten** und **Einsatzkarte** – alle vier unten näher
195
+ beschrieben.
184
196
 
185
197
  ### Verbindung
186
198
 
@@ -214,7 +226,21 @@ Laufzeit, mindestens 55 Sekunden, höchstens die konfigurierte Obergrenze) –
214
226
  genau die gleiche Klammerung, die auch `/js/session_keepalive.js` der
215
227
  Website selbst verwendet.
216
228
 
217
- ### Rettungsdienst-Stichwörter
229
+ ### Rettungsdienst
230
+
231
+ **Rettungsdienst-Einsätze verarbeiten** (Admin-Checkbox, standardmäßig
232
+ **an**): Einsätze, deren `einsatzart` auf einen Rettungsdienst-Einsatz
233
+ hindeutet (enthält "Rettung" oder "Krankentransport", ohne
234
+ Berücksichtigung von Groß-/Kleinschreibung - siehe die
235
+ `einsatzart`-Beispiele unter [einsatz](#einsatz)), werden standardmäßig
236
+ ganz normal verarbeitet, wie in jeder früheren Adapter-Version. Wird die
237
+ Checkbox deaktiviert, ignoriert der Adapter solche Einsätze stattdessen
238
+ **komplett**: keine `einsatz.*`-States werden aktualisiert, kein
239
+ History-Eintrag geschrieben, keine TTS-Ansage ausgelöst - als wäre der
240
+ Einsatz nie eingegangen. Hintergrund: Rettungsdienst-Einsätze werden
241
+ über WAIP Berichten zufolge nur in manchen Regionen/Leitstellen
242
+ überhaupt alarmiert/signalisiert - wo das nicht der Fall ist oder nicht
243
+ gewünscht wird, schaltet diese Checkbox das Rauschen ab.
218
244
 
219
245
  `einsatz.stichwort` wird unverändert vom Server als bloßer Code
220
246
  übernommen (z.B. `B2`, `H:VU mit P`) – WAIP-Web selbst erklärt nicht,
@@ -225,7 +251,7 @@ werden dabei keine Daten irgendwohin gesendet. Dieser Tab ist die erste
225
251
  von zwei Quellen, die der Reihe nach geprüft werden (die zweite steht
226
252
  unter [Stichwort-Stammdaten](#stichwort-stammdaten)):
227
253
 
228
- **Rettungsdienst-Dekodierung** (Admin-Checkbox, standardmäßig aus):
254
+ **Rettungsdienst-Dekodierung** (Admin-Checkbox, standardmäßig an):
229
255
  passt das Stichwort auf das Muster `R<Anzahl RTW>N<Anzahl NEF>[p][f][-NT]`
230
256
  (z.B. `R1N0` → "Rettungswagen: 1, Notfalleinsatzfahrzeug: 0"), wird
231
257
  automatisch eine Beschreibung erzeugt. Zwei Schreibweisen des
@@ -235,8 +261,9 @@ vor `NT` (z.B. `R1N1p`, `R1N0-NT`, siehe
235
261
  dazu) sowie mit Leerzeichen und ohne Bindestrich (z.B. `R1N1 p`,
236
262
  `R1N0 nt`, wie von der IRLS Brandenburg verwendet) – dieses Schema
237
263
  (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
264
+ nicht nur diesen beiden – hat keine Auswirkung, falls eure Leitstelle
265
+ keines dieser Muster verwendet, da das Stichwort dann einfach nicht
266
+ passt. Der Text für jeden Teil ist
240
267
  selbst konfigurierbar (5 zusätzliche Textfelder erscheinen, sobald
241
268
  die Checkbox aktiviert ist), da der Adapter mehrsprachig ist und
242
269
  diese Bezeichnungen nicht automatisch übersetzt werden:
@@ -252,7 +279,7 @@ diese Bezeichnungen nicht automatisch übersetzt werden:
252
279
  ### Stichwort-Stammdaten
253
280
 
254
281
  Wird nur geprüft, falls der Dekoder auf dem Tab
255
- [Rettungsdienst-Stichwörter](#rettungsdienst-stichwörter) nicht gegriffen
282
+ [Rettungsdienst](#rettungsdienst) nicht gegriffen
256
283
  hat: eine Liste von `{Stichwort-Muster, Beschreibung, Abgleich-Typ}`-Zeilen
257
284
  – Abgleich-Typ ist `beginnt mit` oder `enthält`, der Vergleich ist
258
285
  case-insensitiv und behandelt Leerzeichen und Bindestriche als
@@ -278,6 +305,58 @@ etwas, das dieser Adapter beeinflussen kann).
278
305
  Passt weder diese Tabelle noch der Dekoder oben, bleibt
279
306
  `einsatz.beschreibung` einfach `null` – kein Fehler.
280
307
 
308
+ ### Einsatzkarte
309
+
310
+ **Kartenbild für jeden Einsatz erzeugen** (Admin-Checkbox, standardmäßig
311
+ aus): ist die Checkbox aktiv und liegen für einen Einsatz gültige
312
+ Koordinaten vor, lädt der Adapter die dafür nötigen Kacheln vom
313
+ öffentlichen Server `tile.openstreetmap.org` herunter, setzt sie zu
314
+ einem einzigen PNG zusammen, zentriert auf den Einsatzort, und stempelt
315
+ die von der ODbL-Lizenz vorgeschriebene OpenStreetMap-Attribution unten
316
+ links auf. Das Einsatzgebiet, das WAIP-Web im `geometry`-Feld des
317
+ Events sendet (meist ein kreisförmiges Polygon um den Einsatzort, nicht
318
+ nur dessen Mittelpunkt), wird als Umriss in konfigurierbarer Farbe und
319
+ Strichstärke ins Bild eingezeichnet - also die vom Server original
320
+ gesendete Form, keine Markierung an deren
321
+ Mittelpunkt. Nur falls kein solches Polygon vorliegt (z.B. enthält das
322
+ Event nur einen Punkt), fällt der Adapter auf eine einfache
323
+ Punkt-Markierung in der Mitte zurück. Das Einsatzgebiet bleibt dabei
324
+ immer vollständig sichtbar: passt es bei der konfigurierten Zoomstufe
325
+ nicht ins Bild, zoomt der Adapter automatisch so weit heraus (nie
326
+ hinein), wie nötig, damit das gesamte Gebiet hineinpasst, statt es am
327
+ Rand abzuschneiden. Der Dateipfad wird in
328
+ `einsatz.kartenbildPfad` geschrieben
329
+ (siehe [einsatz](#einsatz)) – typische Verwendung ist der Versand dieser
330
+ Datei aus einem Blockly-/JavaScript-Skript heraus, z.B. als
331
+ Pushover-Benachrichtigungsanhang. Es werden nur die 10 zuletzt erzeugten
332
+ Bilder aufgehoben, ältere werden automatisch gelöscht, sobald ein neues
333
+ geschrieben wird. Die Bilderzeugung läuft im Hintergrund und verzögert
334
+ die Alarmverarbeitung nie – ein langsamer oder fehlschlagender
335
+ Kachel-Download führt höchstens zu einem fehlenden/verspäteten Bild,
336
+ sonst bleibt nichts betroffen.
337
+
338
+ | Feld | Beschreibung | Default |
339
+ | --- | --- | --- |
340
+ | Bildbreite (px) | Breite des erzeugten PNGs | `600` |
341
+ | Bildhöhe (px) | Höhe des erzeugten PNGs | `400` |
342
+ | Zoomstufe | OpenStreetMap-Zoomstufe (1 = ganze Welt, 19 = Gebäudeebene) - ein Maximalwert, wird bei Bedarf automatisch reduziert, damit das Einsatzgebiet vollständig sichtbar bleibt | `16` |
343
+ | Umrissfarbe | Farbe des Einsatzgebiet-Umrisses (und des Kerns der Fallback-Punkt-Markierung) | `#DD2020` |
344
+ | Umriss-Strichstärke (px) | Linienstärke des Umrisses in Pixeln (1-12) | `3` |
345
+
346
+ Die Bilder liegen im eigenen Datenverzeichnis dieser Adapterinstanz
347
+ (`iobroker-data/<instance>/maps/`), nicht als ioBroker-Dateiobjekte –
348
+ `einsatz.kartenbildPfad` ist deshalb ein echter, absoluter
349
+ Dateisystempfad, den ein auf demselben Host laufendes Skript direkt
350
+ lesen kann.
351
+
352
+ > **Hinweis:** Genutzt wird der offizielle, kostenlose Server
353
+ > `tile.openstreetmap.org`, der für gelegentliche/geringe Nutzung
354
+ > gedacht ist (siehe die
355
+ > [OSM Tile Usage Policy](https://operations.osmfoundation.org/policies/tiles/)).
356
+ > Ein Bild pro Einsatz bleibt deutlich darunter – die Zoomstufe nicht
357
+ > so weit reduzieren, dass riesige Gebiete abgedeckt werden, und das
358
+ > Ganze nicht zu einem Massen-Kachel-Abruf ausbauen.
359
+
281
360
  ## States (unter `waip-web.0.*`)
282
361
 
283
362
  Rückmeldungen und Routen sind pro Einsatz Listen (1:n). Sie liegen als
@@ -339,13 +418,14 @@ stehen. Der zuletzt abgeschlossene Einsatz bleibt trotzdem über
339
418
  | `uuid` | string | Eindeutige Einsatz-UUID (dient auch der Zuordnung von Rückmeldungen) |
340
419
  | `einsatzart` | string | z. B. „Brandeinsatz", „Hilfeleistungseinsatz", „Rettungseinsatz", „Krankentransport" |
341
420
  | `stichwort` | string | Alarmstichwort |
342
- | `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 |
421
+ | `beschreibung` | string | Beschreibung zu `stichwort`, lokal ermittelt (wird nicht vom Server gesendet) - siehe [Rettungsdienst](#rettungsdienst)/[Stichwort-Stammdaten](#stichwort-stammdaten) unten. `null` falls nichts passte |
343
422
  | `ort` | string | Ort |
344
423
  | `ortsteil` | string | Ortsteil (falls abweichend vom Ort) |
345
424
  | `zeitstempel` | string (date) | Alarmzeit |
346
425
  | `ablaufzeit` | string (date) | Ende der Standby-Anzeigedauer, Basis für `restzeit` |
347
426
  | `sondersignal` | number | `1` = Sondersignal, sonst kein Sondersignal |
348
427
  | `latitude` / `longitude` | number | Position des Einsatzortes (normalisiert aus wgs84-Feldern oder GeoJSON-Mittelpunkt) |
428
+ | `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 |
349
429
  | `routenGesamt` | number | Anzahl Routen im aktuellen Einsatz |
350
430
  | `rueckmeldungGesamt` | number | Rückmeldungen gesamt im aktuellen Einsatz |
351
431
  | `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,22 @@ 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, composed locally from OpenStreetMap tiles, with the
186
+ incident area WAIP-Web sends drawn as an outline in a configurable
187
+ color/thickness (falls back to a marker dot), automatically zoomed
188
+ out as needed to keep the whole area visible, file path exposed as a
189
+ state - see [Incident map image](#incident-map-image)
180
190
 
181
191
  ## Configuration
182
192
 
183
193
  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.
194
+ four tabs: **Connection**, **Rescue service**, **Keyword descriptions**
195
+ and **Incident map image** – see below for all four.
186
196
 
187
197
  ### Connection
188
198
 
@@ -216,7 +226,20 @@ observed lifetime, at least 55 seconds, at most a fixed 5-minute ceiling)
216
226
  – the exact same clamping that `/js/session_keepalive.js` on the site
217
227
  itself uses.
218
228
 
219
- ### Rescue-service keywords
229
+ ### Rescue service
230
+
231
+ **Process rescue-service incidents** (admin checkbox, **on** by
232
+ default): incidents whose `einsatzart` identifies them as a
233
+ rescue-service call (contains "Rettung" or "Krankentransport",
234
+ case-insensitive - see the `einsatzart` examples in
235
+ [einsatz](#einsatz)) are processed normally by default, matching every
236
+ prior version of the adapter. Unchecking this box makes the adapter
237
+ **completely ignore** such incidents instead: no `einsatz.*` states are
238
+ updated, no history entry is written, no TTS announcement is triggered
239
+ - as if the incident had never arrived. This exists because
240
+ rescue-service incidents reportedly only get alarmed/signaled via WAIP
241
+ in some regions/dispatch centers at all - where they don't, or aren't
242
+ wanted, this box turns the noise off.
220
243
 
221
244
  `einsatz.stichwort` is passed through unchanged from the server as a
222
245
  bare code (e.g. `B2`, `H:VU mit P`) – WAIP-Web itself doesn't explain
@@ -226,7 +249,7 @@ gap **entirely locally**, no data is sent anywhere. This tab is the
226
249
  first of two sources checked, in order (see
227
250
  [Keyword descriptions](#keyword-descriptions) for the second):
228
251
 
229
- **Rescue-service decoding** (admin checkbox, off by default): if the
252
+ **Rescue-service decoding** (admin checkbox, on by default): if the
230
253
  keyword matches the pattern `R<RTW-count>N<NEF-count>[p][f][-NT]`
231
254
  (e.g. `R1N0` → "Rettungswagen: 1, Notfalleinsatzfahrzeug: 0"), a
232
255
  description is generated automatically. Two spellings of the `p`/`f`/`NT`
@@ -235,9 +258,9 @@ part are recognized: without a space and with a hyphen before `NT`
235
258
  [Leitstelle Lausitz's documented explanation](https://www.leitstelle-lausitz.de/anpassung-der-einsatzstichworte-rettungsdienst/)
236
259
  of it), and with a space and without a hyphen (e.g. `R1N1 p`, `R1N0 nt`,
237
260
  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
261
+ used by several German dispatch centers, not just these two – has no
262
+ effect if your dispatch center doesn't use one of these patterns, since
263
+ the keyword just won't match. The text for each part is itself configurable (5 additional text
241
264
  fields appear once the checkbox is enabled), since the adapter is
242
265
  multi-language and these labels aren't translated automatically:
243
266
 
@@ -251,7 +274,7 @@ multi-language and these labels aren't translated automatically:
251
274
 
252
275
  ### Keyword descriptions
253
276
 
254
- Checked only if the decoder on the [Rescue-service keywords](#rescue-service-keywords)
277
+ Checked only if the decoder on the [Rescue service](#rescue-service)
255
278
  tab didn't match: a list of `{keyword pattern, description, match type}`
256
279
  rows – match type is `starts with` or `contains`, comparison is
257
280
  case-insensitive and treats spaces and hyphens as equivalent (any run
@@ -274,6 +297,53 @@ itself, not something this adapter controls).
274
297
  If neither this table nor the decoder above match, `einsatz.beschreibung`
275
298
  is simply `null` - not an error.
276
299
 
300
+ ### Incident map image
301
+
302
+ **Generate a map image for each incident** (admin checkbox, off by
303
+ default): when enabled and an incident carries valid coordinates, the
304
+ adapter downloads the tiles it needs from the public
305
+ `tile.openstreetmap.org` server, composites them into a single PNG
306
+ centered on the incident's location, and stamps the OpenStreetMap
307
+ attribution (required by its ODbL license) into the bottom-left corner.
308
+ The incident area WAIP-Web sends in the `geometry` field of the event
309
+ (usually a circle-shaped polygon around the location, not just its
310
+ center) is drawn onto the image as an outline in a configurable color
311
+ and thickness - the original shape the server sent, not a marker at
312
+ its centroid. Only if no such polygon
313
+ is available (e.g. the event carries just a point) does the adapter
314
+ fall back to a simple marker dot at the center. The incident area is
315
+ always kept fully visible: if it wouldn't fit into the image at the
316
+ configured zoom level, the adapter automatically zooms out (never in)
317
+ just enough for the whole area to fit, instead of clipping it at the
318
+ edge. The file
319
+ path is written to `einsatz.kartenbildPfad` (see [einsatz](#einsatz)) –
320
+ typical use is attaching that file from a Blockly/JavaScript script,
321
+ e.g. as a Pushover notification attachment. Only the 10 most recently
322
+ generated images are kept on disk; older ones are deleted automatically
323
+ whenever a new one is written. Image generation runs in the background
324
+ and never delays alarm processing – a slow or failing tile download
325
+ just means a missing/delayed image, nothing else is affected.
326
+
327
+ | Field | Description | Default |
328
+ | --- | --- | --- |
329
+ | Image width (px) | Width of the generated PNG | `600` |
330
+ | Image height (px) | Height of the generated PNG | `400` |
331
+ | Zoom level | OpenStreetMap zoom level (1 = whole world, 19 = building level) - a maximum, automatically reduced if needed to keep the incident area fully visible | `16` |
332
+ | Outline color | Color of the incident-area outline (and the fallback marker dot's core) | `#DD2020` |
333
+ | Outline thickness (px) | Line thickness of the outline, in pixels (1-12) | `3` |
334
+
335
+ Images are stored under this adapter instance's own data directory
336
+ (`iobroker-data/<instance>/maps/`), not as ioBroker file objects –
337
+ `einsatz.kartenbildPfad` is therefore a real, absolute filesystem path
338
+ that a script running on the same host can read directly.
339
+
340
+ > **Note:** This uses the official, free `tile.openstreetmap.org`
341
+ > server, which is intended for occasional/low-volume use (see the
342
+ > [OSM Tile Usage Policy](https://operations.osmfoundation.org/policies/tiles/)).
343
+ > One image per incident stays well within that – don't lower the zoom
344
+ > level to cover huge areas or otherwise turn this into bulk tile
345
+ > fetching.
346
+
277
347
  ## States (under `waip-web.0.*`)
278
348
 
279
349
  Feedback and routes are 1:n lists per incident. They are stored as
@@ -334,13 +404,14 @@ The most recently finished incident remains available via
334
404
  | `uuid` | string | Unique incident UUID (also used to associate feedback) |
335
405
  | `einsatzart` | string | e.g. "Brandeinsatz" (fire), "Hilfeleistungseinsatz" (technical assistance), "Rettungseinsatz" (rescue/EMS), "Krankentransport" (patient transport) |
336
406
  | `stichwort` | string | Alarm keyword |
337
- | `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 |
407
+ | `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 |
338
408
  | `ort` | string | Location/town |
339
409
  | `ortsteil` | string | District (if different from `ort`) |
340
410
  | `zeitstempel` | string (date) | Alarm time |
341
411
  | `ablaufzeit` | string (date) | End of the standby display duration, basis for `restzeit` |
342
412
  | `sondersignal` | number | `1` = special signal (lights & siren), otherwise none |
343
413
  | `latitude` / `longitude` | number | Incident location (normalized from wgs84 fields or GeoJSON centroid) |
414
+ | `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 |
344
415
  | `routenGesamt` | number | Number of routes in the current incident |
345
416
  | `rueckmeldungGesamt` | number | Total feedback count for the current incident |
346
417
  | `rueckmeldungAnzahl.ek` | number | Feedback count as team member ("Einsatzkraft") |
@@ -411,6 +482,41 @@ example.
411
482
 
412
483
  ## Changelog
413
484
 
485
+ ### 0.7.29 (2026-08-24)
486
+
487
+ - [Incident map image](#incident-map-image): draws the actual incident
488
+ area WAIP-Web sends in the event's `geometry` field (usually a
489
+ circle-shaped polygon around the location) as an outline, instead of
490
+ just a marker dot at its centroid. Falls back to the dot marker if no
491
+ polygon is available (e.g. only a point). The area always stays
492
+ fully visible: the adapter automatically zooms out (never in) past
493
+ the configured zoom level if needed, instead of clipping the area at
494
+ the image edge. Outline color and thickness (1-12 px) are now
495
+ configurable too (also used for the fallback marker dot's core).
496
+ - **Rescue-service decoding** (on the [Rescue service](#rescue-service)
497
+ tab) now defaults to **on** for new installations, matching **Process
498
+ rescue-service incidents** (already on by default) - previously it
499
+ defaulted to off. Already-configured instances keep their stored
500
+ value, this only affects fresh installs.
501
+ - Trimmed the self-justifying "kept the previous behavior" sentence
502
+ from both checkboxes' admin descriptions and reworded the decoding
503
+ checkbox's description ("has no effect if your dispatch center
504
+ doesn't use one of these patterns" instead of "only enable if...").
505
+
506
+ ### 0.7.28 (2026-08-24)
507
+
508
+ - New: **Process rescue-service incidents** checkbox on the
509
+ [Rescue service](#rescue-service) tab (on by default) - when
510
+ unchecked, incidents identified as rescue-service calls via
511
+ `einsatzart` are ignored completely (no states, no history, no TTS).
512
+ The tab itself was renamed from "Rescue-service keywords" to "Rescue
513
+ service", with the new checkbox placed first.
514
+ - New: [Incident map image](#incident-map-image) tab - optionally
515
+ generates a PNG map (OpenStreetMap tiles, marked with a dot) centered
516
+ on each incident's coordinates, exposed via the new
517
+ `einsatz.kartenbildPfad` state. Configurable image size and zoom
518
+ level; only the 10 most recent images are kept.
519
+
414
520
  ### 0.7.27 (2026-08-23)
415
521
 
416
522
  - [Keyword table](#keyword-descriptions) matching now treats spaces
@@ -432,7 +538,7 @@ example.
432
538
 
433
539
  ### 0.7.25 (2026-08-23)
434
540
 
435
- - Updated the admin UI text for the [rescue-service decoder](#rescue-service-keywords)
541
+ - Updated the admin UI text for the [rescue-service decoder](#rescue-service)
436
542
  to reflect the two supported keyword spellings added in 0.7.23
437
543
  (Leitstelle Lausitz `R1N1p`/`R1N0-NT` and IRLS Brandenburg `R1N1 p`/
438
544
  `R1N0 nt`) - the checkbox label/help and the NT suffix label/help
@@ -455,7 +561,7 @@ example.
455
561
  (v2.7) - previously only the `R<ambulance>N<physician-vehicle>`
456
562
  scheme and the Brand/THL (`B:`/`H:`) table were covered, so
457
563
  `einsatz.beschreibung` stayed `null` for these.
458
- - Fixed the [rescue-service keyword](#rescue-service-keywords) decoder
564
+ - Fixed the [rescue-service keyword](#rescue-service) decoder
459
565
  (`decodeRettungsdienstStichwort`): it only accepted the Leitstelle
460
566
  Lausitz spelling without a space (`R1N1p`, `R1N0-NT`) and silently
461
567
  returned `null` for the IRLS Brandenburg spelling with a space
@@ -485,7 +591,7 @@ example.
485
591
  after using it.
486
592
  - Split the admin configuration UI into 3 tabs -
487
593
  [Connection](#connection), [Rescue-service
488
- keywords](#rescue-service-keywords),
594
+ keywords](#rescue-service),
489
595
  [Keyword descriptions](#keyword-descriptions) - each with a
490
596
  matching icon, replacing the single combined settings page.
491
597
  - Documentation: restructured the configuration section of the
@@ -2,9 +2,17 @@
2
2
  "Alarm keyword descriptions": "Stichwort-Stammdaten",
3
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
+ "Color of the incident-area outline (and of the fallback marker dot's core, used when no area polygon is available).": "Farbe des Einsatzgebiet-Umrisses (und des Kerns der Fallback-Punkt-Markierung, wenn kein Gebiets-Polygon vorliegt).",
5
6
  "Connection": "Verbindung",
7
+ "contains": "enthält",
6
8
  "Description": "Beschreibung",
9
+ "For every incident with valid coordinates, downloads OpenStreetMap tiles and composes a PNG centered on the incident's location, with the incident area WAIP-Web sends drawn as an outline (falls back to a marker dot if no area polygon is available). 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, mit dem von WAIP-Web gesendeten Einsatzgebiet als Umriss eingezeichnet (fällt auf einen Punkt-Marker zurück, falls kein Gebiets-Polygon vorliegt). 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.",
10
+ "Generate a map image for each incident": "Kartenbild für jeden Einsatz erzeugen",
11
+ "Height of the generated map image in pixels.": "Höhe des erzeugten Kartenbilds in Pixeln.",
7
12
  "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.",
13
+ "Image height (px)": "Bildhöhe (px)",
14
+ "Image width (px)": "Bildbreite (px)",
15
+ "Incident map image": "Einsatzkarte",
8
16
  "Keyword / pattern": "Stichwort / Muster",
9
17
  "Keyword descriptions": "Stichwort-Stammdaten",
10
18
  "Label for N (emergency vehicle count)": "Bezeichnung für N (Anzahl Notfalleinsatzfahrzeuge)",
@@ -12,14 +20,20 @@
12
20
  "Label for suffix -NT / nt (special ambulance transport)": "Bezeichnung für Suffix -NT / nt (Notfalltransport mit Notfallkrankenwagen)",
13
21
  "Label for suffix f (first responder)": "Bezeichnung für Suffix f (First Responder)",
14
22
  "Label for suffix p (polytrauma)": "Bezeichnung für Suffix p (Polytrauma)",
23
+ "Line thickness of the incident-area outline, in pixels.": "Linienstärke des Einsatzgebiet-Umrisses in Pixeln.",
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.": "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
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).": "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
26
  "Match": "Abgleich",
18
27
  "Monitor ID": "Monitor-ID",
28
+ "OpenStreetMap zoom level (1 = whole world, 19 = building level). Higher values show a smaller area in more detail. This is a maximum, not a fixed value: if the incident area sent by the server wouldn't fully fit in the image at this zoom, the adapter automatically zooms out (never in) just enough to keep the whole area visible.": "OpenStreetMap-Zoomstufe (1 = ganze Welt, 19 = Gebäudeebene). Höhere Werte zeigen einen kleineren Ausschnitt in mehr Detail. Das ist ein Maximalwert, kein fester Wert: Passt das vom Server gesendete Einsatzgebiet bei dieser Zoomstufe nicht vollständig ins Bild, zoomt der Adapter automatisch so weit heraus (nie hinein), wie nötig, um das gesamte Gebiet sichtbar zu halten.",
29
+ "Outline color": "Umrissfarbe",
30
+ "Outline thickness (px)": "Umriss-Strichstärke (px)",
31
+ "Process rescue-service incidents": "Rettungsdienst-Einsätze verarbeiten",
19
32
  "Reconnect delay (s)": "Wiederverbindungs-Verzögerung (s)",
20
33
  "Registration timeout (s)": "Registrierungs-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.": "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",
34
+ "Rescue service": "Rettungsdienst",
35
+ "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\") - has no effect if your dispatch center doesn't use one of these patterns, since the keyword just won't match. 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\") - hat keine Auswirkung, falls eure Leitstelle keines dieser Muster verwendet, da das Stichwort dann einfach nicht passt. Hat Vorrang vor der Tabelle im Tab Stichwort-Stammdaten, wenn ein Stichwort passt.",
36
+ "starts with": "beginnt mit",
23
37
  "Text appended when the keyword ends in \"-NT\" or \" nt\".": "Text, der angehängt wird, wenn das Stichwort auf \"-NT\" oder \" nt\" endet.",
24
38
  "Text appended when the keyword ends in \"f\".": "Text, der angehängt wird, wenn das Stichwort auf \"f\" endet.",
25
39
  "Text appended when the keyword ends in \"p\".": "Text, der angehängt wird, wenn das Stichwort auf \"p\" endet.",
@@ -27,6 +41,7 @@
27
41
  "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
42
  "WAIP server URL": "WAIP-Server-URL",
29
43
  "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.",
30
- "contains": "enthält",
31
- "starts with": "beginnt mit"
44
+ "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.": "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.",
45
+ "Width of the generated map image in pixels.": "Breite des erzeugten Kartenbilds in Pixeln.",
46
+ "Zoom level": "Zoomstufe"
32
47
  }
@@ -2,9 +2,17 @@
2
2
  "Alarm keyword descriptions": "Alarm keyword descriptions",
3
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)",
4
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)",
5
+ "Color of the incident-area outline (and of the fallback marker dot's core, used when no area polygon is available).": "Color of the incident-area outline (and of the fallback marker dot's core, used when no area polygon is available).",
5
6
  "Connection": "Connection",
7
+ "contains": "contains",
6
8
  "Description": "Description",
9
+ "For every incident with valid coordinates, downloads OpenStreetMap tiles and composes a PNG centered on the incident's location, with the incident area WAIP-Web sends drawn as an outline (falls back to a marker dot if no area polygon is available). 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, with the incident area WAIP-Web sends drawn as an outline (falls back to a marker dot if no area polygon is available). 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.",
10
+ "Generate a map image for each incident": "Generate a map image for each incident",
11
+ "Height of the generated map image in pixels.": "Height of the generated map image in pixels.",
7
12
  "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.",
13
+ "Image height (px)": "Image height (px)",
14
+ "Image width (px)": "Image width (px)",
15
+ "Incident map image": "Incident map image",
8
16
  "Keyword / pattern": "Keyword / pattern",
9
17
  "Keyword descriptions": "Keyword descriptions",
10
18
  "Label for N (emergency vehicle count)": "Label for N (emergency vehicle count)",
@@ -12,14 +20,20 @@
12
20
  "Label for suffix -NT / nt (special ambulance transport)": "Label for suffix -NT / nt (special ambulance transport)",
13
21
  "Label for suffix f (first responder)": "Label for suffix f (first responder)",
14
22
  "Label for suffix p (polytrauma)": "Label for suffix p (polytrauma)",
23
+ "Line thickness of the incident-area outline, in pixels.": "Line thickness of the incident-area outline, in pixels.",
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
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
+ "OpenStreetMap zoom level (1 = whole world, 19 = building level). Higher values show a smaller area in more detail. This is a maximum, not a fixed value: if the incident area sent by the server wouldn't fully fit in the image at this zoom, the adapter automatically zooms out (never in) just enough to keep the whole area visible.": "OpenStreetMap zoom level (1 = whole world, 19 = building level). Higher values show a smaller area in more detail. This is a maximum, not a fixed value: if the incident area sent by the server wouldn't fully fit in the image at this zoom, the adapter automatically zooms out (never in) just enough to keep the whole area visible.",
29
+ "Outline color": "Outline color",
30
+ "Outline thickness (px)": "Outline thickness (px)",
31
+ "Process rescue-service incidents": "Process rescue-service incidents",
19
32
  "Reconnect delay (s)": "Reconnect delay (s)",
20
33
  "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",
34
+ "Rescue service": "Rescue service",
35
+ "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\") - has no effect if your dispatch center doesn't use one of these patterns, since the keyword just won't match. 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\") - has no effect if your dispatch center doesn't use one of these patterns, since the keyword just won't match. Takes priority over the table on the Keyword descriptions tab when a keyword matches.",
36
+ "starts with": "starts with",
23
37
  "Text appended when the keyword ends in \"-NT\" or \" nt\".": "Text appended when the keyword ends in \"-NT\" or \" nt\".",
24
38
  "Text appended when the keyword ends in \"f\".": "Text appended when the keyword ends in \"f\".",
25
39
  "Text appended when the keyword ends in \"p\".": "Text appended when the keyword ends in \"p\".",
@@ -27,6 +41,7 @@
27
41
  "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
42
  "WAIP server URL": "WAIP server URL",
29
43
  "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"
44
+ "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.": "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.",
45
+ "Width of the generated map image in pixels.": "Width of the generated map image in pixels.",
46
+ "Zoom level": "Zoom level"
32
47
  }
@@ -2,9 +2,17 @@
2
2
  "Alarm keyword descriptions": "Descripciones de palabras clave de alarma",
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
+ "Color of the incident-area outline (and of the fallback marker dot's core, used when no area polygon is available).": "Color del contorno del área del incidente (y del núcleo del punto marcador de reserva, usado cuando no hay ningún polígono de área disponible).",
5
6
  "Connection": "Conexión",
7
+ "contains": "contiene",
6
8
  "Description": "Descripción",
9
+ "For every incident with valid coordinates, downloads OpenStreetMap tiles and composes a PNG centered on the incident's location, with the incident area WAIP-Web sends drawn as an outline (falls back to a marker dot if no area polygon is available). 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, con el área del incidente enviada por WAIP-Web dibujada como contorno (recurre a un punto marcador si no hay un polígono de área disponible). 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.",
10
+ "Generate a map image for each incident": "Generar una imagen de mapa para cada incidente",
11
+ "Height of the generated map image in pixels.": "Alto de la imagen de mapa generada en píxeles.",
7
12
  "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.",
13
+ "Image height (px)": "Alto de la imagen (px)",
14
+ "Image width (px)": "Ancho de la imagen (px)",
15
+ "Incident map image": "Imagen de mapa del incidente",
8
16
  "Keyword / pattern": "Palabra clave/patrón",
9
17
  "Keyword descriptions": "Descripciones de palabras clave",
10
18
  "Label for N (emergency vehicle count)": "Etiqueta para N (recuento de vehículos de emergencia)",
@@ -12,14 +20,20 @@
12
20
  "Label for suffix -NT / nt (special ambulance transport)": "Etiqueta para el sufijo -NT / nt (transporte especial en ambulancia)",
13
21
  "Label for suffix f (first responder)": "Etiqueta para el sufijo f (primer interviniente)",
14
22
  "Label for suffix p (polytrauma)": "Etiqueta para el sufijo p (politraumatismo)",
23
+ "Line thickness of the incident-area outline, in pixels.": "Grosor de línea del contorno del área del incidente, en píxeles.",
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.": "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
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).": "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
26
  "Match": "Fósforo",
18
27
  "Monitor ID": "Identificador del monitor",
28
+ "OpenStreetMap zoom level (1 = whole world, 19 = building level). Higher values show a smaller area in more detail. This is a maximum, not a fixed value: if the incident area sent by the server wouldn't fully fit in the image at this zoom, the adapter automatically zooms out (never in) just enough to keep the whole area visible.": "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. Este es un valor máximo, no fijo: si el área del incidente enviada por el servidor no cupiera por completo en la imagen con este zoom, el adaptador aleja automáticamente el zoom (nunca lo acerca) lo justo para mantener toda el área visible.",
29
+ "Outline color": "Color del contorno",
30
+ "Outline thickness (px)": "Grosor del contorno (px)",
31
+ "Process rescue-service incidents": "Procesar incidentes del servicio de rescate",
19
32
  "Reconnect delay (s)": "Retardo(s) de reconexión",
20
33
  "Registration timeout (s)": "Tiempos de espera de registro",
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.": "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",
34
+ "Rescue service": "Servicio de rescate",
35
+ "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\") - has no effect if your dispatch center doesn't use one of these patterns, since the keyword just won't match. 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\") - no tiene efecto si su central de despacho no utiliza ninguno de estos patrones, ya que la palabra clave simplemente no coincidirá. Tiene prioridad sobre la tabla de la pestaña Descripciones de palabras clave cuando una palabra clave coincide.",
36
+ "starts with": "comienza con",
23
37
  "Text appended when the keyword ends in \"-NT\" or \" nt\".": "Texto añadido cuando la palabra clave termina en \"-NT\" o \" nt\".",
24
38
  "Text appended when the keyword ends in \"f\".": "Texto añadido cuando la palabra clave termina en \"f\".",
25
39
  "Text appended when the keyword ends in \"p\".": "Texto añadido cuando la palabra clave termina en \"p\".",
@@ -27,6 +41,7 @@
27
41
  "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
42
  "WAIP server URL": "URL del servidor WAIP",
29
43
  "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"
44
+ "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.": "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.",
45
+ "Width of the generated map image in pixels.": "Ancho de la imagen de mapa generada en píxeles.",
46
+ "Zoom level": "Nivel de zoom"
32
47
  }