zigbee-herdsman 3.5.2 → 4.0.2
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/dependabot.yml +4 -0
- package/.github/workflows/ci.yml +3 -5
- package/.github/workflows/stale.yml +1 -1
- package/.github/workflows/typedoc.yaml +1 -1
- package/.release-please-manifest.json +1 -1
- package/.vscode/extensions.json +3 -0
- package/.vscode/settings.json +11 -0
- package/CHANGELOG.md +32 -0
- package/biome.json +89 -0
- package/dist/adapter/adapter.d.ts +11 -11
- package/dist/adapter/adapter.d.ts.map +1 -1
- package/dist/adapter/adapter.js +14 -14
- package/dist/adapter/adapterDiscovery.d.ts +6 -6
- package/dist/adapter/adapterDiscovery.d.ts.map +1 -1
- package/dist/adapter/adapterDiscovery.js +139 -141
- package/dist/adapter/adapterDiscovery.js.map +1 -1
- package/dist/adapter/const.d.ts +1 -1
- package/dist/adapter/const.js +2 -2
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +16 -16
- package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
- package/dist/adapter/deconz/adapter/deconzAdapter.js +95 -100
- package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
- package/dist/adapter/deconz/driver/constants.d.ts +5 -5
- package/dist/adapter/deconz/driver/constants.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/driver.d.ts +9 -9
- package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/driver.js +112 -106
- package/dist/adapter/deconz/driver/driver.js.map +1 -1
- package/dist/adapter/deconz/driver/frame.d.ts +1 -1
- package/dist/adapter/deconz/driver/frame.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/frame.js +1 -2
- package/dist/adapter/deconz/driver/frame.js.map +1 -1
- package/dist/adapter/deconz/driver/frameParser.d.ts +1 -1
- package/dist/adapter/deconz/driver/frameParser.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/frameParser.js +66 -70
- package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
- package/dist/adapter/deconz/driver/parser.d.ts +1 -1
- package/dist/adapter/deconz/driver/parser.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/parser.js +2 -2
- package/dist/adapter/deconz/driver/parser.js.map +1 -1
- package/dist/adapter/deconz/driver/writer.d.ts +2 -2
- package/dist/adapter/deconz/driver/writer.d.ts.map +1 -1
- package/dist/adapter/deconz/driver/writer.js +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.d.ts +19 -19
- package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/emberAdapter.js +117 -97
- package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
- package/dist/adapter/ember/adapter/endpoints.d.ts +1 -1
- package/dist/adapter/ember/adapter/endpoints.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.d.ts +5 -5
- package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
- package/dist/adapter/ember/adapter/oneWaitress.js +2 -2
- 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 +20 -23
- package/dist/adapter/ember/adapter/tokensManager.js.map +1 -1
- package/dist/adapter/ember/enums.d.ts +4 -4
- package/dist/adapter/ember/enums.d.ts.map +1 -1
- package/dist/adapter/ember/enums.js +4 -6
- 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 +30 -32
- package/dist/adapter/ember/ezsp/buffalo.js.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.d.ts +46 -46
- package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
- package/dist/adapter/ember/ezsp/ezsp.js +85 -111
- package/dist/adapter/ember/ezsp/ezsp.js.map +1 -1
- package/dist/adapter/ember/ezspError.d.ts +1 -1
- package/dist/adapter/ember/types.d.ts +14 -14
- 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 +80 -71
- package/dist/adapter/ember/uart/ash.js.map +1 -1
- package/dist/adapter/ember/uart/parser.d.ts +2 -2
- package/dist/adapter/ember/uart/parser.d.ts.map +1 -1
- package/dist/adapter/ember/uart/parser.js +2 -1
- package/dist/adapter/ember/uart/parser.js.map +1 -1
- package/dist/adapter/ember/uart/queues.js +27 -29
- 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 +3 -5
- 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 -1
- package/dist/adapter/ember/utils/math.js +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 +3 -3
- package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/backup.js +8 -10
- package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +12 -12
- package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
- package/dist/adapter/ezsp/adapter/ezspAdapter.js +45 -44
- package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
- package/dist/adapter/ezsp/driver/driver.d.ts +12 -12
- package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/driver.js +148 -141
- package/dist/adapter/ezsp/driver/driver.js.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.d.ts +7 -7
- package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/ezsp.js +61 -59
- package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
- package/dist/adapter/ezsp/driver/frame.js +2 -2
- package/dist/adapter/ezsp/driver/index.d.ts +2 -2
- package/dist/adapter/ezsp/driver/multicast.d.ts +8 -5
- package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/multicast.js +9 -9
- package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
- package/dist/adapter/ezsp/driver/parser.d.ts +1 -1
- package/dist/adapter/ezsp/driver/parser.js +3 -3
- package/dist/adapter/ezsp/driver/types/basic.d.ts +5 -5
- package/dist/adapter/ezsp/driver/types/basic.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/basic.js +12 -33
- package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/index.d.ts +3 -3
- package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/index.js +8 -9
- package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/named.d.ts +2 -2
- package/dist/adapter/ezsp/driver/types/named.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/named.js +8 -11
- package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.d.ts +2 -2
- package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/types/struct.js +207 -214
- package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
- package/dist/adapter/ezsp/driver/uart.d.ts +2 -2
- package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/uart.js +48 -37
- package/dist/adapter/ezsp/driver/uart.js.map +1 -1
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +3 -3
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +16 -34
- package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +1 -1
- package/dist/adapter/ezsp/driver/utils/index.d.ts +4 -4
- package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -1
- package/dist/adapter/ezsp/driver/utils/index.js +4 -4
- package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
- package/dist/adapter/ezsp/driver/writer.d.ts +1 -1
- package/dist/adapter/ezsp/driver/writer.js +2 -2
- package/dist/adapter/index.d.ts +3 -3
- package/dist/adapter/serialPort.d.ts +3 -3
- package/dist/adapter/serialPort.d.ts.map +1 -1
- package/dist/adapter/serialPort.js +1 -0
- package/dist/adapter/serialPort.js.map +1 -1
- package/dist/adapter/socketPortUtils.js +3 -3
- package/dist/adapter/tstype.d.ts +6 -6
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +4 -4
- package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/adapter-backup.js +106 -119
- 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 +23 -24
- package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.d.ts +6 -6
- package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/manager.js +116 -127
- package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
- package/dist/adapter/z-stack/adapter/tstype.d.ts +3 -3
- package/dist/adapter/z-stack/adapter/tstype.js +3 -3
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +10 -10
- package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
- package/dist/adapter/z-stack/adapter/zStackAdapter.js +125 -137
- package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
- package/dist/adapter/z-stack/constants/common.d.ts.map +1 -1
- package/dist/adapter/z-stack/constants/common.js +0 -3
- package/dist/adapter/z-stack/constants/common.js.map +1 -1
- package/dist/adapter/z-stack/constants/index.d.ts +10 -10
- 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/utils.d.ts +1 -1
- package/dist/adapter/z-stack/constants/utils.js +2 -2
- package/dist/adapter/z-stack/constants/utils.js.map +1 -1
- package/dist/adapter/z-stack/models/startup-options.d.ts +2 -2
- package/dist/adapter/z-stack/models/startup-options.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +1 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +4 -5
- 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 +3 -4
- 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 -2
- 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 -4
- 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.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +6 -7
- package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js.map +1 -1
- 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 -4
- 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 -2
- 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 -3
- 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 +49 -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 -2
- 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 -2
- 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 -2
- 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 -4
- 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 -4
- 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.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +4 -5
- package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +1 -1
- 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 -4
- 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 +2 -2
- package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/struct.d.ts +8 -8
- package/dist/adapter/z-stack/structs/struct.d.ts.map +1 -1
- package/dist/adapter/z-stack/structs/struct.js +42 -43
- 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 +10 -10
- package/dist/adapter/z-stack/structs/table.js.map +1 -1
- package/dist/adapter/z-stack/unpi/frame.d.ts +1 -1
- package/dist/adapter/z-stack/unpi/frame.d.ts.map +1 -1
- package/dist/adapter/z-stack/unpi/frame.js +2 -4
- 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/parser.d.ts +1 -1
- package/dist/adapter/z-stack/unpi/parser.js +3 -3
- package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
- package/dist/adapter/z-stack/unpi/writer.d.ts +2 -2
- package/dist/adapter/z-stack/unpi/writer.d.ts.map +1 -1
- package/dist/adapter/z-stack/unpi/writer.js +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/znp/buffaloZnp.d.ts +3 -3
- package/dist/adapter/z-stack/znp/buffaloZnp.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/buffaloZnp.js +34 -20
- package/dist/adapter/z-stack/znp/buffaloZnp.js.map +1 -1
- package/dist/adapter/z-stack/znp/definition.d.ts +2 -2
- package/dist/adapter/z-stack/znp/definition.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/definition.js +1111 -1111
- package/dist/adapter/z-stack/znp/index.d.ts +2 -2
- package/dist/adapter/z-stack/znp/tstype.d.ts +7 -7
- package/dist/adapter/z-stack/znp/tstype.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/utils.d.ts +1 -1
- package/dist/adapter/z-stack/znp/utils.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/utils.js +2 -2
- package/dist/adapter/z-stack/znp/znp.d.ts +7 -7
- package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/znp.js +46 -45
- package/dist/adapter/z-stack/znp/znp.js.map +1 -1
- package/dist/adapter/z-stack/znp/zpiObject.d.ts +8 -8
- package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +1 -1
- package/dist/adapter/z-stack/znp/zpiObject.js +6 -6
- package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
- package/dist/adapter/zboss/adapter/zbossAdapter.d.ts +11 -11
- package/dist/adapter/zboss/adapter/zbossAdapter.d.ts.map +1 -1
- package/dist/adapter/zboss/adapter/zbossAdapter.js +37 -36
- package/dist/adapter/zboss/adapter/zbossAdapter.js.map +1 -1
- package/dist/adapter/zboss/commands.d.ts +4 -6
- package/dist/adapter/zboss/commands.d.ts.map +1 -1
- package/dist/adapter/zboss/commands.js +321 -287
- package/dist/adapter/zboss/commands.js.map +1 -1
- package/dist/adapter/zboss/driver.d.ts +9 -9
- package/dist/adapter/zboss/driver.d.ts.map +1 -1
- package/dist/adapter/zboss/driver.js +25 -25
- package/dist/adapter/zboss/driver.js.map +1 -1
- package/dist/adapter/zboss/frame.d.ts +9 -9
- package/dist/adapter/zboss/frame.d.ts.map +1 -1
- package/dist/adapter/zboss/frame.js +15 -15
- package/dist/adapter/zboss/frame.js.map +1 -1
- package/dist/adapter/zboss/reader.d.ts +2 -2
- package/dist/adapter/zboss/reader.d.ts.map +1 -1
- package/dist/adapter/zboss/reader.js +6 -5
- package/dist/adapter/zboss/reader.js.map +1 -1
- package/dist/adapter/zboss/uart.d.ts +3 -3
- package/dist/adapter/zboss/uart.d.ts.map +1 -1
- package/dist/adapter/zboss/uart.js +36 -36
- package/dist/adapter/zboss/uart.js.map +1 -1
- package/dist/adapter/zboss/writer.d.ts +1 -1
- package/dist/adapter/zboss/writer.d.ts.map +1 -1
- package/dist/adapter/zboss/writer.js +3 -5
- package/dist/adapter/zboss/writer.js.map +1 -1
- package/dist/adapter/zigate/adapter/patchZdoBuffaloBE.js +2 -2
- package/dist/adapter/zigate/adapter/patchZdoBuffaloBE.js.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +14 -14
- package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
- package/dist/adapter/zigate/adapter/zigateAdapter.js +52 -53
- package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +6 -6
- package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/buffaloZiGate.js +41 -23
- 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 +37 -37
- package/dist/adapter/zigate/driver/commandType.js.map +1 -1
- package/dist/adapter/zigate/driver/constants.d.ts +27 -200
- package/dist/adapter/zigate/driver/constants.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/constants.js +40 -236
- 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 +4 -3
- 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.js +76 -76
- package/dist/adapter/zigate/driver/ziGateObject.d.ts +3 -3
- package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/ziGateObject.js +7 -6
- package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
- package/dist/adapter/zigate/driver/zigate.d.ts +8 -8
- package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
- package/dist/adapter/zigate/driver/zigate.js +59 -54
- package/dist/adapter/zigate/driver/zigate.js.map +1 -1
- package/dist/adapter/zoh/adapter/utils.js +1 -1
- package/dist/adapter/zoh/adapter/zohAdapter.d.ts +13 -13
- package/dist/adapter/zoh/adapter/zohAdapter.d.ts.map +1 -1
- package/dist/adapter/zoh/adapter/zohAdapter.js +101 -67
- package/dist/adapter/zoh/adapter/zohAdapter.js.map +1 -1
- package/dist/buffalo/buffalo.d.ts +2 -2
- package/dist/buffalo/buffalo.js +4 -4
- package/dist/buffalo/buffalo.js.map +1 -1
- package/dist/buffalo/index.d.ts +1 -1
- package/dist/controller/controller.d.ts +7 -7
- package/dist/controller/controller.d.ts.map +1 -1
- package/dist/controller/controller.js +94 -98
- package/dist/controller/controller.js.map +1 -1
- package/dist/controller/database.d.ts +1 -1
- package/dist/controller/database.d.ts.map +1 -1
- package/dist/controller/database.js +9 -9
- package/dist/controller/database.js.map +1 -1
- package/dist/controller/events.d.ts +6 -6
- package/dist/controller/events.d.ts.map +1 -1
- package/dist/controller/greenPower.d.ts +21 -21
- package/dist/controller/greenPower.d.ts.map +1 -1
- package/dist/controller/greenPower.js +41 -41
- package/dist/controller/greenPower.js.map +1 -1
- package/dist/controller/helpers/index.d.ts +1 -1
- package/dist/controller/helpers/request.d.ts +2 -2
- package/dist/controller/helpers/request.d.ts.map +1 -1
- package/dist/controller/helpers/request.js +31 -27
- package/dist/controller/helpers/request.js.map +1 -1
- package/dist/controller/helpers/requestQueue.d.ts +3 -3
- package/dist/controller/helpers/requestQueue.d.ts.map +1 -1
- package/dist/controller/helpers/requestQueue.js +20 -20
- package/dist/controller/helpers/requestQueue.js.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.d.ts +2 -2
- package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
- package/dist/controller/helpers/zclFrameConverter.js +1 -1
- package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
- package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +6 -4
- package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts.map +1 -1
- package/dist/controller/helpers/zclTransactionSequenceNumber.js +6 -5
- package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +1 -1
- package/dist/controller/index.d.ts +1 -1
- package/dist/controller/model/device.d.ts +23 -19
- package/dist/controller/model/device.d.ts.map +1 -1
- package/dist/controller/model/device.js +153 -128
- package/dist/controller/model/device.js.map +1 -1
- package/dist/controller/model/endpoint.d.ts +11 -11
- package/dist/controller/model/endpoint.d.ts.map +1 -1
- package/dist/controller/model/endpoint.js +84 -67
- package/dist/controller/model/endpoint.js.map +1 -1
- package/dist/controller/model/entity.d.ts +3 -3
- package/dist/controller/model/entity.d.ts.map +1 -1
- package/dist/controller/model/group.d.ts +4 -4
- package/dist/controller/model/group.d.ts.map +1 -1
- package/dist/controller/model/group.js +21 -9
- package/dist/controller/model/group.js.map +1 -1
- package/dist/controller/model/index.d.ts +4 -4
- package/dist/controller/touchlink.d.ts +1 -1
- package/dist/controller/touchlink.d.ts.map +1 -1
- package/dist/controller/touchlink.js +11 -11
- package/dist/controller/tstype.d.ts +3 -3
- package/dist/index.d.ts +10 -10
- package/dist/models/backup-storage-legacy.d.ts +14 -16
- 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/backup.d.ts.map +1 -1
- 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 +26 -26
- package/dist/utils/backup.js.map +1 -1
- package/dist/utils/index.d.ts +5 -5
- package/dist/utils/logger.js +3 -3
- package/dist/utils/patchBigIntSerialization.js +1 -1
- package/dist/utils/patchBigIntSerialization.js.map +1 -1
- package/dist/utils/queue.d.ts.map +1 -1
- package/dist/utils/queue.js +1 -0
- package/dist/utils/queue.js.map +1 -1
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +5 -4
- package/dist/utils/utils.js.map +1 -1
- package/dist/utils/waitress.d.ts +1 -1
- package/dist/utils/waitress.js +3 -3
- package/dist/zspec/consts.d.ts +1 -1
- package/dist/zspec/consts.d.ts.map +1 -1
- package/dist/zspec/consts.js +1 -1
- package/dist/zspec/index.d.ts +3 -3
- package/dist/zspec/tstypes.d.ts +1 -1
- package/dist/zspec/utils.d.ts +4 -4
- package/dist/zspec/utils.d.ts.map +1 -1
- package/dist/zspec/utils.js +9 -13
- package/dist/zspec/utils.js.map +1 -1
- package/dist/zspec/zcl/buffaloZcl.d.ts +3 -3
- package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -1
- package/dist/zspec/zcl/buffaloZcl.js +127 -84
- package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
- package/dist/zspec/zcl/definition/cluster.d.ts +1 -1
- package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/cluster.js +1280 -911
- package/dist/zspec/zcl/definition/cluster.js.map +1 -1
- package/dist/zspec/zcl/definition/consts.js +7 -7
- package/dist/zspec/zcl/definition/foundation.d.ts +3 -3
- package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
- package/dist/zspec/zcl/definition/foundation.js +88 -89
- package/dist/zspec/zcl/definition/foundation.js.map +1 -1
- package/dist/zspec/zcl/definition/manufacturerCode.d.ts +1 -1
- package/dist/zspec/zcl/definition/manufacturerCode.js +1 -1
- package/dist/zspec/zcl/definition/manufacturerCode.js.map +1 -1
- package/dist/zspec/zcl/definition/status.d.ts +3 -3
- package/dist/zspec/zcl/definition/status.js +3 -3
- package/dist/zspec/zcl/definition/tstype.d.ts +3 -3
- package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
- package/dist/zspec/zcl/index.d.ts +10 -10
- package/dist/zspec/zcl/utils.d.ts +3 -3
- package/dist/zspec/zcl/utils.d.ts.map +1 -1
- package/dist/zspec/zcl/utils.js +18 -21
- package/dist/zspec/zcl/utils.js.map +1 -1
- package/dist/zspec/zcl/zclFrame.d.ts +7 -7
- package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
- package/dist/zspec/zcl/zclFrame.js +38 -41
- package/dist/zspec/zcl/zclFrame.js.map +1 -1
- package/dist/zspec/zcl/zclHeader.d.ts +2 -2
- package/dist/zspec/zcl/zclHeader.d.ts.map +1 -1
- package/dist/zspec/zcl/zclHeader.js +3 -3
- package/dist/zspec/zcl/zclStatusError.d.ts +1 -1
- package/dist/zspec/zdo/buffaloZdo.d.ts +7 -7
- package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -1
- package/dist/zspec/zdo/buffaloZdo.js +4 -4
- package/dist/zspec/zdo/buffaloZdo.js.map +1 -1
- package/dist/zspec/zdo/definition/status.d.ts +1 -1
- package/dist/zspec/zdo/definition/status.js +1 -1
- package/dist/zspec/zdo/definition/tstypes.d.ts +48 -48
- package/dist/zspec/zdo/definition/tstypes.d.ts.map +1 -1
- package/dist/zspec/zdo/index.d.ts +7 -7
- package/dist/zspec/zdo/utils.d.ts +2 -2
- package/dist/zspec/zdo/utils.d.ts.map +1 -1
- package/dist/zspec/zdo/utils.js +1 -1
- package/dist/zspec/zdo/utils.js.map +1 -1
- package/dist/zspec/zdo/zdoStatusError.d.ts +1 -1
- package/examples/join-and-log.js +5 -5
- package/package.json +4 -11
- package/src/adapter/adapter.ts +189 -0
- package/src/adapter/adapterDiscovery.ts +653 -0
- package/src/adapter/const.ts +12 -0
- package/src/adapter/deconz/adapter/deconzAdapter.ts +768 -0
- package/src/adapter/deconz/driver/constants.ts +180 -0
- package/src/adapter/deconz/driver/driver.ts +900 -0
- package/src/adapter/deconz/driver/frame.ts +11 -0
- package/src/adapter/deconz/driver/frameParser.ts +557 -0
- package/src/adapter/deconz/driver/parser.ts +45 -0
- package/src/adapter/deconz/driver/writer.ts +22 -0
- package/src/adapter/deconz/types.d.ts +13 -0
- package/src/adapter/ember/adapter/emberAdapter.ts +2266 -0
- package/src/adapter/ember/adapter/endpoints.ts +86 -0
- package/src/adapter/ember/adapter/oneWaitress.ts +322 -0
- package/src/adapter/ember/adapter/tokensManager.ts +782 -0
- package/src/adapter/ember/consts.ts +178 -0
- package/src/adapter/ember/enums.ts +2123 -0
- package/src/adapter/ember/ezsp/buffalo.ts +1397 -0
- package/src/adapter/ember/ezsp/consts.ts +148 -0
- package/src/adapter/ember/ezsp/enums.ts +1087 -0
- package/src/adapter/ember/ezsp/ezsp.ts +8985 -0
- package/src/adapter/ember/ezspError.ts +10 -0
- package/src/adapter/ember/types.ts +866 -0
- package/src/adapter/ember/uart/ash.ts +1969 -0
- package/src/adapter/ember/uart/consts.ts +109 -0
- package/src/adapter/ember/uart/enums.ts +192 -0
- package/src/adapter/ember/uart/parser.ts +48 -0
- package/src/adapter/ember/uart/queues.ts +247 -0
- package/src/adapter/ember/uart/writer.ts +53 -0
- package/src/adapter/ember/utils/initters.ts +58 -0
- package/src/adapter/ember/utils/math.ts +73 -0
- package/src/adapter/events.ts +21 -0
- package/src/adapter/ezsp/adapter/backup.ts +109 -0
- package/src/adapter/ezsp/adapter/ezspAdapter.ts +614 -0
- package/src/adapter/ezsp/driver/commands.ts +2497 -0
- package/src/adapter/ezsp/driver/consts.ts +11 -0
- package/src/adapter/ezsp/driver/driver.ts +1002 -0
- package/src/adapter/ezsp/driver/ezsp.ts +802 -0
- package/src/adapter/ezsp/driver/frame.ts +101 -0
- package/src/adapter/ezsp/driver/index.ts +4 -0
- package/src/adapter/ezsp/driver/multicast.ts +78 -0
- package/src/adapter/ezsp/driver/parser.ts +81 -0
- package/src/adapter/ezsp/driver/types/basic.ts +201 -0
- package/src/adapter/ezsp/driver/types/index.ts +239 -0
- package/src/adapter/ezsp/driver/types/named.ts +2330 -0
- package/src/adapter/ezsp/driver/types/struct.ts +844 -0
- package/src/adapter/ezsp/driver/uart.ts +460 -0
- package/src/adapter/ezsp/driver/utils/crc16ccitt.ts +44 -0
- package/src/adapter/ezsp/driver/utils/index.ts +32 -0
- package/src/adapter/ezsp/driver/writer.ts +64 -0
- package/src/adapter/index.ts +3 -0
- package/src/adapter/serialPort.ts +58 -0
- package/src/adapter/socketPortUtils.ts +16 -0
- package/src/adapter/tstype.ts +78 -0
- package/src/adapter/z-stack/adapter/adapter-backup.ts +519 -0
- package/src/adapter/z-stack/adapter/adapter-nv-memory.ts +457 -0
- package/src/adapter/z-stack/adapter/endpoints.ts +57 -0
- package/src/adapter/z-stack/adapter/manager.ts +544 -0
- package/src/adapter/z-stack/adapter/tstype.ts +6 -0
- package/src/adapter/z-stack/adapter/zStackAdapter.ts +1190 -0
- package/src/adapter/z-stack/constants/af.ts +27 -0
- package/src/adapter/z-stack/constants/common.ts +285 -0
- package/src/adapter/z-stack/constants/dbg.ts +23 -0
- package/src/adapter/z-stack/constants/index.ts +11 -0
- package/src/adapter/z-stack/constants/mac.ts +128 -0
- package/src/adapter/z-stack/constants/sapi.ts +25 -0
- package/src/adapter/z-stack/constants/sys.ts +72 -0
- package/src/adapter/z-stack/constants/util.ts +82 -0
- package/src/adapter/z-stack/constants/utils.ts +14 -0
- package/src/adapter/z-stack/constants/zdo.ts +103 -0
- package/src/adapter/z-stack/models/startup-options.ts +13 -0
- package/src/adapter/z-stack/structs/entries/address-manager-entry.ts +44 -0
- package/src/adapter/z-stack/structs/entries/address-manager-table.ts +19 -0
- package/src/adapter/z-stack/structs/entries/aps-link-key-data-entry.ts +12 -0
- package/src/adapter/z-stack/structs/entries/aps-link-key-data-table.ts +21 -0
- package/src/adapter/z-stack/structs/entries/aps-tc-link-key-entry.ts +19 -0
- package/src/adapter/z-stack/structs/entries/aps-tc-link-key-table.ts +21 -0
- package/src/adapter/z-stack/structs/entries/channel-list.ts +8 -0
- package/src/adapter/z-stack/structs/entries/has-configured.ts +16 -0
- package/src/adapter/z-stack/structs/entries/index.ts +16 -0
- package/src/adapter/z-stack/structs/entries/nib.ts +66 -0
- package/src/adapter/z-stack/structs/entries/nwk-key-descriptor.ts +15 -0
- package/src/adapter/z-stack/structs/entries/nwk-key.ts +13 -0
- package/src/adapter/z-stack/structs/entries/nwk-pan-id.ts +8 -0
- package/src/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.ts +20 -0
- package/src/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.ts +19 -0
- package/src/adapter/z-stack/structs/entries/security-manager-entry.ts +33 -0
- package/src/adapter/z-stack/structs/entries/security-manager-table.ts +22 -0
- package/src/adapter/z-stack/structs/index.ts +4 -0
- package/src/adapter/z-stack/structs/serializable-memory-object.ts +14 -0
- package/src/adapter/z-stack/structs/struct.ts +367 -0
- package/src/adapter/z-stack/structs/table.ts +198 -0
- package/src/adapter/z-stack/unpi/constants.ts +33 -0
- package/src/adapter/z-stack/unpi/frame.ts +62 -0
- package/src/adapter/z-stack/unpi/index.ts +4 -0
- package/src/adapter/z-stack/unpi/parser.ts +56 -0
- package/src/adapter/z-stack/unpi/writer.ts +21 -0
- package/src/adapter/z-stack/utils/channel-list.ts +40 -0
- package/src/adapter/z-stack/utils/index.ts +2 -0
- package/src/adapter/z-stack/utils/network-options.ts +26 -0
- package/src/adapter/z-stack/znp/buffaloZnp.ts +175 -0
- package/src/adapter/z-stack/znp/definition.ts +2713 -0
- package/src/adapter/z-stack/znp/index.ts +2 -0
- package/src/adapter/z-stack/znp/parameterType.ts +22 -0
- package/src/adapter/z-stack/znp/tstype.ts +44 -0
- package/src/adapter/z-stack/znp/utils.ts +10 -0
- package/src/adapter/z-stack/znp/znp.ts +342 -0
- package/src/adapter/z-stack/znp/zpiObject.ts +148 -0
- package/src/adapter/zboss/adapter/zbossAdapter.ts +527 -0
- package/src/adapter/zboss/commands.ts +1184 -0
- package/src/adapter/zboss/consts.ts +9 -0
- package/src/adapter/zboss/driver.ts +423 -0
- package/src/adapter/zboss/enums.ts +360 -0
- package/src/adapter/zboss/frame.ts +227 -0
- package/src/adapter/zboss/reader.ts +65 -0
- package/src/adapter/zboss/types.ts +0 -0
- package/src/adapter/zboss/uart.ts +428 -0
- package/src/adapter/zboss/utils.ts +58 -0
- package/src/adapter/zboss/writer.ts +49 -0
- package/src/adapter/zigate/adapter/patchZdoBuffaloBE.ts +27 -0
- package/src/adapter/zigate/adapter/zigateAdapter.ts +618 -0
- package/src/adapter/zigate/driver/LICENSE +17 -0
- package/src/adapter/zigate/driver/buffaloZiGate.ts +212 -0
- package/src/adapter/zigate/driver/commandType.ts +418 -0
- package/src/adapter/zigate/driver/constants.ts +150 -0
- package/src/adapter/zigate/driver/frame.ts +197 -0
- package/src/adapter/zigate/driver/messageType.ts +287 -0
- package/src/adapter/zigate/driver/parameterType.ts +32 -0
- package/src/adapter/zigate/driver/ziGateObject.ts +146 -0
- package/src/adapter/zigate/driver/zigate.ts +426 -0
- package/src/adapter/zoh/adapter/utils.ts +27 -0
- package/src/adapter/zoh/adapter/zohAdapter.ts +837 -0
- package/src/buffalo/buffalo.ts +335 -0
- package/src/buffalo/index.ts +1 -0
- package/src/controller/controller.ts +1048 -0
- package/src/controller/database.ts +124 -0
- package/src/controller/events.ts +51 -0
- package/src/controller/greenPower.ts +603 -0
- package/src/controller/helpers/index.ts +1 -0
- package/src/controller/helpers/request.ts +94 -0
- package/src/controller/helpers/requestQueue.ts +125 -0
- package/src/controller/helpers/zclFrameConverter.ts +51 -0
- package/src/controller/helpers/zclTransactionSequenceNumber.ts +19 -0
- package/src/controller/index.ts +6 -0
- package/src/controller/model/device.ts +1320 -0
- package/src/controller/model/endpoint.ts +1040 -0
- package/src/controller/model/entity.ts +23 -0
- package/src/controller/model/group.ts +333 -0
- package/src/controller/model/index.ts +4 -0
- package/src/controller/touchlink.ts +189 -0
- package/src/controller/tstype.ts +39 -0
- package/src/index.ts +12 -0
- package/src/models/backup-storage-legacy.ts +48 -0
- package/src/models/backup-storage-unified.ts +47 -0
- package/src/models/backup.ts +37 -0
- package/src/models/index.ts +5 -0
- package/src/models/network-options.ts +11 -0
- package/src/utils/backup.ts +152 -0
- package/src/utils/index.ts +5 -0
- package/src/utils/logger.ts +20 -0
- package/src/utils/patchBigIntSerialization.ts +8 -0
- package/src/utils/queue.ts +76 -0
- package/src/utils/types.d.ts +3 -0
- package/src/utils/utils.ts +20 -0
- package/src/utils/wait.ts +5 -0
- package/src/utils/waitress.ts +95 -0
- package/src/zspec/consts.ts +84 -0
- package/src/zspec/enums.ts +22 -0
- package/src/zspec/index.ts +3 -0
- package/src/zspec/tstypes.ts +18 -0
- package/src/zspec/utils.ts +308 -0
- package/src/zspec/zcl/buffaloZcl.ts +1133 -0
- package/src/zspec/zcl/definition/cluster.ts +5766 -0
- package/src/zspec/zcl/definition/consts.ts +24 -0
- package/src/zspec/zcl/definition/enums.ts +194 -0
- package/src/zspec/zcl/definition/foundation.ts +301 -0
- package/src/zspec/zcl/definition/manufacturerCode.ts +729 -0
- package/src/zspec/zcl/definition/status.ts +69 -0
- package/src/zspec/zcl/definition/tstype.ts +268 -0
- package/src/zspec/zcl/index.ts +10 -0
- package/src/zspec/zcl/utils.ts +342 -0
- package/src/zspec/zcl/zclFrame.ts +336 -0
- package/src/zspec/zcl/zclHeader.ts +102 -0
- package/src/zspec/zcl/zclStatusError.ts +10 -0
- package/src/zspec/zdo/buffaloZdo.ts +2345 -0
- package/src/zspec/zdo/definition/clusters.ts +722 -0
- package/src/zspec/zdo/definition/consts.ts +16 -0
- package/src/zspec/zdo/definition/enums.ts +99 -0
- package/src/zspec/zdo/definition/status.ts +105 -0
- package/src/zspec/zdo/definition/tstypes.ts +1062 -0
- package/src/zspec/zdo/index.ts +7 -0
- package/src/zspec/zdo/utils.ts +76 -0
- package/src/zspec/zdo/zdoStatusError.ts +10 -0
- package/test/adapter/adapter.test.ts +1062 -0
- package/test/adapter/ember/ash.test.ts +337 -0
- package/test/adapter/ember/consts.ts +131 -0
- package/test/adapter/ember/emberAdapter.test.ts +3449 -0
- package/test/adapter/ember/ezsp.test.ts +386 -0
- package/test/adapter/ember/ezspBuffalo.test.ts +92 -0
- package/test/adapter/ember/ezspError.test.ts +11 -0
- package/test/adapter/ember/math.test.ts +205 -0
- package/test/adapter/ezsp/frame.test.ts +29 -0
- package/test/adapter/ezsp/uart.test.ts +180 -0
- package/test/adapter/z-stack/adapter.test.ts +3985 -0
- package/test/adapter/z-stack/constants.test.ts +32 -0
- package/test/adapter/z-stack/structs.test.ts +114 -0
- package/test/adapter/z-stack/unpi.test.ts +212 -0
- package/test/adapter/z-stack/znp.test.ts +1284 -0
- package/test/adapter/zboss/fixZdoResponse.test.ts +178 -0
- package/test/adapter/zigate/patchZdoBuffaloBE.test.ts +80 -0
- package/test/adapter/zigate/zdo.test.ts +187 -0
- package/test/adapter/zoh/utils.test.ts +35 -0
- package/test/adapter/zoh/zohAdapter.test.ts +1306 -0
- package/test/buffalo.test.ts +430 -0
- package/test/controller.test.ts +10005 -0
- package/test/greenpower.test.ts +1421 -0
- package/test/mockAdapters.ts +65 -0
- package/test/mockDevices.ts +472 -0
- package/test/testUtils.ts +20 -0
- package/test/tsconfig.json +10 -0
- package/test/utils/math.ts +19 -0
- package/test/utils.test.ts +227 -0
- package/test/vitest.config.mts +25 -0
- package/test/zcl.test.ts +2832 -0
- package/test/zspec/utils.test.ts +131 -0
- package/test/zspec/zcl/buffalo.test.ts +1231 -0
- package/test/zspec/zcl/frame.test.ts +925 -0
- package/test/zspec/zcl/utils.test.ts +280 -0
- package/test/zspec/zdo/buffalo.test.ts +1849 -0
- package/test/zspec/zdo/utils.test.ts +240 -0
- package/.github/workflows/update-dependencies.yml +0 -39
- package/.prettierignore +0 -2
- package/.prettierrc +0 -26
- package/eslint.config.mjs +0 -32
package/dist/buffalo/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Buffalo } from
|
|
1
|
+
export { Buffalo } from "./buffalo";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import events from
|
|
2
|
-
import { TsType as AdapterTsType } from
|
|
3
|
-
import * as Events from
|
|
4
|
-
import { Device } from
|
|
5
|
-
import Group from
|
|
6
|
-
import { DeviceType } from
|
|
1
|
+
import events from "node:events";
|
|
2
|
+
import { type TsType as AdapterTsType } from "../adapter";
|
|
3
|
+
import type * as Events from "./events";
|
|
4
|
+
import { Device } from "./model";
|
|
5
|
+
import Group from "./model/group";
|
|
6
|
+
import type { DeviceType } from "./tstype";
|
|
7
7
|
interface Options {
|
|
8
8
|
network: AdapterTsType.NetworkOptions;
|
|
9
9
|
serialPort: AdapterTsType.SerialPortOptions;
|
|
@@ -76,7 +76,7 @@ export declare class Controller extends events.EventEmitter<ControllerEventMap>
|
|
|
76
76
|
coordinatorCheck(): Promise<{
|
|
77
77
|
missingRouters: Device[];
|
|
78
78
|
}>;
|
|
79
|
-
reset(type:
|
|
79
|
+
reset(type: "soft" | "hard"): Promise<void>;
|
|
80
80
|
getCoordinatorVersion(): Promise<AdapterTsType.CoordinatorVersion>;
|
|
81
81
|
getNetworkParameters(): Promise<AdapterTsType.NetworkParameters>;
|
|
82
82
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller/controller.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,aAAa,CAAC;AAKjC,OAAO,
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller/controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,9 +52,10 @@ const database_1 = __importDefault(require("./database"));
|
|
|
52
52
|
const greenPower_1 = __importDefault(require("./greenPower"));
|
|
53
53
|
const helpers_1 = require("./helpers");
|
|
54
54
|
const model_1 = require("./model");
|
|
55
|
+
const device_1 = require("./model/device");
|
|
55
56
|
const group_1 = __importDefault(require("./model/group"));
|
|
56
57
|
const touchlink_1 = __importDefault(require("./touchlink"));
|
|
57
|
-
const NS =
|
|
58
|
+
const NS = "zh:controller";
|
|
58
59
|
const DefaultOptions = {
|
|
59
60
|
network: {
|
|
60
61
|
networkKeyDistribute: false,
|
|
@@ -128,33 +129,33 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
128
129
|
// Check if we have to change the channel, only do this when adapter `resumed` because:
|
|
129
130
|
// - `getNetworkParameters` might be return wrong info because it needs to propogate after backup restore
|
|
130
131
|
// - If result is not `resumed` (`reset` or `restored`), the adapter should comission with the channel from `this.options.network`
|
|
131
|
-
if (startResult ===
|
|
132
|
+
if (startResult === "resumed") {
|
|
132
133
|
const netParams = await this.getNetworkParameters();
|
|
133
134
|
const configuredChannel = this.options.network.channelList[0];
|
|
134
135
|
const adapterChannel = netParams.channel;
|
|
135
136
|
const nwkUpdateID = netParams.nwkUpdateID;
|
|
136
|
-
if (configuredChannel
|
|
137
|
+
if (configuredChannel !== adapterChannel) {
|
|
137
138
|
logger_1.logger.info(`Configured channel '${configuredChannel}' does not match adapter channel '${adapterChannel}', changing channel`, NS);
|
|
138
139
|
await this.changeChannel(adapterChannel, configuredChannel, nwkUpdateID);
|
|
139
140
|
}
|
|
140
141
|
}
|
|
141
142
|
model_1.Entity.injectAdapter(this.adapter);
|
|
142
143
|
// log injection
|
|
143
|
-
logger_1.logger.debug(`Injected database: ${this.database
|
|
144
|
+
logger_1.logger.debug(`Injected database: ${this.database !== undefined}, adapter: ${this.adapter !== undefined}`, NS);
|
|
144
145
|
this.greenPower = new greenPower_1.default(this.adapter);
|
|
145
|
-
this.greenPower.on(
|
|
146
|
-
this.greenPower.on(
|
|
146
|
+
this.greenPower.on("deviceJoined", this.onDeviceJoinedGreenPower.bind(this));
|
|
147
|
+
this.greenPower.on("deviceLeave", this.onDeviceLeaveGreenPower.bind(this));
|
|
147
148
|
// Register adapter events
|
|
148
|
-
this.adapter.on(
|
|
149
|
-
this.adapter.on(
|
|
150
|
-
this.adapter.on(
|
|
151
|
-
this.adapter.on(
|
|
152
|
-
this.adapter.on(
|
|
153
|
-
if (startResult ===
|
|
149
|
+
this.adapter.on("deviceJoined", this.onDeviceJoined.bind(this));
|
|
150
|
+
this.adapter.on("zclPayload", this.onZclPayload.bind(this));
|
|
151
|
+
this.adapter.on("zdoResponse", this.onZdoResponse.bind(this));
|
|
152
|
+
this.adapter.on("disconnected", this.onAdapterDisconnected.bind(this));
|
|
153
|
+
this.adapter.on("deviceLeave", this.onDeviceLeave.bind(this));
|
|
154
|
+
if (startResult === "reset") {
|
|
154
155
|
if (this.options.databaseBackupPath && node_fs_1.default.existsSync(this.options.databasePath)) {
|
|
155
156
|
node_fs_1.default.copyFileSync(this.options.databasePath, this.options.databaseBackupPath);
|
|
156
157
|
}
|
|
157
|
-
logger_1.logger.debug(
|
|
158
|
+
logger_1.logger.debug("Clearing database...", NS);
|
|
158
159
|
for (const group of group_1.default.allIterator()) {
|
|
159
160
|
group.removeFromDatabase();
|
|
160
161
|
}
|
|
@@ -163,14 +164,14 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
163
164
|
}
|
|
164
165
|
model_1.Device.resetCache();
|
|
165
166
|
}
|
|
166
|
-
if (startResult ===
|
|
167
|
+
if (startResult === "reset" || (this.options.backupPath && !node_fs_1.default.existsSync(this.options.backupPath))) {
|
|
167
168
|
await this.backup();
|
|
168
169
|
}
|
|
169
170
|
// Add coordinator to the database if it is not there yet.
|
|
170
171
|
const coordinatorIEEE = await this.adapter.getCoordinatorIEEE();
|
|
171
|
-
if (model_1.Device.byType(
|
|
172
|
-
logger_1.logger.debug(
|
|
173
|
-
const coordinator = model_1.Device.create(
|
|
172
|
+
if (model_1.Device.byType("Coordinator").length === 0) {
|
|
173
|
+
logger_1.logger.debug("No coordinator in database, querying...", NS);
|
|
174
|
+
const coordinator = model_1.Device.create("Coordinator", coordinatorIEEE, ZSpec.COORDINATOR_ADDRESS, this.adapter.manufacturerID, undefined, undefined, undefined, device_1.InterviewState.Successful, undefined);
|
|
174
175
|
await coordinator.updateActiveEndpoints();
|
|
175
176
|
for (const endpoint of coordinator.endpoints) {
|
|
176
177
|
await endpoint.updateSimpleDescriptor();
|
|
@@ -178,7 +179,7 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
178
179
|
coordinator.save();
|
|
179
180
|
}
|
|
180
181
|
// Update coordinator ieeeAddr if changed, can happen due to e.g. reflashing
|
|
181
|
-
const databaseCoordinator = model_1.Device.byType(
|
|
182
|
+
const databaseCoordinator = model_1.Device.byType("Coordinator")[0];
|
|
182
183
|
if (databaseCoordinator.ieeeAddr !== coordinatorIEEE) {
|
|
183
184
|
logger_1.logger.info(`Coordinator address changed, updating to '${coordinatorIEEE}'`, NS);
|
|
184
185
|
databaseCoordinator.changeIeeeAddress(coordinatorIEEE);
|
|
@@ -205,24 +206,26 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
205
206
|
async addInstallCode(installCode) {
|
|
206
207
|
const aqaraMatch = installCode.match(/^G\$M:.+\$A:(.+)\$I:(.+)$/);
|
|
207
208
|
const pipeMatch = installCode.match(/^(.+)\|(.+)$/);
|
|
208
|
-
let ieeeAddr
|
|
209
|
+
let ieeeAddr;
|
|
210
|
+
let keyStr;
|
|
209
211
|
if (aqaraMatch) {
|
|
210
212
|
ieeeAddr = aqaraMatch[1];
|
|
211
|
-
|
|
213
|
+
keyStr = aqaraMatch[2];
|
|
212
214
|
}
|
|
213
215
|
else if (pipeMatch) {
|
|
214
216
|
ieeeAddr = pipeMatch[1];
|
|
215
|
-
|
|
217
|
+
keyStr = pipeMatch[2];
|
|
216
218
|
}
|
|
217
219
|
else {
|
|
218
220
|
(0, node_assert_1.default)(installCode.length === 95 || installCode.length === 91, `Unsupported install code, got ${installCode.length} chars, expected 95 or 91`);
|
|
219
221
|
const keyStart = installCode.length - (installCode.length === 95 ? 36 : 32);
|
|
220
222
|
ieeeAddr = installCode.substring(keyStart - 19, keyStart - 3);
|
|
221
|
-
|
|
223
|
+
keyStr = installCode.substring(keyStart, installCode.length);
|
|
222
224
|
}
|
|
223
225
|
ieeeAddr = `0x${ieeeAddr}`;
|
|
224
226
|
// match valid else asserted above
|
|
225
|
-
|
|
227
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
228
|
+
const key = Buffer.from(keyStr.match(/.{1,2}/g).map((d) => Number.parseInt(d, 16)));
|
|
226
229
|
// will throw if code cannot be fixed and is invalid
|
|
227
230
|
const [adjustedKey, adjusted] = ZSpec.Utils.checkInstallCode(key, true);
|
|
228
231
|
if (adjusted) {
|
|
@@ -230,7 +233,7 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
230
233
|
}
|
|
231
234
|
logger_1.logger.info(`Adding install code for ${ieeeAddr}.`, NS);
|
|
232
235
|
await this.adapter.addInstallCode(ieeeAddr, adjustedKey, false);
|
|
233
|
-
if (adjusted ===
|
|
236
|
+
if (adjusted === "missing CRC") {
|
|
234
237
|
// in case the CRC was missing, could also be a "already-hashed" key, send both
|
|
235
238
|
// XXX: seems to be the case for old HA1.2 devices
|
|
236
239
|
await this.adapter.addInstallCode(ieeeAddr, key, true);
|
|
@@ -242,23 +245,23 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
242
245
|
this.permitJoinEnd = undefined;
|
|
243
246
|
if (time > 0) {
|
|
244
247
|
// never permit more than uint8, and never permit 255 that is often equal to "forever"
|
|
245
|
-
(0, node_assert_1.default)(time <= 254,
|
|
248
|
+
(0, node_assert_1.default)(time <= 254, "Cannot permit join for more than 254 seconds.");
|
|
246
249
|
await this.adapter.permitJoin(time, device?.networkAddress);
|
|
247
250
|
await this.greenPower.permitJoin(time, device?.networkAddress);
|
|
248
251
|
const timeMs = time * 1000;
|
|
249
252
|
this.permitJoinEnd = Date.now() + timeMs;
|
|
250
253
|
this.permitJoinTimer = setTimeout(() => {
|
|
251
|
-
this.emit(
|
|
254
|
+
this.emit("permitJoinChanged", { permitted: false });
|
|
252
255
|
this.permitJoinTimer = undefined;
|
|
253
256
|
this.permitJoinEnd = undefined;
|
|
254
257
|
}, timeMs);
|
|
255
|
-
this.emit(
|
|
258
|
+
this.emit("permitJoinChanged", { permitted: true, time });
|
|
256
259
|
}
|
|
257
260
|
else {
|
|
258
|
-
logger_1.logger.debug(
|
|
261
|
+
logger_1.logger.debug("Disable joining", NS);
|
|
259
262
|
await this.greenPower.permitJoin(0);
|
|
260
263
|
await this.adapter.permitJoin(0);
|
|
261
|
-
this.emit(
|
|
264
|
+
this.emit("permitJoinChanged", { permitted: false });
|
|
262
265
|
}
|
|
263
266
|
}
|
|
264
267
|
getPermitJoin() {
|
|
@@ -308,10 +311,10 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
308
311
|
async backup() {
|
|
309
312
|
this.databaseSave();
|
|
310
313
|
if (this.options.backupPath && (await this.adapter.supportsBackup())) {
|
|
311
|
-
logger_1.logger.debug(
|
|
314
|
+
logger_1.logger.debug("Creating coordinator backup", NS);
|
|
312
315
|
const backup = await this.adapter.backup(this.getDeviceIeeeAddresses());
|
|
313
316
|
const unifiedBackup = await utils_1.BackupUtils.toUnifiedBackup(backup);
|
|
314
|
-
const tmpBackupPath = this.options.backupPath
|
|
317
|
+
const tmpBackupPath = `${this.options.backupPath}.tmp`;
|
|
315
318
|
node_fs_1.default.writeFileSync(tmpBackupPath, JSON.stringify(unifiedBackup, null, 2));
|
|
316
319
|
node_fs_1.default.renameSync(tmpBackupPath, this.options.backupPath);
|
|
317
320
|
logger_1.logger.info(`Wrote coordinator backup to '${this.options.backupPath}'`, NS);
|
|
@@ -322,14 +325,12 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
322
325
|
const backup = await this.adapter.backup(this.getDeviceIeeeAddresses());
|
|
323
326
|
const devicesInBackup = backup.devices.map((d) => ZSpec.Utils.eui64BEBufferToHex(d.ieeeAddress));
|
|
324
327
|
const missingRouters = [];
|
|
325
|
-
for (const device of this.getDevicesIterator((d) => d.type ===
|
|
328
|
+
for (const device of this.getDevicesIterator((d) => d.type === "Router" && !devicesInBackup.includes(d.ieeeAddr))) {
|
|
326
329
|
missingRouters.push(device);
|
|
327
330
|
}
|
|
328
331
|
return { missingRouters };
|
|
329
332
|
}
|
|
330
|
-
|
|
331
|
-
throw new Error("Coordinator does not coordinator check because it doesn't support backups");
|
|
332
|
-
}
|
|
333
|
+
throw new Error("Coordinator does not coordinator check because it doesn't support backups");
|
|
333
334
|
}
|
|
334
335
|
async reset(type) {
|
|
335
336
|
await this.adapter.reset(type);
|
|
@@ -450,9 +451,7 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
450
451
|
}
|
|
451
452
|
return device;
|
|
452
453
|
}
|
|
453
|
-
|
|
454
|
-
throw new Zdo.StatusError(response[0]);
|
|
455
|
-
}
|
|
454
|
+
throw new Zdo.StatusError(response[0]);
|
|
456
455
|
}
|
|
457
456
|
catch (error) {
|
|
458
457
|
// Catches 2 types of exception: Zdo.StatusError and no response from `adapter.sendZdo()`.
|
|
@@ -466,7 +465,7 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
466
465
|
logger_1.logger.debug(`Device '${ieeeAddress}' got new networkAddress '${nwkAddress}'`, NS);
|
|
467
466
|
device.networkAddress = nwkAddress;
|
|
468
467
|
device.save();
|
|
469
|
-
this.selfAndDeviceEmit(device,
|
|
468
|
+
this.selfAndDeviceEmit(device, "deviceNetworkAddressChanged", { device });
|
|
470
469
|
}
|
|
471
470
|
}
|
|
472
471
|
onNetworkAddress(payload) {
|
|
@@ -477,7 +476,7 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
477
476
|
return;
|
|
478
477
|
}
|
|
479
478
|
device.updateLastSeen();
|
|
480
|
-
this.selfAndDeviceEmit(device,
|
|
479
|
+
this.selfAndDeviceEmit(device, "lastSeenChanged", { device, reason: "networkAddress" });
|
|
481
480
|
this.checkDeviceNetworkAddress(device, payload.eui64, payload.nwkAddress);
|
|
482
481
|
}
|
|
483
482
|
onIEEEAddress(payload) {
|
|
@@ -488,7 +487,7 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
488
487
|
return;
|
|
489
488
|
}
|
|
490
489
|
device.updateLastSeen();
|
|
491
|
-
this.selfAndDeviceEmit(device,
|
|
490
|
+
this.selfAndDeviceEmit(device, "lastSeenChanged", { device, reason: "networkAddress" });
|
|
492
491
|
this.checkDeviceNetworkAddress(device, payload.eui64, payload.nwkAddress);
|
|
493
492
|
}
|
|
494
493
|
onDeviceAnnounce(payload) {
|
|
@@ -499,14 +498,15 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
499
498
|
return;
|
|
500
499
|
}
|
|
501
500
|
device.updateLastSeen();
|
|
502
|
-
this.selfAndDeviceEmit(device,
|
|
501
|
+
this.selfAndDeviceEmit(device, "lastSeenChanged", { device, reason: "deviceAnnounce" });
|
|
503
502
|
device.implicitCheckin();
|
|
504
503
|
this.checkDeviceNetworkAddress(device, payload.eui64, payload.nwkAddress);
|
|
505
|
-
this.selfAndDeviceEmit(device,
|
|
504
|
+
this.selfAndDeviceEmit(device, "deviceAnnounce", { device });
|
|
506
505
|
}
|
|
507
506
|
onDeviceLeave(payload) {
|
|
508
507
|
logger_1.logger.debug(`Device leave '${payload.ieeeAddr}'`, NS);
|
|
509
508
|
// XXX: seems type is not properly detected?
|
|
509
|
+
// biome-ignore lint/style/noNonNullAssertion: ignored using `--suppress`
|
|
510
510
|
const device = payload.ieeeAddr ? model_1.Device.byIeeeAddr(payload.ieeeAddr) : model_1.Device.byNetworkAddress(payload.networkAddress);
|
|
511
511
|
if (!device) {
|
|
512
512
|
logger_1.logger.debug(`Device leave is from unknown or already deleted device '${payload.ieeeAddr ?? payload.networkAddress}'`, NS);
|
|
@@ -514,10 +514,10 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
514
514
|
}
|
|
515
515
|
logger_1.logger.debug(`Removing device from database '${device.ieeeAddr}'`, NS);
|
|
516
516
|
device.removeFromDatabase();
|
|
517
|
-
this.selfAndDeviceEmit(device,
|
|
517
|
+
this.selfAndDeviceEmit(device, "deviceLeave", { ieeeAddr: device.ieeeAddr });
|
|
518
518
|
}
|
|
519
519
|
async onAdapterDisconnected() {
|
|
520
|
-
logger_1.logger.debug(
|
|
520
|
+
logger_1.logger.debug("Adapter disconnected", NS);
|
|
521
521
|
this.adapterDisconnected = true;
|
|
522
522
|
try {
|
|
523
523
|
await this.adapter.stop();
|
|
@@ -525,10 +525,10 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
525
525
|
catch (error) {
|
|
526
526
|
logger_1.logger.error(`Failed to stop adapter on disconnect: ${error}`, NS);
|
|
527
527
|
}
|
|
528
|
-
this.emit(
|
|
528
|
+
this.emit("adapterDisconnected");
|
|
529
529
|
}
|
|
530
530
|
async onDeviceJoinedGreenPower(payload) {
|
|
531
|
-
logger_1.logger.debug(() => `Green power device '${JSON.stringify(payload).replaceAll(/\[[\d,]+\]/g,
|
|
531
|
+
logger_1.logger.debug(() => `Green power device '${JSON.stringify(payload).replaceAll(/\[[\d,]+\]/g, "HIDDEN")}' joined`, NS);
|
|
532
532
|
// Green power devices don't have an ieeeAddr, the sourceID is unique and static so use this.
|
|
533
533
|
const ieeeAddr = greenPower_1.default.sourceIdToIeeeAddress(payload.sourceID);
|
|
534
534
|
// Green power devices dont' have a modelID, create a modelID based on the deviceID (=type)
|
|
@@ -537,19 +537,19 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
537
537
|
if (!device) {
|
|
538
538
|
logger_1.logger.debug(`New green power device '${ieeeAddr}' joined`, NS);
|
|
539
539
|
logger_1.logger.debug(`Creating device '${ieeeAddr}'`, NS);
|
|
540
|
-
device = model_1.Device.create(
|
|
540
|
+
device = model_1.Device.create("GreenPower", ieeeAddr, payload.networkAddress, undefined, undefined, undefined, modelID, device_1.InterviewState.Successful, payload.securityKey ? Array.from(payload.securityKey) : /* v8 ignore next */ undefined);
|
|
541
541
|
device.save();
|
|
542
|
-
this.selfAndDeviceEmit(device,
|
|
543
|
-
this.selfAndDeviceEmit(device,
|
|
542
|
+
this.selfAndDeviceEmit(device, "deviceJoined", { device });
|
|
543
|
+
this.selfAndDeviceEmit(device, "deviceInterview", { status: "successful", device });
|
|
544
544
|
}
|
|
545
545
|
else if (device.isDeleted) {
|
|
546
546
|
logger_1.logger.debug(`Deleted green power device '${ieeeAddr}' joined, undeleting`, NS);
|
|
547
|
-
device.undelete(
|
|
548
|
-
this.selfAndDeviceEmit(device,
|
|
549
|
-
this.selfAndDeviceEmit(device,
|
|
547
|
+
device.undelete();
|
|
548
|
+
this.selfAndDeviceEmit(device, "deviceJoined", { device });
|
|
549
|
+
this.selfAndDeviceEmit(device, "deviceInterview", { status: "successful", device });
|
|
550
550
|
}
|
|
551
551
|
}
|
|
552
|
-
|
|
552
|
+
onDeviceLeaveGreenPower(sourceID) {
|
|
553
553
|
logger_1.logger.debug(`Green power device '${sourceID}' left`, NS);
|
|
554
554
|
// Green power devices don't have an ieeeAddr, the sourceID is unique and static so use this.
|
|
555
555
|
const ieeeAddr = greenPower_1.default.sourceIdToIeeeAddress(sourceID);
|
|
@@ -560,7 +560,7 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
560
560
|
}
|
|
561
561
|
logger_1.logger.debug(`Removing green power device from database '${device.ieeeAddr}'`, NS);
|
|
562
562
|
device.removeFromDatabase();
|
|
563
|
-
this.selfAndDeviceEmit(device,
|
|
563
|
+
this.selfAndDeviceEmit(device, "deviceLeave", { ieeeAddr: device.ieeeAddr });
|
|
564
564
|
}
|
|
565
565
|
selfAndDeviceEmit(device, event, ...args) {
|
|
566
566
|
device.emit(event, ...args);
|
|
@@ -585,21 +585,19 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
585
585
|
}
|
|
586
586
|
return;
|
|
587
587
|
}
|
|
588
|
-
|
|
589
|
-
logger_1.logger.debug(`Device '${payload.ieeeAddr}' accepted by handler`, NS);
|
|
590
|
-
}
|
|
588
|
+
logger_1.logger.debug(`Device '${payload.ieeeAddr}' accepted by handler`, NS);
|
|
591
589
|
}
|
|
592
590
|
let device = model_1.Device.byIeeeAddr(payload.ieeeAddr, true);
|
|
593
591
|
if (!device) {
|
|
594
592
|
logger_1.logger.debug(`New device '${payload.ieeeAddr}' joined`, NS);
|
|
595
593
|
logger_1.logger.debug(`Creating device '${payload.ieeeAddr}'`, NS);
|
|
596
|
-
device = model_1.Device.create(
|
|
597
|
-
this.selfAndDeviceEmit(device,
|
|
594
|
+
device = model_1.Device.create("Unknown", payload.ieeeAddr, payload.networkAddress, undefined, undefined, undefined, undefined, device_1.InterviewState.Pending, undefined);
|
|
595
|
+
this.selfAndDeviceEmit(device, "deviceJoined", { device });
|
|
598
596
|
}
|
|
599
597
|
else if (device.isDeleted) {
|
|
600
598
|
logger_1.logger.debug(`Deleted device '${payload.ieeeAddr}' joined, undeleting`, NS);
|
|
601
599
|
device.undelete();
|
|
602
|
-
this.selfAndDeviceEmit(device,
|
|
600
|
+
this.selfAndDeviceEmit(device, "deviceJoined", { device });
|
|
603
601
|
}
|
|
604
602
|
if (device.networkAddress !== payload.networkAddress) {
|
|
605
603
|
logger_1.logger.debug(`Device '${payload.ieeeAddr}' is already in database with different network address, updating network address`, NS);
|
|
@@ -607,26 +605,26 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
607
605
|
device.save();
|
|
608
606
|
}
|
|
609
607
|
device.updateLastSeen();
|
|
610
|
-
this.selfAndDeviceEmit(device,
|
|
608
|
+
this.selfAndDeviceEmit(device, "lastSeenChanged", { device, reason: "deviceJoined" });
|
|
611
609
|
device.implicitCheckin();
|
|
612
|
-
if (
|
|
610
|
+
if (device.interviewState === device_1.InterviewState.Pending || device.interviewState === device_1.InterviewState.Failed) {
|
|
613
611
|
logger_1.logger.info(`Interview for '${device.ieeeAddr}' started`, NS);
|
|
614
|
-
this.selfAndDeviceEmit(device,
|
|
612
|
+
this.selfAndDeviceEmit(device, "deviceInterview", { status: "started", device });
|
|
615
613
|
try {
|
|
616
614
|
await device.interview();
|
|
617
615
|
logger_1.logger.info(`Succesfully interviewed '${device.ieeeAddr}'`, NS);
|
|
618
|
-
this.selfAndDeviceEmit(device,
|
|
616
|
+
this.selfAndDeviceEmit(device, "deviceInterview", { status: "successful", device });
|
|
619
617
|
}
|
|
620
618
|
catch (error) {
|
|
621
619
|
logger_1.logger.error(`Interview failed for '${device.ieeeAddr} with error '${error}'`, NS);
|
|
622
|
-
this.selfAndDeviceEmit(device,
|
|
620
|
+
this.selfAndDeviceEmit(device, "deviceInterview", { status: "failed", device });
|
|
623
621
|
}
|
|
624
622
|
}
|
|
625
623
|
else {
|
|
626
|
-
logger_1.logger.debug(`Not interviewing '${payload.ieeeAddr}',
|
|
624
|
+
logger_1.logger.debug(`Not interviewing '${payload.ieeeAddr}', interviewState=${device.interviewState}'`, NS);
|
|
627
625
|
}
|
|
628
626
|
}
|
|
629
|
-
|
|
627
|
+
onZdoResponse(clusterId, response) {
|
|
630
628
|
logger_1.logger.debug(`Received ZDO response: clusterId=${Zdo.ClusterId[clusterId]}, status=${Zdo.Status[response[0]]}, payload=${JSON.stringify(response[1])}`, NS);
|
|
631
629
|
switch (clusterId) {
|
|
632
630
|
case Zdo.ClusterId.NETWORK_ADDRESS_RESPONSE: {
|
|
@@ -656,7 +654,7 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
656
654
|
// This is handled by touchlink
|
|
657
655
|
return;
|
|
658
656
|
}
|
|
659
|
-
|
|
657
|
+
if (payload.clusterID === Zcl.Clusters.greenPower.ID) {
|
|
660
658
|
try {
|
|
661
659
|
// Custom clusters are not supported for Green Power since we need to parse the frame to get the device.
|
|
662
660
|
frame = Zcl.Frame.fromBuffer(payload.clusterID, payload.header, payload.data, {});
|
|
@@ -675,19 +673,17 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
675
673
|
}
|
|
676
674
|
else {
|
|
677
675
|
if (frame.payload.srcID === undefined) {
|
|
678
|
-
logger_1.logger.debug(
|
|
676
|
+
logger_1.logger.debug("Data is from unsupported green power device with IEEE addressing, skipping...", NS);
|
|
679
677
|
return;
|
|
680
678
|
}
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
return;
|
|
690
|
-
}
|
|
679
|
+
const ieeeAddr = greenPower_1.default.sourceIdToIeeeAddress(frame.payload.srcID);
|
|
680
|
+
device = model_1.Device.byIeeeAddr(ieeeAddr);
|
|
681
|
+
frame = await this.greenPower.processCommand(payload, frame, device?.gpSecurityKey ? Buffer.from(device.gpSecurityKey) : undefined);
|
|
682
|
+
// lookup encapsulated gpDevice for further processing (re-fetch, may have been created by above call)
|
|
683
|
+
device = model_1.Device.byIeeeAddr(ieeeAddr);
|
|
684
|
+
if (!device) {
|
|
685
|
+
logger_1.logger.debug(`Data is from unknown green power device with address '${ieeeAddr}' (${frame.payload.srcID}), skipping...`, NS);
|
|
686
|
+
return;
|
|
691
687
|
}
|
|
692
688
|
}
|
|
693
689
|
}
|
|
@@ -705,7 +701,7 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
705
701
|
* The group ID attribute of these message defines the network address of the end device.
|
|
706
702
|
*/
|
|
707
703
|
device = model_1.Device.find(payload.address);
|
|
708
|
-
if (device?.manufacturerName ===
|
|
704
|
+
if (device?.manufacturerName === "LUMI" && device?.type === "Router" && payload.groupID) {
|
|
709
705
|
logger_1.logger.debug(`Handling re-transmitted Xiaomi message ${device.networkAddress} -> ${payload.groupID}`, NS);
|
|
710
706
|
device = model_1.Device.byNetworkAddress(payload.groupID);
|
|
711
707
|
}
|
|
@@ -717,7 +713,7 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
717
713
|
}
|
|
718
714
|
}
|
|
719
715
|
if (!device) {
|
|
720
|
-
if (typeof payload.address ===
|
|
716
|
+
if (typeof payload.address === "number") {
|
|
721
717
|
device = await this.identifyUnknownDevice(payload.address);
|
|
722
718
|
}
|
|
723
719
|
if (!device) {
|
|
@@ -730,7 +726,7 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
730
726
|
`linkQuality=${payload.linkquality}, frame=${frame?.toString()}`, NS);
|
|
731
727
|
device.updateLastSeen();
|
|
732
728
|
//no implicit checkin for genPollCtrl data because it might interfere with the explicit checkin
|
|
733
|
-
if (!frame?.isCluster(
|
|
729
|
+
if (!frame?.isCluster("genPollCtrl")) {
|
|
734
730
|
device.implicitCheckin();
|
|
735
731
|
}
|
|
736
732
|
device.linkquality = payload.linkquality;
|
|
@@ -752,27 +748,27 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
752
748
|
meta.frameControl = frame.header.frameControl;
|
|
753
749
|
if (frame.header.isGlobal) {
|
|
754
750
|
switch (frame.command.name) {
|
|
755
|
-
case
|
|
756
|
-
type =
|
|
751
|
+
case "report": {
|
|
752
|
+
type = "attributeReport";
|
|
757
753
|
data = helpers_1.ZclFrameConverter.attributeKeyValue(frame, device.manufacturerID, device.customClusters);
|
|
758
754
|
break;
|
|
759
755
|
}
|
|
760
|
-
case
|
|
761
|
-
type =
|
|
756
|
+
case "read": {
|
|
757
|
+
type = "read";
|
|
762
758
|
data = helpers_1.ZclFrameConverter.attributeList(frame, device.manufacturerID, device.customClusters);
|
|
763
759
|
break;
|
|
764
760
|
}
|
|
765
|
-
case
|
|
766
|
-
type =
|
|
761
|
+
case "write": {
|
|
762
|
+
type = "write";
|
|
767
763
|
data = helpers_1.ZclFrameConverter.attributeKeyValue(frame, device.manufacturerID, device.customClusters);
|
|
768
764
|
break;
|
|
769
765
|
}
|
|
770
|
-
case
|
|
771
|
-
type =
|
|
766
|
+
case "readRsp": {
|
|
767
|
+
type = "readResponse";
|
|
772
768
|
data = helpers_1.ZclFrameConverter.attributeKeyValue(frame, device.manufacturerID, device.customClusters);
|
|
773
769
|
break;
|
|
774
770
|
}
|
|
775
|
-
case
|
|
771
|
+
case "defaultRsp": {
|
|
776
772
|
if (frame.payload.statusCode !== Zcl.Status.SUCCESS) {
|
|
777
773
|
logger_1.logger.debug(`Failure default response from '${payload.address}': clusterID=${payload.clusterID} cmdId=${frame.payload.cmdId} status=${Zcl.Status[frame.payload.statusCode]}`, NS);
|
|
778
774
|
}
|
|
@@ -786,10 +782,10 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
786
782
|
data = frame.payload;
|
|
787
783
|
}
|
|
788
784
|
}
|
|
789
|
-
if (type ===
|
|
785
|
+
if (type === "readResponse" || type === "attributeReport") {
|
|
790
786
|
// Some device report, e.g. it's modelID through a readResponse or attributeReport
|
|
791
787
|
for (const key in data) {
|
|
792
|
-
const property = model_1.Device.
|
|
788
|
+
const property = model_1.Device.REPORTABLE_PROPERTIES_MAPPING[key];
|
|
793
789
|
if (property && !device[property.key]) {
|
|
794
790
|
// XXX: data technically can be `KeyValue | (string | number)[]`
|
|
795
791
|
property.set(data[key], device);
|
|
@@ -799,7 +795,7 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
799
795
|
}
|
|
800
796
|
}
|
|
801
797
|
else {
|
|
802
|
-
type =
|
|
798
|
+
type = "raw";
|
|
803
799
|
data = payload.data;
|
|
804
800
|
const name = Zcl.Utils.getCluster(payload.clusterID, device.manufacturerID, device.customClusters).name;
|
|
805
801
|
clusterName = Number.isNaN(Number(name)) ? name : Number(name);
|
|
@@ -807,7 +803,7 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
807
803
|
if (type && data) {
|
|
808
804
|
const linkquality = payload.linkquality;
|
|
809
805
|
const groupID = payload.groupID;
|
|
810
|
-
this.selfAndDeviceEmit(device,
|
|
806
|
+
this.selfAndDeviceEmit(device, "message", {
|
|
811
807
|
type,
|
|
812
808
|
device,
|
|
813
809
|
endpoint,
|
|
@@ -817,10 +813,10 @@ class Controller extends node_events_1.default.EventEmitter {
|
|
|
817
813
|
cluster: clusterName,
|
|
818
814
|
meta,
|
|
819
815
|
});
|
|
820
|
-
this.selfAndDeviceEmit(device,
|
|
816
|
+
this.selfAndDeviceEmit(device, "lastSeenChanged", { device, reason: "messageEmitted" });
|
|
821
817
|
}
|
|
822
818
|
else {
|
|
823
|
-
this.selfAndDeviceEmit(device,
|
|
819
|
+
this.selfAndDeviceEmit(device, "lastSeenChanged", { device, reason: "messageNonEmitted" });
|
|
824
820
|
}
|
|
825
821
|
if (frame) {
|
|
826
822
|
await device.onZclData(payload, frame, endpoint);
|