iobroker.waip-web 0.7.8 → 0.7.11
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 +3 -2
- package/README.md +28 -21
- package/io-package.json +40 -27
- package/main.js +35 -4
- package/package.json +3 -3
- package/CHANGELOG_OLD.md +0 -401
package/README.de.md
CHANGED
|
@@ -130,7 +130,8 @@ und Trigger ohne JSON-Parsing auskommen.
|
|
|
130
130
|
| `restzeit` | number (s) | Verbleibende Sekunden bis `einsatz.ablaufzeit`, sekündlich aktualisiert |
|
|
131
131
|
| `registeredMonitor` | string | Zuletzt beim Server registrierte Monitor-ID |
|
|
132
132
|
| `registeredMonitorName` | string | Anzeigename dieses Monitors ohne ID (z. B. „Leitstelle: Lausitz"); wird einmalig beim Start von derselben `/waip/`-Übersichtsseite wie das Admin-Dropdown aufgelöst, `null` falls nicht auflösbar |
|
|
133
|
-
| `registrationAccepted` |
|
|
133
|
+
| `registrationAccepted` | boolean | `true` sobald das erste Event empfangen wurde, sonst `false` direkt nach Connect oder nach Ablauf des Registrierungs-Timeouts |
|
|
134
|
+
| `registrationPending` | boolean | `true` direkt nach Connect, solange noch auf eine Antwort vom Server gewartet wird, sonst `false` sobald bestätigt oder Timeout erreicht |
|
|
134
135
|
|
|
135
136
|
### einsatz
|
|
136
137
|
|
|
@@ -156,7 +157,7 @@ stehen. Der zuletzt abgeschlossene Einsatz bleibt trotzdem über
|
|
|
156
157
|
| `ablaufzeit` | string (date) | Ende der Standby-Anzeigedauer, Basis für `status.restzeit` |
|
|
157
158
|
| `einsatznummer` | string | Einsatznummer (sofern vom Server vergeben) |
|
|
158
159
|
| `sondersignal` | number | `1` = Sondersignal, sonst kein Sondersignal |
|
|
159
|
-
| `permissions` |
|
|
160
|
+
| `permissions` | string | Berechtigungsflag der Registrierung (Vollzugriff auf Detailkarte ja/nein); als String bzw. JSON, falls der Server einen nicht-primitiven Wert sendet |
|
|
160
161
|
| `latitude` / `longitude` | number | Position des Einsatzortes (normalisiert aus wgs84-Feldern oder GeoJSON-Mittelpunkt) |
|
|
161
162
|
| `json` | string (JSON) | Vollständiges Einsatz-Objekt: alle Felder oben plus `emAlarmiert[]`, `emWeitere[]`, `routen[]`, `rueckmeldungen[]` |
|
|
162
163
|
| `history10` | string (JSON-Array) | Letzte 10 abgeschlossenen Einsätze, gleicher Objekt-Shape wie `json`, geschrieben bei `io.standby` |
|
package/README.md
CHANGED
|
@@ -138,7 +138,8 @@ bindings and triggers don't need JSON parsing.
|
|
|
138
138
|
| `restzeit` | number (s) | Remaining seconds until `einsatz.ablaufzeit`, updated every second |
|
|
139
139
|
| `registeredMonitor` | string | Monitor ID last registered with the server |
|
|
140
140
|
| `registeredMonitorName` | string | Display name of that monitor, without the ID (e.g. "Leitstelle: Lausitz"); resolved once at startup from the same `/waip/` overview page as the admin dropdown, `null` if it couldn't be resolved |
|
|
141
|
-
| `registrationAccepted` |
|
|
141
|
+
| `registrationAccepted` | boolean | `true` once the first event was received, `false` right after connecting or once the registration timeout elapses |
|
|
142
|
+
| `registrationPending` | boolean | `true` right after connecting while a response from the server is still awaited, `false` once accepted or timed out |
|
|
142
143
|
|
|
143
144
|
### einsatz
|
|
144
145
|
|
|
@@ -164,7 +165,7 @@ live data. The most recently finished incident remains available via
|
|
|
164
165
|
| `ablaufzeit` | string (date) | End of the standby display duration, basis for `status.restzeit` |
|
|
165
166
|
| `einsatznummer` | string | Incident number (if assigned by the server) |
|
|
166
167
|
| `sondersignal` | number | `1` = special signal (lights & siren), otherwise none |
|
|
167
|
-
| `permissions` |
|
|
168
|
+
| `permissions` | string | The registration's permission flag (full access to the detail map yes/no); stringified/JSON if the server sends a non-primitive value |
|
|
168
169
|
| `latitude` / `longitude` | number | Incident location (normalized from wgs84 fields or GeoJSON centroid) |
|
|
169
170
|
| `json` | string (JSON) | Complete incident object: all fields above plus `emAlarmiert[]`, `emWeitere[]`, `routen[]`, `rueckmeldungen[]` |
|
|
170
171
|
| `history10` | string (JSON array) | Last 10 completed incidents, same object shape as `json`, written on `io.standby` |
|
|
@@ -206,6 +207,31 @@ inside the JSON value, not their own ioBroker states.
|
|
|
206
207
|
|
|
207
208
|
## Changelog
|
|
208
209
|
|
|
210
|
+
### 0.7.11 (2026-08-21)
|
|
211
|
+
|
|
212
|
+
- Fixed **[E3009]** (57 findings): added the missing channel/folder
|
|
213
|
+
objects (`status`, `einsatz`, `einsatz.rueckmeldungAnzahl`, `debug`,
|
|
214
|
+
`tts`) that ioBroker requires for every state path segment - found
|
|
215
|
+
by the `ioBroker.repositories` object structure check.
|
|
216
|
+
- Fixed **[E3005]**/**[E1009]**: replaced the unsupported
|
|
217
|
+
`common.type: "mixed"` on `einsatz.permissions` (now `string`) and
|
|
218
|
+
`status.registrationAccepted` (now split into two booleans:
|
|
219
|
+
`registrationAccepted` and the new `registrationPending`).
|
|
220
|
+
|
|
221
|
+
### 0.7.10 (2026-08-21)
|
|
222
|
+
|
|
223
|
+
- Fixed **[S9508]**: excluded `CHANGELOG_OLD.md` from the npm package
|
|
224
|
+
(removed from `package.json`'s `files` allowlist) - ioBroker shows
|
|
225
|
+
the README via a GitHub link, not from the installed npm package, so
|
|
226
|
+
the file remains fully readable on GitHub without needing to ship
|
|
227
|
+
inside the tarball.
|
|
228
|
+
|
|
229
|
+
### 0.7.9 (2026-08-21)
|
|
230
|
+
|
|
231
|
+
- Fixed **[E5025]**/**[E5036]**: installed the missing
|
|
232
|
+
`@alcalzone/release-script-plugin-license` dev dependency required
|
|
233
|
+
for the `"license"` plugin referenced in `.releaseconfig.json`.
|
|
234
|
+
|
|
209
235
|
### 0.7.8 (2026-08-21)
|
|
210
236
|
|
|
211
237
|
- Fixed **[E5018]**: added the missing `.releaseconfig.json` (`plugins:
|
|
@@ -230,25 +256,6 @@ inside the JSON value, not their own ioBroker states.
|
|
|
230
256
|
version-bump/tag workflow (see below) is unchanged; the tool is
|
|
231
257
|
available but not actively used for releasing yet.
|
|
232
258
|
|
|
233
|
-
### 0.7.5 (2026-08-21)
|
|
234
|
-
|
|
235
|
-
*(Also never tagged/published to npm - superseded directly by 0.7.6.)*
|
|
236
|
-
|
|
237
|
-
- Fixed **[E2004]**: removed the orphaned `0.7.3` entry from
|
|
238
|
-
`common.news` in `io-package.json` - that version (see below) was
|
|
239
|
-
never actually tagged/published to npm, `0.7.2` was followed directly
|
|
240
|
-
by `0.7.4`. Confirmed via a bot recheck that every other finding from
|
|
241
|
-
the last two rounds is now fixed.
|
|
242
|
-
|
|
243
|
-
### 0.7.4 (2026-08-21)
|
|
244
|
-
|
|
245
|
-
- Bumped the `ioBroker/testing-action-check` GitHub Action used by the
|
|
246
|
-
`check-and-lint` CI job from `@v1` to `@v2` (via a
|
|
247
|
-
[Dependabot](https://github.com/rnc11/ioBroker.waip-web/pull/10) PR -
|
|
248
|
-
the first one filed by the `.github/dependabot.yml` added in 0.7.3).
|
|
249
|
-
Purely additive on the action's side (adds an optional `test-command:
|
|
250
|
-
'false'` flag), no behavior change for us.
|
|
251
|
-
|
|
252
259
|
Older entries have moved to [CHANGELOG_OLD.md](CHANGELOG_OLD.md).
|
|
253
260
|
|
|
254
261
|
## License
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,47 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "waip-web",
|
|
4
|
-
"version": "0.7.
|
|
4
|
+
"version": "0.7.11",
|
|
5
5
|
"news": {
|
|
6
|
+
"0.7.11": {
|
|
7
|
+
"en": "Fixed [E3009] (57 findings): added the missing channel/folder objects (status, einsatz, einsatz.rueckmeldungAnzahl, debug, tts) that ioBroker requires for every state path segment. Fixed [E3005]/[E1009]: replaced the unsupported common.type 'mixed' on einsatz.permissions (now string) and status.registrationAccepted (now split into two booleans: registrationAccepted and the new registrationPending) - all found by the ioBroker.repositories object structure check.",
|
|
8
|
+
"de": "[E3009] behoben (57 Fundstellen): fehlende Channel-/Folder-Objekte (status, einsatz, einsatz.rueckmeldungAnzahl, debug, tts) ergänzt, die ioBroker für jedes Pfadsegment eines States benötigt. [E3005]/[E1009] behoben: den nicht unterstützten common.type 'mixed' bei einsatz.permissions (jetzt string) und status.registrationAccepted (jetzt aufgeteilt in zwei Booleans: registrationAccepted und den neuen registrationPending) ersetzt - alles gefunden beim Objektstruktur-Check von ioBroker.repositories.",
|
|
9
|
+
"ru": "Исправлено [E3009] (57 результатов): добавлены отсутствующие объекты канала/папки (status, einsatz, einsatz.rueckmeldungAnzahl, debug, tts), которые ioBroker требует для каждого сегмента пути к состоянию. Исправлено [E3005]/[E1009]: заменен неподдерживаемый common.type «mixed» на einsatz.permissions (теперь строка) и status.registrationAccepted (теперь разделен на два логических значения: RegistrationAccepted и новое RegistrationPending) – все они найдены при проверке структуры объекта ioBroker.repositories.",
|
|
10
|
+
"pt": "Corrigido [E3009] (57 descobertas): foram adicionados os objetos de canal/pasta ausentes (status, einsatz, einsatz.rueckmeldungAnzahl, debug, tts) que o ioBroker requer para cada segmento de caminho de estado. Corrigido [E3005]/[E1009]: substituiu o common.type 'mixed' não suportado em einsatz.permissions (agora string) e status.registrationAccepted (agora dividido em dois booleanos: RegistrationAccepted e o novo RegistrationPending) - todos encontrados pela verificação da estrutura do objeto ioBroker.repositories.",
|
|
11
|
+
"nl": "Opgelost [E3009] (57 bevindingen): de ontbrekende kanaal-/mapobjecten toegevoegd (status, einsatz, einsatz.rueckmeldungAnzahl, debug, tts) die ioBroker nodig heeft voor elk statuspadsegment. [E3005]/[E1009] opgelost: het niet-ondersteunde common.type 'gemengd' vervangen op einsatz.permissions (nu string) en status.registrationAccepted (nu opgesplitst in twee booleans: RegistrationAccepted en de nieuwe RegistrationPending) - allemaal gevonden door de controle van de objectstructuur van ioBroker.repositories.",
|
|
12
|
+
"fr": "Corrigé [E3009] (57 résultats) : ajout des objets canal/dossier manquants (status, einsatz, einsatz.rueckmeldungAnzahl, debug, tts) dont ioBroker a besoin pour chaque segment de chemin d'état. Corrigé [E3005]/[E1009] : remplacement du common.type 'mixed' non pris en charge par einsatz.permissions (maintenant chaîne) et status.registrationAccepted (maintenant divisé en deux booléens : RegistrationAccepted et le nouveau RegistrationPending) - tous trouvés par la vérification de la structure de l'objet ioBroker.repositories.",
|
|
13
|
+
"it": "Risolto [E3009] (57 risultati): aggiunti gli oggetti canale/cartella mancanti (status, einsatz, einsatz.rueckmeldungAnzahl, debug, tts) che ioBroker richiede per ogni segmento del percorso di stato. Risolto il problema [E3005]/[E1009]: sostituito il common.type 'mixed' non supportato su einsatz.permissions (ora stringa) e status.registrationAccepted (ora diviso in due booleani: RegistrationAccepted e il nuovo RegistrationPending) - tutti trovati dal controllo della struttura dell'oggetto ioBroker.repositories.",
|
|
14
|
+
"es": "Corregido [E3009] (57 hallazgos): se agregaron los objetos de canal/carpeta faltantes (status, einsatz, einsatz.rueckmeldungAnzahl, debug, tts) que ioBroker requiere para cada segmento de ruta de estado. Se corrigió [E3005]/[E1009]: reemplazó el common.type 'mixed' no admitido en einsatz.permissions (ahora cadena) y status.registrationAccepted (ahora dividido en dos booleanos: RegistrationAccepted y el nuevo RegistrationPending): todos encontrados mediante la verificación de la estructura del objeto ioBroker.repositories.",
|
|
15
|
+
"pl": "Naprawiono [E3009] (57 wyników): dodano brakujące obiekty kanału/folderu (status, einsatz, einsatz.rueckmeldungAnzahl, debug, tts), których ioBroker wymaga dla każdego segmentu ścieżki stanu. Naprawiono [E3005]/[E1009]: zastąpiono nieobsługiwany typ common.type „mixed” w einsatz.permissions (teraz ciąg znaków) i status.registrationAccepted (teraz podzielony na dwie wartości logiczne: RegistrationAccepted i nowa rejestracjaPending) – wszystkie znalezione podczas sprawdzania struktury obiektu ioBroker.repositories.",
|
|
16
|
+
"uk": "Виправлено [E3009] (57 знахідок): додано відсутні об’єкти каналу/папки (status, einsatz, einsatz.rueckmeldungAnzahl, debug, tts), які потрібні ioBroker для кожного сегмента шляху стану. Виправлено [E3005]/[E1009]: замінено непідтримуваний common.type «mixed» на einsatz.permissions (тепер рядок) і status.registrationAccepted (тепер розділений на два логічних значення: registrationAccepted і нове registrationPending) — усе це виявлено під час перевірки структури об’єкта ioBroker.repositories.",
|
|
17
|
+
"zh-cn": "修复了 [E3009](57 个结果):添加了 ioBroker 为每个状态路径段所需的缺失通道/文件夹对象(状态、einsatz、einsatz.rueckmeldungAnzahl、调试、tts)。修复了 [E3005]/[E1009]:替换了 einsatz.permissions(现在为字符串)和 status.registrationAccepted(现在分为两个布尔值:registrationAccepted 和新的 RegistrationPending)上不支持的 common.type 'mixed' - 所有这些都由 ioBroker.repositories 对象结构检查找到。"
|
|
18
|
+
},
|
|
19
|
+
"0.7.10": {
|
|
20
|
+
"en": "Fixed [S9508]: excluded CHANGELOG_OLD.md from the npm package (removed from package.json's files allowlist) - ioBroker shows the README via a GitHub link, not from the installed npm package, so the file remains fully readable on GitHub without needing to ship inside the tarball.",
|
|
21
|
+
"de": "[S9508] behoben: CHANGELOG_OLD.md aus dem npm-Paket ausgeschlossen (aus der files-Liste in package.json entfernt) - ioBroker zeigt das README über einen GitHub-Link an, nicht aus dem installierten npm-Paket, die Datei bleibt also auf GitHub weiterhin vollständig lesbar, ohne im Tarball enthalten sein zu müssen.",
|
|
22
|
+
"ru": "Исправлено [S9508]: CHANGELOG_OLD.md исключён из npm-пакета (удалён из списка files в package.json) - ioBroker показывает README по ссылке на GitHub, а не из установленного npm-пакета, поэтому файл остаётся полностью читаемым на GitHub без необходимости включать его в архив.",
|
|
23
|
+
"pt": "Corrigido [S9508]: CHANGELOG_OLD.md excluído do pacote npm (removido da lista files em package.json) - o ioBroker exibe o README via link do GitHub, não a partir do pacote npm instalado, então o arquivo permanece totalmente legível no GitHub sem precisar estar no tarball.",
|
|
24
|
+
"nl": "[S9508] opgelost: CHANGELOG_OLD.md uitgesloten van het npm-pakket (verwijderd uit de files-lijst in package.json) - ioBroker toont het README via een GitHub-link, niet vanuit het geïnstalleerde npm-pakket, dus het bestand blijft volledig leesbaar op GitHub zonder in de tarball te hoeven zitten.",
|
|
25
|
+
"fr": "Correction de [S9508] : exclusion de CHANGELOG_OLD.md du paquet npm (retiré de la liste files dans package.json) - ioBroker affiche le README via un lien GitHub, pas depuis le paquet npm installé, le fichier reste donc entièrement lisible sur GitHub sans devoir être inclus dans l'archive.",
|
|
26
|
+
"it": "Risolto [S9508]: escluso CHANGELOG_OLD.md dal pacchetto npm (rimosso dall'elenco files in package.json) - ioBroker mostra il README tramite un link GitHub, non dal pacchetto npm installato, quindi il file resta pienamente leggibile su GitHub senza dover essere incluso nel tarball.",
|
|
27
|
+
"es": "Se corrigió [S9508]: se excluyó CHANGELOG_OLD.md del paquete npm (eliminado de la lista files en package.json) - ioBroker muestra el README mediante un enlace de GitHub, no desde el paquete npm instalado, por lo que el archivo sigue siendo totalmente legible en GitHub sin necesidad de incluirlo en el tarball.",
|
|
28
|
+
"pl": "Naprawiono [S9508]: wykluczono CHANGELOG_OLD.md z pakietu npm (usunięto z listy files w package.json) - ioBroker wyświetla README przez link do GitHub, a nie z zainstalowanego pakietu npm, więc plik pozostaje w pełni czytelny na GitHub bez konieczności umieszczania go w tarballu.",
|
|
29
|
+
"uk": "Виправлено [S9508]: виключено CHANGELOG_OLD.md з npm-пакета (видалено зі списку files у package.json) - ioBroker показує README через посилання на GitHub, а не з встановленого npm-пакета, тож файл залишається повністю доступним для читання на GitHub без потреби включати його до архіву.",
|
|
30
|
+
"zh-cn": "修复了 [S9508]:已将 CHANGELOG_OLD.md 从 npm 包中排除(从 package.json 的 files 列表中移除)——ioBroker 通过 GitHub 链接显示 README,而不是从已安装的 npm 包中读取,因此该文件在 GitHub 上仍然完全可读,无需包含在发布包中。"
|
|
31
|
+
},
|
|
32
|
+
"0.7.9": {
|
|
33
|
+
"en": "Fixed [E5025]/[E5036]: installed the missing @alcalzone/release-script-plugin-license devDependency required for the 'license' plugin referenced in .releaseconfig.json.",
|
|
34
|
+
"de": "[E5025]/[E5036] behoben: fehlende Dev-Dependency @alcalzone/release-script-plugin-license nachinstalliert, die für das in .releaseconfig.json referenzierte 'license'-Plugin benötigt wird.",
|
|
35
|
+
"ru": "Исправлено [E5025]/[E5036]: установлена отсутствовавшая dev-зависимость @alcalzone/release-script-plugin-license, необходимая для плагина 'license', указанного в .releaseconfig.json.",
|
|
36
|
+
"pt": "Corrigido [E5025]/[E5036]: instalada a dependência de desenvolvimento ausente @alcalzone/release-script-plugin-license, necessária para o plugin 'license' referenciado em .releaseconfig.json.",
|
|
37
|
+
"nl": "[E5025]/[E5036] opgelost: ontbrekende dev-dependency @alcalzone/release-script-plugin-license geïnstalleerd, nodig voor de 'license'-plugin waarnaar in .releaseconfig.json wordt verwezen.",
|
|
38
|
+
"fr": "Correction de [E5025]/[E5036] : installation de la dépendance de développement manquante @alcalzone/release-script-plugin-license, nécessaire pour le plugin « license » référencé dans .releaseconfig.json.",
|
|
39
|
+
"it": "Risolti [E5025]/[E5036]: installata la dev-dependency mancante @alcalzone/release-script-plugin-license, necessaria per il plugin 'license' referenziato in .releaseconfig.json.",
|
|
40
|
+
"es": "Se corrigieron [E5025]/[E5036]: se instaló la dependencia de desarrollo faltante @alcalzone/release-script-plugin-license, necesaria para el plugin 'license' referenciado en .releaseconfig.json.",
|
|
41
|
+
"pl": "Naprawiono [E5025]/[E5036]: zainstalowano brakującą zależność deweloperską @alcalzone/release-script-plugin-license, wymaganą dla wtyczki 'license' wskazanej w .releaseconfig.json.",
|
|
42
|
+
"uk": "Виправлено [E5025]/[E5036]: встановлено відсутню dev-залежність @alcalzone/release-script-plugin-license, потрібну для плагіна 'license', зазначеного в .releaseconfig.json.",
|
|
43
|
+
"zh-cn": "修复了 [E5025]/[E5036]:安装了缺失的开发依赖 @alcalzone/release-script-plugin-license,这是 .releaseconfig.json 中引用的 'license' 插件所必需的。"
|
|
44
|
+
},
|
|
6
45
|
"0.7.8": {
|
|
7
46
|
"en": "Fixed [E5018]: added the missing .releaseconfig.json (plugins: iobroker, license) required now that @alcalzone/release-script is a dev dependency. Caught by the ioBroker.repositories 'ADD TO LATEST' submission check.",
|
|
8
47
|
"de": "[E5018] behoben: fehlende .releaseconfig.json ergänzt (plugins: iobroker, license), die nun erforderlich ist, da @alcalzone/release-script als Dev-Dependency vorhanden ist. Aufgefallen beim ioBroker.repositories-„ADD TO LATEST\"-Check.",
|
|
@@ -67,32 +106,6 @@
|
|
|
67
106
|
"pl": "Naprawiono wszystkie ustalenia oficjalnego ioBroker Check and Service Bot: podniesiono minimalne wersje (engines.node >=20, @iobroker/adapter-core ^3.4.1, js-controller >=6.0.11, admin >=7.6.17), README podzielono na anglojęzyczny README.md i niemiecki README.de.md (checker wymaga README wyłącznie po angielsku), sekcję License przeniesiono na sam koniec, dodano brakujące atrybuty i18n/rozmiaru w jsonConfig.json, przełączono na prefiks node: dla wbudowanych require, usunięto zbędny .npmignore i dodano .commitinfo do .gitignore. Usunięto też osierocony wpis news 0.7.0 (nigdy faktycznie nie opublikowany w npm).",
|
|
68
107
|
"uk": "Виправлено всі зауваження офіційного ioBroker Check and Service Bot: підвищено мінімальні версії (engines.node >=20, @iobroker/adapter-core ^3.4.1, js-controller >=6.0.11, admin >=7.6.17), README розділено на англомовний README.md та німецький README.de.md (перевірник вимагає README лише англійською), розділ License переміщено в самий кінець, додано відсутні атрибути i18n/розміру в jsonConfig.json, вбудовані require переведено на префікс node:, видалено зайвий .npmignore та додано .commitinfo до .gitignore. Також видалено осиротілий запис новин 0.7.0 (ніколи не публікувався на npm).",
|
|
69
108
|
"zh-cn": "修复了官方 ioBroker Check and Service Bot 报告的所有问题:提升了最低版本要求(engines.node >=20、@iobroker/adapter-core ^3.4.1、js-controller >=6.0.11、admin >=7.6.17);将 README 拆分为纯英文的 README.md 和德文的 README.de.md(检查器要求 README 仅使用英文);将 License 部分移动到文件末尾;为 jsonConfig.json 添加了缺失的 i18n/尺寸属性;将内置模块的 require 改为使用 node: 前缀;移除了多余的 .npmignore;并在 .gitignore 中添加了 .commitinfo。同时移除了从未真正发布到 npm 的孤立新闻条目 0.7.0。"
|
|
70
|
-
},
|
|
71
|
-
"0.7.1": {
|
|
72
|
-
"en": "Added a License badge to the README.",
|
|
73
|
-
"de": "Lizenz-Badge im README ergänzt.",
|
|
74
|
-
"ru": "В README добавлен значок лицензии.",
|
|
75
|
-
"pt": "Adicionado um selo de licença ao README.",
|
|
76
|
-
"nl": "Licentiebadge toegevoegd aan de README.",
|
|
77
|
-
"fr": "Ajout d'un badge de licence au README.",
|
|
78
|
-
"it": "Aggiunto un badge di licenza al README.",
|
|
79
|
-
"es": "Se añadió una insignia de licencia al README.",
|
|
80
|
-
"pl": "Dodano odznakę licencji do README.",
|
|
81
|
-
"uk": "До README додано значок ліцензії.",
|
|
82
|
-
"zh-cn": "已在 README 中添加许可证徽章。"
|
|
83
|
-
},
|
|
84
|
-
"0.6.11-beta.0": {
|
|
85
|
-
"en": "README: logo now shown enlarged (115x115, crisp pixel-scaled since the source icon is only 32x32) via a new admin/waip-web-logo.png; the actual ioBroker adapter icon (admin/waip-web.png) is unchanged. Simplified the README title back to \"ioBroker.waip-web\".",
|
|
86
|
-
"de": "README: Logo wird jetzt vergrößert angezeigt (115x115, scharf pixel-skaliert, da das Quell-Icon nur 32x32 ist) über eine neue admin/waip-web-logo.png; das eigentliche ioBroker-Adapter-Icon (admin/waip-web.png) bleibt unverändert. README-Titel wieder auf „ioBroker.waip-web\" vereinfacht.",
|
|
87
|
-
"ru": "README: логотип теперь отображается увеличенным (115x115, чёткое пиксельное масштабирование, так как исходная иконка всего 32x32) через новый файл admin/waip-web-logo.png; сама иконка адаптера ioBroker (admin/waip-web.png) не изменилась. Заголовок README снова упрощён до «ioBroker.waip-web».",
|
|
88
|
-
"pt": "README: o logotipo agora é exibido ampliado (115x115, escalonamento em pixels nítido, já que o ícone de origem tem apenas 32x32) através de um novo admin/waip-web-logo.png; o ícone real do adaptador ioBroker (admin/waip-web.png) permanece inalterado. Título do README simplificado novamente para \"ioBroker.waip-web\".",
|
|
89
|
-
"nl": "README: logo wordt nu vergroot weergegeven (115x115, scherpe pixel-schaling omdat het bronicoon slechts 32x32 is) via een nieuwe admin/waip-web-logo.png; het eigenlijke ioBroker-adapterpictogram (admin/waip-web.png) blijft ongewijzigd. README-titel weer vereenvoudigd naar \"ioBroker.waip-web\".",
|
|
90
|
-
"fr": "README : le logo s'affiche désormais agrandi (115x115, mise à l'échelle en pixels nets car l'icône source ne fait que 32x32) via un nouveau fichier admin/waip-web-logo.png ; l'icône réelle de l'adaptateur ioBroker (admin/waip-web.png) reste inchangée. Titre du README de nouveau simplifié en « ioBroker.waip-web ».",
|
|
91
|
-
"it": "README: il logo ora viene mostrato ingrandito (115x115, scalatura nitida a pixel poiché l'icona sorgente è solo 32x32) tramite un nuovo admin/waip-web-logo.png; l'icona reale dell'adapter ioBroker (admin/waip-web.png) resta invariata. Titolo del README nuovamente semplificato in \"ioBroker.waip-web\".",
|
|
92
|
-
"es": "README: el logotipo ahora se muestra ampliado (115x115, escalado nítido por píxeles ya que el icono de origen es de solo 32x32) mediante un nuevo admin/waip-web-logo.png; el icono real del adaptador de ioBroker (admin/waip-web.png) permanece sin cambios. Título del README simplificado de nuevo a \"ioBroker.waip-web\".",
|
|
93
|
-
"pl": "README: logo jest teraz wyświetlane powiększone (115x115, ostre skalowanie pikselowe, ponieważ ikona źródłowa ma tylko 32x32) za pomocą nowego pliku admin/waip-web-logo.png; rzeczywista ikona adaptera ioBroker (admin/waip-web.png) pozostaje bez zmian. Tytuł README ponownie uproszczono do \"ioBroker.waip-web\".",
|
|
94
|
-
"uk": "README: логотип тепер відображається збільшеним (115x115, чітке пікселне масштабування, оскільки вихідна іконка лише 32x32) через новий файл admin/waip-web-logo.png; фактична іконка адаптера ioBroker (admin/waip-web.png) залишається незмінною. Заголовок README знову спрощено до «ioBroker.waip-web».",
|
|
95
|
-
"zh-cn": "README:徽标现在以放大显示(115x115,由于源图标仅为 32x32,采用清晰的像素缩放)通过新的 admin/waip-web-logo.png 实现;实际的 ioBroker 适配器图标(admin/waip-web.png)保持不变。README 标题重新简化为 \"ioBroker.waip-web\"。"
|
|
96
109
|
}
|
|
97
110
|
},
|
|
98
111
|
"titleLang": {
|
package/main.js
CHANGED
|
@@ -95,6 +95,17 @@ const OBSOLETE_OBJECT_IDS = [
|
|
|
95
95
|
'routen.count',
|
|
96
96
|
];
|
|
97
97
|
|
|
98
|
+
// Übergeordnete Channel/Folder-Objekte, die für jeden State-Zweig existieren müssen.
|
|
99
|
+
// ioBroker verlangt ein eigenes Objekt für jedes Segment eines State-Pfads - reine
|
|
100
|
+
// State-Blätter (siehe STATE_DEFS) reichen dafür nicht aus.
|
|
101
|
+
const CHANNEL_DEFS = [
|
|
102
|
+
{ id: 'status', type: 'channel', name: 'Verbindungs- und Registrierungsstatus' },
|
|
103
|
+
{ id: 'einsatz', type: 'channel', name: 'Aktueller Einsatz' },
|
|
104
|
+
{ id: 'einsatz.rueckmeldungAnzahl', type: 'folder', name: 'Rückmeldungen nach Funktion' },
|
|
105
|
+
{ id: 'debug', type: 'channel', name: 'Diagnose- und Debug-Informationen' },
|
|
106
|
+
{ id: 'tts', type: 'channel', name: 'TTS-Ansagen' },
|
|
107
|
+
];
|
|
108
|
+
|
|
98
109
|
// Definition aller States, die beim Start sichergestellt werden.
|
|
99
110
|
const STATE_DEFS = [
|
|
100
111
|
{
|
|
@@ -122,9 +133,17 @@ const STATE_DEFS = [
|
|
|
122
133
|
},
|
|
123
134
|
{
|
|
124
135
|
id: 'status.registrationAccepted',
|
|
125
|
-
type: '
|
|
136
|
+
type: 'boolean',
|
|
137
|
+
role: 'indicator',
|
|
138
|
+
name: 'Registrierung bestätigt',
|
|
139
|
+
def: false,
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
id: 'status.registrationPending',
|
|
143
|
+
type: 'boolean',
|
|
126
144
|
role: 'indicator',
|
|
127
|
-
name: 'Registrierung
|
|
145
|
+
name: 'Registrierung angefragt, Antwort vom Server steht noch aus',
|
|
146
|
+
def: false,
|
|
128
147
|
},
|
|
129
148
|
{ id: 'debug.lastEvent', type: 'string', role: 'json', name: 'Letztes empfangenes Socket-Event' },
|
|
130
149
|
{ id: 'debug.normalizedPosition', type: 'string', role: 'json', name: 'Letzte normalisierte Position' },
|
|
@@ -162,7 +181,7 @@ const STATE_DEFS = [
|
|
|
162
181
|
{ id: 'einsatz.ablaufzeit', type: 'string', role: 'date', name: 'Ablaufzeit' },
|
|
163
182
|
{ id: 'einsatz.einsatznummer', type: 'string', role: 'text', name: 'Einsatznummer' },
|
|
164
183
|
{ id: 'einsatz.sondersignal', type: 'number', role: 'value', name: 'Sondersignal', def: 0 },
|
|
165
|
-
{ id: 'einsatz.permissions', type: '
|
|
184
|
+
{ id: 'einsatz.permissions', type: 'string', role: 'json', name: 'Berechtigungs-Flag der Registrierung' },
|
|
166
185
|
{ id: 'einsatz.latitude', type: 'number', role: 'value.gps.latitude', name: 'Breitengrad' },
|
|
167
186
|
{ id: 'einsatz.longitude', type: 'number', role: 'value.gps.longitude', name: 'Längengrad' },
|
|
168
187
|
// verschachteltes Gesamtobjekt + Historie
|
|
@@ -572,6 +591,13 @@ class WaipWeb extends utils.Adapter {
|
|
|
572
591
|
}
|
|
573
592
|
|
|
574
593
|
async initObjects() {
|
|
594
|
+
for (const def of CHANNEL_DEFS) {
|
|
595
|
+
await this.setObjectNotExistsAsync(def.id, {
|
|
596
|
+
type: def.type,
|
|
597
|
+
common: { name: def.name },
|
|
598
|
+
native: {},
|
|
599
|
+
});
|
|
600
|
+
}
|
|
575
601
|
for (const def of STATE_DEFS) {
|
|
576
602
|
await this.setObjectNotExistsAsync(def.id, {
|
|
577
603
|
type: 'state',
|
|
@@ -1028,6 +1054,7 @@ class WaipWeb extends utils.Adapter {
|
|
|
1028
1054
|
this.registrationTimer = null;
|
|
1029
1055
|
}
|
|
1030
1056
|
this.registrationPending = false;
|
|
1057
|
+
this.setState('status.registrationPending', false, true);
|
|
1031
1058
|
}
|
|
1032
1059
|
|
|
1033
1060
|
try {
|
|
@@ -1448,6 +1475,7 @@ class WaipWeb extends utils.Adapter {
|
|
|
1448
1475
|
this.socket = null;
|
|
1449
1476
|
this.connecting = false;
|
|
1450
1477
|
this.registrationPending = false;
|
|
1478
|
+
this.setState('status.registrationPending', false, true);
|
|
1451
1479
|
if (this.registrationTimer) {
|
|
1452
1480
|
this.clearTimeout(this.registrationTimer);
|
|
1453
1481
|
this.registrationTimer = null;
|
|
@@ -1512,13 +1540,15 @@ class WaipWeb extends utils.Adapter {
|
|
|
1512
1540
|
// Gecachter Anzeigename (siehe refreshMonitorName) - keine erneute HTTP-Abfrage
|
|
1513
1541
|
// bei jedem (Re-)Connect, ist ggf. beim allerersten Connect noch null.
|
|
1514
1542
|
this.setState('status.registeredMonitorName', this.monitorName, true);
|
|
1515
|
-
this.setState('status.registrationAccepted',
|
|
1543
|
+
this.setState('status.registrationAccepted', false, true);
|
|
1544
|
+
this.setState('status.registrationPending', true, true);
|
|
1516
1545
|
if (this.registrationTimer) {
|
|
1517
1546
|
this.clearTimeout(this.registrationTimer);
|
|
1518
1547
|
this.registrationTimer = null;
|
|
1519
1548
|
}
|
|
1520
1549
|
this.registrationTimer = this.setTimeout(async () => {
|
|
1521
1550
|
this.registrationPending = false;
|
|
1551
|
+
this.setState('status.registrationPending', false, true);
|
|
1522
1552
|
const accState = await this.getStateAsync('status.registrationAccepted');
|
|
1523
1553
|
const acc = accState ? accState.val : null;
|
|
1524
1554
|
if (acc !== true) {
|
|
@@ -1545,6 +1575,7 @@ class WaipWeb extends utils.Adapter {
|
|
|
1545
1575
|
this.logDisconnect(`Socket disconnected: ${reason}`);
|
|
1546
1576
|
this.registrationPending = false;
|
|
1547
1577
|
this.setState('status.registrationAccepted', false, true);
|
|
1578
|
+
this.setState('status.registrationPending', false, true);
|
|
1548
1579
|
if (this.registrationTimer) {
|
|
1549
1580
|
this.clearTimeout(this.registrationTimer);
|
|
1550
1581
|
this.registrationTimer = null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.waip-web",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.11",
|
|
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",
|
|
@@ -33,8 +33,7 @@
|
|
|
33
33
|
"io-package.json",
|
|
34
34
|
"main.js",
|
|
35
35
|
"LICENSE",
|
|
36
|
-
"README.de.md"
|
|
37
|
-
"CHANGELOG_OLD.md"
|
|
36
|
+
"README.de.md"
|
|
38
37
|
],
|
|
39
38
|
"dependencies": {
|
|
40
39
|
"@iobroker/adapter-core": "^3.4.1",
|
|
@@ -43,6 +42,7 @@
|
|
|
43
42
|
"devDependencies": {
|
|
44
43
|
"@alcalzone/release-script": "^5.2.1",
|
|
45
44
|
"@alcalzone/release-script-plugin-iobroker": "^5.2.0",
|
|
45
|
+
"@alcalzone/release-script-plugin-license": "^5.2.2",
|
|
46
46
|
"@iobroker/adapter-dev": "^1.5.0",
|
|
47
47
|
"@iobroker/eslint-config": "^2.2.0",
|
|
48
48
|
"@iobroker/testing": "^5.2.2"
|
package/CHANGELOG_OLD.md
DELETED
|
@@ -1,401 +0,0 @@
|
|
|
1
|
-
# Older changes
|
|
2
|
-
|
|
3
|
-
### 0.7.3 (2026-08-21)
|
|
4
|
-
|
|
5
|
-
*(Never tagged/published to npm - superseded directly by 0.7.4; kept
|
|
6
|
-
here for a complete history of what was worked on.)*
|
|
7
|
-
|
|
8
|
-
- Addressed further findings from the official ioBroker Check and
|
|
9
|
-
Service Bot (which re-scans the repository after every push):
|
|
10
|
-
- Removed the deprecated `common.materialize` field from
|
|
11
|
-
`io-package.json` (superseded by `common.adminUI.config`)
|
|
12
|
-
- Raised `engines.node` to `>=22` and dropped Node.js 20 (reached
|
|
13
|
-
End of Life on 2026-04-30) from the CI test matrix
|
|
14
|
-
- Raised the `admin` dependency to `>=7.8.23`
|
|
15
|
-
- Moved the `check-and-lint` CI job to Node 24.x
|
|
16
|
-
- Added `.github/dependabot.yml` for automated dependency updates
|
|
17
|
-
(weekly `npm`/`github-actions` checks)
|
|
18
|
-
|
|
19
|
-
### 0.7.2 (2026-08-21)
|
|
20
|
-
|
|
21
|
-
- README is now English-only (per the official ioBroker adapter checker,
|
|
22
|
-
which flags mixed-language READMEs); the German version moved to a
|
|
23
|
-
separate [README.de.md](README.de.md), linked near the top.
|
|
24
|
-
- Moved the License section to the very end of the file (was before the
|
|
25
|
-
Changelog) - the checker requires License to be the last section.
|
|
26
|
-
- `package.json`: raised `engines.node` to `>=20` and `@iobroker/adapter-core`
|
|
27
|
-
to `^3.4.1`.
|
|
28
|
-
- `io-package.json`: raised the `js-controller` dependency to `>=6.0.11`
|
|
29
|
-
and the `admin` dependency to `>=7.6.17`; removed the `0.7.0` news
|
|
30
|
-
entry (never published to npm, only `0.7.1` and later actually are).
|
|
31
|
-
- `admin/jsonConfig.json`: added the root `"i18n": true` attribute (now
|
|
32
|
-
required since the fields resolve translations from `admin/i18n/*.json`)
|
|
33
|
-
and explicit `xs`/`xl` grid sizes on all fields.
|
|
34
|
-
- `main.js`: `require('http')`/`require('https')`/`require('url')` now
|
|
35
|
-
use the `node:` prefix for Node's built-in modules.
|
|
36
|
-
- `.gitignore`: added `.commitinfo`.
|
|
37
|
-
- Removed `.npmignore` - redundant with the `files` allowlist already
|
|
38
|
-
used in `package.json`.
|
|
39
|
-
- CI: `adapter-tests` now explicitly declares `needs: check-and-lint`;
|
|
40
|
-
raised the Node.js version used by the `check-and-lint` and `deploy`
|
|
41
|
-
jobs.
|
|
42
|
-
|
|
43
|
-
### 0.7.1 (2026-08-21)
|
|
44
|
-
|
|
45
|
-
- Added a License badge to the README.
|
|
46
|
-
|
|
47
|
-
### 0.7.0 (2026-08-21)
|
|
48
|
-
|
|
49
|
-
- Prepared the admin UI for community translation via
|
|
50
|
-
[ioBroker's Weblate](https://weblate.iobroker.net/engage/adapters/):
|
|
51
|
-
added `@iobroker/adapter-dev` as a dev dependency (`npm run
|
|
52
|
-
translate`), converted `admin/jsonConfig.json`'s `label`/`help` fields
|
|
53
|
-
from inline `en`/`de` objects to plain English keys, and added
|
|
54
|
-
`admin/i18n/{en,de,ru,pt,nl,fr,it,es,pl,uk,zh-cn}.json` (German
|
|
55
|
-
curated manually, the rest auto-translated via the official
|
|
56
|
-
`translate-adapter` tool — the same tool that already maintains the
|
|
57
|
-
`io-package.json` translations). Added a "Translation status" badge to
|
|
58
|
-
the README; like the "installed"/"stable" badges, it only shows real
|
|
59
|
-
data once the adapter is actually registered as a component on
|
|
60
|
-
weblate.iobroker.net (not done yet).
|
|
61
|
-
|
|
62
|
-
### 0.6.11 (2026-08-21)
|
|
63
|
-
|
|
64
|
-
- README: logo now shown enlarged (115×115) via a new
|
|
65
|
-
`admin/waip-web-logo.png`, nearest-neighbor-scaled from the 32×32
|
|
66
|
-
source icon for a crisp (if visibly pixelated) result instead of a
|
|
67
|
-
blurry interpolated one — no higher-resolution source exists anywhere
|
|
68
|
-
in the WAIP-Web ecosystem (checked the Lausitz instance and the
|
|
69
|
-
upstream project, both use the same 32×32 favicon). The actual
|
|
70
|
-
ioBroker adapter icon (`admin/waip-web.png`, referenced from
|
|
71
|
-
`io-package.json`) is unchanged.
|
|
72
|
-
- Simplified the README title back to "ioBroker.waip-web".
|
|
73
|
-
|
|
74
|
-
### 0.6.10 (2026-08-21)
|
|
75
|
-
|
|
76
|
-
- Added the adapter logo and npm/installation badges (NPM version,
|
|
77
|
-
downloads, installed, stable) to the README, matching standard
|
|
78
|
-
ioBroker adapter conventions. The "installed"/"stable" badges won't
|
|
79
|
-
show meaningful data until the adapter is listed in the official
|
|
80
|
-
[ioBroker.repositories](https://github.com/ioBroker/ioBroker.repositories)
|
|
81
|
-
("latest" repository PR pending), but will populate automatically once
|
|
82
|
-
it is.
|
|
83
|
-
|
|
84
|
-
### 0.6.9 (2026-08-21)
|
|
85
|
-
|
|
86
|
-
- Fixed adapter-checker finding **[E254]**: removed `common.news` entries
|
|
87
|
-
for versions that were never actually published to npm (`0.6.1`–`0.6.5`,
|
|
88
|
-
`0.6.7` were only version bumps in git/GitHub, without a matching
|
|
89
|
-
tagged npm release). `common.news` now only lists versions that really
|
|
90
|
-
exist on the npm registry (`0.6.6`, `0.6.8`); the full history remains
|
|
91
|
-
in this changelog regardless of what was actually published.
|
|
92
|
-
|
|
93
|
-
### 0.6.8 (2026-08-21)
|
|
94
|
-
|
|
95
|
-
- Renamed the README title to "ioBroker-Adapter (ioBroker.waip-web)".
|
|
96
|
-
- This release doubles as the first end-to-end test of the automatic
|
|
97
|
-
npm publish via Trusted Publishing introduced in 0.6.7.
|
|
98
|
-
|
|
99
|
-
### 0.6.7 (2026-08-21)
|
|
100
|
-
|
|
101
|
-
- Enabled automatic npm publishing: the `deploy` job in
|
|
102
|
-
`.github/workflows/test-and-release.yml` is no longer commented out
|
|
103
|
-
and now runs on every version tag (`vX.Y.Z`), publishing to npm via
|
|
104
|
-
[Trusted Publishing](https://docs.npmjs.com/trusted-publishers) (OIDC,
|
|
105
|
-
no `NPM_TOKEN` secret needed).
|
|
106
|
-
|
|
107
|
-
### 0.6.6 (2026-08-21)
|
|
108
|
-
|
|
109
|
-
- Added `.gitattributes` `eol=lf` so all contributors get consistent LF
|
|
110
|
-
line endings regardless of their local git `autocrlf` setting
|
|
111
|
-
(previously caused hundreds of spurious local lint errors on Windows
|
|
112
|
-
without affecting CI, since CI checkouts weren't affected).
|
|
113
|
-
- Added `package-lock.json` and switched CI to the default `npm ci` with
|
|
114
|
-
caching instead of `npm install` without caching, now that a lockfile
|
|
115
|
-
exists.
|
|
116
|
-
|
|
117
|
-
### 0.6.5 (2026-08-21)
|
|
118
|
-
|
|
119
|
-
- Fixed all issues reported by the official [ioBroker adapter checker](https://adapter-check.iobroker.in/):
|
|
120
|
-
- Bumped the required `js-controller` dependency to `>=5.0.19` and `@iobroker/adapter-core` to `^3.2.2`
|
|
121
|
-
- Replaced the deprecated `common.license`/`common.title`/`common.main` fields with `common.licenseInformation`/`common.titleLang`; `common.main` is redundant with `package.json`'s `main` field
|
|
122
|
-
- Added the required `common.tier` (`2` - external/cloud data source)
|
|
123
|
-
- Added translations of `titleLang`, `desc` and the kept `common.news` entries into all 10 additional ioBroker admin languages (ru, pt, nl, fr, it, es, pl, uk, zh-cn)
|
|
124
|
-
- Trimmed `common.news` to the 7 most recent entries, as recommended (the repository builder truncates there anyway); the full history stays in this changelog
|
|
125
|
-
|
|
126
|
-
### 0.6.4 (2026-08-21)
|
|
127
|
-
|
|
128
|
-
- New state `status.registeredMonitorName` shows the registered monitor
|
|
129
|
-
as text without the ID (e.g. "Leitstelle: Lausitz"), resolved once at
|
|
130
|
-
startup from the same `/waip/` overview page as the admin dropdown.
|
|
131
|
-
`status.registeredMonitor` is unchanged and keeps showing the ID.
|
|
132
|
-
|
|
133
|
-
### 0.6.3 (2026-08-21)
|
|
134
|
-
|
|
135
|
-
- Admin UI: the Monitor ID field is now always full-width, placed on its
|
|
136
|
-
own row below the WAIP server URL, so the (sometimes long) dropdown
|
|
137
|
-
entries have enough room to display without being cramped.
|
|
138
|
-
|
|
139
|
-
### 0.6.2 (2026-08-21)
|
|
140
|
-
|
|
141
|
-
- Monitor dropdown entries are now sorted by numeric monitor ID instead
|
|
142
|
-
of following the source page's (per-category) order.
|
|
143
|
-
|
|
144
|
-
### 0.6.1 (2026-08-21)
|
|
145
|
-
|
|
146
|
-
- Monitor dropdown entries now start with the actual monitor ID, e.g.
|
|
147
|
-
"4 - Leitstelle: Lausitz", so the numeric ID stays visible even after
|
|
148
|
-
a monitor has been selected.
|
|
149
|
-
|
|
150
|
-
### 0.6.0 (2026-08-21)
|
|
151
|
-
|
|
152
|
-
- **Admin UI:** Monitor ID is now a live dropdown (`selectSendTo`) instead
|
|
153
|
-
of a plain text field. The adapter fetches the configured server's
|
|
154
|
-
public `/waip/` overview page on demand and offers every monitor it
|
|
155
|
-
finds there, grouped by Leitstelle/Kreis/Träger/Wache, with "Alle
|
|
156
|
-
Wachalarme" (ID `0`) as an explicit first option. Manual entry remains
|
|
157
|
-
available if the server can't be reached or uses a different page
|
|
158
|
-
layout, so existing configurations keep working unchanged.
|
|
159
|
-
- Removed the static "session keepalive interval" info text from the
|
|
160
|
-
admin UI (the behavior itself is unchanged).
|
|
161
|
-
- Added help text to the "Registration timeout" and "Reconnect delay"
|
|
162
|
-
fields.
|
|
163
|
-
|
|
164
|
-
### 0.5.1 (2026-08-21)
|
|
165
|
-
|
|
166
|
-
- **Logging:** Reclassified log levels so `warn` becomes a reliable signal
|
|
167
|
-
again. Session-cookie rotation, the known "Fehler beim Erneuern der
|
|
168
|
-
Session" server message, and detected server restarts are now logged
|
|
169
|
-
as `info` instead of `warn`, since they're part of this instance's
|
|
170
|
-
normal, self-healing ~10-minute session cycle. Events discarded for a
|
|
171
|
-
different monitor ID are now `info` (frequency remains tracked via
|
|
172
|
-
`debug.ignoredCount`). Failures that only affect internal housekeeping
|
|
173
|
-
(`debug.monitorAudit`, socket cleanup) are now `debug`. A duplicate
|
|
174
|
-
`connect_error` log line (logged once at `warn`, once at `info`) was
|
|
175
|
-
removed. Introduced `error` level for cases where an incident,
|
|
176
|
-
feedback, route or TTS event genuinely failed to be processed (actual
|
|
177
|
-
data loss), so these now stand out instead of being buried among
|
|
178
|
-
routine `warn` noise.
|
|
179
|
-
|
|
180
|
-
### 0.5.0 (2026-08-20)
|
|
181
|
-
|
|
182
|
-
- **Behavior change:** On `io.standby`, all `einsatz.*` states (including
|
|
183
|
-
`einsatz.json` and all counters) are now cleared instead of leaving the
|
|
184
|
-
finished incident's data in place – matching the official frontend,
|
|
185
|
-
which also clears keyword, location data etc. on standby.
|
|
186
|
-
`status.alarmAktiv` is therefore now a reliable switch for whether
|
|
187
|
-
`einsatz.*` currently holds real live data. The finished incident
|
|
188
|
-
remains fully available via `einsatz.history10` (archived there first).
|
|
189
|
-
|
|
190
|
-
### 0.4.9 (2026-08-20)
|
|
191
|
-
|
|
192
|
-
- **CI fix:** Reverted a self-introduced, unnecessary line wrap in
|
|
193
|
-
`connect()` (engine-packet preview) – `prettier/prettier` flagged it as
|
|
194
|
-
superfluous; the line actually fits on one line within the configured
|
|
195
|
-
print width.
|
|
196
|
-
|
|
197
|
-
### 0.4.8 (2026-08-20)
|
|
198
|
-
|
|
199
|
-
- **CI fix:** Fixed the final 16 lint errors – this time the complete,
|
|
200
|
-
non-truncated error list including the exact desired replacement text
|
|
201
|
-
was available, so every location could be corrected precisely 1:1
|
|
202
|
-
(line wraps for overly long calls/objects, one `prefer-template`
|
|
203
|
-
case). Lint should now be fully green.
|
|
204
|
-
|
|
205
|
-
### 0.4.7 (2026-08-20)
|
|
206
|
-
|
|
207
|
-
- **CI fix:** Fixed the remaining lint errors in `main.js` – consistently
|
|
208
|
-
applied `curly` (braces even for single-line `if`/`for`),
|
|
209
|
-
`no-unused-vars` for empty `catch` blocks (`catch (e) {}` → `catch {}`
|
|
210
|
-
where `e` isn't used), and `arrowParens: avoid` (removed parentheses
|
|
211
|
-
around single-parameter arrow functions). Purely mechanical code-style
|
|
212
|
-
fixes, no behavior change.
|
|
213
|
-
|
|
214
|
-
### 0.4.6 (2026-08-20)
|
|
215
|
-
|
|
216
|
-
- **CI fix:** The `lint` step failed with hundreds of formatting errors
|
|
217
|
-
(e.g. "Replace 'x' with "x""). Cause: `@iobroker/eslint-config`
|
|
218
|
-
requires its own `prettier.config.mjs` in addition to
|
|
219
|
-
`eslint.config.mjs`, re-exporting the ioBroker formatting style
|
|
220
|
-
(single quotes, 4-space indentation, `trailingComma: 'all'`) – without
|
|
221
|
-
it, Prettier fell back to its own defaults (double quotes). File added.
|
|
222
|
-
|
|
223
|
-
### 0.4.5 (2026-08-20)
|
|
224
|
-
|
|
225
|
-
- **CI fix:** The first pipeline run failed with "Dependencies lock file
|
|
226
|
-
is not found". Cause: `actions/setup-node`'s built-in npm caching
|
|
227
|
-
needs a `package-lock.json` for its cache key, independent of the
|
|
228
|
-
install command used. Since none is committed to the repo yet,
|
|
229
|
-
`package-cache: 'false'` is now set on both jobs.
|
|
230
|
-
|
|
231
|
-
### 0.4.4 (2026-08-20)
|
|
232
|
-
|
|
233
|
-
- Set up the CI pipeline (`.github/workflows/test-and-release.yml`),
|
|
234
|
-
following the standard pattern of the official
|
|
235
|
-
`@iobroker/create-adapter` template: a `check-and-lint` job (ESLint
|
|
236
|
-
via `@iobroker/eslint-config`) and an `adapter-tests` matrix (Node
|
|
237
|
-
20/22/24 × Ubuntu/Windows/macOS) via the central
|
|
238
|
-
`testing-action-check`/`testing-action-adapter` actions. Added
|
|
239
|
-
`test/package.js` and `test/integration.js` (`@iobroker/testing`)
|
|
240
|
-
plus `eslint.config.mjs` for this; bumped `@iobroker/testing` to
|
|
241
|
-
`^5.2.2`. Since no `package-lock.json` is committed yet, the pipeline
|
|
242
|
-
uses `npm install` instead of `npm ci`.
|
|
243
|
-
- Raised `engines.node` in `package.json` to `>=18` (matching the tested
|
|
244
|
-
Node versions and `@iobroker/testing` 5.x's requirements)
|
|
245
|
-
- A `deploy` job (automatic npm publishing) is prepared but commented
|
|
246
|
-
out until npm Trusted Publishing is set up
|
|
247
|
-
|
|
248
|
-
### 0.4.3 (2026-08-20)
|
|
249
|
-
|
|
250
|
-
- **Bugfix:** `einsatz.id` and `einsatz.sondersignal` were declared as
|
|
251
|
-
`string`, but the server actually sends them as numbers
|
|
252
|
-
(`sondersignal`, per `client_waip.js`: `switch (data.sondersignal) {
|
|
253
|
-
case 1: ... }`) – ioBroker therefore logged a type warning on every
|
|
254
|
-
incident. Both states are now declared as `number`. Existing objects
|
|
255
|
-
with the old (wrong) type are automatically recreated on the next
|
|
256
|
-
adapter start (`migrateObjectTypes()`, generic for future type
|
|
257
|
-
corrections).
|
|
258
|
-
|
|
259
|
-
### 0.4.2 (2026-08-20)
|
|
260
|
-
|
|
261
|
-
- Removed the "Session keepalive interval – upper bound" config field
|
|
262
|
-
again: the official `/js/session_keepalive.js` on the site hard-codes
|
|
263
|
-
this upper bound at 5 minutes and doesn't make it configurable. Having
|
|
264
|
-
an admin field for it wrongly suggested a fixed interval, even though
|
|
265
|
-
the actual renewal has long been fully automatic (see 0.4.1). The
|
|
266
|
-
upper bound is now likewise fixed at 5 minutes.
|
|
267
|
-
|
|
268
|
-
### 0.4.1 (2026-08-20)
|
|
269
|
-
|
|
270
|
-
- **Robustness:** The session keepalive interval is now adaptive instead
|
|
271
|
-
of a fixed assumption. WAIP-Web's source code (`server/app_cfg.js`)
|
|
272
|
-
shows that the session cookie's lifetime is configurable per instance
|
|
273
|
-
via an environment variable (server default: 60s instead of the
|
|
274
|
-
previously assumed 10 minutes) – the adapter now derives the renewal
|
|
275
|
-
interval from the expiry time actually reported by the server
|
|
276
|
-
(matching `/js/session_keepalive.js` on the site: 80% of the observed
|
|
277
|
-
lifetime, min. 55s, at most the configured upper bound). The "Session
|
|
278
|
-
keepalive interval" config option is accordingly now an upper bound
|
|
279
|
-
rather than a fixed interval.
|
|
280
|
-
- Corrected a comment about `io.version`/server restarts: per
|
|
281
|
-
`server/auth.js`, WAIP-Web stores sessions persistently (SQLite), not
|
|
282
|
-
in-memory – a restart therefore normally doesn't clear them. The
|
|
283
|
-
proactive session refresh + reconnect on server restart remains as a
|
|
284
|
-
general safeguard, only the previous justification was inaccurate.
|
|
285
|
-
|
|
286
|
-
### 0.4.0 (2026-08-20)
|
|
287
|
-
|
|
288
|
-
- **Restructured the object tree:** Feedback and routes are 1:n lists
|
|
289
|
-
per incident and now live as nested JSON arrays inside one overall
|
|
290
|
-
object `einsatz.json` (including `emAlarmiert[]`, `emWeitere[]`,
|
|
291
|
-
`routen[]`, `rueckmeldungen[]`) instead of several loose states.
|
|
292
|
-
- `einsatz.history10` replaces `history.last10` – now with the **full**
|
|
293
|
-
nested incident object per entry instead of just 6 reduced fields.
|
|
294
|
-
- New counters directly under `einsatz.*`: `routenGesamt`,
|
|
295
|
-
`rueckmeldungGesamt`, `rueckmeldungAnzahl.{ek,gf,zf,vf,agt,fzf,ma,med}`
|
|
296
|
-
(replaces `rueckmeldung.counts.*`).
|
|
297
|
-
- `einsatz.latitude`/`einsatz.longitude` replace
|
|
298
|
-
`geo.latitude`/`geo.longitude` (position is additionally available in
|
|
299
|
-
`einsatz.json.position`).
|
|
300
|
-
- New state `tts.history10` (last 10 TTS announcements).
|
|
301
|
-
- **Removed:** the entire `vis.*` channel, `json.raw`, `json.einsatz`,
|
|
302
|
-
`geo.position`, `rueckmeldung.last.json`, `routen.json`,
|
|
303
|
-
`routen.count`, `einsatz.emWeitere` (now part of `einsatz.json`).
|
|
304
|
-
- The adapter automatically removes all obsolete objects from the
|
|
305
|
-
previous structure on its first start after the update
|
|
306
|
-
(`cleanupObsoleteObjects()`).
|
|
307
|
-
|
|
308
|
-
### 0.3.4 (2026-08-20)
|
|
309
|
-
|
|
310
|
-
- All state names (`common.name`) consistently switched to German
|
|
311
|
-
(previously a mix of English and German) – the adapter only makes
|
|
312
|
-
sense for German-speaking users anyway
|
|
313
|
-
|
|
314
|
-
### 0.3.3 (2026-08-20)
|
|
315
|
-
|
|
316
|
-
- **Bugfix (potential data loss):** For a specific monitor ID (≠ `0`),
|
|
317
|
-
events were silently discarded ("unknownMonitor") after the
|
|
318
|
-
registration timeout elapsed, because real WAIP payloads, per
|
|
319
|
-
`client_waip.js`, **never** contain a monitor-identifying field – that
|
|
320
|
-
assignment happens entirely server-side via Socket.IO rooms. As a
|
|
321
|
-
result, alarm delivery could stop completely after 10s even though
|
|
322
|
-
the connection was technically up. `status.registrationAccepted`
|
|
323
|
-
stayed permanently `false` for the same reason, even for the global
|
|
324
|
-
monitor (`0`). Now any received event confirms the registration;
|
|
325
|
-
events are only discarded if a payload explicitly names a different
|
|
326
|
-
monitor ID.
|
|
327
|
-
|
|
328
|
-
### 0.3.2 (2026-08-20)
|
|
329
|
-
|
|
330
|
-
- Also switched the "Registration timeout" and "Reconnect delay" config
|
|
331
|
-
fields from milliseconds to seconds (`registrationTimeout` →
|
|
332
|
-
`registrationTimeoutSec`, default `10`; `reconnectDelay` →
|
|
333
|
-
`reconnectDelaySec`, default `5`). Existing instances without a newly
|
|
334
|
-
set value automatically use the defaults.
|
|
335
|
-
|
|
336
|
-
### 0.3.1 (2026-08-20)
|
|
337
|
-
|
|
338
|
-
- Switched the "Session keepalive interval" config field from
|
|
339
|
-
milliseconds to seconds (`sessionKeepaliveInterval` →
|
|
340
|
-
`sessionKeepaliveIntervalSec`, still defaulting to 5 min = `300`).
|
|
341
|
-
Existing instances without a newly set value automatically use the
|
|
342
|
-
default.
|
|
343
|
-
|
|
344
|
-
### 0.3.0 (2026-08-20)
|
|
345
|
-
|
|
346
|
-
- **Bugfix:** `wgs84_x`/`wgs84_y` were swapped (latitude/longitude). Per
|
|
347
|
-
the official web frontend (`client_waip.js`), `wgs84_x = latitude,
|
|
348
|
-
wgs84_y = longitude` – contrary to the usual GIS convention.
|
|
349
|
-
`geo.latitude`/`geo.longitude` were therefore swapped for directly
|
|
350
|
-
transmitted coordinates (not the GeoJSON fallback path).
|
|
351
|
-
- Added the missing `io.standby` handler: `status.alarmAktiv` was
|
|
352
|
-
previously never reset when an incident ended
|
|
353
|
-
- Captured new incident fields (previously only contained in the raw
|
|
354
|
-
`json.raw`/`json.einsatz`, now as their own states): `zeitstempel`,
|
|
355
|
-
`einsatznummer`, `objekt`, `objektteil`, `strasse`, `hausnummer`,
|
|
356
|
-
`einsatzdetails`, `besonderheiten`, `permissions`
|
|
357
|
-
- `em_alarmiert` (alerted resources) is now stored in
|
|
358
|
-
`vis.fahrzeugTabelle`, `em_weitere` in `einsatz.emWeitere`
|
|
359
|
-
- Feedback is now collected per incident (`vis.rueckmeldungenTabelle`)
|
|
360
|
-
and aggregated into counters per role/capability
|
|
361
|
-
(`rueckmeldung.counts.*`), mirroring the live badges
|
|
362
|
-
(EK/GF/ZF/VF/AGT/FZF/MA/MED) on the web UI
|
|
363
|
-
- New handlers for `io.error` (→ `debug.lastError`) and `io.version`
|
|
364
|
-
(server-restart detection → session-cookie refresh + forced reconnect)
|
|
365
|
-
- Generalized `reconnectForRotatedSession()` into the more generic
|
|
366
|
-
`forceReconnect(reason)` (now also used on a server version change)
|
|
367
|
-
|
|
368
|
-
### 0.2.1 (2026-08-20)
|
|
369
|
-
|
|
370
|
-
- Detected session-cookie rotation: if `/session/keepalive` returns a
|
|
371
|
-
different cookie value than before (e.g. because the old session was
|
|
372
|
-
already invalid server-side – a missed keepalive, a server restart
|
|
373
|
-
with an in-memory session store), an existing Socket.IO connection is
|
|
374
|
-
now actively rebuilt with the new session instead of waiting for a
|
|
375
|
-
silent failure
|
|
376
|
-
|
|
377
|
-
### 0.2.0 (2026-08-20)
|
|
378
|
-
|
|
379
|
-
- Introduced session-cookie management: the adapter fetches and renews
|
|
380
|
-
the WAIP server's `connect.sid` session cookie itself (`GET
|
|
381
|
-
/session/keepalive`, matching `/js/session_keepalive.js` on the site)
|
|
382
|
-
and attaches it to the Socket.IO connection. Fixes alarm delivery
|
|
383
|
-
stopping after about 10 minutes without an active browser session.
|
|
384
|
-
- New state `debug.sessionExpires` and a new config option "Session
|
|
385
|
-
keepalive interval (ms)" (default `300000`)
|
|
386
|
-
|
|
387
|
-
### 0.1.1 (2026-08-20)
|
|
388
|
-
|
|
389
|
-
- Adopted the favicon from `wachalarm.leitstelle-lausitz.de` as the
|
|
390
|
-
adapter icon (`admin/waip-web.png`), replacing the previous
|
|
391
|
-
placeholder
|
|
392
|
-
- Renamed the GitHub repository from `ioBroker.WAIP-Web` to
|
|
393
|
-
`ioBroker.waip-web` (uppercase letters in the repo name prevented
|
|
394
|
-
installation via `iobroker url` with `Process exited with code 25`);
|
|
395
|
-
updated all URLs in `package.json`/`io-package.json` accordingly
|
|
396
|
-
|
|
397
|
-
### 0.1.0 (2026-08-20)
|
|
398
|
-
|
|
399
|
-
- Initial version: ported the original "WAIP Instrumented v3.9" ioBroker
|
|
400
|
-
JavaScript-adapter script into a standalone adapter. The URL/monitor
|
|
401
|
-
ID now come from the admin configuration instead of a runtime state.
|