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.
Files changed (728) hide show
  1. package/.github/dependabot.yml +4 -0
  2. package/.github/workflows/ci.yml +3 -5
  3. package/.github/workflows/stale.yml +1 -1
  4. package/.github/workflows/typedoc.yaml +1 -1
  5. package/.release-please-manifest.json +1 -1
  6. package/.vscode/extensions.json +3 -0
  7. package/.vscode/settings.json +11 -0
  8. package/CHANGELOG.md +32 -0
  9. package/biome.json +89 -0
  10. package/dist/adapter/adapter.d.ts +11 -11
  11. package/dist/adapter/adapter.d.ts.map +1 -1
  12. package/dist/adapter/adapter.js +14 -14
  13. package/dist/adapter/adapterDiscovery.d.ts +6 -6
  14. package/dist/adapter/adapterDiscovery.d.ts.map +1 -1
  15. package/dist/adapter/adapterDiscovery.js +139 -141
  16. package/dist/adapter/adapterDiscovery.js.map +1 -1
  17. package/dist/adapter/const.d.ts +1 -1
  18. package/dist/adapter/const.js +2 -2
  19. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +16 -16
  20. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
  21. package/dist/adapter/deconz/adapter/deconzAdapter.js +95 -100
  22. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
  23. package/dist/adapter/deconz/driver/constants.d.ts +5 -5
  24. package/dist/adapter/deconz/driver/constants.d.ts.map +1 -1
  25. package/dist/adapter/deconz/driver/driver.d.ts +9 -9
  26. package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
  27. package/dist/adapter/deconz/driver/driver.js +112 -106
  28. package/dist/adapter/deconz/driver/driver.js.map +1 -1
  29. package/dist/adapter/deconz/driver/frame.d.ts +1 -1
  30. package/dist/adapter/deconz/driver/frame.d.ts.map +1 -1
  31. package/dist/adapter/deconz/driver/frame.js +1 -2
  32. package/dist/adapter/deconz/driver/frame.js.map +1 -1
  33. package/dist/adapter/deconz/driver/frameParser.d.ts +1 -1
  34. package/dist/adapter/deconz/driver/frameParser.d.ts.map +1 -1
  35. package/dist/adapter/deconz/driver/frameParser.js +66 -70
  36. package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
  37. package/dist/adapter/deconz/driver/parser.d.ts +1 -1
  38. package/dist/adapter/deconz/driver/parser.d.ts.map +1 -1
  39. package/dist/adapter/deconz/driver/parser.js +2 -2
  40. package/dist/adapter/deconz/driver/parser.js.map +1 -1
  41. package/dist/adapter/deconz/driver/writer.d.ts +2 -2
  42. package/dist/adapter/deconz/driver/writer.d.ts.map +1 -1
  43. package/dist/adapter/deconz/driver/writer.js +1 -1
  44. package/dist/adapter/ember/adapter/emberAdapter.d.ts +19 -19
  45. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
  46. package/dist/adapter/ember/adapter/emberAdapter.js +117 -97
  47. package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
  48. package/dist/adapter/ember/adapter/endpoints.d.ts +1 -1
  49. package/dist/adapter/ember/adapter/endpoints.d.ts.map +1 -1
  50. package/dist/adapter/ember/adapter/oneWaitress.d.ts +5 -5
  51. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
  52. package/dist/adapter/ember/adapter/oneWaitress.js +2 -2
  53. package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
  54. package/dist/adapter/ember/adapter/tokensManager.d.ts +3 -3
  55. package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -1
  56. package/dist/adapter/ember/adapter/tokensManager.js +20 -23
  57. package/dist/adapter/ember/adapter/tokensManager.js.map +1 -1
  58. package/dist/adapter/ember/enums.d.ts +4 -4
  59. package/dist/adapter/ember/enums.d.ts.map +1 -1
  60. package/dist/adapter/ember/enums.js +4 -6
  61. package/dist/adapter/ember/enums.js.map +1 -1
  62. package/dist/adapter/ember/ezsp/buffalo.d.ts +4 -4
  63. package/dist/adapter/ember/ezsp/buffalo.d.ts.map +1 -1
  64. package/dist/adapter/ember/ezsp/buffalo.js +30 -32
  65. package/dist/adapter/ember/ezsp/buffalo.js.map +1 -1
  66. package/dist/adapter/ember/ezsp/ezsp.d.ts +46 -46
  67. package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
  68. package/dist/adapter/ember/ezsp/ezsp.js +85 -111
  69. package/dist/adapter/ember/ezsp/ezsp.js.map +1 -1
  70. package/dist/adapter/ember/ezspError.d.ts +1 -1
  71. package/dist/adapter/ember/types.d.ts +14 -14
  72. package/dist/adapter/ember/types.d.ts.map +1 -1
  73. package/dist/adapter/ember/uart/ash.d.ts +5 -5
  74. package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
  75. package/dist/adapter/ember/uart/ash.js +80 -71
  76. package/dist/adapter/ember/uart/ash.js.map +1 -1
  77. package/dist/adapter/ember/uart/parser.d.ts +2 -2
  78. package/dist/adapter/ember/uart/parser.d.ts.map +1 -1
  79. package/dist/adapter/ember/uart/parser.js +2 -1
  80. package/dist/adapter/ember/uart/parser.js.map +1 -1
  81. package/dist/adapter/ember/uart/queues.js +27 -29
  82. package/dist/adapter/ember/uart/queues.js.map +1 -1
  83. package/dist/adapter/ember/uart/writer.d.ts +1 -1
  84. package/dist/adapter/ember/uart/writer.d.ts.map +1 -1
  85. package/dist/adapter/ember/uart/writer.js +3 -5
  86. package/dist/adapter/ember/uart/writer.js.map +1 -1
  87. package/dist/adapter/ember/utils/initters.d.ts +2 -2
  88. package/dist/adapter/ember/utils/initters.d.ts.map +1 -1
  89. package/dist/adapter/ember/utils/initters.js +1 -1
  90. package/dist/adapter/ember/utils/math.js +1 -1
  91. package/dist/adapter/events.d.ts +1 -1
  92. package/dist/adapter/events.d.ts.map +1 -1
  93. package/dist/adapter/ezsp/adapter/backup.d.ts +3 -3
  94. package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
  95. package/dist/adapter/ezsp/adapter/backup.js +8 -10
  96. package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
  97. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +12 -12
  98. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  99. package/dist/adapter/ezsp/adapter/ezspAdapter.js +45 -44
  100. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
  101. package/dist/adapter/ezsp/driver/driver.d.ts +12 -12
  102. package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
  103. package/dist/adapter/ezsp/driver/driver.js +148 -141
  104. package/dist/adapter/ezsp/driver/driver.js.map +1 -1
  105. package/dist/adapter/ezsp/driver/ezsp.d.ts +7 -7
  106. package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
  107. package/dist/adapter/ezsp/driver/ezsp.js +61 -59
  108. package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
  109. package/dist/adapter/ezsp/driver/frame.js +2 -2
  110. package/dist/adapter/ezsp/driver/index.d.ts +2 -2
  111. package/dist/adapter/ezsp/driver/multicast.d.ts +8 -5
  112. package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -1
  113. package/dist/adapter/ezsp/driver/multicast.js +9 -9
  114. package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
  115. package/dist/adapter/ezsp/driver/parser.d.ts +1 -1
  116. package/dist/adapter/ezsp/driver/parser.js +3 -3
  117. package/dist/adapter/ezsp/driver/types/basic.d.ts +5 -5
  118. package/dist/adapter/ezsp/driver/types/basic.d.ts.map +1 -1
  119. package/dist/adapter/ezsp/driver/types/basic.js +12 -33
  120. package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
  121. package/dist/adapter/ezsp/driver/types/index.d.ts +3 -3
  122. package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
  123. package/dist/adapter/ezsp/driver/types/index.js +8 -9
  124. package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
  125. package/dist/adapter/ezsp/driver/types/named.d.ts +2 -2
  126. package/dist/adapter/ezsp/driver/types/named.d.ts.map +1 -1
  127. package/dist/adapter/ezsp/driver/types/named.js +8 -11
  128. package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
  129. package/dist/adapter/ezsp/driver/types/struct.d.ts +2 -2
  130. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
  131. package/dist/adapter/ezsp/driver/types/struct.js +207 -214
  132. package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
  133. package/dist/adapter/ezsp/driver/uart.d.ts +2 -2
  134. package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
  135. package/dist/adapter/ezsp/driver/uart.js +48 -37
  136. package/dist/adapter/ezsp/driver/uart.js.map +1 -1
  137. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +3 -3
  138. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts.map +1 -1
  139. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +16 -34
  140. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +1 -1
  141. package/dist/adapter/ezsp/driver/utils/index.d.ts +4 -4
  142. package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -1
  143. package/dist/adapter/ezsp/driver/utils/index.js +4 -4
  144. package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
  145. package/dist/adapter/ezsp/driver/writer.d.ts +1 -1
  146. package/dist/adapter/ezsp/driver/writer.js +2 -2
  147. package/dist/adapter/index.d.ts +3 -3
  148. package/dist/adapter/serialPort.d.ts +3 -3
  149. package/dist/adapter/serialPort.d.ts.map +1 -1
  150. package/dist/adapter/serialPort.js +1 -0
  151. package/dist/adapter/serialPort.js.map +1 -1
  152. package/dist/adapter/socketPortUtils.js +3 -3
  153. package/dist/adapter/tstype.d.ts +6 -6
  154. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +4 -4
  155. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
  156. package/dist/adapter/z-stack/adapter/adapter-backup.js +106 -119
  157. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
  158. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +10 -10
  159. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts.map +1 -1
  160. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +23 -24
  161. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
  162. package/dist/adapter/z-stack/adapter/manager.d.ts +6 -6
  163. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
  164. package/dist/adapter/z-stack/adapter/manager.js +116 -127
  165. package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
  166. package/dist/adapter/z-stack/adapter/tstype.d.ts +3 -3
  167. package/dist/adapter/z-stack/adapter/tstype.js +3 -3
  168. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +10 -10
  169. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  170. package/dist/adapter/z-stack/adapter/zStackAdapter.js +125 -137
  171. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  172. package/dist/adapter/z-stack/constants/common.d.ts.map +1 -1
  173. package/dist/adapter/z-stack/constants/common.js +0 -3
  174. package/dist/adapter/z-stack/constants/common.js.map +1 -1
  175. package/dist/adapter/z-stack/constants/index.d.ts +10 -10
  176. package/dist/adapter/z-stack/constants/index.d.ts.map +1 -1
  177. package/dist/adapter/z-stack/constants/index.js +2 -2
  178. package/dist/adapter/z-stack/constants/index.js.map +1 -1
  179. package/dist/adapter/z-stack/constants/utils.d.ts +1 -1
  180. package/dist/adapter/z-stack/constants/utils.js +2 -2
  181. package/dist/adapter/z-stack/constants/utils.js.map +1 -1
  182. package/dist/adapter/z-stack/models/startup-options.d.ts +2 -2
  183. package/dist/adapter/z-stack/models/startup-options.d.ts.map +1 -1
  184. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +1 -1
  185. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts.map +1 -1
  186. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +4 -5
  187. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +1 -1
  188. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +2 -2
  189. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts.map +1 -1
  190. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +3 -4
  191. package/dist/adapter/z-stack/structs/entries/address-manager-table.js.map +1 -1
  192. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +1 -1
  193. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts.map +1 -1
  194. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +1 -2
  195. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js.map +1 -1
  196. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +2 -2
  197. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts.map +1 -1
  198. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +3 -4
  199. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js.map +1 -1
  200. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +1 -1
  201. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts.map +1 -1
  202. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +6 -7
  203. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js.map +1 -1
  204. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +2 -2
  205. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts.map +1 -1
  206. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +3 -4
  207. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js.map +1 -1
  208. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +1 -1
  209. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts.map +1 -1
  210. package/dist/adapter/z-stack/structs/entries/channel-list.js +1 -2
  211. package/dist/adapter/z-stack/structs/entries/channel-list.js.map +1 -1
  212. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +1 -1
  213. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts.map +1 -1
  214. package/dist/adapter/z-stack/structs/entries/has-configured.js +2 -3
  215. package/dist/adapter/z-stack/structs/entries/has-configured.js.map +1 -1
  216. package/dist/adapter/z-stack/structs/entries/index.d.ts +16 -16
  217. package/dist/adapter/z-stack/structs/entries/nib.d.ts +1 -1
  218. package/dist/adapter/z-stack/structs/entries/nib.d.ts.map +1 -1
  219. package/dist/adapter/z-stack/structs/entries/nib.js +49 -50
  220. package/dist/adapter/z-stack/structs/entries/nib.js.map +1 -1
  221. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +1 -1
  222. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts.map +1 -1
  223. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +1 -2
  224. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js.map +1 -1
  225. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +1 -1
  226. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts.map +1 -1
  227. package/dist/adapter/z-stack/structs/entries/nwk-key.js +1 -2
  228. package/dist/adapter/z-stack/structs/entries/nwk-key.js.map +1 -1
  229. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +1 -1
  230. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts.map +1 -1
  231. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +1 -2
  232. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js.map +1 -1
  233. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +1 -1
  234. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts.map +1 -1
  235. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +3 -4
  236. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js.map +1 -1
  237. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +2 -2
  238. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts.map +1 -1
  239. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +3 -4
  240. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js.map +1 -1
  241. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +1 -1
  242. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts.map +1 -1
  243. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +4 -5
  244. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +1 -1
  245. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +2 -2
  246. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts.map +1 -1
  247. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +3 -4
  248. package/dist/adapter/z-stack/structs/entries/security-manager-table.js.map +1 -1
  249. package/dist/adapter/z-stack/structs/index.d.ts +4 -4
  250. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +2 -2
  251. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts.map +1 -1
  252. package/dist/adapter/z-stack/structs/struct.d.ts +8 -8
  253. package/dist/adapter/z-stack/structs/struct.d.ts.map +1 -1
  254. package/dist/adapter/z-stack/structs/struct.js +42 -43
  255. package/dist/adapter/z-stack/structs/struct.js.map +1 -1
  256. package/dist/adapter/z-stack/structs/table.d.ts +3 -3
  257. package/dist/adapter/z-stack/structs/table.d.ts.map +1 -1
  258. package/dist/adapter/z-stack/structs/table.js +10 -10
  259. package/dist/adapter/z-stack/structs/table.js.map +1 -1
  260. package/dist/adapter/z-stack/unpi/frame.d.ts +1 -1
  261. package/dist/adapter/z-stack/unpi/frame.d.ts.map +1 -1
  262. package/dist/adapter/z-stack/unpi/frame.js +2 -4
  263. package/dist/adapter/z-stack/unpi/frame.js.map +1 -1
  264. package/dist/adapter/z-stack/unpi/index.d.ts +4 -4
  265. package/dist/adapter/z-stack/unpi/parser.d.ts +1 -1
  266. package/dist/adapter/z-stack/unpi/parser.js +3 -3
  267. package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
  268. package/dist/adapter/z-stack/unpi/writer.d.ts +2 -2
  269. package/dist/adapter/z-stack/unpi/writer.d.ts.map +1 -1
  270. package/dist/adapter/z-stack/unpi/writer.js +1 -1
  271. package/dist/adapter/z-stack/utils/index.d.ts +2 -2
  272. package/dist/adapter/z-stack/utils/network-options.d.ts +1 -1
  273. package/dist/adapter/z-stack/utils/network-options.d.ts.map +1 -1
  274. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +3 -3
  275. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts.map +1 -1
  276. package/dist/adapter/z-stack/znp/buffaloZnp.js +34 -20
  277. package/dist/adapter/z-stack/znp/buffaloZnp.js.map +1 -1
  278. package/dist/adapter/z-stack/znp/definition.d.ts +2 -2
  279. package/dist/adapter/z-stack/znp/definition.d.ts.map +1 -1
  280. package/dist/adapter/z-stack/znp/definition.js +1111 -1111
  281. package/dist/adapter/z-stack/znp/index.d.ts +2 -2
  282. package/dist/adapter/z-stack/znp/tstype.d.ts +7 -7
  283. package/dist/adapter/z-stack/znp/tstype.d.ts.map +1 -1
  284. package/dist/adapter/z-stack/znp/utils.d.ts +1 -1
  285. package/dist/adapter/z-stack/znp/utils.d.ts.map +1 -1
  286. package/dist/adapter/z-stack/znp/utils.js +2 -2
  287. package/dist/adapter/z-stack/znp/znp.d.ts +7 -7
  288. package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
  289. package/dist/adapter/z-stack/znp/znp.js +46 -45
  290. package/dist/adapter/z-stack/znp/znp.js.map +1 -1
  291. package/dist/adapter/z-stack/znp/zpiObject.d.ts +8 -8
  292. package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +1 -1
  293. package/dist/adapter/z-stack/znp/zpiObject.js +6 -6
  294. package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
  295. package/dist/adapter/zboss/adapter/zbossAdapter.d.ts +11 -11
  296. package/dist/adapter/zboss/adapter/zbossAdapter.d.ts.map +1 -1
  297. package/dist/adapter/zboss/adapter/zbossAdapter.js +37 -36
  298. package/dist/adapter/zboss/adapter/zbossAdapter.js.map +1 -1
  299. package/dist/adapter/zboss/commands.d.ts +4 -6
  300. package/dist/adapter/zboss/commands.d.ts.map +1 -1
  301. package/dist/adapter/zboss/commands.js +321 -287
  302. package/dist/adapter/zboss/commands.js.map +1 -1
  303. package/dist/adapter/zboss/driver.d.ts +9 -9
  304. package/dist/adapter/zboss/driver.d.ts.map +1 -1
  305. package/dist/adapter/zboss/driver.js +25 -25
  306. package/dist/adapter/zboss/driver.js.map +1 -1
  307. package/dist/adapter/zboss/frame.d.ts +9 -9
  308. package/dist/adapter/zboss/frame.d.ts.map +1 -1
  309. package/dist/adapter/zboss/frame.js +15 -15
  310. package/dist/adapter/zboss/frame.js.map +1 -1
  311. package/dist/adapter/zboss/reader.d.ts +2 -2
  312. package/dist/adapter/zboss/reader.d.ts.map +1 -1
  313. package/dist/adapter/zboss/reader.js +6 -5
  314. package/dist/adapter/zboss/reader.js.map +1 -1
  315. package/dist/adapter/zboss/uart.d.ts +3 -3
  316. package/dist/adapter/zboss/uart.d.ts.map +1 -1
  317. package/dist/adapter/zboss/uart.js +36 -36
  318. package/dist/adapter/zboss/uart.js.map +1 -1
  319. package/dist/adapter/zboss/writer.d.ts +1 -1
  320. package/dist/adapter/zboss/writer.d.ts.map +1 -1
  321. package/dist/adapter/zboss/writer.js +3 -5
  322. package/dist/adapter/zboss/writer.js.map +1 -1
  323. package/dist/adapter/zigate/adapter/patchZdoBuffaloBE.js +2 -2
  324. package/dist/adapter/zigate/adapter/patchZdoBuffaloBE.js.map +1 -1
  325. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +14 -14
  326. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
  327. package/dist/adapter/zigate/adapter/zigateAdapter.js +52 -53
  328. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
  329. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +6 -6
  330. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -1
  331. package/dist/adapter/zigate/driver/buffaloZiGate.js +41 -23
  332. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
  333. package/dist/adapter/zigate/driver/commandType.d.ts +2 -2
  334. package/dist/adapter/zigate/driver/commandType.d.ts.map +1 -1
  335. package/dist/adapter/zigate/driver/commandType.js +37 -37
  336. package/dist/adapter/zigate/driver/commandType.js.map +1 -1
  337. package/dist/adapter/zigate/driver/constants.d.ts +27 -200
  338. package/dist/adapter/zigate/driver/constants.d.ts.map +1 -1
  339. package/dist/adapter/zigate/driver/constants.js +40 -236
  340. package/dist/adapter/zigate/driver/constants.js.map +1 -1
  341. package/dist/adapter/zigate/driver/frame.d.ts.map +1 -1
  342. package/dist/adapter/zigate/driver/frame.js +4 -3
  343. package/dist/adapter/zigate/driver/frame.js.map +1 -1
  344. package/dist/adapter/zigate/driver/messageType.d.ts +1 -1
  345. package/dist/adapter/zigate/driver/messageType.js +76 -76
  346. package/dist/adapter/zigate/driver/ziGateObject.d.ts +3 -3
  347. package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -1
  348. package/dist/adapter/zigate/driver/ziGateObject.js +7 -6
  349. package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
  350. package/dist/adapter/zigate/driver/zigate.d.ts +8 -8
  351. package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
  352. package/dist/adapter/zigate/driver/zigate.js +59 -54
  353. package/dist/adapter/zigate/driver/zigate.js.map +1 -1
  354. package/dist/adapter/zoh/adapter/utils.js +1 -1
  355. package/dist/adapter/zoh/adapter/zohAdapter.d.ts +13 -13
  356. package/dist/adapter/zoh/adapter/zohAdapter.d.ts.map +1 -1
  357. package/dist/adapter/zoh/adapter/zohAdapter.js +101 -67
  358. package/dist/adapter/zoh/adapter/zohAdapter.js.map +1 -1
  359. package/dist/buffalo/buffalo.d.ts +2 -2
  360. package/dist/buffalo/buffalo.js +4 -4
  361. package/dist/buffalo/buffalo.js.map +1 -1
  362. package/dist/buffalo/index.d.ts +1 -1
  363. package/dist/controller/controller.d.ts +7 -7
  364. package/dist/controller/controller.d.ts.map +1 -1
  365. package/dist/controller/controller.js +94 -98
  366. package/dist/controller/controller.js.map +1 -1
  367. package/dist/controller/database.d.ts +1 -1
  368. package/dist/controller/database.d.ts.map +1 -1
  369. package/dist/controller/database.js +9 -9
  370. package/dist/controller/database.js.map +1 -1
  371. package/dist/controller/events.d.ts +6 -6
  372. package/dist/controller/events.d.ts.map +1 -1
  373. package/dist/controller/greenPower.d.ts +21 -21
  374. package/dist/controller/greenPower.d.ts.map +1 -1
  375. package/dist/controller/greenPower.js +41 -41
  376. package/dist/controller/greenPower.js.map +1 -1
  377. package/dist/controller/helpers/index.d.ts +1 -1
  378. package/dist/controller/helpers/request.d.ts +2 -2
  379. package/dist/controller/helpers/request.d.ts.map +1 -1
  380. package/dist/controller/helpers/request.js +31 -27
  381. package/dist/controller/helpers/request.js.map +1 -1
  382. package/dist/controller/helpers/requestQueue.d.ts +3 -3
  383. package/dist/controller/helpers/requestQueue.d.ts.map +1 -1
  384. package/dist/controller/helpers/requestQueue.js +20 -20
  385. package/dist/controller/helpers/requestQueue.js.map +1 -1
  386. package/dist/controller/helpers/zclFrameConverter.d.ts +2 -2
  387. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  388. package/dist/controller/helpers/zclFrameConverter.js +1 -1
  389. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  390. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +6 -4
  391. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts.map +1 -1
  392. package/dist/controller/helpers/zclTransactionSequenceNumber.js +6 -5
  393. package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +1 -1
  394. package/dist/controller/index.d.ts +1 -1
  395. package/dist/controller/model/device.d.ts +23 -19
  396. package/dist/controller/model/device.d.ts.map +1 -1
  397. package/dist/controller/model/device.js +153 -128
  398. package/dist/controller/model/device.js.map +1 -1
  399. package/dist/controller/model/endpoint.d.ts +11 -11
  400. package/dist/controller/model/endpoint.d.ts.map +1 -1
  401. package/dist/controller/model/endpoint.js +84 -67
  402. package/dist/controller/model/endpoint.js.map +1 -1
  403. package/dist/controller/model/entity.d.ts +3 -3
  404. package/dist/controller/model/entity.d.ts.map +1 -1
  405. package/dist/controller/model/group.d.ts +4 -4
  406. package/dist/controller/model/group.d.ts.map +1 -1
  407. package/dist/controller/model/group.js +21 -9
  408. package/dist/controller/model/group.js.map +1 -1
  409. package/dist/controller/model/index.d.ts +4 -4
  410. package/dist/controller/touchlink.d.ts +1 -1
  411. package/dist/controller/touchlink.d.ts.map +1 -1
  412. package/dist/controller/touchlink.js +11 -11
  413. package/dist/controller/tstype.d.ts +3 -3
  414. package/dist/index.d.ts +10 -10
  415. package/dist/models/backup-storage-legacy.d.ts +14 -16
  416. package/dist/models/backup-storage-legacy.d.ts.map +1 -1
  417. package/dist/models/backup-storage-unified.d.ts +1 -1
  418. package/dist/models/backup.d.ts +2 -2
  419. package/dist/models/backup.d.ts.map +1 -1
  420. package/dist/models/index.d.ts +4 -4
  421. package/dist/utils/backup.d.ts +1 -1
  422. package/dist/utils/backup.d.ts.map +1 -1
  423. package/dist/utils/backup.js +26 -26
  424. package/dist/utils/backup.js.map +1 -1
  425. package/dist/utils/index.d.ts +5 -5
  426. package/dist/utils/logger.js +3 -3
  427. package/dist/utils/patchBigIntSerialization.js +1 -1
  428. package/dist/utils/patchBigIntSerialization.js.map +1 -1
  429. package/dist/utils/queue.d.ts.map +1 -1
  430. package/dist/utils/queue.js +1 -0
  431. package/dist/utils/queue.js.map +1 -1
  432. package/dist/utils/utils.d.ts.map +1 -1
  433. package/dist/utils/utils.js +5 -4
  434. package/dist/utils/utils.js.map +1 -1
  435. package/dist/utils/waitress.d.ts +1 -1
  436. package/dist/utils/waitress.js +3 -3
  437. package/dist/zspec/consts.d.ts +1 -1
  438. package/dist/zspec/consts.d.ts.map +1 -1
  439. package/dist/zspec/consts.js +1 -1
  440. package/dist/zspec/index.d.ts +3 -3
  441. package/dist/zspec/tstypes.d.ts +1 -1
  442. package/dist/zspec/utils.d.ts +4 -4
  443. package/dist/zspec/utils.d.ts.map +1 -1
  444. package/dist/zspec/utils.js +9 -13
  445. package/dist/zspec/utils.js.map +1 -1
  446. package/dist/zspec/zcl/buffaloZcl.d.ts +3 -3
  447. package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -1
  448. package/dist/zspec/zcl/buffaloZcl.js +127 -84
  449. package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
  450. package/dist/zspec/zcl/definition/cluster.d.ts +1 -1
  451. package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
  452. package/dist/zspec/zcl/definition/cluster.js +1280 -911
  453. package/dist/zspec/zcl/definition/cluster.js.map +1 -1
  454. package/dist/zspec/zcl/definition/consts.js +7 -7
  455. package/dist/zspec/zcl/definition/foundation.d.ts +3 -3
  456. package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
  457. package/dist/zspec/zcl/definition/foundation.js +88 -89
  458. package/dist/zspec/zcl/definition/foundation.js.map +1 -1
  459. package/dist/zspec/zcl/definition/manufacturerCode.d.ts +1 -1
  460. package/dist/zspec/zcl/definition/manufacturerCode.js +1 -1
  461. package/dist/zspec/zcl/definition/manufacturerCode.js.map +1 -1
  462. package/dist/zspec/zcl/definition/status.d.ts +3 -3
  463. package/dist/zspec/zcl/definition/status.js +3 -3
  464. package/dist/zspec/zcl/definition/tstype.d.ts +3 -3
  465. package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
  466. package/dist/zspec/zcl/index.d.ts +10 -10
  467. package/dist/zspec/zcl/utils.d.ts +3 -3
  468. package/dist/zspec/zcl/utils.d.ts.map +1 -1
  469. package/dist/zspec/zcl/utils.js +18 -21
  470. package/dist/zspec/zcl/utils.js.map +1 -1
  471. package/dist/zspec/zcl/zclFrame.d.ts +7 -7
  472. package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
  473. package/dist/zspec/zcl/zclFrame.js +38 -41
  474. package/dist/zspec/zcl/zclFrame.js.map +1 -1
  475. package/dist/zspec/zcl/zclHeader.d.ts +2 -2
  476. package/dist/zspec/zcl/zclHeader.d.ts.map +1 -1
  477. package/dist/zspec/zcl/zclHeader.js +3 -3
  478. package/dist/zspec/zcl/zclStatusError.d.ts +1 -1
  479. package/dist/zspec/zdo/buffaloZdo.d.ts +7 -7
  480. package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -1
  481. package/dist/zspec/zdo/buffaloZdo.js +4 -4
  482. package/dist/zspec/zdo/buffaloZdo.js.map +1 -1
  483. package/dist/zspec/zdo/definition/status.d.ts +1 -1
  484. package/dist/zspec/zdo/definition/status.js +1 -1
  485. package/dist/zspec/zdo/definition/tstypes.d.ts +48 -48
  486. package/dist/zspec/zdo/definition/tstypes.d.ts.map +1 -1
  487. package/dist/zspec/zdo/index.d.ts +7 -7
  488. package/dist/zspec/zdo/utils.d.ts +2 -2
  489. package/dist/zspec/zdo/utils.d.ts.map +1 -1
  490. package/dist/zspec/zdo/utils.js +1 -1
  491. package/dist/zspec/zdo/utils.js.map +1 -1
  492. package/dist/zspec/zdo/zdoStatusError.d.ts +1 -1
  493. package/examples/join-and-log.js +5 -5
  494. package/package.json +4 -11
  495. package/src/adapter/adapter.ts +189 -0
  496. package/src/adapter/adapterDiscovery.ts +653 -0
  497. package/src/adapter/const.ts +12 -0
  498. package/src/adapter/deconz/adapter/deconzAdapter.ts +768 -0
  499. package/src/adapter/deconz/driver/constants.ts +180 -0
  500. package/src/adapter/deconz/driver/driver.ts +900 -0
  501. package/src/adapter/deconz/driver/frame.ts +11 -0
  502. package/src/adapter/deconz/driver/frameParser.ts +557 -0
  503. package/src/adapter/deconz/driver/parser.ts +45 -0
  504. package/src/adapter/deconz/driver/writer.ts +22 -0
  505. package/src/adapter/deconz/types.d.ts +13 -0
  506. package/src/adapter/ember/adapter/emberAdapter.ts +2266 -0
  507. package/src/adapter/ember/adapter/endpoints.ts +86 -0
  508. package/src/adapter/ember/adapter/oneWaitress.ts +322 -0
  509. package/src/adapter/ember/adapter/tokensManager.ts +782 -0
  510. package/src/adapter/ember/consts.ts +178 -0
  511. package/src/adapter/ember/enums.ts +2123 -0
  512. package/src/adapter/ember/ezsp/buffalo.ts +1397 -0
  513. package/src/adapter/ember/ezsp/consts.ts +148 -0
  514. package/src/adapter/ember/ezsp/enums.ts +1087 -0
  515. package/src/adapter/ember/ezsp/ezsp.ts +8985 -0
  516. package/src/adapter/ember/ezspError.ts +10 -0
  517. package/src/adapter/ember/types.ts +866 -0
  518. package/src/adapter/ember/uart/ash.ts +1969 -0
  519. package/src/adapter/ember/uart/consts.ts +109 -0
  520. package/src/adapter/ember/uart/enums.ts +192 -0
  521. package/src/adapter/ember/uart/parser.ts +48 -0
  522. package/src/adapter/ember/uart/queues.ts +247 -0
  523. package/src/adapter/ember/uart/writer.ts +53 -0
  524. package/src/adapter/ember/utils/initters.ts +58 -0
  525. package/src/adapter/ember/utils/math.ts +73 -0
  526. package/src/adapter/events.ts +21 -0
  527. package/src/adapter/ezsp/adapter/backup.ts +109 -0
  528. package/src/adapter/ezsp/adapter/ezspAdapter.ts +614 -0
  529. package/src/adapter/ezsp/driver/commands.ts +2497 -0
  530. package/src/adapter/ezsp/driver/consts.ts +11 -0
  531. package/src/adapter/ezsp/driver/driver.ts +1002 -0
  532. package/src/adapter/ezsp/driver/ezsp.ts +802 -0
  533. package/src/adapter/ezsp/driver/frame.ts +101 -0
  534. package/src/adapter/ezsp/driver/index.ts +4 -0
  535. package/src/adapter/ezsp/driver/multicast.ts +78 -0
  536. package/src/adapter/ezsp/driver/parser.ts +81 -0
  537. package/src/adapter/ezsp/driver/types/basic.ts +201 -0
  538. package/src/adapter/ezsp/driver/types/index.ts +239 -0
  539. package/src/adapter/ezsp/driver/types/named.ts +2330 -0
  540. package/src/adapter/ezsp/driver/types/struct.ts +844 -0
  541. package/src/adapter/ezsp/driver/uart.ts +460 -0
  542. package/src/adapter/ezsp/driver/utils/crc16ccitt.ts +44 -0
  543. package/src/adapter/ezsp/driver/utils/index.ts +32 -0
  544. package/src/adapter/ezsp/driver/writer.ts +64 -0
  545. package/src/adapter/index.ts +3 -0
  546. package/src/adapter/serialPort.ts +58 -0
  547. package/src/adapter/socketPortUtils.ts +16 -0
  548. package/src/adapter/tstype.ts +78 -0
  549. package/src/adapter/z-stack/adapter/adapter-backup.ts +519 -0
  550. package/src/adapter/z-stack/adapter/adapter-nv-memory.ts +457 -0
  551. package/src/adapter/z-stack/adapter/endpoints.ts +57 -0
  552. package/src/adapter/z-stack/adapter/manager.ts +544 -0
  553. package/src/adapter/z-stack/adapter/tstype.ts +6 -0
  554. package/src/adapter/z-stack/adapter/zStackAdapter.ts +1190 -0
  555. package/src/adapter/z-stack/constants/af.ts +27 -0
  556. package/src/adapter/z-stack/constants/common.ts +285 -0
  557. package/src/adapter/z-stack/constants/dbg.ts +23 -0
  558. package/src/adapter/z-stack/constants/index.ts +11 -0
  559. package/src/adapter/z-stack/constants/mac.ts +128 -0
  560. package/src/adapter/z-stack/constants/sapi.ts +25 -0
  561. package/src/adapter/z-stack/constants/sys.ts +72 -0
  562. package/src/adapter/z-stack/constants/util.ts +82 -0
  563. package/src/adapter/z-stack/constants/utils.ts +14 -0
  564. package/src/adapter/z-stack/constants/zdo.ts +103 -0
  565. package/src/adapter/z-stack/models/startup-options.ts +13 -0
  566. package/src/adapter/z-stack/structs/entries/address-manager-entry.ts +44 -0
  567. package/src/adapter/z-stack/structs/entries/address-manager-table.ts +19 -0
  568. package/src/adapter/z-stack/structs/entries/aps-link-key-data-entry.ts +12 -0
  569. package/src/adapter/z-stack/structs/entries/aps-link-key-data-table.ts +21 -0
  570. package/src/adapter/z-stack/structs/entries/aps-tc-link-key-entry.ts +19 -0
  571. package/src/adapter/z-stack/structs/entries/aps-tc-link-key-table.ts +21 -0
  572. package/src/adapter/z-stack/structs/entries/channel-list.ts +8 -0
  573. package/src/adapter/z-stack/structs/entries/has-configured.ts +16 -0
  574. package/src/adapter/z-stack/structs/entries/index.ts +16 -0
  575. package/src/adapter/z-stack/structs/entries/nib.ts +66 -0
  576. package/src/adapter/z-stack/structs/entries/nwk-key-descriptor.ts +15 -0
  577. package/src/adapter/z-stack/structs/entries/nwk-key.ts +13 -0
  578. package/src/adapter/z-stack/structs/entries/nwk-pan-id.ts +8 -0
  579. package/src/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.ts +20 -0
  580. package/src/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.ts +19 -0
  581. package/src/adapter/z-stack/structs/entries/security-manager-entry.ts +33 -0
  582. package/src/adapter/z-stack/structs/entries/security-manager-table.ts +22 -0
  583. package/src/adapter/z-stack/structs/index.ts +4 -0
  584. package/src/adapter/z-stack/structs/serializable-memory-object.ts +14 -0
  585. package/src/adapter/z-stack/structs/struct.ts +367 -0
  586. package/src/adapter/z-stack/structs/table.ts +198 -0
  587. package/src/adapter/z-stack/unpi/constants.ts +33 -0
  588. package/src/adapter/z-stack/unpi/frame.ts +62 -0
  589. package/src/adapter/z-stack/unpi/index.ts +4 -0
  590. package/src/adapter/z-stack/unpi/parser.ts +56 -0
  591. package/src/adapter/z-stack/unpi/writer.ts +21 -0
  592. package/src/adapter/z-stack/utils/channel-list.ts +40 -0
  593. package/src/adapter/z-stack/utils/index.ts +2 -0
  594. package/src/adapter/z-stack/utils/network-options.ts +26 -0
  595. package/src/adapter/z-stack/znp/buffaloZnp.ts +175 -0
  596. package/src/adapter/z-stack/znp/definition.ts +2713 -0
  597. package/src/adapter/z-stack/znp/index.ts +2 -0
  598. package/src/adapter/z-stack/znp/parameterType.ts +22 -0
  599. package/src/adapter/z-stack/znp/tstype.ts +44 -0
  600. package/src/adapter/z-stack/znp/utils.ts +10 -0
  601. package/src/adapter/z-stack/znp/znp.ts +342 -0
  602. package/src/adapter/z-stack/znp/zpiObject.ts +148 -0
  603. package/src/adapter/zboss/adapter/zbossAdapter.ts +527 -0
  604. package/src/adapter/zboss/commands.ts +1184 -0
  605. package/src/adapter/zboss/consts.ts +9 -0
  606. package/src/adapter/zboss/driver.ts +423 -0
  607. package/src/adapter/zboss/enums.ts +360 -0
  608. package/src/adapter/zboss/frame.ts +227 -0
  609. package/src/adapter/zboss/reader.ts +65 -0
  610. package/src/adapter/zboss/types.ts +0 -0
  611. package/src/adapter/zboss/uart.ts +428 -0
  612. package/src/adapter/zboss/utils.ts +58 -0
  613. package/src/adapter/zboss/writer.ts +49 -0
  614. package/src/adapter/zigate/adapter/patchZdoBuffaloBE.ts +27 -0
  615. package/src/adapter/zigate/adapter/zigateAdapter.ts +618 -0
  616. package/src/adapter/zigate/driver/LICENSE +17 -0
  617. package/src/adapter/zigate/driver/buffaloZiGate.ts +212 -0
  618. package/src/adapter/zigate/driver/commandType.ts +418 -0
  619. package/src/adapter/zigate/driver/constants.ts +150 -0
  620. package/src/adapter/zigate/driver/frame.ts +197 -0
  621. package/src/adapter/zigate/driver/messageType.ts +287 -0
  622. package/src/adapter/zigate/driver/parameterType.ts +32 -0
  623. package/src/adapter/zigate/driver/ziGateObject.ts +146 -0
  624. package/src/adapter/zigate/driver/zigate.ts +426 -0
  625. package/src/adapter/zoh/adapter/utils.ts +27 -0
  626. package/src/adapter/zoh/adapter/zohAdapter.ts +837 -0
  627. package/src/buffalo/buffalo.ts +335 -0
  628. package/src/buffalo/index.ts +1 -0
  629. package/src/controller/controller.ts +1048 -0
  630. package/src/controller/database.ts +124 -0
  631. package/src/controller/events.ts +51 -0
  632. package/src/controller/greenPower.ts +603 -0
  633. package/src/controller/helpers/index.ts +1 -0
  634. package/src/controller/helpers/request.ts +94 -0
  635. package/src/controller/helpers/requestQueue.ts +125 -0
  636. package/src/controller/helpers/zclFrameConverter.ts +51 -0
  637. package/src/controller/helpers/zclTransactionSequenceNumber.ts +19 -0
  638. package/src/controller/index.ts +6 -0
  639. package/src/controller/model/device.ts +1320 -0
  640. package/src/controller/model/endpoint.ts +1040 -0
  641. package/src/controller/model/entity.ts +23 -0
  642. package/src/controller/model/group.ts +333 -0
  643. package/src/controller/model/index.ts +4 -0
  644. package/src/controller/touchlink.ts +189 -0
  645. package/src/controller/tstype.ts +39 -0
  646. package/src/index.ts +12 -0
  647. package/src/models/backup-storage-legacy.ts +48 -0
  648. package/src/models/backup-storage-unified.ts +47 -0
  649. package/src/models/backup.ts +37 -0
  650. package/src/models/index.ts +5 -0
  651. package/src/models/network-options.ts +11 -0
  652. package/src/utils/backup.ts +152 -0
  653. package/src/utils/index.ts +5 -0
  654. package/src/utils/logger.ts +20 -0
  655. package/src/utils/patchBigIntSerialization.ts +8 -0
  656. package/src/utils/queue.ts +76 -0
  657. package/src/utils/types.d.ts +3 -0
  658. package/src/utils/utils.ts +20 -0
  659. package/src/utils/wait.ts +5 -0
  660. package/src/utils/waitress.ts +95 -0
  661. package/src/zspec/consts.ts +84 -0
  662. package/src/zspec/enums.ts +22 -0
  663. package/src/zspec/index.ts +3 -0
  664. package/src/zspec/tstypes.ts +18 -0
  665. package/src/zspec/utils.ts +308 -0
  666. package/src/zspec/zcl/buffaloZcl.ts +1133 -0
  667. package/src/zspec/zcl/definition/cluster.ts +5766 -0
  668. package/src/zspec/zcl/definition/consts.ts +24 -0
  669. package/src/zspec/zcl/definition/enums.ts +194 -0
  670. package/src/zspec/zcl/definition/foundation.ts +301 -0
  671. package/src/zspec/zcl/definition/manufacturerCode.ts +729 -0
  672. package/src/zspec/zcl/definition/status.ts +69 -0
  673. package/src/zspec/zcl/definition/tstype.ts +268 -0
  674. package/src/zspec/zcl/index.ts +10 -0
  675. package/src/zspec/zcl/utils.ts +342 -0
  676. package/src/zspec/zcl/zclFrame.ts +336 -0
  677. package/src/zspec/zcl/zclHeader.ts +102 -0
  678. package/src/zspec/zcl/zclStatusError.ts +10 -0
  679. package/src/zspec/zdo/buffaloZdo.ts +2345 -0
  680. package/src/zspec/zdo/definition/clusters.ts +722 -0
  681. package/src/zspec/zdo/definition/consts.ts +16 -0
  682. package/src/zspec/zdo/definition/enums.ts +99 -0
  683. package/src/zspec/zdo/definition/status.ts +105 -0
  684. package/src/zspec/zdo/definition/tstypes.ts +1062 -0
  685. package/src/zspec/zdo/index.ts +7 -0
  686. package/src/zspec/zdo/utils.ts +76 -0
  687. package/src/zspec/zdo/zdoStatusError.ts +10 -0
  688. package/test/adapter/adapter.test.ts +1062 -0
  689. package/test/adapter/ember/ash.test.ts +337 -0
  690. package/test/adapter/ember/consts.ts +131 -0
  691. package/test/adapter/ember/emberAdapter.test.ts +3449 -0
  692. package/test/adapter/ember/ezsp.test.ts +386 -0
  693. package/test/adapter/ember/ezspBuffalo.test.ts +92 -0
  694. package/test/adapter/ember/ezspError.test.ts +11 -0
  695. package/test/adapter/ember/math.test.ts +205 -0
  696. package/test/adapter/ezsp/frame.test.ts +29 -0
  697. package/test/adapter/ezsp/uart.test.ts +180 -0
  698. package/test/adapter/z-stack/adapter.test.ts +3985 -0
  699. package/test/adapter/z-stack/constants.test.ts +32 -0
  700. package/test/adapter/z-stack/structs.test.ts +114 -0
  701. package/test/adapter/z-stack/unpi.test.ts +212 -0
  702. package/test/adapter/z-stack/znp.test.ts +1284 -0
  703. package/test/adapter/zboss/fixZdoResponse.test.ts +178 -0
  704. package/test/adapter/zigate/patchZdoBuffaloBE.test.ts +80 -0
  705. package/test/adapter/zigate/zdo.test.ts +187 -0
  706. package/test/adapter/zoh/utils.test.ts +35 -0
  707. package/test/adapter/zoh/zohAdapter.test.ts +1306 -0
  708. package/test/buffalo.test.ts +430 -0
  709. package/test/controller.test.ts +10005 -0
  710. package/test/greenpower.test.ts +1421 -0
  711. package/test/mockAdapters.ts +65 -0
  712. package/test/mockDevices.ts +472 -0
  713. package/test/testUtils.ts +20 -0
  714. package/test/tsconfig.json +10 -0
  715. package/test/utils/math.ts +19 -0
  716. package/test/utils.test.ts +227 -0
  717. package/test/vitest.config.mts +25 -0
  718. package/test/zcl.test.ts +2832 -0
  719. package/test/zspec/utils.test.ts +131 -0
  720. package/test/zspec/zcl/buffalo.test.ts +1231 -0
  721. package/test/zspec/zcl/frame.test.ts +925 -0
  722. package/test/zspec/zcl/utils.test.ts +280 -0
  723. package/test/zspec/zdo/buffalo.test.ts +1849 -0
  724. package/test/zspec/zdo/utils.test.ts +240 -0
  725. package/.github/workflows/update-dependencies.yml +0 -39
  726. package/.prettierignore +0 -2
  727. package/.prettierrc +0 -26
  728. package/eslint.config.mjs +0 -32
