zigbee-herdsman 5.0.4 → 6.0.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 (122) hide show
  1. package/.github/dependabot.yml +3 -0
  2. package/.github/workflows/ci.yml +1 -1
  3. package/.github/workflows/typedoc.yaml +1 -1
  4. package/.release-please-manifest.json +1 -1
  5. package/CHANGELOG.md +29 -0
  6. package/biome.json +1 -1
  7. package/dist/adapter/ember/ezsp/buffalo.d.ts +0 -2
  8. package/dist/adapter/ember/ezsp/buffalo.d.ts.map +1 -1
  9. package/dist/adapter/ember/ezsp/buffalo.js +0 -4
  10. package/dist/adapter/ember/ezsp/buffalo.js.map +1 -1
  11. package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
  12. package/dist/adapter/ember/uart/ash.js +0 -2
  13. package/dist/adapter/ember/uart/ash.js.map +1 -1
  14. package/dist/buffalo/buffalo.d.ts +5 -0
  15. package/dist/buffalo/buffalo.d.ts.map +1 -1
  16. package/dist/buffalo/buffalo.js +7 -0
  17. package/dist/buffalo/buffalo.js.map +1 -1
  18. package/dist/controller/controller.d.ts.map +1 -1
  19. package/dist/controller/controller.js +8 -11
  20. package/dist/controller/controller.js.map +1 -1
  21. package/dist/controller/events.d.ts +2 -1
  22. package/dist/controller/events.d.ts.map +1 -1
  23. package/dist/controller/helpers/request.d.ts.map +1 -1
  24. package/dist/controller/helpers/request.js +2 -1
  25. package/dist/controller/helpers/request.js.map +1 -1
  26. package/dist/controller/helpers/zclFrameConverter.d.ts +2 -4
  27. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  28. package/dist/controller/helpers/zclFrameConverter.js +2 -0
  29. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  30. package/dist/controller/model/device.d.ts +13 -24
  31. package/dist/controller/model/device.d.ts.map +1 -1
  32. package/dist/controller/model/device.js +88 -129
  33. package/dist/controller/model/device.js.map +1 -1
  34. package/dist/controller/model/endpoint.d.ts +17 -16
  35. package/dist/controller/model/endpoint.d.ts.map +1 -1
  36. package/dist/controller/model/endpoint.js +31 -16
  37. package/dist/controller/model/endpoint.js.map +1 -1
  38. package/dist/controller/model/group.d.ts +6 -6
  39. package/dist/controller/model/group.d.ts.map +1 -1
  40. package/dist/controller/model/group.js +5 -3
  41. package/dist/controller/model/group.js.map +1 -1
  42. package/dist/controller/model/index.d.ts +1 -0
  43. package/dist/controller/model/index.d.ts.map +1 -1
  44. package/dist/controller/model/index.js +3 -1
  45. package/dist/controller/model/index.js.map +1 -1
  46. package/dist/controller/model/zigbeeEntity.d.ts +8 -0
  47. package/dist/controller/model/zigbeeEntity.d.ts.map +1 -0
  48. package/dist/controller/model/zigbeeEntity.js +11 -0
  49. package/dist/controller/model/zigbeeEntity.js.map +1 -0
  50. package/dist/controller/tstype.d.ts +39 -0
  51. package/dist/controller/tstype.d.ts.map +1 -1
  52. package/dist/zspec/zcl/buffaloZcl.d.ts +32 -17
  53. package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -1
  54. package/dist/zspec/zcl/buffaloZcl.js +257 -121
  55. package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
  56. package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
  57. package/dist/zspec/zcl/definition/cluster.js +156 -33
  58. package/dist/zspec/zcl/definition/cluster.js.map +1 -1
  59. package/dist/zspec/zcl/definition/clusters-typegen.d.ts +2 -0
  60. package/dist/zspec/zcl/definition/clusters-typegen.d.ts.map +1 -0
  61. package/dist/zspec/zcl/definition/clusters-typegen.js +348 -0
  62. package/dist/zspec/zcl/definition/clusters-typegen.js.map +1 -0
  63. package/dist/zspec/zcl/definition/clusters-types.d.ts +7238 -0
  64. package/dist/zspec/zcl/definition/clusters-types.d.ts.map +1 -0
  65. package/dist/zspec/zcl/definition/clusters-types.js +3 -0
  66. package/dist/zspec/zcl/definition/clusters-types.js.map +1 -0
  67. package/dist/zspec/zcl/definition/enums.d.ts +14 -6
  68. package/dist/zspec/zcl/definition/enums.d.ts.map +1 -1
  69. package/dist/zspec/zcl/definition/enums.js +15 -6
  70. package/dist/zspec/zcl/definition/enums.js.map +1 -1
  71. package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
  72. package/dist/zspec/zcl/definition/foundation.js +43 -15
  73. package/dist/zspec/zcl/definition/foundation.js.map +1 -1
  74. package/dist/zspec/zcl/definition/tstype.d.ts +105 -11
  75. package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
  76. package/dist/zspec/zcl/index.d.ts +1 -0
  77. package/dist/zspec/zcl/index.d.ts.map +1 -1
  78. package/dist/zspec/zcl/index.js.map +1 -1
  79. package/dist/zspec/zcl/utils.d.ts +1 -1
  80. package/dist/zspec/zcl/utils.d.ts.map +1 -1
  81. package/dist/zspec/zcl/utils.js +1 -1
  82. package/dist/zspec/zcl/utils.js.map +1 -1
  83. package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
  84. package/dist/zspec/zcl/zclFrame.js +32 -20
  85. package/dist/zspec/zcl/zclFrame.js.map +1 -1
  86. package/dist/zspec/zdo/buffaloZdo.d.ts +0 -6
  87. package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -1
  88. package/dist/zspec/zdo/buffaloZdo.js +0 -8
  89. package/dist/zspec/zdo/buffaloZdo.js.map +1 -1
  90. package/package.json +3 -3
  91. package/src/adapter/ember/ezsp/buffalo.ts +0 -5
  92. package/src/adapter/ember/uart/ash.ts +0 -2
  93. package/src/adapter/ezsp/driver/driver.ts +1 -1
  94. package/src/buffalo/buffalo.ts +8 -0
  95. package/src/controller/controller.ts +13 -16
  96. package/src/controller/events.ts +2 -1
  97. package/src/controller/greenPower.ts +4 -4
  98. package/src/controller/helpers/request.ts +3 -1
  99. package/src/controller/helpers/zclFrameConverter.ts +13 -17
  100. package/src/controller/model/device.ts +103 -148
  101. package/src/controller/model/endpoint.ts +112 -64
  102. package/src/controller/model/group.ts +33 -9
  103. package/src/controller/model/index.ts +1 -0
  104. package/src/controller/model/zigbeeEntity.ts +30 -0
  105. package/src/controller/tstype.ts +251 -16
  106. package/src/zspec/zcl/buffaloZcl.ts +323 -238
  107. package/src/zspec/zcl/definition/cluster.ts +156 -33
  108. package/src/zspec/zcl/definition/clusters-typegen.ts +588 -0
  109. package/src/zspec/zcl/definition/clusters-types.ts +7331 -0
  110. package/src/zspec/zcl/definition/enums.ts +14 -5
  111. package/src/zspec/zcl/definition/foundation.ts +43 -15
  112. package/src/zspec/zcl/definition/tstype.ts +118 -8
  113. package/src/zspec/zcl/index.ts +1 -0
  114. package/src/zspec/zcl/utils.ts +1 -1
  115. package/src/zspec/zcl/zclFrame.ts +37 -19
  116. package/src/zspec/zdo/buffaloZdo.ts +0 -9
  117. package/test/controller.test.ts +356 -896
  118. package/test/greenpower.test.ts +0 -12
  119. package/test/zcl.test.ts +13 -11
  120. package/test/zspec/zcl/buffalo.test.ts +216 -74
  121. package/test/zspec/zcl/frame.test.ts +62 -28
  122. package/test/zspec/zcl/utils.test.ts +4 -4
