@willieee802/zigbee-herdsman 0.49.4 → 0.50.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.
Files changed (209) hide show
  1. package/.github/dependabot.yml +0 -3
  2. package/.github/workflows/ci.yml +1 -2
  3. package/.github/workflows/release-please.yml +1 -1
  4. package/.github/workflows/typedoc.yaml +3 -3
  5. package/.release-please-manifest.json +1 -1
  6. package/CHANGELOG.md +143 -0
  7. package/biome.json +1 -1
  8. package/dist/adapter/adapter.d.ts +14 -1
  9. package/dist/adapter/adapter.d.ts.map +1 -1
  10. package/dist/adapter/adapter.js +17 -0
  11. package/dist/adapter/adapter.js.map +1 -1
  12. package/dist/adapter/adapterDiscovery.d.ts.map +1 -1
  13. package/dist/adapter/adapterDiscovery.js.map +1 -1
  14. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +1 -3
  15. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
  16. package/dist/adapter/deconz/adapter/deconzAdapter.js +14 -29
  17. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
  18. package/dist/adapter/deconz/driver/constants.d.ts +1 -1
  19. package/dist/adapter/deconz/driver/constants.d.ts.map +1 -1
  20. package/dist/adapter/ember/adapter/emberAdapter.d.ts +1 -1
  21. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
  22. package/dist/adapter/ember/adapter/emberAdapter.js +19 -10
  23. package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
  24. package/dist/adapter/ember/adapter/oneWaitress.d.ts +2 -0
  25. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
  26. package/dist/adapter/ember/adapter/oneWaitress.js +13 -5
  27. package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
  28. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +1 -3
  29. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  30. package/dist/adapter/ezsp/adapter/ezspAdapter.js +17 -30
  31. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
  32. package/dist/adapter/ezsp/driver/index.d.ts +1 -1
  33. package/dist/adapter/ezsp/driver/index.d.ts.map +1 -1
  34. package/dist/adapter/ezsp/driver/index.js +1 -1
  35. package/dist/adapter/ezsp/driver/index.js.map +1 -1
  36. package/dist/adapter/ezsp/driver/types/index.d.ts +1 -1
  37. package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
  38. package/dist/adapter/ezsp/driver/types/index.js +3 -3
  39. package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
  40. package/dist/adapter/serialPort.d.ts.map +1 -1
  41. package/dist/adapter/serialPort.js +7 -0
  42. package/dist/adapter/serialPort.js.map +1 -1
  43. package/dist/adapter/z-stack/adapter/adapter-backup.js +1 -1
  44. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
  45. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +1 -1
  46. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
  47. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
  48. package/dist/adapter/z-stack/adapter/manager.js +12 -2
  49. package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
  50. package/dist/adapter/z-stack/adapter/tstype.d.ts.map +1 -1
  51. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +1 -3
  52. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  53. package/dist/adapter/z-stack/adapter/zStackAdapter.js +20 -34
  54. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  55. package/dist/adapter/z-stack/constants/index.d.ts +1 -1
  56. package/dist/adapter/z-stack/constants/index.d.ts.map +1 -1
  57. package/dist/adapter/z-stack/constants/index.js +1 -1
  58. package/dist/adapter/z-stack/constants/index.js.map +1 -1
  59. package/dist/adapter/z-stack/unpi/constants.d.ts +1 -1
  60. package/dist/adapter/z-stack/unpi/constants.d.ts.map +1 -1
  61. package/dist/adapter/z-stack/unpi/constants.js +1 -1
  62. package/dist/adapter/z-stack/unpi/constants.js.map +1 -1
  63. package/dist/adapter/zboss/adapter/zbossAdapter.d.ts +7 -8
  64. package/dist/adapter/zboss/adapter/zbossAdapter.d.ts.map +1 -1
  65. package/dist/adapter/zboss/adapter/zbossAdapter.js +12 -30
  66. package/dist/adapter/zboss/adapter/zbossAdapter.js.map +1 -1
  67. package/dist/adapter/zboss/driver.d.ts.map +1 -1
  68. package/dist/adapter/zboss/driver.js +8 -1
  69. package/dist/adapter/zboss/driver.js.map +1 -1
  70. package/dist/adapter/zboss/uart.d.ts.map +1 -1
  71. package/dist/adapter/zboss/uart.js +14 -2
  72. package/dist/adapter/zboss/uart.js.map +1 -1
  73. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +1 -3
  74. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
  75. package/dist/adapter/zigate/adapter/zigateAdapter.js +8 -29
  76. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
  77. package/dist/adapter/zoh/adapter/zohAdapter.d.ts +1 -3
  78. package/dist/adapter/zoh/adapter/zohAdapter.d.ts.map +1 -1
  79. package/dist/adapter/zoh/adapter/zohAdapter.js +18 -33
  80. package/dist/adapter/zoh/adapter/zohAdapter.js.map +1 -1
  81. package/dist/controller/controller.d.ts.map +1 -1
  82. package/dist/controller/controller.js +10 -2
  83. package/dist/controller/controller.js.map +1 -1
  84. package/dist/controller/greenPower.d.ts.map +1 -1
  85. package/dist/controller/greenPower.js +15 -9
  86. package/dist/controller/greenPower.js.map +1 -1
  87. package/dist/controller/helpers/ota.d.ts +4 -4
  88. package/dist/controller/helpers/ota.d.ts.map +1 -1
  89. package/dist/controller/helpers/ota.js +28 -9
  90. package/dist/controller/helpers/ota.js.map +1 -1
  91. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  92. package/dist/controller/helpers/zclFrameConverter.js +17 -16
  93. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  94. package/dist/controller/model/device.d.ts +14 -3
  95. package/dist/controller/model/device.d.ts.map +1 -1
  96. package/dist/controller/model/device.js +155 -68
  97. package/dist/controller/model/device.js.map +1 -1
  98. package/dist/controller/model/endpoint.d.ts +7 -3
  99. package/dist/controller/model/endpoint.d.ts.map +1 -1
  100. package/dist/controller/model/endpoint.js +34 -21
  101. package/dist/controller/model/endpoint.js.map +1 -1
  102. package/dist/controller/model/group.js +4 -4
  103. package/dist/controller/model/group.js.map +1 -1
  104. package/dist/controller/touchlink.js +3 -3
  105. package/dist/controller/touchlink.js.map +1 -1
  106. package/dist/utils/timeService.js +2 -2
  107. package/dist/utils/timeService.js.map +1 -1
  108. package/dist/zspec/zcl/buffaloZcl.d.ts +3 -3
  109. package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -1
  110. package/dist/zspec/zcl/buffaloZcl.js +198 -96
  111. package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
  112. package/dist/zspec/zcl/definition/cluster.d.ts +2 -2
  113. package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
  114. package/dist/zspec/zcl/definition/cluster.js +2699 -2808
  115. package/dist/zspec/zcl/definition/cluster.js.map +1 -1
  116. package/dist/zspec/zcl/definition/clusters-types.d.ts +63 -1109
  117. package/dist/zspec/zcl/definition/clusters-types.d.ts.map +1 -1
  118. package/dist/zspec/zcl/definition/enums.d.ts +0 -1
  119. package/dist/zspec/zcl/definition/enums.d.ts.map +1 -1
  120. package/dist/zspec/zcl/definition/enums.js +0 -1
  121. package/dist/zspec/zcl/definition/enums.js.map +1 -1
  122. package/dist/zspec/zcl/definition/foundation.d.ts +306 -7
  123. package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
  124. package/dist/zspec/zcl/definition/foundation.js +552 -207
  125. package/dist/zspec/zcl/definition/foundation.js.map +1 -1
  126. package/dist/zspec/zcl/definition/status.d.ts +21 -10
  127. package/dist/zspec/zcl/definition/status.d.ts.map +1 -1
  128. package/dist/zspec/zcl/definition/status.js +11 -0
  129. package/dist/zspec/zcl/definition/status.js.map +1 -1
  130. package/dist/zspec/zcl/definition/tstype.d.ts +57 -48
  131. package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
  132. package/dist/zspec/zcl/utils.d.ts +7 -4
  133. package/dist/zspec/zcl/utils.d.ts.map +1 -1
  134. package/dist/zspec/zcl/utils.js +133 -240
  135. package/dist/zspec/zcl/utils.js.map +1 -1
  136. package/dist/zspec/zcl/zclFrame.d.ts +4 -4
  137. package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
  138. package/dist/zspec/zcl/zclFrame.js +19 -103
  139. package/dist/zspec/zcl/zclFrame.js.map +1 -1
  140. package/dist/zspec/zcl/zclStatusError.d.ts +1 -1
  141. package/dist/zspec/zcl/zclStatusError.d.ts.map +1 -1
  142. package/dist/zspec/zcl/zclStatusError.js +2 -2
  143. package/dist/zspec/zcl/zclStatusError.js.map +1 -1
  144. package/package.json +1 -1
  145. package/scripts/clusters-typegen.ts +44 -139
  146. package/src/adapter/adapter.ts +38 -3
  147. package/src/adapter/adapterDiscovery.ts +2 -1
  148. package/src/adapter/deconz/adapter/deconzAdapter.ts +24 -51
  149. package/src/adapter/deconz/driver/constants.ts +1 -1
  150. package/src/adapter/ember/adapter/emberAdapter.ts +23 -10
  151. package/src/adapter/ember/adapter/oneWaitress.ts +16 -6
  152. package/src/adapter/ezsp/adapter/ezspAdapter.ts +27 -48
  153. package/src/adapter/ezsp/driver/index.ts +1 -1
  154. package/src/adapter/ezsp/driver/types/index.ts +99 -99
  155. package/src/adapter/serialPort.ts +9 -0
  156. package/src/adapter/z-stack/adapter/adapter-backup.ts +1 -1
  157. package/src/adapter/z-stack/adapter/adapter-nv-memory.ts +1 -1
  158. package/src/adapter/z-stack/adapter/manager.ts +16 -2
  159. package/src/adapter/z-stack/adapter/tstype.ts +1 -0
  160. package/src/adapter/z-stack/adapter/zStackAdapter.ts +34 -81
  161. package/src/adapter/z-stack/constants/index.ts +1 -1
  162. package/src/adapter/z-stack/unpi/constants.ts +1 -1
  163. package/src/adapter/zboss/adapter/zbossAdapter.ts +23 -54
  164. package/src/adapter/zboss/driver.ts +8 -1
  165. package/src/adapter/zboss/uart.ts +14 -1
  166. package/src/adapter/zigate/adapter/zigateAdapter.ts +17 -48
  167. package/src/adapter/zoh/adapter/zohAdapter.ts +27 -50
  168. package/src/controller/controller.ts +12 -2
  169. package/src/controller/greenPower.ts +16 -9
  170. package/src/controller/helpers/ota.ts +37 -11
  171. package/src/controller/helpers/zclFrameConverter.ts +20 -17
  172. package/src/controller/model/device.ts +192 -79
  173. package/src/controller/model/endpoint.ts +36 -24
  174. package/src/controller/model/group.ts +4 -4
  175. package/src/controller/touchlink.ts +3 -3
  176. package/src/utils/timeService.ts +2 -2
  177. package/src/zspec/zcl/buffaloZcl.ts +226 -100
  178. package/src/zspec/zcl/definition/cluster.ts +2713 -2822
  179. package/src/zspec/zcl/definition/clusters-types.ts +80 -1135
  180. package/src/zspec/zcl/definition/enums.ts +0 -1
  181. package/src/zspec/zcl/definition/foundation.ts +703 -216
  182. package/src/zspec/zcl/definition/status.ts +22 -11
  183. package/src/zspec/zcl/definition/tstype.ts +59 -58
  184. package/src/zspec/zcl/utils.ts +137 -264
  185. package/src/zspec/zcl/zclFrame.ts +25 -130
  186. package/src/zspec/zcl/zclStatusError.ts +2 -2
  187. package/test/adapter/ember/emberAdapter.test.ts +191 -4
  188. package/test/adapter/ezsp/uart.test.ts +10 -10
  189. package/test/adapter/z-stack/adapter.test.ts +88 -32
  190. package/test/adapter/zoh/zohAdapter.test.ts +4 -4
  191. package/test/controller.test.ts +822 -248
  192. package/test/device-ota.test.ts +141 -16
  193. package/test/device.test.ts +731 -0
  194. package/test/requests.bench.ts +2 -0
  195. package/test/zcl.test.ts +70 -95
  196. package/test/zspec/zcl/buffalo.test.ts +251 -11
  197. package/test/zspec/zcl/foundation.test.ts +990 -0
  198. package/test/zspec/zcl/frame.test.ts +84 -69
  199. package/test/zspec/zcl/utils.test.ts +105 -81
  200. package/tsconfig.json +0 -1
  201. package/scripts/check-clusters-changes.ts +0 -328
  202. package/scripts/clusters-changes.log +0 -584
  203. package/scripts/utils.ts +0 -88
  204. package/scripts/zap-update-clusters-report.json +0 -303
  205. package/scripts/zap-update-clusters.ts +0 -1520
  206. package/scripts/zap-update-types.ts +0 -707
  207. package/scripts/zap-xml-clusters-overrides-data.ts +0 -52
  208. package/scripts/zap-xml-clusters-overrides.ts +0 -400
  209. package/scripts/zap-xml-types.ts +0 -146
