iobroker.zigbee2mqtt 3.0.19 → 3.0.21
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/io-package.json +40 -27
- package/lib/statesController.js +5 -2
- package/main.js +11 -16
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,6 +22,12 @@ This adapter allows to control the data points of the devices of a Zigbee2MQTT i
|
|
|
22
22
|
[Adapter Documentation](https://github.com/arteck/ioBroker.zigbee2mqtt/blob/main/docs/wiki.md)
|
|
23
23
|
|
|
24
24
|
## Changelog
|
|
25
|
+
### 3.0.21 (2026-01-29)
|
|
26
|
+
* (arteck) add coordinator status info
|
|
27
|
+
|
|
28
|
+
### 3.0.20 (2026-01-29)
|
|
29
|
+
* (arteck) check payload if undefined
|
|
30
|
+
|
|
25
31
|
### 3.0.19 (2026-01-28)
|
|
26
32
|
* (arteck) modify action dp
|
|
27
33
|
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "zigbee2mqtt",
|
|
4
|
-
"version": "3.0.
|
|
4
|
+
"version": "3.0.21",
|
|
5
5
|
"news": {
|
|
6
|
+
"3.0.21": {
|
|
7
|
+
"en": "add coordinator status info",
|
|
8
|
+
"de": "koordinator statusinfo hinzufügen",
|
|
9
|
+
"ru": "добавить информацию о статусе координатора",
|
|
10
|
+
"pt": "adicionar informações sobre o estado do coordenador",
|
|
11
|
+
"nl": "coordinator status info toevoegen",
|
|
12
|
+
"fr": "ajouter le statut du coordonnateur info",
|
|
13
|
+
"it": "aggiungere coordinate status info",
|
|
14
|
+
"es": "añadir información sobre el estado de coordinador",
|
|
15
|
+
"pl": "dodaj informacje o statusie koordynatora",
|
|
16
|
+
"uk": "додати інформацію про статус координатора",
|
|
17
|
+
"zh-cn": "添加协调员状态信息"
|
|
18
|
+
},
|
|
19
|
+
"3.0.20": {
|
|
20
|
+
"en": "check payload if undefined",
|
|
21
|
+
"de": "prüfen sie die nutzlast",
|
|
22
|
+
"ru": "проверьте полезную нагрузку, если не определено",
|
|
23
|
+
"pt": "verificar a carga útil se não for definida",
|
|
24
|
+
"nl": "payload controleren indien niet gedefinieerd",
|
|
25
|
+
"fr": "vérifier la charge utile si elle n'est pas définie",
|
|
26
|
+
"it": "controllare il carico utile se non definito",
|
|
27
|
+
"es": "check payload si no está definido",
|
|
28
|
+
"pl": "sprawdzanie ładunku użytecznego, jeżeli nie określono",
|
|
29
|
+
"uk": "перевірити навантаження, якщо не визначено",
|
|
30
|
+
"zh-cn": "检查未定义的有效载荷"
|
|
31
|
+
},
|
|
6
32
|
"3.0.19": {
|
|
7
33
|
"en": "modify action dp",
|
|
8
34
|
"de": "änderung der aktion dp",
|
|
@@ -67,32 +93,6 @@
|
|
|
67
93
|
"pl": "aktualizacja",
|
|
68
94
|
"uk": "оновлення",
|
|
69
95
|
"zh-cn": "更新"
|
|
70
|
-
},
|
|
71
|
-
"3.0.14": {
|
|
72
|
-
"en": "back to sharp 0.33.5",
|
|
73
|
-
"de": "zurück zu sharp 0,33,5",
|
|
74
|
-
"ru": "вернуться к sharp 0.33.5",
|
|
75
|
-
"pt": "voltar ao valor nítido 0,33,5",
|
|
76
|
-
"nl": "terug naar sharp 0,335",
|
|
77
|
-
"fr": "retour à la version 0.33.5",
|
|
78
|
-
"it": "torna a 0,33,5 tagliente",
|
|
79
|
-
"es": "de nuevo al 0,33,5",
|
|
80
|
-
"pl": "powrót do sharp 0,33,5",
|
|
81
|
-
"uk": "назад до sharp 0.33.5",
|
|
82
|
-
"zh-cn": "回到清晰的 0.33.5"
|
|
83
|
-
},
|
|
84
|
-
"3.0.13": {
|
|
85
|
-
"en": "add action dp",
|
|
86
|
-
"de": "aktion dp hinzufügen",
|
|
87
|
-
"ru": "добавить действие dp",
|
|
88
|
-
"pt": "adicionar ação dp",
|
|
89
|
-
"nl": "actie dp toevoegen",
|
|
90
|
-
"fr": "ajouter action dp",
|
|
91
|
-
"it": "aggiungere azione",
|
|
92
|
-
"es": "añadir acción dp",
|
|
93
|
-
"pl": "dodaj działanie dp",
|
|
94
|
-
"uk": "додати дію dp",
|
|
95
|
-
"zh-cn": "添加动作 dp"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"messages": [
|
|
@@ -362,6 +362,19 @@
|
|
|
362
362
|
},
|
|
363
363
|
"native": {}
|
|
364
364
|
},
|
|
365
|
+
{
|
|
366
|
+
"_id": "info.coordinator_status",
|
|
367
|
+
"type": "state",
|
|
368
|
+
"common": {
|
|
369
|
+
"name": "Coordinator status",
|
|
370
|
+
"type": "string",
|
|
371
|
+
"role": "state",
|
|
372
|
+
"read": true,
|
|
373
|
+
"write": false,
|
|
374
|
+
"def": ""
|
|
375
|
+
},
|
|
376
|
+
"native": {}
|
|
377
|
+
},
|
|
365
378
|
{
|
|
366
379
|
"_id": "",
|
|
367
380
|
"type": "meta",
|
package/lib/statesController.js
CHANGED
|
@@ -28,7 +28,7 @@ class StatesController {
|
|
|
28
28
|
*/
|
|
29
29
|
processDeviceMessage(messageObj) {
|
|
30
30
|
// Is payload present?
|
|
31
|
-
if (messageObj.payload == '') {
|
|
31
|
+
if (messageObj.payload == ''|| messageObj.payload == undefined || messageObj.payload == null) {
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -40,7 +40,10 @@ class StatesController {
|
|
|
40
40
|
this.adapter.log.error(error);
|
|
41
41
|
}
|
|
42
42
|
} else {
|
|
43
|
-
|
|
43
|
+
// incStatsQueue[incStatsQueue.length] = messageObj;
|
|
44
|
+
if (!incStatsQueue.some((x) => x && x.topic === messageObj.topic)) {
|
|
45
|
+
incStatsQueue.push(messageObj);
|
|
46
|
+
}
|
|
44
47
|
this.adapter.log.debug(`Device: ${messageObj.topic} not found, queue state in incStatsQueue!`);
|
|
45
48
|
}
|
|
46
49
|
}
|
package/main.js
CHANGED
|
@@ -191,7 +191,8 @@ class Zigbee2mqtt extends core.Adapter {
|
|
|
191
191
|
const messageObj = JSON.parse(message);
|
|
192
192
|
|
|
193
193
|
switch (messageObj.topic) {
|
|
194
|
-
case '
|
|
194
|
+
case 'Coordinator/availability':
|
|
195
|
+
this.setStateChanged('info.coordinator_status', messageObj.payload.state, true);
|
|
195
196
|
break;
|
|
196
197
|
case 'bridge/info':
|
|
197
198
|
if (showInfo) {
|
|
@@ -219,37 +220,31 @@ class Zigbee2mqtt extends core.Adapter {
|
|
|
219
220
|
await statesController.subscribeWritableStates();
|
|
220
221
|
statesController.processQueue();
|
|
221
222
|
break;
|
|
222
|
-
case 'bridge/event':
|
|
223
|
-
break;
|
|
224
223
|
case 'bridge/response/coordinator_check':
|
|
225
224
|
deviceController.processCoordinatorCheck(messageObj.payload);
|
|
226
225
|
break;
|
|
227
|
-
case 'bridge/response/device/remove':
|
|
228
|
-
break;
|
|
229
|
-
case 'bridge/response/device/options':
|
|
230
|
-
break;
|
|
231
|
-
case 'bridge/response/permit_join':
|
|
232
|
-
break;
|
|
233
|
-
case 'bridge/extensions':
|
|
234
|
-
break;
|
|
235
226
|
case 'bridge/logging':
|
|
236
227
|
if (this.config.proxyZ2MLogs == true) {
|
|
237
228
|
z2mController.proxyZ2MLogs(messageObj);
|
|
238
229
|
}
|
|
239
230
|
break;
|
|
240
|
-
case 'bridge/response/device/configure':
|
|
241
|
-
break;
|
|
242
231
|
case 'bridge/response/device/rename':
|
|
243
232
|
await deviceController.renameDeviceInCache(messageObj);
|
|
244
233
|
await deviceController.createOrUpdateDevices();
|
|
245
234
|
statesController.processQueue();
|
|
246
235
|
break;
|
|
236
|
+
case 'bridge/config':
|
|
237
|
+
case 'bridge/health':
|
|
238
|
+
case 'bridge/definitions':
|
|
239
|
+
case 'bridge/event':
|
|
240
|
+
case 'bridge/extensions':
|
|
241
|
+
case 'bridge/response/device/configure':
|
|
242
|
+
case 'bridge/response/device/remove':
|
|
243
|
+
case 'bridge/response/device/options':
|
|
244
|
+
case 'bridge/response/permit_join':
|
|
247
245
|
case 'bridge/response/networkmap':
|
|
248
|
-
break;
|
|
249
246
|
case 'bridge/response/touchlink/scan':
|
|
250
|
-
break;
|
|
251
247
|
case 'bridge/response/touchlink/identify':
|
|
252
|
-
break;
|
|
253
248
|
case 'bridge/response/touchlink/factory_reset':
|
|
254
249
|
break;
|
|
255
250
|
default:
|