@@ -334,12 +334,20 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
334
334
  {name: "status", type: DataType.UINT8},
335
335
  {name: "groupid", type: DataType.UINT16},
336
336
  {name: "sceneid", type: DataType.UINT8},
337
- {name: "transtime", type: DataType.UINT16, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
338
- {name: "scenename", type: DataType.CHAR_STR, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
337
+ {
338
+ name: "transtime",
339
+ type: DataType.UINT16,
340
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
341
+ },
342
+ {
343
+ name: "scenename",
344
+ type: DataType.CHAR_STR,
345
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
346
+ },
339
347
  {
340
348
  name: "extensionfieldsets",
341
349
  type: BuffaloZclDataType.EXTENSION_FIELD_SETS,
342
- conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}],
350
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
343
351
  },
344
352
  ],
345
353
  },
@@ -372,11 +380,15 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
372
380
  {name: "status", type: DataType.UINT8},
373
381
  {name: "capacity", type: DataType.UINT8},
374
382
  {name: "groupid", type: DataType.UINT16},
375
- {name: "scenecount", type: DataType.UINT8, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
383
+ {
384
+ name: "scenecount",
385
+ type: DataType.UINT8,
386
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
387
+ },
376
388
  {
377
389
  name: "scenelist",
378
390
  type: BuffaloZclDataType.LIST_UINT8,
379
- conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}],
391
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
380
392
  },
