iobroker.waip-web 0.7.34 → 0.7.35

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
@@ -105,9 +105,10 @@ Rettungsdienst-Wache:
105
105
  Gebäudelautsprecher anzusagen, sobald `io.playtts` feuert – hilfreich,
106
106
  wenn nicht alle Mitglieder gerade auf einen Bildschirm schauen.
107
107
  - **Live-Übersicht der Rückmeldungen.** Die `einsatz.rueckmeldungAnzahl.*`
108
- Zähler (pro Rolle: EK/GF/ZF/VF, pro Zusatzfunktion: AGT/FZF/MA/MED)
109
- aktualisieren sich in Echtzeit, sobald Einsatzkräfte per App
110
- zurückmelden – als Gauge- oder Zahlen-Widget gebunden ergibt das eine
108
+ Zähler (`rollen.ek`/`.gf`/`.zf`/`.vf` pro Rolle, `funktionen.agt`/`.fzf`/
109
+ `.ma`/`.med` pro Zusatzfunktion) aktualisieren sich in Echtzeit, sobald
110
+ Einsatzkräfte per App zurückmelden – als Gauge- oder Zahlen-Widget
111
+ gebunden ergibt das eine
111
112
  Übersicht auf einen Blick, wer bereits kommt.
112
113
  - **Nachbereitung/Statistik.** `einsatz.json.history10` hält die letzten
113
114
  10 abgeschlossenen Einsätze als flache Tabelle vor – an eine zweite
