iobroker.zigbee2mqtt 3.0.20 → 3.1.1

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,18 @@ 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.1.1 (2026-04-21)
26
+ * (arteck) fix connection handling
27
+
28
+ ### 3.1.0 (2026-04-20)
29
+ * (arteck) refactoring
30
+
31
+ ### 3.0.22 (2026-04-12)
32
+ * (arteck) Dependencies have been updated
33
+
34
+ ### 3.0.21 (2026-01-29)
35
+ * (arteck) add coordinator status info
36
+
25
37
  ### 3.0.20 (2026-01-29)
26
38
  * (arteck) check payload if undefined
27
39
 
@@ -560,6 +560,43 @@
560
560
  "lg": 12,
561
561
  "xl": 12,
562
562
  "newLine": true
563
+ },
564
+ "spacerDeleteStates": {
565
+ "type": "staticText",
566
+ "text": "",
567
+ "xs": 12,
568
+ "newLine": true
569
+ },
570
+ "headerDeleteStates": {
571
+ "type": "header",
572
+ "text": "coming soon ",
573
+ "size": 4,
574
+ "newLine": true
575
+ },
576
+ "buttonDeleteOldStates": {
577
+ "type": "sendTo",
578
+ "command": "deleteOldStates",
579
+ "label": "Delete old / unused states",
580
+ "variant": "contained",
581
+ "color": "secondary",
582
+ "icon": "delete",
583
+ "disabled": "1 === 1",
584
+ "xs": 12,
585
+ "sm": 6,
586
+ "md": 4,
587
+ "lg": 3,
588
+ "xl": 3,
589
+ "newLine": true
590
+ },
591
+ "_deleteOldStatesResult": {
592
+ "type": "staticText",
593
+ "text": "",
594
+ "xs": 12,
595
+ "newLine": false,
596
+ "style": {
597
+ "marginTop": 8,
598
+ "fontStyle": "italic"
599
+ }
563
600
  }
564
601
  }
565
602
  }
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "zigbee2mqtt",
4
- "version": "3.0.20",
4
+ "version": "3.1.1",
5
5
  "news": {
6
+ "3.1.1": {
7
+ "en": "fix connection handling",
8
+ "de": "befestigungstechnik",
9
+ "ru": "фиксировать связь",
10
+ "pt": "corrigir o tratamento da ligação",
11
+ "nl": "fix verbinding handling",
12
+ "fr": "fixer la manipulation de la connexion",
13
+ "it": "gestione del collegamento",
14
+ "es": "corrección de conexión",
15
+ "pl": "naprawić obsługę połączenia",
16
+ "uk": "кріплення з'єднання",
17
+ "zh-cn": "固定连接处理"
18
+ },
19
+ "3.0.21": {
20
+ "en": "add coordinator status info",
21
+ "de": "koordinator statusinfo hinzufügen",
22
+ "ru": "добавить информацию о статусе координатора",
23
+ "pt": "adicionar informações sobre o estado do coordenador",
24
+ "nl": "coordinator status info toevoegen",
25
+ "fr": "ajouter le statut du coordonnateur info",
26
+ "it": "aggiungere coordinate status info",
27
+ "es": "añadir información sobre el estado de coordinador",
28
+ "pl": "dodaj informacje o statusie koordynatora",
29
+ "uk": "додати інформацію про статус координатора",
30
+ "zh-cn": "添加协调员状态信息"
31
+ },
6
32
  "3.0.20": {
7
33
  "en": "check payload if undefined",
8
34
  "de": "prüfen sie die nutzlast",
@@ -41,58 +67,6 @@
41
67
  "pl": "typo",
42
68
  "uk": "типи",
43
69
  "zh-cn": "类型"
44
- },
45
- "3.0.17": {
46
- "en": "typo",
47
- "de": "typo",
48
- "ru": "опечатка",
49
- "pt": "erro de digitação",
50
- "nl": "type",
51
- "fr": "typo",
52
- "it": "tipo",
53
- "es": "typo",
54
- "pl": "typo",
55
- "uk": "типи",
56
- "zh-cn": "类型"
57
- },
58
- "3.0.16": {
59
- "en": "fix action dp",
60
- "de": "funktion dp",
61
- "ru": "исправить действие dp",
62
- "pt": "corrigir ação dp",
63
- "nl": "fix actie dp",
64
- "fr": "corriger l'action dp",
65
- "it": "fix azione dp",
66
- "es": "arreglar acción dp",
67
- "pl": "fix action dp",
68
- "uk": "фіксувати дію dp",
69
- "zh-cn": "固定动作 dp"
70
- },
71
- "3.0.15": {
72
- "en": "update",
73
- "de": "aktualisierung",
74
- "ru": "обновление",
75
- "pt": "atualizar",
76
- "nl": "bijwerken",
77
- "fr": "mise à jour",
78
- "it": "aggiornamento",
79
- "es": "actualización",
80
- "pl": "aktualizacja",
81
- "uk": "оновлення",
82
- "zh-cn": "更新"
83
- },
84
- "3.0.14": {
85
- "en": "back to sharp 0.33.5",
86
- "de": "zurück zu sharp 0,33,5",
87
- "ru": "вернуться к sharp 0.33.5",
88
- "pt": "voltar ao valor nítido 0,33,5",
89
- "nl": "terug naar sharp 0,335",
90
- "fr": "retour à la version 0.33.5",
91
- "it": "torna a 0,33,5 tagliente",
92
- "es": "de nuevo al 0,33,5",
93
- "pl": "powrót do sharp 0,33,5",
94
- "uk": "назад до sharp 0.33.5",
95
- "zh-cn": "回到清晰的 0.33.5"
96
70
  }
97
71
  },
