iobroker.device-watcher 2.8.5 → 2.9.0
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.md +6 -0
- package/admin/jsonConfig.json +38 -0
- package/io-package.json +18 -14
- package/lib/arrApart.js +25 -0
- package/main.js +133 -35
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -189,6 +189,12 @@ It's possible to select:
|
|
|
189
189
|
Placeholder for the next version (at the beginning of the line):
|
|
190
190
|
### **WORK IN PROGRESS**
|
|
191
191
|
-->
|
|
192
|
+
### 2.9.0 (2023-04-26)
|
|
193
|
+
|
|
194
|
+
- (ciddi89) Fixed: Deactivated instances were not displayed in the daily message about deactivated instances
|
|
195
|
+
- (ciddi89) Added: Viessmann devices, Homekit-Controller devices
|
|
196
|
+
- (ciddi89) Improvements: Text of overview messages
|
|
197
|
+
|
|
192
198
|
### 2.8.5 (2023-04-20)
|
|
193
199
|
|
|
194
200
|
- (ciddi89) Fixed: Error that instances can not be added to the blacklist because of the popup message [#172](https://github.com/ciddi89/ioBroker.device-watcher/issues/172)
|
package/admin/jsonConfig.json
CHANGED
|
@@ -142,6 +142,13 @@
|
|
|
142
142
|
"lg": 3,
|
|
143
143
|
"label": "Home Connect"
|
|
144
144
|
},
|
|
145
|
+
"homekitControllerDevices": {
|
|
146
|
+
"type": "checkbox",
|
|
147
|
+
"sm": 6,
|
|
148
|
+
"md": 6,
|
|
149
|
+
"lg": 3,
|
|
150
|
+
"label": "Homekit-Controller"
|
|
151
|
+
},
|
|
145
152
|
"hs100Devices": {
|
|
146
153
|
"type": "checkbox",
|
|
147
154
|
"sm": 6,
|
|
@@ -352,6 +359,13 @@
|
|
|
352
359
|
"lg": 3,
|
|
353
360
|
"label": "Unifi"
|
|
354
361
|
},
|
|
362
|
+
"viessmannDevices": {
|
|
363
|
+
"type": "checkbox",
|
|
364
|
+
"sm": 6,
|
|
365
|
+
"md": 6,
|
|
366
|
+
"lg": 3,
|
|
367
|
+
"label": "Viessmann"
|
|
368
|
+
},
|
|
355
369
|
"wledDevices": {
|
|
356
370
|
"type": "checkbox",
|
|
357
371
|
"sm": 6,
|
|
@@ -1875,6 +1889,18 @@
|
|
|
1875
1889
|
"hidden": "!data.homeconnectDevices",
|
|
1876
1890
|
"hideOnlyControl": false
|
|
1877
1891
|
},
|
|
1892
|
+
"homekitControllerMaxMinutes": {
|
|
1893
|
+
"type": "number",
|
|
1894
|
+
"min": -1,
|
|
1895
|
+
"max": 100000,
|
|
1896
|
+
"sm": 6,
|
|
1897
|
+
"md": 6,
|
|
1898
|
+
"lg": 3,
|
|
1899
|
+
"label": "Homekit-Controller",
|
|
1900
|
+
"help": "in minutes",
|
|
1901
|
+
"hidden": "!data.homekitControllerDevices",
|
|
1902
|
+
"hideOnlyControl": false
|
|
1903
|
+
},
|
|
1878
1904
|
"hs100MaxMinutes": {
|
|
1879
1905
|
"type": "number",
|
|
1880
1906
|
"min": 1,
|
|
@@ -2247,6 +2273,18 @@
|
|
|
2247
2273
|
"hidden": "!data.unifiDevices",
|
|
2248
2274
|
"hideOnlyControl": false
|
|
2249
2275
|
},
|
|
2276
|
+
"viessmannMaxMinutes": {
|
|
2277
|
+
"type": "number",
|
|
2278
|
+
"min": -1,
|
|
2279
|
+
"max": 100000,
|
|
2280
|
+
"sm": 6,
|
|
2281
|
+
"md": 6,
|
|
2282
|
+
"lg": 3,
|
|
2283
|
+
"label": "Viessmann",
|
|
2284
|
+
"help": "in minutes",
|
|
2285
|
+
"hidden": "!data.viessmannDevices",
|
|
2286
|
+
"hideOnlyControl": false
|
|
2287
|
+
},
|
|
2250
2288
|
"wledMaxMinutes": {
|
|
2251
2289
|
"type": "number",
|
|
2252
2290
|
"min": -1,
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "device-watcher",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.9.0",
|
|
5
5
|
"news": {
|
|
6
|
+
"2.9.0": {
|
|
7
|
+
"en": "Fixed: Deactivated instances were not displayed in the daily message about deactivated instances\nAdded: Viessmann devices, Homekit-Controller devices\nImprovements: Text of overview messages",
|
|
8
|
+
"de": "Behoben: Deaktivierte Instanzen wurden nicht in den Übersichtnachrichten über deaktivierte Instanzen angezeigt\nHinzugefügt: Viessmann Geräte, Homekit-Controller Geräte\nVerbesserungen: Text der Übersichtsnachrichten",
|
|
9
|
+
"ru": "Исправлено: Отключенные экземпляры не отображались в ежедневном сообщении о деактивированных инстанциях\nДобавлены: Viessmann устройства, Homekit-Controller устройства\nУлучшения: Текст обзорных сообщений",
|
|
10
|
+
"pt": "Corrigido: As instâncias desativadas não foram exibidas na mensagem diária sobre instâncias desativadas\nAdicionado: dispositivos Viessmann, dispositivos Homekit-Controller\nMelhorias: Texto de mensagens de visão geral",
|
|
11
|
+
"nl": "Gedeactiveerde instanties werden niet getoond in de dagelijkse boodschap over gedeactiveerde instanties\nVertaling:\nImprovementen: Text of overzicht berichten",
|
|
12
|
+
"fr": "Correction : Les instances désactivées n'ont pas été affichées dans le message quotidien concernant les instances désactivées\nAjouté: Appareils Viessmann, Dispositifs Homekit-Controller\nAméliorations : Texte des messages d ' aperçu",
|
|
13
|
+
"it": "Risolto: Le istanze disattivate non sono state visualizzate nel messaggio quotidiano sulle istanze disattivate\nAggiunto: dispositivi Viessmann, dispositivi Homekit-Controller\nMiglioramenti: Testo dei messaggi di panoramica",
|
|
14
|
+
"es": "Fijo: No se mostraron casos desactivados en el mensaje diario sobre casos desactivados\nAñadido: dispositivos Viessmann, dispositivos Homekit-Controller\nMejoras: Texto de los mensajes de visión general",
|
|
15
|
+
"pl": "Na przykładzie uaktywniono: Zdeaktywowane instancje nie były wyświetlane w codziennym wiadomości o deaktywowanych instancjach\nAdded: urządzenia Viessmanna\nPoprawa: Tekst overview",
|
|
16
|
+
"uk": "Виправлено: Деактивовані екземпляри не відображалися в щоденному повідомленні про деактивовані екземпляри\nДодано: пристрої Viessmann, пристрої Homekit-Controller\nУдосконалення: Текст повідомлення",
|
|
17
|
+
"zh-cn": "Fixed:Deactiving cases的每日信息未显示有关违犯事件的报道。\n增 编:维斯曼装置、家里克特-Controller装置\n改进: 总讯案文"
|
|
18
|
+
},
|
|
6
19
|
"2.8.5": {
|
|
7
20
|
"en": "Fixed: Error that instances can not be added to the blacklist because of the popup message [#172](https://github.com/ciddi89/ioBroker.device-watcher/issues/172)\nFixed: That messages have been sent when the instance has briefly jumped from Enabled to Disabled and back to Enabled [#173](https://github.com/ciddi89/ioBroker.device-watcher/issues/173)",
|
|
8
21
|
"de": "Behoben: Fehler, dass Instanzen aufgrund der Popup-Nachricht nicht zur Blacklist hinzugefügt werden können [#172](https://github.com/ciddi89/ioBroker.device-watcher/issues/172)\nBehoben: Das Meldungen gesendet wurden, wenn die Instanz kurz von Aktiviert auf Deaktiviert und zurück zu Aktiviert gesprungen ist [#173](https://github.com/ciddi89/ioBroker.device-watcher/issues/173)",
|
|
@@ -80,19 +93,6 @@
|
|
|
80
93
|
"pl": "Added: wsparcie dla LOQED Smart Lock\nAdded: Option to add user/group api key\nAdded: Option, aby wysłać powiadomienie, czy instancja została zatrzymana\nAdded: Option to send castule notification with overview of a zatrzymane instancje\nFixed: Wydanie, jeśli powiadomienia zostały wysłane z przerwy, ale opcja nie została wybrana\nFixed: Ignore akumulatory 0%, jeśli nie były one mniejsze niż 5% przed rozpoczęciem budowy",
|
|
81
94
|
"uk": "Доданий: Підтримка LOQED Смарт блокування\nДодано: Параметри, щоб додати ключ користувача / групи Api для Pushover\nДоданий: Опція надсилати повідомлення, якщо було припинено\nДодано: Опція для відправки повідомлень про скидання з оглядом припинених екземплярів\nВиправлено: Питання, якщо повідомлення було відправлено припинено, але варіант не був обраний\nВиправлено: значення Ignore батареї 0%, якщо вони не менше 5% до",
|
|
82
95
|
"zh-cn": "增加:支持LOQED Smart Lock\n增 编:增加用户/集群的备选办法\n增加:如果某一例子被停止,可发出通知。\n增 编:发出简写通知,概述停止事件\nIxed:如果发出通知被阻止,但选择是选择的。\n固定:Ignore电池数值.0%"
|
|
83
|
-
},
|
|
84
|
-
"2.7.1": {
|
|
85
|
-
"en": "Added: Support for Ecovacs-Deebot\nUpdated: Dependencies\nImprovements: Small fixes",
|
|
86
|
-
"de": "Hinzugefügt: Unterstützung für Ecovacs-Deebot\nAktualisiert: Abhängigkeiten\nVerbesserungen: Kleine Verbesserungen",
|
|
87
|
-
"ru": "Добавлена: Поддержка Ecovacs-Deebot\nОбновлено: зависимости\nУлучшения: Небольшие исправления",
|
|
88
|
-
"pt": "Adicionado: Suporte para Ecovacs-Deebot\nAtualizado: Dependências\nMelhorias: Pequenas correções",
|
|
89
|
-
"nl": "Vertaling:\nOpgepast\nImprovementen: Kleine fixes",
|
|
90
|
-
"fr": "Ajouté: Soutien à Ecovacs-Deebot\nActualisé : dépenses\nAméliorations : Petites corrections",
|
|
91
|
-
"it": "Aggiunto: Supporto per Ecovacs-Deebot\nAggiornato: Dipendenze\nMiglioramenti: Piccole correzioni",
|
|
92
|
-
"es": "Añadido: Apoyo para Ecovacs-Deebot\nActualizado: Dependencias\nMejoras: Arreglos pequeños",
|
|
93
|
-
"pl": "Wsparcie dla Ecovac-Deebota\nZastrzeżenie: Zależność\nPoprawa: drobne rozwiązanie",
|
|
94
|
-
"uk": "Додано: Підтримка Ecovacs-Deebot\nОновлено: Залежності\nУдосконалення: Маленькі кріплення",
|
|
95
|
-
"zh-cn": "增加:支持Ecovacs-Deebot\n更新:属地\n改进: 小型配件"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
|
@@ -234,6 +234,8 @@
|
|
|
234
234
|
"hmrpcMaxMinutes": 0,
|
|
235
235
|
"homeconnectDevices": false,
|
|
236
236
|
"homeconnectMaxMinutes": 0,
|
|
237
|
+
"homekitControllerDevices": false,
|
|
238
|
+
"homekitControllerMaxMinutes": 0,
|
|
237
239
|
"hs100Devices": false,
|
|
238
240
|
"hs100MaxMinutes": 300,
|
|
239
241
|
"hueDevices": false,
|
|
@@ -295,6 +297,8 @@
|
|
|
295
297
|
"tradfriMaxMinutes": 0,
|
|
296
298
|
"unifiDevices": false,
|
|
297
299
|
"unifiMaxMinutes": 0,
|
|
300
|
+
"viessmannDevices": false,
|
|
301
|
+
"viessmannMaxMinutes": 0,
|
|
298
302
|
"wledDevices": false,
|
|
299
303
|
"wledMaxMinutes": 0,
|
|
300
304
|
"yeelightDevices": false,
|
package/lib/arrApart.js
CHANGED
|
@@ -183,6 +183,7 @@ const arrApart = {
|
|
|
183
183
|
battery: 'none',
|
|
184
184
|
reach: '.unreach',
|
|
185
185
|
isLowBat: '.lowBat',
|
|
186
|
+
upgrade: '.info.updateState',
|
|
186
187
|
},
|
|
187
188
|
hmrpc: {
|
|
188
189
|
Selektor: 'hm-rpc.*.RSSI_PEER',
|
|
@@ -212,6 +213,18 @@ const arrApart = {
|
|
|
212
213
|
id: '.name',
|
|
213
214
|
upgrade: 'none',
|
|
214
215
|
},
|
|
216
|
+
homekitController: {
|
|
217
|
+
Selektor: 'homekit-controller.*.connected',
|
|
218
|
+
timeSelector: '.lastDiscovered',
|
|
219
|
+
adapterID: 'homekitController',
|
|
220
|
+
adapter: 'Homekit Controller',
|
|
221
|
+
rssiState: 'none',
|
|
222
|
+
battery: 'none',
|
|
223
|
+
reach: '.connected',
|
|
224
|
+
isLowBat: 'none',
|
|
225
|
+
id: 'none',
|
|
226
|
+
upgrade: 'none',
|
|
227
|
+
},
|
|
215
228
|
hs100: {
|
|
216
229
|
Selektor: 'hs100.*.last_update',
|
|
217
230
|
timeSelector: '.last_update',
|
|
@@ -525,6 +538,18 @@ const arrApart = {
|
|
|
525
538
|
id: 'none',
|
|
526
539
|
upgrade: '.upgradable',
|
|
527
540
|
},
|
|
541
|
+
viessmann: {
|
|
542
|
+
Selektor: 'viessmann.*.info.connection',
|
|
543
|
+
timeSelector: '.lastPoll',
|
|
544
|
+
adapterID: 'viessmann',
|
|
545
|
+
adapter: 'Viessmann',
|
|
546
|
+
rssiState: 'none',
|
|
547
|
+
battery: 'none',
|
|
548
|
+
reach: '.connection',
|
|
549
|
+
isLowBat: 'none',
|
|
550
|
+
id: 'none',
|
|
551
|
+
upgrade: 'none',
|
|
552
|
+
},
|
|
528
553
|
wled: {
|
|
529
554
|
Selektor: 'wled.*._online',
|
|
530
555
|
timeSelector: '._online',
|
package/main.js
CHANGED
|
@@ -122,6 +122,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
122
122
|
hmiP: this.config.hmiPDevices,
|
|
123
123
|
hmrpc: this.config.hmrpcDevices,
|
|
124
124
|
homeconnect: this.config.homeconnectDevices,
|
|
125
|
+
homekitController: this.config.homekitControllerDevices,
|
|
125
126
|
hs100: this.config.hs100Devices,
|
|
126
127
|
hue: this.config.hueDevices,
|
|
127
128
|
hueExt: this.config.hueExtDevices,
|
|
@@ -153,6 +154,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
153
154
|
tapo: this.config.tapoDevices,
|
|
154
155
|
tradfri: this.config.tradfriDevices,
|
|
155
156
|
unifi: this.config.unifiDevices,
|
|
157
|
+
viessmann: this.config.viessmannDevices,
|
|
156
158
|
wled: this.config.wledDevices,
|
|
157
159
|
yeelight: this.config.yeelightDevices,
|
|
158
160
|
zigbee: this.config.zigbeeDevices,
|
|
@@ -178,6 +180,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
178
180
|
hmiP: this.config.hmiPMaxMinutes,
|
|
179
181
|
hmrpc: this.config.hmrpcMaxMinutes,
|
|
180
182
|
homeconnect: this.config.homeconnectMaxMinutes,
|
|
183
|
+
homekitController: this.config.homekitControllerMaxMinutes,
|
|
181
184
|
hs100: this.config.hs100MaxMinutes,
|
|
182
185
|
hue: this.config.hueMaxMinutes,
|
|
183
186
|
hueExt: this.config.hueextMaxMinutes,
|
|
@@ -209,6 +212,7 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
209
212
|
tapo: this.config.tapoMaxMinutes,
|
|
210
213
|
tradfri: this.config.tradfriMaxMinutes,
|
|
211
214
|
unifi: this.config.unifiMaxMinutes,
|
|
215
|
+
viessmann: this.config.viessmannMaxMinutes,
|
|
212
216
|
wled: this.config.wledMaxMinutes,
|
|
213
217
|
yeelight: this.config.yeelightMaxMinutes,
|
|
214
218
|
zigbee: this.config.zigbeeMaxMinutes,
|
|
@@ -447,8 +451,8 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
447
451
|
// device updates
|
|
448
452
|
case deviceData.UpdateDP:
|
|
449
453
|
if (state.val !== deviceData.Upgradable) {
|
|
450
|
-
deviceData.Upgradable = state.val;
|
|
451
|
-
if (
|
|
454
|
+
deviceData.Upgradable = await this.checkDeviceUpdate(deviceData.adapterID, state.val);
|
|
455
|
+
if (deviceData.Upgradable === true) {
|
|
452
456
|
if (this.config.checkSendDeviceUpgrade && !this.blacklistNotify.includes(deviceData.Path)) {
|
|
453
457
|
await this.sendStateNotifications('updateDevice', device);
|
|
454
458
|
}
|
|
@@ -1001,18 +1005,24 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
1001
1005
|
/*=============================================
|
|
1002
1006
|
= Get update data =
|
|
1003
1007
|
=============================================*/
|
|
1004
|
-
const deviceUpdateDP = currDeviceString + this.selAdapter[i].upgrade;
|
|
1005
1008
|
let isUpgradable;
|
|
1009
|
+
let deviceUpdateDP;
|
|
1006
1010
|
|
|
1007
1011
|
if (this.config.checkSendDeviceUpgrade) {
|
|
1008
|
-
|
|
1012
|
+
deviceUpdateDP = currDeviceString + this.selAdapter[i].upgrade;
|
|
1013
|
+
let deviceUpdateSelector = await this.getInitValue(deviceUpdateDP);
|
|
1014
|
+
if (deviceUpdateSelector === undefined) {
|
|
1015
|
+
deviceUpdateDP = shortCurrDeviceString + this.selAdapter[i].upgrade;
|
|
1016
|
+
deviceUpdateSelector = await this.getInitValue(deviceUpdateDP);
|
|
1017
|
+
if (deviceUpdateSelector === undefined) {
|
|
1018
|
+
const shortShortCurrDeviceString = shortCurrDeviceString.slice(0, shortCurrDeviceString.lastIndexOf('.') + 1 - 1);
|
|
1019
|
+
deviceUpdateDP = shortShortCurrDeviceString + this.selAdapter[i].upgrade;
|
|
1020
|
+
deviceUpdateSelector = await this.getInitValue(deviceUpdateDP);
|
|
1021
|
+
}
|
|
1022
|
+
}
|
|
1009
1023
|
|
|
1010
1024
|
if (deviceUpdateSelector !== undefined) {
|
|
1011
|
-
|
|
1012
|
-
isUpgradable = true;
|
|
1013
|
-
} else if (!deviceUpdateSelector) {
|
|
1014
|
-
isUpgradable = false;
|
|
1015
|
-
}
|
|
1025
|
+
isUpgradable = await this.checkDeviceUpdate(adapterID, deviceUpdateSelector);
|
|
1016
1026
|
} else {
|
|
1017
1027
|
isUpgradable = ' - ';
|
|
1018
1028
|
}
|
|
@@ -1107,6 +1117,8 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
1107
1117
|
case 'wled':
|
|
1108
1118
|
case 'mqttNuki':
|
|
1109
1119
|
case 'loqedSmartLock':
|
|
1120
|
+
case 'viessmann':
|
|
1121
|
+
case 'homekitController':
|
|
1110
1122
|
if (shortDeviceObject && typeof shortDeviceObject === 'object') {
|
|
1111
1123
|
deviceName = shortDeviceObject.common.name;
|
|
1112
1124
|
}
|
|
@@ -1441,21 +1453,21 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
1441
1453
|
if (this.configMaxMinutes[adapterID] <= 0) {
|
|
1442
1454
|
if (deviceUnreachState === 1) {
|
|
1443
1455
|
deviceState = 'Offline'; //set online state to offline
|
|
1444
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1456
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1445
1457
|
}
|
|
1446
1458
|
} else if (lastDeviceUnreachStateChange > this.configMaxMinutes[adapterID] && deviceUnreachState === 1) {
|
|
1447
1459
|
deviceState = 'Offline'; //set online state to offline
|
|
1448
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1460
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1449
1461
|
}
|
|
1450
1462
|
break;
|
|
1451
1463
|
case 'proxmox':
|
|
1452
1464
|
if (this.configMaxMinutes[adapterID] <= 0) {
|
|
1453
1465
|
if (deviceUnreachState !== 'running' && deviceUnreachState !== 'online') {
|
|
1454
|
-
deviceState = 'Offline'; //set online state to offline
|
|
1466
|
+
if (linkQuality !== ' - ') deviceState = 'Offline'; //set online state to offline
|
|
1455
1467
|
}
|
|
1456
1468
|
} else if (lastDeviceUnreachStateChange > this.configMaxMinutes[adapterID] && deviceUnreachState !== 'running' && deviceUnreachState !== 'online') {
|
|
1457
1469
|
deviceState = 'Offline'; //set online state to offline
|
|
1458
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1470
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1459
1471
|
}
|
|
1460
1472
|
break;
|
|
1461
1473
|
case 'hmiP':
|
|
@@ -1463,11 +1475,11 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
1463
1475
|
if (this.configMaxMinutes[adapterID] <= 0) {
|
|
1464
1476
|
if (deviceUnreachState) {
|
|
1465
1477
|
deviceState = 'Offline'; //set online state to offline
|
|
1466
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1478
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1467
1479
|
}
|
|
1468
1480
|
} else if (lastDeviceUnreachStateChange > this.configMaxMinutes[adapterID] && deviceUnreachState) {
|
|
1469
1481
|
deviceState = 'Offline'; //set online state to offline
|
|
1470
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1482
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1471
1483
|
}
|
|
1472
1484
|
break;
|
|
1473
1485
|
case 'apcups':
|
|
@@ -1483,22 +1495,22 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
1483
1495
|
if (this.configMaxMinutes[adapterID] <= 0) {
|
|
1484
1496
|
if (!deviceUnreachState) {
|
|
1485
1497
|
deviceState = 'Offline'; //set online state to offline
|
|
1486
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1498
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1487
1499
|
}
|
|
1488
1500
|
} else if (!deviceUnreachState && lastDeviceUnreachStateChange > this.configMaxMinutes[adapterID]) {
|
|
1489
1501
|
deviceState = 'Offline'; //set online state to offline
|
|
1490
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1502
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1491
1503
|
}
|
|
1492
1504
|
break;
|
|
1493
1505
|
case 'mqttClientZigbee2Mqtt':
|
|
1494
1506
|
if (this.configMaxMinutes[adapterID] <= 0) {
|
|
1495
1507
|
if (deviceUnreachState !== 'online') {
|
|
1496
1508
|
deviceState = 'Offline'; //set online state to offline
|
|
1497
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1509
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1498
1510
|
}
|
|
1499
1511
|
} else if (deviceUnreachState !== 'online' && lastDeviceUnreachStateChange > this.configMaxMinutes[adapterID]) {
|
|
1500
1512
|
deviceState = 'Offline'; //set online state to offline
|
|
1501
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1513
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1502
1514
|
}
|
|
1503
1515
|
break;
|
|
1504
1516
|
case 'mihome':
|
|
@@ -1506,21 +1518,21 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
1506
1518
|
if (this.configMaxMinutes[adapterID] <= 0) {
|
|
1507
1519
|
if (!deviceUnreachState) {
|
|
1508
1520
|
deviceState = 'Offline'; //set online state to offline
|
|
1509
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1521
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1510
1522
|
}
|
|
1511
1523
|
} else if (lastContact && lastContact > this.configMaxMinutes[adapterID]) {
|
|
1512
1524
|
deviceState = 'Offline'; //set online state to offline
|
|
1513
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1525
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1514
1526
|
}
|
|
1515
1527
|
} else {
|
|
1516
1528
|
if (this.config.mihomeMaxMinutes <= 0) {
|
|
1517
1529
|
if (this.configMaxMinutes[adapterID] <= 0) {
|
|
1518
1530
|
deviceState = 'Offline'; //set online state to offline
|
|
1519
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1531
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1520
1532
|
}
|
|
1521
1533
|
} else if (lastContact && lastContact > this.configMaxMinutes[adapterID]) {
|
|
1522
1534
|
deviceState = 'Offline'; //set online state to offline
|
|
1523
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1535
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1524
1536
|
}
|
|
1525
1537
|
}
|
|
1526
1538
|
break;
|
|
@@ -1528,22 +1540,22 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
1528
1540
|
if (this.configMaxMinutes[adapterID] <= 0) {
|
|
1529
1541
|
if (deviceUnreachState === 'OFFLINE') {
|
|
1530
1542
|
deviceState = 'Offline'; //set online state to offline
|
|
1531
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1543
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1532
1544
|
}
|
|
1533
1545
|
} else if (deviceUnreachState === 'OFFLINE' && lastDeviceUnreachStateChange > this.configMaxMinutes[adapterID]) {
|
|
1534
1546
|
deviceState = 'Offline'; //set online state to offline
|
|
1535
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1547
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1536
1548
|
}
|
|
1537
1549
|
break;
|
|
1538
1550
|
default:
|
|
1539
1551
|
if (this.configMaxMinutes[adapterID] <= 0) {
|
|
1540
1552
|
if (!deviceUnreachState) {
|
|
1541
1553
|
deviceState = 'Offline'; //set online state to offline
|
|
1542
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1554
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1543
1555
|
}
|
|
1544
1556
|
} else if (lastContact && lastContact > this.configMaxMinutes[adapterID]) {
|
|
1545
1557
|
deviceState = 'Offline'; //set online state to offline
|
|
1546
|
-
linkQuality = '0%'; // set linkQuality to nothing
|
|
1558
|
+
if (linkQuality !== ' - ') linkQuality = '0%'; // set linkQuality to nothing
|
|
1547
1559
|
}
|
|
1548
1560
|
break;
|
|
1549
1561
|
}
|
|
@@ -1583,8 +1595,35 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
1583
1595
|
}
|
|
1584
1596
|
}
|
|
1585
1597
|
|
|
1598
|
+
/**
|
|
1599
|
+
* @param {any} adapterID
|
|
1600
|
+
* @param {string | number | boolean | null} deviceUpdateSelector
|
|
1601
|
+
*/
|
|
1602
|
+
async checkDeviceUpdate(adapterID, deviceUpdateSelector) {
|
|
1603
|
+
let isUpgradable;
|
|
1604
|
+
|
|
1605
|
+
switch (adapterID) {
|
|
1606
|
+
case 'hmiP':
|
|
1607
|
+
if (deviceUpdateSelector === 'UPDATE_AVAILABLE') {
|
|
1608
|
+
isUpgradable = true;
|
|
1609
|
+
} else {
|
|
1610
|
+
isUpgradable = false;
|
|
1611
|
+
}
|
|
1612
|
+
break;
|
|
1613
|
+
default:
|
|
1614
|
+
if (deviceUpdateSelector) {
|
|
1615
|
+
isUpgradable = true;
|
|
1616
|
+
} else if (!deviceUpdateSelector) {
|
|
1617
|
+
isUpgradable = false;
|
|
1618
|
+
}
|
|
1619
|
+
}
|
|
1620
|
+
|
|
1621
|
+
return isUpgradable;
|
|
1622
|
+
}
|
|
1623
|
+
|
|
1586
1624
|
/**
|
|
1587
1625
|
* Create Lists
|
|
1626
|
+
* @param {string | undefined} [adptName]
|
|
1588
1627
|
*/
|
|
1589
1628
|
async createLists(adptName) {
|
|
1590
1629
|
this.linkQualityDevices = [];
|
|
@@ -3057,10 +3096,22 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
3057
3096
|
}
|
|
3058
3097
|
}
|
|
3059
3098
|
if (list.length === 0) return;
|
|
3060
|
-
|
|
3099
|
+
|
|
3100
|
+
switch (checkDays.length) {
|
|
3101
|
+
case 1:
|
|
3102
|
+
message = `Wöchentliche Übersicht über Geräte mit niedrigen Batteriezuständen: ${list}`;
|
|
3103
|
+
break;
|
|
3104
|
+
case 7:
|
|
3105
|
+
message = `Tägliche Übersicht über Geräte mit niedrigen Batteriezuständen: ${list}`;
|
|
3106
|
+
break;
|
|
3107
|
+
default:
|
|
3108
|
+
message = `Übersicht über Geräte mit niedrigen Batteriezuständen: ${list}`;
|
|
3109
|
+
break;
|
|
3110
|
+
}
|
|
3061
3111
|
setMessage(message);
|
|
3062
3112
|
});
|
|
3063
3113
|
break;
|
|
3114
|
+
|
|
3064
3115
|
case 'offlineDevices':
|
|
3065
3116
|
// push the selected days in list
|
|
3066
3117
|
if (this.config.checkOfflineMonday) checkDays.push(1);
|
|
@@ -3093,10 +3144,22 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
3093
3144
|
}
|
|
3094
3145
|
|
|
3095
3146
|
if (list.length === 0) return;
|
|
3096
|
-
|
|
3147
|
+
|
|
3148
|
+
switch (checkDays.length) {
|
|
3149
|
+
case 1:
|
|
3150
|
+
message = `Wöchentliche Übersicht über offline Geräte: ${list}`;
|
|
3151
|
+
break;
|
|
3152
|
+
case 7:
|
|
3153
|
+
message = `Tägliche Übersicht über offline Geräte: ${list}`;
|
|
3154
|
+
break;
|
|
3155
|
+
default:
|
|
3156
|
+
message = `Übersicht über offline Geräte: ${list}`;
|
|
3157
|
+
break;
|
|
3158
|
+
}
|
|
3097
3159
|
setMessage(message);
|
|
3098
3160
|
});
|
|
3099
3161
|
break;
|
|
3162
|
+
|
|
3100
3163
|
case 'updateDevices':
|
|
3101
3164
|
// push the selected days in list
|
|
3102
3165
|
if (this.config.checkUpgradeMonday) checkDays.push(1);
|
|
@@ -3128,10 +3191,22 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
3128
3191
|
}
|
|
3129
3192
|
}
|
|
3130
3193
|
if (list.length === 0) return;
|
|
3131
|
-
|
|
3194
|
+
|
|
3195
|
+
switch (checkDays.length) {
|
|
3196
|
+
case 1:
|
|
3197
|
+
message = `Wöchentliche Übersicht über verfügbare Geräte Updates: ${list}`;
|
|
3198
|
+
break;
|
|
3199
|
+
case 7:
|
|
3200
|
+
message = `Tägliche Übersicht über verfügbare Geräte Updates: ${list}`;
|
|
3201
|
+
break;
|
|
3202
|
+
default:
|
|
3203
|
+
message = `Übersicht über verfügbare Geräte Updates: ${list}`;
|
|
3204
|
+
break;
|
|
3205
|
+
}
|
|
3132
3206
|
setMessage(message);
|
|
3133
3207
|
});
|
|
3134
3208
|
break;
|
|
3209
|
+
|
|
3135
3210
|
case 'updateAdapter':
|
|
3136
3211
|
// push the selected days in list
|
|
3137
3212
|
if (this.config.checkAdapterUpdateMonday) checkDays.push(1);
|
|
@@ -3158,10 +3233,22 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
3158
3233
|
list = `${list}\n${id.Adapter}: v${id['Available Version']}`;
|
|
3159
3234
|
}
|
|
3160
3235
|
if (list.length === 0) return;
|
|
3161
|
-
|
|
3236
|
+
|
|
3237
|
+
switch (checkDays.length) {
|
|
3238
|
+
case 1:
|
|
3239
|
+
message = `Wöchentliche Übersicht über verfügbare Adapter Updates: ${list}`;
|
|
3240
|
+
break;
|
|
3241
|
+
case 7:
|
|
3242
|
+
message = `Tägliche Übersicht über verfügbare Adapter Updates: ${list}`;
|
|
3243
|
+
break;
|
|
3244
|
+
default:
|
|
3245
|
+
message = `Übersicht über verfügbare Adapter Updates: ${list}`;
|
|
3246
|
+
break;
|
|
3247
|
+
}
|
|
3162
3248
|
setMessage(message);
|
|
3163
3249
|
});
|
|
3164
3250
|
break;
|
|
3251
|
+
|
|
3165
3252
|
case 'errorInstance':
|
|
3166
3253
|
// push the selected days in list
|
|
3167
3254
|
if (this.config.checkFailedInstancesMonday) checkDays.push(1);
|
|
@@ -3212,13 +3299,24 @@ class DeviceWatcher extends utils.Adapter {
|
|
|
3212
3299
|
cron = '5 ' + time[1] + ' ' + time[0] + ' * * ' + checkDays;
|
|
3213
3300
|
schedule.scheduleJob(cron, () => {
|
|
3214
3301
|
list = '';
|
|
3215
|
-
|
|
3216
3302
|
for (const id of this.listDeactivatedInstances) {
|
|
3217
|
-
if (this.blacklistInstancesNotify.includes(id)) continue;
|
|
3218
|
-
list = `${list}\n${id}`;
|
|
3303
|
+
if (this.blacklistInstancesNotify.includes(id.Instance)) continue;
|
|
3304
|
+
list = `${list}\n${id.Instance}`;
|
|
3219
3305
|
}
|
|
3306
|
+
|
|
3220
3307
|
if (list.length === 0) return;
|
|
3221
|
-
|
|
3308
|
+
|
|
3309
|
+
switch (checkDays.length) {
|
|
3310
|
+
case 1:
|
|
3311
|
+
message = `Wöchentliche Übersicht über deaktivierte Instanzen: ${list}`;
|
|
3312
|
+
break;
|
|
3313
|
+
case 7:
|
|
3314
|
+
message = `Tägliche Übersicht über deaktivierte Instanzen: ${list}`;
|
|
3315
|
+
break;
|
|
3316
|
+
default:
|
|
3317
|
+
message = `Übersicht über deaktivierte Instanzen: ${list}`;
|
|
3318
|
+
break;
|
|
3319
|
+
}
|
|
3222
3320
|
setMessage(message);
|
|
3223
3321
|
});
|
|
3224
3322
|
break;
|