@@ -460,14 +461,14 @@ stehen. Der zuletzt abgeschlossene Einsatz bleibt trotzdem über
460
461
  | `kartenbildPfad` | string | Pfad zum zuletzt erzeugten Einsatzkarten-Bild (PNG) - siehe [Einsatzkarte](#einsatzkarte). Leer bis das Bild für den aktuellen Einsatz fertig ist; wird außerdem zu Beginn eines neuen Einsatzes, bei einem Fehlschlag der Erzeugung oder falls das OSM-Timeout überschritten wird geleert (bzw. bleibt leer), sowie - wie die übrigen Felder oben - bei `io.standby`. Die zugrundeliegende Bild-Datei selbst wird beim Leeren des States nicht gelöscht (nur das 10er-Rotationslimit entfernt Dateien, siehe [Einsatzkarte](#einsatzkarte)) |
461
462
  | `routenGesamt` | number | Anzahl Routen im aktuellen Einsatz |
462
463
  | `rueckmeldungGesamt` | number | Rückmeldungen gesamt im aktuellen Einsatz |
463
- | `rueckmeldungAnzahl.ek` | number | Anzahl Rückmeldungen als Einsatzkraft |
464
- | `rueckmeldungAnzahl.gf` | number | Anzahl Rückmeldungen als Gruppenführer |
465
- | `rueckmeldungAnzahl.zf` | number | Anzahl Rückmeldungen als Zugführer |
466
- | `rueckmeldungAnzahl.vf` | number | Anzahl Rückmeldungen als Verbandsführer |
467
- | `rueckmeldungAnzahl.agt` | number | Anzahl Rückmeldungen mit Atemschutz-Befähigung |
468
- | `rueckmeldungAnzahl.fzf` | number | Anzahl Rückmeldungen als Fahrzeugführer |
469
- | `rueckmeldungAnzahl.ma` | number | Anzahl Rückmeldungen als Maschinist |
470
- | `rueckmeldungAnzahl.med` | number | Anzahl Rückmeldungen mit medizinischer Befähigung |
464
+ | `rueckmeldungAnzahl.rollen.ek` | number | Anzahl Rückmeldungen als Einsatzkraft |
465
+ | `rueckmeldungAnzahl.rollen.gf` | number | Anzahl Rückmeldungen als Gruppenführer |
466
+ | `rueckmeldungAnzahl.rollen.zf` | number | Anzahl Rückmeldungen als Zugführer |
467
+ | `rueckmeldungAnzahl.rollen.vf` | number | Anzahl Rückmeldungen als Verbandsführer |
468
+ | `rueckmeldungAnzahl.funktionen.agt` | number | Anzahl Rückmeldungen mit Atemschutz-Befähigung |
469
+ | `rueckmeldungAnzahl.funktionen.fzf` | number | Anzahl Rückmeldungen als Fahrzeugführer |
470
+ | `rueckmeldungAnzahl.funktionen.ma` | number | Anzahl Rückmeldungen als Maschinist |
471
+ | `rueckmeldungAnzahl.funktionen.med` | number | Anzahl Rückmeldungen mit medizinischer Befähigung |
471
472
 
472
473
  ### einsatz.json
473
474
 
package/README.md CHANGED
@@ -112,9 +112,10 @@ adapter provides – typical use in a fire station/EMS environment:
112
112
  announced over building speakers the moment `io.playtts` fires –
113
113
  useful where members aren't all looking at a screen.
114
114
  - **Live headcount / feedback board.** The `einsatz.rueckmeldungAnzahl.*`
115
- counters (per role: EK/GF/ZF/VF, per qualification: AGT/FZF/MA/MED)
116
- update in real time as responders confirm via the app – bind them to
117
- gauge or number widgets for an at-a-glance "who's coming" overview
115
+ counters (`rollen.ek`/`.gf`/`.zf`/`.vf` per role, `funktionen.agt`/`.fzf`/
116
+ `.ma`/`.med` per qualification) update in real time as responders
117
+ confirm via the app – bind them to gauge or number widgets for an
118
+ at-a-glance "who's coming" overview
118
119
  during the response.
119
120
  - **Post-incident review / statistics.** `einsatz.json.history10` keeps
120
121
  the last 10 completed incidents as a flat table – bind it to a second
@@ -445,14 +446,14 @@ The most recently finished incident remains available via
445
446
  | `kartenbildPfad` | string | Path to the most recently generated incident map image (PNG) - see [Incident map image](#incident-map-image). Empty until the first image for the current incident is ready; also cleared (stays empty) at the start of a new incident, if generation fails, or if it doesn't finish within the OSM timeout, and - like the other fields above - on `io.standby`. The underlying image file itself is not deleted when the state is cleared (only the 10-image retention limit removes files, see [Incident map image](#incident-map-image)) |
446
447
  | `routenGesamt` | number | Number of routes in the current incident |
447
448
  | `rueckmeldungGesamt` | number | Total feedback count for the current incident |
448
- | `rueckmeldungAnzahl.ek` | number | Feedback count as team member ("Einsatzkraft") |
449
- | `rueckmeldungAnzahl.gf` | number | Feedback count as crew leader ("Gruppenführer") |
450
- | `rueckmeldungAnzahl.zf` | number | Feedback count as division chief ("Zugführer") |
451
- | `rueckmeldungAnzahl.vf` | number | Feedback count as group commander ("Verbandsführer") |
452
- | `rueckmeldungAnzahl.agt` | number | Feedback count with breathing-apparatus qualification ("Atemschutzgeräteträger") |
453
- | `rueckmeldungAnzahl.fzf` | number | Feedback count as vehicle commander ("Fahrzeugführer") |
454
- | `rueckmeldungAnzahl.ma` | number | Feedback count as driver/operator ("Maschinist") |
455
- | `rueckmeldungAnzahl.med` | number | Feedback count with a medical qualification |
449
+ | `rueckmeldungAnzahl.rollen.ek` | number | Feedback count as team member ("Einsatzkraft") |
450
+ | `rueckmeldungAnzahl.rollen.gf` | number | Feedback count as crew leader ("Gruppenführer") |
451
+ | `rueckmeldungAnzahl.rollen.zf` | number | Feedback count as division chief ("Zugführer") |
452
+ | `rueckmeldungAnzahl.rollen.vf` | number | Feedback count as group commander ("Verbandsführer") |
453
+ | `rueckmeldungAnzahl.funktionen.agt` | number | Feedback count with breathing-apparatus qualification ("Atemschutzgeräteträger") |
454
+ | `rueckmeldungAnzahl.funktionen.fzf` | number | Feedback count as vehicle commander ("Fahrzeugführer") |
455
+ | `rueckmeldungAnzahl.funktionen.ma` | number | Feedback count as driver/operator ("Maschinist") |
456
+ | `rueckmeldungAnzahl.funktionen.med` | number | Feedback count with a medical qualification |
456
457
 
457
458
  ### einsatz.json
458
459
 
@@ -513,6 +514,17 @@ example.
513
514
 
514
515
  ## Changelog
515
516
 
517
+ ### 0.7.35 (2026-08-24)
518
+
519
+ - Object structure change: the eight feedback counters under
520
+ `einsatz.rueckmeldungAnzahl` are now grouped into two sub-channels -
521
+ **rollen** (`ek`/`gf`/`zf`/`vf`, by role) and **funktionen**
522
+ (`agt`/`fzf`/`ma`/`med`, by qualification) - instead of sitting flat
523
+ next to each other. The old flat states are removed automatically on
524
+ upgrade; scripts/VIS bindings referencing the old paths need to be
525
+ updated to the new `einsatz.rueckmeldungAnzahl.rollen.*`/
526
+ `.funktionen.*` paths - see [einsatz](#einsatz).
527
+
516
528
  ### 0.7.34 (2026-08-24)
517
529
 
518
530
  - [Incident map image](#incident-map-image): fixed the help texts for
@@ -562,31 +574,6 @@ example.
562
574
  incident's stale image path (e.g. when the new incident has no
563
575
  coordinates, or the map image feature just got disabled).
564
576
 
565
- ### 0.7.30 (2026-08-24)
566
-
567
- - [Incident map image](#incident-map-image): new **Show incident-area
568
- polygon** checkbox (on by default) - uncheck it to always show the
569
- centered marker dot instead, even when the server sends a polygon.
570
- The margin kept around the polygon when auto-zooming to fit it was
571
- also reduced by 30%, so the area fills more of the image. Default
572
- zoom level raised from 16 to 19, default outline thickness from 3 to
573
- 4 px.
574
- - `einsatz.kartenbildPfad` is now cleared on `io.standby` like the
575
- other `einsatz.*` fields (previously kept, matching
576
- `einsatz.tts.last`'s pattern) - the image file itself is unaffected,
577
- only the 10-image retention limit ever deletes files.
578
- - Documented that this adapter's own data directory (generated map
579
- images) is only removed on instance/adapter deletion if "Also
580
- delete instance data" is checked in Admin's deletion dialog - a
581
- native js-controller/Admin feature (unchecked by default), not
582
- something this adapter's code controls.
583
- - Removed "Unofficial"/"Inoffiziell" from both READMEs' wording; the
584
- disclaimer about having no connection to the WAIP-Web project/
585
- Robert-112 itself is unchanged, just reworded without that word.
586
- - This Changelog section now shows only the 5 most recent versions -
587
- older entries move to [CHANGELOG_OLD.md](CHANGELOG_OLD.md) on every
588
- release.
589
-
590
577
  Older entries have moved to [CHANGELOG_OLD.md](CHANGELOG_OLD.md) - this
591
578
  section shows only the 5 most recent versions.
592
579
 
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "waip-web",
4
- "version": "0.7.34",
4
+ "version": "0.7.35",
5
5
  "news": {
6
+ "0.7.35": {
7
+ "en": "Object structure change: the eight feedback counters under einsatz.rueckmeldungAnzahl are now grouped into two sub-channels - rollen (ek/gf/zf/vf, by role) and funktionen (agt/fzf/ma/med, by qualification) - instead of sitting flat next to each other. The old flat states are automatically removed on upgrade; scripts/VIS bindings referencing the old paths need to be updated to the new einsatz.rueckmeldungAnzahl.rollen.*/funktionen.* paths.",
8
+ "de": "Objektstruktur geändert: Die acht Rückmeldungs-Zähler unter einsatz.rueckmeldungAnzahl sind jetzt in zwei Unter-Kanälen gruppiert - rollen (ek/gf/zf/vf, nach Rolle) und funktionen (agt/fzf/ma/med, nach Zusatzfunktion) - statt flach nebeneinander zu liegen. Die alten flachen States werden beim Update automatisch entfernt; Skripte/VIS-Bindings, die die alten Pfade nutzen, müssen auf die neuen Pfade einsatz.rueckmeldungAnzahl.rollen.*/funktionen.* angepasst werden.",
9
+ "es": "Cambio en la estructura de objetos: los ocho contadores de confirmaciones bajo einsatz.rueckmeldungAnzahl ahora están agrupados en dos subcanales - rollen (ek/gf/zf/vf, por rol) y funktionen (agt/fzf/ma/med, por cualificación) - en lugar de estar planos uno junto al otro. Los antiguos estados planos se eliminan automáticamente al actualizar; los scripts/vinculaciones de VIS que hagan referencia a las rutas antiguas deben actualizarse a las nuevas rutas einsatz.rueckmeldungAnzahl.rollen.*/funktionen.*.",
10
+ "fr": "Changement de la structure des objets : les huit compteurs de confirmations sous einsatz.rueckmeldungAnzahl sont désormais regroupés en deux sous-canaux - rollen (ek/gf/zf/vf, par rôle) et funktionen (agt/fzf/ma/med, par qualification) - au lieu d'être placés à plat les uns à côté des autres. Les anciens états à plat sont automatiquement supprimés lors de la mise à jour ; les scripts/liaisons VIS référençant les anciens chemins doivent être mis à jour vers les nouveaux chemins einsatz.rueckmeldungAnzahl.rollen.*/funktionen.*.",
11
+ "it": "Modifica della struttura degli oggetti: gli otto contatori di conferme sotto einsatz.rueckmeldungAnzahl sono ora raggruppati in due sottocanali - rollen (ek/gf/zf/vf, per ruolo) e funktionen (agt/fzf/ma/med, per qualifica) - invece di trovarsi allo stesso livello uno accanto all'altro. I vecchi stati piatti vengono rimossi automaticamente durante l'aggiornamento; script/binding VIS che fanno riferimento ai vecchi percorsi devono essere aggiornati ai nuovi percorsi einsatz.rueckmeldungAnzahl.rollen.*/funktionen.*.",
12
+ "nl": "Wijziging in de objectstructuur: de acht terugmeldingstellers onder einsatz.rueckmeldungAnzahl zijn nu gegroepeerd in twee subkanalen - rollen (ek/gf/zf/vf, per rol) en funktionen (agt/fzf/ma/med, per kwalificatie) - in plaats van plat naast elkaar te staan. De oude platte states worden bij een update automatisch verwijderd; scripts/VIS-bindingen die naar de oude paden verwijzen, moeten worden aangepast naar de nieuwe paden einsatz.rueckmeldungAnzahl.rollen.*/funktionen.*.",
13
+ "pl": "Zmiana struktury obiektów: osiem liczników potwierdzeń pod einsatz.rueckmeldungAnzahl jest teraz zgrupowanych w dwóch podkanałach - rollen (ek/gf/zf/vf, według roli) i funktionen (agt/fzf/ma/med, według kwalifikacji) - zamiast leżeć płasko obok siebie. Stare płaskie stany są automatycznie usuwane podczas aktualizacji; skrypty/powiązania VIS odwołujące się do starych ścieżek należy zaktualizować do nowych ścieżek einsatz.rueckmeldungAnzahl.rollen.*/funktionen.*.",
14
+ "pt": "Alteração na estrutura de objetos: os oito contadores de confirmações em einsatz.rueckmeldungAnzahl agora estão agrupados em dois subcanais - rollen (ek/gf/zf/vf, por função) e funktionen (agt/fzf/ma/med, por qualificação) - em vez de estarem lado a lado de forma plana. Os estados antigos planos são removidos automaticamente na atualização; scripts/vinculações do VIS que referenciam os caminhos antigos devem ser atualizados para os novos caminhos einsatz.rueckmeldungAnzahl.rollen.*/funktionen.*.",
15
+ "ru": "Изменение структуры объектов: восемь счётчиков подтверждений в einsatz.rueckmeldungAnzahl теперь сгруппированы в два подканала - rollen (ek/gf/zf/vf, по роли) и funktionen (agt/fzf/ma/med, по квалификации) - вместо того чтобы находиться плоско рядом друг с другом. Старые плоские состояния автоматически удаляются при обновлении; скрипты/привязки VIS, ссылающиеся на старые пути, необходимо обновить на новые пути einsatz.rueckmeldungAnzahl.rollen.*/funktionen.*.",
16
+ "uk": "Зміна структури об'єктів: вісім лічильників підтверджень у einsatz.rueckmeldungAnzahl тепер згруповано у два підканали - rollen (ek/gf/zf/vf, за роллю) і funktionen (agt/fzf/ma/med, за кваліфікацією) - замість того, щоб лежати пласко поруч одне з одним. Старі пласкі стани автоматично видаляються під час оновлення; скрипти/прив'язки VIS, що посилаються на старі шляхи, потрібно оновити на нові шляхи einsatz.rueckmeldungAnzahl.rollen.*/funktionen.*.",
17
+ "zh-cn": "对象结构变更:einsatz.rueckmeldungAnzahl 下的八个反馈计数器现已分组到两个子通道 - rollen(按角色分类:ek/gf/zf/vf)和 funktionen(按资质分类:agt/fzf/ma/med)- 而不再是平铺排列。旧的扁平状态会在更新时自动移除;引用旧路径的脚本/VIS 绑定需要更新为新路径 einsatz.rueckmeldungAnzahl.rollen.*/funktionen.*。"
18
+ },
6
19
  "0.7.34": {
7
20
  "en": "Incident map image tab: fixed help texts for Zoom level, Marker & outline color, Image width/height that referenced \"both display modes below\" and no longer made sense after the previous release moved those fields above the display-mode checkbox; the Zoom level text was also considerably shortened.",
8
21
  "de": "Reiter Einsatzkarte: Hilfetexte für Zoomstufe, Marker- & Umrissfarbe sowie Bildbreite/-höhe korrigiert, die sich auf \"beide Darstellungsarten unten\" bezogen und seit der Feldumsortierung im letzten Release keinen Sinn mehr ergaben; der Zoomstufe-Text wurde zudem deutlich gekürzt.",
@@ -80,19 +93,6 @@
80
93
  "ru": "Изображение карты вызова теперь отображает реальную зону вызова, отправленную WAIP-Web (обычно круговой полигон), а не просто точку-маркер в её центре - при отсутствии полигона используется точка. Декодирование ключевых слов скорой помощи теперь по умолчанию включено для новых установок (ранее было выключено), как и флажок обработки скорой помощи. Из описаний обоих флажков удалено избыточное поясняющее предложение. Зона вызова теперь также всегда остаётся полностью видимой - адаптер при необходимости автоматически уменьшает масштаб за пределы настроенного уровня, вместо того чтобы обрезать её по краю изображения. Цвет и толщина контура теперь также настраиваются.",
81
94
  "uk": "Зображення карти виклику тепер відображає реальну зону виклику, надіслану WAIP-Web (зазвичай круговий полігон), а не лише точку-маркер у її центрі - за відсутності полігона використовується точка. Декодування ключових слів швидкої допомоги тепер типово увімкнено для нових інсталяцій (раніше було вимкнено), як і прапорець обробки швидкої допомоги. З описів обох прапорців видалено зайве пояснювальне речення. Зона виклику тепер також завжди залишається повністю видимою - адаптер за потреби автоматично зменшує масштаб за межі налаштованого рівня, замість того щоб обрізати її по краю зображення. Колір і товщина контуру тепер також налаштовуються.",
82
95
  "zh-cn": "事件地图图像现在会绘制 WAIP-Web 发送的实际事件区域(通常是圆形多边形),而不仅仅是在其中心显示一个圆点标记——如果没有可用的多边形,则回退为圆点。急救服务关键字解码现在默认对新安装启用(之前默认关闭),与急救服务处理复选框保持一致。已从两个复选框的说明中删除了多余的说明句。 现在事件区域也始终保持完全可见——如有必要,适配器会自动缩小超出配置的缩放级别,而不是在图像边缘裁剪该区域。 轮廓的颜色和粗细现在也可配置。"
83
- },
84
- "0.7.28": {
85
- "en": "New: \"Process rescue-service incidents\" checkbox (on by default) on the renamed \"Rescue service\" tab - when unchecked, incidents identified as rescue-service calls via einsatzart are ignored completely (no states, no history, no TTS). New \"Incident map image\" tab: optionally generates an OpenStreetMap PNG marked with a dot, centered on each incident's coordinates, exposed via the new einsatz.kartenbildPfad state (configurable size/zoom, only the 10 most recent images kept).",
86
- "de": "Neu: Checkbox \"Rettungsdienst-Einsätze verarbeiten\" (standardmäßig an) auf dem umbenannten Tab \"Rettungsdienst\" - deaktiviert werden über einsatzart als Rettungsdienst erkannte Einsätze komplett ignoriert (keine States, keine History, kein TTS). Neuer Tab \"Einsatzkarte\": erzeugt optional ein mit einem Punkt markiertes OpenStreetMap-PNG, zentriert auf die Einsatz-Koordinaten, über den neuen State einsatz.kartenbildPfad bereitgestellt (Größe/Zoom konfigurierbar, nur die letzten 10 Bilder werden aufgehoben).",
87
- "ru": "Новое: флажок \"Обрабатывать вызовы скорой помощи\" (по умолчанию включён) на переименованной вкладке \"Скорая помощь\" - если снят, вызовы, определённые как вызовы скорой помощи через einsatzart, полностью игнорируются (без состояний, без истории, без TTS). Новая вкладка \"Изображение карты вызова\": по желанию создаёт отмеченное точкой PNG-изображение OpenStreetMap, центрированное на координатах каждого вызова, доступное через новое состояние einsatz.kartenbildPfad (настраиваемый размер/масштаб, хранятся только 10 последних изображений).",
88
- "pt": "Novidade: caixa de seleção \"Processar ocorrências do serviço de resgate\" (ativada por padrão) na aba renomeada \"Serviço de resgate\" - se desmarcada, as ocorrências identificadas como chamados do serviço de resgate via einsatzart são completamente ignoradas (sem estados, sem histórico, sem TTS). Nova aba \"Imagem de mapa da ocorrência\": gera opcionalmente um PNG do OpenStreetMap marcado com um ponto, centrado nas coordenadas de cada ocorrência, exposto através do novo estado einsatz.kartenbildPfad (tamanho/zoom configuráveis, apenas as 10 imagens mais recentes são mantidas).",
89
- "nl": "Nieuw: selectievakje \"Reddingsdienst-incidenten verwerken\" (standaard ingeschakeld) op het hernoemde tabblad \"Reddingsdienst\" - indien uitgeschakeld, worden via einsatzart als reddingsdienstmelding herkende incidenten volledig genegeerd (geen states, geen geschiedenis, geen TTS). Nieuw tabblad \"Incidentkaartafbeelding\": genereert optioneel een met een stip gemarkeerde OpenStreetMap-PNG, gecentreerd op de coördinaten van elk incident, beschikbaar via de nieuwe state einsatz.kartenbildPfad (grootte/zoom instelbaar, alleen de 10 meest recente afbeeldingen worden bewaard).",
90
- "fr": "Nouveau : case à cocher \"Traiter les incidents du service de secours\" (activée par défaut) sur l'onglet renommé \"Service de secours\" - si désactivée, les incidents identifiés comme des appels du service de secours via einsatzart sont complètement ignorés (aucun état, aucun historique, aucun TTS). Nouvel onglet \"Image de carte de l'incident\" : génère en option un PNG OpenStreetMap marqué d'un point, centré sur les coordonnées de chaque incident, exposé via le nouvel état einsatz.kartenbildPfad (taille/zoom configurables, seules les 10 images les plus récentes sont conservées).",
91
- "it": "Novità: casella \"Elaborare gli incidenti del servizio di soccorso\" (attiva per impostazione predefinita) nella scheda rinominata \"Servizio di soccorso\" - se disattivata, gli incidenti identificati come chiamate del servizio di soccorso tramite einsatzart vengono ignorati completamente (nessuno stato, nessuna cronologia, nessun TTS). Nuova scheda \"Immagine della mappa dell'incidente\": genera facoltativamente un PNG di OpenStreetMap contrassegnato con un punto, centrato sulle coordinate di ogni incidente, esposto tramite il nuovo stato einsatz.kartenbildPfad (dimensione/zoom configurabili, vengono conservate solo le 10 immagini più recenti).",
92
- "es": "Novedad: casilla \"Procesar incidentes del servicio de rescate\" (activada por defecto) en la pestaña renombrada \"Servicio de rescate\" - si se desactiva, los incidentes identificados como avisos del servicio de rescate mediante einsatzart se ignoran por completo (sin estados, sin historial, sin TTS). Nueva pestaña \"Imagen de mapa del incidente\": genera opcionalmente un PNG de OpenStreetMap marcado con un punto, centrado en las coordenadas de cada incidente, disponible mediante el nuevo estado einsatz.kartenbildPfad (tamaño/zoom configurables, solo se conservan las 10 imágenes más recientes).",
93
- "pl": "Nowość: pole wyboru \"Przetwarzaj zdarzenia ratownictwa medycznego\" (domyślnie włączone) na przemianowanej karcie \"Ratownictwo medyczne\" - po odznaczeniu zdarzenia rozpoznane jako wezwania ratownictwa medycznego poprzez einsatzart są całkowicie ignorowane (brak stanów, historii, TTS). Nowa karta \"Obraz mapy zdarzenia\": opcjonalnie generuje oznaczony kropką obraz PNG OpenStreetMap, wyśrodkowany na współrzędnych każdego zdarzenia, udostępniany przez nowy stan einsatz.kartenbildPfad (konfigurowalny rozmiar/zoom, przechowywanych jest tylko 10 najnowszych obrazów).",
94
- "uk": "Новинка: прапорець \"Обробляти виклики швидкої допомоги\" (типово увімкнено) на перейменованій вкладці \"Швидка допомога\" - якщо знято, виклики, визначені як виклики швидкої допомоги через einsatzart, повністю ігноруються (без станів, без історії, без TTS). Нова вкладка \"Зображення карти виклику\": за бажанням створює позначене крапкою PNG-зображення OpenStreetMap, центроване на координатах кожного виклику, доступне через новий стан einsatz.kartenbildPfad (настроюваний розмір/масштаб, зберігаються лише 10 останніх зображень).",
95
- "zh-cn": "新增:在重命名后的\"急救服务\"标签页中新增\"处理急救服务事件\"复选框(默认启用)——取消勾选后,通过 einsatzart 识别为急救服务呼叫的事件将被完全忽略(无状态更新、无历史记录、无语音播报)。新增\"事件地图图像\"标签页:可选地生成以圆点标记、以每个事件坐标为中心的 OpenStreetMap PNG 图像,通过新状态 einsatz.kartenbildPfad 提供(尺寸/缩放可配置,仅保留最近 10 张图像)。"
96
96
  }
97
97
  },
98
98
  "titleLang": {
package/main.js CHANGED
@@ -103,7 +103,16 @@ const ALLOWED_EINSATZ_FIELDS = [
103
103
  // EN: additional field per client_waip.js (the official frontend):
104
104
  'zeitstempel',
105
105
  ];
106
- const RUECKMELDUNG_ANZAHL_KEYS = ['ek', 'gf', 'zf', 'vf', 'agt', 'fzf', 'ma', 'med'];
106
+ // DE: Rückmeldungs-Zähler sind seit 0.7.35 in zwei Unter-Kanäle gruppiert - "rollen" (aus
107
+ // rmld_role abgeleitet) und "funktionen" (aus den rmld_capability_*-Flags abgeleitet), siehe
108
+ // updateRueckmeldungCounts(). Vorher lagen alle acht Zähler flach direkt unter
109
+ // einsatz.rueckmeldungAnzahl.
110
+ // EN: Feedback counters have been grouped into two sub-channels since 0.7.35 - "rollen"
111
+ // (derived from rmld_role) and "funktionen" (derived from the rmld_capability_* flags), see
112
+ // updateRueckmeldungCounts(). Previously all eight counters lived flat directly under
113
+ // einsatz.rueckmeldungAnzahl.
114
+ const RUECKMELDUNG_ROLLEN_KEYS = ['ek', 'gf', 'zf', 'vf'];
115
+ const RUECKMELDUNG_FUNKTIONEN_KEYS = ['agt', 'fzf', 'ma', 'med'];
107
116
  // DE: identische Disconnect-Logs 60s lang unterdrücken
108
117
  // EN: suppress identical disconnect logs for 60s
109
118
  const DISCONNECT_DEDUPE_MS = 60000;
@@ -259,6 +268,24 @@ const OBSOLETE_OBJECT_IDS = [
259
268
  'einsatz.hausnummer',
260
269
  'einsatz.einsatzdetails',
261
270
  'einsatz.permissions',
271
+ // DE: Umstrukturierung in 0.7.35: die acht Rückmeldungs-Zähler ziehen von direkt unter
272
+ // einsatz.rueckmeldungAnzahl in die neuen Unter-Kanäle .rollen/.funktionen um (siehe
273
+ // CHANNEL_DEFS/STATE_DEFS) - die alten flachen State-Blätter müssen daher vor
274
+ // initObjects() entfernt werden, sonst blieben sie als verwaiste States neben den neuen
275
+ // verschachtelten Pfaden bestehen.
276
+ // EN: Restructuring in 0.7.35: the eight feedback counters move from directly under
277
+ // einsatz.rueckmeldungAnzahl into the new .rollen/.funktionen sub-channels (see
278
+ // CHANNEL_DEFS/STATE_DEFS) - the old flat state leaves must therefore be removed before
279
+ // initObjects() runs, otherwise they'd linger as orphaned states alongside the new
280
+ // nested paths.
281
+ 'einsatz.rueckmeldungAnzahl.ek',
282
+ 'einsatz.rueckmeldungAnzahl.gf',
283
+ 'einsatz.rueckmeldungAnzahl.zf',
284
+ 'einsatz.rueckmeldungAnzahl.vf',
285
+ 'einsatz.rueckmeldungAnzahl.agt',
286
+ 'einsatz.rueckmeldungAnzahl.fzf',
287
+ 'einsatz.rueckmeldungAnzahl.ma',
288
+ 'einsatz.rueckmeldungAnzahl.med',
262
289
  ];
263
290
 
264
291
  // DE: Übergeordnete Channel/Folder-Objekte, die für jeden State-Zweig existieren müssen.
@@ -270,7 +297,9 @@ const OBSOLETE_OBJECT_IDS = [
270
297
  const CHANNEL_DEFS = [
271
298
  { id: 'status', type: 'channel', name: 'Verbindungs- und Registrierungsstatus' },
272
299
  { id: 'einsatz', type: 'channel', name: 'Aktueller Einsatz' },
273
- { id: 'einsatz.rueckmeldungAnzahl', type: 'folder', name: 'Rückmeldungen nach Funktion' },
300
+ { id: 'einsatz.rueckmeldungAnzahl', type: 'folder', name: 'Rückmeldungen nach Rolle/Funktion' },
301
+ { id: 'einsatz.rueckmeldungAnzahl.rollen', type: 'folder', name: 'Rückmeldungen nach Rolle' },
302
+ { id: 'einsatz.rueckmeldungAnzahl.funktionen', type: 'folder', name: 'Rückmeldungen nach Funktion' },
274
303
  { id: 'einsatz.json', type: 'folder', name: 'Einsatzdaten als flache JSON-Objekte/Arrays für Tabellen-Widgets' },
275
304
  { id: 'einsatz.tts', type: 'folder', name: 'TTS-Ansage des aktuellen Einsatzes' },
276
305
  { id: 'debug', type: 'channel', name: 'Diagnose- und Debug-Informationen' },
@@ -415,44 +444,56 @@ const STATE_DEFS = [
415
444
  def: 0,
416
445
  },
417
446
  {
418
- id: 'einsatz.rueckmeldungAnzahl.ek',
447
+ id: 'einsatz.rueckmeldungAnzahl.rollen.ek',
419
448
  type: 'number',
420
449
  role: 'value',
421
450
  name: 'Rückmeldungen: Einsatzkräfte',
422
451
  def: 0,
423
452
  },
424
453
  {
425
- id: 'einsatz.rueckmeldungAnzahl.gf',
454
+ id: 'einsatz.rueckmeldungAnzahl.rollen.gf',
426
455
  type: 'number',
427
456
  role: 'value',
428
457
  name: 'Rückmeldungen: Gruppenführer',
429
458
  def: 0,
430
459
  },
431
- { id: 'einsatz.rueckmeldungAnzahl.zf', type: 'number', role: 'value', name: 'Rückmeldungen: Zugführer', def: 0 },
432
460
  {
433
- id: 'einsatz.rueckmeldungAnzahl.vf',
461
+ id: 'einsatz.rueckmeldungAnzahl.rollen.zf',
462
+ type: 'number',
463
+ role: 'value',
464
+ name: 'Rückmeldungen: Zugführer',
465
+ def: 0,
466
+ },
467
+ {
468
+ id: 'einsatz.rueckmeldungAnzahl.rollen.vf',
434
469
  type: 'number',
435
470
  role: 'value',
436
471
  name: 'Rückmeldungen: Verbandsführer',
437
472
  def: 0,
438
473
  },
439
474
  {
440
- id: 'einsatz.rueckmeldungAnzahl.agt',
475
+ id: 'einsatz.rueckmeldungAnzahl.funktionen.agt',
441
476
  type: 'number',
442
477
  role: 'value',
443
478
  name: 'Rückmeldungen: Atemschutzgeräteträger',
444
479
  def: 0,
445
480
  },
446
481
  {
447
- id: 'einsatz.rueckmeldungAnzahl.fzf',
482
+ id: 'einsatz.rueckmeldungAnzahl.funktionen.fzf',
448
483
  type: 'number',
449
484
  role: 'value',
450
485
  name: 'Rückmeldungen: Fahrzeugführer',
451
486
  def: 0,
452
487
  },
453
- { id: 'einsatz.rueckmeldungAnzahl.ma', type: 'number', role: 'value', name: 'Rückmeldungen: Maschinisten', def: 0 },
454
488
  {
455
- id: 'einsatz.rueckmeldungAnzahl.med',
489
+ id: 'einsatz.rueckmeldungAnzahl.funktionen.ma',
490
+ type: 'number',
491
+ role: 'value',
492
+ name: 'Rückmeldungen: Maschinisten',
493
+ def: 0,
494
+ },
495
+ {
496
+ id: 'einsatz.rueckmeldungAnzahl.funktionen.med',
456
497
  type: 'number',
457
498
  role: 'value',
458
499
  name: 'Rückmeldungen: Medizinisch/Sanitäter',
@@ -2624,10 +2665,14 @@ class WaipWeb extends utils.Adapter {
2624
2665
 
2625
2666
  /* DE: Berechnet aus den im Snapshot gesammelten Rückmeldungen die Zähler pro Rolle/Fähigkeit
2626
2667
  (analog zu den Badges EK/GF/ZF/VF/AGT/FZF/MA/MED/Gesamt der Weboberfläche) und
2627
- aktualisiert einsatz.rueckmeldungAnzahl.* sowie einsatz.rueckmeldungGesamt.
2668
+ aktualisiert einsatz.rueckmeldungAnzahl.rollen.<k> und .funktionen.<k> sowie
2669
+ einsatz.rueckmeldungGesamt. EK/GF/ZF/VF (aus rmld_role) liegen unter .rollen, AGT/FZF/MA/
2670
+ MED (aus den rmld_capability_*-Flags) unter .funktionen.
2628
2671
  EN: Computes the per-role/skill counters from the feedback entries collected in the
2629
2672
  snapshot (mirroring the EK/GF/ZF/VF/AGT/FZF/MA/MED/total badges of the web UI) and
2630
- updates einsatz.rueckmeldungAnzahl.* as well as einsatz.rueckmeldungGesamt. */
2673
+ updates einsatz.rueckmeldungAnzahl.rollen.<k> and .funktionen.<k> as well as
2674
+ einsatz.rueckmeldungGesamt. EK/GF/ZF/VF (from rmld_role) live under .rollen, AGT/FZF/MA/
2675
+ MED (from the rmld_capability_* flags) under .funktionen. */
2631
2676
  async updateRueckmeldungCounts() {
2632
2677
  const list = (this.currentEinsatzSnapshot && this.currentEinsatzSnapshot.rueckmeldungen) || [];
2633
2678
  const counts = { ek: 0, gf: 0, zf: 0, vf: 0, agt: 0, fzf: 0, ma: 0, med: 0 };
@@ -2654,9 +2699,14 @@ class WaipWeb extends utils.Adapter {
2654
2699
  counts.med++;
2655
2700
  }
2656
2701
  }
2657
- const tasks = RUECKMELDUNG_ANZAHL_KEYS.map(k =>
2658
- this.setStateAsync(`einsatz.rueckmeldungAnzahl.${k}`, counts[k], true),
2659
- );
2702
+ const tasks = [
2703
+ ...RUECKMELDUNG_ROLLEN_KEYS.map(k =>
2704
+ this.setStateAsync(`einsatz.rueckmeldungAnzahl.rollen.${k}`, counts[k], true),
2705
+ ),
2706
+ ...RUECKMELDUNG_FUNKTIONEN_KEYS.map(k =>
2707
+ this.setStateAsync(`einsatz.rueckmeldungAnzahl.funktionen.${k}`, counts[k], true),
2708
+ ),
2709
+ ];
2660
2710
  tasks.push(this.setStateAsync('einsatz.rueckmeldungGesamt', list.length, true));
2661
2711
  const results = await Promise.allSettled(tasks);
2662
2712
  for (const r of results) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.waip-web",
3
- "version": "0.7.34",
3
+ "version": "0.7.35",
4
4
  "description": "Wachalarm IP-Web (WAIP) Adapter für ioBroker – bindet Alarmierungen, Rückmeldungen, Routen und TTS-Ansagen per Socket.IO an ioBroker an.",
5
5
  "author": {
6
6
  "name": "rnc11",