381
393
  ],
382
394
  },
@@ -394,12 +406,20 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
394
406
  {name: "status", type: DataType.UINT8},
395
407
  {name: "groupid", type: DataType.UINT16},
396
408
  {name: "sceneid", type: DataType.UINT8},
397
- {name: "transtime", type: DataType.UINT16, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
398
- {name: "scenename", type: DataType.CHAR_STR, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
409
+ {
410
+ name: "transtime",
411
+ type: DataType.UINT16,
412
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
413
+ },
414
+ {
415
+ name: "scenename",
416
+ type: DataType.CHAR_STR,
417
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
418
+ },
399
419
  {
400
420
  name: "extensionfieldsets",
401
421
  type: BuffaloZclDataType.EXTENSION_FIELD_SETS,
402
- conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}],
422
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
403
423
  },
404
424
  ],
405
425
  },
@@ -1027,7 +1047,11 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
1027
1047
  {
1028
1048
  name: "minimumBlockPeriod",
1029
1049
  type: DataType.UINT16,
1030
- conditions: [{type: ParameterCondition.BITMASK_SET, param: "fieldControl", mask: 0b10}],
1050
+ conditions: [
1051
+ {type: ParameterCondition.BITMASK_SET, param: "fieldControl", mask: 0b10},
1052
+ // WORKAROUND: https://github.com/Koenkk/zigbee2mqtt/issues/28217
1053
+ {type: ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES, value: 2},
1054
+ ],
1031
1055
  },
1032
1056
  ],
1033
1057
  },
@@ -1060,6 +1084,17 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
1060
1084
  {name: "fileVersion", type: DataType.UINT32},
1061
1085
  ],
1062
1086
  },
1087
+ queryDeviceSpecificFileRequest: {
1088
+ ID: 8,
1089
+ response: 9,
1090
+ parameters: [
1091
+ {name: "eui64", type: DataType.IEEE_ADDR},
1092
+ {name: "manufacturerCode", type: DataType.UINT16},
1093
+ {name: "imageType", type: DataType.UINT16},
1094
+ {name: "fileVersion", type: DataType.UINT32},
1095
+ {name: "zigbeeStackVersion", type: DataType.UINT16},
1096
+ ],
1097
+ },
1063
1098
  },