98
72
  "messages": [
@@ -220,12 +194,12 @@
220
194
  },
221
195
  "dependencies": [
222
196
  {
223
- "js-controller": ">= 5.0.19"
197
+ "js-controller": ">= 6.0.11"
224
198
  }
225
199
  ],
226
200
  "globalDependencies": [
227
201
  {
228
- "admin": ">=7.4.10"
202
+ "admin": ">=7.6.20"
229
203
  }
230
204
  ]
231
205
  },
@@ -362,6 +336,19 @@
362
336
  },
363
337
  "native": {}
364
338
  },
339
+ {
340
+ "_id": "info.coordinator_status",
341
+ "type": "state",
342
+ "common": {
343
+ "name": "Coordinator status",
344
+ "type": "string",
345
+ "role": "state",
346
+ "read": true,
347
+ "write": false,
348
+ "def": ""
349
+ },
350
+ "native": {}
351
+ },
365
352
  {
366
353
  "_id": "",
367
354
  "type": "meta",
package/lib/check.js CHANGED
@@ -5,28 +5,36 @@
5
5
  * @param version
6
6
  */
7
7
  function checkConfig(config, log, version) {
8
+ if (!config || !log) {
9
+ return;
10
+ }
11
+
12
+ const advanced = config.advanced || {};
13
+ const deviceOptions = config.device_options || {};
14
+
8
15
  const checkAPIOptions = {
9
- legacy_api_enabled: config.advanced.legacy_api != false,
10
- legacy_availability_payload_enabled: config.advanced.legacy_availability_payload != false,
11
- device_legacy_enabled: config.device_options.legacy != false
16
+ legacy_api_enabled: advanced.legacy_api !== false,
17
+ legacy_availability_payload_enabled: advanced.legacy_availability_payload !== false,
18
+ device_legacy_enabled: deviceOptions.legacy !== false,
12
19
  };
13
20
 
14
21
  const checkAPIOptionsOutput = {
15
- payload_contains_not_json: config.advanced.output != 'attribute_and_json' && config.advanced.output != 'json'
22
+ payload_contains_not_json: advanced.output !== 'attribute_and_json' && advanced.output !== 'json',
16
23
  };
17
24
 
18
- if (version.startsWith('1.')) { // wird in version 2.x immer auf false gesetzt sein
19
- if (Object.values(checkAPIOptions).filter((x) => x == true).length > 0) {
25
+ // Fix: version kann undefined/null sein (ältere Z2M-Versionen)
26
+ if (version && version.startsWith('1.')) {
27
+ if (Object.values(checkAPIOptions).filter((x) => x === true).length > 0) {
20
28
  log.error('===================================================');
21
29
  log.error('===================================================');
22
- if (checkAPIOptions.legacy_api_enabled == true) {
30
+ if (checkAPIOptions.legacy_api_enabled === true) {
23
31
  log.error('Legacy api is activated, so the adapter can not work correctly!!!');
24
32
  log.error('Please add the following lines to your Zigbee2MQTT configuration.yaml:');
25
33
  log.error('advanced:');
26
34
  log.error(' legacy_api: false');
27
35
  log.error('');
28
36
  }
29
- if (checkAPIOptions.legacy_availability_payload_enabled == true) {
37
+ if (checkAPIOptions.legacy_availability_payload_enabled === true) {
30
38
  log.error(
31
39
  'Legacy Availability Payload is activated, thus the adapter cannot represent the availability of the devices!!!'
32
40
  );
@@ -35,7 +43,7 @@ function checkConfig(config, log, version) {
35
43
  log.error('legacy_availability_payload: false');
36
44
  log.error('');
37
45
  }
38
- if (checkAPIOptions.device_legacy_enabled == true) {
46
+ if (checkAPIOptions.device_legacy_enabled === true) {
39
47
  log.error(
40
48
  'Device Legacy Payload is activated, therefore the adapter may process the states of the devices correctly!!!'
41
49
  );
@@ -46,8 +54,8 @@ function checkConfig(config, log, version) {
46
54
  log.error('===================================================');
47
55
  }
48
56
  }
49
- if (Object.values(checkAPIOptionsOutput).filter((x) => x == true).length > 0) {
50
- if (checkAPIOptions.payload_contains_not_json == true ) {
57
+ if (Object.values(checkAPIOptionsOutput).filter((x) => x === true).length > 0) {
58
+ if (checkAPIOptions.payload_contains_not_json === true ) {
51
59
  log.error('===================================================');
52
60
  log.error(
53
61
  'MQTT output type must "attribute_and_json" or "json" , therefore the adapter may process the states of the devices correctly!!!'