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 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.19",
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",
@@ -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
- incStatsQueue[incStatsQueue.length] = messageObj;
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 'bridge/config':
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:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.zigbee2mqtt",
3
- "version": "3.0.19",
3
+ "version": "3.0.21",
4
4
  "description": "Zigbee2MQTT adapter for ioBroker",
5
5
  "author": {
6
6
  "name": "Dennis Rathjen and Arthur Rupp",