@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.
- package/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +38 -0
- package/biome.json +1 -1
- package/dist/adapter/adapter.d.ts.map +1 -0
- package/dist/adapter/adapterDiscovery.d.ts.map +1 -0
- package/dist/adapter/const.d.ts.map +1 -0
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -0
- package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -0
- package/dist/adapter/ember/adapter/endpoints.d.ts.map +1 -0
- package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -0
- package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -0
- package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -0
- package/dist/adapter/ember/utils/initters.d.ts.map +1 -0
- package/dist/adapter/events.d.ts.map +1 -0
- package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -0
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -0
- package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -0
- package/dist/adapter/ezsp/driver/index.d.ts.map +1 -0
- package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -0
- package/dist/adapter/index.d.ts.map +1 -0
- package/dist/adapter/z-stack/adapter/endpoints.d.ts.map +1 -0
- package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -0
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -0
- package/dist/adapter/z-stack/models/startup-options.d.ts.map +1 -0
- package/dist/adapter/zboss/adapter/zbossAdapter.d.ts.map +1 -0
- package/dist/adapter/zboss/driver.d.ts.map +1 -0
- package/dist/adapter/zboss/frame.d.ts.map +1 -0
- package/dist/adapter/zboss/frame.js +200 -0
- package/dist/adapter/zboss/frame.js.map +1 -0
- package/dist/adapter/zboss/uart.d.ts.map +1 -0
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -0
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -0
- package/dist/adapter/zigate/driver/buffaloZiGate.js +198 -0
- package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -0
- package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -0
- package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -0
- package/dist/adapter/zoh/adapter/zohAdapter.d.ts.map +1 -0
- package/dist/controller/controller.d.ts.map +1 -0
- package/dist/controller/controller.js +874 -0
- package/dist/controller/controller.js.map +1 -0
- package/dist/controller/database.d.ts.map +1 -0
- package/dist/controller/events.d.ts.map +1 -0
- package/dist/controller/events.js +3 -0
- package/dist/controller/events.js.map +1 -0
- package/dist/controller/greenPower.d.ts.map +1 -0
- package/dist/controller/greenPower.js +425 -0
- package/dist/controller/greenPower.js.map +1 -0
- package/dist/controller/helpers/index.d.ts.map +1 -0
- package/dist/controller/helpers/ota.d.ts.map +1 -0
- package/dist/controller/helpers/ota.js +467 -0
- package/dist/controller/helpers/ota.js.map +1 -0
- package/dist/controller/helpers/request.d.ts.map +1 -0
- package/dist/controller/helpers/requestQueue.d.ts.map +1 -0
- package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -0
- package/dist/controller/helpers/zclFrameConverter.js +84 -0
- package/dist/controller/helpers/zclFrameConverter.js.map +1 -0
- package/dist/controller/index.d.ts.map +1 -0
- package/dist/controller/model/device.d.ts.map +1 -0
- package/dist/controller/model/device.js +1396 -0
- package/dist/controller/model/device.js.map +1 -0
- package/dist/controller/model/endpoint.d.ts.map +1 -0
- package/dist/controller/model/endpoint.js +822 -0
- package/dist/controller/model/endpoint.js.map +1 -0
- package/dist/controller/model/entity.d.ts.map +1 -0
- package/dist/controller/model/group.d.ts.map +1 -0
- package/dist/controller/model/group.js +343 -0
- package/dist/controller/model/group.js.map +1 -0
- package/dist/controller/model/index.d.ts.map +1 -0
- package/dist/controller/model/zigbeeEntity.d.ts.map +1 -0
- package/dist/controller/touchlink.d.ts.map +1 -0
- package/dist/controller/tstype.d.ts.map +1 -0
- package/dist/controller/tstype.js +3 -0
- package/dist/controller/tstype.js.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/utils/timeService.d.ts.map +1 -0
- package/dist/utils/timeService.js +127 -0
- package/dist/utils/timeService.js.map +1 -0
- package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -0
- package/dist/zspec/zcl/buffaloZcl.js +969 -0
- package/dist/zspec/zcl/buffaloZcl.js.map +1 -0
- package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/cluster.js +7507 -0
- package/dist/zspec/zcl/definition/cluster.js.map +1 -0
- package/dist/zspec/zcl/definition/clusters-types.d.ts +8135 -0
- package/dist/zspec/zcl/definition/clusters-types.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/clusters-types.js +3 -0
- package/dist/zspec/zcl/definition/clusters-types.js.map +1 -0
- package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/foundation.js +312 -0
- package/dist/zspec/zcl/definition/foundation.js.map +1 -0
- package/dist/zspec/zcl/definition/tstype.d.ts +273 -0
- package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/tstype.js +3 -0
- package/dist/zspec/zcl/definition/tstype.js.map +1 -0
- package/dist/zspec/zcl/index.d.ts.map +1 -0
- package/dist/zspec/zcl/index.js +57 -0
- package/dist/zspec/zcl/index.js.map +1 -0
- package/dist/zspec/zcl/utils.d.ts.map +1 -0
- package/dist/zspec/zcl/utils.js +419 -0
- package/dist/zspec/zcl/utils.js.map +1 -0
- package/dist/zspec/zcl/zclFrame.d.ts.map +1 -0
- package/dist/zspec/zcl/zclFrame.js +328 -0
- package/dist/zspec/zcl/zclFrame.js.map +1 -0
- package/dist/zspec/zcl/zclHeader.d.ts.map +1 -0
- package/dist/zspec/zcl/zclHeader.js +88 -0
- package/dist/zspec/zcl/zclHeader.js.map +1 -0
- package/package.json +90 -83
- package/src/controller/helpers/ota.ts +5 -2
- package/src/zspec/zcl/definition/cluster.ts +3 -294
- package/src/zspec/zcl/definition/clusters-types.ts +6 -355
- package/src/zspec/zcl/definition/tstype.ts +0 -14
- package/src/zspec/zcl/utils.ts +14 -31
- package/test/controller.test.ts +16 -8
- package/test/zcl.test.ts +36 -7
|
@@ -2378,7 +2378,7 @@ export interface TClusters {
|
|
|
2378
2378
|
/** ID=0x0002 | type=BITMAP8 | write=true | required=true | default=0 */
|
|
2379
2379
|
status: number;
|
|
2380
2380
|
/** ID=0x0010 | type=UINT16 | write=true | required=true | min=1 | max=65534 | default=1 */
|
|
2381
|
-
|
|
2381
|
+
closedLimit: number;
|
|
2382
2382
|
/** ID=0x0011 | type=ENUM8 | write=true | required=true | max=254 | default=0 */
|
|
2383
2383
|
mode: number;
|
|
2384
2384
|
};
|
|
@@ -2911,11 +2911,11 @@ export interface TClusters {
|
|
|
2911
2911
|
accelerationTimeLift: number;
|
|
2912
2912
|
/** ID=0x0016 | type=UINT16 | write=true | max=65535 | default=0 */
|
|
2913
2913
|
decelerationTimeLift: number;
|
|
2914
|
-
/** ID=0x0017 | type=BITMAP8 | required=true | default=4 */
|
|
2914
|
+
/** ID=0x0017 | type=BITMAP8 | write=true | required=true | default=4 */
|
|
2915
2915
|
windowCoveringMode: number;
|
|
2916
|
-
/** ID=0x0018 | type=OCTET_STR | default=1,0x0000 */
|
|
2916
|
+
/** ID=0x0018 | type=OCTET_STR | write=true | default=1,0x0000 */
|
|
2917
2917
|
intermediateSetpointsLift: Buffer;
|
|
2918
|
-
/** ID=0x0019 | type=OCTET_STR | default=1,0x0000 */
|
|
2918
|
+
/** ID=0x0019 | type=OCTET_STR | write=true | default=1,0x0000 */
|
|
2919
2919
|
intermediateSetpointsTilt: Buffer;
|
|
2920
2920
|
/** ID=0x000a | type=BITMAP8 */
|
|
2921
2921
|
operationalStatus: number;
|
|
@@ -3189,48 +3189,14 @@ export interface TClusters {
|
|
|
3189
3189
|
fourNoksHysteresisLow?: number;
|
|
3190
3190
|
/** ID=0x0400 | type=ENUM8 | manufacturerCode=SINOPE_TECHNOLOGIES(0x119c) | write=true | max=255 */
|
|
3191
3191
|
SinopeOccupancy?: number;
|
|
3192
|
-
/** ID=0x0401 | type=UINT16 | write=true | max=65535 */
|
|
3193
|
-
elkoLoad: number;
|
|
3194
3192
|
/** ID=0x0401 | type=UINT16 | manufacturerCode=SINOPE_TECHNOLOGIES(0x119c) | write=true | max=65535 */
|
|
3195
3193
|
SinopeMainCycleOutput?: number;
|
|
3196
3194
|
/** ID=0x0402 | type=CHAR_STR | write=true */
|
|
3197
3195
|
elkoDisplayText: string;
|
|
3198
3196
|
/** ID=0x0402 | type=ENUM8 | manufacturerCode=SINOPE_TECHNOLOGIES(0x119c) | write=true | max=255 */
|
|
3199
3197
|
SinopeBacklight?: number;
|
|
3200
|
-
/** ID=0x0403 | type=ENUM8 | write=true | max=255 */
|
|
3201
|
-
elkoSensor: number;
|
|
3202
|
-
/** ID=0x0404 | type=UINT8 | write=true | max=255 */
|
|
3203
|
-
elkoRegulatorTime: number;
|
|
3204
3198
|
/** ID=0x0404 | type=UINT16 | manufacturerCode=SINOPE_TECHNOLOGIES(0x119c) | write=true | max=65535 */
|
|
3205
3199
|
SinopeAuxCycleOutput?: number;
|
|
3206
|
-
/** ID=0x0405 | type=BOOLEAN | write=true */
|
|
3207
|
-
elkoRegulatorMode: number;
|
|
3208
|
-
/** ID=0x0406 | type=BOOLEAN | write=true */
|
|
3209
|
-
elkoPowerStatus: number;
|
|
3210
|
-
/** ID=0x0407 | type=OCTET_STR | write=true */
|
|
3211
|
-
elkoDateTime: Buffer;
|
|
3212
|
-
/** ID=0x0408 | type=UINT16 | write=true | max=65535 */
|
|
3213
|
-
elkoMeanPower: number;
|
|
3214
|
-
/** ID=0x0409 | type=INT16 | write=true | min=-32768 | max=32767 */
|
|
3215
|
-
elkoExternalTemp: number;
|
|
3216
|
-
/** ID=0x0411 | type=BOOLEAN | write=true */
|
|
3217
|
-
elkoNightSwitching: number;
|
|
3218
|
-
/** ID=0x0412 | type=BOOLEAN | write=true */
|
|
3219
|
-
elkoFrostGuard: number;
|
|
3220
|
-
/** ID=0x0413 | type=BOOLEAN | write=true */
|
|
3221
|
-
elkoChildLock: number;
|
|
3222
|
-
/** ID=0x0414 | type=UINT8 | write=true | max=255 */
|
|
3223
|
-
elkoMaxFloorTemp: number;
|
|
3224
|
-
/** ID=0x0415 | type=BOOLEAN | write=true */
|
|
3225
|
-
elkoRelayState: number;
|
|
3226
|
-
/** ID=0x0416 | type=OCTET_STR | write=true */
|
|
3227
|
-
elkoVersion: Buffer;
|
|
3228
|
-
/** ID=0x0417 | type=INT8 | write=true | min=-128 | max=127 */
|
|
3229
|
-
elkoCalibration: number;
|
|
3230
|
-
/** ID=0x0418 | type=UINT8 | write=true | max=255 */
|
|
3231
|
-
elkoLastMessageId: number;
|
|
3232
|
-
/** ID=0x0419 | type=UINT8 | write=true | max=255 */
|
|
3233
|
-
elkoLastMessageStatus: number;
|
|
3234
3200
|
/** ID=0x4000 | type=ENUM8 | manufacturerCode=VIESSMANN_ELEKTRONIK_GMBH(0x1221) | write=true | max=255 */
|
|
3235
3201
|
viessmannWindowOpenInternal?: number;
|
|
3236
3202
|
/** ID=0x4000 | type=ENUM8 | manufacturerCode=DANFOSS_A_S(0x1246) | write=true | max=255 */
|
|
@@ -6607,9 +6573,9 @@ export interface TClusters {
|
|
|
6607
6573
|
model: Buffer;
|
|
6608
6574
|
/** ID=0x0007 | type=OCTET_STR | minLen=0 | maxLen=16 */
|
|
6609
6575
|
partNumber: Buffer;
|
|
6610
|
-
/** ID=0x0008 | type=OCTET_STR | minLen=0 | maxLen=
|
|
6576
|
+
/** ID=0x0008 | type=OCTET_STR | minLen=0 | maxLen=6 */
|
|
6611
6577
|
productRevision: Buffer;
|
|
6612
|
-
/** ID=0x000a | type=OCTET_STR | minLen=0 | maxLen=
|
|
6578
|
+
/** ID=0x000a | type=OCTET_STR | minLen=0 | maxLen=6 */
|
|
6613
6579
|
softwareRevision: Buffer;
|
|
6614
6580
|
/** ID=0x000b | type=CHAR_STR | minLen=0 | maxLen=16 */
|
|
6615
6581
|
utilityName: string;
|
|
@@ -7410,27 +7376,6 @@ export interface TClusters {
|
|
|
7410
7376
|
};
|
|
7411
7377
|
};
|
|
7412
7378
|
};
|
|
7413
|
-
manuSpecificClusterAduroSmart: {
|
|
7414
|
-
attributes: never;
|
|
7415
|
-
commands: {
|
|
7416
|
-
/** ID=0x00 */
|
|
7417
|
-
cmd0: Record<string, never>;
|
|
7418
|
-
};
|
|
7419
|
-
commandResponses: never;
|
|
7420
|
-
};
|
|
7421
|
-
manuSpecificOsram: {
|
|
7422
|
-
attributes: never;
|
|
7423
|
-
commands: {
|
|
7424
|
-
/** ID=0x01 */
|
|
7425
|
-
saveStartupParams: Record<string, never>;
|
|
7426
|
-
/** ID=0x02 */
|
|
7427
|
-
resetStartupParams: Record<string, never>;
|
|
7428
|
-
};
|
|
7429
|
-
commandResponses: {
|
|
7430
|
-
/** ID=0x00 */
|
|
7431
|
-
saveStartupParamsRsp: Record<string, never>;
|
|
7432
|
-
};
|
|
7433
|
-
};
|
|
7434
7379
|
manuSpecificPhilips: {
|
|
7435
7380
|
attributes: {
|
|
7436
7381
|
/** ID=0x0031 | type=BITMAP16 | write=true */
|
|
@@ -7565,33 +7510,6 @@ export interface TClusters {
|
|
|
7565
7510
|
commands: never;
|
|
7566
7511
|
commandResponses: never;
|
|
7567
7512
|
};
|
|
7568
|
-
manuSpecificLegrandDevices: {
|
|
7569
|
-
attributes: never;
|
|
7570
|
-
commands: never;
|
|
7571
|
-
commandResponses: never;
|
|
7572
|
-
};
|
|
7573
|
-
manuSpecificLegrandDevices2: {
|
|
7574
|
-
attributes: never;
|
|
7575
|
-
commands: {
|
|
7576
|
-
/** ID=0x00 */
|
|
7577
|
-
command0: {
|
|
7578
|
-
/** type=BUFFER */
|
|
7579
|
-
data: Buffer;
|
|
7580
|
-
};
|
|
7581
|
-
};
|
|
7582
|
-
commandResponses: never;
|
|
7583
|
-
};
|
|
7584
|
-
manuSpecificLegrandDevices3: {
|
|
7585
|
-
attributes: never;
|
|
7586
|
-
commands: {
|
|
7587
|
-
/** ID=0x00 */
|
|
7588
|
-
command0: {
|
|
7589
|
-
/** type=BUFFER */
|
|
7590
|
-
data: Buffer;
|
|
7591
|
-
};
|
|
7592
|
-
};
|
|
7593
|
-
commandResponses: never;
|
|
7594
|
-
};
|
|
7595
7513
|
manuSpecificTuya: {
|
|
7596
7514
|
attributes: never;
|
|
7597
7515
|
commands: {
|
|
@@ -7817,14 +7735,6 @@ export interface TClusters {
|
|
|
7817
7735
|
};
|
|
7818
7736
|
commandResponses: never;
|
|
7819
7737
|
};
|
|
7820
|
-
manuSpecificCentraliteHumidity: {
|
|
7821
|
-
attributes: {
|
|
7822
|
-
/** ID=0x0000 | type=UINT16 | write=true | max=65535 */
|
|
7823
|
-
measuredValue: number;
|
|
7824
|
-
};
|
|
7825
|
-
commands: never;
|
|
7826
|
-
commandResponses: never;
|
|
7827
|
-
};
|
|
7828
7738
|
manuSpecificSmartThingsArrivalSensor: {
|
|
7829
7739
|
attributes: never;
|
|
7830
7740
|
commands: never;
|
|
@@ -7833,124 +7743,6 @@ export interface TClusters {
|
|
|
7833
7743
|
arrivalSensorNotify: Record<string, never>;
|
|
7834
7744
|
};
|
|
7835
7745
|
};
|
|
7836
|
-
manuSpecificSamsungAccelerometer: {
|
|
7837
|
-
attributes: {
|
|
7838
|
-
/** ID=0x0000 | type=UINT8 | write=true | max=255 */
|
|
7839
|
-
motion_threshold_multiplier: number;
|
|
7840
|
-
/** ID=0x0002 | type=UINT16 | write=true | max=65535 */
|
|
7841
|
-
motion_threshold: number;
|
|
7842
|
-
/** ID=0x0010 | type=BITMAP8 | write=true | max=255 */
|
|
7843
|
-
acceleration: number;
|
|
7844
|
-
/** ID=0x0012 | type=INT16 | write=true | min=-32768 | max=32767 */
|
|
7845
|
-
x_axis: number;
|
|
7846
|
-
/** ID=0x0013 | type=INT16 | write=true | min=-32768 | max=32767 */
|
|
7847
|
-
y_axis: number;
|
|
7848
|
-
/** ID=0x0014 | type=INT16 | write=true | min=-32768 | max=32767 */
|
|
7849
|
-
z_axis: number;
|
|
7850
|
-
};
|
|
7851
|
-
commands: never;
|
|
7852
|
-
commandResponses: never;
|
|
7853
|
-
};
|
|
7854
|
-
tradfriButton: {
|
|
7855
|
-
attributes: never;
|
|
7856
|
-
commands: {
|
|
7857
|
-
/** ID=0x01 */
|
|
7858
|
-
action1: {
|
|
7859
|
-
/** type=UINT8 | max=255 */
|
|
7860
|
-
data: number;
|
|
7861
|
-
};
|
|
7862
|
-
/** ID=0x02 */
|
|
7863
|
-
action2: {
|
|
7864
|
-
/** type=UINT8 | max=255 */
|
|
7865
|
-
data: number;
|
|
7866
|
-
};
|
|
7867
|
-
/** ID=0x03 */
|
|
7868
|
-
action3: {
|
|
7869
|
-
/** type=UINT8 | max=255 */
|
|
7870
|
-
data: number;
|
|
7871
|
-
};
|
|
7872
|
-
/** ID=0x04 */
|
|
7873
|
-
action4: {
|
|
7874
|
-
/** type=UINT8 | max=255 */
|
|
7875
|
-
data: number;
|
|
7876
|
-
};
|
|
7877
|
-
/** ID=0x06 */
|
|
7878
|
-
action6: {
|
|
7879
|
-
/** type=UINT8 | max=255 */
|
|
7880
|
-
data: number;
|
|
7881
|
-
};
|
|
7882
|
-
};
|
|
7883
|
-
commandResponses: never;
|
|
7884
|
-
};
|
|
7885
|
-
schneiderSpecificPilotMode: {
|
|
7886
|
-
attributes: {
|
|
7887
|
-
/** ID=0x0031 | type=ENUM8 | write=true | max=255 */
|
|
7888
|
-
pilotMode: number;
|
|
7889
|
-
};
|
|
7890
|
-
commands: never;
|
|
7891
|
-
commandResponses: never;
|
|
7892
|
-
};
|
|
7893
|
-
manuSpecificSchneiderFanSwitchConfiguration: {
|
|
7894
|
-
attributes: {
|
|
7895
|
-
/** ID=0x0002 | type=UINT8 | write=true | max=255 */
|
|
7896
|
-
ledIndication: number;
|
|
7897
|
-
/** ID=0x0060 | type=UINT8 | write=true | max=255 */
|
|
7898
|
-
ledOrientation: number;
|
|
7899
|
-
};
|
|
7900
|
-
commands: never;
|
|
7901
|
-
commandResponses: never;
|
|
7902
|
-
};
|
|
7903
|
-
sprutVoc: {
|
|
7904
|
-
attributes: {
|
|
7905
|
-
/** ID=0x6600 | type=UINT16 | write=true | max=65535 */
|
|
7906
|
-
voc: number;
|
|
7907
|
-
};
|
|
7908
|
-
commands: never;
|
|
7909
|
-
commandResponses: never;
|
|
7910
|
-
};
|
|
7911
|
-
sprutNoise: {
|
|
7912
|
-
attributes: {
|
|
7913
|
-
/** ID=0x6600 | type=SINGLE_PREC | write=true */
|
|
7914
|
-
noise: number;
|
|
7915
|
-
/** ID=0x6601 | type=BITMAP8 | write=true */
|
|
7916
|
-
noiseDetected: number;
|
|
7917
|
-
/** ID=0x6602 | type=SINGLE_PREC | write=true */
|
|
7918
|
-
noiseDetectLevel: number;
|
|
7919
|
-
/** ID=0x6603 | type=UINT16 | write=true | max=65535 */
|
|
7920
|
-
noiseAfterDetectDelay: number;
|
|
7921
|
-
};
|
|
7922
|
-
commands: never;
|
|
7923
|
-
commandResponses: never;
|
|
7924
|
-
};
|
|
7925
|
-
sprutIrBlaster: {
|
|
7926
|
-
attributes: never;
|
|
7927
|
-
commands: {
|
|
7928
|
-
/** ID=0x00 */
|
|
7929
|
-
playStore: {
|
|
7930
|
-
/** type=UINT8 | max=255 */
|
|
7931
|
-
param: number;
|
|
7932
|
-
};
|
|
7933
|
-
/** ID=0x01 */
|
|
7934
|
-
learnStart: {
|
|
7935
|
-
/** type=UINT8 | max=255 */
|
|
7936
|
-
value: number;
|
|
7937
|
-
};
|
|
7938
|
-
/** ID=0x02 */
|
|
7939
|
-
learnStop: {
|
|
7940
|
-
/** type=UINT8 | max=255 */
|
|
7941
|
-
value: number;
|
|
7942
|
-
};
|
|
7943
|
-
/** ID=0x03 */
|
|
7944
|
-
clearStore: Record<string, never>;
|
|
7945
|
-
/** ID=0x04 */
|
|
7946
|
-
playRam: Record<string, never>;
|
|
7947
|
-
/** ID=0x05 */
|
|
7948
|
-
learnRamStart: Record<string, never>;
|
|
7949
|
-
/** ID=0x06 */
|
|
7950
|
-
learnRamStop: Record<string, never>;
|
|
7951
|
-
};
|
|
7952
|
-
commandResponses: never;
|
|
7953
|
-
};
|
|
7954
7746
|
manuSpecificSiglisZigfred: {
|
|
7955
7747
|
attributes: {
|
|
7956
7748
|
/** ID=0x0008 | type=UINT32 | write=true | max=4294967295 */
|
|
@@ -8089,147 +7881,6 @@ export interface TClusters {
|
|
|
8089
7881
|
};
|
|
8090
7882
|
commandResponses: never;
|
|
8091
7883
|
};
|
|
8092
|
-
manuSpecificAssaDoorLock: {
|
|
8093
|
-
attributes: {
|
|
8094
|
-
/** ID=0x0012 | type=UINT8 | write=true | max=255 */
|
|
8095
|
-
autoLockTime: number;
|
|
8096
|
-
/** ID=0x0013 | type=UINT8 | write=true | max=255 */
|
|
8097
|
-
wrongCodeAttempts: number;
|
|
8098
|
-
/** ID=0x0014 | type=UINT8 | write=true | max=255 */
|
|
8099
|
-
shutdownTime: number;
|
|
8100
|
-
/** ID=0x0015 | type=UINT8 | write=true | max=255 */
|
|
8101
|
-
batteryLevel: number;
|
|
8102
|
-
/** ID=0x0016 | type=UINT8 | write=true | max=255 */
|
|
8103
|
-
insideEscutcheonLED: number;
|
|
8104
|
-
/** ID=0x0017 | type=UINT8 | write=true | max=255 */
|
|
8105
|
-
volume: number;
|
|
8106
|
-
/** ID=0x0018 | type=UINT8 | write=true | max=255 */
|
|
8107
|
-
lockMode: number;
|
|
8108
|
-
/** ID=0x0019 | type=UINT8 | write=true | max=255 */
|
|
8109
|
-
language: number;
|
|
8110
|
-
/** ID=0x001a | type=BOOLEAN | write=true */
|
|
8111
|
-
allCodesLockout: number;
|
|
8112
|
-
/** ID=0x001b | type=BOOLEAN | write=true */
|
|
8113
|
-
oneTouchLocking: number;
|
|
8114
|
-
/** ID=0x001c | type=BOOLEAN | write=true */
|
|
8115
|
-
privacyButtonSetting: number;
|
|
8116
|
-
/** ID=0x0021 | type=UINT16 | write=true | max=65535 */
|
|
8117
|
-
numberLogRecordsSupported: number;
|
|
8118
|
-
/** ID=0x0030 | type=UINT8 | write=true | max=255 */
|
|
8119
|
-
numberPinsSupported: number;
|
|
8120
|
-
/** ID=0x0040 | type=UINT8 | write=true | max=255 */
|
|
8121
|
-
numberScheduleSlotsPerUser: number;
|
|
8122
|
-
/** ID=0x0050 | type=UINT8 | write=true | max=255 */
|
|
8123
|
-
alarmMask: number;
|
|
8124
|
-
};
|
|
8125
|
-
commands: {
|
|
8126
|
-
/** ID=0x10 | response=0 */
|
|
8127
|
-
getLockStatus: Record<string, never>;
|
|
8128
|
-
/** ID=0x12 */
|
|
8129
|
-
getBatteryLevel: Record<string, never>;
|
|
8130
|
-
/** ID=0x13 */
|
|
8131
|
-
setRFLockoutTime: Record<string, never>;
|
|
8132
|
-
/** ID=0x30 */
|
|
8133
|
-
userCodeSet: {
|
|
8134
|
-
/** type=CHAR_STR */
|
|
8135
|
-
payload: string;
|
|
8136
|
-
};
|
|
8137
|
-
/** ID=0x31 */
|
|
8138
|
-
userCodeGet: {
|
|
8139
|
-
/** type=CHAR_STR */
|
|
8140
|
-
payload: string;
|
|
8141
|
-
};
|
|
8142
|
-
/** ID=0x32 */
|
|
8143
|
-
userCodeClear: {
|
|
8144
|
-
/** type=CHAR_STR */
|
|
8145
|
-
payload: string;
|
|
8146
|
-
};
|
|
8147
|
-
/** ID=0x33 */
|
|
8148
|
-
clearAllUserCodes: Record<string, never>;
|
|
8149
|
-
/** ID=0x34 */
|
|
8150
|
-
setUserCodeStatus: Record<string, never>;
|
|
8151
|
-
/** ID=0x35 */
|
|
8152
|
-
getUserCodeStatus: Record<string, never>;
|
|
8153
|
-
/** ID=0x36 */
|
|
8154
|
-
getLastUserIdEntered: Record<string, never>;
|
|
8155
|
-
/** ID=0x37 */
|
|
8156
|
-
userAdded: Record<string, never>;
|
|
8157
|
-
/** ID=0x38 */
|
|
8158
|
-
userDeleted: Record<string, never>;
|
|
8159
|
-
/** ID=0x40 */
|
|
8160
|
-
setScheduleSlot: {
|
|
8161
|
-
/** type=CHAR_STR */
|
|
8162
|
-
payload: string;
|
|
8163
|
-
};
|
|
8164
|
-
/** ID=0x41 */
|
|
8165
|
-
getScheduleSlot: {
|
|
8166
|
-
/** type=CHAR_STR */
|
|
8167
|
-
payload: string;
|
|
8168
|
-
};
|
|
8169
|
-
/** ID=0x42 */
|
|
8170
|
-
setScheduleSlotStatus: {
|
|
8171
|
-
/** type=CHAR_STR */
|
|
8172
|
-
payload: string;
|
|
8173
|
-
};
|
|
8174
|
-
/** ID=0x60 | response=1 */
|
|
8175
|
-
reflash: {
|
|
8176
|
-
/** type=CHAR_STR */
|
|
8177
|
-
payload: string;
|
|
8178
|
-
};
|
|
8179
|
-
/** ID=0x61 | response=2 */
|
|
8180
|
-
reflashData: {
|
|
8181
|
-
/** type=CHAR_STR */
|
|
8182
|
-
payload: string;
|
|
8183
|
-
};
|
|
8184
|
-
/** ID=0x62 | response=3 */
|
|
8185
|
-
reflashStatus: {
|
|
8186
|
-
/** type=CHAR_STR */
|
|
8187
|
-
payload: string;
|
|
8188
|
-
};
|
|
8189
|
-
/** ID=0x90 */
|
|
8190
|
-
getReflashLock: Record<string, never>;
|
|
8191
|
-
/** ID=0xa0 */
|
|
8192
|
-
getHistory: Record<string, never>;
|
|
8193
|
-
/** ID=0xa1 */
|
|
8194
|
-
getLogin: Record<string, never>;
|
|
8195
|
-
/** ID=0xa2 */
|
|
8196
|
-
getUser: Record<string, never>;
|
|
8197
|
-
/** ID=0xa3 */
|
|
8198
|
-
getUsers: Record<string, never>;
|
|
8199
|
-
/** ID=0xb0 */
|
|
8200
|
-
getMandatoryAttributes: Record<string, never>;
|
|
8201
|
-
/** ID=0xb1 */
|
|
8202
|
-
readAttribute: Record<string, never>;
|
|
8203
|
-
/** ID=0xb2 */
|
|
8204
|
-
writeAttribute: Record<string, never>;
|
|
8205
|
-
/** ID=0xb3 */
|
|
8206
|
-
configureReporting: Record<string, never>;
|
|
8207
|
-
/** ID=0xb4 */
|
|
8208
|
-
getBasicClusterAttributes: Record<string, never>;
|
|
8209
|
-
};
|
|
8210
|
-
commandResponses: {
|
|
8211
|
-
/** ID=0x00 */
|
|
8212
|
-
getLockStatusRsp: {
|
|
8213
|
-
/** type=UINT8 | max=255 */
|
|
8214
|
-
status: number;
|
|
8215
|
-
};
|
|
8216
|
-
/** ID=0x01 */
|
|
8217
|
-
reflashRsp: {
|
|
8218
|
-
/** type=UINT8 | max=255 */
|
|
8219
|
-
status: number;
|
|
8220
|
-
};
|
|
8221
|
-
/** ID=0x02 */
|
|
8222
|
-
reflashDataRsp: {
|
|
8223
|
-
/** type=UINT8 | max=255 */
|
|
8224
|
-
status: number;
|
|
8225
|
-
};
|
|
8226
|
-
/** ID=0x03 */
|
|
8227
|
-
reflashStatusRsp: {
|
|
8228
|
-
/** type=UINT8 | max=255 */
|
|
8229
|
-
status: number;
|
|
8230
|
-
};
|
|
8231
|
-
};
|
|
8232
|
-
};
|
|
8233
7884
|
manuSpecificProfalux1: {
|
|
8234
7885
|
attributes: {
|
|
8235
7886
|
/** ID=0x0000 | type=UINT8 | write=true | max=255 */
|
|
@@ -416,31 +416,17 @@ export type ClusterName =
|
|
|
416
416
|
| "haElectricalMeasurement"
|
|
417
417
|
| "haDiagnostic"
|
|
418
418
|
| "touchlink"
|
|
419
|
-
| "manuSpecificClusterAduroSmart"
|
|
420
|
-
| "manuSpecificOsram"
|
|
421
419
|
| "manuSpecificPhilips"
|
|
422
420
|
| "manuSpecificPhilips2"
|
|
423
421
|
| "manuSpecificSinope"
|
|
424
|
-
| "manuSpecificLegrandDevices"
|
|
425
|
-
| "manuSpecificLegrandDevices2"
|
|
426
|
-
| "manuSpecificLegrandDevices3"
|
|
427
422
|
| "manuSpecificTuya"
|
|
428
423
|
| "manuSpecificLumi"
|
|
429
424
|
| "manuSpecificTuya2"
|
|
430
425
|
| "manuSpecificTuya3"
|
|
431
|
-
| "manuSpecificCentraliteHumidity"
|
|
432
426
|
| "manuSpecificSmartThingsArrivalSensor"
|
|
433
|
-
| "manuSpecificSamsungAccelerometer"
|
|
434
|
-
| "tradfriButton"
|
|
435
|
-
| "schneiderSpecificPilotMode"
|
|
436
|
-
| "manuSpecificSchneiderFanSwitchConfiguration"
|
|
437
|
-
| "sprutVoc"
|
|
438
|
-
| "sprutNoise"
|
|
439
|
-
| "sprutIrBlaster"
|
|
440
427
|
| "manuSpecificSiglisZigfred"
|
|
441
428
|
| "owonClearMetering"
|
|
442
429
|
| "zosungIRTransmit"
|
|
443
430
|
| "zosungIRControl"
|
|
444
|
-
| "manuSpecificAssaDoorLock"
|
|
445
431
|
| "manuSpecificProfalux1"
|
|
446
432
|
| "manuSpecificAmazonWWAH";
|
package/src/zspec/zcl/utils.ts
CHANGED
|
@@ -70,18 +70,12 @@ const FOUNDATION_DISCOVER_RSP_IDS = [
|
|
|
70
70
|
|
|
71
71
|
/** Runtime fast lookup */
|
|
72
72
|
const ZCL_CLUSTERS_ID_TO_NAMES = (() => {
|
|
73
|
-
const map = new Map<number,
|
|
73
|
+
const map = new Map<number, ClusterName>();
|
|
74
74
|
|
|
75
75
|
for (const clusterName in Clusters) {
|
|
76
76
|
const cluster = Clusters[clusterName as ClusterName];
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if (mapEntry) {
|
|
81
|
-
mapEntry.push(clusterName);
|
|
82
|
-
} else {
|
|
83
|
-
map.set(cluster.ID, [clusterName]);
|
|
84
|
-
}
|
|
78
|
+
map.set(cluster.ID, clusterName as ClusterName);
|
|
85
79
|
}
|
|
86
80
|
|
|
87
81
|
return map;
|
|
@@ -106,11 +100,6 @@ function hasCustomClusters(customClusters: CustomClusters): boolean {
|
|
|
106
100
|
return false;
|
|
107
101
|
}
|
|
108
102
|
|
|
109
|
-
/**
|
|
110
|
-
* This can be greatly optimized when `clusters==ZCL` once these have been moved out of ZH (can just use fast lookup <id, name>):
|
|
111
|
-
* - 'manuSpecificPhilips', 'manuSpecificAssaDoorLock'
|
|
112
|
-
* - 'elkoSwitchConfigurationClusterServer', 'manuSpecificSchneiderLightSwitchConfiguration'
|
|
113
|
-
*/
|
|
114
103
|
function findClusterNameByID(
|
|
115
104
|
id: number,
|
|
116
105
|
manufacturerCode: number | undefined,
|
|
@@ -122,27 +111,21 @@ function findClusterNameByID(
|
|
|
122
111
|
let partialMatch = Boolean(manufacturerCode);
|
|
123
112
|
|
|
124
113
|
if (zcl) {
|
|
125
|
-
const
|
|
114
|
+
const zclName = ZCL_CLUSTERS_ID_TO_NAMES.get(id);
|
|
126
115
|
|
|
127
|
-
if (
|
|
128
|
-
|
|
129
|
-
const cluster = clusters[zclName as ClusterName];
|
|
116
|
+
if (zclName) {
|
|
117
|
+
const cluster = clusters[zclName];
|
|
130
118
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
if (manufacturerCode && cluster.manufacturerCode === manufacturerCode) {
|
|
137
|
-
name = zclName;
|
|
138
|
-
partialMatch = false;
|
|
139
|
-
break;
|
|
140
|
-
}
|
|
119
|
+
// priority on first match when matching only ID
|
|
120
|
+
if (name === undefined) {
|
|
121
|
+
name = zclName;
|
|
122
|
+
}
|
|
141
123
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
124
|
+
if (manufacturerCode && cluster.manufacturerCode === manufacturerCode) {
|
|
125
|
+
name = zclName;
|
|
126
|
+
partialMatch = false;
|
|
127
|
+
} else if (!cluster.manufacturerCode) {
|
|
128
|
+
name = zclName;
|
|
146
129
|
}
|
|
147
130
|
}
|
|
148
131
|
} else {
|
package/test/controller.test.ts
CHANGED
|
@@ -631,7 +631,7 @@ describe("Controller", () => {
|
|
|
631
631
|
expect(Group.byGroupID(2)).toBeUndefined();
|
|
632
632
|
|
|
633
633
|
const group2 = controller.createGroup(2);
|
|
634
|
-
group2.removeFromNetwork();
|
|
634
|
+
await group2.removeFromNetwork();
|
|
635
635
|
// @ts-expect-error private
|
|
636
636
|
expect(Group.groups.size).toStrictEqual(1);
|
|
637
637
|
expect(Group.byGroupID(1)).toBeInstanceOf(Group);
|
|
@@ -5202,6 +5202,14 @@ describe("Controller", () => {
|
|
|
5202
5202
|
const device = controller.getDeviceByIeeeAddr("0x129")!;
|
|
5203
5203
|
const endpoint = device.getEndpoint(1)!;
|
|
5204
5204
|
mocksendZclFrameToEndpoint.mockClear();
|
|
5205
|
+
device.addCustomCluster("manuSpecificAssaDoorLock", {
|
|
5206
|
+
ID: 0xfc00,
|
|
5207
|
+
attributes: {},
|
|
5208
|
+
commands: {
|
|
5209
|
+
getBatteryLevel: {ID: 0x12, parameters: []},
|
|
5210
|
+
},
|
|
5211
|
+
commandsResponse: {},
|
|
5212
|
+
});
|
|
5205
5213
|
await endpoint.command("manuSpecificAssaDoorLock", "getBatteryLevel", {});
|
|
5206
5214
|
expect(mocksendZclFrameToEndpoint.mock.calls[0][0]).toBe("0x129");
|
|
5207
5215
|
expect(mocksendZclFrameToEndpoint.mock.calls[0][1]).toBe(129);
|
|
@@ -9664,7 +9672,7 @@ describe("Controller", () => {
|
|
|
9664
9672
|
await controller.start();
|
|
9665
9673
|
mockAdapterSendZdo.mockClear();
|
|
9666
9674
|
|
|
9667
|
-
controller.sendRaw({
|
|
9675
|
+
await controller.sendRaw({
|
|
9668
9676
|
profileId: Zdo.ZDO_PROFILE_ID,
|
|
9669
9677
|
ieeeAddress: "0xf1f2f3f4f5f6f7f8",
|
|
9670
9678
|
networkAddress: 129,
|
|
@@ -9681,7 +9689,7 @@ describe("Controller", () => {
|
|
|
9681
9689
|
await controller.start();
|
|
9682
9690
|
mocksendZclFrameInterPANToIeeeAddr.mockClear();
|
|
9683
9691
|
|
|
9684
|
-
controller.sendRaw({
|
|
9692
|
+
await controller.sendRaw({
|
|
9685
9693
|
interPan: true,
|
|
9686
9694
|
ieeeAddress: "0xf1f2f3f4f5f6f7f8",
|
|
9687
9695
|
networkAddress: 129,
|
|
@@ -9713,7 +9721,7 @@ describe("Controller", () => {
|
|
|
9713
9721
|
await controller.start();
|
|
9714
9722
|
mocksendZclFrameInterPANBroadcast.mockClear();
|
|
9715
9723
|
|
|
9716
|
-
controller.sendRaw({
|
|
9724
|
+
await controller.sendRaw({
|
|
9717
9725
|
interPan: true,
|
|
9718
9726
|
zcl: {
|
|
9719
9727
|
commandKey: "scanRequest",
|
|
@@ -9742,7 +9750,7 @@ describe("Controller", () => {
|
|
|
9742
9750
|
await controller.start();
|
|
9743
9751
|
mocksendZclFrameToGroup.mockClear();
|
|
9744
9752
|
|
|
9745
|
-
controller.sendRaw({
|
|
9753
|
+
await controller.sendRaw({
|
|
9746
9754
|
groupId: 123,
|
|
9747
9755
|
clusterKey: "genScenes",
|
|
9748
9756
|
srcEndpoint: 2,
|
|
@@ -9776,7 +9784,7 @@ describe("Controller", () => {
|
|
|
9776
9784
|
await controller.start();
|
|
9777
9785
|
mocksendZclFrameToAll.mockClear();
|
|
9778
9786
|
|
|
9779
|
-
controller.sendRaw({
|
|
9787
|
+
await controller.sendRaw({
|
|
9780
9788
|
networkAddress: 0xfff8,
|
|
9781
9789
|
clusterKey: Zcl.Clusters.genIdentify.ID,
|
|
9782
9790
|
srcEndpoint: 1,
|
|
@@ -9809,7 +9817,7 @@ describe("Controller", () => {
|
|
|
9809
9817
|
await controller.start();
|
|
9810
9818
|
mocksendZclFrameToEndpoint.mockClear();
|
|
9811
9819
|
|
|
9812
|
-
controller.sendRaw({
|
|
9820
|
+
await controller.sendRaw({
|
|
9813
9821
|
ieeeAddress: "0xf1f2f3f4f5f6f7f8",
|
|
9814
9822
|
networkAddress: 129,
|
|
9815
9823
|
clusterKey: Zcl.Clusters.genIdentify.ID,
|
|
@@ -9867,7 +9875,7 @@ describe("Controller", () => {
|
|
|
9867
9875
|
},
|
|
9868
9876
|
};
|
|
9869
9877
|
|
|
9870
|
-
controller.sendRaw(
|
|
9878
|
+
await controller.sendRaw(
|
|
9871
9879
|
{
|
|
9872
9880
|
ieeeAddress: "0xf1f2f3f4f5f6f7f8",
|
|
9873
9881
|
networkAddress: 129,
|