@willieee802/zigbee-herdsman 0.34.3 → 0.48.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 +403 -0
- package/dist/adapter/adapter.d.ts +14 -13
- package/dist/adapter/adapter.d.ts.map +1 -1
- package/dist/adapter/adapter.js +15 -17
- package/dist/adapter/adapter.js.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +14 -12
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.js +118 -128
- package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
- package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/driver.js +44 -44
- package/dist/adapter/deconz/driver/driver.js.map +1 -1
- package/dist/adapter/deconz/driver/frameParser.js +43 -43
- package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
- package/dist/adapter/deconz/driver/parser.js +6 -6
- package/dist/adapter/deconz/driver/parser.js.map +1 -1
- package/dist/adapter/deconz/driver/writer.js +3 -3
- package/dist/adapter/deconz/driver/writer.js.map +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.d.ts +60 -71
- package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.js +453 -492
- package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
- package/dist/adapter/ember/adapter/endpoints.d.ts +5 -3
- package/dist/adapter/ember/adapter/endpoints.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/endpoints.js +33 -31
- package/dist/adapter/ember/adapter/endpoints.js.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.d.ts +16 -5
- package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.js +19 -4
- package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
- package/dist/adapter/ember/adapter/requestQueue.d.ts +2 -4
- package/dist/adapter/ember/adapter/requestQueue.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/requestQueue.js +17 -22
- package/dist/adapter/ember/adapter/requestQueue.js.map +1 -1
- package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/tokensManager.js +23 -20
- package/dist/adapter/ember/adapter/tokensManager.js.map +1 -1
- package/dist/adapter/ember/consts.d.ts +0 -7
- package/dist/adapter/ember/consts.d.ts.map +1 -1
- package/dist/adapter/ember/consts.js +2 -9
- package/dist/adapter/ember/consts.js.map +1 -1
- package/dist/adapter/ember/enums.d.ts +133 -145
- package/dist/adapter/ember/enums.d.ts.map +1 -1
- package/dist/adapter/ember/enums.js +132 -148
- package/dist/adapter/ember/enums.js.map +1 -1
- package/dist/adapter/ember/ezsp/buffalo.js +4 -4
- package/dist/adapter/ember/ezsp/buffalo.js.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.d.ts +1 -3
- package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.js +224 -208
- package/dist/adapter/ember/ezsp/ezsp.js.map +1 -1
- package/dist/adapter/ember/types.d.ts +9 -9
- package/dist/adapter/ember/types.d.ts.map +1 -1
- package/dist/adapter/ember/uart/ash.d.ts +27 -14
- package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
- package/dist/adapter/ember/uart/ash.js +158 -109
- package/dist/adapter/ember/uart/ash.js.map +1 -1
- package/dist/adapter/ember/uart/consts.d.ts +1 -1
- package/dist/adapter/ember/uart/consts.js +1 -1
- package/dist/adapter/ember/uart/parser.d.ts.map +1 -1
- package/dist/adapter/ember/uart/parser.js +5 -9
- package/dist/adapter/ember/uart/parser.js.map +1 -1
- package/dist/adapter/ember/uart/queues.d.ts.map +1 -1
- package/dist/adapter/ember/uart/queues.js +3 -1
- package/dist/adapter/ember/uart/queues.js.map +1 -1
- package/dist/adapter/ember/uart/writer.d.ts.map +1 -1
- package/dist/adapter/ember/uart/writer.js +4 -6
- package/dist/adapter/ember/uart/writer.js.map +1 -1
- package/dist/adapter/ember/zdo.d.ts +6 -2
- package/dist/adapter/ember/zdo.d.ts.map +1 -1
- package/dist/adapter/ember/zdo.js +2 -2
- package/dist/adapter/ember/zdo.js.map +1 -1
- package/dist/adapter/events.d.ts +17 -23
- package/dist/adapter/events.d.ts.map +1 -1
- package/dist/adapter/events.js +1 -2
- package/dist/adapter/events.js.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.d.ts +4 -1
- package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.js +35 -7
- package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +12 -9
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.js +79 -75
- package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
- package/dist/adapter/ezsp/driver/commands.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/commands.js +3 -5
- package/dist/adapter/ezsp/driver/commands.js.map +1 -1
- package/dist/adapter/ezsp/driver/driver.d.ts +4 -2
- package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/driver.js +183 -119
- package/dist/adapter/ezsp/driver/driver.js.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.js +62 -50
- package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
- package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/multicast.js +8 -12
- package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
- package/dist/adapter/ezsp/driver/parser.js +5 -5
- package/dist/adapter/ezsp/driver/parser.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/basic.js +1 -1
- package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/named.js +2 -2
- package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.d.ts +1 -1
- package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.js +2 -2
- package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
- package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/uart.js +46 -46
- package/dist/adapter/ezsp/driver/uart.js.map +1 -1
- package/dist/adapter/ezsp/driver/utils/index.d.ts +2 -1
- package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/utils/index.js +2 -2
- package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/writer.js +3 -6
- package/dist/adapter/ezsp/driver/writer.js.map +1 -1
- package/dist/adapter/serialPort.d.ts +3 -0
- package/dist/adapter/serialPort.d.ts.map +1 -1
- package/dist/adapter/serialPort.js +16 -23
- package/dist/adapter/serialPort.js.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +0 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.js +25 -29
- package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
- package/dist/adapter/z-stack/adapter/endpoints.js +4 -4
- package/dist/adapter/z-stack/adapter/endpoints.js.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.d.ts +1 -4
- package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.js +52 -61
- package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +12 -10
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.js +102 -84
- package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
- package/dist/adapter/z-stack/unpi/parser.js +6 -6
- package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
- package/dist/adapter/z-stack/unpi/writer.js +4 -7
- package/dist/adapter/z-stack/unpi/writer.js.map +1 -1
- package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +4 -2
- package/dist/adapter/z-stack/znp/buffaloZnp.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/buffaloZnp.js +154 -25
- package/dist/adapter/z-stack/znp/buffaloZnp.js.map +1 -1
- package/dist/adapter/z-stack/znp/definition.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/definition.js +2 -1
- package/dist/adapter/z-stack/znp/definition.js.map +1 -1
- package/dist/adapter/z-stack/znp/tstype.d.ts +4 -3
- package/dist/adapter/z-stack/znp/tstype.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/znp.js +18 -25
- package/dist/adapter/z-stack/znp/znp.js.map +1 -1
- package/dist/adapter/z-stack/znp/zpiObject.js +2 -2
- package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +13 -12
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.js +81 -90
- package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +7 -8
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.js +150 -100
- package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
- package/dist/adapter/zigate/driver/commandType.d.ts +2 -1
- package/dist/adapter/zigate/driver/commandType.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/commandType.js +56 -52
- package/dist/adapter/zigate/driver/commandType.js.map +1 -1
- package/dist/adapter/zigate/driver/frame.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/frame.js +8 -8
- package/dist/adapter/zigate/driver/frame.js.map +1 -1
- package/dist/adapter/zigate/driver/messageType.d.ts +2 -1
- package/dist/adapter/zigate/driver/messageType.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/messageType.js +113 -108
- package/dist/adapter/zigate/driver/messageType.js.map +1 -1
- package/dist/adapter/zigate/driver/parameterType.d.ts +8 -1
- package/dist/adapter/zigate/driver/parameterType.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/parameterType.js +9 -0
- package/dist/adapter/zigate/driver/parameterType.js.map +1 -1
- package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/ziGateObject.js +9 -9
- package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
- package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/zigate.js +23 -31
- package/dist/adapter/zigate/driver/zigate.js.map +1 -1
- package/dist/buffalo/buffalo.d.ts +23 -19
- package/dist/buffalo/buffalo.d.ts.map +1 -1
- package/dist/buffalo/buffalo.js +74 -169
- package/dist/buffalo/buffalo.js.map +1 -1
- package/dist/buffalo/index.d.ts +1 -2
- package/dist/buffalo/index.d.ts.map +1 -1
- package/dist/buffalo/index.js +1 -26
- package/dist/buffalo/index.js.map +1 -1
- package/dist/controller/controller.d.ts +8 -5
- package/dist/controller/controller.d.ts.map +1 -1
- package/dist/controller/controller.js +181 -126
- package/dist/controller/controller.js.map +1 -1
- package/dist/controller/database.d.ts +1 -0
- package/dist/controller/database.d.ts.map +1 -1
- package/dist/controller/database.js +7 -10
- package/dist/controller/database.js.map +1 -1
- package/dist/controller/events.d.ts +2 -2
- package/dist/controller/events.d.ts.map +1 -1
- package/dist/controller/events.js +4 -0
- package/dist/controller/events.js.map +1 -1
- package/dist/controller/greenPower.d.ts +2 -1
- package/dist/controller/greenPower.d.ts.map +1 -1
- package/dist/controller/greenPower.js +51 -57
- package/dist/controller/greenPower.js.map +1 -1
- package/dist/controller/helpers/request.d.ts +3 -3
- package/dist/controller/helpers/request.d.ts.map +1 -1
- package/dist/controller/helpers/request.js +2 -2
- package/dist/controller/helpers/request.js.map +1 -1
- package/dist/controller/helpers/requestQueue.d.ts.map +1 -1
- package/dist/controller/helpers/requestQueue.js +26 -36
- package/dist/controller/helpers/requestQueue.js.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.d.ts +4 -3
- package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.js +33 -14
- package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
- package/dist/controller/model/device.d.ts +12 -5
- package/dist/controller/model/device.d.ts.map +1 -1
- package/dist/controller/model/device.js +108 -87
- package/dist/controller/model/device.js.map +1 -1
- package/dist/controller/model/endpoint.d.ts +22 -17
- package/dist/controller/model/endpoint.d.ts.map +1 -1
- package/dist/controller/model/endpoint.js +139 -228
- package/dist/controller/model/endpoint.js.map +1 -1
- package/dist/controller/model/group.d.ts +1 -1
- package/dist/controller/model/group.d.ts.map +1 -1
- package/dist/controller/model/group.js +18 -18
- package/dist/controller/model/group.js.map +1 -1
- package/dist/controller/touchlink.js +25 -28
- package/dist/controller/touchlink.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/utils/logger.d.ts +9 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +14 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/zspec/consts.d.ts +60 -0
- package/dist/zspec/consts.d.ts.map +1 -0
- package/dist/zspec/consts.js +64 -0
- package/dist/zspec/consts.js.map +1 -0
- package/dist/zspec/enums.d.ts +19 -0
- package/dist/zspec/enums.d.ts.map +1 -0
- package/dist/zspec/enums.js +28 -0
- package/dist/zspec/enums.js.map +1 -0
- package/dist/zspec/index.d.ts +4 -0
- package/dist/zspec/index.d.ts.map +1 -0
- package/dist/zspec/index.js +43 -0
- package/dist/zspec/index.js.map +1 -0
- package/dist/zspec/tstypes.d.ts +19 -0
- package/dist/zspec/tstypes.d.ts.map +1 -0
- package/dist/{buffalo/tstype.js → zspec/tstypes.js} +1 -1
- package/dist/zspec/tstypes.js.map +1 -0
- package/dist/zspec/utils.d.ts +14 -0
- package/dist/zspec/utils.d.ts.map +1 -0
- package/dist/zspec/utils.js +29 -0
- package/dist/zspec/utils.js.map +1 -0
- package/dist/zspec/zcl/buffaloZcl.d.ts +55 -0
- package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -0
- package/dist/zspec/zcl/buffaloZcl.js +929 -0
- package/dist/zspec/zcl/buffaloZcl.js.map +1 -0
- package/dist/zspec/zcl/definition/cluster.d.ts +3 -0
- package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/cluster.js +5500 -0
- package/dist/zspec/zcl/definition/cluster.js.map +1 -0
- package/dist/zspec/zcl/definition/consts.d.ts +9 -0
- package/dist/zspec/zcl/definition/consts.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/consts.js +27 -0
- package/dist/zspec/zcl/definition/consts.js.map +1 -0
- package/dist/zspec/zcl/definition/enums.d.ts +177 -0
- package/dist/zspec/zcl/definition/enums.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/enums.js +187 -0
- package/dist/zspec/zcl/definition/enums.js.map +1 -0
- package/dist/zspec/zcl/definition/foundation.d.ts +11 -0
- package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/foundation.js +241 -0
- package/dist/zspec/zcl/definition/foundation.js.map +1 -0
- package/dist/zspec/zcl/definition/manufacturerCode.d.ts +727 -0
- package/dist/zspec/zcl/definition/manufacturerCode.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/manufacturerCode.js +733 -0
- package/dist/zspec/zcl/definition/manufacturerCode.js.map +1 -0
- package/dist/zspec/zcl/definition/status.d.ts +69 -0
- package/dist/zspec/zcl/definition/status.d.ts.map +1 -0
- package/dist/zspec/zcl/definition/status.js +74 -0
- package/dist/zspec/zcl/definition/status.js.map +1 -0
- package/dist/zspec/zcl/definition/tstype.d.ts +114 -0
- package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -0
- package/dist/{zcl/zclHeader.js → zspec/zcl/definition/tstype.js} +2 -1
- package/dist/zspec/zcl/definition/tstype.js.map +1 -0
- package/dist/zspec/zcl/index.d.ts +11 -0
- package/dist/zspec/zcl/index.d.ts.map +1 -0
- package/dist/zspec/zcl/index.js +47 -0
- package/dist/zspec/zcl/index.js.map +1 -0
- package/dist/zspec/zcl/utils.d.ts +7 -0
- package/dist/zspec/zcl/utils.d.ts.map +1 -0
- package/dist/zspec/zcl/utils.js +234 -0
- package/dist/zspec/zcl/utils.js.map +1 -0
- package/dist/zspec/zcl/zclFrame.d.ts +36 -0
- package/dist/zspec/zcl/zclFrame.d.ts.map +1 -0
- package/dist/zspec/zcl/zclFrame.js +304 -0
- package/dist/zspec/zcl/zclFrame.js.map +1 -0
- package/dist/zspec/zcl/zclHeader.d.ts +17 -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/dist/zspec/zcl/zclStatusError.d.ts +6 -0
- package/dist/zspec/zcl/zclStatusError.d.ts.map +1 -0
- package/dist/zspec/zcl/zclStatusError.js +13 -0
- package/dist/zspec/zcl/zclStatusError.js.map +1 -0
- package/dist/zspec/zdo/buffaloZdo.d.ts +438 -0
- package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -0
- package/dist/zspec/zdo/buffaloZdo.js +1892 -0
- package/dist/zspec/zdo/buffaloZdo.js.map +1 -0
- package/dist/zspec/zdo/definition/clusters.d.ts +624 -0
- package/dist/zspec/zdo/definition/clusters.d.ts.map +1 -0
- package/dist/zspec/zdo/definition/clusters.js +687 -0
- package/dist/zspec/zdo/definition/clusters.js.map +1 -0
- package/dist/zspec/zdo/definition/consts.d.ts +13 -0
- package/dist/zspec/zdo/definition/consts.d.ts.map +1 -0
- package/dist/zspec/zdo/definition/consts.js +16 -0
- package/dist/zspec/zdo/definition/consts.js.map +1 -0
- package/dist/zspec/zdo/definition/enums.d.ts +75 -0
- package/dist/zspec/zdo/definition/enums.d.ts.map +1 -0
- package/dist/zspec/zdo/definition/enums.js +97 -0
- package/dist/zspec/zdo/definition/enums.js.map +1 -0
- package/dist/zspec/zdo/definition/status.d.ts +99 -0
- package/dist/zspec/zdo/definition/status.d.ts.map +1 -0
- package/dist/zspec/zdo/definition/status.js +109 -0
- package/dist/zspec/zdo/definition/status.js.map +1 -0
- package/dist/zspec/zdo/definition/tstypes.d.ts +787 -0
- package/dist/zspec/zdo/definition/tstypes.d.ts.map +1 -0
- package/dist/{zcl/definition/tstype.js → zspec/zdo/definition/tstypes.js} +1 -1
- package/dist/zspec/zdo/definition/tstypes.js.map +1 -0
- package/dist/zspec/zdo/index.d.ts +7 -0
- package/dist/zspec/zdo/index.d.ts.map +1 -0
- package/dist/zspec/zdo/index.js +39 -0
- package/dist/zspec/zdo/index.js.map +1 -0
- package/dist/zspec/zdo/utils.d.ts +25 -0
- package/dist/zspec/zdo/utils.d.ts.map +1 -0
- package/dist/zspec/zdo/utils.js +75 -0
- package/dist/zspec/zdo/utils.js.map +1 -0
- package/dist/zspec/zdo/zdoStatusError.d.ts +6 -0
- package/dist/zspec/zdo/zdoStatusError.d.ts.map +1 -0
- package/dist/zspec/zdo/zdoStatusError.js +13 -0
- package/dist/zspec/zdo/zdoStatusError.js.map +1 -0
- package/examples/join-and-log.js +7 -12
- package/package.json +5 -5
- package/dist/adapter/zigate/debug.d.ts +0 -8
- package/dist/adapter/zigate/debug.d.ts.map +0 -1
- package/dist/adapter/zigate/debug.js +0 -20
- package/dist/adapter/zigate/debug.js.map +0 -1
- package/dist/buffalo/tstype.d.ts +0 -9
- package/dist/buffalo/tstype.d.ts.map +0 -1
- package/dist/buffalo/tstype.js.map +0 -1
- package/dist/controller/logger-stub.d.ts +0 -7
- package/dist/controller/logger-stub.d.ts.map +0 -1
- package/dist/controller/logger-stub.js +0 -3
- package/dist/controller/logger-stub.js.map +0 -1
- package/dist/zcl/buffaloZcl.d.ts +0 -42
- package/dist/zcl/buffaloZcl.d.ts.map +0 -1
- package/dist/zcl/buffaloZcl.js +0 -595
- package/dist/zcl/buffaloZcl.js.map +0 -1
- package/dist/zcl/definition/buffaloZclDataType.d.ts +0 -18
- package/dist/zcl/definition/buffaloZclDataType.d.ts.map +0 -1
- package/dist/zcl/definition/buffaloZclDataType.js +0 -21
- package/dist/zcl/definition/buffaloZclDataType.js.map +0 -1
- package/dist/zcl/definition/cluster.d.ts +0 -30
- package/dist/zcl/definition/cluster.d.ts.map +0 -1
- package/dist/zcl/definition/cluster.js +0 -5521
- package/dist/zcl/definition/cluster.js.map +0 -1
- package/dist/zcl/definition/dataType.d.ts +0 -60
- package/dist/zcl/definition/dataType.d.ts.map +0 -1
- package/dist/zcl/definition/dataType.js +0 -65
- package/dist/zcl/definition/dataType.js.map +0 -1
- package/dist/zcl/definition/direction.d.ts +0 -6
- package/dist/zcl/definition/direction.d.ts.map +0 -1
- package/dist/zcl/definition/direction.js +0 -9
- package/dist/zcl/definition/direction.js.map +0 -1
- package/dist/zcl/definition/endpointDeviceType.d.ts +0 -5
- package/dist/zcl/definition/endpointDeviceType.d.ts.map +0 -1
- package/dist/zcl/definition/endpointDeviceType.js +0 -16
- package/dist/zcl/definition/endpointDeviceType.js.map +0 -1
- package/dist/zcl/definition/foundation.d.ts +0 -12
- package/dist/zcl/definition/foundation.d.ts.map +0 -1
- package/dist/zcl/definition/foundation.js +0 -168
- package/dist/zcl/definition/foundation.js.map +0 -1
- package/dist/zcl/definition/frameControl.d.ts +0 -11
- package/dist/zcl/definition/frameControl.d.ts.map +0 -1
- package/dist/zcl/definition/frameControl.js +0 -3
- package/dist/zcl/definition/frameControl.js.map +0 -1
- package/dist/zcl/definition/frameType.d.ts +0 -6
- package/dist/zcl/definition/frameType.d.ts.map +0 -1
- package/dist/zcl/definition/frameType.js +0 -9
- package/dist/zcl/definition/frameType.js.map +0 -1
- package/dist/zcl/definition/index.d.ts +0 -14
- package/dist/zcl/definition/index.d.ts.map +0 -1
- package/dist/zcl/definition/index.js +0 -52
- package/dist/zcl/definition/index.js.map +0 -1
- package/dist/zcl/definition/manufacturerCode.d.ts +0 -1078
- package/dist/zcl/definition/manufacturerCode.d.ts.map +0 -1
- package/dist/zcl/definition/manufacturerCode.js +0 -1083
- package/dist/zcl/definition/manufacturerCode.js.map +0 -1
- package/dist/zcl/definition/powerSource.d.ts +0 -5
- package/dist/zcl/definition/powerSource.d.ts.map +0 -1
- package/dist/zcl/definition/powerSource.js +0 -13
- package/dist/zcl/definition/powerSource.js.map +0 -1
- package/dist/zcl/definition/status.d.ts +0 -39
- package/dist/zcl/definition/status.d.ts.map +0 -1
- package/dist/zcl/definition/status.js +0 -42
- package/dist/zcl/definition/status.js.map +0 -1
- package/dist/zcl/definition/tstype.d.ts +0 -17
- package/dist/zcl/definition/tstype.d.ts.map +0 -1
- package/dist/zcl/definition/tstype.js.map +0 -1
- package/dist/zcl/index.d.ts +0 -17
- package/dist/zcl/index.d.ts.map +0 -1
- package/dist/zcl/index.js +0 -56
- package/dist/zcl/index.js.map +0 -1
- package/dist/zcl/tstype.d.ts +0 -57
- package/dist/zcl/tstype.d.ts.map +0 -1
- package/dist/zcl/tstype.js +0 -10
- package/dist/zcl/tstype.js.map +0 -1
- package/dist/zcl/utils.d.ts +0 -7
- package/dist/zcl/utils.d.ts.map +0 -1
- package/dist/zcl/utils.js +0 -165
- package/dist/zcl/utils.js.map +0 -1
- package/dist/zcl/zclFrame.d.ts +0 -41
- package/dist/zcl/zclFrame.d.ts.map +0 -1
- package/dist/zcl/zclFrame.js +0 -352
- package/dist/zcl/zclFrame.js.map +0 -1
- package/dist/zcl/zclHeader.d.ts +0 -9
- package/dist/zcl/zclHeader.d.ts.map +0 -1
- package/dist/zcl/zclHeader.js.map +0 -1
- package/dist/zcl/zclStatusError.d.ts +0 -6
- package/dist/zcl/zclStatusError.d.ts.map +0 -1
- package/dist/zcl/zclStatusError.js +0 -15
- package/dist/zcl/zclStatusError.js.map +0 -1
|
@@ -12,12 +12,11 @@ const utils_1 = require("./utils");
|
|
|
12
12
|
const named_1 = require("./types/named");
|
|
13
13
|
const multicast_1 = require("./multicast");
|
|
14
14
|
const utils_2 = require("../../../utils");
|
|
15
|
-
const debug_1 = __importDefault(require("debug"));
|
|
16
15
|
const es6_1 = __importDefault(require("fast-deep-equal/es6"));
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
const backup_1 = require("../adapter/backup");
|
|
17
|
+
const logger_1 = require("../../../utils/logger");
|
|
18
|
+
const cluster_1 = require("../../../zspec/zcl/definition/cluster");
|
|
19
|
+
const NS = 'zh:ezsp:driv';
|
|
21
20
|
const IEEE_PREFIX_MFG_ID = [
|
|
22
21
|
{ mfgId: 0x115F, prefix: [0x04, 0xcf, 0xfc] },
|
|
23
22
|
{ mfgId: 0x115F, prefix: [0x54, 0xef, 0x44] },
|
|
@@ -38,12 +37,14 @@ class Driver extends events_1.EventEmitter {
|
|
|
38
37
|
waitress;
|
|
39
38
|
transactionID = 1;
|
|
40
39
|
serialOpt;
|
|
41
|
-
|
|
40
|
+
backupMan;
|
|
41
|
+
constructor(serialOpt, nwkOpt, greenPowerGroup, backupPath) {
|
|
42
42
|
super();
|
|
43
43
|
this.nwkOpt = nwkOpt;
|
|
44
44
|
this.serialOpt = serialOpt;
|
|
45
45
|
this.greenPowerGroup = greenPowerGroup;
|
|
46
46
|
this.waitress = new utils_2.Waitress(this.waitressValidator, this.waitressTimeoutFormatter);
|
|
47
|
+
this.backupMan = new backup_1.EZSPAdapterBackup(this, backupPath);
|
|
47
48
|
}
|
|
48
49
|
/**
|
|
49
50
|
* Requested by the EZSP watchdog after too many failures, or by UART layer after port closed unexpectedly.
|
|
@@ -51,40 +52,40 @@ class Driver extends events_1.EventEmitter {
|
|
|
51
52
|
* @returns
|
|
52
53
|
*/
|
|
53
54
|
async reset() {
|
|
54
|
-
debug
|
|
55
|
+
logger_1.logger.debug(`Reset connection.`, NS);
|
|
55
56
|
try {
|
|
56
57
|
// don't emit 'close' on stop since we don't want this to bubble back up as 'disconnected' to the controller.
|
|
57
58
|
await this.stop(false);
|
|
58
59
|
}
|
|
59
60
|
catch (err) {
|
|
60
|
-
debug
|
|
61
|
+
logger_1.logger.debug(`Stop error ${err.stack}`, NS);
|
|
61
62
|
}
|
|
62
63
|
try {
|
|
63
64
|
await (0, utils_2.Wait)(1000);
|
|
64
|
-
debug
|
|
65
|
+
logger_1.logger.debug(`Startup again.`, NS);
|
|
65
66
|
await this.startup();
|
|
66
67
|
}
|
|
67
68
|
catch (err) {
|
|
68
|
-
debug
|
|
69
|
+
logger_1.logger.debug(`Reset error ${err.stack}`, NS);
|
|
69
70
|
try {
|
|
70
71
|
// here we let emit
|
|
71
72
|
await this.stop();
|
|
72
73
|
}
|
|
73
74
|
catch (stopErr) {
|
|
74
|
-
debug
|
|
75
|
+
logger_1.logger.debug(`Failed to stop after failed reset ${stopErr.stack}`, NS);
|
|
75
76
|
}
|
|
76
77
|
}
|
|
77
78
|
}
|
|
78
79
|
async onEzspReset() {
|
|
79
|
-
debug
|
|
80
|
+
logger_1.logger.debug('onEzspReset()', NS);
|
|
80
81
|
await this.reset();
|
|
81
82
|
}
|
|
82
83
|
onEzspClose() {
|
|
83
|
-
debug
|
|
84
|
+
logger_1.logger.debug('onEzspClose()', NS);
|
|
84
85
|
this.emit('close');
|
|
85
86
|
}
|
|
86
87
|
async stop(emitClose = true) {
|
|
87
|
-
debug
|
|
88
|
+
logger_1.logger.debug('Stopping driver', NS);
|
|
88
89
|
if (this.ezsp) {
|
|
89
90
|
return this.ezsp.close(emitClose);
|
|
90
91
|
}
|
|
@@ -99,7 +100,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
99
100
|
await this.ezsp.connect(this.serialOpt);
|
|
100
101
|
}
|
|
101
102
|
catch (error) {
|
|
102
|
-
debug
|
|
103
|
+
logger_1.logger.debug(`EZSP could not connect: ${error.cause ?? error}`, NS);
|
|
103
104
|
throw error;
|
|
104
105
|
}
|
|
105
106
|
this.ezsp.on('reset', this.onEzspReset.bind(this));
|
|
@@ -112,7 +113,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
112
113
|
await this.ezsp.setValue(named_1.EzspValueId.VALUE_CCA_THRESHOLD, 0);
|
|
113
114
|
await this.ezsp.setSourceRouting();
|
|
114
115
|
//const count = await ezsp.getConfigurationValue(EzspConfigId.CONFIG_APS_UNICAST_MESSAGE_COUNT);
|
|
115
|
-
//
|
|
116
|
+
//logger.info("APS_UNICAST_MESSAGE_COUNT is set to %s", count, NS);
|
|
116
117
|
await this.addEndpoint({
|
|
117
118
|
inputClusters: [0x0000, 0x0003, 0x0006, 0x000A, 0x0019, 0x001A, 0x0300],
|
|
118
119
|
outputClusters: [0x0000, 0x0003, 0x0004, 0x0005, 0x0006, 0x0008, 0x0020,
|
|
@@ -137,7 +138,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
137
138
|
[special, verInfo] = types_1.uint8_t.deserialize(types_1.uint8_t, verInfo);
|
|
138
139
|
/* eslint-enable prefer-const */
|
|
139
140
|
const vers = `${major}.${minor}.${patch}.${special} build ${build}`;
|
|
140
|
-
debug
|
|
141
|
+
logger_1.logger.debug(`EmberZNet version: ${vers}`, NS);
|
|
141
142
|
this.version = {
|
|
142
143
|
product: this.ezsp.ezspV,
|
|
143
144
|
majorrel: `${major}`,
|
|
@@ -146,33 +147,49 @@ class Driver extends events_1.EventEmitter {
|
|
|
146
147
|
revision: vers
|
|
147
148
|
};
|
|
148
149
|
if (await this.needsToBeInitialised(this.nwkOpt)) {
|
|
150
|
+
// need to check the backup
|
|
151
|
+
const restore = await this.needsToBeRestore(this.nwkOpt);
|
|
149
152
|
const res = await this.ezsp.execCommand('networkState');
|
|
150
|
-
debug
|
|
153
|
+
logger_1.logger.debug(`Network state ${res.status}`, NS);
|
|
151
154
|
if (res.status == named_1.EmberNetworkStatus.JOINED_NETWORK) {
|
|
152
|
-
|
|
155
|
+
logger_1.logger.info(`Leaving current network and forming new network`, NS);
|
|
153
156
|
const st = await this.ezsp.leaveNetwork();
|
|
154
|
-
|
|
157
|
+
if (st != types_1.EmberStatus.NETWORK_DOWN) {
|
|
158
|
+
logger_1.logger.error(`leaveNetwork returned unexpected status: ${st}`, NS);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (restore) {
|
|
162
|
+
// restore
|
|
163
|
+
logger_1.logger.info("Restore network from backup", NS);
|
|
164
|
+
await this.formNetwork(true);
|
|
165
|
+
result = 'restored';
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
// reset
|
|
169
|
+
logger_1.logger.info("Form network", NS);
|
|
170
|
+
await this.formNetwork(false);
|
|
171
|
+
result = 'reset';
|
|
155
172
|
}
|
|
156
|
-
await this.formNetwork();
|
|
157
|
-
result = 'reset';
|
|
158
173
|
}
|
|
159
174
|
const state = (await this.ezsp.execCommand('networkState')).status;
|
|
160
|
-
debug
|
|
175
|
+
logger_1.logger.debug(`Network state ${state}`, NS);
|
|
161
176
|
const netParams = await this.ezsp.execCommand('getNetworkParameters');
|
|
162
|
-
|
|
177
|
+
if (netParams.status != types_1.EmberStatus.SUCCESS) {
|
|
178
|
+
logger_1.logger.error(`Command (getNetworkParameters) returned unexpected state: ${netParams.status}`, NS);
|
|
179
|
+
}
|
|
163
180
|
this.networkParams = netParams.parameters;
|
|
164
|
-
debug
|
|
181
|
+
logger_1.logger.debug(`Node type: ${netParams.nodeType}, Network parameters: ${this.networkParams}`, NS);
|
|
165
182
|
const nwk = (await this.ezsp.execCommand('getNodeId')).nodeId;
|
|
166
183
|
const ieee = (await this.ezsp.execCommand('getEui64')).eui64;
|
|
167
184
|
this.ieee = new named_1.EmberEUI64(ieee);
|
|
168
|
-
debug
|
|
185
|
+
logger_1.logger.debug('Network ready', NS);
|
|
169
186
|
this.ezsp.on('frame', this.handleFrame.bind(this));
|
|
170
187
|
this.handleNodeJoined(nwk, this.ieee);
|
|
171
|
-
debug
|
|
188
|
+
logger_1.logger.debug(`EZSP nwk=${nwk}, IEEE=0x${this.ieee}`, NS);
|
|
172
189
|
const linkResult = await this.getKey(named_1.EmberKeyType.TRUST_CENTER_LINK_KEY);
|
|
173
|
-
debug
|
|
190
|
+
logger_1.logger.debug(`TRUST_CENTER_LINK_KEY: ${JSON.stringify(linkResult)}`, NS);
|
|
174
191
|
const netResult = await this.getKey(named_1.EmberKeyType.CURRENT_NETWORK_KEY);
|
|
175
|
-
debug
|
|
192
|
+
logger_1.logger.debug(`CURRENT_NETWORK_KEY: ${JSON.stringify(netResult)}`, NS);
|
|
176
193
|
await (0, utils_2.Wait)(1000);
|
|
177
194
|
await this.ezsp.execCommand('setManufacturerCode', { code: DEFAULT_MFG_ID });
|
|
178
195
|
this.multicast = new multicast_1.Multicast(this);
|
|
@@ -186,7 +203,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
186
203
|
valid = valid && (await this.ezsp.networkInit());
|
|
187
204
|
const netParams = await this.ezsp.execCommand('getNetworkParameters');
|
|
188
205
|
const networkParams = netParams.parameters;
|
|
189
|
-
debug
|
|
206
|
+
logger_1.logger.debug(`Current Node type: ${netParams.nodeType}, Network parameters: ${networkParams}`, NS);
|
|
190
207
|
valid = valid && (netParams.status == types_1.EmberStatus.SUCCESS);
|
|
191
208
|
valid = valid && (netParams.nodeType == types_1.EmberNodeType.COORDINATOR);
|
|
192
209
|
valid = valid && (options.panID == networkParams.panId);
|
|
@@ -194,24 +211,39 @@ class Driver extends events_1.EventEmitter {
|
|
|
194
211
|
valid = valid && ((0, es6_1.default)(options.extendedPanID, networkParams.extendedPanId));
|
|
195
212
|
return !valid;
|
|
196
213
|
}
|
|
197
|
-
async formNetwork() {
|
|
198
|
-
let
|
|
199
|
-
status = (await this.ezsp.execCommand('clearKeyTable')).status;
|
|
200
|
-
console.assert(status == types_1.EmberStatus.SUCCESS, `Command clearKeyTable returned unexpected state: ${status}`);
|
|
214
|
+
async formNetwork(restore) {
|
|
215
|
+
let backup;
|
|
201
216
|
await this.ezsp.execCommand('clearTransientLinkKeys');
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
217
|
+
let initial_security_state;
|
|
218
|
+
if (restore) {
|
|
219
|
+
backup = await this.backupMan.getStoredBackup();
|
|
220
|
+
initial_security_state = (0, utils_1.ember_security)(backup.networkOptions.networkKey);
|
|
221
|
+
initial_security_state.bitmask |= named_1.EmberInitialSecurityBitmask.NO_FRAME_COUNTER_RESET;
|
|
222
|
+
initial_security_state.networkKeySequenceNumber = backup.networkKeyInfo.sequenceNumber;
|
|
223
|
+
initial_security_state.preconfiguredKey.contents = backup.ezsp.hashed_tclk;
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
await this.ezsp.execCommand('clearKeyTable');
|
|
227
|
+
initial_security_state = (0, utils_1.ember_security)(Buffer.from(this.nwkOpt.networkKey));
|
|
228
|
+
}
|
|
229
|
+
await this.ezsp.setInitialSecurityState(initial_security_state);
|
|
206
230
|
const parameters = new struct_1.EmberNetworkParameters();
|
|
207
|
-
parameters.panId = panID;
|
|
208
|
-
parameters.extendedPanId = extendedPanID;
|
|
209
231
|
parameters.radioTxPower = 5;
|
|
210
|
-
parameters.radioChannel = this.nwkOpt.channelList[0];
|
|
211
232
|
parameters.joinMethod = named_1.EmberJoinMethod.USE_MAC_ASSOCIATION;
|
|
212
233
|
parameters.nwkManagerId = 0;
|
|
213
234
|
parameters.nwkUpdateId = 0;
|
|
214
235
|
parameters.channels = 0x07FFF800; // all channels
|
|
236
|
+
if (restore) {
|
|
237
|
+
parameters.panId = backup.networkOptions.panId;
|
|
238
|
+
parameters.extendedPanId = backup.networkOptions.extendedPanId;
|
|
239
|
+
parameters.radioChannel = backup.logicalChannel;
|
|
240
|
+
parameters.nwkUpdateId = backup.networkUpdateId;
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
parameters.radioChannel = this.nwkOpt.channelList[0];
|
|
244
|
+
parameters.panId = this.nwkOpt.panID;
|
|
245
|
+
parameters.extendedPanId = Buffer.from(this.nwkOpt.extendedPanID);
|
|
246
|
+
}
|
|
215
247
|
await this.ezsp.formNetwork(parameters);
|
|
216
248
|
await this.ezsp.setValue(named_1.EzspValueId.VALUE_STACK_TOKEN_WRITING, 1);
|
|
217
249
|
}
|
|
@@ -286,7 +318,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
286
318
|
}
|
|
287
319
|
case (frameName === 'macFilterMatchMessageHandler'): {
|
|
288
320
|
const [rawFrame, data] = struct_1.EmberIeeeRawFrame.deserialize(struct_1.EmberIeeeRawFrame, frame.message);
|
|
289
|
-
debug
|
|
321
|
+
logger_1.logger.debug(`macFilterMatchMessageHandler frame message: ${rawFrame}`, NS);
|
|
290
322
|
this.emit('incomingMessage', {
|
|
291
323
|
messageType: null,
|
|
292
324
|
apsFrame: rawFrame,
|
|
@@ -301,7 +333,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
301
333
|
break;
|
|
302
334
|
}
|
|
303
335
|
case (frameName === 'stackStatusHandler'): {
|
|
304
|
-
debug
|
|
336
|
+
logger_1.logger.debug(`stackStatusHandler: ${types_1.EmberStatus.valueToName(types_1.EmberStatus, frame.status)}`, NS);
|
|
305
337
|
break;
|
|
306
338
|
}
|
|
307
339
|
// case (frameName === 'childJoinHandler'): {
|
|
@@ -313,7 +345,39 @@ class Driver extends events_1.EventEmitter {
|
|
|
313
345
|
// break;
|
|
314
346
|
// }
|
|
315
347
|
case (frameName == 'gpepIncomingMessageHandler'): {
|
|
316
|
-
|
|
348
|
+
let commandIdentifier = cluster_1.Clusters.greenPower.commands.notification.ID;
|
|
349
|
+
if (frame.gpdCommandId === 0xE0) {
|
|
350
|
+
if (!frame.gpdCommandPayload.length) {
|
|
351
|
+
// XXX: seem to be receiving duplicate commissioningNotification from some devices, second one with empty payload?
|
|
352
|
+
// this will mess with the process no doubt, so dropping them
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
commandIdentifier = cluster_1.Clusters.greenPower.commands.commissioningNotification.ID;
|
|
356
|
+
}
|
|
357
|
+
const gpdHeader = Buffer.alloc(15);
|
|
358
|
+
gpdHeader.writeUInt8(0b00000001, 0); // frameControl: FrameType.SPECIFIC + Direction.CLIENT_TO_SERVER + disableDefaultResponse=false
|
|
359
|
+
gpdHeader.writeUInt8(frame.sequenceNumber, 1); // transactionSequenceNumber
|
|
360
|
+
gpdHeader.writeUInt8(commandIdentifier, 2); // commandIdentifier
|
|
361
|
+
gpdHeader.writeUInt16LE(0, 3); // options XXX: bypassed, same as deconz https://github.com/Koenkk/zigbee-herdsman/pull/536
|
|
362
|
+
gpdHeader.writeUInt32LE(frame.srcId, 5); // srcID
|
|
363
|
+
// omitted: gpdIEEEAddr ieeeAddr
|
|
364
|
+
// omitted: gpdEndpoint uint8
|
|
365
|
+
gpdHeader.writeUInt32LE(frame.gpdSecurityFrameCounter, 9); // frameCounter
|
|
366
|
+
gpdHeader.writeUInt8(frame.gpdCommandId, 13); // commandID
|
|
367
|
+
gpdHeader.writeUInt8(frame.gpdCommandPayload.length, 14); // payloadSize
|
|
368
|
+
const gpdMessage = {
|
|
369
|
+
messageType: frame.gpdCommandId,
|
|
370
|
+
apsFrame: {
|
|
371
|
+
profileId: 0xA1E0,
|
|
372
|
+
sourceEndpoint: 242,
|
|
373
|
+
clusterId: 0x0021,
|
|
374
|
+
sequence: frame.sequenceNumber,
|
|
375
|
+
},
|
|
376
|
+
lqi: frame.gpdLink,
|
|
377
|
+
message: Buffer.concat([gpdHeader, frame.gpdCommandPayload]),
|
|
378
|
+
sender: frame.addr,
|
|
379
|
+
};
|
|
380
|
+
this.emit('incomingMessage', gpdMessage);
|
|
317
381
|
break;
|
|
318
382
|
}
|
|
319
383
|
default:
|
|
@@ -326,12 +390,12 @@ class Driver extends events_1.EventEmitter {
|
|
|
326
390
|
// <=== Application frame 155 (zigbeeKeyEstablishmentHandler) received: 2ebd08feff9ffd9006 +2ms
|
|
327
391
|
// <=== Application frame 155 (zigbeeKeyEstablishmentHandler) parsed: 144,253,159,255,254,8,189,46,6 +2ms
|
|
328
392
|
// Unhandled frame zigbeeKeyEstablishmentHandler
|
|
329
|
-
debug
|
|
393
|
+
logger_1.logger.debug(`Unhandled frame ${frameName}`, NS);
|
|
330
394
|
}
|
|
331
395
|
}
|
|
332
396
|
handleRouteRecord(nwk, ieee, lqi, rssi, relays) {
|
|
333
397
|
// todo
|
|
334
|
-
debug
|
|
398
|
+
logger_1.logger.debug(`handleRouteRecord: nwk=${nwk}, ieee=${ieee.toString()}, lqi=${lqi}, rssi=${rssi}, relays=${relays}`, NS);
|
|
335
399
|
this.setNode(nwk, ieee);
|
|
336
400
|
// if (ieee && !(ieee instanceof EmberEUI64)) {
|
|
337
401
|
// ieee = new EmberEUI64(ieee);
|
|
@@ -340,7 +404,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
340
404
|
}
|
|
341
405
|
handleRouteError(status, nwk) {
|
|
342
406
|
// todo
|
|
343
|
-
debug
|
|
407
|
+
logger_1.logger.debug(`handleRouteError: nwk=${nwk}, status=${status}`, NS);
|
|
344
408
|
//this.waitress.reject({address: nwk, payload: null, frame: null}, 'Route error');
|
|
345
409
|
// const ieee = await this.networkIdToEUI64(nwk);
|
|
346
410
|
// this.eui64ToRelays.set(ieee.toString(), null);
|
|
@@ -356,7 +420,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
356
420
|
// "target":50564
|
|
357
421
|
// }
|
|
358
422
|
// https://docs.silabs.com/d/zigbee-stack-api/7.4.0/message#ember-incoming-network-status-handler
|
|
359
|
-
debug
|
|
423
|
+
logger_1.logger.debug(`handleNetworkStatus: nwk=${nwk}, errorCode=${errorCode}`, NS);
|
|
360
424
|
}
|
|
361
425
|
handleNodeLeft(nwk, ieee) {
|
|
362
426
|
if (ieee && !(ieee instanceof named_1.EmberEUI64)) {
|
|
@@ -378,7 +442,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
378
442
|
for (const rec of IEEE_PREFIX_MFG_ID) {
|
|
379
443
|
if ((Buffer.from(ieee.value)).indexOf(Buffer.from(rec.prefix)) == 0) {
|
|
380
444
|
// set ManufacturerCode
|
|
381
|
-
debug
|
|
445
|
+
logger_1.logger.debug(`handleNodeJoined: change ManufacturerCode for ieee ${ieee} to ${rec.mfgId}`, NS);
|
|
382
446
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
383
447
|
this.resetMfgId(rec.mfgId);
|
|
384
448
|
break;
|
|
@@ -431,7 +495,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
431
495
|
if ([types_1.EmberStatus.MAX_MESSAGE_LIMIT_REACHED, types_1.EmberStatus.NO_BUFFERS, types_1.EmberStatus.NETWORK_BUSY]
|
|
432
496
|
.includes(sendResult.status)) {
|
|
433
497
|
// need to repeat after pause
|
|
434
|
-
|
|
498
|
+
logger_1.logger.error(`Request send status ${sendResult.status}. Attempt to repeat the request`, NS);
|
|
435
499
|
await (0, utils_2.Wait)(delay);
|
|
436
500
|
}
|
|
437
501
|
else {
|
|
@@ -440,7 +504,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
440
504
|
}
|
|
441
505
|
}
|
|
442
506
|
catch (e) {
|
|
443
|
-
debug
|
|
507
|
+
logger_1.logger.debug(`Request error ${e}: ${e.stack}`, NS);
|
|
444
508
|
break;
|
|
445
509
|
}
|
|
446
510
|
}
|
|
@@ -465,7 +529,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
465
529
|
return true;
|
|
466
530
|
}
|
|
467
531
|
catch (e) {
|
|
468
|
-
debug
|
|
532
|
+
logger_1.logger.debug(`Request error ${e}: ${e.stack}`, NS);
|
|
469
533
|
return false;
|
|
470
534
|
}
|
|
471
535
|
}
|
|
@@ -477,7 +541,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
477
541
|
return true;
|
|
478
542
|
}
|
|
479
543
|
catch (e) {
|
|
480
|
-
debug
|
|
544
|
+
logger_1.logger.debug(`Request error ${e}: ${e.stack}`, NS);
|
|
481
545
|
return false;
|
|
482
546
|
}
|
|
483
547
|
}
|
|
@@ -524,7 +588,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
524
588
|
async zdoRequest(networkAddress, requestCmd, responseCmd, params) {
|
|
525
589
|
const requestName = types_1.EmberZDOCmd.valueName(types_1.EmberZDOCmd, requestCmd);
|
|
526
590
|
const responseName = types_1.EmberZDOCmd.valueName(types_1.EmberZDOCmd, responseCmd);
|
|
527
|
-
debug
|
|
591
|
+
logger_1.logger.debug(`ZDO ${requestName} params: ${JSON.stringify(params)}`, NS);
|
|
528
592
|
const frame = this.makeApsFrame(requestCmd, false);
|
|
529
593
|
const payload = this.makeZDOframe(requestCmd, { transId: frame.sequence, ...params });
|
|
530
594
|
const waiter = this.waitFor(networkAddress, responseCmd, frame.sequence);
|
|
@@ -534,14 +598,14 @@ class Driver extends events_1.EventEmitter {
|
|
|
534
598
|
throw Error('zdoRequest>request error');
|
|
535
599
|
}
|
|
536
600
|
const response = await waiter.start().promise;
|
|
537
|
-
debug
|
|
601
|
+
logger_1.logger.debug(`${responseName} frame: ${JSON.stringify(response.payload)}`, NS);
|
|
538
602
|
const result = new ezsp_1.EZSPZDOResponseFrameData(responseCmd, response.payload);
|
|
539
|
-
debug
|
|
603
|
+
logger_1.logger.debug(`${responseName} parsed: ${JSON.stringify(result)}`, NS);
|
|
540
604
|
return result;
|
|
541
605
|
}
|
|
542
606
|
catch (e) {
|
|
543
607
|
this.waitress.remove(waiter.ID);
|
|
544
|
-
debug
|
|
608
|
+
logger_1.logger.debug(`zdoRequest error: ${e} ${e.stack}`, NS);
|
|
545
609
|
throw e;
|
|
546
610
|
}
|
|
547
611
|
}
|
|
@@ -595,7 +659,7 @@ class Driver extends events_1.EventEmitter {
|
|
|
595
659
|
inputClusterList: inputClusters,
|
|
596
660
|
outputClusterList: outputClusters,
|
|
597
661
|
});
|
|
598
|
-
debug
|
|
662
|
+
logger_1.logger.debug(`Ezsp adding endpoint: ${JSON.stringify(res)}`, NS);
|
|
599
663
|
}
|
|
600
664
|
waitFor(address, clusterId, sequence, timeout = 10000) {
|
|
601
665
|
return this.waitress.waitFor({ address, clusterId, sequence }, timeout);
|
|
@@ -641,70 +705,18 @@ class Driver extends events_1.EventEmitter {
|
|
|
641
705
|
throw new Error(`Add install code for '${ieeeAddress}' failed`);
|
|
642
706
|
}
|
|
643
707
|
}
|
|
644
|
-
handleGPMessage(frame) {
|
|
645
|
-
// Commissioning
|
|
646
|
-
if (frame.gpdCommandId == 0xE0) {
|
|
647
|
-
let data = frame.payload.subarray(5);
|
|
648
|
-
/* eslint-disable */
|
|
649
|
-
let st, deviceId, options, extOptions, key, mic, counter;
|
|
650
|
-
[st, data] = types_1.uint8_t.deserialize(types_1.uint8_t, data);
|
|
651
|
-
[deviceId, data] = types_1.uint8_t.deserialize(types_1.uint8_t, data);
|
|
652
|
-
[options, data] = types_1.uint8_t.deserialize(types_1.uint8_t, data);
|
|
653
|
-
[extOptions, data] = types_1.uint8_t.deserialize(types_1.uint8_t, data);
|
|
654
|
-
[key, data] = types_1.EmberKeyData.deserialize(types_1.EmberKeyData, data);
|
|
655
|
-
[mic, data] = types_1.uint32_t.deserialize(types_1.uint32_t, data);
|
|
656
|
-
[counter, data] = types_1.uint32_t.deserialize(types_1.uint32_t, data);
|
|
657
|
-
/* eslint-enable */
|
|
658
|
-
const gpdMessage = {
|
|
659
|
-
messageType: frame.gpdCommandId,
|
|
660
|
-
apsFrame: {
|
|
661
|
-
profileId: 0xA1E0,
|
|
662
|
-
sourceEndpoint: 242,
|
|
663
|
-
clusterId: 0x0021,
|
|
664
|
-
sequence: frame.sequenceNumber,
|
|
665
|
-
},
|
|
666
|
-
lqi: frame.gpdLink,
|
|
667
|
-
message: {
|
|
668
|
-
commandID: frame.gpdCommandId,
|
|
669
|
-
commandFrame: {
|
|
670
|
-
options: options,
|
|
671
|
-
securityKey: Buffer.from(key.contents),
|
|
672
|
-
deviceID: deviceId,
|
|
673
|
-
outgoingCounter: counter,
|
|
674
|
-
},
|
|
675
|
-
srcID: frame.srcId,
|
|
676
|
-
},
|
|
677
|
-
sender: frame.addr,
|
|
678
|
-
};
|
|
679
|
-
this.emit('incomingMessage', gpdMessage);
|
|
680
|
-
}
|
|
681
|
-
else {
|
|
682
|
-
const gpdMessage = {
|
|
683
|
-
messageType: frame.gpdCommandId,
|
|
684
|
-
apsFrame: {
|
|
685
|
-
profileId: 0xA1E0,
|
|
686
|
-
sourceEndpoint: 242,
|
|
687
|
-
clusterId: 0x0021,
|
|
688
|
-
sequence: frame.sequenceNumber,
|
|
689
|
-
},
|
|
690
|
-
lqi: frame.gpdLink,
|
|
691
|
-
message: {
|
|
692
|
-
commandID: frame.gpdCommandId,
|
|
693
|
-
frameCounter: frame.sequenceNumber,
|
|
694
|
-
srcID: frame.srcId,
|
|
695
|
-
},
|
|
696
|
-
sender: frame.addr,
|
|
697
|
-
};
|
|
698
|
-
this.emit('incomingMessage', gpdMessage);
|
|
699
|
-
}
|
|
700
|
-
}
|
|
701
708
|
async getKey(keyType) {
|
|
702
709
|
if (this.ezsp.ezspV < 13) {
|
|
703
710
|
return this.ezsp.execCommand('getKey', { keyType });
|
|
704
711
|
}
|
|
705
712
|
else {
|
|
713
|
+
// Mapping EmberKeyType to SecManKeyType (ezsp13)
|
|
714
|
+
const SecManKeyType = {
|
|
715
|
+
[named_1.EmberKeyType.TRUST_CENTER_LINK_KEY]: 2,
|
|
716
|
+
[named_1.EmberKeyType.CURRENT_NETWORK_KEY]: 1,
|
|
717
|
+
};
|
|
706
718
|
const smc = new struct_1.EmberSecurityManagerContext();
|
|
707
|
-
smc.type = keyType;
|
|
719
|
+
smc.type = SecManKeyType[keyType];
|
|
708
720
|
smc.index = 0;
|
|
709
721
|
smc.derivedType = named_1.EmberDerivedKeyType.NONE;
|
|
710
722
|
smc.eui64 = new named_1.EmberEUI64('0x0000000000000000');
|
|
@@ -712,8 +724,10 @@ class Driver extends events_1.EventEmitter {
|
|
|
712
724
|
smc.flags = 0;
|
|
713
725
|
smc.psaKeyAlgPermission = 0;
|
|
714
726
|
const keyInfo = await this.ezsp.execCommand('exportKey', { context: smc });
|
|
715
|
-
|
|
716
|
-
|
|
727
|
+
if (keyInfo.status !== named_1.SLStatus.SL_STATUS_OK) {
|
|
728
|
+
logger_1.logger.error(`exportKey(${named_1.EmberKeyType.valueToName(named_1.EmberKeyType, keyType)}) `
|
|
729
|
+
+ `returned unexpected SL status: ${keyInfo.status}`, NS);
|
|
730
|
+
}
|
|
717
731
|
return keyInfo;
|
|
718
732
|
}
|
|
719
733
|
}
|
|
@@ -723,10 +737,60 @@ class Driver extends events_1.EventEmitter {
|
|
|
723
737
|
}
|
|
724
738
|
else {
|
|
725
739
|
const keyInfo = await this.ezsp.execCommand('getNetworkKeyInfo');
|
|
726
|
-
|
|
740
|
+
if (keyInfo.status !== named_1.SLStatus.SL_STATUS_OK) {
|
|
741
|
+
logger_1.logger.error(`getNetworkKeyInfo() returned unexpected SL status: ${keyInfo.status}`, NS);
|
|
742
|
+
}
|
|
727
743
|
return keyInfo;
|
|
728
744
|
}
|
|
729
745
|
}
|
|
746
|
+
async needsToBeRestore(options) {
|
|
747
|
+
// if no backup and the settings have been changed, then need to start a new network
|
|
748
|
+
const backup = await this.backupMan.getStoredBackup();
|
|
749
|
+
if (!backup)
|
|
750
|
+
return false;
|
|
751
|
+
let valid = true;
|
|
752
|
+
//valid = valid && (await this.ezsp.networkInit());
|
|
753
|
+
const netParams = await this.ezsp.execCommand('getNetworkParameters');
|
|
754
|
+
const networkParams = netParams.parameters;
|
|
755
|
+
logger_1.logger.debug(`Current Node type: ${netParams.nodeType}, Network parameters: ${networkParams}`, NS);
|
|
756
|
+
logger_1.logger.debug(`Backuped network parameters: ${backup.networkOptions}`, NS);
|
|
757
|
+
const networkKey = await this.getKey(named_1.EmberKeyType.CURRENT_NETWORK_KEY);
|
|
758
|
+
let netKey = null;
|
|
759
|
+
if (this.ezsp.ezspV < 13) {
|
|
760
|
+
netKey = Buffer.from(networkKey.keyStruct.key.contents);
|
|
761
|
+
}
|
|
762
|
+
else {
|
|
763
|
+
netKey = Buffer.from(networkKey.keyData.contents);
|
|
764
|
+
}
|
|
765
|
+
// if the settings in the backup match the chip, then need to warn to delete the backup file first
|
|
766
|
+
valid = valid && (networkParams.panId == backup.networkOptions.panId);
|
|
767
|
+
valid = valid && (networkParams.radioChannel == backup.logicalChannel);
|
|
768
|
+
valid = valid && (Buffer.from(networkParams.extendedPanId).equals(backup.networkOptions.extendedPanId));
|
|
769
|
+
valid = valid && (Buffer.from(netKey).equals(backup.networkOptions.networkKey));
|
|
770
|
+
if (valid) {
|
|
771
|
+
logger_1.logger.error(`Configuration is not consistent with adapter backup!`, NS);
|
|
772
|
+
logger_1.logger.error(`- PAN ID: configured=${options.panID}, adapter=${networkParams.panId}, backup=${backup.networkOptions.panId}`, NS);
|
|
773
|
+
logger_1.logger.error(`- Extended PAN ID: configured=${Buffer.from(options.extendedPanID).toString("hex")}, ` +
|
|
774
|
+
`adapter=${Buffer.from(networkParams.extendedPanId).toString("hex")}, ` +
|
|
775
|
+
`backup=${Buffer.from(networkParams.extendedPanId).toString("hex")}`, NS);
|
|
776
|
+
logger_1.logger.error(`- Channel: configured=${options.channelList}, adapter=${networkParams.radioChannel}, ` +
|
|
777
|
+
`backup=${backup.logicalChannel}`, NS);
|
|
778
|
+
logger_1.logger.error(`- Network key: configured=${Buffer.from(options.networkKey).toString("hex")}, ` +
|
|
779
|
+
`adapter=${Buffer.from(netKey).toString("hex")}, ` +
|
|
780
|
+
`backup=${backup.networkOptions.networkKey.toString("hex")}`, NS);
|
|
781
|
+
logger_1.logger.error(`Please update configuration to prevent further issues.`, NS);
|
|
782
|
+
logger_1.logger.error(`If you wish to re-commission your network, please remove coordinator backup.`, NS);
|
|
783
|
+
logger_1.logger.error(`Re-commissioning your network will require re-pairing of all devices!`, NS);
|
|
784
|
+
throw new Error("startup failed - configuration-adapter mismatch - see logs above for more information");
|
|
785
|
+
}
|
|
786
|
+
valid = true;
|
|
787
|
+
// if the settings in the backup match the config, then the old network is in the chip and needs to be restored
|
|
788
|
+
valid = valid && (options.panID == backup.networkOptions.panId);
|
|
789
|
+
valid = valid && (options.channelList.includes(backup.logicalChannel));
|
|
790
|
+
valid = valid && (Buffer.from(options.extendedPanID).equals(backup.networkOptions.extendedPanId));
|
|
791
|
+
valid = valid && (Buffer.from(options.networkKey).equals(backup.networkOptions.networkKey));
|
|
792
|
+
return valid;
|
|
793
|
+
}
|
|
730
794
|
}
|
|
731
795
|
exports.Driver = Driver;
|
|
732
796
|
//# sourceMappingURL=driver.js.map
|