@@ -32,14 +32,20 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
35
38
  Object.defineProperty(exports, "__esModule", { value: true });
36
39
  exports.ZclFrame = void 0;
40
+ const node_assert_1 = __importDefault(require("node:assert"));
37
41
  require("../../utils/patchBigIntSerialization");
38
42
  const buffaloZcl_1 = require("./buffaloZcl");
39
43
  const enums_1 = require("./definition/enums");
44
+ const status_1 = require("./definition/status");
40
45
  const Utils = __importStar(require("./utils"));
41
46
  const zclHeader_1 = require("./zclHeader");
42
- const ListTypes = [
47
+ const zclStatusError_1 = require("./zclStatusError");
48
+ const LIST_TYPES = [
43
49
  enums_1.BuffaloZclDataType.LIST_UINT8,
44
50
  enums_1.BuffaloZclDataType.LIST_UINT16,
45
51
  enums_1.BuffaloZclDataType.LIST_UINT24,
@@ -70,8 +76,8 @@ class ZclFrame {
70
76
  : frameType === enums_1.FrameType.GLOBAL
71
77
  ? Utils.getGlobalCommand(commandKey)
72
78
  : direction === enums_1.Direction.CLIENT_TO_SERVER
73
- ? cluster.getCommand(commandKey)
74
- : cluster.getCommandResponse(commandKey);
79
+ ? Utils.getClusterCommand(cluster, commandKey)
80
+ : Utils.getClusterCommandResponse(cluster, commandKey);
75
81
  const header = new zclHeader_1.ZclHeader({ reservedBits, frameType, direction, disableDefaultResponse, manufacturerSpecific: manufacturerCode != null }, manufacturerCode, transactionSequenceNumber, command.ID);
76
82
  return new ZclFrame(header, payload, cluster, command);
77
83
  }
@@ -90,41 +96,11 @@ class ZclFrame {
90
96
  return buffalo.getWritten();
91
97
  }
92
98
  writePayloadGlobal(buffalo) {
93
- const command = Utils.getFoundationCommand(this.command.ID);
94
- if (command.parseStrategy === "repetitive") {
95
- for (const entry of this.payload) {
96
- for (const parameter of command.parameters) {
97
- const options = {};
98
- if (!ZclFrame.conditionsValid(parameter, entry, undefined)) {
99
- continue;
100
- }
101
- if (parameter.type === enums_1.BuffaloZclDataType.USE_DATA_TYPE && typeof entry.dataType === "number") {
102
- // We need to grab the dataType to parse useDataType
103
- options.dataType = entry.dataType;
104
- }
105
- buffalo.write(parameter.type, entry[parameter.name], options);
106
- }
107
- }
108
- }
109
- else if (command.parseStrategy === "flat") {
110
- for (const parameter of command.parameters) {
111
- buffalo.write(parameter.type, this.payload[parameter.name], {});
112
- }
113
- }
114
- else {
115
- if (command.parseStrategy === "oneof") {
116
- if (Utils.isFoundationDiscoverRsp(command.ID)) {
117
- buffalo.writeUInt8(this.payload.discComplete);
118
- for (const entry of this.payload.attrInfos) {
119
- for (const parameter of command.parameters) {
120
- buffalo.write(parameter.type, entry[parameter.name], {});
121
- }
122
- }
123
- }
124
- }
125
- }
99
+ (0, node_assert_1.default)("write" in this.command);
100
+ this.command.write(buffalo, this.payload);
126
101
  }
127
102
  writePayloadCluster(buffalo) {
103
+ (0, node_assert_1.default)("parameters" in this.command);
128
104
  for (const parameter of this.command.parameters) {
129
105
  if (!ZclFrame.conditionsValid(parameter, this.payload, undefined)) {
130
106
  continue;
@@ -154,8 +130,8 @@ class ZclFrame {
154
130
  const command = header.isGlobal
155
131
  ? Utils.getGlobalCommand(header.commandIdentifier)
156
132
  : header.frameControl.direction === enums_1.Direction.CLIENT_TO_SERVER
157
- ? cluster.getCommand(header.commandIdentifier)
158
- : cluster.getCommandResponse(header.commandIdentifier);
133
+ ? Utils.getClusterCommand(cluster, header.commandIdentifier)
134
+ : Utils.getClusterCommandResponse(cluster, header.commandIdentifier);
159
135
  const payload = ZclFrame.parsePayload(header, cluster, buffalo);
160
136
  return new ZclFrame(header, payload, cluster, command);
161
137
  }
@@ -170,15 +146,15 @@ class ZclFrame {
170
146
  }
171
147
  static parsePayloadCluster(header, cluster, buffalo) {
172
148
  const command = header.frameControl.direction === enums_1.Direction.CLIENT_TO_SERVER
173
- ? cluster.getCommand(header.commandIdentifier)
174
- : cluster.getCommandResponse(header.commandIdentifier);
149
+ ? Utils.getClusterCommand(cluster, header.commandIdentifier)
150
+ : Utils.getClusterCommandResponse(cluster, header.commandIdentifier);
175
151
  const payload = {};
176
152
  for (const parameter of command.parameters) {
177
153
  const options = { payload };
178
154
  if (!ZclFrame.conditionsValid(parameter, payload, buffalo.getBuffer().length - buffalo.getPosition())) {
179
155
  continue;
180
156
  }
181
- if (ListTypes.includes(parameter.type)) {
157
+ if (LIST_TYPES.includes(parameter.type)) {
182
158
  const lengthParameter = command.parameters[command.parameters.indexOf(parameter) - 1];
183
159
  const length = payload[lengthParameter.name];
184
160
  if (typeof length === "number") {
@@ -190,68 +166,14 @@ class ZclFrame {
190
166
  payload[parameter.name] = Utils.processParameterRead(parameter, valueToProcess);
191
167
  }
192
168
  catch (error) {
193
- throw new Error(`Cannot parse '${command.name}:${parameter.name}' (${error.message})`);
169
+ throw new zclStatusError_1.ZclStatusError(status_1.Status.INVALID_FIELD, `${cluster.name}:${command.name}:${parameter.name} (${error.message})`);
194
170
  }
195
171
  }
196
172
  return payload;
197
173
  }
198
174
  static parsePayloadGlobal(header, buffalo) {
199
175
  const command = Utils.getFoundationCommand(header.commandIdentifier);
200
- if (command.parseStrategy === "repetitive") {
201
- const payload = [];
202
- while (buffalo.isMore()) {
203
- // biome-ignore lint/suspicious/noExplicitAny: API
204
- const entry = {};
205
- for (const parameter of command.parameters) {
206
- const options = {};
207
- if (!ZclFrame.conditionsValid(parameter, entry, buffalo.getBuffer().length - buffalo.getPosition())) {
208
- continue;
209
- }
210
- if (parameter.type === enums_1.BuffaloZclDataType.USE_DATA_TYPE && typeof entry.dataType === "number") {
211
- // We need to grab the dataType to parse useDataType
212
- options.dataType = entry.dataType;
213
- if (entry.dataType === enums_1.DataType.CHAR_STR && entry.attrId === 65281) {
214
- // [workaround] parse char str as Xiaomi struct
215
- options.dataType = enums_1.BuffaloZclDataType.MI_STRUCT;
216
- }
217
- }
218
- entry[parameter.name] = buffalo.read(parameter.type, options);
219
- // TODO: not needed, but temp workaroudn to make payload equal to that of zcl-packet
220
- // XXX: is this still needed?
221
- if (parameter.type === enums_1.BuffaloZclDataType.USE_DATA_TYPE && entry.dataType === enums_1.DataType.STRUCT) {
222
- entry.structElms = entry.attrData;
223
- entry.numElms = entry.attrData.length;
224
- }
225
- }
226
- payload.push(entry);
227
- }
228
- return payload;
229
- }
230
- if (command.parseStrategy === "flat") {
231
- // biome-ignore lint/suspicious/noExplicitAny: API
232
- const payload = {};
233
- for (const parameter of command.parameters) {
234
- payload[parameter.name] = buffalo.read(parameter.type, {});
235
- }
236
- return payload;
237
- }
238
- if (command.parseStrategy === "oneof") {
239
- if (Utils.isFoundationDiscoverRsp(command.ID)) {
240
- // biome-ignore lint/suspicious/noExplicitAny: API
241
- const payload = {
242
- discComplete: buffalo.readUInt8(),
243
- attrInfos: [],
244
- };
245
- while (buffalo.isMore()) {
246
- const entry = {};
247
- for (const parameter of command.parameters) {
248
- entry[parameter.name] = buffalo.read(parameter.type, {});
249
- }
250
- payload.attrInfos.push(entry);
251
- }
252
- return payload;
253
- }
254
- }
176
+ return command.parse(buffalo);
255
177
  }
256
178
  /**
257
179
  * Utils
@@ -294,12 +216,6 @@ class ZclFrame {
294
216
  }
295
217
  break;
296
218
  }
297
- case enums_1.ParameterCondition.DATA_TYPE_CLASS_EQUAL: {
298
- if (Utils.getDataTypeClass(entry.dataType) !== condition.value) {
299
- return false;
300
- }
301
- break;
302
- }
303
219
  case enums_1.ParameterCondition.FIELD_GT: {
304
220
  /*if (condition.reversed) {
305
221
  if (entry[condition.field] >= condition.value) {
@@ -1 +1 @@
1
- {"version":3,"file":"zclFrame.js","sourceRoot":"","sources":["../../../src/zspec/zcl/zclFrame.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zclFrame.js","sourceRoot":"","sources":["../../../src/zspec/zcl/zclFrame.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Status } from "./definition/status";
2
2
  export declare class ZclStatusError extends Error {
3
3
  code: Status;
4
- constructor(code: Status);
4
+ constructor(code: Status, details?: string);
5
5
  }
6
6
  //# sourceMappingURL=zclStatusError.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"zclStatusError.d.ts","sourceRoot":"","sources":["../../../src/zspec/zcl/zclStatusError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAE3C,qBAAa,cAAe,SAAQ,KAAK;IAC9B,IAAI,EAAE,MAAM,CAAC;gBAER,IAAI,EAAE,MAAM;CAI3B"}
1
+ {"version":3,"file":"zclStatusError.d.ts","sourceRoot":"","sources":["../../../src/zspec/zcl/zclStatusError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAE3C,qBAAa,cAAe,SAAQ,KAAK;IAC9B,IAAI,EAAE,MAAM,CAAC;gBAER,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAI7C"}
@@ -4,8 +4,8 @@ exports.ZclStatusError = void 0;
4
4
  const status_1 = require("./definition/status");
5
5
  class ZclStatusError extends Error {
6
6
  code;
7
- constructor(code) {
8
- super(`Status '${status_1.Status[code]}'`);
7
+ constructor(code, details) {
8
+ super(`Status '${status_1.Status[code]}'${details ? ` ${details}` : ""}`);
9
9
  this.code = code;
10
10
  }
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"zclStatusError.js","sourceRoot":"","sources":["../../../src/zspec/zcl/zclStatusError.ts"],"names":[],"mappings":";;;AAAA,gDAA2C;AAE3C,MAAa,cAAe,SAAQ,KAAK;IAC9B,IAAI,CAAS;IAEpB,YAAY,IAAY;QACpB,KAAK,CAAC,WAAW,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AAPD,wCAOC"}
1
+ {"version":3,"file":"zclStatusError.js","sourceRoot":"","sources":["../../../src/zspec/zcl/zclStatusError.ts"],"names":[],"mappings":";;;AAAA,gDAA2C;AAE3C,MAAa,cAAe,SAAQ,KAAK;IAC9B,IAAI,CAAS;IAEpB,YAAY,IAAY,EAAE,OAAgB;QACtC,KAAK,CAAC,WAAW,eAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AAPD,wCAOC"}
package/package.json CHANGED
@@ -72,7 +72,7 @@
72
72
  "clean": "rimraf temp coverage dist",
73
73
  "prepack": "npm run clean && npm run build"
74
74
  },
75
- "version": "0.49.4",
75
+ "version": "0.50.0",
76
76
  "jest": {
77
77
  "coverageThreshold": {
78
78
  "global": {
@@ -6,10 +6,9 @@ import {writeFileSync} from "node:fs";
6
6
  import ts from "typescript";
7
7
  import {Clusters} from "../src/zspec/zcl/definition/cluster";
8
8
  import {BuffaloZclDataType, DataType} from "../src/zspec/zcl/definition/enums";
9
- import {Foundation, type FoundationCommandName, type FoundationDefinition} from "../src/zspec/zcl/definition/foundation";
9
+ import {Foundation, type FoundationCommandName} from "../src/zspec/zcl/definition/foundation";
10
10
  import {ManufacturerCode} from "../src/zspec/zcl/definition/manufacturerCode";
11
- import type {AttributeDefinition, ClusterName, CommandDefinition, ParameterDefinition} from "../src/zspec/zcl/definition/tstype";
12
- import {isFoundationDiscoverRsp} from "../src/zspec/zcl/utils";
11
+ import type {Attribute, ClusterName, Command, Parameter} from "../src/zspec/zcl/definition/tstype";
13
12
 
14
13
  const FILENAME = "clusters-types.ts";
15
14
 
@@ -21,6 +20,16 @@ const emptyObject = ts.factory.createTypeReferenceNode("Record", [
21
20
  ts.factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword),
22
21
  ]);
23
22
 
23
+ const foundationImport = ts.factory.createImportDeclaration(
24
+ undefined,
25
+ ts.factory.createImportClause(
26
+ ts.SyntaxKind.TypeKeyword,
27
+ undefined,
28
+ ts.factory.createNamedImports([ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("Foundation"))]),
29
+ ),
30
+ ts.factory.createStringLiteral("./foundation"),
31
+ undefined,
32
+ );
24
33
  const namedImports = ts.factory.createImportDeclaration(
25
34
  undefined,
26
35
  ts.factory.createImportClause(
@@ -30,14 +39,15 @@ const namedImports = ts.factory.createImportDeclaration(
30
39
  // sorted by name
31
40
  ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("ExtensionFieldSet")),
32
41
  ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("Gpd")),
33
- ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("GpdAttributeReport")),
42
+ ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("GpdAttributeReporting")),
34
43
  ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("GpdChannelConfiguration")),
35
44
  ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("GpdChannelRequest")),
36
45
  ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("GpdCommissioningReply")),
37
46
  ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("GpdCustomReply")),
38
- ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("MiboxerZone")),
47
+ ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("GpdReadAttributeResponse")),
48
+ ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("GpdRequestAttribute")),
39
49
  ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("Struct")),
40
- ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("StructuredSelector")),
50
+ // ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("StructuredSelector")), // XXX: currently unused
41
51
  ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("ThermoTransition")),
42
52
  ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("TuyaDataPointValue")),
43
53
  ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier("ZclArray")),
@@ -119,14 +129,16 @@ const getTypeFromDataType = (dataType: DataType | BuffaloZclDataType): ts.TypeNo
119
129
  return ts.factory.createUnionTypeNode([
120
130
  ts.factory.createTypeReferenceNode("Gpd"),
121
131
  ts.factory.createTypeReferenceNode("GpdChannelRequest"),
122
- ts.factory.createTypeReferenceNode("GpdAttributeReport"),
132
+ ts.factory.createTypeReferenceNode("GpdAttributeReporting"),
133
+ ts.factory.createTypeReferenceNode("GpdCommissioningReply"),
134
+ ts.factory.createTypeReferenceNode("GpdChannelConfiguration"),
135
+ ts.factory.createTypeReferenceNode("GpdCustomReply"),
136
+ ts.factory.createTypeReferenceNode("GpdReadAttributeResponse"),
137
+ ts.factory.createTypeReferenceNode("GpdRequestAttribute"),
123
138
  ts.factory.createTypeLiteralNode([
124
139
  ts.factory.createPropertySignature(undefined, "raw", undefined, ts.factory.createTypeReferenceNode("Buffer")),
125
140
  ]),
126
141
  ts.factory.createTypeReferenceNode("Record<string, never>"),
127
- ts.factory.createTypeReferenceNode("GpdCommissioningReply"),
128
- ts.factory.createTypeReferenceNode("GpdChannelConfiguration"),
129
- ts.factory.createTypeReferenceNode("GpdCustomReply"),
130
142
  ]);
131
143
  }
132
144
  case BuffaloZclDataType.STRUCTURED_SELECTOR: {
@@ -158,7 +170,7 @@ const getPropertyStr = (key: string, val: unknown, padId = 4) => {
158
170
  return valStr;
159
171
  };
160
172
 
161
- const getConditionStr = (conditions: ParameterDefinition["conditions"]): string | undefined => {
173
+ const getConditionStr = (conditions: Parameter["conditions"]): string | undefined => {
162
174
  if (conditions) {
163
175
  let str = "conditions=[";
164
176
 
@@ -180,7 +192,7 @@ const getConditionStr = (conditions: ParameterDefinition["conditions"]): string
180
192
  }
181
193
  };
182
194
 
183
- const addAttributes = (attributes: Readonly<Record<string, Readonly<AttributeDefinition>>>): ts.TypeNode => {
195
+ const addAttributes = (attributes: Readonly<Record<string, Readonly<Attribute>>>): ts.TypeNode => {
184
196
  const elements: ts.PropertySignature[] = [];
185
197
 
186
198
  for (const attributeName in attributes) {
@@ -199,6 +211,10 @@ const addAttributes = (attributes: Readonly<Record<string, Readonly<AttributeDef
199
211
  const commentChunks: string[] = [];
200
212
 
201
213
  for (const key in attribute) {
214
+ if (key === "name") {
215
+ continue;
216
+ }
217
+
202
218
  commentChunks.push(`${key}=${getPropertyStr(key, attribute[key as keyof typeof attribute], 4)}`);
203
219
  }
204
220
 
@@ -210,7 +226,7 @@ const addAttributes = (attributes: Readonly<Record<string, Readonly<AttributeDef
210
226
  return elements.length > 0 ? ts.factory.createTypeLiteralNode(elements) : ts.factory.createKeywordTypeNode(ts.SyntaxKind.NeverKeyword);
211
227
  };
212
228
 
213
- const addCommands = (commands: Readonly<Record<string, Readonly<CommandDefinition>>>): ts.TypeNode => {
229
+ const addCommands = (commands: Readonly<Record<string, Readonly<Command>>>): ts.TypeNode => {
214
230
  const elements: ts.PropertySignature[] = [];
215
231
 
216
232
  for (const commandName in commands) {
@@ -278,7 +294,7 @@ const addCommands = (commands: Readonly<Record<string, Readonly<CommandDefinitio
278
294
  const commentChunks: string[] = [];
279
295
 
280
296
  for (const key in command) {
281
- if (key === "parameters") {
297
+ if (key === "name" || key === "parameters") {
282
298
  continue;
283
299
  }
284
300
 
@@ -320,94 +336,25 @@ const clustersDecl = ts.factory.createInterfaceDeclaration(
320
336
  clusterElements,
321
337
  );
322
338
 
323
- const addParameters = (foundation: Readonly<FoundationDefinition>): ts.TypeNode => {
324
- const elements: ts.PropertySignature[] = [];
325
-
326
- for (const parameter of foundation.parameters) {
327
- const element = ts.factory.createPropertySignature(
328
- undefined,
329
- parameter.name,
330
- parameter.conditions ? ts.factory.createToken(ts.SyntaxKind.QuestionToken) : undefined,
331
- getTypeFromDataType(parameter.type),
332
- );
333
- const conditionComment = getConditionStr(parameter.conditions);
334
-
335
- elements.push(element);
336
-
337
- ts.addSyntheticLeadingComment(
338
- element,
339
- ts.SyntaxKind.MultiLineCommentTrivia,
340
- `* Type: ${DataType[parameter.type] ?? BuffaloZclDataType[parameter.type]}${conditionComment ? ` ${conditionComment}` : ""} `,
341
- true,
342
- );
343
- }
344
-
345
- if (elements.length === 0) {
346
- return emptyObject;
347
- }
348
-
349
- switch (foundation.parseStrategy) {
350
- case "repetitive": {
351
- return ts.factory.createArrayTypeNode(ts.factory.createTypeLiteralNode(elements));
352
- }
353
- case "flat": {
354
- return ts.factory.createTypeLiteralNode(elements);
355
- }
356
- case "oneof": {
357
- if (isFoundationDiscoverRsp(foundation.ID)) {
358
- const discComplete = ts.factory.createPropertySignature(
359
- undefined,
360
- "discComplete",
361
- undefined,
362
- ts.factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),
363
- );
364
-
365
- ts.addSyntheticLeadingComment(discComplete, ts.SyntaxKind.MultiLineCommentTrivia, `* Type: ${DataType[DataType.UINT8]} `, true);
366
-
367
- return ts.factory.createTypeLiteralNode([
368
- discComplete,
369
- ts.factory.createPropertySignature(
370
- undefined,
371
- "attrInfos",
372
- undefined,
373
- ts.factory.createArrayTypeNode(ts.factory.createTypeLiteralNode(elements)),
374
- ),
375
- ]);
376
- }
377
- }
378
- }
379
-
380
- throw new Error(`Unknown command strategy for ${JSON.stringify(foundation)}`);
381
- };
382
-
383
339
  const foundationElements: ts.TypeElement[] = [];
384
- const foundationRepetitiveElements: ts.TypeNode[] = [];
385
- const foundationFlatElements: ts.TypeNode[] = [];
386
- const foundationOneOfElements: ts.TypeNode[] = [];
387
340
 
388
341
  for (const foundationName in Foundation) {
389
342
  const foundation = Foundation[foundationName as FoundationCommandName];
390
- const element = ts.factory.createPropertySignature(undefined, foundationName, undefined, addParameters(foundation));
343
+ const typeQuery = ts.factory.createTypeQueryNode(
344
+ ts.factory.createQualifiedName(
345
+ ts.factory.createQualifiedName(ts.factory.createIdentifier("Foundation"), ts.factory.createIdentifier(foundationName)),
346
+ ts.factory.createIdentifier("parse"),
347
+ ),
348
+ );
349
+ const element = ts.factory.createPropertySignature(
350
+ undefined,
351
+ foundationName,
352
+ undefined,
353
+ ts.factory.createTypeReferenceNode("ReturnType", [typeQuery]),
354
+ );
391
355
 
392
356
  foundationElements.push(element);
393
357
  ts.addSyntheticLeadingComment(element, ts.SyntaxKind.MultiLineCommentTrivia, `* ID: ${foundation.ID} `, true);
394
-
395
- const stratNode = ts.factory.createTypeReferenceNode(`"${foundationName}"`);
396
-
397
- switch (foundation.parseStrategy) {
398
- case "repetitive": {
399
- foundationRepetitiveElements.push(stratNode);
400
- break;
401
- }
402
- case "flat": {
403
- foundationFlatElements.push(stratNode);
404
- break;
405
- }
406
- case "oneof": {
407
- foundationOneOfElements.push(stratNode);
408
- break;
409
- }
410
- }
411
358
  }
412
359
 
413
360
  const foundationDecl = ts.factory.createInterfaceDeclaration(
@@ -418,24 +365,6 @@ const foundationDecl = ts.factory.createInterfaceDeclaration(
418
365
  foundationElements,
419
366
  );
420
367
 
421
- const foundationRepetitiveDecl = ts.factory.createTypeAliasDeclaration(
422
- [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],
423
- "TFoundationRepetitive",
424
- undefined,
425
- ts.factory.createUnionTypeNode(foundationRepetitiveElements),
426
- );
427
- const foundationFlatDecl = ts.factory.createTypeAliasDeclaration(
428
- [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],
429
- "TFoundationFlat",
430
- undefined,
431
- ts.factory.createUnionTypeNode(foundationFlatElements),
432
- );
433
- const foundationOneOfDecl = ts.factory.createTypeAliasDeclaration(
434
- [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],
435
- "TFoundationOneOf",
436
- undefined,
437
- ts.factory.createUnionTypeNode(foundationOneOfElements),
438
- );
439
368
  const clDecl = ts.factory.createTypeParameterDeclaration(
440
369
  undefined,
441
370
  "Cl",
@@ -538,24 +467,6 @@ const foundationGenericPayloadDecl = ts.factory.createTypeAliasDeclaration(
538
467
  undefined,
539
468
  ts.factory.createTypeReferenceNode(`${foundationDecl.name.escapedText}[keyof ${foundationDecl.name.escapedText}]`),
540
469
  );
541
- const foundationRepetitivePayloadDecl = ts.factory.createTypeAliasDeclaration(
542
- [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],
543
- "TFoundationRepetitivePayload",
544
- undefined,
545
- ts.factory.createTypeReferenceNode(`${foundationDecl.name.escapedText}[${foundationRepetitiveDecl.name.escapedText}]`),
546
- );
547
- const foundationFlatPayloadDecl = ts.factory.createTypeAliasDeclaration(
548
- [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],
549
- "TFoundationFlatPayload",
550
- undefined,
551
- ts.factory.createTypeReferenceNode(`${foundationDecl.name.escapedText}[${foundationFlatDecl.name.escapedText}]`),
552
- );
553
- const foundationOneOfPayloadDecl = ts.factory.createTypeAliasDeclaration(
554
- [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],
555
- "TFoundationOneOfPayload",
556
- undefined,
557
- ts.factory.createTypeReferenceNode(`${foundationDecl.name.escapedText}[${foundationOneOfDecl.name.escapedText}]`),
558
- );
559
470
  const foundationPayloadDecl = ts.factory.createTypeAliasDeclaration(
560
471
  [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],
561
472
  "TFoundationPayload",
@@ -565,16 +476,13 @@ const foundationPayloadDecl = ts.factory.createTypeAliasDeclaration(
565
476
  ),
566
477
  );
567
478
 
568
- const result = `${printer.printNode(ts.EmitHint.Unspecified, namedImports, file)}
479
+ const result = `${printer.printNode(ts.EmitHint.Unspecified, foundationImport, file)}
480
+ ${printer.printNode(ts.EmitHint.Unspecified, namedImports, file)}
569
481
 
570
482
  ${printer.printNode(ts.EmitHint.Unspecified, clustersDecl, file)}
571
483
 
572
484
  ${printer.printNode(ts.EmitHint.Unspecified, foundationDecl, file)}
573
485
 
574
- ${printer.printNode(ts.EmitHint.Unspecified, foundationRepetitiveDecl, file)}
575
- ${printer.printNode(ts.EmitHint.Unspecified, foundationFlatDecl, file)}
576
- ${printer.printNode(ts.EmitHint.Unspecified, foundationOneOfDecl, file)}
577
-
578
486
  // Clusters
579
487
  ${printer.printNode(ts.EmitHint.Unspecified, clusterAttributeKeysDecl, file)}
580
488
 
@@ -598,9 +506,6 @@ ${printer.printNode(ts.EmitHint.Unspecified, clusterPayloadDecl, file)}
598
506
 
599
507
  // Foundation
600
508
  ${printer.printNode(ts.EmitHint.Unspecified, foundationGenericPayloadDecl, file)}
601
- ${printer.printNode(ts.EmitHint.Unspecified, foundationRepetitivePayloadDecl, file)}
602
- ${printer.printNode(ts.EmitHint.Unspecified, foundationFlatPayloadDecl, file)}
603
- ${printer.printNode(ts.EmitHint.Unspecified, foundationOneOfPayloadDecl, file)}
604
509
 
605
510
  ${printer.printNode(ts.EmitHint.Unspecified, foundationPayloadDecl, file)}
606
511
  `;
@@ -10,6 +10,19 @@ import type * as AdapterEvents from "./events";
10
10
  import type * as TsType from "./tstype";
11
11
  import {KonnextConfig} from "../controller/model/konnextConfig";
12
12
 
13
+ export interface ZclWaitressPayload extends AdapterEvents.ZclPayload {
14
+ header: NonNullable<AdapterEvents.ZclPayload["header"]>;
15
+ }
16
+
17
+ export interface ClusterWaitressMatcher {
18
+ address: number | string | undefined;
19
+ clusterId: number;
20
+ endpoint?: number;
21
+ commandId?: number;
22
+ defaultRspCommandId?: number;
23
+ transactionSequenceNumber?: number;
24
+ }
25
+
13
26
  interface AdapterEventMap {
14
27
  deviceJoined: [payload: AdapterEvents.DeviceJoinedPayload];
15
28
  zclPayload: [payload: AdapterEvents.ZclPayload];
@@ -105,6 +118,27 @@ export abstract class Adapter extends events.EventEmitter<AdapterEventMap> {
105
118
  }
106
119
  }
107
120
 
121
+ static clusterWaitressTimeoutFormatter(matcher: ClusterWaitressMatcher, timeout: number): string {
122
+ return `Timeout after ${timeout}ms [address=${matcher.address} endpoint=${matcher.endpoint} clusterId=${matcher.clusterId} cmdId=${matcher.commandId} tsn=${matcher.transactionSequenceNumber}]`;
123
+ }
124
+
125
+ static zclWaitressValidator(payload: ZclWaitressPayload, matcher: ClusterWaitressMatcher): boolean {
126
+ const {header, address, clusterID, endpoint} = payload;
127
+
128
+ return (
129
+ // no sender in Touchlink
130
+ (matcher.address === undefined || address === matcher.address) &&
131
+ clusterID === matcher.clusterId &&
132
+ endpoint === matcher.endpoint &&
133
+ (matcher.transactionSequenceNumber === undefined || header.transactionSequenceNumber === matcher.transactionSequenceNumber) &&
134
+ (header.commandIdentifier === matcher.commandId ||
135
+ // defaultRsp
136
+ (header.frameControl.frameType === Zcl.FrameType.GLOBAL &&
137
+ header.commandIdentifier === 0x0b &&
138
+ (matcher.defaultRspCommandId === undefined || payload.data[payload.data.byteLength - 2] === matcher.defaultRspCommandId)))
139
+ );
140
+ }
141
+
108
142
  public abstract start(): Promise<TsType.StartResult>;
109
143
 
110
144
  public abstract stop(): Promise<void>;
@@ -124,13 +158,14 @@ export abstract class Adapter extends events.EventEmitter<AdapterEventMap> {
124
158
  public abstract addInstallCode(ieeeAddress: string, key: Buffer, hashed: boolean): Promise<void>;
125
159
 
126
160
  public abstract waitFor(
127
- networkAddress: number | undefined,
161
+ networkAddress: number,
128
162
  endpoint: number,
129
163
  frameType: Zcl.FrameType,
130
164
  direction: Zcl.Direction,
131
165
  transactionSequenceNumber: number | undefined,
132
- clusterID: number,
133
- commandIdentifier: number,
166
+ clusterId: number,
167
+ commandId: number,
168
+ defaultRspCommandId: number | undefined,
134
169
  timeout: number,
135
170
  ): {promise: Promise<AdapterEvents.ZclPayload>; cancel: () => void};
136
171
 
@@ -1,7 +1,8 @@
1
1
  import assert from "node:assert";
2
2
  import {platform} from "node:os";
3
3
  import type {PortInfo} from "@serialport/bindings-cpp";
4
- import {Bonjour, type Service} from "bonjour-service";
4
+ import {Bonjour} from "bonjour-service";
5
+ import type {Service} from "bonjour-service/dist/lib/service";
5
6
  import {wait} from "../utils";
6
7
  import {logger} from "../utils/logger";
7
8
  import type {TsType} from ".";