@@ -1,2 +1,2 @@
1
- export { Buffalo } from './buffalo';
1
+ export { Buffalo } from "./buffalo";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,9 +1,9 @@
1
- import events from 'node:events';
2
- import { TsType as AdapterTsType } from '../adapter';
3
- import * as Events from './events';
4
- import { Device } from './model';
5
- import Group from './model/group';
6
- import { DeviceType } from './tstype';
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: 'soft' | 'hard'): Promise<void>;
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":"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"}
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 = 'zh:controller';
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 === 'resumed') {
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 != adapterChannel) {
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 != undefined}, adapter: ${this.adapter != undefined}`, NS);
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('deviceJoined', this.onDeviceJoinedGreenPower.bind(this));
146
- this.greenPower.on('deviceLeave', this.onDeviceLeaveGreenPower.bind(this));
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('deviceJoined', this.onDeviceJoined.bind(this));
149
- this.adapter.on('zclPayload', this.onZclPayload.bind(this));
150
- this.adapter.on('zdoResponse', this.onZdoResponse.bind(this));
151
- this.adapter.on('disconnected', this.onAdapterDisconnected.bind(this));
152
- this.adapter.on('deviceLeave', this.onDeviceLeave.bind(this));
153
- if (startResult === 'reset') {
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('Clearing database...', NS);
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 === 'reset' || (this.options.backupPath && !node_fs_1.default.existsSync(this.options.backupPath))) {
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('Coordinator').length === 0) {
172
- logger_1.logger.debug('No coordinator in database, querying...', NS);
173
- const coordinator = model_1.Device.create('Coordinator', coordinatorIEEE, ZSpec.COORDINATOR_ADDRESS, this.adapter.manufacturerID, undefined, undefined, undefined, true, undefined);
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('Coordinator')[0];
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, key;
209
+ let ieeeAddr;
210
+ let keyStr;
209
211
  if (aqaraMatch) {
210
212
  ieeeAddr = aqaraMatch[1];
211
- key = aqaraMatch[2];
213
+ keyStr = aqaraMatch[2];
212
214
  }
213
215
  else if (pipeMatch) {
214
216
  ieeeAddr = pipeMatch[1];
215
- key = pipeMatch[2];
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
- key = installCode.substring(keyStart, installCode.length);
223
+ keyStr = installCode.substring(keyStart, installCode.length);
222
224
  }
223
225
  ieeeAddr = `0x${ieeeAddr}`;
224
226
  // match valid else asserted above
225
- key = Buffer.from(key.match(/.{1,2}/g).map((d) => parseInt(d, 16)));
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 === 'missing CRC') {
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, `Cannot permit join for more than 254 seconds.`);
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('permitJoinChanged', { permitted: false });
254
+ this.emit("permitJoinChanged", { permitted: false });
252
255
  this.permitJoinTimer = undefined;
253
256
  this.permitJoinEnd = undefined;
254
257
  }, timeMs);
255
- this.emit('permitJoinChanged', { permitted: true, time });
258
+ this.emit("permitJoinChanged", { permitted: true, time });
256
259
  }
257
260
  else {
258
- logger_1.logger.debug('Disable joining', NS);
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('permitJoinChanged', { permitted: false });
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('Creating coordinator backup', NS);
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 + '.tmp';
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 === 'Router' && !devicesInBackup.includes(d.ieeeAddr))) {
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
- else {
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
- else {
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, 'deviceNetworkAddressChanged', { 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, 'lastSeenChanged', { device, reason: 'networkAddress' });
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, 'lastSeenChanged', { device, reason: 'networkAddress' });
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, 'lastSeenChanged', { device, reason: 'deviceAnnounce' });
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, 'deviceAnnounce', { 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, 'deviceLeave', { ieeeAddr: device.ieeeAddr });
517
+ this.selfAndDeviceEmit(device, "deviceLeave", { ieeeAddr: device.ieeeAddr });
518
518
  }
519
519
  async onAdapterDisconnected() {
520
- logger_1.logger.debug(`Adapter disconnected`, NS);
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('adapterDisconnected');
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, 'HIDDEN')}' joined`, NS);
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('GreenPower', ieeeAddr, payload.networkAddress, undefined, undefined, undefined, modelID, true, payload.securityKey ? Array.from(payload.securityKey) : /* v8 ignore next */ undefined);
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, 'deviceJoined', { device });
543
- this.selfAndDeviceEmit(device, 'deviceInterview', { status: 'successful', 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(true);
548
- this.selfAndDeviceEmit(device, 'deviceJoined', { device });
549
- this.selfAndDeviceEmit(device, 'deviceInterview', { status: 'successful', device });
547
+ device.undelete();
548
+ this.selfAndDeviceEmit(device, "deviceJoined", { device });
549
+ this.selfAndDeviceEmit(device, "deviceInterview", { status: "successful", device });
550
550
  }
551
551
  }