1064
1099
  commandsResponse: {
1065
1100
  imageNotify: {
@@ -1067,28 +1102,99 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
1067
1102
  parameters: [
1068
1103
  {name: "payloadType", type: DataType.UINT8},
1069
1104
  {name: "queryJitter", type: DataType.UINT8},
1105
+ {
1106
+ name: "manufacturerCode",
1107
+ type: DataType.UINT16,
1108
+ conditions: [{type: ParameterCondition.FIELD_GT, field: "payloadType", value: 0x00}],
1109
+ },
1110
+ {
1111
+ name: "imageType",
1112
+ type: DataType.UINT16,
1113
+ conditions: [{type: ParameterCondition.FIELD_GT, field: "payloadType", value: 0x01}],
1114
+ },
1115
+ {
1116
+ name: "fileVersion",
1117
+ type: DataType.UINT32,
1118
+ conditions: [{type: ParameterCondition.FIELD_GT, field: "payloadType", value: 0x02}],
1119
+ },
1070
1120
  ],
1071
1121
  },
1072
1122
  queryNextImageResponse: {
1073
1123
  ID: 2,
1074
1124
  parameters: [
1075
1125
  {name: "status", type: DataType.UINT8},
1076
- {name: "manufacturerCode", type: DataType.UINT16, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
1077
- {name: "imageType", type: DataType.UINT16, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
1078
- {name: "fileVersion", type: DataType.UINT32, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
1079
- {name: "imageSize", type: DataType.UINT32, conditions: [{type: ParameterCondition.STATUS_EQUAL, value: Status.SUCCESS}]},
1126
+ {
1127
+ name: "manufacturerCode",
1128
+ type: DataType.UINT16,
1129
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
1130
+ },
1131
+ {
1132
+ name: "imageType",
1133
+ type: DataType.UINT16,
1134
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
1135
+ },
1136
+ {
1137
+ name: "fileVersion",
1138
+ type: DataType.UINT32,
1139
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
1140
+ },
1141
+ {
1142
+ name: "imageSize",
1143
+ type: DataType.UINT32,
1144
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
1145
+ },
1080
1146
  ],
1081
1147
  },
1082
1148
  imageBlockResponse: {
1083
1149
  ID: 5,
1084
1150
  parameters: [
1151
+ // alone if Status.ABORT
1085
1152
  {name: "status", type: DataType.UINT8},
1086
- {name: "manufacturerCode", type: DataType.UINT16},
1087
- {name: "imageType", type: DataType.UINT16},
1088
- {name: "fileVersion", type: DataType.UINT32},
1089
- {name: "fileOffset", type: DataType.UINT32},
1090
- {name: "dataSize", type: DataType.UINT8},
1091
- {name: "data", type: BuffaloZclDataType.BUFFER},
1153
+ {
1154
+ name: "manufacturerCode",
1155
+ type: DataType.UINT16,
1156
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
1157
+ },
1158
+ {
1159
+ name: "imageType",
1160
+ type: DataType.UINT16,
1161
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
1162
+ },
1163
+ {
1164
+ name: "fileVersion",
1165
+ type: DataType.UINT32,
1166
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
1167
+ },
1168
+ {
1169
+ name: "fileOffset",
1170
+ type: DataType.UINT32,
1171
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
1172
+ },
1173
+ {
1174
+ name: "dataSize",
1175
+ type: DataType.UINT8,
1176
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
1177
+ },
1178
+ {
1179
+ name: "data",
1180
+ type: BuffaloZclDataType.BUFFER,
1181
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
1182
+ },
1183
+ {
1184
+ name: "currentTime",
1185
+ type: DataType.UINT32,
1186
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.WAIT_FOR_DATA}],
1187
+ },
1188
+ {
1189
+ name: "requestTime",
1190
+ type: DataType.UINT32,
1191
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.WAIT_FOR_DATA}],
1192
+ },
1193
+ {
1194
+ name: "minimumBlockPeriod",
1195
+ type: DataType.UINT16,
1196
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.WAIT_FOR_DATA}],
1197
+ },
1092
1198
  ],
