zigbee-herdsman 0.51.0 → 0.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci.yml +4 -2
- package/.prettierrc +9 -0
- package/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +25 -0
- package/dist/adapter/adapter.d.ts +4 -4
- package/dist/adapter/adapter.d.ts.map +1 -1
- package/dist/adapter/adapter.js +8 -13
- package/dist/adapter/adapter.js.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.js +249 -155
- package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
- package/dist/adapter/deconz/adapter/index.d.ts +1 -1
- package/dist/adapter/deconz/adapter/index.d.ts.map +1 -1
- package/dist/adapter/deconz/adapter/index.js.map +1 -1
- package/dist/adapter/deconz/driver/constants.d.ts +1 -1
- package/dist/adapter/deconz/driver/constants.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/constants.js +7 -7
- package/dist/adapter/deconz/driver/constants.js.map +1 -1
- package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/driver.js +92 -60
- package/dist/adapter/deconz/driver/driver.js.map +1 -1
- package/dist/adapter/deconz/driver/frameParser.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/frameParser.js +55 -46
- package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
- package/dist/adapter/deconz/driver/parser.js +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.d.ts +5 -5
- package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.js +803 -955
- package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
- package/dist/adapter/ember/adapter/endpoints.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/endpoints.js +4 -2
- package/dist/adapter/ember/adapter/endpoints.js.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.d.ts +2 -2
- package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.js +16 -16
- package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
- package/dist/adapter/ember/adapter/tokensManager.d.ts +3 -3
- package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/tokensManager.js +86 -85
- package/dist/adapter/ember/adapter/tokensManager.js.map +1 -1
- package/dist/adapter/ember/consts.d.ts.map +1 -1
- package/dist/adapter/ember/consts.js +27 -27
- package/dist/adapter/ember/consts.js.map +1 -1
- package/dist/adapter/ember/enums.d.ts +2 -2
- package/dist/adapter/ember/enums.d.ts.map +1 -1
- package/dist/adapter/ember/enums.js +8 -50
- package/dist/adapter/ember/enums.js.map +1 -1
- package/dist/adapter/ember/ezsp/buffalo.d.ts +4 -4
- package/dist/adapter/ember/ezsp/buffalo.d.ts.map +1 -1
- package/dist/adapter/ember/ezsp/buffalo.js +35 -34
- package/dist/adapter/ember/ezsp/buffalo.js.map +1 -1
- package/dist/adapter/ember/ezsp/consts.d.ts.map +1 -1
- package/dist/adapter/ember/ezsp/consts.js +4 -4
- package/dist/adapter/ember/ezsp/consts.js.map +1 -1
- package/dist/adapter/ember/ezsp/enums.d.ts.map +1 -1
- package/dist/adapter/ember/ezsp/enums.js +0 -2
- package/dist/adapter/ember/ezsp/enums.js.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.d.ts +23 -20
- package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.js +1146 -1141
- package/dist/adapter/ember/ezsp/ezsp.js.map +1 -1
- package/dist/adapter/ember/ezspError.d.ts +1 -1
- package/dist/adapter/ember/ezspError.d.ts.map +1 -1
- package/dist/adapter/ember/ezspError.js.map +1 -1
- package/dist/adapter/ember/types.d.ts +2 -1
- package/dist/adapter/ember/types.d.ts.map +1 -1
- package/dist/adapter/ember/uart/ash.d.ts +5 -5
- package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
- package/dist/adapter/ember/uart/ash.js +66 -65
- package/dist/adapter/ember/uart/ash.js.map +1 -1
- package/dist/adapter/ember/uart/consts.d.ts.map +1 -1
- package/dist/adapter/ember/uart/consts.js +9 -9
- package/dist/adapter/ember/uart/consts.js.map +1 -1
- package/dist/adapter/ember/uart/enums.d.ts.map +1 -1
- package/dist/adapter/ember/uart/parser.d.ts +1 -1
- package/dist/adapter/ember/uart/parser.d.ts.map +1 -1
- package/dist/adapter/ember/uart/parser.js +1 -1
- 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 +1 -1
- package/dist/adapter/ember/uart/queues.js.map +1 -1
- package/dist/adapter/ember/uart/writer.d.ts +1 -1
- package/dist/adapter/ember/uart/writer.d.ts.map +1 -1
- package/dist/adapter/ember/uart/writer.js +2 -3
- package/dist/adapter/ember/uart/writer.js.map +1 -1
- package/dist/adapter/ember/utils/initters.d.ts +2 -2
- package/dist/adapter/ember/utils/initters.d.ts.map +1 -1
- package/dist/adapter/ember/utils/initters.js +1 -0
- package/dist/adapter/ember/utils/initters.js.map +1 -1
- package/dist/adapter/ember/utils/math.d.ts.map +1 -1
- package/dist/adapter/ember/utils/math.js +11 -11
- package/dist/adapter/ember/utils/math.js.map +1 -1
- package/dist/adapter/events.d.ts +1 -1
- package/dist/adapter/events.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.d.ts +1 -1
- package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.js +11 -10
- package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +4 -4
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.js +74 -41
- package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
- package/dist/adapter/ezsp/adapter/index.d.ts +1 -1
- package/dist/adapter/ezsp/adapter/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/commands.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/commands.js +452 -452
- package/dist/adapter/ezsp/driver/commands.js.map +1 -1
- package/dist/adapter/ezsp/driver/consts.js +4 -4
- package/dist/adapter/ezsp/driver/consts.js.map +1 -1
- package/dist/adapter/ezsp/driver/driver.d.ts +5 -5
- package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/driver.js +82 -82
- package/dist/adapter/ezsp/driver/driver.js.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.d.ts +3 -3
- package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.js +58 -58
- package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
- package/dist/adapter/ezsp/driver/frame.js +9 -9
- package/dist/adapter/ezsp/driver/frame.js.map +1 -1
- package/dist/adapter/ezsp/driver/index.d.ts +1 -1
- package/dist/adapter/ezsp/driver/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/index.js +2 -2
- package/dist/adapter/ezsp/driver/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/multicast.js +1 -1
- package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
- package/dist/adapter/ezsp/driver/parser.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/parser.js +1 -1
- package/dist/adapter/ezsp/driver/parser.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/basic.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/basic.js +5 -5
- package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/named.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/named.js +236 -234
- package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.js +5 -3
- 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 +8 -8
- package/dist/adapter/ezsp/driver/uart.js.map +1 -1
- package/dist/adapter/ezsp/driver/utils/index.d.ts +1 -1
- package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/utils/index.js +12 -11
- package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/writer.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/writer.js +6 -7
- package/dist/adapter/ezsp/driver/writer.js.map +1 -1
- package/dist/adapter/index.d.ts +2 -2
- package/dist/adapter/index.d.ts.map +1 -1
- package/dist/adapter/index.js +2 -2
- package/dist/adapter/index.js.map +1 -1
- package/dist/adapter/serialPort.d.ts +1 -1
- package/dist/adapter/serialPort.d.ts.map +1 -1
- package/dist/adapter/serialPort.js +1 -1
- package/dist/adapter/serialPort.js.map +1 -1
- package/dist/adapter/serialPortUtils.js +1 -1
- package/dist/adapter/serialPortUtils.js.map +1 -1
- package/dist/adapter/socketPortUtils.js +3 -3
- package/dist/adapter/tstype.d.ts +1 -1
- package/dist/adapter/tstype.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +3 -3
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.js +101 -86
- package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +10 -10
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +30 -24
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
- package/dist/adapter/z-stack/adapter/endpoints.d.ts.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/index.d.ts +1 -1
- package/dist/adapter/z-stack/adapter/index.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/index.js.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.d.ts +5 -5
- package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.js +90 -81
- package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
- package/dist/adapter/z-stack/adapter/tstype.d.ts +1 -1
- package/dist/adapter/z-stack/adapter/tstype.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +5 -5
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.js +72 -57
- package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
- package/dist/adapter/z-stack/constants/af.js +5 -5
- package/dist/adapter/z-stack/constants/af.js.map +1 -1
- package/dist/adapter/z-stack/constants/dbg.js +2 -2
- package/dist/adapter/z-stack/constants/index.d.ts +2 -2
- package/dist/adapter/z-stack/constants/index.d.ts.map +1 -1
- package/dist/adapter/z-stack/constants/index.js +2 -2
- package/dist/adapter/z-stack/constants/index.js.map +1 -1
- package/dist/adapter/z-stack/constants/mac.js +11 -11
- package/dist/adapter/z-stack/constants/sapi.js +4 -4
- package/dist/adapter/z-stack/constants/sys.js +11 -11
- package/dist/adapter/z-stack/constants/util.js +11 -11
- package/dist/adapter/z-stack/constants/utils.d.ts.map +1 -1
- package/dist/adapter/z-stack/constants/utils.js +3 -3
- package/dist/adapter/z-stack/constants/utils.js.map +1 -1
- package/dist/adapter/z-stack/constants/zdo.js +13 -13
- package/dist/adapter/z-stack/models/index.d.ts +1 -1
- package/dist/adapter/z-stack/models/startup-options.d.ts +2 -2
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +4 -4
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +2 -2
- package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-table.js +4 -7
- package/dist/adapter/z-stack/structs/entries/address-manager-table.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +1 -5
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +2 -2
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +3 -6
- package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +6 -6
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +2 -2
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +3 -6
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/channel-list.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/channel-list.js +1 -3
- package/dist/adapter/z-stack/structs/entries/channel-list.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/has-configured.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/has-configured.js +2 -2
- package/dist/adapter/z-stack/structs/entries/has-configured.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/index.d.ts +16 -16
- package/dist/adapter/z-stack/structs/entries/nib.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/nib.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nib.js +50 -50
- package/dist/adapter/z-stack/structs/entries/nib.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +1 -4
- package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-key.js +1 -3
- package/dist/adapter/z-stack/structs/entries/nwk-key.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +1 -3
- package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +3 -3
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +2 -2
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +3 -6
- package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js.map +1 -1
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +4 -4
- package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +2 -2
- package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/security-manager-table.js +3 -7
- package/dist/adapter/z-stack/structs/entries/security-manager-table.js.map +1 -1
- package/dist/adapter/z-stack/structs/index.d.ts +4 -4
- package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +1 -1
- package/dist/adapter/z-stack/structs/struct.d.ts +6 -6
- package/dist/adapter/z-stack/structs/struct.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/struct.js +53 -52
- package/dist/adapter/z-stack/structs/struct.js.map +1 -1
- package/dist/adapter/z-stack/structs/table.d.ts +3 -3
- package/dist/adapter/z-stack/structs/table.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/table.js +16 -16
- package/dist/adapter/z-stack/structs/table.js.map +1 -1
- package/dist/adapter/z-stack/unpi/constants.d.ts +1 -1
- package/dist/adapter/z-stack/unpi/constants.d.ts.map +1 -1
- package/dist/adapter/z-stack/unpi/constants.js +1 -1
- package/dist/adapter/z-stack/unpi/constants.js.map +1 -1
- package/dist/adapter/z-stack/unpi/frame.d.ts.map +1 -1
- package/dist/adapter/z-stack/unpi/frame.js +5 -6
- package/dist/adapter/z-stack/unpi/frame.js.map +1 -1
- package/dist/adapter/z-stack/unpi/index.d.ts +4 -4
- package/dist/adapter/z-stack/unpi/index.d.ts.map +1 -1
- package/dist/adapter/z-stack/unpi/index.js +6 -6
- package/dist/adapter/z-stack/unpi/index.js.map +1 -1
- package/dist/adapter/z-stack/unpi/parser.d.ts.map +1 -1
- package/dist/adapter/z-stack/unpi/parser.js +1 -1
- package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
- package/dist/adapter/z-stack/unpi/writer.d.ts.map +1 -1
- package/dist/adapter/z-stack/unpi/writer.js.map +1 -1
- package/dist/adapter/z-stack/utils/channel-list.d.ts.map +1 -1
- package/dist/adapter/z-stack/utils/channel-list.js +5 -2
- package/dist/adapter/z-stack/utils/channel-list.js.map +1 -1
- package/dist/adapter/z-stack/utils/index.d.ts +2 -2
- package/dist/adapter/z-stack/utils/network-options.d.ts +1 -1
- package/dist/adapter/z-stack/utils/network-options.d.ts.map +1 -1
- package/dist/adapter/z-stack/utils/network-options.js +1 -1
- package/dist/adapter/z-stack/utils/network-options.js.map +1 -1
- package/dist/adapter/z-stack/znp/buffaloZnp.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/buffaloZnp.js +8 -8
- 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 +200 -592
- package/dist/adapter/z-stack/znp/definition.js.map +1 -1
- package/dist/adapter/z-stack/znp/index.d.ts +1 -1
- package/dist/adapter/z-stack/znp/index.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/index.js.map +1 -1
- package/dist/adapter/z-stack/znp/parameterType.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/parameterType.js.map +1 -1
- package/dist/adapter/z-stack/znp/tstype.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/znp.d.ts +3 -3
- package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/znp.js +12 -15
- package/dist/adapter/z-stack/znp/znp.js.map +1 -1
- package/dist/adapter/z-stack/znp/zpiObject.d.ts +1 -1
- package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/zpiObject.js +17 -9
- package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
- package/dist/adapter/zigate/adapter/index.d.ts.map +1 -1
- package/dist/adapter/zigate/adapter/index.js.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.js +88 -92
- package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
- package/dist/adapter/zigate/driver/commandType.d.ts +2 -2
- package/dist/adapter/zigate/driver/commandType.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/commandType.js +72 -80
- package/dist/adapter/zigate/driver/commandType.js.map +1 -1
- package/dist/adapter/zigate/driver/constants.d.ts +9 -9
- package/dist/adapter/zigate/driver/constants.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/constants.js +11 -65
- package/dist/adapter/zigate/driver/constants.js.map +1 -1
- package/dist/adapter/zigate/driver/frame.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/frame.js +3 -15
- package/dist/adapter/zigate/driver/frame.js.map +1 -1
- package/dist/adapter/zigate/driver/messageType.d.ts +1 -1
- package/dist/adapter/zigate/driver/messageType.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/messageType.js +29 -30
- package/dist/adapter/zigate/driver/messageType.js.map +1 -1
- package/dist/adapter/zigate/driver/parameterType.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/parameterType.js.map +1 -1
- package/dist/adapter/zigate/driver/ziGateObject.d.ts +2 -2
- package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/ziGateObject.js +11 -5
- package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
- package/dist/adapter/zigate/driver/zigate.d.ts +5 -5
- package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/zigate.js +12 -12
- package/dist/adapter/zigate/driver/zigate.js.map +1 -1
- package/dist/buffalo/buffalo.d.ts +1 -1
- package/dist/buffalo/buffalo.d.ts.map +1 -1
- package/dist/buffalo/buffalo.js +1 -1
- package/dist/buffalo/buffalo.js.map +1 -1
- package/dist/controller/controller.d.ts.map +1 -1
- package/dist/controller/controller.js +34 -33
- package/dist/controller/controller.js.map +1 -1
- package/dist/controller/database.d.ts.map +1 -1
- package/dist/controller/database.js +6 -2
- package/dist/controller/database.js.map +1 -1
- package/dist/controller/events.d.ts +3 -3
- package/dist/controller/events.d.ts.map +1 -1
- package/dist/controller/greenPower.d.ts +1 -1
- package/dist/controller/greenPower.d.ts.map +1 -1
- package/dist/controller/greenPower.js +15 -17
- package/dist/controller/greenPower.js.map +1 -1
- package/dist/controller/helpers/index.d.ts +1 -1
- package/dist/controller/helpers/index.d.ts.map +1 -1
- package/dist/controller/helpers/index.js.map +1 -1
- package/dist/controller/helpers/request.d.ts +1 -1
- package/dist/controller/helpers/request.d.ts.map +1 -1
- package/dist/controller/helpers/request.js +7 -10
- 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 +2 -3
- package/dist/controller/helpers/requestQueue.js.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.d.ts +1 -1
- package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
- package/dist/controller/index.d.ts +1 -1
- package/dist/controller/index.d.ts.map +1 -1
- package/dist/controller/index.js.map +1 -1
- package/dist/controller/model/device.d.ts +3 -3
- package/dist/controller/model/device.d.ts.map +1 -1
- package/dist/controller/model/device.js +247 -94
- package/dist/controller/model/device.js.map +1 -1
- package/dist/controller/model/endpoint.d.ts +4 -4
- package/dist/controller/model/endpoint.d.ts.map +1 -1
- package/dist/controller/model/endpoint.js +45 -31
- package/dist/controller/model/endpoint.js.map +1 -1
- package/dist/controller/model/entity.d.ts +2 -2
- package/dist/controller/model/entity.d.ts.map +1 -1
- package/dist/controller/model/entity.js.map +1 -1
- package/dist/controller/model/group.d.ts +2 -2
- package/dist/controller/model/group.d.ts.map +1 -1
- package/dist/controller/model/group.js +8 -6
- package/dist/controller/model/group.js.map +1 -1
- package/dist/controller/model/index.d.ts +1 -1
- package/dist/controller/model/index.d.ts.map +1 -1
- package/dist/controller/model/index.js.map +1 -1
- package/dist/controller/touchlink.d.ts.map +1 -1
- package/dist/controller/touchlink.js +2 -2
- package/dist/controller/touchlink.js.map +1 -1
- package/dist/controller/tstype.d.ts.map +1 -1
- package/dist/controller/tstype.js +0 -1
- package/dist/controller/tstype.js.map +1 -1
- package/dist/models/backup-storage-legacy.d.ts +4 -4
- package/dist/models/backup-storage-legacy.d.ts.map +1 -1
- package/dist/models/backup-storage-unified.d.ts +1 -1
- package/dist/models/backup.d.ts +2 -2
- package/dist/models/index.d.ts +4 -4
- package/dist/utils/backup.d.ts +1 -1
- package/dist/utils/backup.d.ts.map +1 -1
- package/dist/utils/backup.js +71 -58
- package/dist/utils/backup.js.map +1 -1
- package/dist/utils/index.d.ts +6 -6
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +10 -10
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/isNumberArray.js +1 -1
- package/dist/utils/isNumberArray.js.map +1 -1
- package/dist/utils/queue.js +1 -1
- package/dist/utils/queue.js.map +1 -1
- package/dist/utils/waitress.d.ts.map +1 -1
- package/dist/utils/waitress.js +2 -2
- package/dist/utils/waitress.js.map +1 -1
- package/dist/zspec/consts.d.ts +1 -1
- package/dist/zspec/consts.d.ts.map +1 -1
- package/dist/zspec/consts.js +16 -16
- package/dist/zspec/consts.js.map +1 -1
- package/dist/zspec/enums.js +0 -1
- package/dist/zspec/enums.js.map +1 -1
- package/dist/zspec/utils.d.ts.map +1 -1
- package/dist/zspec/utils.js +5 -3
- package/dist/zspec/utils.js.map +1 -1
- package/dist/zspec/zcl/buffaloZcl.d.ts +2 -2
- package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -1
- package/dist/zspec/zcl/buffaloZcl.js +44 -51
- package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
- package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/cluster.js +284 -380
- package/dist/zspec/zcl/definition/cluster.js.map +1 -1
- package/dist/zspec/zcl/definition/consts.js +10 -10
- package/dist/zspec/zcl/definition/consts.js.map +1 -1
- package/dist/zspec/zcl/definition/enums.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/enums.js.map +1 -1
- package/dist/zspec/zcl/definition/foundation.d.ts +1 -1
- package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/foundation.js +51 -22
- package/dist/zspec/zcl/definition/foundation.js.map +1 -1
- package/dist/zspec/zcl/definition/manufacturerCode.js +0 -1
- package/dist/zspec/zcl/definition/manufacturerCode.js.map +1 -1
- package/dist/zspec/zcl/definition/status.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/tstype.d.ts +1 -1
- package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/tstype.js +0 -1
- package/dist/zspec/zcl/definition/tstype.js.map +1 -1
- package/dist/zspec/zcl/utils.d.ts.map +1 -1
- package/dist/zspec/zcl/utils.js +59 -19
- package/dist/zspec/zcl/utils.js.map +1 -1
- package/dist/zspec/zcl/zclFrame.d.ts +1 -1
- package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
- package/dist/zspec/zcl/zclFrame.js +14 -15
- package/dist/zspec/zcl/zclFrame.js.map +1 -1
- package/dist/zspec/zcl/zclHeader.d.ts +1 -1
- package/dist/zspec/zcl/zclHeader.d.ts.map +1 -1
- package/dist/zspec/zcl/zclHeader.js +7 -7
- package/dist/zspec/zcl/zclHeader.js.map +1 -1
- package/dist/zspec/zcl/zclStatusError.d.ts.map +1 -1
- package/dist/zspec/zcl/zclStatusError.js.map +1 -1
- package/dist/zspec/zdo/buffaloZdo.d.ts +3 -3
- package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -1
- package/dist/zspec/zdo/buffaloZdo.js +92 -92
- package/dist/zspec/zdo/buffaloZdo.js.map +1 -1
- package/dist/zspec/zdo/definition/clusters.d.ts.map +1 -1
- package/dist/zspec/zdo/definition/clusters.js +0 -1
- package/dist/zspec/zdo/definition/clusters.js.map +1 -1
- package/dist/zspec/zdo/definition/consts.d.ts.map +1 -1
- package/dist/zspec/zdo/definition/consts.js.map +1 -1
- package/dist/zspec/zdo/definition/enums.d.ts.map +1 -1
- package/dist/zspec/zdo/definition/enums.js +0 -5
- package/dist/zspec/zdo/definition/enums.js.map +1 -1
- package/dist/zspec/zdo/definition/status.d.ts.map +1 -1
- package/dist/zspec/zdo/definition/status.js +0 -1
- package/dist/zspec/zdo/definition/status.js.map +1 -1
- package/dist/zspec/zdo/definition/tstypes.d.ts +2 -2
- package/dist/zspec/zdo/definition/tstypes.d.ts.map +1 -1
- package/dist/zspec/zdo/utils.d.ts.map +1 -1
- package/dist/zspec/zdo/utils.js +14 -14
- package/dist/zspec/zdo/utils.js.map +1 -1
- package/dist/zspec/zdo/zdoStatusError.d.ts.map +1 -1
- package/dist/zspec/zdo/zdoStatusError.js.map +1 -1
- package/package.json +6 -1
- package/dist/adapter/ember/adapter/requestQueue.d.ts +0 -67
- package/dist/adapter/ember/adapter/requestQueue.d.ts.map +0 -1
- package/dist/adapter/ember/adapter/requestQueue.js +0 -159
- package/dist/adapter/ember/adapter/requestQueue.js.map +0 -1
|
@@ -36,7 +36,6 @@ const constants_1 = __importDefault(require("../driver/constants"));
|
|
|
36
36
|
const logger_1 = require("../../../utils/logger");
|
|
37
37
|
const NS = 'zh:deconz';
|
|
38
38
|
var frameParser = require('../driver/frameParser');
|
|
39
|
-
;
|
|
40
39
|
class DeconzAdapter extends adapter_1.default {
|
|
41
40
|
driver;
|
|
42
41
|
queue;
|
|
@@ -49,28 +48,36 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
49
48
|
TX_OPTIONS = 0x00; // No APS ACKS
|
|
50
49
|
constructor(networkOptions, serialPortOptions, backupPath, adapterOptions) {
|
|
51
50
|
super(networkOptions, serialPortOptions, backupPath, adapterOptions);
|
|
52
|
-
const concurrent = this.adapterOptions && this.adapterOptions.concurrent ?
|
|
53
|
-
this.adapterOptions.concurrent : 2;
|
|
51
|
+
const concurrent = this.adapterOptions && this.adapterOptions.concurrent ? this.adapterOptions.concurrent : 2;
|
|
54
52
|
// TODO: https://github.com/Koenkk/zigbee2mqtt/issues/4884#issuecomment-728903121
|
|
55
|
-
const delay = this.adapterOptions && typeof this.adapterOptions.delay === 'number' ?
|
|
56
|
-
this.adapterOptions.delay : 0;
|
|
53
|
+
const delay = this.adapterOptions && typeof this.adapterOptions.delay === 'number' ? this.adapterOptions.delay : 0;
|
|
57
54
|
this.waitress = new utils_1.Waitress(this.waitressValidator, this.waitressTimeoutFormatter);
|
|
58
55
|
this.driver = new driver_1.default(serialPortOptions.path);
|
|
59
56
|
this.driver.setDelay(delay);
|
|
60
57
|
if (delay >= 200) {
|
|
61
58
|
this.TX_OPTIONS = 0x04; // activate APS ACKS
|
|
62
59
|
}
|
|
63
|
-
this.driver.on('rxFrame', (frame) => {
|
|
60
|
+
this.driver.on('rxFrame', (frame) => {
|
|
61
|
+
(0, frameParser_1.default)(frame);
|
|
62
|
+
});
|
|
64
63
|
this.queue = new utils_1.Queue(concurrent);
|
|
65
64
|
this.transactionID = 0;
|
|
66
65
|
this.openRequestsQueue = [];
|
|
67
66
|
this.joinPermitted = false;
|
|
68
67
|
this.fwVersion = null;
|
|
69
|
-
this.frameParserEvent.on('receivedDataPayload', (data) => {
|
|
70
|
-
|
|
68
|
+
this.frameParserEvent.on('receivedDataPayload', (data) => {
|
|
69
|
+
this.checkReceivedDataPayload(data);
|
|
70
|
+
});
|
|
71
|
+
this.frameParserEvent.on('receivedGreenPowerIndication', (data) => {
|
|
72
|
+
this.checkReceivedGreenPowerIndication(data);
|
|
73
|
+
});
|
|
71
74
|
const that = this;
|
|
72
|
-
setInterval(() => {
|
|
73
|
-
|
|
75
|
+
setInterval(() => {
|
|
76
|
+
that.checkReceivedDataPayload(null);
|
|
77
|
+
}, 1000);
|
|
78
|
+
setTimeout(() => {
|
|
79
|
+
that.checkCoordinatorSimpleDescriptor(false);
|
|
80
|
+
}, 3000);
|
|
74
81
|
}
|
|
75
82
|
static async isValidPath(path) {
|
|
76
83
|
return driver_1.default.isValidPath(path);
|
|
@@ -84,7 +91,7 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
84
91
|
async start() {
|
|
85
92
|
let baudrate = this.serialPortOptions.baudRate || 38400;
|
|
86
93
|
await this.driver.open(baudrate);
|
|
87
|
-
return
|
|
94
|
+
return 'resumed';
|
|
88
95
|
}
|
|
89
96
|
async stop() {
|
|
90
97
|
await this.driver.close();
|
|
@@ -92,20 +99,22 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
92
99
|
async getCoordinator() {
|
|
93
100
|
const ieeeAddr = await this.driver.readParameterRequest(constants_1.default.PARAM.Network.MAC);
|
|
94
101
|
const nwkAddr = await this.driver.readParameterRequest(constants_1.default.PARAM.Network.NWK_ADDRESS);
|
|
95
|
-
const endpoints = [
|
|
102
|
+
const endpoints = [
|
|
103
|
+
{
|
|
96
104
|
ID: 0x01,
|
|
97
105
|
profileID: 0x0104,
|
|
98
106
|
deviceID: 0x0005,
|
|
99
|
-
inputClusters: [0x0000, 0x0006,
|
|
100
|
-
outputClusters: [0x0001, 0x0020, 0x0500, 0x0502]
|
|
107
|
+
inputClusters: [0x0000, 0x0006, 0x000a, 0x0019, 0x0501],
|
|
108
|
+
outputClusters: [0x0001, 0x0020, 0x0500, 0x0502],
|
|
101
109
|
},
|
|
102
110
|
{
|
|
103
|
-
ID:
|
|
104
|
-
profileID:
|
|
111
|
+
ID: 0xf2,
|
|
112
|
+
profileID: 0xa1e0,
|
|
105
113
|
deviceID: 0x0064,
|
|
106
114
|
inputClusters: [],
|
|
107
|
-
outputClusters: [0x0021]
|
|
108
|
-
}
|
|
115
|
+
outputClusters: [0x0021],
|
|
116
|
+
},
|
|
117
|
+
];
|
|
109
118
|
return {
|
|
110
119
|
networkAddress: nwkAddr,
|
|
111
120
|
manufacturerID: 0x1135,
|
|
@@ -119,7 +128,7 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
119
128
|
const zdpFrame = [transactionID, seconds, 0]; // tc_significance 1 or 0 ?
|
|
120
129
|
request.requestId = transactionID;
|
|
121
130
|
request.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
|
|
122
|
-
request.destAddr16 = networkAddress ||
|
|
131
|
+
request.destAddr16 = networkAddress || 0xfffc;
|
|
123
132
|
request.destEndpoint = 0;
|
|
124
133
|
request.profileId = 0;
|
|
125
134
|
request.clusterId = 0x36; // permit join
|
|
@@ -138,10 +147,10 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
138
147
|
this.joinPermitted = true;
|
|
139
148
|
}
|
|
140
149
|
await this.driver.writeParameterRequest(constants_1.default.PARAM.Network.PERMIT_JOIN, seconds);
|
|
141
|
-
logger_1.logger.debug(
|
|
150
|
+
logger_1.logger.debug('PERMIT_JOIN - ' + seconds + ' seconds', NS);
|
|
142
151
|
}
|
|
143
152
|
catch (error) {
|
|
144
|
-
const msg =
|
|
153
|
+
const msg = 'PERMIT_JOIN FAILED - ' + error;
|
|
145
154
|
logger_1.logger.debug(msg, NS);
|
|
146
155
|
// try again
|
|
147
156
|
this.permitJoin(seconds, networkAddress);
|
|
@@ -157,23 +166,23 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
157
166
|
try {
|
|
158
167
|
const fw = await this.driver.readFirmwareVersionRequest();
|
|
159
168
|
const buf = Buffer.from(fw);
|
|
160
|
-
let fwString =
|
|
161
|
-
let type =
|
|
169
|
+
let fwString = '0x' + buf.readUInt32LE(0).toString(16);
|
|
170
|
+
let type = '';
|
|
162
171
|
if (fw[1] === 5) {
|
|
163
|
-
type =
|
|
172
|
+
type = 'ConBee/RaspBee';
|
|
164
173
|
}
|
|
165
174
|
else if (fw[1] === 7) {
|
|
166
|
-
type =
|
|
175
|
+
type = 'ConBee2/RaspBee2';
|
|
167
176
|
}
|
|
168
177
|
else {
|
|
169
|
-
type =
|
|
178
|
+
type = 'ConBee3';
|
|
170
179
|
}
|
|
171
|
-
const meta = {
|
|
180
|
+
const meta = { transportrev: 0, product: 0, majorrel: fw[3], minorrel: fw[2], maintrel: 0, revision: fwString };
|
|
172
181
|
this.fwVersion = { type: type, meta: meta };
|
|
173
182
|
return { type: type, meta: meta };
|
|
174
183
|
}
|
|
175
184
|
catch (error) {
|
|
176
|
-
logger_1.logger.debug(
|
|
185
|
+
logger_1.logger.debug('Get coordinator version Error: ' + error, NS);
|
|
177
186
|
}
|
|
178
187
|
}
|
|
179
188
|
}
|
|
@@ -197,7 +206,7 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
197
206
|
networkAddress: entry.readUInt16LE(16),
|
|
198
207
|
ieeeAddr: this.driver.macAddrArrayToString(extAddr),
|
|
199
208
|
relationship: (relationByte >> 1) & ((1 << 3) - 1),
|
|
200
|
-
depth: entry.readUInt8(20)
|
|
209
|
+
depth: entry.readUInt8(20),
|
|
201
210
|
});
|
|
202
211
|
}
|
|
203
212
|
};
|
|
@@ -215,13 +224,15 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
215
224
|
req.asduPayload = [transactionID, startIndex];
|
|
216
225
|
req.txOptions = 0;
|
|
217
226
|
req.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
|
|
218
|
-
this.driver
|
|
219
|
-
.
|
|
220
|
-
.
|
|
227
|
+
this.driver
|
|
228
|
+
.enqueueSendDataRequest(req)
|
|
229
|
+
.then((result) => { })
|
|
230
|
+
.catch((error) => { });
|
|
221
231
|
try {
|
|
222
232
|
const d = await this.waitForData(networkAddress, 0, 0x8031);
|
|
223
233
|
const data = d.asduPayload;
|
|
224
|
-
if (data[1] !== 0) {
|
|
234
|
+
if (data[1] !== 0) {
|
|
235
|
+
// status
|
|
225
236
|
throw new Error(`LQI for '${networkAddress}' failed`);
|
|
226
237
|
}
|
|
227
238
|
const tableList = [];
|
|
@@ -230,11 +241,12 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
230
241
|
tableEntrys: data[2],
|
|
231
242
|
startIndex: data[3],
|
|
232
243
|
tableListCount: data[4],
|
|
233
|
-
tableList: tableList
|
|
244
|
+
tableList: tableList,
|
|
234
245
|
};
|
|
235
246
|
let tableEntry = [];
|
|
236
247
|
let counter = 0;
|
|
237
|
-
for (let i = 5; i <
|
|
248
|
+
for (let i = 5; i < response.tableListCount * 22 + 5; i++) {
|
|
249
|
+
// one tableentry = 22 bytes
|
|
238
250
|
tableEntry.push(data[i]);
|
|
239
251
|
counter++;
|
|
240
252
|
if (counter === 22) {
|
|
@@ -243,11 +255,19 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
243
255
|
counter = 0;
|
|
244
256
|
}
|
|
245
257
|
}
|
|
246
|
-
logger_1.logger.debug(
|
|
258
|
+
logger_1.logger.debug('LQI RESPONSE - addr: 0x' +
|
|
259
|
+
networkAddress.toString(16) +
|
|
260
|
+
' status: ' +
|
|
261
|
+
response.status +
|
|
262
|
+
' read ' +
|
|
263
|
+
(response.tableListCount + response.startIndex) +
|
|
264
|
+
'/' +
|
|
265
|
+
response.tableEntrys +
|
|
266
|
+
' entrys', NS);
|
|
247
267
|
return response;
|
|
248
268
|
}
|
|
249
269
|
catch (error) {
|
|
250
|
-
const msg =
|
|
270
|
+
const msg = 'LQI REQUEST FAILED - addr: 0x' + networkAddress.toString(16) + ' ' + error;
|
|
251
271
|
logger_1.logger.debug(msg, NS);
|
|
252
272
|
return Promise.reject(new Error(msg));
|
|
253
273
|
}
|
|
@@ -280,7 +300,7 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
280
300
|
table.push({
|
|
281
301
|
destinationAddress: entry.readUInt16LE(0),
|
|
282
302
|
status: statusLookup[(statusByte >> 5) & ((1 << 3) - 1)],
|
|
283
|
-
nextHop: entry.readUInt16LE(3)
|
|
303
|
+
nextHop: entry.readUInt16LE(3),
|
|
284
304
|
});
|
|
285
305
|
}
|
|
286
306
|
};
|
|
@@ -299,13 +319,15 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
299
319
|
req.txOptions = 0;
|
|
300
320
|
req.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
|
|
301
321
|
req.timeout = 30;
|
|
302
|
-
this.driver
|
|
303
|
-
.
|
|
304
|
-
.
|
|
322
|
+
this.driver
|
|
323
|
+
.enqueueSendDataRequest(req)
|
|
324
|
+
.then((result) => { })
|
|
325
|
+
.catch((error) => { });
|
|
305
326
|
try {
|
|
306
327
|
const d = await this.waitForData(networkAddress, 0, 0x8032);
|
|
307
328
|
const data = d.asduPayload;
|
|
308
|
-
if (data[1] !== 0) {
|
|
329
|
+
if (data[1] !== 0) {
|
|
330
|
+
// status
|
|
309
331
|
throw new Error(`Routingtables for '${networkAddress}' failed`);
|
|
310
332
|
}
|
|
311
333
|
const tableList = [];
|
|
@@ -314,11 +336,12 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
314
336
|
tableEntrys: data[2],
|
|
315
337
|
startIndex: data[3],
|
|
316
338
|
tableListCount: data[4],
|
|
317
|
-
tableList: tableList
|
|
339
|
+
tableList: tableList,
|
|
318
340
|
};
|
|
319
341
|
let tableEntry = [];
|
|
320
342
|
let counter = 0;
|
|
321
|
-
for (let i = 5; i <
|
|
343
|
+
for (let i = 5; i < response.tableListCount * 5 + 5; i++) {
|
|
344
|
+
// one tableentry = 5 bytes
|
|
322
345
|
tableEntry.push(data[i]);
|
|
323
346
|
counter++;
|
|
324
347
|
if (counter === 5) {
|
|
@@ -327,11 +350,19 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
327
350
|
counter = 0;
|
|
328
351
|
}
|
|
329
352
|
}
|
|
330
|
-
logger_1.logger.debug(
|
|
353
|
+
logger_1.logger.debug('ROUTING_TABLE RESPONSE - addr: 0x' +
|
|
354
|
+
networkAddress.toString(16) +
|
|
355
|
+
' status: ' +
|
|
356
|
+
response.status +
|
|
357
|
+
' read ' +
|
|
358
|
+
(response.tableListCount + response.startIndex) +
|
|
359
|
+
'/' +
|
|
360
|
+
response.tableEntrys +
|
|
361
|
+
' entrys', NS);
|
|
331
362
|
return response;
|
|
332
363
|
}
|
|
333
364
|
catch (error) {
|
|
334
|
-
const msg =
|
|
365
|
+
const msg = 'ROUTING_TABLE REQUEST FAILED - addr: 0x' + networkAddress.toString(16) + ' ' + error;
|
|
335
366
|
logger_1.logger.debug(msg, NS);
|
|
336
367
|
return Promise.reject(new Error(msg));
|
|
337
368
|
}
|
|
@@ -364,21 +395,27 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
364
395
|
request.txOptions = 0;
|
|
365
396
|
request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
|
|
366
397
|
request.timeout = 30;
|
|
367
|
-
this.driver
|
|
368
|
-
.
|
|
369
|
-
.
|
|
398
|
+
this.driver
|
|
399
|
+
.enqueueSendDataRequest(request)
|
|
400
|
+
.then((result) => { })
|
|
401
|
+
.catch((error) => { });
|
|
370
402
|
try {
|
|
371
403
|
const d = await this.waitForData(networkAddress, 0, 0x8002);
|
|
372
404
|
const data = d.asduPayload;
|
|
373
405
|
const buf = Buffer.from(data);
|
|
374
|
-
const logicaltype =
|
|
375
|
-
const type =
|
|
406
|
+
const logicaltype = data[4] & 7;
|
|
407
|
+
const type = logicaltype === 1 ? 'Router' : logicaltype === 2 ? 'EndDevice' : logicaltype === 0 ? 'Coordinator' : 'Unknown';
|
|
376
408
|
const manufacturer = buf.readUInt16LE(7);
|
|
377
|
-
logger_1.logger.debug(
|
|
409
|
+
logger_1.logger.debug('RECEIVING NODE_DESCRIPTOR - addr: 0x' +
|
|
410
|
+
networkAddress.toString(16) +
|
|
411
|
+
' type: ' +
|
|
412
|
+
type +
|
|
413
|
+
' manufacturer: 0x' +
|
|
414
|
+
manufacturer.toString(16), NS);
|
|
378
415
|
return { manufacturerCode: manufacturer, type };
|
|
379
416
|
}
|
|
380
417
|
catch (error) {
|
|
381
|
-
const msg =
|
|
418
|
+
const msg = 'RECEIVING NODE_DESCRIPTOR FAILED - addr: 0x' + networkAddress.toString(16) + ' ' + error;
|
|
382
419
|
logger_1.logger.debug(msg, NS);
|
|
383
420
|
return Promise.reject(new Error(msg));
|
|
384
421
|
}
|
|
@@ -401,23 +438,24 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
401
438
|
request.txOptions = 0;
|
|
402
439
|
request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
|
|
403
440
|
request.timeout = 30;
|
|
404
|
-
this.driver
|
|
405
|
-
.
|
|
406
|
-
.
|
|
441
|
+
this.driver
|
|
442
|
+
.enqueueSendDataRequest(request)
|
|
443
|
+
.then((result) => { })
|
|
444
|
+
.catch((error) => { });
|
|
407
445
|
try {
|
|
408
446
|
const d = await this.waitForData(networkAddress, 0, 0x8005);
|
|
409
447
|
const data = d.asduPayload;
|
|
410
448
|
const buf = Buffer.from(data);
|
|
411
449
|
const epCount = buf.readUInt8(4);
|
|
412
450
|
const epList = [];
|
|
413
|
-
for (let i = 5; i <
|
|
451
|
+
for (let i = 5; i < epCount + 5; i++) {
|
|
414
452
|
epList.push(buf.readUInt8(i));
|
|
415
453
|
}
|
|
416
|
-
logger_1.logger.debug(
|
|
454
|
+
logger_1.logger.debug('ACTIVE_ENDPOINTS - addr: 0x' + networkAddress.toString(16) + ' EP list: ' + epList, NS);
|
|
417
455
|
return { endpoints: epList };
|
|
418
456
|
}
|
|
419
457
|
catch (error) {
|
|
420
|
-
const msg =
|
|
458
|
+
const msg = 'READING ACTIVE_ENDPOINTS FAILED - addr: 0x' + networkAddress.toString(16) + ' ' + error;
|
|
421
459
|
logger_1.logger.debug(msg, NS);
|
|
422
460
|
return Promise.reject(new Error(msg));
|
|
423
461
|
}
|
|
@@ -440,9 +478,10 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
440
478
|
request.txOptions = 0;
|
|
441
479
|
request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
|
|
442
480
|
request.timeout = 30;
|
|
443
|
-
this.driver
|
|
444
|
-
.
|
|
445
|
-
.
|
|
481
|
+
this.driver
|
|
482
|
+
.enqueueSendDataRequest(request)
|
|
483
|
+
.then((result) => { })
|
|
484
|
+
.catch((error) => { });
|
|
446
485
|
try {
|
|
447
486
|
const d = await this.waitForData(networkAddress, 0, 0x8004);
|
|
448
487
|
const data = d.asduPayload;
|
|
@@ -454,9 +493,9 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
454
493
|
inClusters[i] = buf.readUInt16LE(cIndex);
|
|
455
494
|
cIndex += 2;
|
|
456
495
|
}
|
|
457
|
-
const outCount = buf.readUInt8(12 +
|
|
496
|
+
const outCount = buf.readUInt8(12 + inCount * 2);
|
|
458
497
|
const outClusters = [];
|
|
459
|
-
cIndex = 13 +
|
|
498
|
+
cIndex = 13 + inCount * 2;
|
|
460
499
|
for (let l = 0; l < outCount; l++) {
|
|
461
500
|
outClusters[l] = buf.readUInt16LE(cIndex);
|
|
462
501
|
cIndex += 2;
|
|
@@ -466,46 +505,57 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
466
505
|
endpointID: buf.readUInt8(5),
|
|
467
506
|
deviceID: buf.readUInt16LE(8),
|
|
468
507
|
inputClusters: inClusters,
|
|
469
|
-
outputClusters: outClusters
|
|
508
|
+
outputClusters: outClusters,
|
|
470
509
|
};
|
|
471
|
-
logger_1.logger.debug(
|
|
510
|
+
logger_1.logger.debug('RECEIVING SIMPLE_DESCRIPTOR - addr: 0x' +
|
|
511
|
+
networkAddress.toString(16) +
|
|
512
|
+
' EP:' +
|
|
513
|
+
simpleDesc.endpointID +
|
|
514
|
+
' inClusters: ' +
|
|
515
|
+
inClusters +
|
|
516
|
+
' outClusters: ' +
|
|
517
|
+
outClusters, NS);
|
|
472
518
|
return simpleDesc;
|
|
473
519
|
}
|
|
474
520
|
catch (error) {
|
|
475
|
-
const msg =
|
|
521
|
+
const msg = 'RECEIVING SIMPLE_DESCRIPTOR FAILED - addr: 0x' + networkAddress.toString(16) + ' ' + error;
|
|
476
522
|
logger_1.logger.debug(msg, NS);
|
|
477
523
|
return Promise.reject(new Error(msg));
|
|
478
524
|
}
|
|
479
525
|
}
|
|
480
526
|
async checkCoordinatorSimpleDescriptor(skip) {
|
|
481
|
-
logger_1.logger.debug(
|
|
527
|
+
logger_1.logger.debug('checking coordinator simple descriptor', NS);
|
|
482
528
|
var simpleDesc = null;
|
|
483
529
|
if (skip === false) {
|
|
484
530
|
try {
|
|
485
531
|
simpleDesc = await this.simpleDescriptor(0x0, 1);
|
|
486
532
|
}
|
|
487
|
-
catch (error) {
|
|
488
|
-
}
|
|
533
|
+
catch (error) { }
|
|
489
534
|
if (simpleDesc === null) {
|
|
490
535
|
this.checkCoordinatorSimpleDescriptor(false);
|
|
491
536
|
return;
|
|
492
537
|
}
|
|
493
|
-
logger_1.logger.debug(
|
|
494
|
-
logger_1.logger.debug(
|
|
495
|
-
logger_1.logger.debug(
|
|
538
|
+
logger_1.logger.debug('EP: ' + simpleDesc.endpointID, NS);
|
|
539
|
+
logger_1.logger.debug('profile ID: ' + simpleDesc.profileID, NS);
|
|
540
|
+
logger_1.logger.debug('device ID: ' + simpleDesc.deviceID, NS);
|
|
496
541
|
for (let i = 0; i < simpleDesc.inputClusters.length; i++) {
|
|
497
|
-
logger_1.logger.debug(
|
|
542
|
+
logger_1.logger.debug('input cluster: 0x' + simpleDesc.inputClusters[i].toString(16), NS);
|
|
498
543
|
}
|
|
499
544
|
for (let o = 0; o < simpleDesc.outputClusters.length; o++) {
|
|
500
|
-
logger_1.logger.debug(
|
|
545
|
+
logger_1.logger.debug('output cluster: 0x' + simpleDesc.outputClusters[o].toString(16), NS);
|
|
501
546
|
}
|
|
502
547
|
let ok = true;
|
|
503
548
|
if (simpleDesc.endpointID === 0x1) {
|
|
504
|
-
if (!simpleDesc.inputClusters.includes(0x0) ||
|
|
505
|
-
!simpleDesc.inputClusters.includes(
|
|
506
|
-
!simpleDesc.
|
|
549
|
+
if (!simpleDesc.inputClusters.includes(0x0) ||
|
|
550
|
+
!simpleDesc.inputClusters.includes(0x0a) ||
|
|
551
|
+
!simpleDesc.inputClusters.includes(0x06) ||
|
|
552
|
+
!simpleDesc.inputClusters.includes(0x19) ||
|
|
553
|
+
!simpleDesc.inputClusters.includes(0x0501) ||
|
|
554
|
+
!simpleDesc.outputClusters.includes(0x01) ||
|
|
555
|
+
!simpleDesc.outputClusters.includes(0x20) ||
|
|
556
|
+
!simpleDesc.outputClusters.includes(0x500) ||
|
|
507
557
|
!simpleDesc.outputClusters.includes(0x502)) {
|
|
508
|
-
logger_1.logger.debug(
|
|
558
|
+
logger_1.logger.debug('missing cluster', NS);
|
|
509
559
|
ok = false;
|
|
510
560
|
}
|
|
511
561
|
if (ok === true) {
|
|
@@ -513,22 +563,31 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
513
563
|
}
|
|
514
564
|
}
|
|
515
565
|
}
|
|
516
|
-
logger_1.logger.debug(
|
|
517
|
-
try {
|
|
518
|
-
|
|
566
|
+
logger_1.logger.debug('setting new simple descriptor', NS);
|
|
567
|
+
try {
|
|
568
|
+
//[ sd1 ep proId devId vers #inCl iCl1 iCl2 iCl3 iCl4 iCl5 #outC oCl1 oCl2 oCl3 oCl4 ]
|
|
569
|
+
const sd = [
|
|
570
|
+
0x00, 0x01, 0x04, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x00, 0x19, 0x00, 0x01, 0x05, 0x04, 0x01, 0x00, 0x20,
|
|
571
|
+
0x00, 0x00, 0x05, 0x02, 0x05,
|
|
572
|
+
];
|
|
519
573
|
const sd1 = sd.reverse();
|
|
520
574
|
await this.driver.writeParameterRequest(constants_1.default.PARAM.STK.Endpoint, sd1);
|
|
521
575
|
}
|
|
522
576
|
catch (error) {
|
|
523
|
-
logger_1.logger.debug(
|
|
577
|
+
logger_1.logger.debug('error setting simple descriptor - try again', NS);
|
|
524
578
|
this.checkCoordinatorSimpleDescriptor(true);
|
|
525
579
|
return;
|
|
526
580
|
}
|
|
527
|
-
logger_1.logger.debug(
|
|
581
|
+
logger_1.logger.debug('success setting simple descriptor', NS);
|
|
528
582
|
}
|
|
529
583
|
waitFor(networkAddress, endpoint, frameType, direction, transactionSequenceNumber, clusterID, commandIdentifier, timeout) {
|
|
530
584
|
const payload = {
|
|
531
|
-
address: networkAddress,
|
|
585
|
+
address: networkAddress,
|
|
586
|
+
endpoint,
|
|
587
|
+
clusterID,
|
|
588
|
+
commandIdentifier,
|
|
589
|
+
frameType,
|
|
590
|
+
direction,
|
|
532
591
|
transactionSequenceNumber,
|
|
533
592
|
};
|
|
534
593
|
const waiter = this.waitress.waitFor(payload, timeout);
|
|
@@ -554,16 +613,23 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
554
613
|
request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
|
|
555
614
|
request.timeout = timeout;
|
|
556
615
|
const command = zclFrame.command;
|
|
557
|
-
this.driver
|
|
558
|
-
.
|
|
616
|
+
this.driver
|
|
617
|
+
.enqueueSendDataRequest(request)
|
|
618
|
+
.then((result) => {
|
|
559
619
|
logger_1.logger.debug(`sendZclFrameToEndpoint - message send with transSeq Nr.: ${zclFrame.header.transactionSequenceNumber}`, NS);
|
|
560
|
-
logger_1.logger.debug(command.hasOwnProperty('response') +
|
|
620
|
+
logger_1.logger.debug(command.hasOwnProperty('response') +
|
|
621
|
+
', ' +
|
|
622
|
+
zclFrame.header.frameControl.disableDefaultResponse +
|
|
623
|
+
', ' +
|
|
624
|
+
disableResponse +
|
|
625
|
+
', ' +
|
|
626
|
+
request.timeout, NS);
|
|
561
627
|
if (!command.hasOwnProperty('response') || zclFrame.header.frameControl.disableDefaultResponse || !disableResponse) {
|
|
562
628
|
logger_1.logger.debug(`resolve request (${zclFrame.header.transactionSequenceNumber})`, NS);
|
|
563
629
|
return Promise.resolve();
|
|
564
630
|
}
|
|
565
631
|
})
|
|
566
|
-
.catch(error => {
|
|
632
|
+
.catch((error) => {
|
|
567
633
|
logger_1.logger.debug(`sendZclFrameToEndpoint ERROR (${zclFrame.header.transactionSequenceNumber})`, NS);
|
|
568
634
|
logger_1.logger.debug(error, NS);
|
|
569
635
|
//return Promise.reject(new Error("sendZclFrameToEndpoint ERROR " + error));
|
|
@@ -577,14 +643,14 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
577
643
|
const asdu = data.asduPayload;
|
|
578
644
|
const buffer = Buffer.from(asdu);
|
|
579
645
|
const response = {
|
|
580
|
-
address:
|
|
646
|
+
address: data.srcAddrMode === 0x02 ? data.srcAddr16 : null,
|
|
581
647
|
data: buffer,
|
|
582
648
|
clusterID: zclFrame.cluster.ID,
|
|
583
649
|
header: Zcl.Header.fromBuffer(buffer),
|
|
584
650
|
endpoint: data.srcEndpoint,
|
|
585
651
|
linkquality: data.lqi,
|
|
586
|
-
groupID:
|
|
587
|
-
wasBroadcast: data.srcAddrMode === 0x01 || data.srcAddrMode ===
|
|
652
|
+
groupID: data.srcAddrMode === 0x01 ? data.srcAddr16 : null,
|
|
653
|
+
wasBroadcast: data.srcAddrMode === 0x01 || data.srcAddrMode === 0xf,
|
|
588
654
|
destinationEndpoint: data.destEndpoint,
|
|
589
655
|
};
|
|
590
656
|
logger_1.logger.debug(`response received (${zclFrame.header.transactionSequenceNumber})`, NS);
|
|
@@ -603,7 +669,7 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
603
669
|
const transactionID = this.nextTransactionID();
|
|
604
670
|
const request = {};
|
|
605
671
|
let pay = zclFrame.toBuffer();
|
|
606
|
-
logger_1.logger.debug(
|
|
672
|
+
logger_1.logger.debug('zclFrame to group - zclFrame.payload:', NS);
|
|
607
673
|
logger_1.logger.debug(zclFrame.payload, NS);
|
|
608
674
|
//logger.info("zclFramte.toBuffer:", NS);
|
|
609
675
|
//logger.info(pay, NS);
|
|
@@ -630,7 +696,7 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
630
696
|
const transactionID = this.nextTransactionID();
|
|
631
697
|
const request = {};
|
|
632
698
|
let pay = zclFrame.toBuffer();
|
|
633
|
-
logger_1.logger.debug(
|
|
699
|
+
logger_1.logger.debug('zclFrame to all - zclFrame.payload:', NS);
|
|
634
700
|
logger_1.logger.debug(zclFrame.payload, NS);
|
|
635
701
|
request.requestId = transactionID;
|
|
636
702
|
request.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
|
|
@@ -656,7 +722,7 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
656
722
|
const transactionID = this.nextTransactionID();
|
|
657
723
|
const clid1 = clusterID & 0xff;
|
|
658
724
|
const clid2 = (clusterID >> 8) & 0xff;
|
|
659
|
-
const destAddrMode =
|
|
725
|
+
const destAddrMode = type === 'group' ? constants_1.default.PARAM.addressMode.GROUP_ADDR : constants_1.default.PARAM.addressMode.IEEE_ADDR;
|
|
660
726
|
let destArray;
|
|
661
727
|
if (type === 'endpoint') {
|
|
662
728
|
destArray = this.driver.macAddrStringToArray(destinationAddressOrGroup);
|
|
@@ -666,7 +732,10 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
666
732
|
destArray = [destinationAddressOrGroup, (destinationAddressOrGroup >> 8) & 0xff];
|
|
667
733
|
}
|
|
668
734
|
const request = {};
|
|
669
|
-
const zdpFrame = [transactionID]
|
|
735
|
+
const zdpFrame = [transactionID]
|
|
736
|
+
.concat(this.driver.macAddrStringToArray(sourceIeeeAddress))
|
|
737
|
+
.concat([sourceEndpoint, clid1, clid2, destAddrMode])
|
|
738
|
+
.concat(destArray);
|
|
670
739
|
request.requestId = transactionID;
|
|
671
740
|
request.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
|
|
672
741
|
request.destAddr16 = destinationNetworkAddress;
|
|
@@ -679,19 +748,20 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
679
748
|
request.txOptions = 0x04; // 0x04 use APS ACKS
|
|
680
749
|
request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
|
|
681
750
|
request.timeout = 30;
|
|
682
|
-
this.driver
|
|
683
|
-
.
|
|
684
|
-
.
|
|
751
|
+
this.driver
|
|
752
|
+
.enqueueSendDataRequest(request)
|
|
753
|
+
.then((result) => { })
|
|
754
|
+
.catch((error) => { });
|
|
685
755
|
try {
|
|
686
756
|
const d = await this.waitForData(destinationNetworkAddress, 0, 0x8021);
|
|
687
757
|
const data = d.asduPayload;
|
|
688
|
-
logger_1.logger.debug(
|
|
758
|
+
logger_1.logger.debug('BIND RESPONSE - addr: 0x' + destinationNetworkAddress.toString(16) + ' status: ' + data[1], NS);
|
|
689
759
|
if (data[1] !== 0) {
|
|
690
|
-
throw new Error(
|
|
760
|
+
throw new Error('status: ' + data[1]);
|
|
691
761
|
}
|
|
692
762
|
}
|
|
693
763
|
catch (error) {
|
|
694
|
-
logger_1.logger.debug(
|
|
764
|
+
logger_1.logger.debug('BIND FAILED - addr: 0x' + destinationNetworkAddress.toString(16) + ' ' + error, NS);
|
|
695
765
|
throw new Error(error);
|
|
696
766
|
}
|
|
697
767
|
}
|
|
@@ -699,7 +769,7 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
699
769
|
const transactionID = this.nextTransactionID();
|
|
700
770
|
const clid1 = clusterID & 0xff;
|
|
701
771
|
const clid2 = (clusterID >> 8) & 0xff;
|
|
702
|
-
const destAddrMode =
|
|
772
|
+
const destAddrMode = type === 'group' ? constants_1.default.PARAM.addressMode.GROUP_ADDR : constants_1.default.PARAM.addressMode.IEEE_ADDR;
|
|
703
773
|
let destArray;
|
|
704
774
|
if (type === 'endpoint') {
|
|
705
775
|
destArray = this.driver.macAddrStringToArray(destinationAddressOrGroup);
|
|
@@ -709,7 +779,10 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
709
779
|
destArray = [destinationAddressOrGroup, (destinationAddressOrGroup >> 8) & 0xff];
|
|
710
780
|
}
|
|
711
781
|
const request = {};
|
|
712
|
-
const zdpFrame = [transactionID]
|
|
782
|
+
const zdpFrame = [transactionID]
|
|
783
|
+
.concat(this.driver.macAddrStringToArray(sourceIeeeAddress))
|
|
784
|
+
.concat([sourceEndpoint, clid1, clid2, destAddrMode])
|
|
785
|
+
.concat(destArray);
|
|
713
786
|
request.requestId = transactionID;
|
|
714
787
|
request.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
|
|
715
788
|
request.destAddr16 = destinationNetworkAddress;
|
|
@@ -722,19 +795,20 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
722
795
|
request.txOptions = 0x04; // 0x04 use APS ACKS
|
|
723
796
|
request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
|
|
724
797
|
request.timeout = 30;
|
|
725
|
-
this.driver
|
|
726
|
-
.
|
|
727
|
-
.
|
|
798
|
+
this.driver
|
|
799
|
+
.enqueueSendDataRequest(request)
|
|
800
|
+
.then((result) => { })
|
|
801
|
+
.catch((error) => { });
|
|
728
802
|
try {
|
|
729
803
|
const d = await this.waitForData(destinationNetworkAddress, 0, 0x8022);
|
|
730
804
|
const data = d.asduPayload;
|
|
731
|
-
logger_1.logger.debug(
|
|
805
|
+
logger_1.logger.debug('UNBIND RESPONSE - addr: 0x' + destinationNetworkAddress.toString(16) + ' status: ' + data[1], NS);
|
|
732
806
|
if (data[1] !== 0) {
|
|
733
|
-
throw new Error(
|
|
807
|
+
throw new Error('status: ' + data[1]);
|
|
734
808
|
}
|
|
735
809
|
}
|
|
736
810
|
catch (error) {
|
|
737
|
-
logger_1.logger.debug(
|
|
811
|
+
logger_1.logger.debug('UNBIND FAILED - addr: 0x' + destinationNetworkAddress.toString(16) + ' ' + error, NS);
|
|
738
812
|
throw new Error(error);
|
|
739
813
|
}
|
|
740
814
|
}
|
|
@@ -756,24 +830,25 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
756
830
|
request.asduPayload = zdpFrame;
|
|
757
831
|
request.txOptions = 0;
|
|
758
832
|
request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
|
|
759
|
-
this.driver
|
|
760
|
-
.
|
|
761
|
-
.
|
|
833
|
+
this.driver
|
|
834
|
+
.enqueueSendDataRequest(request)
|
|
835
|
+
.then((result) => { })
|
|
836
|
+
.catch((error) => { });
|
|
762
837
|
try {
|
|
763
838
|
const d = await this.waitForData(networkAddress, 0, 0x8034);
|
|
764
839
|
const data = d.asduPayload;
|
|
765
|
-
logger_1.logger.debug(
|
|
840
|
+
logger_1.logger.debug('REMOVE_DEVICE - addr: 0x' + networkAddress.toString(16) + ' status: ' + data[1], NS);
|
|
766
841
|
const payload = {
|
|
767
842
|
networkAddress: networkAddress,
|
|
768
843
|
ieeeAddr: ieeeAddr,
|
|
769
844
|
};
|
|
770
845
|
if (data[1] !== 0) {
|
|
771
|
-
throw new Error(
|
|
846
|
+
throw new Error('status: ' + data[1]);
|
|
772
847
|
}
|
|
773
848
|
this.emit(Events.Events.deviceLeave, payload);
|
|
774
849
|
}
|
|
775
850
|
catch (error) {
|
|
776
|
-
logger_1.logger.debug(
|
|
851
|
+
logger_1.logger.debug('REMOVE_DEVICE FAILED - addr: 0x' + networkAddress.toString(16) + ' ' + error, NS);
|
|
777
852
|
throw new Error(error);
|
|
778
853
|
}
|
|
779
854
|
}
|
|
@@ -781,7 +856,7 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
781
856
|
return false;
|
|
782
857
|
}
|
|
783
858
|
async backup() {
|
|
784
|
-
throw new Error(
|
|
859
|
+
throw new Error('This adapter does not support backup');
|
|
785
860
|
}
|
|
786
861
|
async getNetworkParameters() {
|
|
787
862
|
try {
|
|
@@ -792,7 +867,11 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
792
867
|
let networkKey = await this.driver.readParameterRequest(constants_1.default.PARAM.Network.NETWORK_KEY);
|
|
793
868
|
// check current channel against configuration.yaml
|
|
794
869
|
if (this.networkOptions.channelList[0] !== channel) {
|
|
795
|
-
logger_1.logger.debug(
|
|
870
|
+
logger_1.logger.debug('Channel in configuration.yaml (' +
|
|
871
|
+
this.networkOptions.channelList[0] +
|
|
872
|
+
') differs from current channel (' +
|
|
873
|
+
channel +
|
|
874
|
+
'). Changing channel.', NS);
|
|
796
875
|
let setChannelMask = 0;
|
|
797
876
|
switch (this.networkOptions.channelList[0]) {
|
|
798
877
|
case 11:
|
|
@@ -852,43 +931,47 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
852
931
|
changed = true;
|
|
853
932
|
}
|
|
854
933
|
catch (error) {
|
|
855
|
-
logger_1.logger.debug(
|
|
934
|
+
logger_1.logger.debug('Could not set channel: ' + error, NS);
|
|
856
935
|
}
|
|
857
936
|
}
|
|
858
937
|
// check current panid against configuration.yaml
|
|
859
938
|
if (this.networkOptions.panID !== panid) {
|
|
860
|
-
logger_1.logger.debug(
|
|
939
|
+
logger_1.logger.debug('panid in configuration.yaml (' + this.networkOptions.panID + ') differs from current panid (' + panid + '). Changing panid.', NS);
|
|
861
940
|
try {
|
|
862
941
|
await this.driver.writeParameterRequest(constants_1.default.PARAM.Network.PAN_ID, this.networkOptions.panID);
|
|
863
942
|
await this.sleep(500);
|
|
864
943
|
changed = true;
|
|
865
944
|
}
|
|
866
945
|
catch (error) {
|
|
867
|
-
logger_1.logger.debug(
|
|
946
|
+
logger_1.logger.debug('Could not set panid: ' + error, NS);
|
|
868
947
|
}
|
|
869
948
|
}
|
|
870
949
|
// check current extended_panid against configuration.yaml
|
|
871
950
|
if (this.driver.generalArrayToString(this.networkOptions.extendedPanID, 8) !== expanid) {
|
|
872
|
-
logger_1.logger.debug(
|
|
951
|
+
logger_1.logger.debug('extended panid in configuration.yaml (' +
|
|
952
|
+
this.driver.macAddrArrayToString(this.networkOptions.extendedPanID) +
|
|
953
|
+
') differs from current extended panid (' +
|
|
954
|
+
expanid +
|
|
955
|
+
'). Changing extended panid.', NS);
|
|
873
956
|
try {
|
|
874
957
|
await this.driver.writeParameterRequest(constants_1.default.PARAM.Network.APS_EXT_PAN_ID, this.networkOptions.extendedPanID);
|
|
875
958
|
await this.sleep(500);
|
|
876
959
|
changed = true;
|
|
877
960
|
}
|
|
878
961
|
catch (error) {
|
|
879
|
-
logger_1.logger.debug(
|
|
962
|
+
logger_1.logger.debug('Could not set extended panid: ' + error, NS);
|
|
880
963
|
}
|
|
881
964
|
}
|
|
882
965
|
// check current network key against configuration.yaml
|
|
883
966
|
if (this.driver.generalArrayToString(this.networkOptions.networkKey, 16) !== networkKey) {
|
|
884
|
-
logger_1.logger.debug(
|
|
967
|
+
logger_1.logger.debug('network key in configuration.yaml (hidden) differs from current network key (' + networkKey + '). Changing network key.', NS);
|
|
885
968
|
try {
|
|
886
969
|
await this.driver.writeParameterRequest(constants_1.default.PARAM.Network.NETWORK_KEY, this.networkOptions.networkKey);
|
|
887
970
|
await this.sleep(500);
|
|
888
971
|
changed = true;
|
|
889
972
|
}
|
|
890
973
|
catch (error) {
|
|
891
|
-
logger_1.logger.debug(
|
|
974
|
+
logger_1.logger.debug('Could not set network key: ' + error, NS);
|
|
892
975
|
}
|
|
893
976
|
}
|
|
894
977
|
if (changed) {
|
|
@@ -904,47 +987,47 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
904
987
|
return {
|
|
905
988
|
panID: panid,
|
|
906
989
|
extendedPanID: expanid,
|
|
907
|
-
channel: channel
|
|
990
|
+
channel: channel,
|
|
908
991
|
};
|
|
909
992
|
}
|
|
910
993
|
catch (error) {
|
|
911
|
-
const msg =
|
|
994
|
+
const msg = 'get network parameters Error:' + error;
|
|
912
995
|
logger_1.logger.debug(msg, NS);
|
|
913
996
|
return Promise.reject(new Error(msg));
|
|
914
997
|
}
|
|
915
998
|
}
|
|
916
999
|
async restoreChannelInterPAN() {
|
|
917
|
-
throw new Error(
|
|
1000
|
+
throw new Error('not supported');
|
|
918
1001
|
}
|
|
919
1002
|
async sendZclFrameInterPANToIeeeAddr(zclFrame, ieeeAddr) {
|
|
920
|
-
throw new Error(
|
|
1003
|
+
throw new Error('not supported');
|
|
921
1004
|
}
|
|
922
1005
|
async sendZclFrameInterPANBroadcast(zclFrame, timeout) {
|
|
923
|
-
throw new Error(
|
|
1006
|
+
throw new Error('not supported');
|
|
924
1007
|
}
|
|
925
1008
|
async sendZclFrameInterPANBroadcastWithResponse(zclFrame, timeout) {
|
|
926
|
-
throw new Error(
|
|
1009
|
+
throw new Error('not supported');
|
|
927
1010
|
}
|
|
928
1011
|
async setChannelInterPAN(channel) {
|
|
929
|
-
throw new Error(
|
|
1012
|
+
throw new Error('not supported');
|
|
930
1013
|
}
|
|
931
1014
|
async supportsChangeChannel() {
|
|
932
1015
|
return false;
|
|
933
1016
|
}
|
|
934
1017
|
async changeChannel(newChannel) {
|
|
935
|
-
throw new Error(
|
|
1018
|
+
throw new Error('not supported');
|
|
936
1019
|
}
|
|
937
1020
|
async setTransmitPower(value) {
|
|
938
|
-
throw new Error(
|
|
1021
|
+
throw new Error('not supported');
|
|
939
1022
|
}
|
|
940
1023
|
async sendZclFrameInterPANIeeeAddr(zclFrame, ieeeAddr) {
|
|
941
|
-
throw new Error(
|
|
1024
|
+
throw new Error('not supported');
|
|
942
1025
|
}
|
|
943
1026
|
/**
|
|
944
1027
|
* Private methods
|
|
945
1028
|
*/
|
|
946
1029
|
sleep(ms) {
|
|
947
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
1030
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
948
1031
|
}
|
|
949
1032
|
waitForData(addr, profileId, clusterId, transactionSequenceNumber, timeout) {
|
|
950
1033
|
return new Promise((resolve, reject) => {
|
|
@@ -956,12 +1039,24 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
956
1039
|
}
|
|
957
1040
|
checkReceivedGreenPowerIndication(ind) {
|
|
958
1041
|
ind.clusterId = 0x21;
|
|
959
|
-
let gpFrame = [
|
|
960
|
-
|
|
1042
|
+
let gpFrame = [
|
|
1043
|
+
ind.rspId,
|
|
1044
|
+
ind.seqNr,
|
|
1045
|
+
ind.id,
|
|
1046
|
+
0,
|
|
1047
|
+
0, // 0, 0 for options is a temp fix until https://github.com/Koenkk/zigbee-herdsman/pull/536 is merged.
|
|
961
1048
|
// ind.options & 0xff, (ind.options >> 8) & 0xff,
|
|
962
|
-
ind.srcId & 0xff,
|
|
963
|
-
|
|
964
|
-
ind.
|
|
1049
|
+
ind.srcId & 0xff,
|
|
1050
|
+
(ind.srcId >> 8) & 0xff,
|
|
1051
|
+
(ind.srcId >> 16) & 0xff,
|
|
1052
|
+
(ind.srcId >> 24) & 0xff,
|
|
1053
|
+
ind.frameCounter & 0xff,
|
|
1054
|
+
(ind.frameCounter >> 8) & 0xff,
|
|
1055
|
+
(ind.frameCounter >> 16) & 0xff,
|
|
1056
|
+
(ind.frameCounter >> 24) & 0xff,
|
|
1057
|
+
ind.commandId,
|
|
1058
|
+
ind.commandFrameSize,
|
|
1059
|
+
].concat(ind.commandFrame);
|
|
965
1060
|
const payBuf = Buffer.from(gpFrame);
|
|
966
1061
|
const payload = {
|
|
967
1062
|
header: Zcl.Header.fromBuffer(payBuf),
|
|
@@ -982,7 +1077,7 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
982
1077
|
let header = null;
|
|
983
1078
|
const payBuf = resp != null ? Buffer.from(resp.asduPayload) : null;
|
|
984
1079
|
if (resp != null) {
|
|
985
|
-
srcAddr =
|
|
1080
|
+
srcAddr = resp.srcAddr16 != null ? resp.srcAddr16 : resp.srcAddr64;
|
|
986
1081
|
if (resp.profileId != 0x00) {
|
|
987
1082
|
header = Zcl.Header.fromBuffer(payBuf);
|
|
988
1083
|
}
|
|
@@ -990,17 +1085,16 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
990
1085
|
let i = this.openRequestsQueue.length;
|
|
991
1086
|
while (i--) {
|
|
992
1087
|
const req = this.openRequestsQueue[i];
|
|
993
|
-
if (srcAddr != null && req.addr === srcAddr && req.clusterId === resp.clusterId &&
|
|
994
|
-
req.profileId === resp.profileId) {
|
|
1088
|
+
if (srcAddr != null && req.addr === srcAddr && req.clusterId === resp.clusterId && req.profileId === resp.profileId) {
|
|
995
1089
|
if (header !== null && req.transactionSequenceNumber !== null && req.transactionSequenceNumber !== undefined) {
|
|
996
1090
|
if (req.transactionSequenceNumber === header.transactionSequenceNumber) {
|
|
997
|
-
logger_1.logger.debug(
|
|
1091
|
+
logger_1.logger.debug('resolve data request with transSeq Nr.: ' + req.transactionSequenceNumber, NS);
|
|
998
1092
|
this.openRequestsQueue.splice(i, 1);
|
|
999
1093
|
req.resolve(resp);
|
|
1000
1094
|
}
|
|
1001
1095
|
}
|
|
1002
1096
|
else {
|
|
1003
|
-
logger_1.logger.debug(
|
|
1097
|
+
logger_1.logger.debug('resolve data request without a transSeq Nr.', NS);
|
|
1004
1098
|
this.openRequestsQueue.splice(i, 1);
|
|
1005
1099
|
req.resolve(resp);
|
|
1006
1100
|
}
|
|
@@ -1008,11 +1102,11 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
1008
1102
|
const now = Date.now();
|
|
1009
1103
|
// Default timeout: 60 seconds.
|
|
1010
1104
|
// Comparison is negated to prevent orphans when invalid timeout is entered (resulting in NaN).
|
|
1011
|
-
if (!(
|
|
1105
|
+
if (!(now - req.ts <= (req.timeout ?? 60000))) {
|
|
1012
1106
|
//logger.debug("Timeout for request in openRequestsQueue addr: " + req.addr.toString(16) + " clusterId: " + req.clusterId.toString(16) + " profileId: " + req.profileId.toString(16), NS);
|
|
1013
1107
|
//remove from busyQueue
|
|
1014
1108
|
this.openRequestsQueue.splice(i, 1);
|
|
1015
|
-
req.reject(
|
|
1109
|
+
req.reject('waiting for response TIMEOUT');
|
|
1016
1110
|
}
|
|
1017
1111
|
}
|
|
1018
1112
|
// check unattended incomming messages
|
|
@@ -1034,11 +1128,11 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
1034
1128
|
clusterID: resp.clusterId,
|
|
1035
1129
|
header,
|
|
1036
1130
|
data: payBuf,
|
|
1037
|
-
address:
|
|
1131
|
+
address: resp.destAddrMode === 0x03 ? resp.srcAddr64 : resp.srcAddr16,
|
|
1038
1132
|
endpoint: resp.srcEndpoint,
|
|
1039
1133
|
linkquality: resp.lqi,
|
|
1040
|
-
groupID:
|
|
1041
|
-
wasBroadcast: resp.destAddrMode === 0x01 || resp.destAddrMode ===
|
|
1134
|
+
groupID: resp.destAddrMode === 0x01 ? resp.destAddr16 : null,
|
|
1135
|
+
wasBroadcast: resp.destAddrMode === 0x01 || resp.destAddrMode === 0xf,
|
|
1042
1136
|
destinationEndpoint: resp.destEndpoint,
|
|
1043
1137
|
};
|
|
1044
1138
|
this.waitress.resolve(payload);
|
|
@@ -1053,19 +1147,19 @@ class DeconzAdapter extends adapter_1.default {
|
|
|
1053
1147
|
return this.transactionID;
|
|
1054
1148
|
}
|
|
1055
1149
|
waitressTimeoutFormatter(matcher, timeout) {
|
|
1056
|
-
return `Timeout - ${matcher.address} - ${matcher.endpoint}` +
|
|
1150
|
+
return (`Timeout - ${matcher.address} - ${matcher.endpoint}` +
|
|
1057
1151
|
` - ${matcher.transactionSequenceNumber} - ${matcher.clusterID}` +
|
|
1058
|
-
` - ${matcher.commandIdentifier} after ${timeout}ms
|
|
1152
|
+
` - ${matcher.commandIdentifier} after ${timeout}ms`);
|
|
1059
1153
|
}
|
|
1060
1154
|
waitressValidator(payload, matcher) {
|
|
1061
|
-
return payload.header &&
|
|
1155
|
+
return (payload.header &&
|
|
1062
1156
|
(!matcher.address || payload.address === matcher.address) &&
|
|
1063
1157
|
payload.endpoint === matcher.endpoint &&
|
|
1064
1158
|
(!matcher.transactionSequenceNumber || payload.header.transactionSequenceNumber === matcher.transactionSequenceNumber) &&
|
|
1065
1159
|
payload.clusterID === matcher.clusterID &&
|
|
1066
1160
|
matcher.frameType === payload.header.frameControl.frameType &&
|
|
1067
1161
|
matcher.commandIdentifier === payload.header.commandIdentifier &&
|
|
1068
|
-
matcher.direction === payload.header.frameControl.direction;
|
|
1162
|
+
matcher.direction === payload.header.frameControl.direction);
|
|
1069
1163
|
}
|
|
1070
1164
|
}
|
|
1071
1165
|
exports.default = DeconzAdapter;
|