iobroker.zigbee 3.3.3 → 3.3.5

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
@@ -141,6 +141,16 @@ You can thank the authors by these links:
141
141
 
142
142
  -----------------------------------------------------------------------------------------------------
143
143
  ## Changelog
144
+ ### 3.3.5 (2026-01-30)
145
+ * Bugfix - Error on startup from onEvent
146
+ * fix: send_payload read with array of cluster
147
+ *
148
+
149
+ ### 3.3.4 (2026-01-26)
150
+ * ZHC 25.112.0
151
+ * ZH 8.1.0
152
+ * Fix: Admin does not load com ports
153
+
144
154
  ### 3.3.3 (2026-01-11)
145
155
  * Fix crash bug
146
156
  * getter for composite states V1
package/admin/admin.js CHANGED
@@ -3181,7 +3181,7 @@ function getComPorts(onChange) {
3181
3181
  // timeout = setTimeout(function () {
3182
3182
  // getComPorts(onChange);
3183
3183
  // }, 2000);
3184
- sendToWrapper(namespace, 'listUart', null, function (list) {
3184
+ sendTo(namespace, 'listUart', null, function (list) {
3185
3185
  // if (timeout) {
3186
3186
  // clearTimeout(timeout);
3187
3187
  // timeout = null;
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "zigbee",
4
- "version": "3.3.3",
4
+ "version": "3.3.5",
5
5
  "news": {
6
+ "3.3.5": {
7
+ "en": "Bugfix - Error on startup from onEvent\nfix: send_payload read with array of cluster\n",
8
+ "de": "Bugfix - Fehler beim Start von onEvent\nfix: send_payload mit cluster-array gelesen\n",
9
+ "ru": "Bugfix - Ошибка при запуске с OnEvent\nисправить: send_payload read with array of cluster\n",
10
+ "pt": "Bugfix - Erro na inicialização do onEvent\ncorreção: send_payload lido com array de cluster\n",
11
+ "nl": "Bugfix - Fout bij opstarten van onEvent\nfix: send_payload gelezen met clusterreeks\n",
12
+ "fr": "Bugfix - Erreur au démarrage depuis onEvent\ncorrection : send_payload lu avec le tableau du cluster\n",
13
+ "it": "Bugfix - Errore all'avvio dall'evento\ncorrezione: send_payload letto con array di cluster\n",
14
+ "es": "Bugfix - Error en el inicio desde onEvent\nfix: send_payload read with array of cluster\n",
15
+ "pl": "Bugfix - Błąd podczas uruchamiania z onEvent\nfix: send _ payload read with array of klaster\n",
16
+ "uk": "Бугфікс - Помилка запуску від onEvent\nвиправити: send_payload читати з масивом кластера\n",
17
+ "zh-cn": "Bugfix - 从 Event 启动时出错\n固定: 随集群数组一起读取的发送_ 有效载荷\n"
18
+ },
19
+ "3.3.4": {
20
+ "en": "ZHC 25.112.0\nZH 8.1.0\nFix: Admin does not load com ports",
21
+ "de": "ZHC 25.112.0\nZH 8.1.0\nFix: Admin lädt keine Com-Ports",
22
+ "ru": "ZHC 25.112.0\nZH 8.1.0\nИсправление: Admin не загружает порты com",
23
+ "pt": "ZHC 25.112.0\nZH 8.1.0\nCorrigir: o administrador não carrega as portas com",
24
+ "nl": "ZHC 25.112,0\nZH 81,0\nFix: Beheerder laadt geen com-poorten",
25
+ "fr": "ZHC 25.112.0\nZH 8.1.0\nCorrection: Admin ne charge pas les ports com",
26
+ "it": "ZHC 25.112.0\nZH 8.1.0\nFisso: Admin non carica porte com",
27
+ "es": "ZHC 25.112.0\nZH 8.1.0\nFijación: Admin no carga puertos com",
28
+ "pl": "ZHC 25.112.0\nZH 8.1.0\nFix: Admin nie ładuje portów com",
29
+ "uk": "ЗХК 25.112.0\nЗХ 8.1.0\nВиправлення: Адміністратор не завантажує порти",
30
+ "zh-cn": "ZHC 25.112.0\nZH 8.1.0 电话\n修正: 管理员不装入 com 端口"
31
+ },
6
32
  "3.3.3": {
7
33
  "en": "Fix crash bug\ngetter for composite states V1\nzhc\n",
8
34
  "de": "Fehler behoben\ngetter für zusammengesetzte Zustände V1\nzh\n",
@@ -67,32 +93,6 @@
67
93
  "pl": "zmieniony setState for lasterror",
68
94
  "uk": "змінено setState for lasterror",
69
95
  "zh-cn": "更新的设置状态"
70
- },
71
- "3.2.4": {
72
- "en": "added missing state",
73
- "de": "fehlender zustand",
74
- "ru": "отсутствующее государство",
75
- "pt": "estado em falta adicionado",
76
- "nl": "ontbrekende status toevoegen",
77
- "fr": "état manquant ajouté",
78
- "it": "aggiunto stato mancante",
79
- "es": "estado desaparecido",
80
- "pl": "dodany brakujący stan",
81
- "uk": "додано відсутній стан",
82
- "zh-cn": "添加缺失状态"
83
- },
84
- "3.2.3": {
85
- "en": "Improvements on debug UI\nOption 'resend_states' to publish state values to device on reconnect\nImproved group card\nImproved group info\nModified coordinator card (2 sides)\nretry on error 25\nclear stashed error messages\nZHC 25.50.0 or newer",
86
- "de": "Verbesserungen bei debug UI\nOption 'resend_states' zum Veröffentlichen von Zustandswerten auf das Gerät auf dem Reconnect\nVerbesserte Gruppenkarte\nVerbesserte Gruppeninformationen\nModifizierte Koordinatorkarte (2 Seiten)\nretry auf fehler 25\nklare stashed fehlermeldungen\nZHC 25.50.0 oder neuer",
87
- "ru": "Улучшения в Debug UI\nВариант «resend_states» для публикации значений состояния на устройстве при повторном подключении\nУлучшенная групповая карта\nУлучшенная групповая информация\nИзмененная карта координатора (2 стороны)\nвозвращение к ошибке 25\nскрытые сообщения об ошибках\nZHC 25.50.0 или новее",
88
- "pt": "Melhorias na interface de depuração\nOpção 'resend_states' para publicar valores de estado para o dispositivo ao religar\nCartão de grupo melhorado\nInformação melhorada do grupo\nCartão coordenador modificado (2 lados)\ntentar novamente no erro 25\nlimpar mensagens de erro escondidas\nZHC 25.50.0 ou mais recente",
89
- "nl": "Verbeteringen op debug UI\nOptie 'resend_states' om statuswaarden naar apparaat te publiceren bij opnieuw verbinden\nVerbeterde groepskaart\nVerbeterde groepsinfo\nGewijzigde coördinatiekaart (2 zijden)\nopnieuw proberen bij fout 25\nfoutmeldingen wissen\nZHC 25.50.0 of nieuwer",
90
- "fr": "Amélioration de l'assurance-chômage de débogage\nOption 'resend_states' pour publier les valeurs d'état sur le périphérique sur la connexion\nCarte de groupe améliorée\nInformations de groupe améliorées\nCarte de coordonnateur modifiée (2 côtés)\nréessayer sur l'erreur 25\nmessages d'erreur clairs et cachés\nZHC 25.50.0 ou plus récent",
91
- "it": "Miglioramenti sul debug UI\nOpzione 'resend_states' per pubblicare i valori di stato sul dispositivo sulla riconnessione\nScheda di gruppo migliorata\nInformazioni di gruppo migliorate\nCarta coordinatrice modificata (2 lati)\nriprovare sull'errore 25\nchiari messaggi di errore stanti\nZHC 25.50.0 o più recente",
92
- "es": "Mejoras en el depuro UI\nOpción 'resend_states' para publicar valores estatales al dispositivo en la reconexión\nTarjeta de grupo mejorada\nInformación de grupo mejorada\nTarjeta de coordinación modificada (2 lados)\nretry on error 25\nmensajes de error claros\nZHC 25.50.0 o más",
93
- "pl": "Ulepszenia dotyczące debugowania interfejsu użytkownika\nOpcja \"resend _ states\" do publikowania wartości stanu dla urządzenia przy ponownym połączeniu\nUlepszona karta grupowa\nUlepszone informacje grupowe\nZmodyfikowana karta koordynatora (2 strony)\nponowna próba błędu 25\njasne komunikaty błędów ukryte\nZHC 25.50.0 lub nowsze",
94
- "uk": "Удосконалення на дебурзі UI\nВаріант 'resend_states' для публікації державних значень для пристрою на відключенні\nПокращена групова карта\nПокращена інформація групи\nЗмінена карта координатора (2 сторони)\nптиця по помилки 25\nчіткі повідомлення про помилку\nZHC 25.50.0 або новачок",
95
- "zh-cn": "调试 UI 的改进\n选项“ resend_ states ” 以在重新连接时发布状态值以设备\n改进组卡\n改进组信息\n修改的协调员卡(2面)\n重试错误 25\n清除隐藏的错误消息\nZHC 25.50.0或更新"
96
96
  }
97
97
  },
98
98
  "titleLang": {
@@ -558,10 +558,22 @@ class StatesController extends EventEmitter {
558
558
  const json_value = JSON.parse(value);
559
559
  const payload = {device: deviceId.replace('0x', ''), payload: json_value, model:model, stateModel:stateModel, acknowledge:true};
560
560
  if (has_elevated_debug) this.emit('device_debug', { ID:debugID, data: { flag: '04' ,payload:value ,states:[{id:stateDesc.id, value:json_value, payload:'none'}], IO:false }});
561
-
562
- this.emit('send_payload', payload, debugID, has_elevated_debug);
561
+ if (Array.isArray(json_value.read)) {
562
+ for (const item of json_value.read) {
563
+ try {
564
+ this.emit('send_payload',{device: deviceId.replace('0x', ''), payload: {read: item}, model:model, stateModel:stateModel, acknowledge:true}, debugID, has_elevated_debug);
565
+ }
566
+ catch (error) {
567
+ if (has_elevated_debug) this.emit('device_debug', { ID:debugID, data: { error: 'EXSEND' ,states:[{id:stateDesc.id, value:value, payload:error.message}], IO:false }, message:message});
568
+ else this.error(error.message);
569
+ }
570
+ }
571
+ }
572
+ else {
573
+ this.emit('send_payload', payload, debugID, has_elevated_debug);
574
+ }
563
575
  } catch (error) {
564
- const message = `send_payload: ${value} does not parse as JSON Object : ${error.message}`;
576
+ const message = `send_payload: error sending ${value}: ${error.message}`;
565
577
  if (has_elevated_debug) this.emit('device_debug', { ID:debugID, data: { error: 'EXSEND' ,states:[{id:stateDesc.id, value:value, payload:error.message}], IO:false }, message:message});
566
578
  else this.error(message);
567
579
  return;
@@ -35,16 +35,15 @@ class DeviceEvent extends BaseExtension {
35
35
  }
36
36
 
37
37
  async deviceExposeChanged(device, mapped) {
38
- this.warn(`deviceExposeChanged called with ${JSON.stringify(device.ieeeAddr)} / ${JSON.stringify(mapped.model)}`);
38
+ this.warn(`deviceExposesChanged called with ${JSON.stringify(device.ieeeAddr)} / ${JSON.stringify(mapped.model)}`);
39
39
  }
40
40
 
41
41
  async callOnEvent(device, type, data, mappedDevice) {
42
- if (!mappedDevice) {
43
- mappedDevice = await zigbeeHerdsmanConverters.findByDevice(device);
44
- }
42
+
43
+ const md = mappedDevice ? mappedDevice : await zigbeeHerdsmanConverters.findByDevice(device);
45
44
  if (!device) return;
46
45
 
47
- const baseData = {device, deviceExposeChanged: function() { return; }, options: data.options || {}, state: data.state || {}}
46
+ const baseData = {device, deviceExposesChanged: function() { }, options: data.options || {}, state: data.state || {}}
48
47
  const eventData = {
49
48
  type,
50
49
  }
@@ -56,26 +55,29 @@ class DeviceEvent extends BaseExtension {
56
55
  case `deviceJoined`:
57
56
  {
58
57
  eventData.data = baseData;
59
- eventData.deviceExposeChanged = function() { this.deviceExposeChanged(device, mappedDevice) } ;
60
58
  break;
61
59
  }
62
60
  case 'stop':
63
- eventData.data = { ieeeAddr:device.ieeeAddr };
61
+ eventData.data = {ieeeAddr:device.ieeeAddr}
64
62
  break;
65
63
  case 'deviceInterview':
66
- eventData.data = {...baseData,status: data.status};
64
+ eventData.data = baseData;
65
+ eventData.data.status = data.status;
67
66
  break;
68
67
  case 'deviceOptionsChanged':
69
68
  // NOTE: This does not currently work. OptionsChange is not yet defined.
70
- eventData.data = {...baseData, from:data.from || {}, to:data.to || {}};
71
- eventData.data.options = data.to;
69
+ eventData.data = baseData;
70
+ eventData.data.from = data.from || {};
71
+ eventData.data.to = data.to || {};
72
+ eventData.data.options.to = data.to;
72
73
  break;
73
74
  }
74
75
 
75
76
 
76
- if (mappedDevice && mappedDevice.onEvent && eventData.data) {
77
+ if (md && md.onEvent && eventData.data) {
78
+ //this.warn(`calling onEvent for device ${data.device.ieeeAddr} with Event ${type}`);
77
79
  try {
78
- mappedDevice.onEvent(eventData);
80
+ md.onEvent(eventData);
79
81
  }
80
82
  catch (error) {
81
83
  this.warn(`Error in onEvent: ${error && error.message ? error.message : 'no message'}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.zigbee",
3
- "version": "3.3.3",
3
+ "version": "3.3.5",
4
4
  "author": {
5
5
  "name": "Kirov Ilya",
6
6
  "email": "kirovilya@gmail.com"
@@ -28,8 +28,8 @@
28
28
  "ajv": "^8.17.1",
29
29
  "uri-js": "^4.4.1",
30
30
  "typescript": "^5.9.3",
31
- "zigbee-herdsman": "8.0.2",
32
- "zigbee-herdsman-converters": "25.104.0"
31
+ "zigbee-herdsman": "^8.0.2",
32
+ "zigbee-herdsman-converters": "25.112.0"
33
33
  },
34
34
  "description": "Zigbee devices",
35
35
  "devDependencies": {