552
- async onDeviceLeaveGreenPower(sourceID) {
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, 'deviceLeave', { ieeeAddr: device.ieeeAddr });
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
- else {
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('Unknown', payload.ieeeAddr, payload.networkAddress, undefined, undefined, undefined, undefined, false, undefined);
597
- this.selfAndDeviceEmit(device, 'deviceJoined', { 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, 'deviceJoined', { 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, 'lastSeenChanged', { device, reason: 'deviceJoined' });
608
+ this.selfAndDeviceEmit(device, "lastSeenChanged", { device, reason: "deviceJoined" });
611
609
  device.implicitCheckin();
612
- if (!device.interviewCompleted && !device.interviewing) {
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, 'deviceInterview', { status: 'started', 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, 'deviceInterview', { status: 'successful', 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, 'deviceInterview', { status: 'failed', 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}', completed '${device.interviewCompleted}', in progress '${device.interviewing}'`, NS);
624
+ logger_1.logger.debug(`Not interviewing '${payload.ieeeAddr}', interviewState=${device.interviewState}'`, NS);
627
625
  }
628
626
  }
629
- async onZdoResponse(clusterId, response) {
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
- else if (payload.clusterID === Zcl.Clusters.greenPower.ID) {
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(`Data is from unsupported green power device with IEEE addressing, skipping...`, NS);
676
+ logger_1.logger.debug("Data is from unsupported green power device with IEEE addressing, skipping...", NS);
679
677
  return;
680
678
  }
681
- else {
682
- const ieeeAddr = greenPower_1.default.sourceIdToIeeeAddress(frame.payload.srcID);
683
- device = model_1.Device.byIeeeAddr(ieeeAddr);
684
- frame = await this.greenPower.processCommand(payload, frame, device?.gpSecurityKey ? Buffer.from(device.gpSecurityKey) : undefined);
685
- // lookup encapsulated gpDevice for further processing (re-fetch, may have been created by above call)
686
- device = model_1.Device.byIeeeAddr(ieeeAddr);
687
- if (!device) {
688
- logger_1.logger.debug(`Data is from unknown green power device with address '${ieeeAddr}' (${frame.payload.srcID}), skipping...`, NS);
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 === 'LUMI' && device?.type == 'Router' && payload.groupID) {
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 === 'number') {
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('genPollCtrl')) {
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 'report': {
756
- type = 'attributeReport';
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 'read': {
761
- type = 'read';
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 'write': {
766
- type = 'write';
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 'readRsp': {
771
- type = 'readResponse';
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 'defaultRsp': {
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 === 'readResponse' || type === 'attributeReport') {
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.ReportablePropertiesMapping[key];
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 = 'raw';
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, 'message', {
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, 'lastSeenChanged', { device, reason: 'messageEmitted' });
816
+ this.selfAndDeviceEmit(device, "lastSeenChanged", { device, reason: "messageEmitted" });
821
817
  }
822
818
  else {
823
- this.selfAndDeviceEmit(device, 'lastSeenChanged', { device, reason: 'messageNonEmitted' });
819
+ this.selfAndDeviceEmit(device, "lastSeenChanged", { device, reason: "messageNonEmitted" });
824
820
  }
825
821
  if (frame) {
826
822
  await device.onZclData(payload, frame, endpoint);