@willieee802/zigbee-herdsman 0.49.0 → 0.49.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.
Files changed (114) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +38 -0
  3. package/biome.json +1 -1
  4. package/dist/adapter/adapter.d.ts.map +1 -0
  5. package/dist/adapter/adapterDiscovery.d.ts.map +1 -0
  6. package/dist/adapter/const.d.ts.map +1 -0
  7. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -0
  8. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -0
  9. package/dist/adapter/ember/adapter/endpoints.d.ts.map +1 -0
  10. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -0
  11. package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -0
  12. package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -0
  13. package/dist/adapter/ember/utils/initters.d.ts.map +1 -0
  14. package/dist/adapter/events.d.ts.map +1 -0
  15. package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -0
  16. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -0
  17. package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -0
  18. package/dist/adapter/ezsp/driver/index.d.ts.map +1 -0
  19. package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -0
  20. package/dist/adapter/index.d.ts.map +1 -0
  21. package/dist/adapter/z-stack/adapter/endpoints.d.ts.map +1 -0
  22. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -0
  23. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -0
  24. package/dist/adapter/z-stack/models/startup-options.d.ts.map +1 -0
  25. package/dist/adapter/zboss/adapter/zbossAdapter.d.ts.map +1 -0
  26. package/dist/adapter/zboss/driver.d.ts.map +1 -0
  27. package/dist/adapter/zboss/frame.d.ts.map +1 -0
  28. package/dist/adapter/zboss/frame.js +200 -0
  29. package/dist/adapter/zboss/frame.js.map +1 -0
  30. package/dist/adapter/zboss/uart.d.ts.map +1 -0
  31. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -0
  32. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -0
  33. package/dist/adapter/zigate/driver/buffaloZiGate.js +198 -0
  34. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -0
  35. package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -0
  36. package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -0
  37. package/dist/adapter/zoh/adapter/zohAdapter.d.ts.map +1 -0
  38. package/dist/controller/controller.d.ts.map +1 -0
  39. package/dist/controller/controller.js +874 -0
  40. package/dist/controller/controller.js.map +1 -0
  41. package/dist/controller/database.d.ts.map +1 -0
  42. package/dist/controller/events.d.ts.map +1 -0
  43. package/dist/controller/events.js +3 -0
  44. package/dist/controller/events.js.map +1 -0
  45. package/dist/controller/greenPower.d.ts.map +1 -0
  46. package/dist/controller/greenPower.js +425 -0
  47. package/dist/controller/greenPower.js.map +1 -0
  48. package/dist/controller/helpers/index.d.ts.map +1 -0
  49. package/dist/controller/helpers/ota.d.ts.map +1 -0
  50. package/dist/controller/helpers/ota.js +467 -0
  51. package/dist/controller/helpers/ota.js.map +1 -0
  52. package/dist/controller/helpers/request.d.ts.map +1 -0
  53. package/dist/controller/helpers/requestQueue.d.ts.map +1 -0
  54. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -0
  55. package/dist/controller/helpers/zclFrameConverter.js +84 -0
  56. package/dist/controller/helpers/zclFrameConverter.js.map +1 -0
  57. package/dist/controller/index.d.ts.map +1 -0
  58. package/dist/controller/model/device.d.ts.map +1 -0
  59. package/dist/controller/model/device.js +1396 -0
  60. package/dist/controller/model/device.js.map +1 -0
  61. package/dist/controller/model/endpoint.d.ts.map +1 -0
  62. package/dist/controller/model/endpoint.js +822 -0
  63. package/dist/controller/model/endpoint.js.map +1 -0
  64. package/dist/controller/model/entity.d.ts.map +1 -0
  65. package/dist/controller/model/group.d.ts.map +1 -0
  66. package/dist/controller/model/group.js +343 -0
  67. package/dist/controller/model/group.js.map +1 -0
  68. package/dist/controller/model/index.d.ts.map +1 -0
  69. package/dist/controller/model/zigbeeEntity.d.ts.map +1 -0
  70. package/dist/controller/touchlink.d.ts.map +1 -0
  71. package/dist/controller/tstype.d.ts.map +1 -0
  72. package/dist/controller/tstype.js +3 -0
  73. package/dist/controller/tstype.js.map +1 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/utils/timeService.d.ts.map +1 -0
  76. package/dist/utils/timeService.js +127 -0
  77. package/dist/utils/timeService.js.map +1 -0
  78. package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -0
  79. package/dist/zspec/zcl/buffaloZcl.js +969 -0
  80. package/dist/zspec/zcl/buffaloZcl.js.map +1 -0
  81. package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -0
  82. package/dist/zspec/zcl/definition/cluster.js +7507 -0
  83. package/dist/zspec/zcl/definition/cluster.js.map +1 -0
  84. package/dist/zspec/zcl/definition/clusters-types.d.ts +8135 -0
  85. package/dist/zspec/zcl/definition/clusters-types.d.ts.map +1 -0
  86. package/dist/zspec/zcl/definition/clusters-types.js +3 -0
  87. package/dist/zspec/zcl/definition/clusters-types.js.map +1 -0
  88. package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -0
  89. package/dist/zspec/zcl/definition/foundation.js +312 -0
  90. package/dist/zspec/zcl/definition/foundation.js.map +1 -0
  91. package/dist/zspec/zcl/definition/tstype.d.ts +273 -0
  92. package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -0
  93. package/dist/zspec/zcl/definition/tstype.js +3 -0
  94. package/dist/zspec/zcl/definition/tstype.js.map +1 -0
  95. package/dist/zspec/zcl/index.d.ts.map +1 -0
  96. package/dist/zspec/zcl/index.js +57 -0
  97. package/dist/zspec/zcl/index.js.map +1 -0
  98. package/dist/zspec/zcl/utils.d.ts.map +1 -0
  99. package/dist/zspec/zcl/utils.js +419 -0
  100. package/dist/zspec/zcl/utils.js.map +1 -0
  101. package/dist/zspec/zcl/zclFrame.d.ts.map +1 -0
  102. package/dist/zspec/zcl/zclFrame.js +328 -0
  103. package/dist/zspec/zcl/zclFrame.js.map +1 -0
  104. package/dist/zspec/zcl/zclHeader.d.ts.map +1 -0
  105. package/dist/zspec/zcl/zclHeader.js +88 -0
  106. package/dist/zspec/zcl/zclHeader.js.map +1 -0
  107. package/package.json +90 -83
  108. package/src/controller/helpers/ota.ts +5 -2
  109. package/src/zspec/zcl/definition/cluster.ts +3 -294
  110. package/src/zspec/zcl/definition/clusters-types.ts +6 -355
  111. package/src/zspec/zcl/definition/tstype.ts +0 -14
  112. package/src/zspec/zcl/utils.ts +14 -31
  113. package/test/controller.test.ts +16 -8
  114. package/test/zcl.test.ts +36 -7