1093
1199
  },
1094
1200
  upgradeEndResponse: {
@@ -1101,6 +1207,32 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
1101
1207
  {name: "upgradeTime", type: DataType.UINT32},
1102
1208
  ],
1103
1209
  },
1210
+ queryDeviceSpecificFileResponse: {
1211
+ ID: 9,
1212
+ parameters: [
1213
+ {name: "status", type: DataType.UINT8},
1214
+ {
1215
+ name: "manufacturerCode",
1216
+ type: DataType.UINT16,
1217
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
1218
+ },
1219
+ {
1220
+ name: "imageType",
1221
+ type: DataType.UINT16,
1222
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
1223
+ },
1224
+ {
1225
+ name: "fileVersion",
1226
+ type: DataType.UINT32,
1227
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
1228
+ },
1229
+ {
1230
+ name: "imageSize",
1231
+ type: DataType.UINT32,
1232
+ conditions: [{type: ParameterCondition.FIELD_EQUAL, field: "status", value: Status.SUCCESS}],
1233
+ },
1234
+ ],
1235
+ },
1104
1236
  },
1105
1237
  },
1106
1238
  genPollCtrl: {
@@ -2035,6 +2167,7 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
2035
2167
  },
2036
2168
  getWeeklySchedule: {
2037
2169
  ID: 2,
2170
+ response: 0,
2038
2171
  parameters: [
2039
2172
  {name: "daystoreturn", type: DataType.UINT8},
2040
2173
  {name: "modetoreturn", type: DataType.UINT8},
@@ -2046,6 +2179,7 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
2046
2179
  },
2047
2180
  getRelayStatusLog: {
2048
2181
  ID: 4,
2182
+ response: 1,
2049
2183
  parameters: [],
2050
2184
  },
2051
2185
  danfossSetpointCommand: {
@@ -4605,7 +4739,7 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
4605
4739
  {name: "type", type: DataType.UINT8},
4606
4740
  {name: "unknown2", type: DataType.UINT8},
4607
4741
  {name: "time", type: DataType.UINT8},
4608
- {name: "unknown2", type: DataType.UINT8},
4742
+ {name: "unknown3", type: DataType.UINT8},
4609
4743
  ],
4610
4744
  },
4611
4745
  },
@@ -5001,8 +5135,7 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
5001
5135
  commands: {},
5002
5136
  commandsResponse: {},
5003
5137
  },
5004
- // biome-ignore lint/style/useNamingConvention: cross-repo impact
5005
- manuSpecificTuya_2: {
5138
+ manuSpecificTuya2: {
5006
5139
  ID: 0xe002,
5007
5140
  attributes: {
5008
5141
  alarm_temperature_max: {ID: 53258, type: DataType.INT16},
@@ -5016,8 +5149,7 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
5016
5149
  commands: {},
5017
5150
  commandsResponse: {},
5018
5151
  },
5019
- // biome-ignore lint/style/useNamingConvention: cross-repo impact
5020
- manuSpecificTuya_3: {
5152
+ manuSpecificTuya3: {
5021
5153
  ID: 0xe001,
5022
5154
  attributes: {
5023
5155
  powerOnBehavior: {ID: 0xd010, type: DataType.ENUM8},
@@ -5308,15 +5440,6 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
5308
5440
  commands: {},
5309
5441
  commandsResponse: {},
5310
5442
  },
5311
- sprutDevice: {
5312
- ID: 26112,
5313
- manufacturerCode: 26214,
5314
- attributes: {
5315
- debug: {ID: 0, type: DataType.BOOLEAN},
5316
- },
5317
- commands: {},
5318
- commandsResponse: {},
5319
- },
5320
5443
  sprutVoc: {
5321
5444
  ID: 26113,
5322
5445
  manufacturerCode: 26214,