zigbee-herdsman 5.0.3 → 6.0.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 (79) hide show
  1. package/.github/dependabot.yml +3 -0
  2. package/.github/workflows/ci.yml +1 -0
  3. package/.release-please-manifest.json +1 -1
  4. package/CHANGELOG.md +26 -0
  5. package/biome.json +1 -1
  6. package/dist/adapter/deconz/adapter/deconzAdapter.js +1 -1
  7. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
  8. package/dist/adapter/ember/ezsp/buffalo.d.ts +0 -2
  9. package/dist/adapter/ember/ezsp/buffalo.d.ts.map +1 -1
  10. package/dist/adapter/ember/ezsp/buffalo.js +0 -4
  11. package/dist/adapter/ember/ezsp/buffalo.js.map +1 -1
  12. package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
  13. package/dist/adapter/ember/uart/ash.js +0 -2
  14. package/dist/adapter/ember/uart/ash.js.map +1 -1
  15. package/dist/buffalo/buffalo.d.ts +5 -0
  16. package/dist/buffalo/buffalo.d.ts.map +1 -1
  17. package/dist/buffalo/buffalo.js +7 -0
  18. package/dist/buffalo/buffalo.js.map +1 -1
  19. package/dist/controller/controller.d.ts.map +1 -1
  20. package/dist/controller/controller.js +1 -1
  21. package/dist/controller/controller.js.map +1 -1
  22. package/dist/controller/events.d.ts +1 -0
  23. package/dist/controller/events.d.ts.map +1 -1
  24. package/dist/controller/tstype.d.ts +17 -0
  25. package/dist/controller/tstype.d.ts.map +1 -1
  26. package/dist/zspec/zcl/buffaloZcl.d.ts +32 -17
  27. package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -1
  28. package/dist/zspec/zcl/buffaloZcl.js +257 -121
  29. package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
  30. package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
  31. package/dist/zspec/zcl/definition/cluster.js +154 -24
  32. package/dist/zspec/zcl/definition/cluster.js.map +1 -1
  33. package/dist/zspec/zcl/definition/clusters-typegen.d.ts +2 -0
  34. package/dist/zspec/zcl/definition/clusters-typegen.d.ts.map +1 -0
  35. package/dist/zspec/zcl/definition/clusters-typegen.js +300 -0
  36. package/dist/zspec/zcl/definition/clusters-typegen.js.map +1 -0
  37. package/dist/zspec/zcl/definition/clusters-types.d.ts +7205 -0
  38. package/dist/zspec/zcl/definition/clusters-types.d.ts.map +1 -0
  39. package/dist/zspec/zcl/definition/clusters-types.js +3 -0
  40. package/dist/zspec/zcl/definition/clusters-types.js.map +1 -0
  41. package/dist/zspec/zcl/definition/enums.d.ts +4 -6
  42. package/dist/zspec/zcl/definition/enums.d.ts.map +1 -1
  43. package/dist/zspec/zcl/definition/enums.js +3 -5
  44. package/dist/zspec/zcl/definition/enums.js.map +1 -1
  45. package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
  46. package/dist/zspec/zcl/definition/foundation.js +43 -15
  47. package/dist/zspec/zcl/definition/foundation.js.map +1 -1
  48. package/dist/zspec/zcl/definition/tstype.d.ts +105 -11
  49. package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
  50. package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
  51. package/dist/zspec/zcl/zclFrame.js +32 -20
  52. package/dist/zspec/zcl/zclFrame.js.map +1 -1
  53. package/dist/zspec/zdo/buffaloZdo.d.ts +0 -6
  54. package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -1
  55. package/dist/zspec/zdo/buffaloZdo.js +0 -8
  56. package/dist/zspec/zdo/buffaloZdo.js.map +1 -1
  57. package/package.json +3 -3
  58. package/src/adapter/deconz/adapter/deconzAdapter.ts +1 -1
  59. package/src/adapter/ember/ezsp/buffalo.ts +0 -5
  60. package/src/adapter/ember/uart/ash.ts +0 -2
  61. package/src/buffalo/buffalo.ts +8 -0
  62. package/src/controller/controller.ts +2 -1
  63. package/src/controller/events.ts +1 -0
  64. package/src/controller/greenPower.ts +4 -4
  65. package/src/controller/tstype.ts +17 -16
  66. package/src/zspec/zcl/buffaloZcl.ts +323 -238
  67. package/src/zspec/zcl/definition/cluster.ts +154 -24
  68. package/src/zspec/zcl/definition/clusters-typegen.ts +511 -0
  69. package/src/zspec/zcl/definition/clusters-types.ts +7282 -0
  70. package/src/zspec/zcl/definition/enums.ts +3 -5
  71. package/src/zspec/zcl/definition/foundation.ts +43 -15
  72. package/src/zspec/zcl/definition/tstype.ts +118 -7
  73. package/src/zspec/zcl/zclFrame.ts +37 -19
  74. package/src/zspec/zdo/buffaloZdo.ts +0 -9
  75. package/test/controller.test.ts +65 -803
  76. package/test/greenpower.test.ts +0 -12
  77. package/test/zcl.test.ts +13 -11
  78. package/test/zspec/zcl/buffalo.test.ts +216 -74
  79. package/test/zspec/zcl/frame.test.ts +62 -28
@@ -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: {
@@ -4605,7 +4737,7 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
4605
4737
  {name: "type", type: DataType.UINT8},
4606
4738
  {name: "unknown2", type: DataType.UINT8},
4607
4739
  {name: "time", type: DataType.UINT8},
4608
- {name: "unknown2", type: DataType.UINT8},
4740
+ {name: "unknown3", type: DataType.UINT8},
4609
4741
  ],
4610
4742
  },
4611
4743
  },
@@ -5001,8 +5133,7 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
5001
5133
  commands: {},
5002
5134
  commandsResponse: {},
5003
5135
  },
5004
- // biome-ignore lint/style/useNamingConvention: cross-repo impact
5005
- manuSpecificTuya_2: {
5136
+ manuSpecificTuya2: {
5006
5137
  ID: 0xe002,
5007
5138
  attributes: {
5008
5139
  alarm_temperature_max: {ID: 53258, type: DataType.INT16},
@@ -5016,8 +5147,7 @@ export const Clusters: Readonly<Record<ClusterName, Readonly<ClusterDefinition>>
5016
5147
  commands: {},
5017
5148
  commandsResponse: {},
5018
5149
  },
5019
- // biome-ignore lint/style/useNamingConvention: cross-repo impact
5020
- manuSpecificTuya_3: {
5150
+ manuSpecificTuya3: {
5021
5151
  ID: 0xe001,
5022
5152
  attributes: {
5023
5153
  powerOnBehavior: {ID: 0xd010, type: DataType.ENUM8},