@willieee802/zigbee-herdsman 0.14.112 → 0.15.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 +4 -0
- package/CHANGELOG.md +27 -0
- package/dist/adapter/adapter.d.ts +61 -61
- package/dist/adapter/adapter.d.ts.map +1 -1
- package/dist/adapter/adapter.js +146 -100
- package/dist/adapter/adapter.js.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +68 -68
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.js +1060 -1063
- package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
- package/dist/adapter/deconz/adapter/index.d.ts +2 -2
- package/dist/adapter/deconz/adapter/index.js +10 -10
- package/dist/adapter/deconz/driver/constants.d.ts +104 -104
- package/dist/adapter/deconz/driver/constants.js +55 -55
- package/dist/adapter/deconz/driver/driver.d.ts +81 -81
- package/dist/adapter/deconz/driver/driver.js +732 -732
- package/dist/adapter/deconz/driver/frame.d.ts +6 -6
- package/dist/adapter/deconz/driver/frame.js +13 -13
- package/dist/adapter/deconz/driver/frameParser.d.ts +2 -2
- package/dist/adapter/deconz/driver/frameParser.js +443 -443
- package/dist/adapter/deconz/driver/parser.d.ts +12 -12
- package/dist/adapter/deconz/driver/parser.js +61 -61
- package/dist/adapter/deconz/driver/writer.d.ts +8 -8
- package/dist/adapter/deconz/driver/writer.js +44 -44
- package/dist/adapter/events.d.ts +47 -47
- package/dist/adapter/events.js +14 -14
- package/dist/adapter/ezsp/adapter/backup.d.ts +9 -9
- package/dist/adapter/ezsp/adapter/backup.js +53 -53
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +59 -59
- package/dist/adapter/ezsp/adapter/ezspAdapter.js +585 -585
- package/dist/adapter/ezsp/adapter/index.d.ts +2 -2
- package/dist/adapter/ezsp/adapter/index.js +10 -10
- package/dist/adapter/ezsp/driver/commands.d.ts +36 -34
- package/dist/adapter/ezsp/driver/commands.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/commands.js +2359 -2357
- package/dist/adapter/ezsp/driver/commands.js.map +1 -1
- package/dist/adapter/ezsp/driver/consts.d.ts +10 -10
- package/dist/adapter/ezsp/driver/consts.js +13 -13
- package/dist/adapter/ezsp/driver/driver.d.ts +103 -103
- package/dist/adapter/ezsp/driver/driver.js +639 -639
- package/dist/adapter/ezsp/driver/driver.js.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.d.ts +96 -96
- package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.js +586 -577
- package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
- package/dist/adapter/ezsp/driver/index.d.ts +3 -3
- package/dist/adapter/ezsp/driver/index.js +8 -8
- package/dist/adapter/ezsp/driver/multicast.d.ts +12 -12
- package/dist/adapter/ezsp/driver/multicast.js +74 -74
- package/dist/adapter/ezsp/driver/parser.d.ts +12 -12
- package/dist/adapter/ezsp/driver/parser.js +111 -111
- package/dist/adapter/ezsp/driver/types/basic.d.ts +62 -62
- package/dist/adapter/ezsp/driver/types/basic.js +208 -208
- package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/index.d.ts +9 -9
- package/dist/adapter/ezsp/driver/types/index.js +133 -133
- package/dist/adapter/ezsp/driver/types/named.d.ts +697 -697
- package/dist/adapter/ezsp/driver/types/named.js +1726 -1726
- package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.d.ts +251 -251
- package/dist/adapter/ezsp/driver/types/struct.js +708 -708
- package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
- package/dist/adapter/ezsp/driver/uart.d.ts +44 -44
- package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/uart.js +368 -366
- package/dist/adapter/ezsp/driver/uart.js.map +1 -1
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +2 -2
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +55 -55
- package/dist/adapter/ezsp/driver/utils/index.d.ts +18 -18
- package/dist/adapter/ezsp/driver/utils/index.js +67 -67
- package/dist/adapter/ezsp/driver/writer.d.ts +13 -13
- package/dist/adapter/ezsp/driver/writer.js +88 -88
- package/dist/adapter/index.d.ts +4 -4
- package/dist/adapter/index.js +35 -35
- package/dist/adapter/serialPort.d.ts +8 -8
- package/dist/adapter/serialPort.js +22 -22
- package/dist/adapter/serialPort.js.map +1 -1
- package/dist/adapter/serialPortUtils.d.ts +12 -12
- package/dist/adapter/serialPortUtils.js +18 -18
- package/dist/adapter/socketPortUtils.d.ts +10 -10
- package/dist/adapter/socketPortUtils.js +16 -16
- package/dist/adapter/tstype.d.ts +85 -85
- package/dist/adapter/tstype.js +2 -2
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +62 -62
- package/dist/adapter/z-stack/adapter/adapter-backup.js +441 -441
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +150 -150
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +258 -258
- package/dist/adapter/z-stack/adapter/endpoints.d.ts +11 -11
- package/dist/adapter/z-stack/adapter/endpoints.js +73 -73
- package/dist/adapter/z-stack/adapter/index.d.ts +2 -2
- package/dist/adapter/z-stack/adapter/index.js +8 -8
- package/dist/adapter/z-stack/adapter/manager.d.ts +86 -86
- package/dist/adapter/z-stack/adapter/manager.js +476 -476
- package/dist/adapter/z-stack/adapter/tstype.d.ts +6 -6
- package/dist/adapter/z-stack/adapter/tstype.js +10 -10
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +81 -81
- package/dist/adapter/z-stack/adapter/zStackAdapter.js +868 -868
- package/dist/adapter/z-stack/constants/af.d.ts +23 -23
- package/dist/adapter/z-stack/constants/af.js +27 -27
- package/dist/adapter/z-stack/constants/common.d.ts +278 -278
- package/dist/adapter/z-stack/constants/common.js +289 -289
- package/dist/adapter/z-stack/constants/dbg.d.ts +22 -22
- package/dist/adapter/z-stack/constants/dbg.js +24 -24
- package/dist/adapter/z-stack/constants/index.d.ts +10 -10
- package/dist/adapter/z-stack/constants/index.js +47 -47
- package/dist/adapter/z-stack/constants/mac.d.ts +127 -127
- package/dist/adapter/z-stack/constants/mac.js +129 -129
- package/dist/adapter/z-stack/constants/sapi.d.ts +24 -24
- package/dist/adapter/z-stack/constants/sapi.js +26 -26
- package/dist/adapter/z-stack/constants/sys.d.ts +71 -71
- package/dist/adapter/z-stack/constants/sys.js +73 -73
- package/dist/adapter/z-stack/constants/util.d.ts +81 -81
- package/dist/adapter/z-stack/constants/util.js +83 -83
- package/dist/adapter/z-stack/constants/utils.d.ts +4 -4
- package/dist/adapter/z-stack/constants/utils.js +14 -14
- package/dist/adapter/z-stack/constants/zdo.d.ts +102 -102
- package/dist/adapter/z-stack/constants/zdo.js +104 -104
- package/dist/adapter/z-stack/models/index.d.ts +1 -1
- package/dist/adapter/z-stack/models/index.js +17 -17
- package/dist/adapter/z-stack/models/startup-options.d.ts +12 -12
- package/dist/adapter/z-stack/models/startup-options.js +2 -2
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +23 -23
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +45 -45
- package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/address-manager-table.js +22 -22
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +21 -21
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +23 -23
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +24 -24
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +23 -23
- package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +8 -8
- package/dist/adapter/z-stack/structs/entries/channel-list.js +15 -15
- package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +8 -8
- package/dist/adapter/z-stack/structs/entries/has-configured.js +16 -16
- package/dist/adapter/z-stack/structs/entries/index.d.ts +16 -16
- package/dist/adapter/z-stack/structs/entries/index.js +32 -32
- package/dist/adapter/z-stack/structs/entries/nib.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/nib.js +68 -68
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +18 -18
- package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +8 -8
- package/dist/adapter/z-stack/structs/entries/nwk-key.js +15 -15
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +8 -8
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +15 -15
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +13 -13
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +23 -23
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +22 -22
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +20 -20
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +36 -36
- package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +10 -10
- package/dist/adapter/z-stack/structs/entries/security-manager-table.js +24 -24
- package/dist/adapter/z-stack/structs/index.d.ts +4 -4
- package/dist/adapter/z-stack/structs/index.js +20 -20
- package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +13 -13
- package/dist/adapter/z-stack/structs/serializable-memory-object.js +2 -2
- package/dist/adapter/z-stack/structs/struct.d.ts +99 -99
- package/dist/adapter/z-stack/structs/struct.js +295 -295
- package/dist/adapter/z-stack/structs/table.d.ts +94 -94
- package/dist/adapter/z-stack/structs/table.js +161 -161
- package/dist/adapter/z-stack/unpi/constants.d.ts +28 -28
- package/dist/adapter/z-stack/unpi/constants.js +41 -41
- package/dist/adapter/z-stack/unpi/frame.d.ts +16 -16
- package/dist/adapter/z-stack/unpi/frame.js +48 -48
- package/dist/adapter/z-stack/unpi/index.d.ts +5 -5
- package/dist/adapter/z-stack/unpi/index.js +37 -37
- package/dist/adapter/z-stack/unpi/parser.d.ts +10 -10
- package/dist/adapter/z-stack/unpi/parser.js +74 -74
- package/dist/adapter/z-stack/unpi/writer.d.ts +10 -10
- package/dist/adapter/z-stack/unpi/writer.js +44 -44
- package/dist/adapter/z-stack/utils/channel-list.d.ts +20 -20
- package/dist/adapter/z-stack/utils/channel-list.js +40 -40
- package/dist/adapter/z-stack/utils/index.d.ts +2 -2
- package/dist/adapter/z-stack/utils/index.js +18 -18
- package/dist/adapter/z-stack/utils/network-options.d.ts +8 -8
- package/dist/adapter/z-stack/utils/network-options.js +22 -22
- package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +11 -11
- package/dist/adapter/z-stack/znp/buffaloZnp.js +113 -113
- package/dist/adapter/z-stack/znp/definition.d.ts +5 -5
- package/dist/adapter/z-stack/znp/definition.js +3050 -3050
- package/dist/adapter/z-stack/znp/index.d.ts +3 -3
- package/dist/adapter/z-stack/znp/index.js +10 -10
- package/dist/adapter/z-stack/znp/parameterType.d.ts +22 -22
- package/dist/adapter/z-stack/znp/parameterType.js +25 -25
- package/dist/adapter/z-stack/znp/tstype.d.ts +21 -21
- package/dist/adapter/z-stack/znp/tstype.js +2 -2
- package/dist/adapter/z-stack/znp/znp.d.ts +43 -43
- package/dist/adapter/z-stack/znp/znp.js +325 -325
- package/dist/adapter/z-stack/znp/zpiObject.d.ts +19 -19
- package/dist/adapter/z-stack/znp/zpiObject.js +96 -96
- package/dist/adapter/zigate/adapter/index.d.ts +2 -2
- package/dist/adapter/zigate/adapter/index.js +10 -10
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +69 -69
- package/dist/adapter/zigate/adapter/zigateAdapter.js +678 -678
- package/dist/adapter/zigate/debug.d.ts +7 -7
- package/dist/adapter/zigate/debug.js +22 -22
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +18 -18
- package/dist/adapter/zigate/driver/buffaloZiGate.js +139 -139
- package/dist/adapter/zigate/driver/commandType.d.ts +41 -41
- package/dist/adapter/zigate/driver/commandType.js +385 -385
- package/dist/adapter/zigate/driver/constants.d.ts +276 -276
- package/dist/adapter/zigate/driver/constants.js +371 -371
- package/dist/adapter/zigate/driver/frame.d.ts +26 -26
- package/dist/adapter/zigate/driver/frame.js +172 -172
- package/dist/adapter/zigate/driver/frame.js.map +1 -1
- package/dist/adapter/zigate/driver/messageType.d.ts +11 -11
- package/dist/adapter/zigate/driver/messageType.js +278 -278
- package/dist/adapter/zigate/driver/parameterType.d.ts +20 -20
- package/dist/adapter/zigate/driver/parameterType.js +23 -23
- package/dist/adapter/zigate/driver/ziGateObject.d.ts +23 -23
- package/dist/adapter/zigate/driver/ziGateObject.js +106 -106
- package/dist/adapter/zigate/driver/zigate.d.ts +49 -49
- package/dist/adapter/zigate/driver/zigate.js +303 -303
- package/dist/buffalo/buffalo.d.ts +50 -48
- package/dist/buffalo/buffalo.d.ts.map +1 -1
- package/dist/buffalo/buffalo.js +322 -307
- package/dist/buffalo/buffalo.js.map +1 -1
- package/dist/buffalo/index.d.ts +3 -3
- package/dist/buffalo/index.js +33 -33
- package/dist/buffalo/tstype.d.ts +8 -8
- package/dist/buffalo/tstype.js +2 -2
- package/dist/controller/controller.d.ts +110 -110
- package/dist/controller/controller.js +607 -607
- package/dist/controller/database.d.ts +18 -18
- package/dist/controller/database.js +93 -93
- package/dist/controller/events.d.ts +55 -55
- package/dist/controller/events.d.ts.map +1 -1
- package/dist/controller/events.js +101 -99
- package/dist/controller/events.js.map +1 -1
- package/dist/controller/greenPower.d.ts +12 -12
- package/dist/controller/greenPower.js +220 -220
- package/dist/controller/helpers/index.d.ts +2 -2
- package/dist/controller/helpers/index.js +28 -28
- package/dist/controller/helpers/request.d.ts +23 -0
- package/dist/controller/helpers/request.d.ts.map +1 -0
- package/dist/controller/helpers/request.js +72 -0
- package/dist/controller/helpers/request.js.map +1 -0
- package/dist/controller/helpers/zclFrameConverter.d.ts +7 -7
- package/dist/controller/helpers/zclFrameConverter.js +31 -31
- package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +5 -5
- package/dist/controller/helpers/zclTransactionSequenceNumber.js +13 -13
- package/dist/controller/index.d.ts +5 -5
- package/dist/controller/index.js +8 -8
- package/dist/controller/logger-stub.d.ts +6 -6
- package/dist/controller/logger-stub.js +2 -2
- package/dist/controller/model/device.d.ts +132 -127
- package/dist/controller/model/device.d.ts.map +1 -1
- package/dist/controller/model/device.js +708 -681
- package/dist/controller/model/device.js.map +1 -1
- package/dist/controller/model/endpoint.d.ts +131 -128
- package/dist/controller/model/endpoint.d.ts.map +1 -1
- package/dist/controller/model/endpoint.js +817 -665
- package/dist/controller/model/endpoint.js.map +1 -1
- package/dist/controller/model/entity.d.ts +14 -14
- package/dist/controller/model/entity.js +26 -26
- package/dist/controller/model/group.d.ts +39 -39
- package/dist/controller/model/group.js +221 -221
- package/dist/controller/model/index.d.ts +5 -5
- package/dist/controller/model/index.js +14 -14
- package/dist/controller/touchlink.d.ts +19 -19
- package/dist/controller/touchlink.js +157 -157
- package/dist/controller/tstype.d.ts +21 -20
- package/dist/controller/tstype.d.ts.map +1 -1
- package/dist/controller/tstype.js +9 -9
- package/dist/controller/tstype.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +33 -33
- package/dist/models/backup-storage-legacy.d.ts +26 -26
- package/dist/models/backup-storage-legacy.js +2 -2
- package/dist/models/backup-storage-unified.d.ts +49 -49
- package/dist/models/backup-storage-unified.js +2 -2
- package/dist/models/backup.d.ts +37 -37
- package/dist/models/backup.js +2 -2
- package/dist/models/index.d.ts +4 -4
- package/dist/models/index.js +20 -20
- package/dist/models/network-options.d.ts +12 -12
- package/dist/models/network-options.js +2 -2
- package/dist/utils/assertString.d.ts +2 -2
- package/dist/utils/assertString.js +8 -8
- package/dist/utils/backup.d.ts +20 -20
- package/dist/utils/backup.js +187 -187
- package/dist/utils/equalsPartial.d.ts +2 -2
- package/dist/utils/equalsPartial.js +11 -11
- package/dist/utils/index.d.ts +9 -9
- package/dist/utils/index.js +45 -45
- package/dist/utils/isNumberArray.d.ts +2 -2
- package/dist/utils/isNumberArray.js +6 -6
- package/dist/utils/queue.d.ts +11 -11
- package/dist/utils/queue.js +50 -50
- package/dist/utils/realpathSync.d.ts +2 -2
- package/dist/utils/realpathSync.js +12 -12
- package/dist/utils/wait.d.ts +2 -2
- package/dist/utils/wait.js +8 -8
- package/dist/utils/waitress.d.ts +21 -21
- package/dist/utils/waitress.js +61 -61
- package/dist/zcl/buffaloZcl.d.ts +41 -41
- package/dist/zcl/buffaloZcl.js +591 -591
- package/dist/zcl/definition/buffaloZclDataType.d.ts +17 -17
- package/dist/zcl/definition/buffaloZclDataType.js +20 -20
- package/dist/zcl/definition/cluster.d.ts +29 -29
- package/dist/zcl/definition/cluster.d.ts.map +1 -1
- package/dist/zcl/definition/cluster.js +5335 -5215
- package/dist/zcl/definition/cluster.js.map +1 -1
- package/dist/zcl/definition/dataType.d.ts +59 -59
- package/dist/zcl/definition/dataType.d.ts.map +1 -1
- package/dist/zcl/definition/dataType.js +64 -64
- package/dist/zcl/definition/dataType.js.map +1 -1
- package/dist/zcl/definition/direction.d.ts +5 -5
- package/dist/zcl/definition/direction.js +8 -8
- package/dist/zcl/definition/endpointDeviceType.d.ts +4 -4
- package/dist/zcl/definition/endpointDeviceType.js +15 -15
- package/dist/zcl/definition/foundation.d.ts +11 -11
- package/dist/zcl/definition/foundation.js +167 -167
- package/dist/zcl/definition/frameControl.d.ts +10 -10
- package/dist/zcl/definition/frameControl.js +2 -2
- package/dist/zcl/definition/frameType.d.ts +5 -5
- package/dist/zcl/definition/frameType.js +8 -8
- package/dist/zcl/definition/index.d.ts +13 -13
- package/dist/zcl/definition/index.js +51 -51
- package/dist/zcl/definition/manufacturerCode.d.ts +1074 -1074
- package/dist/zcl/definition/manufacturerCode.js +1079 -1079
- package/dist/zcl/definition/powerSource.d.ts +4 -4
- package/dist/zcl/definition/powerSource.js +12 -12
- package/dist/zcl/definition/status.d.ts +38 -38
- package/dist/zcl/definition/status.js +41 -41
- package/dist/zcl/definition/tstype.d.ts +16 -16
- package/dist/zcl/definition/tstype.js +2 -2
- package/dist/zcl/index.d.ts +15 -15
- package/dist/zcl/index.js +55 -55
- package/dist/zcl/tstype.d.ts +56 -56
- package/dist/zcl/tstype.js +10 -10
- package/dist/zcl/utils.d.ts +6 -6
- package/dist/zcl/utils.js +165 -165
- package/dist/zcl/zclFrame.d.ts +45 -45
- package/dist/zcl/zclFrame.js +347 -347
- package/dist/zcl/zclStatusError.d.ts +5 -5
- package/dist/zcl/zclStatusError.js +13 -13
- package/package.json +6 -5
- package/release-please-config.json +13 -0
- package/.github/ISSUE_TEMPLATE/config.yml +0 -5
- package/.github/dependabot.yml +0 -6
- package/.github/workflows/ci.yml +0 -31
- package/.github/workflows/release.yml +0 -56
- package/.github/workflows/stale.yml +0 -19
- package/.github/workflows/update_deps.yml +0 -24
|
@@ -1,221 +1,221 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const Zcl = __importStar(require("../zcl"));
|
|
30
|
-
const crypto_1 = __importDefault(require("crypto"));
|
|
31
|
-
const zclTransactionSequenceNumber_1 = __importDefault(require("./helpers/zclTransactionSequenceNumber"));
|
|
32
|
-
const events_1 = __importDefault(require("events"));
|
|
33
|
-
const tstype_1 = require("./tstype");
|
|
34
|
-
const debug_1 = __importDefault(require("debug"));
|
|
35
|
-
const debug = {
|
|
36
|
-
info: (0, debug_1.default)('zigbee-herdsman:controller:greenpower'),
|
|
37
|
-
error: (0, debug_1.default)('zigbee-herdsman:controller:greenpower'),
|
|
38
|
-
};
|
|
39
|
-
const zigBeeLinkKey = Buffer.from([
|
|
40
|
-
0x5A, 0x69, 0x67, 0x42, 0x65, 0x65, 0x41, 0x6C, 0x6C, 0x69, 0x61, 0x6E, 0x63, 0x65, 0x30, 0x39
|
|
41
|
-
]);
|
|
42
|
-
class GreenPower extends events_1.default.EventEmitter {
|
|
43
|
-
constructor(adapter) {
|
|
44
|
-
super();
|
|
45
|
-
this.adapter = adapter;
|
|
46
|
-
}
|
|
47
|
-
encryptSecurityKey(sourceID, securityKey) {
|
|
48
|
-
const sourceIDInBytes = Buffer.from([
|
|
49
|
-
(sourceID & 0x000000ff),
|
|
50
|
-
(sourceID & 0x0000ff00) >> 8,
|
|
51
|
-
(sourceID & 0x00ff0000) >> 16,
|
|
52
|
-
(sourceID & 0xff000000) >> 24
|
|
53
|
-
]);
|
|
54
|
-
const nonce = Buffer.alloc(13);
|
|
55
|
-
for (let i = 0; i < 3; i++) {
|
|
56
|
-
for (let j = 0; j < 4; j++) {
|
|
57
|
-
nonce[4 * i + j] = sourceIDInBytes[j];
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
nonce[12] = 0x05;
|
|
61
|
-
const cipher = crypto_1.default.createCipheriv('aes-128-ccm', zigBeeLinkKey, nonce, { authTagLength: 16 });
|
|
62
|
-
const encrypted = cipher.update(securityKey);
|
|
63
|
-
return Buffer.concat([encrypted, cipher.final()]);
|
|
64
|
-
}
|
|
65
|
-
/* eslint-disable-next-line @typescript-eslint/no-explicit-any*/
|
|
66
|
-
async sendPairingCommand(payload, dataPayload) {
|
|
67
|
-
debug.info("Payload.Options: " + payload.options + " wasBroadcast: " + dataPayload.wasBroadcast);
|
|
68
|
-
// Set sink address based on communication mode
|
|
69
|
-
switch ((payload.options >> 5) & 3) {
|
|
70
|
-
case 0b10: // Groupcast to pre-commissioned GroupID
|
|
71
|
-
case 0b01: // Groupcast to DGroupID
|
|
72
|
-
payload.sinkGroupID = this.adapter.greenPowerGroup;
|
|
73
|
-
break;
|
|
74
|
-
/* istanbul ignore next */
|
|
75
|
-
case 0b00: // Full unicast forwarding
|
|
76
|
-
case 0b11: // Lightweight unicast forwarding
|
|
77
|
-
const coordinator = await this.adapter.getCoordinator();
|
|
78
|
-
payload.sinkIEEEAddr = coordinator.ieeeAddr;
|
|
79
|
-
payload.sinkNwkAddr = coordinator.networkAddress;
|
|
80
|
-
break;
|
|
81
|
-
/* istanbul ignore next */
|
|
82
|
-
default:
|
|
83
|
-
debug.error("Unhandled applicationID: " + (payload.options & 7));
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
const frame = Zcl.ZclFrame.create(Zcl.FrameType.SPECIFIC, Zcl.Direction.SERVER_TO_CLIENT, true, null, zclTransactionSequenceNumber_1.default.next(), 'pairing', 33, payload);
|
|
87
|
-
// Not sure how correct this is - according to GP spec Pairing command is
|
|
88
|
-
// to be sent as broadcast unless communication mode is 0b11 - in which case
|
|
89
|
-
// the proxy MAY send it as unicast to selected proxy.
|
|
90
|
-
// This attempts to mirror logic from commit 92f77cc5.
|
|
91
|
-
if (dataPayload.wasBroadcast) {
|
|
92
|
-
return this.adapter.sendZclFrameToAll(242, frame, 242);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
return this.adapter.sendZclFrameToEndpoint(null, dataPayload.frame.Payload.gppNwkAddr, 242, frame, 10000, false, false, 242);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
async onZclGreenPowerData(dataPayload) {
|
|
99
|
-
let payload = {};
|
|
100
|
-
try {
|
|
101
|
-
switch (dataPayload.frame.Payload.commandID) {
|
|
102
|
-
/* istanbul ignore next */
|
|
103
|
-
case undefined:
|
|
104
|
-
debug.error("GP Undefined Command");
|
|
105
|
-
break;
|
|
106
|
-
case 0xE0: // GP Commissioning
|
|
107
|
-
debug.info("GP Commissioning");
|
|
108
|
-
/* istanbul ignore if */
|
|
109
|
-
if (typeof dataPayload.address !== 'number') {
|
|
110
|
-
debug.info("Warning: commissioning request with string type address");
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
const rxOnCap = dataPayload.frame.Payload.commandFrame.options & 0b10;
|
|
114
|
-
const key = this.encryptSecurityKey(dataPayload.frame.Payload.srcID, dataPayload.frame.Payload.commandFrame.securityKey);
|
|
115
|
-
// RX capable GPD needs GP Commissioning Reply
|
|
116
|
-
if (rxOnCap) {
|
|
117
|
-
debug.info("RxOnCap set -> supports bidirectional communication");
|
|
118
|
-
// NOTE: currently encryption is disabled for RX capable GPDs
|
|
119
|
-
const networkParameters = await this.adapter.getNetworkParameters();
|
|
120
|
-
// Commissioning reply
|
|
121
|
-
payload = {
|
|
122
|
-
options: 0,
|
|
123
|
-
tempMaster: dataPayload.frame.Payload.gppNwkAddr,
|
|
124
|
-
tempMasterTx: networkParameters.channel - 11,
|
|
125
|
-
srcID: dataPayload.frame.Payload.srcID,
|
|
126
|
-
gpdCmd: 0xf0,
|
|
127
|
-
gpdPayload: {
|
|
128
|
-
commandID: 0xf0,
|
|
129
|
-
options: 0b00000000, // Disable encryption
|
|
130
|
-
// securityKey: [...dataPayload.frame.Payload.commandFrame.securityKey],
|
|
131
|
-
// keyMic: dataPayload.frame.Payload.commandFrame.keyMic,
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
const frame = Zcl.ZclFrame.create(Zcl.FrameType.SPECIFIC, Zcl.Direction.SERVER_TO_CLIENT, true, null, zclTransactionSequenceNumber_1.default.next(), 'response', 33, payload);
|
|
135
|
-
await this.adapter.sendZclFrameToAll(242, frame, 242);
|
|
136
|
-
payload = {
|
|
137
|
-
options: 0b0000000110101000,
|
|
138
|
-
srcID: dataPayload.frame.Payload.srcID,
|
|
139
|
-
deviceID: dataPayload.frame.Payload.commandFrame.deviceID,
|
|
140
|
-
};
|
|
141
|
-
await this.sendPairingCommand(payload, dataPayload);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
// Communication mode:
|
|
145
|
-
// Broadcast: Groupcast to precommissioned ID (0b10)
|
|
146
|
-
// !Broadcast: Lightweight unicast (0b11)
|
|
147
|
-
let opt = 0b1110010101101000;
|
|
148
|
-
if (dataPayload.wasBroadcast) {
|
|
149
|
-
opt = 0b1110010101001000;
|
|
150
|
-
}
|
|
151
|
-
payload = {
|
|
152
|
-
options: opt,
|
|
153
|
-
srcID: dataPayload.frame.Payload.srcID,
|
|
154
|
-
deviceID: dataPayload.frame.Payload.commandFrame.deviceID,
|
|
155
|
-
frameCounter: dataPayload.frame.Payload.commandFrame.outgoingCounter,
|
|
156
|
-
gpdKey: [...key],
|
|
157
|
-
};
|
|
158
|
-
await this.sendPairingCommand(payload, dataPayload);
|
|
159
|
-
}
|
|
160
|
-
const eventData = {
|
|
161
|
-
sourceID: dataPayload.frame.Payload.srcID,
|
|
162
|
-
deviceID: dataPayload.frame.Payload.commandFrame.deviceID,
|
|
163
|
-
networkAddress: dataPayload.frame.Payload.srcID & 0xFFFF,
|
|
164
|
-
};
|
|
165
|
-
this.emit(tstype_1.GreenPowerEvents.deviceJoined, eventData);
|
|
166
|
-
break;
|
|
167
|
-
/* istanbul ignore next */
|
|
168
|
-
case 0xE2: // GP Success
|
|
169
|
-
debug.info("GP Success");
|
|
170
|
-
if (typeof dataPayload.address !== 'number') {
|
|
171
|
-
debug.info("Warning: commissioning request with string type address");
|
|
172
|
-
break;
|
|
173
|
-
}
|
|
174
|
-
break;
|
|
175
|
-
case 0xE3: // GP Channel Request
|
|
176
|
-
debug.info("GP Channel Request");
|
|
177
|
-
const networkParameters = await this.adapter.getNetworkParameters();
|
|
178
|
-
// Channel notification
|
|
179
|
-
payload = {
|
|
180
|
-
options: 0,
|
|
181
|
-
tempMaster: dataPayload.frame.Payload.gppNwkAddr,
|
|
182
|
-
tempMasterTx: dataPayload.frame.Payload.commandFrame.nextChannel,
|
|
183
|
-
srcID: dataPayload.frame.Payload.srcID,
|
|
184
|
-
gpdCmd: 0xf3,
|
|
185
|
-
gpdPayload: {
|
|
186
|
-
commandID: 0xf3,
|
|
187
|
-
options: networkParameters.channel - 11,
|
|
188
|
-
}
|
|
189
|
-
};
|
|
190
|
-
const frame = Zcl.ZclFrame.create(Zcl.FrameType.SPECIFIC, Zcl.Direction.SERVER_TO_CLIENT, true, null, zclTransactionSequenceNumber_1.default.next(), 'response', 33, payload);
|
|
191
|
-
await this.adapter.sendZclFrameToAll(242, frame, 242);
|
|
192
|
-
break;
|
|
193
|
-
/* istanbul ignore next */
|
|
194
|
-
case 0xA1: // GP Manufacturer-specific Attribute Reporting
|
|
195
|
-
break;
|
|
196
|
-
default:
|
|
197
|
-
debug.info("Unhandled Zigbee GreenPower command: 0x" +
|
|
198
|
-
dataPayload.frame.Payload.commandID.toString(16));
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
catch (error) {
|
|
202
|
-
/* istanbul ignore next */
|
|
203
|
-
debug.error(`onZclGreenPowerData failed with error '${error}'`);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
async permitJoin(time, networkAddress) {
|
|
207
|
-
const payload = {
|
|
208
|
-
options: time ? (networkAddress === null ? 0x0b : 0x2b) : 0x0a,
|
|
209
|
-
commisioningWindow: time,
|
|
210
|
-
};
|
|
211
|
-
const frame = Zcl.ZclFrame.create(Zcl.FrameType.SPECIFIC, Zcl.Direction.SERVER_TO_CLIENT, true, null, zclTransactionSequenceNumber_1.default.next(), 'commisioningMode', 33, payload);
|
|
212
|
-
if (networkAddress === null) {
|
|
213
|
-
await this.adapter.sendZclFrameToAll(242, frame, 242);
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
await this.adapter.sendZclFrameToEndpoint(null, networkAddress, 242, frame, 10000, false, false, 242);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
exports.default = GreenPower;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const Zcl = __importStar(require("../zcl"));
|
|
30
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
31
|
+
const zclTransactionSequenceNumber_1 = __importDefault(require("./helpers/zclTransactionSequenceNumber"));
|
|
32
|
+
const events_1 = __importDefault(require("events"));
|
|
33
|
+
const tstype_1 = require("./tstype");
|
|
34
|
+
const debug_1 = __importDefault(require("debug"));
|
|
35
|
+
const debug = {
|
|
36
|
+
info: (0, debug_1.default)('zigbee-herdsman:controller:greenpower'),
|
|
37
|
+
error: (0, debug_1.default)('zigbee-herdsman:controller:greenpower'),
|
|
38
|
+
};
|
|
39
|
+
const zigBeeLinkKey = Buffer.from([
|
|
40
|
+
0x5A, 0x69, 0x67, 0x42, 0x65, 0x65, 0x41, 0x6C, 0x6C, 0x69, 0x61, 0x6E, 0x63, 0x65, 0x30, 0x39
|
|
41
|
+
]);
|
|
42
|
+
class GreenPower extends events_1.default.EventEmitter {
|
|
43
|
+
constructor(adapter) {
|
|
44
|
+
super();
|
|
45
|
+
this.adapter = adapter;
|
|
46
|
+
}
|
|
47
|
+
encryptSecurityKey(sourceID, securityKey) {
|
|
48
|
+
const sourceIDInBytes = Buffer.from([
|
|
49
|
+
(sourceID & 0x000000ff),
|
|
50
|
+
(sourceID & 0x0000ff00) >> 8,
|
|
51
|
+
(sourceID & 0x00ff0000) >> 16,
|
|
52
|
+
(sourceID & 0xff000000) >> 24
|
|
53
|
+
]);
|
|
54
|
+
const nonce = Buffer.alloc(13);
|
|
55
|
+
for (let i = 0; i < 3; i++) {
|
|
56
|
+
for (let j = 0; j < 4; j++) {
|
|
57
|
+
nonce[4 * i + j] = sourceIDInBytes[j];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
nonce[12] = 0x05;
|
|
61
|
+
const cipher = crypto_1.default.createCipheriv('aes-128-ccm', zigBeeLinkKey, nonce, { authTagLength: 16 });
|
|
62
|
+
const encrypted = cipher.update(securityKey);
|
|
63
|
+
return Buffer.concat([encrypted, cipher.final()]);
|
|
64
|
+
}
|
|
65
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any*/
|
|
66
|
+
async sendPairingCommand(payload, dataPayload) {
|
|
67
|
+
debug.info("Payload.Options: " + payload.options + " wasBroadcast: " + dataPayload.wasBroadcast);
|
|
68
|
+
// Set sink address based on communication mode
|
|
69
|
+
switch ((payload.options >> 5) & 3) {
|
|
70
|
+
case 0b10: // Groupcast to pre-commissioned GroupID
|
|
71
|
+
case 0b01: // Groupcast to DGroupID
|
|
72
|
+
payload.sinkGroupID = this.adapter.greenPowerGroup;
|
|
73
|
+
break;
|
|
74
|
+
/* istanbul ignore next */
|
|
75
|
+
case 0b00: // Full unicast forwarding
|
|
76
|
+
case 0b11: // Lightweight unicast forwarding
|
|
77
|
+
const coordinator = await this.adapter.getCoordinator();
|
|
78
|
+
payload.sinkIEEEAddr = coordinator.ieeeAddr;
|
|
79
|
+
payload.sinkNwkAddr = coordinator.networkAddress;
|
|
80
|
+
break;
|
|
81
|
+
/* istanbul ignore next */
|
|
82
|
+
default:
|
|
83
|
+
debug.error("Unhandled applicationID: " + (payload.options & 7));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const frame = Zcl.ZclFrame.create(Zcl.FrameType.SPECIFIC, Zcl.Direction.SERVER_TO_CLIENT, true, null, zclTransactionSequenceNumber_1.default.next(), 'pairing', 33, payload);
|
|
87
|
+
// Not sure how correct this is - according to GP spec Pairing command is
|
|
88
|
+
// to be sent as broadcast unless communication mode is 0b11 - in which case
|
|
89
|
+
// the proxy MAY send it as unicast to selected proxy.
|
|
90
|
+
// This attempts to mirror logic from commit 92f77cc5.
|
|
91
|
+
if (dataPayload.wasBroadcast) {
|
|
92
|
+
return this.adapter.sendZclFrameToAll(242, frame, 242);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
return this.adapter.sendZclFrameToEndpoint(null, dataPayload.frame.Payload.gppNwkAddr, 242, frame, 10000, false, false, 242);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async onZclGreenPowerData(dataPayload) {
|
|
99
|
+
let payload = {};
|
|
100
|
+
try {
|
|
101
|
+
switch (dataPayload.frame.Payload.commandID) {
|
|
102
|
+
/* istanbul ignore next */
|
|
103
|
+
case undefined:
|
|
104
|
+
debug.error("GP Undefined Command");
|
|
105
|
+
break;
|
|
106
|
+
case 0xE0: // GP Commissioning
|
|
107
|
+
debug.info("GP Commissioning");
|
|
108
|
+
/* istanbul ignore if */
|
|
109
|
+
if (typeof dataPayload.address !== 'number') {
|
|
110
|
+
debug.info("Warning: commissioning request with string type address");
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
const rxOnCap = dataPayload.frame.Payload.commandFrame.options & 0b10;
|
|
114
|
+
const key = this.encryptSecurityKey(dataPayload.frame.Payload.srcID, dataPayload.frame.Payload.commandFrame.securityKey);
|
|
115
|
+
// RX capable GPD needs GP Commissioning Reply
|
|
116
|
+
if (rxOnCap) {
|
|
117
|
+
debug.info("RxOnCap set -> supports bidirectional communication");
|
|
118
|
+
// NOTE: currently encryption is disabled for RX capable GPDs
|
|
119
|
+
const networkParameters = await this.adapter.getNetworkParameters();
|
|
120
|
+
// Commissioning reply
|
|
121
|
+
payload = {
|
|
122
|
+
options: 0,
|
|
123
|
+
tempMaster: dataPayload.frame.Payload.gppNwkAddr,
|
|
124
|
+
tempMasterTx: networkParameters.channel - 11,
|
|
125
|
+
srcID: dataPayload.frame.Payload.srcID,
|
|
126
|
+
gpdCmd: 0xf0,
|
|
127
|
+
gpdPayload: {
|
|
128
|
+
commandID: 0xf0,
|
|
129
|
+
options: 0b00000000, // Disable encryption
|
|
130
|
+
// securityKey: [...dataPayload.frame.Payload.commandFrame.securityKey],
|
|
131
|
+
// keyMic: dataPayload.frame.Payload.commandFrame.keyMic,
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
const frame = Zcl.ZclFrame.create(Zcl.FrameType.SPECIFIC, Zcl.Direction.SERVER_TO_CLIENT, true, null, zclTransactionSequenceNumber_1.default.next(), 'response', 33, payload);
|
|
135
|
+
await this.adapter.sendZclFrameToAll(242, frame, 242);
|
|
136
|
+
payload = {
|
|
137
|
+
options: 0b0000000110101000,
|
|
138
|
+
srcID: dataPayload.frame.Payload.srcID,
|
|
139
|
+
deviceID: dataPayload.frame.Payload.commandFrame.deviceID,
|
|
140
|
+
};
|
|
141
|
+
await this.sendPairingCommand(payload, dataPayload);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
// Communication mode:
|
|
145
|
+
// Broadcast: Groupcast to precommissioned ID (0b10)
|
|
146
|
+
// !Broadcast: Lightweight unicast (0b11)
|
|
147
|
+
let opt = 0b1110010101101000;
|
|
148
|
+
if (dataPayload.wasBroadcast) {
|
|
149
|
+
opt = 0b1110010101001000;
|
|
150
|
+
}
|
|
151
|
+
payload = {
|
|
152
|
+
options: opt,
|
|
153
|
+
srcID: dataPayload.frame.Payload.srcID,
|
|
154
|
+
deviceID: dataPayload.frame.Payload.commandFrame.deviceID,
|
|
155
|
+
frameCounter: dataPayload.frame.Payload.commandFrame.outgoingCounter,
|
|
156
|
+
gpdKey: [...key],
|
|
157
|
+
};
|
|
158
|
+
await this.sendPairingCommand(payload, dataPayload);
|
|
159
|
+
}
|
|
160
|
+
const eventData = {
|
|
161
|
+
sourceID: dataPayload.frame.Payload.srcID,
|
|
162
|
+
deviceID: dataPayload.frame.Payload.commandFrame.deviceID,
|
|
163
|
+
networkAddress: dataPayload.frame.Payload.srcID & 0xFFFF,
|
|
164
|
+
};
|
|
165
|
+
this.emit(tstype_1.GreenPowerEvents.deviceJoined, eventData);
|
|
166
|
+
break;
|
|
167
|
+
/* istanbul ignore next */
|
|
168
|
+
case 0xE2: // GP Success
|
|
169
|
+
debug.info("GP Success");
|
|
170
|
+
if (typeof dataPayload.address !== 'number') {
|
|
171
|
+
debug.info("Warning: commissioning request with string type address");
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
break;
|
|
175
|
+
case 0xE3: // GP Channel Request
|
|
176
|
+
debug.info("GP Channel Request");
|
|
177
|
+
const networkParameters = await this.adapter.getNetworkParameters();
|
|
178
|
+
// Channel notification
|
|
179
|
+
payload = {
|
|
180
|
+
options: 0,
|
|
181
|
+
tempMaster: dataPayload.frame.Payload.gppNwkAddr,
|
|
182
|
+
tempMasterTx: dataPayload.frame.Payload.commandFrame.nextChannel,
|
|
183
|
+
srcID: dataPayload.frame.Payload.srcID,
|
|
184
|
+
gpdCmd: 0xf3,
|
|
185
|
+
gpdPayload: {
|
|
186
|
+
commandID: 0xf3,
|
|
187
|
+
options: networkParameters.channel - 11,
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
const frame = Zcl.ZclFrame.create(Zcl.FrameType.SPECIFIC, Zcl.Direction.SERVER_TO_CLIENT, true, null, zclTransactionSequenceNumber_1.default.next(), 'response', 33, payload);
|
|
191
|
+
await this.adapter.sendZclFrameToAll(242, frame, 242);
|
|
192
|
+
break;
|
|
193
|
+
/* istanbul ignore next */
|
|
194
|
+
case 0xA1: // GP Manufacturer-specific Attribute Reporting
|
|
195
|
+
break;
|
|
196
|
+
default:
|
|
197
|
+
debug.info("Unhandled Zigbee GreenPower command: 0x" +
|
|
198
|
+
dataPayload.frame.Payload.commandID.toString(16));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
/* istanbul ignore next */
|
|
203
|
+
debug.error(`onZclGreenPowerData failed with error '${error}'`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
async permitJoin(time, networkAddress) {
|
|
207
|
+
const payload = {
|
|
208
|
+
options: time ? (networkAddress === null ? 0x0b : 0x2b) : 0x0a,
|
|
209
|
+
commisioningWindow: time,
|
|
210
|
+
};
|
|
211
|
+
const frame = Zcl.ZclFrame.create(Zcl.FrameType.SPECIFIC, Zcl.Direction.SERVER_TO_CLIENT, true, null, zclTransactionSequenceNumber_1.default.next(), 'commisioningMode', 33, payload);
|
|
212
|
+
if (networkAddress === null) {
|
|
213
|
+
await this.adapter.sendZclFrameToAll(242, frame, 242);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
await this.adapter.sendZclFrameToEndpoint(null, networkAddress, 242, frame, 10000, false, false, 242);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
exports.default = GreenPower;
|
|
221
221
|
//# sourceMappingURL=greenPower.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import * as ZclFrameConverter from './zclFrameConverter';
|
|
2
|
-
export { ZclFrameConverter, };
|
|
1
|
+
import * as ZclFrameConverter from './zclFrameConverter';
|
|
2
|
+
export { ZclFrameConverter, };
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.ZclFrameConverter = void 0;
|
|
27
|
-
const ZclFrameConverter = __importStar(require("./zclFrameConverter"));
|
|
28
|
-
exports.ZclFrameConverter = ZclFrameConverter;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.ZclFrameConverter = void 0;
|
|
27
|
+
const ZclFrameConverter = __importStar(require("./zclFrameConverter"));
|
|
28
|
+
exports.ZclFrameConverter = ZclFrameConverter;
|
|
29
29
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { SendRequestWhen, SendPolicy } from '../tstype';
|
|
2
|
+
import * as Zcl from '../../zcl';
|
|
3
|
+
declare class Request<Type = any> {
|
|
4
|
+
static defaultSendPolicy: {
|
|
5
|
+
[key: number]: SendPolicy;
|
|
6
|
+
};
|
|
7
|
+
private _func;
|
|
8
|
+
frame: Zcl.ZclFrame;
|
|
9
|
+
expires: number;
|
|
10
|
+
sendPolicy: SendPolicy;
|
|
11
|
+
sendWhen: SendRequestWhen;
|
|
12
|
+
private _resolveQueue;
|
|
13
|
+
private _rejectQueue;
|
|
14
|
+
private _lastError;
|
|
15
|
+
constructor(func: (frame: Zcl.ZclFrame) => Promise<Type>, frame: Zcl.ZclFrame, timeout: number, sendWhen?: SendRequestWhen, sendPolicy?: SendPolicy, lastError?: Error, resolve?: (value: Type) => void, reject?: (error: Error) => void);
|
|
16
|
+
moveCallbacks(from: Request<Type>): void;
|
|
17
|
+
addCallbacks(resolve: (value: Type) => void, reject: (error: Error) => void): void;
|
|
18
|
+
reject(error?: Error): void;
|
|
19
|
+
resolve(value: Type): void;
|
|
20
|
+
send(): Promise<Type>;
|
|
21
|
+
}
|
|
22
|
+
export default Request;
|
|
23
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/controller/helpers/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAE,UAAU,EAAC,MAAM,WAAW,CAAC;AACtD,OAAO,KAAK,GAAG,MAAM,WAAW,CAAC;AAGjC,cAAM,OAAO,CAAC,IAAI,GAAG,GAAG;IAEpB,MAAM,CAAC,iBAAiB,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;KAAC,CAwBnD;IAEF,OAAO,CAAC,KAAK,CAAyC;IACtD,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,UAAU,CAAQ;gBACb,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAC3F,QAAQ,CAAC,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,KAAK,EACtE,OAAO,CAAC,EAAC,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;IAcnE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAE,IAAI,CAAC,GAAI,IAAI;IAO1C,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAKlF,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAK3B,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAKpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ9B;AAED,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any*/
|
|
4
|
+
class Request {
|
|
5
|
+
constructor(func, frame, timeout, sendWhen, sendPolicy, lastError, resolve, reject) {
|
|
6
|
+
this._func = func;
|
|
7
|
+
this.frame = frame;
|
|
8
|
+
this.sendWhen = sendWhen !== null && sendWhen !== void 0 ? sendWhen : 'active',
|
|
9
|
+
this.expires = timeout + Date.now();
|
|
10
|
+
this.sendPolicy = sendPolicy !== null && sendPolicy !== void 0 ? sendPolicy : (typeof frame.getCommand !== 'function' ?
|
|
11
|
+
undefined : Request.defaultSendPolicy[frame.getCommand().ID]);
|
|
12
|
+
this._resolveQueue = resolve === undefined ?
|
|
13
|
+
new Array() : new Array(resolve);
|
|
14
|
+
this._rejectQueue = reject === undefined ?
|
|
15
|
+
new Array() : new Array(reject);
|
|
16
|
+
this._lastError = lastError !== null && lastError !== void 0 ? lastError : Error("Request rejected before first send");
|
|
17
|
+
}
|
|
18
|
+
moveCallbacks(from) {
|
|
19
|
+
this._resolveQueue = this._resolveQueue.concat(from._resolveQueue);
|
|
20
|
+
this._rejectQueue = this._rejectQueue.concat(from._rejectQueue);
|
|
21
|
+
from._resolveQueue.length = 0;
|
|
22
|
+
from._rejectQueue.length = 0;
|
|
23
|
+
}
|
|
24
|
+
addCallbacks(resolve, reject) {
|
|
25
|
+
this._resolveQueue.push(resolve);
|
|
26
|
+
this._rejectQueue.push(reject);
|
|
27
|
+
}
|
|
28
|
+
reject(error) {
|
|
29
|
+
this._rejectQueue.forEach(el => el(error !== null && error !== void 0 ? error : this._lastError));
|
|
30
|
+
this._rejectQueue.length = 0;
|
|
31
|
+
}
|
|
32
|
+
resolve(value) {
|
|
33
|
+
this._resolveQueue.forEach(el => el(value));
|
|
34
|
+
this._resolveQueue.length = 0;
|
|
35
|
+
}
|
|
36
|
+
async send() {
|
|
37
|
+
try {
|
|
38
|
+
return await this._func(this.frame);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
this._lastError = error;
|
|
42
|
+
throw (error);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
Request.defaultSendPolicy = {
|
|
47
|
+
0x00: 'keep-payload',
|
|
48
|
+
0x01: 'immediate',
|
|
49
|
+
0x02: 'keep-command',
|
|
50
|
+
0x03: 'keep-cmd-undiv',
|
|
51
|
+
0x04: 'immediate',
|
|
52
|
+
0x05: 'keep-command',
|
|
53
|
+
0x06: 'keep-payload',
|
|
54
|
+
0x07: 'immediate',
|
|
55
|
+
0x08: 'keep-payload',
|
|
56
|
+
0x09: 'immediate',
|
|
57
|
+
0x0a: 'keep-payload',
|
|
58
|
+
0x0b: 'immediate',
|
|
59
|
+
0x0c: 'keep-payload',
|
|
60
|
+
0x0d: 'immediate',
|
|
61
|
+
0x0e: 'keep-payload',
|
|
62
|
+
0x0f: 'keep-payload',
|
|
63
|
+
0x10: 'immediate',
|
|
64
|
+
0x11: 'keep-payload',
|
|
65
|
+
0x12: 'immediate',
|
|
66
|
+
0x13: 'keep-payload',
|
|
67
|
+
0x14: 'immediate',
|
|
68
|
+
0x15: 'keep-payload',
|
|
69
|
+
0x16: 'immediate', // Discover Attributes Extended Response
|
|
70
|
+
};
|
|
71
|
+
exports.default = Request;
|
|
72
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/controller/helpers/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ZclFrame } from '../../zcl';
|
|
2
|
-
interface KeyValue {
|
|
3
|
-
[s: string]: number | string;
|
|
4
|
-
}
|
|
5
|
-
declare function attributeKeyValue(frame: ZclFrame): KeyValue;
|
|
6
|
-
declare function attributeList(frame: ZclFrame): Array<string | number>;
|
|
7
|
-
export { attributeKeyValue, attributeList, };
|
|
1
|
+
import { ZclFrame } from '../../zcl';
|
|
2
|
+
interface KeyValue {
|
|
3
|
+
[s: string]: number | string;
|
|
4
|
+
}
|
|
5
|
+
declare function attributeKeyValue(frame: ZclFrame): KeyValue;
|
|
6
|
+
declare function attributeList(frame: ZclFrame): Array<string | number>;
|
|
7
|
+
export { attributeKeyValue, attributeList, };
|
|
8
8
|
//# sourceMappingURL=zclFrameConverter.d.ts.map
|