@@ -0,0 +1,328 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ZclFrame = void 0;
37
+ require("../../utils/patchBigIntSerialization");
38
+ const buffaloZcl_1 = require("./buffaloZcl");
39
+ const enums_1 = require("./definition/enums");
40
+ const Utils = __importStar(require("./utils"));
41
+ const zclHeader_1 = require("./zclHeader");
42
+ const ListTypes = [
43
+ enums_1.BuffaloZclDataType.LIST_UINT8,
44
+ enums_1.BuffaloZclDataType.LIST_UINT16,
45
+ enums_1.BuffaloZclDataType.LIST_UINT24,
46
+ enums_1.BuffaloZclDataType.LIST_UINT32,
47
+ enums_1.BuffaloZclDataType.LIST_ZONEINFO,
48
+ ];
49
+ class ZclFrame {
50
+ header;
51
+ payload;
52
+ cluster;
53
+ command;
54
+ constructor(header, payload, cluster, command) {
55
+ this.header = header;
56
+ this.payload = payload;
57
+ this.cluster = cluster;
58
+ this.command = command;
59
+ }
60
+ toString() {
61
+ return JSON.stringify({ header: this.header, payload: this.payload, command: this.command });
62
+ }
63
+ /**
64
+ * Creating
65
+ */
66
+ static create(frameType, direction, disableDefaultResponse, manufacturerCode, transactionSequenceNumber, commandKey, clusterKey, payload, customClusters, reservedBits = 0) {
67
+ const cluster = typeof clusterKey === "object" ? clusterKey : Utils.getCluster(clusterKey, manufacturerCode, customClusters);
68
+ const command = typeof commandKey === "object"
69
+ ? commandKey
70
+ : frameType === enums_1.FrameType.GLOBAL
71
+ ? Utils.getGlobalCommand(commandKey)
72
+ : direction === enums_1.Direction.CLIENT_TO_SERVER
73
+ ? cluster.getCommand(commandKey)
74
+ : cluster.getCommandResponse(commandKey);
75
+ const header = new zclHeader_1.ZclHeader({ reservedBits, frameType, direction, disableDefaultResponse, manufacturerSpecific: manufacturerCode != null }, manufacturerCode, transactionSequenceNumber, command.ID);
76
+ return new ZclFrame(header, payload, cluster, command);
77
+ }
78
+ toBuffer() {
79
+ const buffalo = new buffaloZcl_1.BuffaloZcl(Buffer.alloc(250));
80
+ this.header.write(buffalo);
81
+ if (this.header.isGlobal) {
82
+ this.writePayloadGlobal(buffalo);
83
+ }
84
+ else if (this.header.isSpecific) {
85
+ this.writePayloadCluster(buffalo);
86
+ }
87
+ else {
88
+ throw new Error(`Frametype '${this.header.frameControl.frameType}' not valid`);
89
+ }
90
+ return buffalo.getWritten();
91
+ }
92
+ 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
+ }
126
+ }
127
+ writePayloadCluster(buffalo) {
128
+ for (const parameter of this.command.parameters) {
129
+ if (!ZclFrame.conditionsValid(parameter, this.payload, undefined)) {
130
+ continue;
131
+ }
132
+ const paramPayload = this.payload[parameter.name];
133
+ if (paramPayload == null) {
134
+ // allow parameters with MINIMUM_REMAINING_BUFFER_BYTES conditions to be omitted similar to reception logic (without the value check)
135
+ // should be needed only for off-spec handling (usually around backwards-compat issues)
136
+ if (parameter.conditions?.some((c) => c.type === enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES)) {
137
+ continue;
138
+ }
139
+ throw new Error(`Parameter '${parameter.name}' is missing`);
140
+ }
141
+ const valueToWrite = Utils.processParameterWrite(parameter, paramPayload);
142
+ buffalo.write(parameter.type, valueToWrite, {});
143
+ }
144
+ }
145
+ /**
146
+ * Parsing
147
+ */
148
+ static fromBuffer(clusterID, header, buffer, customClusters) {
149
+ if (!header) {
150
+ throw new Error("Invalid ZclHeader.");
151
+ }
152
+ const buffalo = new buffaloZcl_1.BuffaloZcl(buffer, header.length);
153
+ const cluster = Utils.getCluster(clusterID, header.manufacturerCode, customClusters);
154
+ const command = header.isGlobal
155
+ ? Utils.getGlobalCommand(header.commandIdentifier)
156
+ : header.frameControl.direction === enums_1.Direction.CLIENT_TO_SERVER
157
+ ? cluster.getCommand(header.commandIdentifier)
158
+ : cluster.getCommandResponse(header.commandIdentifier);
159
+ const payload = ZclFrame.parsePayload(header, cluster, buffalo);
160
+ return new ZclFrame(header, payload, cluster, command);
161
+ }
162
+ static parsePayload(header, cluster, buffalo) {
163
+ if (header.isGlobal) {
164
+ return ZclFrame.parsePayloadGlobal(header, buffalo);
165
+ }
166
+ if (header.isSpecific) {
167
+ return ZclFrame.parsePayloadCluster(header, cluster, buffalo);
168
+ }
169
+ throw new Error(`Unsupported frameType '${header.frameControl.frameType}'`);
170
+ }
171
+ static parsePayloadCluster(header, cluster, buffalo) {
172
+ const command = header.frameControl.direction === enums_1.Direction.CLIENT_TO_SERVER
173
+ ? cluster.getCommand(header.commandIdentifier)
174
+ : cluster.getCommandResponse(header.commandIdentifier);
175
+ const payload = {};
176
+ for (const parameter of command.parameters) {
177
+ const options = { payload };
178
+ if (!ZclFrame.conditionsValid(parameter, payload, buffalo.getBuffer().length - buffalo.getPosition())) {
179
+ continue;
180
+ }
181
+ if (ListTypes.includes(parameter.type)) {
182
+ const lengthParameter = command.parameters[command.parameters.indexOf(parameter) - 1];
183
+ const length = payload[lengthParameter.name];
184
+ if (typeof length === "number") {
185
+ options.length = length;
186
+ }
187
+ }
188
+ try {
189
+ const valueToProcess = buffalo.read(parameter.type, options);
190
+ payload[parameter.name] = Utils.processParameterRead(parameter, valueToProcess);
191
+ }
192
+ catch (error) {
193
+ throw new Error(`Cannot parse '${command.name}:${parameter.name}' (${error.message})`);
194
+ }
195
+ }
196
+ return payload;
197
+ }
198
+ static parsePayloadGlobal(header, buffalo) {
199
+ 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
+ }
255
+ }
256
+ /**
257
+ * Utils
258
+ */
259
+ static conditionsValid(parameter, entry, remainingBufferBytes) {
260
+ if (parameter.conditions) {
261
+ for (const condition of parameter.conditions) {
262
+ switch (condition.type) {
263
+ case enums_1.ParameterCondition.FIELD_EQUAL: {
264
+ if (condition.reversed) {
265
+ if (entry[condition.field] === condition.value) {
266
+ return false;
267
+ }
268
+ }
269
+ else if (entry[condition.field] !== condition.value) {
270
+ return false;
271
+ }
272
+ break;
273
+ }
274
+ case enums_1.ParameterCondition.BITMASK_SET: {
275
+ if (condition.reversed) {
276
+ if ((entry[condition.param] & condition.mask) === condition.mask) {
277
+ return false;
278
+ }
279
+ }
280
+ else if ((entry[condition.param] & condition.mask) !== condition.mask) {
281
+ return false;
282
+ }
283
+ break;
284
+ }
285
+ case enums_1.ParameterCondition.BITFIELD_ENUM: {
286
+ if (((entry[condition.param] >> condition.offset) & ((1 << condition.size) - 1)) !== condition.value) {
287
+ return false;
288
+ }
289
+ break;
290
+ }
291
+ case enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES: {
292
+ if (remainingBufferBytes !== undefined && remainingBufferBytes < condition.value) {
293
+ return false;
294
+ }
295
+ break;
296
+ }
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
+ case enums_1.ParameterCondition.FIELD_GT: {
304
+ /*if (condition.reversed) {
305
+ if (entry[condition.field] >= condition.value) {
306
+ return false;
307
+ }
308
+ } else */
309
+ if (entry[condition.field] <= condition.value) {
310
+ return false;
311
+ }
312
+ break;
313
+ }
314
+ }
315
+ }
316
+ }
317
+ return true;
318
+ }
319
+ isCluster(clusterName) {
320
+ return this.cluster.name === clusterName;
321
+ }
322
+ // List of commands is not completed, feel free to add more.
323
+ isCommand(commandName) {
324
+ return this.command.name === commandName;
325
+ }
326
+ }
327
+ exports.ZclFrame = ZclFrame;
328
+ //# sourceMappingURL=zclFrame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zclFrame.js","sourceRoot":"","sources":["../../../src/zspec/zcl/zclFrame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zclHeader.d.ts","sourceRoot":"","sources":["../../../src/zspec/zcl/zclHeader.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAqBtD,qBAAa,SAAS;IAClB,SAAgB,YAAY,EAAE,YAAY,CAAC;IAC3C,SAAgB,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrD,SAAgB,yBAAyB,EAAE,MAAM,CAAC;IAClD,SAAgB,iBAAiB,EAAE,MAAM,CAAC;gBAE9B,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,GAAG,SAAS,EAAE,yBAAyB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM;IAO1I,sDAAsD;IACtD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAEM,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;WAkBzB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;CAiClE"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZclHeader = void 0;
4
+ const logger_1 = require("../../utils/logger");
5
+ const buffaloZcl_1 = require("./buffaloZcl");
6
+ const enums_1 = require("./definition/enums");
7
+ const NS = "zh:zcl:header";
8
+ const HEADER_MINIMAL_LENGTH = 3;
9
+ const HEADER_WITH_MANUF_LENGTH = HEADER_MINIMAL_LENGTH + 2;
10
+ /** ZCL Header frame control frame type */
11
+ const HEADER_CTRL_FRAME_TYPE_MASK = 0x03;
12
+ const HEADER_CTRL_FRAME_TYPE_BIT = 0;
13
+ /** ZCL Header frame control manufacturer specific */
14
+ const HEADER_CTRL_MANUF_SPE_MASK = 0x04;
15
+ const HEADER_CTRL_MANUF_SPE_BIT = 2;
16
+ /** ZCL Header frame control direction */
17
+ const HEADER_CTRL_DIRECTION_MASK = 0x08;
18
+ const HEADER_CTRL_DIRECTION_BIT = 3;
19
+ /** ZCL Header frame control disable default response */
20
+ const HEADER_CTRL_DISABLE_DEF_RESP_MASK = 0x10;
21
+ const HEADER_CTRL_DISABLE_DEF_RESP_BIT = 4;
22
+ /** ZCL Header frame control reserved */
23
+ const HEADER_CTRL_RESERVED_MASK = 0xe0;
24
+ const HEADER_CTRL_RESERVED_BIT = 5;
25
+ class ZclHeader {
26
+ frameControl;
27
+ manufacturerCode;
28
+ transactionSequenceNumber;
29
+ commandIdentifier;
30
+ constructor(frameControl, manufacturerCode, transactionSequenceNumber, commandIdentifier) {
31
+ this.frameControl = frameControl;
32
+ this.manufacturerCode = manufacturerCode;
33
+ this.transactionSequenceNumber = transactionSequenceNumber;
34
+ this.commandIdentifier = commandIdentifier;
35
+ }
36
+ /** Returns the amount of bytes used by this header */
37
+ get length() {
38
+ return this.manufacturerCode === undefined ? HEADER_MINIMAL_LENGTH : HEADER_WITH_MANUF_LENGTH;
39
+ }
40
+ get isGlobal() {
41
+ return this.frameControl.frameType === enums_1.FrameType.GLOBAL;
42
+ }
43
+ get isSpecific() {
44
+ return this.frameControl.frameType === enums_1.FrameType.SPECIFIC;
45
+ }
46
+ write(buffalo) {
47
+ const frameControl = ((this.frameControl.frameType << HEADER_CTRL_FRAME_TYPE_BIT) & HEADER_CTRL_FRAME_TYPE_MASK) |
48
+ (((this.frameControl.manufacturerSpecific ? 1 : 0) << HEADER_CTRL_MANUF_SPE_BIT) & HEADER_CTRL_MANUF_SPE_MASK) |
49
+ ((this.frameControl.direction << HEADER_CTRL_DIRECTION_BIT) & HEADER_CTRL_DIRECTION_MASK) |
50
+ (((this.frameControl.disableDefaultResponse ? 1 : 0) << HEADER_CTRL_DISABLE_DEF_RESP_BIT) & HEADER_CTRL_DISABLE_DEF_RESP_MASK) |
51
+ ((this.frameControl.reservedBits << HEADER_CTRL_RESERVED_BIT) & HEADER_CTRL_RESERVED_MASK);
52
+ buffalo.writeUInt8(frameControl);
53
+ if (this.frameControl.manufacturerSpecific && this.manufacturerCode) {
54
+ buffalo.writeUInt16(this.manufacturerCode);
55
+ }
56
+ buffalo.writeUInt8(this.transactionSequenceNumber);
57
+ buffalo.writeUInt8(this.commandIdentifier);
58
+ }
59
+ static fromBuffer(buffer) {
60
+ // Returns `undefined` in case the ZclHeader cannot be parsed.
61
+ if (buffer.length < HEADER_MINIMAL_LENGTH) {
62
+ logger_1.logger.debug("ZclHeader is too short.", NS);
63
+ return undefined;
64
+ }
65
+ const buffalo = new buffaloZcl_1.BuffaloZcl(buffer);
66
+ const frameControlValue = buffalo.readUInt8();
67
+ const frameControl = {
68
+ frameType: (frameControlValue & HEADER_CTRL_FRAME_TYPE_MASK) >> HEADER_CTRL_FRAME_TYPE_BIT,
69
+ manufacturerSpecific: (frameControlValue & HEADER_CTRL_MANUF_SPE_MASK) >> HEADER_CTRL_MANUF_SPE_BIT === 1,
70
+ direction: (frameControlValue & HEADER_CTRL_DIRECTION_MASK) >> HEADER_CTRL_DIRECTION_BIT,
71
+ disableDefaultResponse: (frameControlValue & HEADER_CTRL_DISABLE_DEF_RESP_MASK) >> HEADER_CTRL_DISABLE_DEF_RESP_BIT === 1,
72
+ reservedBits: (frameControlValue & HEADER_CTRL_RESERVED_MASK) >> HEADER_CTRL_RESERVED_BIT,
73
+ };
74
+ let manufacturerCode;
75
+ if (frameControl.manufacturerSpecific) {
76
+ if (buffer.length < HEADER_WITH_MANUF_LENGTH) {
77
+ logger_1.logger.debug("ZclHeader is too short for control with manufacturer-specific.", NS);
78
+ return undefined;
79
+ }
80
+ manufacturerCode = buffalo.readUInt16();
81
+ }
82
+ const transactionSequenceNumber = buffalo.readUInt8();
83
+ const commandIdentifier = buffalo.readUInt8();
84
+ return new ZclHeader(frameControl, manufacturerCode, transactionSequenceNumber, commandIdentifier);
85
+ }
86
+ }
87
+ exports.ZclHeader = ZclHeader;
88
+ //# sourceMappingURL=zclHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zclHeader.js","sourceRoot":"","sources":["../../../src/zspec/zcl/zclHeader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,86 +1,93 @@
1
1
  {
2
- "author": {
3
- "name": "willieee802"
4
- },
5
- "dependencies": {
6
- "@serialport/bindings-cpp": "^12.0.1",
7
- "@serialport/parser-delimiter": "^12.0.0",
8
- "@serialport/stream": "^12.0.0",
9
- "bonjour-service": "^1.2.1",
10
- "debounce": "^2.0.0",
11
- "debug": "^4.3.4",
12
- "fast-deep-equal": "^3.1.3",
13
- "mixin-deep": "^2.0.1",
14
- "mz": "^2.7.0",
15
- "slip": "^1.0.2"
16
- },
17
- "deprecated": false,
18
- "description": "Custom fork from zigbee-herdsman",
19
- "devDependencies": {
20
- "@babel/cli": "*",
21
- "@babel/core": "*",
22
- "@babel/preset-env": "*",
23
- "@babel/preset-typescript": "*",
24
- "@serialport/binding-mock": "^10.2.2",
25
- "@types/debounce": "^1.2.4",
26
- "@types/debug": "*",
27
- "@types/jest": "*",
28
- "@types/mz": "^2.7.8",
29
- "@types/nedb": "*",
30
- "@typescript-eslint/eslint-plugin": "*",
31
- "@typescript-eslint/parser": "*",
32
- "babel-jest": "*",
33
- "eslint": "*",
34
- "jest": "*",
35
- "regenerator-runtime": "*",
36
- "typedoc": "^0.25.13",
37
- "typedoc-plugin-markdown": "*",
38
- "typedoc-plugin-no-inherit": "*",
39
- "@biomejs/biome": "^2.4.4",
40
- "@types/node": "^24.10.13",
41
- "@vitest/coverage-v8": "^3.1.1",
42
- "rimraf": "^6.1.3",
43
- "typescript": "^5.9.2",
44
- "vitest": "^3.2.4",
45
- "@date-fns/tz": "^1.4.1",
46
- "@serialport/bindings-cpp": "^13.0.1",
47
- "@serialport/parser-delimiter": "^13.0.0",
48
- "@serialport/stream": "^13.0.0",
49
- "bonjour-service": "^1.3.0",
50
- "debounce": "^3.0.0",
51
- "fast-deep-equal": "^3.1.3",
52
- "slip": "^1.0.2",
53
- "zigbee-on-host": "^0.2.4"
54
- },
55
- "homepage": "https://github.com/Koenkk/zigbee-herdsman",
56
- "license": "MIT",
57
- "main": "dist/index.js",
58
- "types": "dist/index.d.ts",
59
- "name": "@willieee802/zigbee-herdsman",
60
- "repository": {
61
- "type": "git",
62
- "url": "git://github.com/willieee802/zigbee-herdsman.git"
63
- },
64
- "scripts": {
65
- "build": "./node_modules/.bin/tsc",
66
- "start": "./node_modules/.bin/tsc -w",
67
- "test": "jest test --silent --maxWorkers=50%",
68
- "test-with-coverage": "jest test --silent --maxWorkers=50% --coverage",
69
- "test-watch": "jest test --silent --maxWorkers=25% --watch",
70
- "eslint": "node_modules/.bin/eslint . --ext .ts --max-warnings=0",
71
- "docs": "typedoc --tsconfig typedoc-tsconfig.json",
72
- "clean": "rimraf temp coverage dist",
73
- "prepack": "npm run clean && npm run build"
74
- },
75
- "version": "0.49.0",
76
- "jest": {
77
- "coverageThreshold": {
78
- "global": {
79
- "branches": 100,
80
- "functions": 100,
81
- "lines": 100,
82
- "statements": 100
83
- }
2
+ "author": {
3
+ "name": "willieee802"
4
+ },
5
+ "dependencies": {
6
+ "@serialport/bindings-cpp": "^12.0.1",
7
+ "@serialport/parser-delimiter": "^12.0.0",
8
+ "@serialport/stream": "^12.0.0",
9
+ "bonjour-service": "^1.2.1",
10
+ "debounce": "^2.0.0",
11
+ "debug": "^4.3.4",
12
+ "fast-deep-equal": "^3.1.3",
13
+ "mixin-deep": "^2.0.1",
14
+ "mz": "^2.7.0",
15
+ "slip": "^1.0.2"
16
+ },
17
+ "deprecated": false,
18
+ "description": "Custom fork from zigbee-herdsman",
19
+ "devDependencies": {
20
+ "@babel/cli": "*",
21
+ "@babel/core": "*",
22
+ "@babel/preset-env": "*",
23
+ "@babel/preset-typescript": "*",
24
+ "@serialport/binding-mock": "^10.2.2",
25
+ "@types/debounce": "^1.2.4",
26
+ "@types/debug": "*",
27
+ "@types/jest": "*",
28
+ "@types/mz": "^2.7.8",
29
+ "@types/nedb": "*",
30
+ "@typescript-eslint/eslint-plugin": "*",
31
+ "@typescript-eslint/parser": "*",
32
+ "babel-jest": "*",
33
+ "eslint": "*",
34
+ "jest": "*",
35
+ "regenerator-runtime": "*",
36
+ "typedoc": "^0.25.13",
37
+ "typedoc-plugin-markdown": "*",
38
+ "typedoc-plugin-no-inherit": "*",
39
+ "@biomejs/biome": "^2.4.5",
40
+ "@types/node": "^24.11.0",
41
+ "@vitest/coverage-v8": "^3.1.1",
42
+ "rimraf": "^6.1.3",
43
+ "typescript": "^5.9.2",
44
+ "vitest": "^3.2.4",
45
+ "@date-fns/tz": "^1.4.1",
46
+ "@serialport/bindings-cpp": "^13.0.1",
47
+ "@serialport/parser-delimiter": "^13.0.0",
48
+ "@serialport/stream": "^13.0.0",
49
+ "bonjour-service": "^1.3.0",
50
+ "debounce": "^3.0.0",
51
+ "fast-deep-equal": "^3.1.3",
52
+ "slip": "^1.0.2",
53
+ "zigbee-on-host": "^0.2.4"
54
+ },
55
+ "homepage": "https://github.com/Koenkk/zigbee-herdsman",
56
+ "license": "MIT",
57
+ "main": "dist/index.js",
58
+ "types": "dist/index.d.ts",
59
+ "name": "@willieee802/zigbee-herdsman",
60
+ "repository": {
61
+ "type": "git",
62
+ "url": "git://github.com/willieee802/zigbee-herdsman.git"
63
+ },
64
+ "scripts": {
65
+ "build": "./node_modules/.bin/tsc",
66
+ "start": "./node_modules/.bin/tsc -w",
67
+ "test": "jest test --silent --maxWorkers=50%",
68
+ "test-with-coverage": "jest test --silent --maxWorkers=50% --coverage",
69
+ "test-watch": "jest test --silent --maxWorkers=25% --watch",
70
+ "eslint": "node_modules/.bin/eslint . --ext .ts --max-warnings=0",
71
+ "docs": "typedoc --tsconfig typedoc-tsconfig.json",
72
+ "clean": "rimraf temp coverage dist",
73
+ "prepack": "npm run clean && npm run build"
74
+ },
75
+ "version": "0.49.1",
76
+ "jest": {
77
+ "coverageThreshold": {
78
+ "global": {
79
+ "branches": 100,
80
+ "functions": 100,
81
+ "lines": 100,
82
+ "statements": 100
84
83
  }
85
84
  }
86
- }
85
+ },
86
+ "pnpm": {
87
+ "onlyBuiltDependencies": [
88
+ "@biomejs/biome",
89
+ "@serialport/bindings-cpp",
90
+ "esbuild"
91
+ ]
92
+ }
93
+ }
@@ -307,8 +307,11 @@ function buildImageBlockPayload(
307
307
  ) {
308
308
  let dataSize = baseDataSize;
309
309
 
310
- if (requestPayload.manufacturerCode === Zcl.ManufacturerCode.INSTA_GMBH) {
311
- // Insta devices, OTA only works for data sizes 40 and smaller (= manufacturerCode 4474).
310
+ if (
311
+ requestPayload.manufacturerCode === Zcl.ManufacturerCode.INSTA_GMBH ||
312
+ requestPayload.manufacturerCode === Zcl.ManufacturerCode.DRESDEN_ELEKTRONIK_INGENIEURTECHNIK_GMBH
313
+ ) {
314
+ // Insta and some Dresden Elektronik devices, OTA only works for data sizes 40 and smaller (= manufacturerCode 4474 [Insta], 4405 [Dresden Elektronik]).
312
315
  dataSize = 40;
313
316
  }
314
317