zigbee-herdsman 6.0.0 → 6.0.2
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/.github/workflows/ci.yml +10 -5
- package/.github/workflows/typedoc.yaml +2 -2
- package/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +19 -0
- package/biome.json +1 -1
- package/dist/adapter/ezsp/driver/uart.js +1 -1
- package/dist/adapter/ezsp/driver/uart.js.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.js +4 -4
- package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.js +4 -4
- package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
- package/dist/controller/controller.d.ts.map +1 -1
- package/dist/controller/controller.js +7 -10
- package/dist/controller/controller.js.map +1 -1
- package/dist/controller/events.d.ts +1 -1
- package/dist/controller/events.d.ts.map +1 -1
- package/dist/controller/helpers/request.d.ts.map +1 -1
- package/dist/controller/helpers/request.js +2 -1
- package/dist/controller/helpers/request.js.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.d.ts +2 -4
- package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.js +2 -0
- package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
- package/dist/controller/model/device.d.ts +13 -24
- package/dist/controller/model/device.d.ts.map +1 -1
- package/dist/controller/model/device.js +89 -129
- package/dist/controller/model/device.js.map +1 -1
- package/dist/controller/model/endpoint.d.ts +17 -16
- package/dist/controller/model/endpoint.d.ts.map +1 -1
- package/dist/controller/model/endpoint.js +31 -16
- package/dist/controller/model/endpoint.js.map +1 -1
- package/dist/controller/model/group.d.ts +6 -6
- package/dist/controller/model/group.d.ts.map +1 -1
- package/dist/controller/model/group.js +5 -3
- package/dist/controller/model/group.js.map +1 -1
- package/dist/controller/model/index.d.ts +1 -0
- package/dist/controller/model/index.d.ts.map +1 -1
- package/dist/controller/model/index.js +3 -1
- package/dist/controller/model/index.js.map +1 -1
- package/dist/controller/model/zigbeeEntity.d.ts +8 -0
- package/dist/controller/model/zigbeeEntity.d.ts.map +1 -0
- package/dist/controller/model/zigbeeEntity.js +11 -0
- package/dist/controller/model/zigbeeEntity.js.map +1 -0
- package/dist/controller/tstype.d.ts +22 -0
- package/dist/controller/tstype.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/cluster.js +2 -9
- package/dist/zspec/zcl/definition/cluster.js.map +1 -1
- package/dist/zspec/zcl/definition/clusters-typegen.js +61 -13
- package/dist/zspec/zcl/definition/clusters-typegen.js.map +1 -1
- package/dist/zspec/zcl/definition/clusters-types.d.ts +173 -140
- package/dist/zspec/zcl/definition/clusters-types.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/enums.d.ts +10 -0
- package/dist/zspec/zcl/definition/enums.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/enums.js +12 -1
- package/dist/zspec/zcl/definition/enums.js.map +1 -1
- package/dist/zspec/zcl/definition/tstype.d.ts +1 -1
- package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
- package/dist/zspec/zcl/index.d.ts +1 -0
- package/dist/zspec/zcl/index.d.ts.map +1 -1
- package/dist/zspec/zcl/index.js.map +1 -1
- package/dist/zspec/zcl/utils.d.ts +1 -1
- package/dist/zspec/zcl/utils.d.ts.map +1 -1
- package/dist/zspec/zcl/utils.js +1 -1
- package/dist/zspec/zcl/utils.js.map +1 -1
- package/package.json +3 -4
- package/src/adapter/ezsp/driver/driver.ts +1 -1
- package/src/adapter/ezsp/driver/uart.ts +1 -1
- package/src/adapter/z-stack/adapter/zStackAdapter.ts +4 -4
- package/src/adapter/zigate/adapter/zigateAdapter.ts +4 -4
- package/src/controller/controller.ts +11 -15
- package/src/controller/events.ts +1 -1
- package/src/controller/helpers/request.ts +3 -1
- package/src/controller/helpers/zclFrameConverter.ts +13 -17
- package/src/controller/model/device.ts +104 -148
- package/src/controller/model/endpoint.ts +112 -64
- package/src/controller/model/group.ts +33 -9
- package/src/controller/model/index.ts +1 -0
- package/src/controller/model/zigbeeEntity.ts +30 -0
- package/src/controller/tstype.ts +234 -0
- package/src/zspec/zcl/definition/cluster.ts +2 -9
- package/src/zspec/zcl/definition/clusters-typegen.ts +96 -19
- package/src/zspec/zcl/definition/clusters-types.ts +195 -146
- package/src/zspec/zcl/definition/enums.ts +11 -0
- package/src/zspec/zcl/definition/tstype.ts +0 -1
- package/src/zspec/zcl/index.ts +1 -0
- package/src/zspec/zcl/utils.ts +1 -1
- package/test/adapter/ezsp/uart.test.ts +2 -2
- package/test/adapter/z-stack/znp.test.ts +4 -4
- package/test/benchOptions.ts +14 -0
- package/test/controller.bench.ts +96 -75
- package/test/controller.test.ts +296 -98
- package/test/requests.bench.ts +37 -14
- package/test/vitest.config.mts +1 -2
- package/test/zcl.test.ts +1 -1
- package/test/zspec/zcl/utils.test.ts +4 -4
package/test/requests.bench.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {InterviewState} from "../src/controller/model/device";
|
|
|
7
7
|
import {setLogger} from "../src/utils/logger";
|
|
8
8
|
import * as Zcl from "../src/zspec/zcl";
|
|
9
9
|
import * as Zdo from "../src/zspec/zdo";
|
|
10
|
+
import {BENCH_OPTIONS} from "./benchOptions";
|
|
10
11
|
import {uint16To8Array} from "./utils/math";
|
|
11
12
|
|
|
12
13
|
let sendZclFrameToEndpointResponse: ZclPayload | undefined;
|
|
@@ -107,14 +108,12 @@ const BASIC_RESP = Zcl.Frame.create(
|
|
|
107
108
|
).toBuffer();
|
|
108
109
|
|
|
109
110
|
describe("Requests", () => {
|
|
110
|
-
beforeEach(() => {
|
|
111
|
-
sendZclFrameToEndpointResponse = undefined;
|
|
112
|
-
sendZdoResponse = undefined;
|
|
113
|
-
});
|
|
114
|
-
|
|
115
111
|
bench(
|
|
116
112
|
"device lqi",
|
|
117
113
|
async () => {
|
|
114
|
+
sendZclFrameToEndpointResponse = undefined;
|
|
115
|
+
sendZdoResponse = undefined;
|
|
116
|
+
|
|
118
117
|
sendZdoResponse = Zdo.Buffalo.readResponse(true, Zdo.ClusterId.LQI_TABLE_RESPONSE, LQI_TABLE_RESPONSE);
|
|
119
118
|
const resp = await device.lqi();
|
|
120
119
|
|
|
@@ -122,20 +121,26 @@ describe("Requests", () => {
|
|
|
122
121
|
throw new Error("Invalid response");
|
|
123
122
|
}
|
|
124
123
|
},
|
|
125
|
-
|
|
124
|
+
BENCH_OPTIONS,
|
|
126
125
|
);
|
|
127
126
|
|
|
128
127
|
bench(
|
|
129
128
|
"device.endpoint write basic",
|
|
130
129
|
async () => {
|
|
130
|
+
sendZclFrameToEndpointResponse = undefined;
|
|
131
|
+
sendZdoResponse = undefined;
|
|
132
|
+
|
|
131
133
|
await endpoint.write("genBasic", {modelId: "Herd-02", manufacturerName: "HerdsmanNew"}, {sendPolicy: "immediate"});
|
|
132
134
|
},
|
|
133
|
-
|
|
135
|
+
BENCH_OPTIONS,
|
|
134
136
|
);
|
|
135
137
|
|
|
136
138
|
bench(
|
|
137
139
|
"device.endpoint read basic",
|
|
138
140
|
async () => {
|
|
141
|
+
sendZclFrameToEndpointResponse = undefined;
|
|
142
|
+
sendZdoResponse = undefined;
|
|
143
|
+
|
|
139
144
|
sendZclFrameToEndpointResponse = {
|
|
140
145
|
clusterID: Zcl.Clusters.genBasic.ID,
|
|
141
146
|
header: Zcl.Header.fromBuffer(BASIC_RESP),
|
|
@@ -153,54 +158,72 @@ describe("Requests", () => {
|
|
|
153
158
|
throw new Error("Invalid response");
|
|
154
159
|
}
|
|
155
160
|
},
|
|
156
|
-
|
|
161
|
+
BENCH_OPTIONS,
|
|
157
162
|
);
|
|
158
163
|
|
|
159
164
|
bench(
|
|
160
165
|
"device.endpoint defaultRsp",
|
|
161
166
|
async () => {
|
|
167
|
+
sendZclFrameToEndpointResponse = undefined;
|
|
168
|
+
sendZdoResponse = undefined;
|
|
169
|
+
|
|
162
170
|
await endpoint.defaultResponse(0, 0, 0, 1);
|
|
163
171
|
},
|
|
164
|
-
|
|
172
|
+
BENCH_OPTIONS,
|
|
165
173
|
);
|
|
166
174
|
|
|
167
175
|
bench(
|
|
168
176
|
"device.endpoint command",
|
|
169
177
|
async () => {
|
|
178
|
+
sendZclFrameToEndpointResponse = undefined;
|
|
179
|
+
sendZdoResponse = undefined;
|
|
180
|
+
|
|
170
181
|
await endpoint.command("genOnOff", "offWithEffect", {effectid: 1, effectvariant: 2}, {sendPolicy: "immediate"});
|
|
171
182
|
},
|
|
172
|
-
|
|
183
|
+
BENCH_OPTIONS,
|
|
173
184
|
);
|
|
174
185
|
|
|
175
186
|
bench(
|
|
176
187
|
"device.endpoint commandResponse",
|
|
177
188
|
async () => {
|
|
189
|
+
sendZclFrameToEndpointResponse = undefined;
|
|
190
|
+
sendZdoResponse = undefined;
|
|
191
|
+
|
|
178
192
|
await endpoint.commandResponse("genAlarms", "alarm", {alarmcode: 123, clusterid: 456}, {sendPolicy: "immediate"});
|
|
179
193
|
},
|
|
180
|
-
|
|
194
|
+
BENCH_OPTIONS,
|
|
181
195
|
);
|
|
182
196
|
|
|
183
197
|
bench(
|
|
184
198
|
"group write basic",
|
|
185
199
|
async () => {
|
|
200
|
+
sendZclFrameToEndpointResponse = undefined;
|
|
201
|
+
sendZdoResponse = undefined;
|
|
202
|
+
|
|
186
203
|
await group.write("genBasic", {modelId: "Herd-02", manufacturerName: "HerdsmanNew"});
|
|
187
204
|
},
|
|
188
|
-
|
|
205
|
+
BENCH_OPTIONS,
|
|
189
206
|
);
|
|
190
207
|
|
|
191
208
|
bench(
|
|
192
209
|
"group read basic",
|
|
193
210
|
async () => {
|
|
211
|
+
sendZclFrameToEndpointResponse = undefined;
|
|
212
|
+
sendZdoResponse = undefined;
|
|
213
|
+
|
|
194
214
|
await group.read("genBasic", ["modelId", "manufacturerName"]);
|
|
195
215
|
},
|
|
196
|
-
|
|
216
|
+
BENCH_OPTIONS,
|
|
197
217
|
);
|
|
198
218
|
|
|
199
219
|
bench(
|
|
200
220
|
"group command",
|
|
201
221
|
async () => {
|
|
222
|
+
sendZclFrameToEndpointResponse = undefined;
|
|
223
|
+
sendZdoResponse = undefined;
|
|
224
|
+
|
|
202
225
|
await group.command("genRssiLocation", "getDevCfg", {targetaddr: IEEE_ADDRESS1}, {});
|
|
203
226
|
},
|
|
204
|
-
|
|
227
|
+
BENCH_OPTIONS,
|
|
205
228
|
);
|
|
206
229
|
});
|
package/test/vitest.config.mts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import codspeedPlugin from "@codspeed/vitest-plugin";
|
|
2
1
|
import {defineConfig} from "vitest/config";
|
|
3
2
|
|
|
4
3
|
export default defineConfig({
|
|
5
|
-
plugins: [
|
|
4
|
+
plugins: [],
|
|
6
5
|
test: {
|
|
7
6
|
globals: true,
|
|
8
7
|
onConsoleLog(_log: string, _type: "stdout" | "stderr"): boolean | undefined {
|
package/test/zcl.test.ts
CHANGED
|
@@ -110,7 +110,7 @@ describe("Zcl", () => {
|
|
|
110
110
|
|
|
111
111
|
it("ZclFrame from buffer parse payload with unknown frame type", () => {
|
|
112
112
|
expect(() => {
|
|
113
|
-
// @ts-
|
|
113
|
+
// @ts-expect-error
|
|
114
114
|
Zcl.Frame.parsePayload({frameControl: {frameType: 9}}, undefined);
|
|
115
115
|
}).toThrow("Unsupported frameType '9'");
|
|
116
116
|
});
|
|
@@ -51,13 +51,13 @@ describe("ZCL Utils", () => {
|
|
|
51
51
|
],
|
|
52
52
|
[
|
|
53
53
|
"by ID with non-matching manufacturer code",
|
|
54
|
-
{key: Zcl.Clusters.
|
|
55
|
-
{cluster: Zcl.Clusters.
|
|
54
|
+
{key: Zcl.Clusters.manuSpecificSinope.ID, manufacturerCode: 123, customClusters: {}},
|
|
55
|
+
{cluster: Zcl.Clusters.manuSpecificSinope, name: "manuSpecificSinope"},
|
|
56
56
|
],
|
|
57
57
|
[
|
|
58
58
|
"by ID with matching manufacturer code",
|
|
59
|
-
{key: Zcl.Clusters.
|
|
60
|
-
{cluster: Zcl.Clusters.
|
|
59
|
+
{key: Zcl.Clusters.manuSpecificSinope.ID, manufacturerCode: Zcl.Clusters.manuSpecificSinope.manufacturerCode!, customClusters: {}},
|
|
60
|
+
{cluster: Zcl.Clusters.manuSpecificSinope, name: "manuSpecificSinope"},
|
|
61
61
|
],
|
|
62
62
|
[
|
|
63
63
|
"custom by ID",
|