zigbee-herdsman 10.0.6 → 10.0.8
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/CHANGELOG.md +21 -0
- package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.js +4 -0
- package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
- package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/cluster.js +6 -87
- package/dist/zspec/zcl/definition/cluster.js.map +1 -1
- package/dist/zspec/zcl/definition/clusters-types.d.ts +0 -71
- package/dist/zspec/zcl/definition/clusters-types.d.ts.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [10.0.8](https://github.com/Koenkk/zigbee-herdsman/compare/v10.0.7...v10.0.8) (2026-05-08)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **ignore:** bump @biomejs/biome from 2.4.11 to 2.4.12 in the minor-patch group ([#1747](https://github.com/Koenkk/zigbee-herdsman/issues/1747)) ([d8a467f](https://github.com/Koenkk/zigbee-herdsman/commit/d8a467fa345633ab4252e3e283abe2e7cfa64140))
|
|
9
|
+
* **ignore:** bump @biomejs/biome from 2.4.13 to 2.4.14 in the minor-patch group ([#1754](https://github.com/Koenkk/zigbee-herdsman/issues/1754)) ([ac05792](https://github.com/Koenkk/zigbee-herdsman/commit/ac057926458c6b199b50596d101825ef2be5d151))
|
|
10
|
+
* **ignore:** bump the minor-patch group with 2 updates ([#1750](https://github.com/Koenkk/zigbee-herdsman/issues/1750)) ([5ad1810](https://github.com/Koenkk/zigbee-herdsman/commit/5ad18102282f0581c35b6909caabf70cbf622134))
|
|
11
|
+
* MoveToLevel min and max ([#1752](https://github.com/Koenkk/zigbee-herdsman/issues/1752)) ([b7bf626](https://github.com/Koenkk/zigbee-herdsman/commit/b7bf6264d3f178fcbf53d02c2906b0fe52e941d8))
|
|
12
|
+
* Preserve genBasic attributes when re-read returns undefined ([#1753](https://github.com/Koenkk/zigbee-herdsman/issues/1753)) ([9ab49a1](https://github.com/Koenkk/zigbee-herdsman/commit/9ab49a1868899cf724c00e8faf077b588c2842d0))
|
|
13
|
+
|
|
14
|
+
## [10.0.7](https://github.com/Koenkk/zigbee-herdsman/compare/v10.0.6...v10.0.7) (2026-04-11)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* **ignore:** bump @biomejs/biome from 2.4.10 to 2.4.11 in the minor-patch group ([#1740](https://github.com/Koenkk/zigbee-herdsman/issues/1740)) ([b613178](https://github.com/Koenkk/zigbee-herdsman/commit/b613178187b22d0550d2828dd7c7ca3c6baa4ab0))
|
|
20
|
+
* **ignore:** bump typescript from 5.9.2 to 6.0.2 ([#1739](https://github.com/Koenkk/zigbee-herdsman/issues/1739)) ([6eeaaee](https://github.com/Koenkk/zigbee-herdsman/commit/6eeaaeee313add4a123f8fb3b3d5a53eb7c2577e))
|
|
21
|
+
* Move Legrand and Tuya attributes from ZH to ZHC ([#1734](https://github.com/Koenkk/zigbee-herdsman/issues/1734)) ([9b9fb3b](https://github.com/Koenkk/zigbee-herdsman/commit/9b9fb3b5766d7a9f9dc6f38161208e919e5abd2e))
|
|
22
|
+
* Move Tuya specific attributes in lightingColorCtrl cluster from ZH to ZHC ([#1743](https://github.com/Koenkk/zigbee-herdsman/issues/1743)) ([8506a42](https://github.com/Koenkk/zigbee-herdsman/commit/8506a426587193344481497d886ee5c6f143b6c7))
|
|
23
|
+
|
|
3
24
|
## [10.0.6](https://github.com/Koenkk/zigbee-herdsman/compare/v10.0.5...v10.0.6) (2026-04-07)
|
|
4
25
|
|
|
5
26
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zclFrameConverter.d.ts","sourceRoot":"","sources":["../../../src/controller/helpers/zclFrameConverter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAC;AAEvC,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAC,2BAA2B,EAAE,cAAc,EAAC,MAAM,WAAW,CAAC;AAW3E,iBAAS,iBAAiB,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,SAAS,cAAc,GAAG,SAAS,GAAG,SAAS,EACxG,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,oBAAoB,EAAE,MAAM,GAAG,SAAS,EACxC,cAAc,EAAE,cAAc,GAC/B,2BAA2B,CAAC,EAAE,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"zclFrameConverter.d.ts","sourceRoot":"","sources":["../../../src/controller/helpers/zclFrameConverter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAC;AAEvC,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAC,2BAA2B,EAAE,cAAc,EAAC,MAAM,WAAW,CAAC;AAW3E,iBAAS,iBAAiB,CAAC,EAAE,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,SAAS,cAAc,GAAG,SAAS,GAAG,SAAS,EACxG,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,oBAAoB,EAAE,MAAM,GAAG,SAAS,EACxC,cAAc,EAAE,cAAc,GAC/B,2BAA2B,CAAC,EAAE,EAAE,MAAM,CAAC,CA6BzC;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,oBAAoB,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,EAAE,cAAc,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAczI;AAED,OAAO,EAAC,iBAAiB,EAAE,aAAa,EAAC,CAAC"}
|
|
@@ -50,6 +50,10 @@ function attributeKeyValue(frame, deviceManufacturerID, customClusters) {
|
|
|
50
50
|
const manufacturerCode = legrandWorkaround ? deviceManufacturerID : frame.header.manufacturerCode;
|
|
51
51
|
// TODO: remove this type once Zcl.Frame is typed
|
|
52
52
|
for (const item of frame.payload) {
|
|
53
|
+
// Per ZCL spec, non-success `readRsp` records carry no value; don't synthesize one.
|
|
54
|
+
if ("status" in item && item.status !== Zcl.Status.SUCCESS) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
53
57
|
const attribute = Zcl.Utils.getClusterAttribute(cluster, item.attrId, manufacturerCode);
|
|
54
58
|
if (attribute) {
|
|
55
59
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zclFrameConverter.js","sourceRoot":"","sources":["../../../src/controller/helpers/zclFrameConverter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"zclFrameConverter.js","sourceRoot":"","sources":["../../../src/controller/helpers/zclFrameConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../../../src/zspec/zcl/definition/cluster.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AAEnD,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../../../src/zspec/zcl/definition/cluster.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AAEnD,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CA0uO3D,CAAC"}
|
|
@@ -712,7 +712,9 @@ exports.Clusters = {
|
|
|
712
712
|
name: "moveToLevel",
|
|
713
713
|
ID: 0x00,
|
|
714
714
|
parameters: [
|
|
715
|
-
{ name: "level", type: enums_1.DataType.UINT8 },
|
|
715
|
+
{ name: "level", type: enums_1.DataType.UINT8, max: 0xff },
|
|
716
|
+
// for genLevelCtrlForLighting:
|
|
717
|
+
// {name: "level", type: DataType.UINT8, min: 1, max: 0xfe},
|
|
716
718
|
{ name: "transtime", type: enums_1.DataType.UINT16 },
|
|
717
719
|
// XXX: behind bytes condition due to likely missing fields with many devices
|
|
718
720
|
{ name: "optionsMask", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }] },
|
|
@@ -775,7 +777,9 @@ exports.Clusters = {
|
|
|
775
777
|
name: "moveToLevelWithOnOff",
|
|
776
778
|
ID: 0x04,
|
|
777
779
|
parameters: [
|
|
778
|
-
{ name: "level", type: enums_1.DataType.UINT8 },
|
|
780
|
+
{ name: "level", type: enums_1.DataType.UINT8, max: 0xff },
|
|
781
|
+
// for genLevelCtrlForLighting:
|
|
782
|
+
// {name: "level", type: DataType.UINT8, min: 1, max: 0xfe},
|
|
779
783
|
{ name: "transtime", type: enums_1.DataType.UINT16 },
|
|
780
784
|
// XXX: behind bytes condition due to likely missing fields with many devices
|
|
781
785
|
{ name: "optionsMask", type: enums_1.DataType.BITMAP8, conditions: [{ type: enums_1.ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 1 }] },
|
|
@@ -3407,44 +3411,6 @@ exports.Clusters = {
|
|
|
3407
3411
|
windowCoveringMode: { name: "windowCoveringMode", ID: 0x0017, type: enums_1.DataType.BITMAP8, write: true, required: true, default: 4 },
|
|
3408
3412
|
intermediateSetpointsLift: { name: "intermediateSetpointsLift", ID: 0x0018, type: enums_1.DataType.OCTET_STR, write: true, default: "1,0x0000" },
|
|
3409
3413
|
intermediateSetpointsTilt: { name: "intermediateSetpointsTilt", ID: 0x0019, type: enums_1.DataType.OCTET_STR, write: true, default: "1,0x0000" },
|
|
3410
|
-
// custom
|
|
3411
|
-
// XXX: doesn't exist?
|
|
3412
|
-
tuyaMovingState: { name: "tuyaMovingState", ID: 0xf000, type: enums_1.DataType.ENUM8, write: true, max: 0xff },
|
|
3413
|
-
tuyaCalibration: { name: "tuyaCalibration", ID: 0xf001, type: enums_1.DataType.ENUM8, write: true, max: 0xff },
|
|
3414
|
-
stepPositionLift: {
|
|
3415
|
-
name: "stepPositionLift",
|
|
3416
|
-
ID: 0xf001,
|
|
3417
|
-
type: enums_1.DataType.ENUM8,
|
|
3418
|
-
manufacturerCode: manufacturerCode_1.ManufacturerCode.LEGRAND_GROUP,
|
|
3419
|
-
write: true,
|
|
3420
|
-
max: 0xff,
|
|
3421
|
-
},
|
|
3422
|
-
tuyaMotorReversal: { name: "tuyaMotorReversal", ID: 0xf002, type: enums_1.DataType.ENUM8, write: true, max: 0xff },
|
|
3423
|
-
calibrationMode: {
|
|
3424
|
-
name: "calibrationMode",
|
|
3425
|
-
ID: 0xf002,
|
|
3426
|
-
type: enums_1.DataType.ENUM8,
|
|
3427
|
-
manufacturerCode: manufacturerCode_1.ManufacturerCode.LEGRAND_GROUP,
|
|
3428
|
-
write: true,
|
|
3429
|
-
max: 0xff,
|
|
3430
|
-
},
|
|
3431
|
-
moesCalibrationTime: { name: "moesCalibrationTime", ID: 0xf003, type: enums_1.DataType.UINT16, write: true, max: 0xffff },
|
|
3432
|
-
targetPositionTiltPercentage: {
|
|
3433
|
-
name: "targetPositionTiltPercentage",
|
|
3434
|
-
ID: 0xf003,
|
|
3435
|
-
type: enums_1.DataType.ENUM8,
|
|
3436
|
-
manufacturerCode: manufacturerCode_1.ManufacturerCode.LEGRAND_GROUP,
|
|
3437
|
-
write: true,
|
|
3438
|
-
max: 0xff,
|
|
3439
|
-
},
|
|
3440
|
-
stepPositionTilt: {
|
|
3441
|
-
name: "stepPositionTilt",
|
|
3442
|
-
ID: 0xf004,
|
|
3443
|
-
type: enums_1.DataType.ENUM8,
|
|
3444
|
-
manufacturerCode: manufacturerCode_1.ManufacturerCode.LEGRAND_GROUP,
|
|
3445
|
-
write: true,
|
|
3446
|
-
max: 0xff,
|
|
3447
|
-
},
|
|
3448
3414
|
},
|
|
3449
3415
|
commands: {
|
|
3450
3416
|
upOpen: { name: "upOpen", ID: 0x00, parameters: [], required: true },
|
|
@@ -3852,9 +3818,6 @@ exports.Clusters = {
|
|
|
3852
3818
|
max: 0xfeff,
|
|
3853
3819
|
special: [["SetColorTempToPreviousValue", "ffff"]],
|
|
3854
3820
|
},
|
|
3855
|
-
// custom
|
|
3856
|
-
tuyaRgbMode: { name: "tuyaRgbMode", ID: 0xf000, type: enums_1.DataType.UINT8, write: true, max: 0xff },
|
|
3857
|
-
tuyaBrightness: { name: "tuyaBrightness", ID: 0xf001, type: enums_1.DataType.UINT8, write: true, max: 0xff },
|
|
3858
3821
|
},
|
|
3859
3822
|
commands: {
|
|
3860
3823
|
moveToHue: {
|
|
@@ -4176,50 +4139,6 @@ exports.Clusters = {
|
|
|
4176
4139
|
],
|
|
4177
4140
|
// required: true only if bit 0 of colorCapabilities attribute is 1
|
|
4178
4141
|
},
|
|
4179
|
-
// custom
|
|
4180
|
-
tuyaMoveToHueAndSaturationBrightness: {
|
|
4181
|
-
name: "tuyaMoveToHueAndSaturationBrightness",
|
|
4182
|
-
ID: 0x06,
|
|
4183
|
-
parameters: [
|
|
4184
|
-
{ name: "hue", type: enums_1.DataType.UINT8, max: 0xff },
|
|
4185
|
-
{ name: "saturation", type: enums_1.DataType.UINT8, max: 0xff },
|
|
4186
|
-
{ name: "transtime", type: enums_1.DataType.UINT16, max: 0xffff },
|
|
4187
|
-
{ name: "brightness", type: enums_1.DataType.UINT8, max: 0xff },
|
|
4188
|
-
],
|
|
4189
|
-
},
|
|
4190
|
-
tuyaSetMinimumBrightness: {
|
|
4191
|
-
name: "tuyaSetMinimumBrightness",
|
|
4192
|
-
ID: 0xe0,
|
|
4193
|
-
parameters: [{ name: "minimum", type: enums_1.DataType.UINT16, max: 0xffff }],
|
|
4194
|
-
},
|
|
4195
|
-
tuyaMoveToHueAndSaturationBrightness2: {
|
|
4196
|
-
name: "tuyaMoveToHueAndSaturationBrightness2",
|
|
4197
|
-
ID: 0xe1,
|
|
4198
|
-
parameters: [
|
|
4199
|
-
{ name: "hue", type: enums_1.DataType.UINT16, max: 0xffff },
|
|
4200
|
-
{ name: "saturation", type: enums_1.DataType.UINT16, max: 0xffff },
|
|
4201
|
-
{ name: "brightness", type: enums_1.DataType.UINT16, max: 0xffff },
|
|
4202
|
-
],
|
|
4203
|
-
},
|
|
4204
|
-
tuyaRgbMode: { name: "tuyaRgbMode", ID: 0xf0, parameters: [{ name: "enable", type: enums_1.DataType.UINT8, max: 0xff }] },
|
|
4205
|
-
tuyaOnStartUp: {
|
|
4206
|
-
name: "tuyaOnStartUp",
|
|
4207
|
-
ID: 0xf9,
|
|
4208
|
-
parameters: [
|
|
4209
|
-
{ name: "mode", type: enums_1.DataType.UINT16, max: 0xffff },
|
|
4210
|
-
{ name: "data", type: enums_1.BuffaloZclDataType.LIST_UINT8 },
|
|
4211
|
-
],
|
|
4212
|
-
},
|
|
4213
|
-
tuyaDoNotDisturb: { name: "tuyaDoNotDisturb", ID: 0xfa, parameters: [{ name: "enable", type: enums_1.DataType.UINT8, max: 0xff }] },
|
|
4214
|
-
tuyaOnOffTransitionTime: {
|
|
4215
|
-
name: "tuyaOnOffTransitionTime",
|
|
4216
|
-
ID: 0xfb,
|
|
4217
|
-
parameters: [
|
|
4218
|
-
{ name: "unknown", type: enums_1.DataType.UINT8, max: 0xff },
|
|
4219
|
-
{ name: "onTransitionTime", type: enums_1.BuffaloZclDataType.BIG_ENDIAN_UINT24 },
|
|
4220
|
-
{ name: "offTransitionTime", type: enums_1.BuffaloZclDataType.BIG_ENDIAN_UINT24 },
|
|
4221
|
-
],
|
|
4222
|
-
},
|
|
4223
4142
|
},
|
|
4224
4143
|
commandsResponse: {},
|
|
4225
4144
|
},
|