zigbee-herdsman 3.0.4 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (786) hide show
  1. package/.github/workflows/ci.yml +1 -1
  2. package/.release-please-manifest.json +1 -1
  3. package/CHANGELOG.md +17 -0
  4. package/package.json +9 -28
  5. package/tsconfig.json +3 -1
  6. package/.babelrc.js +0 -3
  7. package/dist/adapter/adapter.d.ts +0 -63
  8. package/dist/adapter/adapter.d.ts.map +0 -1
  9. package/dist/adapter/adapter.js +0 -88
  10. package/dist/adapter/adapter.js.map +0 -1
  11. package/dist/adapter/adapterDiscovery.d.ts +0 -22
  12. package/dist/adapter/adapterDiscovery.d.ts.map +0 -1
  13. package/dist/adapter/adapterDiscovery.js +0 -468
  14. package/dist/adapter/adapterDiscovery.js.map +0 -1
  15. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +0 -58
  16. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +0 -1
  17. package/dist/adapter/deconz/adapter/deconzAdapter.js +0 -634
  18. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +0 -1
  19. package/dist/adapter/deconz/adapter/index.d.ts +0 -3
  20. package/dist/adapter/deconz/adapter/index.d.ts.map +0 -1
  21. package/dist/adapter/deconz/adapter/index.js +0 -9
  22. package/dist/adapter/deconz/adapter/index.js.map +0 -1
  23. package/dist/adapter/deconz/driver/constants.d.ts +0 -152
  24. package/dist/adapter/deconz/driver/constants.d.ts.map +0 -1
  25. package/dist/adapter/deconz/driver/constants.js +0 -56
  26. package/dist/adapter/deconz/driver/constants.js.map +0 -1
  27. package/dist/adapter/deconz/driver/driver.d.ts +0 -79
  28. package/dist/adapter/deconz/driver/driver.d.ts.map +0 -1
  29. package/dist/adapter/deconz/driver/driver.js +0 -779
  30. package/dist/adapter/deconz/driver/driver.js.map +0 -1
  31. package/dist/adapter/deconz/driver/frame.d.ts +0 -6
  32. package/dist/adapter/deconz/driver/frame.d.ts.map +0 -1
  33. package/dist/adapter/deconz/driver/frame.js +0 -14
  34. package/dist/adapter/deconz/driver/frame.js.map +0 -1
  35. package/dist/adapter/deconz/driver/frameParser.d.ts +0 -5
  36. package/dist/adapter/deconz/driver/frameParser.d.ts.map +0 -1
  37. package/dist/adapter/deconz/driver/frameParser.js +0 -530
  38. package/dist/adapter/deconz/driver/frameParser.js.map +0 -1
  39. package/dist/adapter/deconz/driver/parser.d.ts +0 -10
  40. package/dist/adapter/deconz/driver/parser.d.ts.map +0 -1
  41. package/dist/adapter/deconz/driver/parser.js +0 -39
  42. package/dist/adapter/deconz/driver/parser.js.map +0 -1
  43. package/dist/adapter/deconz/driver/writer.d.ts +0 -8
  44. package/dist/adapter/deconz/driver/writer.d.ts.map +0 -1
  45. package/dist/adapter/deconz/driver/writer.js +0 -53
  46. package/dist/adapter/deconz/driver/writer.js.map +0 -1
  47. package/dist/adapter/ember/adapter/emberAdapter.d.ts +0 -337
  48. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +0 -1
  49. package/dist/adapter/ember/adapter/emberAdapter.js +0 -1662
  50. package/dist/adapter/ember/adapter/emberAdapter.js.map +0 -1
  51. package/dist/adapter/ember/adapter/endpoints.d.ts +0 -27
  52. package/dist/adapter/ember/adapter/endpoints.d.ts.map +0 -1
  53. package/dist/adapter/ember/adapter/endpoints.js +0 -69
  54. package/dist/adapter/ember/adapter/endpoints.js.map +0 -1
  55. package/dist/adapter/ember/adapter/index.d.ts +0 -3
  56. package/dist/adapter/ember/adapter/index.d.ts.map +0 -1
  57. package/dist/adapter/ember/adapter/index.js +0 -6
  58. package/dist/adapter/ember/adapter/index.js.map +0 -1
  59. package/dist/adapter/ember/adapter/oneWaitress.d.ts +0 -112
  60. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +0 -1
  61. package/dist/adapter/ember/adapter/oneWaitress.js +0 -231
  62. package/dist/adapter/ember/adapter/oneWaitress.js.map +0 -1
  63. package/dist/adapter/ember/adapter/tokensManager.d.ts +0 -69
  64. package/dist/adapter/ember/adapter/tokensManager.d.ts.map +0 -1
  65. package/dist/adapter/ember/adapter/tokensManager.js +0 -689
  66. package/dist/adapter/ember/adapter/tokensManager.js.map +0 -1
  67. package/dist/adapter/ember/consts.d.ts +0 -105
  68. package/dist/adapter/ember/consts.d.ts.map +0 -1
  69. package/dist/adapter/ember/consts.js +0 -153
  70. package/dist/adapter/ember/consts.js.map +0 -1
  71. package/dist/adapter/ember/enums.d.ts +0 -1915
  72. package/dist/adapter/ember/enums.d.ts.map +0 -1
  73. package/dist/adapter/ember/enums.js +0 -2060
  74. package/dist/adapter/ember/enums.js.map +0 -1
  75. package/dist/adapter/ember/ezsp/buffalo.d.ts +0 -164
  76. package/dist/adapter/ember/ezsp/buffalo.d.ts.map +0 -1
  77. package/dist/adapter/ember/ezsp/buffalo.js +0 -1122
  78. package/dist/adapter/ember/ezsp/buffalo.js.map +0 -1
  79. package/dist/adapter/ember/ezsp/consts.d.ts +0 -117
  80. package/dist/adapter/ember/ezsp/consts.d.ts.map +0 -1
  81. package/dist/adapter/ember/ezsp/consts.js +0 -129
  82. package/dist/adapter/ember/ezsp/consts.js.map +0 -1
  83. package/dist/adapter/ember/ezsp/enums.d.ts +0 -990
  84. package/dist/adapter/ember/ezsp/enums.d.ts.map +0 -1
  85. package/dist/adapter/ember/ezsp/enums.js +0 -1076
  86. package/dist/adapter/ember/ezsp/enums.js.map +0 -1
  87. package/dist/adapter/ember/ezsp/ezsp.d.ts +0 -2934
  88. package/dist/adapter/ember/ezsp/ezsp.d.ts.map +0 -1
  89. package/dist/adapter/ember/ezsp/ezsp.js +0 -7039
  90. package/dist/adapter/ember/ezsp/ezsp.js.map +0 -1
  91. package/dist/adapter/ember/ezspError.d.ts +0 -6
  92. package/dist/adapter/ember/ezspError.d.ts.map +0 -1
  93. package/dist/adapter/ember/ezspError.js +0 -13
  94. package/dist/adapter/ember/ezspError.js.map +0 -1
  95. package/dist/adapter/ember/types.d.ts +0 -773
  96. package/dist/adapter/ember/types.d.ts.map +0 -1
  97. package/dist/adapter/ember/types.js +0 -3
  98. package/dist/adapter/ember/types.js.map +0 -1
  99. package/dist/adapter/ember/uart/ash.d.ts +0 -451
  100. package/dist/adapter/ember/uart/ash.d.ts.map +0 -1
  101. package/dist/adapter/ember/uart/ash.js +0 -1619
  102. package/dist/adapter/ember/uart/ash.js.map +0 -1
  103. package/dist/adapter/ember/uart/consts.d.ts +0 -91
  104. package/dist/adapter/ember/uart/consts.d.ts.map +0 -1
  105. package/dist/adapter/ember/uart/consts.js +0 -100
  106. package/dist/adapter/ember/uart/consts.js.map +0 -1
  107. package/dist/adapter/ember/uart/enums.d.ts +0 -191
  108. package/dist/adapter/ember/uart/enums.d.ts.map +0 -1
  109. package/dist/adapter/ember/uart/enums.js +0 -197
  110. package/dist/adapter/ember/uart/enums.js.map +0 -1
  111. package/dist/adapter/ember/uart/parser.d.ts +0 -8
  112. package/dist/adapter/ember/uart/parser.d.ts.map +0 -1
  113. package/dist/adapter/ember/uart/parser.js +0 -37
  114. package/dist/adapter/ember/uart/parser.js.map +0 -1
  115. package/dist/adapter/ember/uart/queues.d.ts +0 -84
  116. package/dist/adapter/ember/uart/queues.d.ts.map +0 -1
  117. package/dist/adapter/ember/uart/queues.js +0 -215
  118. package/dist/adapter/ember/uart/queues.js.map +0 -1
  119. package/dist/adapter/ember/uart/writer.d.ts +0 -14
  120. package/dist/adapter/ember/uart/writer.d.ts.map +0 -1
  121. package/dist/adapter/ember/uart/writer.js +0 -45
  122. package/dist/adapter/ember/uart/writer.js.map +0 -1
  123. package/dist/adapter/ember/utils/initters.d.ts +0 -20
  124. package/dist/adapter/ember/utils/initters.d.ts.map +0 -1
  125. package/dist/adapter/ember/utils/initters.js +0 -92
  126. package/dist/adapter/ember/utils/initters.js.map +0 -1
  127. package/dist/adapter/ember/utils/math.d.ts +0 -43
  128. package/dist/adapter/ember/utils/math.d.ts.map +0 -1
  129. package/dist/adapter/ember/utils/math.js +0 -83
  130. package/dist/adapter/ember/utils/math.js.map +0 -1
  131. package/dist/adapter/events.d.ts +0 -25
  132. package/dist/adapter/events.d.ts.map +0 -1
  133. package/dist/adapter/events.js +0 -3
  134. package/dist/adapter/events.js.map +0 -1
  135. package/dist/adapter/ezsp/adapter/backup.d.ts +0 -13
  136. package/dist/adapter/ezsp/adapter/backup.d.ts.map +0 -1
  137. package/dist/adapter/ezsp/adapter/backup.js +0 -135
  138. package/dist/adapter/ezsp/adapter/backup.js.map +0 -1
  139. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +0 -53
  140. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +0 -1
  141. package/dist/adapter/ezsp/adapter/ezspAdapter.js +0 -453
  142. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +0 -1
  143. package/dist/adapter/ezsp/adapter/index.d.ts +0 -3
  144. package/dist/adapter/ezsp/adapter/index.d.ts.map +0 -1
  145. package/dist/adapter/ezsp/adapter/index.js +0 -9
  146. package/dist/adapter/ezsp/adapter/index.js.map +0 -1
  147. package/dist/adapter/ezsp/driver/commands.d.ts +0 -37
  148. package/dist/adapter/ezsp/driver/commands.d.ts.map +0 -1
  149. package/dist/adapter/ezsp/driver/commands.js +0 -2387
  150. package/dist/adapter/ezsp/driver/commands.js.map +0 -1
  151. package/dist/adapter/ezsp/driver/consts.d.ts +0 -11
  152. package/dist/adapter/ezsp/driver/consts.d.ts.map +0 -1
  153. package/dist/adapter/ezsp/driver/consts.js +0 -14
  154. package/dist/adapter/ezsp/driver/consts.js.map +0 -1
  155. package/dist/adapter/ezsp/driver/driver.d.ts +0 -96
  156. package/dist/adapter/ezsp/driver/driver.d.ts.map +0 -1
  157. package/dist/adapter/ezsp/driver/driver.js +0 -856
  158. package/dist/adapter/ezsp/driver/driver.js.map +0 -1
  159. package/dist/adapter/ezsp/driver/ezsp.d.ts +0 -104
  160. package/dist/adapter/ezsp/driver/ezsp.d.ts.map +0 -1
  161. package/dist/adapter/ezsp/driver/ezsp.js +0 -675
  162. package/dist/adapter/ezsp/driver/ezsp.js.map +0 -1
  163. package/dist/adapter/ezsp/driver/frame.d.ts +0 -39
  164. package/dist/adapter/ezsp/driver/frame.d.ts.map +0 -1
  165. package/dist/adapter/ezsp/driver/frame.js +0 -101
  166. package/dist/adapter/ezsp/driver/frame.js.map +0 -1
  167. package/dist/adapter/ezsp/driver/index.d.ts +0 -4
  168. package/dist/adapter/ezsp/driver/index.d.ts.map +0 -1
  169. package/dist/adapter/ezsp/driver/index.js +0 -8
  170. package/dist/adapter/ezsp/driver/index.js.map +0 -1
  171. package/dist/adapter/ezsp/driver/multicast.d.ts +0 -13
  172. package/dist/adapter/ezsp/driver/multicast.d.ts.map +0 -1
  173. package/dist/adapter/ezsp/driver/multicast.js +0 -74
  174. package/dist/adapter/ezsp/driver/multicast.js.map +0 -1
  175. package/dist/adapter/ezsp/driver/parser.d.ts +0 -9
  176. package/dist/adapter/ezsp/driver/parser.d.ts.map +0 -1
  177. package/dist/adapter/ezsp/driver/parser.js +0 -109
  178. package/dist/adapter/ezsp/driver/parser.js.map +0 -1
  179. package/dist/adapter/ezsp/driver/types/basic.d.ts +0 -62
  180. package/dist/adapter/ezsp/driver/types/basic.d.ts.map +0 -1
  181. package/dist/adapter/ezsp/driver/types/basic.js +0 -208
  182. package/dist/adapter/ezsp/driver/types/basic.js.map +0 -1
  183. package/dist/adapter/ezsp/driver/types/index.d.ts +0 -9
  184. package/dist/adapter/ezsp/driver/types/index.d.ts.map +0 -1
  185. package/dist/adapter/ezsp/driver/types/index.js +0 -138
  186. package/dist/adapter/ezsp/driver/types/index.js.map +0 -1
  187. package/dist/adapter/ezsp/driver/types/named.d.ts +0 -1287
  188. package/dist/adapter/ezsp/driver/types/named.d.ts.map +0 -1
  189. package/dist/adapter/ezsp/driver/types/named.js +0 -2340
  190. package/dist/adapter/ezsp/driver/types/named.js.map +0 -1
  191. package/dist/adapter/ezsp/driver/types/struct.d.ts +0 -270
  192. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +0 -1
  193. package/dist/adapter/ezsp/driver/types/struct.js +0 -876
  194. package/dist/adapter/ezsp/driver/types/struct.js.map +0 -1
  195. package/dist/adapter/ezsp/driver/uart.d.ts +0 -46
  196. package/dist/adapter/ezsp/driver/uart.d.ts.map +0 -1
  197. package/dist/adapter/ezsp/driver/uart.js +0 -379
  198. package/dist/adapter/ezsp/driver/uart.js.map +0 -1
  199. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +0 -5
  200. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts.map +0 -1
  201. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +0 -55
  202. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +0 -1
  203. package/dist/adapter/ezsp/driver/utils/index.d.ts +0 -5
  204. package/dist/adapter/ezsp/driver/utils/index.d.ts.map +0 -1
  205. package/dist/adapter/ezsp/driver/utils/index.js +0 -35
  206. package/dist/adapter/ezsp/driver/utils/index.js.map +0 -1
  207. package/dist/adapter/ezsp/driver/writer.d.ts +0 -12
  208. package/dist/adapter/ezsp/driver/writer.d.ts.map +0 -1
  209. package/dist/adapter/ezsp/driver/writer.js +0 -92
  210. package/dist/adapter/ezsp/driver/writer.js.map +0 -1
  211. package/dist/adapter/index.d.ts +0 -5
  212. package/dist/adapter/index.d.ts.map +0 -1
  213. package/dist/adapter/index.js +0 -46
  214. package/dist/adapter/index.js.map +0 -1
  215. package/dist/adapter/serialPort.d.ts +0 -19
  216. package/dist/adapter/serialPort.d.ts.map +0 -1
  217. package/dist/adapter/serialPort.js +0 -50
  218. package/dist/adapter/serialPort.js.map +0 -1
  219. package/dist/adapter/socketPortUtils.d.ts +0 -11
  220. package/dist/adapter/socketPortUtils.d.ts.map +0 -1
  221. package/dist/adapter/socketPortUtils.js +0 -17
  222. package/dist/adapter/socketPortUtils.js.map +0 -1
  223. package/dist/adapter/tstype.d.ts +0 -68
  224. package/dist/adapter/tstype.d.ts.map +0 -1
  225. package/dist/adapter/tstype.js +0 -3
  226. package/dist/adapter/tstype.js.map +0 -1
  227. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +0 -62
  228. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +0 -1
  229. package/dist/adapter/z-stack/adapter/adapter-backup.js +0 -491
  230. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +0 -1
  231. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +0 -150
  232. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts.map +0 -1
  233. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +0 -278
  234. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +0 -1
  235. package/dist/adapter/z-stack/adapter/endpoints.d.ts +0 -12
  236. package/dist/adapter/z-stack/adapter/endpoints.d.ts.map +0 -1
  237. package/dist/adapter/z-stack/adapter/endpoints.js +0 -84
  238. package/dist/adapter/z-stack/adapter/endpoints.js.map +0 -1
  239. package/dist/adapter/z-stack/adapter/index.d.ts +0 -3
  240. package/dist/adapter/z-stack/adapter/index.d.ts.map +0 -1
  241. package/dist/adapter/z-stack/adapter/index.js +0 -9
  242. package/dist/adapter/z-stack/adapter/index.js.map +0 -1
  243. package/dist/adapter/z-stack/adapter/manager.d.ts +0 -86
  244. package/dist/adapter/z-stack/adapter/manager.d.ts.map +0 -1
  245. package/dist/adapter/z-stack/adapter/manager.js +0 -503
  246. package/dist/adapter/z-stack/adapter/manager.js.map +0 -1
  247. package/dist/adapter/z-stack/adapter/tstype.d.ts +0 -7
  248. package/dist/adapter/z-stack/adapter/tstype.d.ts.map +0 -1
  249. package/dist/adapter/z-stack/adapter/tstype.js +0 -10
  250. package/dist/adapter/z-stack/adapter/tstype.js.map +0 -1
  251. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +0 -73
  252. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +0 -1
  253. package/dist/adapter/z-stack/adapter/zStackAdapter.js +0 -809
  254. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +0 -1
  255. package/dist/adapter/z-stack/constants/af.d.ts +0 -24
  256. package/dist/adapter/z-stack/constants/af.d.ts.map +0 -1
  257. package/dist/adapter/z-stack/constants/af.js +0 -28
  258. package/dist/adapter/z-stack/constants/af.js.map +0 -1
  259. package/dist/adapter/z-stack/constants/common.d.ts +0 -279
  260. package/dist/adapter/z-stack/constants/common.d.ts.map +0 -1
  261. package/dist/adapter/z-stack/constants/common.js +0 -293
  262. package/dist/adapter/z-stack/constants/common.js.map +0 -1
  263. package/dist/adapter/z-stack/constants/dbg.d.ts +0 -23
  264. package/dist/adapter/z-stack/constants/dbg.d.ts.map +0 -1
  265. package/dist/adapter/z-stack/constants/dbg.js +0 -25
  266. package/dist/adapter/z-stack/constants/dbg.js.map +0 -1
  267. package/dist/adapter/z-stack/constants/index.d.ts +0 -11
  268. package/dist/adapter/z-stack/constants/index.d.ts.map +0 -1
  269. package/dist/adapter/z-stack/constants/index.js +0 -58
  270. package/dist/adapter/z-stack/constants/index.js.map +0 -1
  271. package/dist/adapter/z-stack/constants/mac.d.ts +0 -128
  272. package/dist/adapter/z-stack/constants/mac.d.ts.map +0 -1
  273. package/dist/adapter/z-stack/constants/mac.js +0 -130
  274. package/dist/adapter/z-stack/constants/mac.js.map +0 -1
  275. package/dist/adapter/z-stack/constants/sapi.d.ts +0 -25
  276. package/dist/adapter/z-stack/constants/sapi.d.ts.map +0 -1
  277. package/dist/adapter/z-stack/constants/sapi.js +0 -27
  278. package/dist/adapter/z-stack/constants/sapi.js.map +0 -1
  279. package/dist/adapter/z-stack/constants/sys.d.ts +0 -72
  280. package/dist/adapter/z-stack/constants/sys.d.ts.map +0 -1
  281. package/dist/adapter/z-stack/constants/sys.js +0 -74
  282. package/dist/adapter/z-stack/constants/sys.js.map +0 -1
  283. package/dist/adapter/z-stack/constants/util.d.ts +0 -82
  284. package/dist/adapter/z-stack/constants/util.d.ts.map +0 -1
  285. package/dist/adapter/z-stack/constants/util.js +0 -84
  286. package/dist/adapter/z-stack/constants/util.js.map +0 -1
  287. package/dist/adapter/z-stack/constants/utils.d.ts +0 -5
  288. package/dist/adapter/z-stack/constants/utils.d.ts.map +0 -1
  289. package/dist/adapter/z-stack/constants/utils.js +0 -14
  290. package/dist/adapter/z-stack/constants/utils.js.map +0 -1
  291. package/dist/adapter/z-stack/constants/zdo.d.ts +0 -103
  292. package/dist/adapter/z-stack/constants/zdo.d.ts.map +0 -1
  293. package/dist/adapter/z-stack/constants/zdo.js +0 -105
  294. package/dist/adapter/z-stack/constants/zdo.js.map +0 -1
  295. package/dist/adapter/z-stack/models/index.d.ts +0 -2
  296. package/dist/adapter/z-stack/models/index.d.ts.map +0 -1
  297. package/dist/adapter/z-stack/models/index.js +0 -18
  298. package/dist/adapter/z-stack/models/index.js.map +0 -1
  299. package/dist/adapter/z-stack/models/startup-options.d.ts +0 -13
  300. package/dist/adapter/z-stack/models/startup-options.d.ts.map +0 -1
  301. package/dist/adapter/z-stack/models/startup-options.js +0 -3
  302. package/dist/adapter/z-stack/models/startup-options.js.map +0 -1
  303. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +0 -23
  304. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts.map +0 -1
  305. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +0 -44
  306. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +0 -1
  307. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +0 -10
  308. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts.map +0 -1
  309. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +0 -25
  310. package/dist/adapter/z-stack/structs/entries/address-manager-table.js.map +0 -1
  311. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +0 -10
  312. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts.map +0 -1
  313. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +0 -17
  314. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js.map +0 -1
  315. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +0 -10
  316. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts.map +0 -1
  317. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +0 -26
  318. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js.map +0 -1
  319. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +0 -10
  320. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts.map +0 -1
  321. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +0 -24
  322. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js.map +0 -1
  323. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +0 -10
  324. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts.map +0 -1
  325. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +0 -26
  326. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js.map +0 -1
  327. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +0 -8
  328. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts.map +0 -1
  329. package/dist/adapter/z-stack/structs/entries/channel-list.js +0 -13
  330. package/dist/adapter/z-stack/structs/entries/channel-list.js.map +0 -1
  331. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +0 -8
  332. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts.map +0 -1
  333. package/dist/adapter/z-stack/structs/entries/has-configured.js +0 -23
  334. package/dist/adapter/z-stack/structs/entries/has-configured.js.map +0 -1
  335. package/dist/adapter/z-stack/structs/entries/index.d.ts +0 -17
  336. package/dist/adapter/z-stack/structs/entries/index.d.ts.map +0 -1
  337. package/dist/adapter/z-stack/structs/entries/index.js +0 -33
  338. package/dist/adapter/z-stack/structs/entries/index.js.map +0 -1
  339. package/dist/adapter/z-stack/structs/entries/nib.d.ts +0 -10
  340. package/dist/adapter/z-stack/structs/entries/nib.d.ts.map +0 -1
  341. package/dist/adapter/z-stack/structs/entries/nib.js +0 -73
  342. package/dist/adapter/z-stack/structs/entries/nib.js.map +0 -1
  343. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +0 -10
  344. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts.map +0 -1
  345. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +0 -22
  346. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js.map +0 -1
  347. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +0 -8
  348. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts.map +0 -1
  349. package/dist/adapter/z-stack/structs/entries/nwk-key.js +0 -20
  350. package/dist/adapter/z-stack/structs/entries/nwk-key.js.map +0 -1
  351. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +0 -8
  352. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts.map +0 -1
  353. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +0 -13
  354. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js.map +0 -1
  355. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +0 -13
  356. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts.map +0 -1
  357. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +0 -23
  358. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js.map +0 -1
  359. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +0 -10
  360. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts.map +0 -1
  361. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +0 -25
  362. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js.map +0 -1
  363. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +0 -20
  364. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts.map +0 -1
  365. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +0 -36
  366. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +0 -1
  367. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +0 -10
  368. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts.map +0 -1
  369. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +0 -26
  370. package/dist/adapter/z-stack/structs/entries/security-manager-table.js.map +0 -1
  371. package/dist/adapter/z-stack/structs/index.d.ts +0 -5
  372. package/dist/adapter/z-stack/structs/index.d.ts.map +0 -1
  373. package/dist/adapter/z-stack/structs/index.js +0 -21
  374. package/dist/adapter/z-stack/structs/index.js.map +0 -1
  375. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +0 -13
  376. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts.map +0 -1
  377. package/dist/adapter/z-stack/structs/serializable-memory-object.js +0 -3
  378. package/dist/adapter/z-stack/structs/serializable-memory-object.js.map +0 -1
  379. package/dist/adapter/z-stack/structs/struct.d.ts +0 -99
  380. package/dist/adapter/z-stack/structs/struct.d.ts.map +0 -1
  381. package/dist/adapter/z-stack/structs/struct.js +0 -310
  382. package/dist/adapter/z-stack/structs/struct.js.map +0 -1
  383. package/dist/adapter/z-stack/structs/table.d.ts +0 -94
  384. package/dist/adapter/z-stack/structs/table.d.ts.map +0 -1
  385. package/dist/adapter/z-stack/structs/table.js +0 -168
  386. package/dist/adapter/z-stack/structs/table.js.map +0 -1
  387. package/dist/adapter/z-stack/unpi/constants.d.ts +0 -29
  388. package/dist/adapter/z-stack/unpi/constants.d.ts.map +0 -1
  389. package/dist/adapter/z-stack/unpi/constants.js +0 -40
  390. package/dist/adapter/z-stack/unpi/constants.js.map +0 -1
  391. package/dist/adapter/z-stack/unpi/frame.d.ts +0 -16
  392. package/dist/adapter/z-stack/unpi/frame.d.ts.map +0 -1
  393. package/dist/adapter/z-stack/unpi/frame.js +0 -54
  394. package/dist/adapter/z-stack/unpi/frame.js.map +0 -1
  395. package/dist/adapter/z-stack/unpi/index.d.ts +0 -6
  396. package/dist/adapter/z-stack/unpi/index.d.ts.map +0 -1
  397. package/dist/adapter/z-stack/unpi/index.js +0 -48
  398. package/dist/adapter/z-stack/unpi/index.js.map +0 -1
  399. package/dist/adapter/z-stack/unpi/parser.d.ts +0 -9
  400. package/dist/adapter/z-stack/unpi/parser.d.ts.map +0 -1
  401. package/dist/adapter/z-stack/unpi/parser.js +0 -86
  402. package/dist/adapter/z-stack/unpi/parser.js.map +0 -1
  403. package/dist/adapter/z-stack/unpi/writer.d.ts +0 -9
  404. package/dist/adapter/z-stack/unpi/writer.d.ts.map +0 -1
  405. package/dist/adapter/z-stack/unpi/writer.js +0 -52
  406. package/dist/adapter/z-stack/unpi/writer.js.map +0 -1
  407. package/dist/adapter/z-stack/utils/channel-list.d.ts +0 -21
  408. package/dist/adapter/z-stack/utils/channel-list.d.ts.map +0 -1
  409. package/dist/adapter/z-stack/utils/channel-list.js +0 -44
  410. package/dist/adapter/z-stack/utils/channel-list.js.map +0 -1
  411. package/dist/adapter/z-stack/utils/index.d.ts +0 -3
  412. package/dist/adapter/z-stack/utils/index.d.ts.map +0 -1
  413. package/dist/adapter/z-stack/utils/index.js +0 -19
  414. package/dist/adapter/z-stack/utils/index.js.map +0 -1
  415. package/dist/adapter/z-stack/utils/network-options.d.ts +0 -9
  416. package/dist/adapter/z-stack/utils/network-options.d.ts.map +0 -1
  417. package/dist/adapter/z-stack/utils/network-options.js +0 -22
  418. package/dist/adapter/z-stack/utils/network-options.js.map +0 -1
  419. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +0 -10
  420. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts.map +0 -1
  421. package/dist/adapter/z-stack/znp/buffaloZnp.js +0 -148
  422. package/dist/adapter/z-stack/znp/buffaloZnp.js.map +0 -1
  423. package/dist/adapter/z-stack/znp/definition.d.ts +0 -18
  424. package/dist/adapter/z-stack/znp/definition.d.ts.map +0 -1
  425. package/dist/adapter/z-stack/znp/definition.js +0 -2703
  426. package/dist/adapter/z-stack/znp/definition.js.map +0 -1
  427. package/dist/adapter/z-stack/znp/index.d.ts +0 -4
  428. package/dist/adapter/z-stack/znp/index.d.ts.map +0 -1
  429. package/dist/adapter/z-stack/znp/index.js +0 -11
  430. package/dist/adapter/z-stack/znp/index.js.map +0 -1
  431. package/dist/adapter/z-stack/znp/parameterType.d.ts +0 -19
  432. package/dist/adapter/z-stack/znp/parameterType.d.ts.map +0 -1
  433. package/dist/adapter/z-stack/znp/parameterType.js +0 -22
  434. package/dist/adapter/z-stack/znp/parameterType.js.map +0 -1
  435. package/dist/adapter/z-stack/znp/tstype.d.ts +0 -40
  436. package/dist/adapter/z-stack/znp/tstype.d.ts.map +0 -1
  437. package/dist/adapter/z-stack/znp/tstype.js +0 -3
  438. package/dist/adapter/z-stack/znp/tstype.js.map +0 -1
  439. package/dist/adapter/z-stack/znp/utils.d.ts +0 -4
  440. package/dist/adapter/z-stack/znp/utils.d.ts.map +0 -1
  441. package/dist/adapter/z-stack/znp/utils.js +0 -12
  442. package/dist/adapter/z-stack/znp/utils.js.map +0 -1
  443. package/dist/adapter/z-stack/znp/znp.d.ts +0 -42
  444. package/dist/adapter/z-stack/znp/znp.d.ts.map +0 -1
  445. package/dist/adapter/z-stack/znp/znp.js +0 -289
  446. package/dist/adapter/z-stack/znp/znp.js.map +0 -1
  447. package/dist/adapter/z-stack/znp/zpiObject.d.ts +0 -19
  448. package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +0 -1
  449. package/dist/adapter/z-stack/znp/zpiObject.js +0 -121
  450. package/dist/adapter/z-stack/znp/zpiObject.js.map +0 -1
  451. package/dist/adapter/zboss/adapter/index.d.ts +0 -3
  452. package/dist/adapter/zboss/adapter/index.d.ts.map +0 -1
  453. package/dist/adapter/zboss/adapter/index.js +0 -6
  454. package/dist/adapter/zboss/adapter/index.js.map +0 -1
  455. package/dist/adapter/zboss/adapter/zbossAdapter.d.ts +0 -42
  456. package/dist/adapter/zboss/adapter/zbossAdapter.d.ts.map +0 -1
  457. package/dist/adapter/zboss/adapter/zbossAdapter.js +0 -350
  458. package/dist/adapter/zboss/adapter/zbossAdapter.js.map +0 -1
  459. package/dist/adapter/zboss/commands.d.ts +0 -22
  460. package/dist/adapter/zboss/commands.d.ts.map +0 -1
  461. package/dist/adapter/zboss/commands.js +0 -1107
  462. package/dist/adapter/zboss/commands.js.map +0 -1
  463. package/dist/adapter/zboss/consts.d.ts +0 -9
  464. package/dist/adapter/zboss/consts.d.ts.map +0 -1
  465. package/dist/adapter/zboss/consts.js +0 -12
  466. package/dist/adapter/zboss/consts.js.map +0 -1
  467. package/dist/adapter/zboss/driver.d.ts +0 -55
  468. package/dist/adapter/zboss/driver.d.ts.map +0 -1
  469. package/dist/adapter/zboss/driver.js +0 -356
  470. package/dist/adapter/zboss/driver.js.map +0 -1
  471. package/dist/adapter/zboss/enums.d.ts +0 -301
  472. package/dist/adapter/zboss/enums.d.ts.map +0 -1
  473. package/dist/adapter/zboss/enums.js +0 -359
  474. package/dist/adapter/zboss/enums.js.map +0 -1
  475. package/dist/adapter/zboss/frame.d.ts +0 -34
  476. package/dist/adapter/zboss/frame.d.ts.map +0 -1
  477. package/dist/adapter/zboss/frame.js +0 -200
  478. package/dist/adapter/zboss/frame.js.map +0 -1
  479. package/dist/adapter/zboss/reader.d.ts +0 -8
  480. package/dist/adapter/zboss/reader.d.ts.map +0 -1
  481. package/dist/adapter/zboss/reader.js +0 -58
  482. package/dist/adapter/zboss/reader.js.map +0 -1
  483. package/dist/adapter/zboss/types.d.ts +0 -1
  484. package/dist/adapter/zboss/types.d.ts.map +0 -1
  485. package/dist/adapter/zboss/types.js +0 -2
  486. package/dist/adapter/zboss/types.js.map +0 -1
  487. package/dist/adapter/zboss/uart.d.ts +0 -38
  488. package/dist/adapter/zboss/uart.d.ts.map +0 -1
  489. package/dist/adapter/zboss/uart.js +0 -372
  490. package/dist/adapter/zboss/uart.js.map +0 -1
  491. package/dist/adapter/zboss/utils.d.ts +0 -9
  492. package/dist/adapter/zboss/utils.d.ts.map +0 -1
  493. package/dist/adapter/zboss/utils.js +0 -56
  494. package/dist/adapter/zboss/utils.js.map +0 -1
  495. package/dist/adapter/zboss/writer.d.ts +0 -14
  496. package/dist/adapter/zboss/writer.d.ts.map +0 -1
  497. package/dist/adapter/zboss/writer.js +0 -43
  498. package/dist/adapter/zboss/writer.js.map +0 -1
  499. package/dist/adapter/zigate/adapter/index.d.ts +0 -3
  500. package/dist/adapter/zigate/adapter/index.d.ts.map +0 -1
  501. package/dist/adapter/zigate/adapter/index.js +0 -10
  502. package/dist/adapter/zigate/adapter/index.js.map +0 -1
  503. package/dist/adapter/zigate/adapter/patchZdoBuffaloBE.d.ts +0 -5
  504. package/dist/adapter/zigate/adapter/patchZdoBuffaloBE.d.ts.map +0 -1
  505. package/dist/adapter/zigate/adapter/patchZdoBuffaloBE.js +0 -28
  506. package/dist/adapter/zigate/adapter/patchZdoBuffaloBE.js.map +0 -1
  507. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +0 -63
  508. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +0 -1
  509. package/dist/adapter/zigate/adapter/zigateAdapter.js +0 -462
  510. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +0 -1
  511. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +0 -22
  512. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +0 -1
  513. package/dist/adapter/zigate/driver/buffaloZiGate.js +0 -182
  514. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +0 -1
  515. package/dist/adapter/zigate/driver/commandType.d.ts +0 -42
  516. package/dist/adapter/zigate/driver/commandType.d.ts.map +0 -1
  517. package/dist/adapter/zigate/driver/commandType.js +0 -383
  518. package/dist/adapter/zigate/driver/commandType.js.map +0 -1
  519. package/dist/adapter/zigate/driver/constants.d.ts +0 -289
  520. package/dist/adapter/zigate/driver/constants.d.ts.map +0 -1
  521. package/dist/adapter/zigate/driver/constants.js +0 -344
  522. package/dist/adapter/zigate/driver/constants.js.map +0 -1
  523. package/dist/adapter/zigate/driver/frame.d.ts +0 -26
  524. package/dist/adapter/zigate/driver/frame.d.ts.map +0 -1
  525. package/dist/adapter/zigate/driver/frame.js +0 -160
  526. package/dist/adapter/zigate/driver/frame.js.map +0 -1
  527. package/dist/adapter/zigate/driver/messageType.d.ts +0 -13
  528. package/dist/adapter/zigate/driver/messageType.d.ts.map +0 -1
  529. package/dist/adapter/zigate/driver/messageType.js +0 -282
  530. package/dist/adapter/zigate/driver/messageType.js.map +0 -1
  531. package/dist/adapter/zigate/driver/parameterType.d.ts +0 -25
  532. package/dist/adapter/zigate/driver/parameterType.d.ts.map +0 -1
  533. package/dist/adapter/zigate/driver/parameterType.js +0 -31
  534. package/dist/adapter/zigate/driver/parameterType.js.map +0 -1
  535. package/dist/adapter/zigate/driver/ziGateObject.d.ts +0 -23
  536. package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +0 -1
  537. package/dist/adapter/zigate/driver/ziGateObject.js +0 -116
  538. package/dist/adapter/zigate/driver/ziGateObject.js.map +0 -1
  539. package/dist/adapter/zigate/driver/zigate.d.ts +0 -47
  540. package/dist/adapter/zigate/driver/zigate.d.ts.map +0 -1
  541. package/dist/adapter/zigate/driver/zigate.js +0 -361
  542. package/dist/adapter/zigate/driver/zigate.js.map +0 -1
  543. package/dist/buffalo/buffalo.d.ts +0 -62
  544. package/dist/buffalo/buffalo.d.ts.map +0 -1
  545. package/dist/buffalo/buffalo.js +0 -275
  546. package/dist/buffalo/buffalo.js.map +0 -1
  547. package/dist/buffalo/index.d.ts +0 -3
  548. package/dist/buffalo/index.d.ts.map +0 -1
  549. package/dist/buffalo/index.js +0 -9
  550. package/dist/buffalo/index.js.map +0 -1
  551. package/dist/controller/controller.d.ts +0 -142
  552. package/dist/controller/controller.d.ts.map +0 -1
  553. package/dist/controller/controller.js +0 -788
  554. package/dist/controller/controller.js.map +0 -1
  555. package/dist/controller/database.d.ts +0 -17
  556. package/dist/controller/database.d.ts.map +0 -1
  557. package/dist/controller/database.js +0 -103
  558. package/dist/controller/database.js.map +0 -1
  559. package/dist/controller/events.d.ts +0 -44
  560. package/dist/controller/events.d.ts.map +0 -1
  561. package/dist/controller/events.js +0 -3
  562. package/dist/controller/events.js.map +0 -1
  563. package/dist/controller/greenPower.d.ts +0 -17
  564. package/dist/controller/greenPower.d.ts.map +0 -1
  565. package/dist/controller/greenPower.js +0 -235
  566. package/dist/controller/greenPower.js.map +0 -1
  567. package/dist/controller/helpers/index.d.ts +0 -3
  568. package/dist/controller/helpers/index.d.ts.map +0 -1
  569. package/dist/controller/helpers/index.js +0 -39
  570. package/dist/controller/helpers/index.js.map +0 -1
  571. package/dist/controller/helpers/request.d.ts +0 -22
  572. package/dist/controller/helpers/request.d.ts.map +0 -1
  573. package/dist/controller/helpers/request.js +0 -75
  574. package/dist/controller/helpers/request.js.map +0 -1
  575. package/dist/controller/helpers/requestQueue.d.ts +0 -13
  576. package/dist/controller/helpers/requestQueue.d.ts.map +0 -1
  577. package/dist/controller/helpers/requestQueue.js +0 -105
  578. package/dist/controller/helpers/requestQueue.js.map +0 -1
  579. package/dist/controller/helpers/zclFrameConverter.d.ts +0 -9
  580. package/dist/controller/helpers/zclFrameConverter.d.ts.map +0 -1
  581. package/dist/controller/helpers/zclFrameConverter.js +0 -79
  582. package/dist/controller/helpers/zclFrameConverter.js.map +0 -1
  583. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +0 -6
  584. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts.map +0 -1
  585. package/dist/controller/helpers/zclTransactionSequenceNumber.js +0 -14
  586. package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +0 -1
  587. package/dist/controller/index.d.ts +0 -6
  588. package/dist/controller/index.d.ts.map +0 -1
  589. package/dist/controller/index.js +0 -9
  590. package/dist/controller/index.js.map +0 -1
  591. package/dist/controller/model/device.d.ts +0 -150
  592. package/dist/controller/model/device.d.ts.map +0 -1
  593. package/dist/controller/model/device.js +0 -1046
  594. package/dist/controller/model/device.js.map +0 -1
  595. package/dist/controller/model/endpoint.d.ts +0 -137
  596. package/dist/controller/model/endpoint.d.ts.map +0 -1
  597. package/dist/controller/model/endpoint.js +0 -665
  598. package/dist/controller/model/endpoint.js.map +0 -1
  599. package/dist/controller/model/entity.d.ts +0 -13
  600. package/dist/controller/model/entity.d.ts.map +0 -1
  601. package/dist/controller/model/entity.js +0 -18
  602. package/dist/controller/model/entity.js.map +0 -1
  603. package/dist/controller/model/group.d.ts +0 -47
  604. package/dist/controller/model/group.d.ts.map +0 -1
  605. package/dist/controller/model/group.js +0 -249
  606. package/dist/controller/model/group.js.map +0 -1
  607. package/dist/controller/model/index.d.ts +0 -6
  608. package/dist/controller/model/index.d.ts.map +0 -1
  609. package/dist/controller/model/index.js +0 -15
  610. package/dist/controller/model/index.js.map +0 -1
  611. package/dist/controller/touchlink.d.ts +0 -20
  612. package/dist/controller/touchlink.d.ts.map +0 -1
  613. package/dist/controller/touchlink.js +0 -168
  614. package/dist/controller/touchlink.js.map +0 -1
  615. package/dist/controller/tstype.d.ts +0 -18
  616. package/dist/controller/tstype.d.ts.map +0 -1
  617. package/dist/controller/tstype.js +0 -3
  618. package/dist/controller/tstype.js.map +0 -1
  619. package/dist/index.d.ts +0 -6
  620. package/dist/index.d.ts.map +0 -1
  621. package/dist/index.js +0 -47
  622. package/dist/index.js.map +0 -1
  623. package/dist/models/backup-storage-legacy.d.ts +0 -27
  624. package/dist/models/backup-storage-legacy.d.ts.map +0 -1
  625. package/dist/models/backup-storage-legacy.js +0 -3
  626. package/dist/models/backup-storage-legacy.js.map +0 -1
  627. package/dist/models/backup-storage-unified.d.ts +0 -50
  628. package/dist/models/backup-storage-unified.d.ts.map +0 -1
  629. package/dist/models/backup-storage-unified.js +0 -3
  630. package/dist/models/backup-storage-unified.js.map +0 -1
  631. package/dist/models/backup.d.ts +0 -37
  632. package/dist/models/backup.d.ts.map +0 -1
  633. package/dist/models/backup.js +0 -3
  634. package/dist/models/backup.js.map +0 -1
  635. package/dist/models/index.d.ts +0 -5
  636. package/dist/models/index.d.ts.map +0 -1
  637. package/dist/models/index.js +0 -21
  638. package/dist/models/index.js.map +0 -1
  639. package/dist/models/network-options.d.ts +0 -12
  640. package/dist/models/network-options.d.ts.map +0 -1
  641. package/dist/models/network-options.js +0 -3
  642. package/dist/models/network-options.js.map +0 -1
  643. package/dist/utils/backup.d.ts +0 -21
  644. package/dist/utils/backup.d.ts.map +0 -1
  645. package/dist/utils/backup.js +0 -180
  646. package/dist/utils/backup.js.map +0 -1
  647. package/dist/utils/index.d.ts +0 -8
  648. package/dist/utils/index.d.ts.map +0 -1
  649. package/dist/utils/index.js +0 -52
  650. package/dist/utils/index.js.map +0 -1
  651. package/dist/utils/logger.d.ts +0 -9
  652. package/dist/utils/logger.d.ts.map +0 -1
  653. package/dist/utils/logger.js +0 -14
  654. package/dist/utils/logger.js.map +0 -1
  655. package/dist/utils/patchBigIntSerialization.d.ts +0 -2
  656. package/dist/utils/patchBigIntSerialization.d.ts.map +0 -1
  657. package/dist/utils/patchBigIntSerialization.js +0 -9
  658. package/dist/utils/patchBigIntSerialization.js.map +0 -1
  659. package/dist/utils/queue.d.ts +0 -12
  660. package/dist/utils/queue.d.ts.map +0 -1
  661. package/dist/utils/queue.js +0 -62
  662. package/dist/utils/queue.js.map +0 -1
  663. package/dist/utils/realpathSync.d.ts +0 -3
  664. package/dist/utils/realpathSync.d.ts.map +0 -1
  665. package/dist/utils/realpathSync.js +0 -13
  666. package/dist/utils/realpathSync.js.map +0 -1
  667. package/dist/utils/utils.d.ts +0 -5
  668. package/dist/utils/utils.d.ts.map +0 -1
  669. package/dist/utils/utils.js +0 -24
  670. package/dist/utils/utils.js.map +0 -1
  671. package/dist/utils/wait.d.ts +0 -3
  672. package/dist/utils/wait.d.ts.map +0 -1
  673. package/dist/utils/wait.js +0 -9
  674. package/dist/utils/wait.js.map +0 -1
  675. package/dist/utils/waitress.d.ts +0 -22
  676. package/dist/utils/waitress.d.ts.map +0 -1
  677. package/dist/utils/waitress.js +0 -69
  678. package/dist/utils/waitress.js.map +0 -1
  679. package/dist/zspec/consts.d.ts +0 -71
  680. package/dist/zspec/consts.d.ts.map +0 -1
  681. package/dist/zspec/consts.js +0 -75
  682. package/dist/zspec/consts.js.map +0 -1
  683. package/dist/zspec/enums.d.ts +0 -19
  684. package/dist/zspec/enums.d.ts.map +0 -1
  685. package/dist/zspec/enums.js +0 -27
  686. package/dist/zspec/enums.js.map +0 -1
  687. package/dist/zspec/index.d.ts +0 -4
  688. package/dist/zspec/index.d.ts.map +0 -1
  689. package/dist/zspec/index.js +0 -43
  690. package/dist/zspec/index.js.map +0 -1
  691. package/dist/zspec/tstypes.d.ts +0 -19
  692. package/dist/zspec/tstypes.d.ts.map +0 -1
  693. package/dist/zspec/tstypes.js +0 -3
  694. package/dist/zspec/tstypes.js.map +0 -1
  695. package/dist/zspec/utils.d.ts +0 -90
  696. package/dist/zspec/utils.d.ts.map +0 -1
  697. package/dist/zspec/utils.js +0 -269
  698. package/dist/zspec/utils.js.map +0 -1
  699. package/dist/zspec/zcl/buffaloZcl.d.ts +0 -41
  700. package/dist/zspec/zcl/buffaloZcl.d.ts.map +0 -1
  701. package/dist/zspec/zcl/buffaloZcl.js +0 -859
  702. package/dist/zspec/zcl/buffaloZcl.js.map +0 -1
  703. package/dist/zspec/zcl/definition/cluster.d.ts +0 -3
  704. package/dist/zspec/zcl/definition/cluster.d.ts.map +0 -1
  705. package/dist/zspec/zcl/definition/cluster.js +0 -5145
  706. package/dist/zspec/zcl/definition/cluster.js.map +0 -1
  707. package/dist/zspec/zcl/definition/consts.d.ts +0 -9
  708. package/dist/zspec/zcl/definition/consts.d.ts.map +0 -1
  709. package/dist/zspec/zcl/definition/consts.js +0 -27
  710. package/dist/zspec/zcl/definition/consts.js.map +0 -1
  711. package/dist/zspec/zcl/definition/enums.d.ts +0 -177
  712. package/dist/zspec/zcl/definition/enums.d.ts.map +0 -1
  713. package/dist/zspec/zcl/definition/enums.js +0 -187
  714. package/dist/zspec/zcl/definition/enums.js.map +0 -1
  715. package/dist/zspec/zcl/definition/foundation.d.ts +0 -10
  716. package/dist/zspec/zcl/definition/foundation.d.ts.map +0 -1
  717. package/dist/zspec/zcl/definition/foundation.js +0 -272
  718. package/dist/zspec/zcl/definition/foundation.js.map +0 -1
  719. package/dist/zspec/zcl/definition/manufacturerCode.d.ts +0 -727
  720. package/dist/zspec/zcl/definition/manufacturerCode.d.ts.map +0 -1
  721. package/dist/zspec/zcl/definition/manufacturerCode.js +0 -732
  722. package/dist/zspec/zcl/definition/manufacturerCode.js.map +0 -1
  723. package/dist/zspec/zcl/definition/status.d.ts +0 -69
  724. package/dist/zspec/zcl/definition/status.d.ts.map +0 -1
  725. package/dist/zspec/zcl/definition/status.js +0 -74
  726. package/dist/zspec/zcl/definition/status.js.map +0 -1
  727. package/dist/zspec/zcl/definition/tstype.d.ts +0 -114
  728. package/dist/zspec/zcl/definition/tstype.d.ts.map +0 -1
  729. package/dist/zspec/zcl/definition/tstype.js +0 -3
  730. package/dist/zspec/zcl/definition/tstype.js.map +0 -1
  731. package/dist/zspec/zcl/index.d.ts +0 -11
  732. package/dist/zspec/zcl/index.d.ts.map +0 -1
  733. package/dist/zspec/zcl/index.js +0 -57
  734. package/dist/zspec/zcl/index.js.map +0 -1
  735. package/dist/zspec/zcl/utils.d.ts +0 -10
  736. package/dist/zspec/zcl/utils.d.ts.map +0 -1
  737. package/dist/zspec/zcl/utils.js +0 -293
  738. package/dist/zspec/zcl/utils.js.map +0 -1
  739. package/dist/zspec/zcl/zclFrame.d.ts +0 -36
  740. package/dist/zspec/zcl/zclFrame.d.ts.map +0 -1
  741. package/dist/zspec/zcl/zclFrame.js +0 -306
  742. package/dist/zspec/zcl/zclFrame.js.map +0 -1
  743. package/dist/zspec/zcl/zclHeader.d.ts +0 -16
  744. package/dist/zspec/zcl/zclHeader.d.ts.map +0 -1
  745. package/dist/zspec/zcl/zclHeader.js +0 -88
  746. package/dist/zspec/zcl/zclHeader.js.map +0 -1
  747. package/dist/zspec/zcl/zclStatusError.d.ts +0 -6
  748. package/dist/zspec/zcl/zclStatusError.d.ts.map +0 -1
  749. package/dist/zspec/zcl/zclStatusError.js +0 -13
  750. package/dist/zspec/zcl/zclStatusError.js.map +0 -1
  751. package/dist/zspec/zdo/buffaloZdo.d.ts +0 -413
  752. package/dist/zspec/zdo/buffaloZdo.d.ts.map +0 -1
  753. package/dist/zspec/zdo/buffaloZdo.js +0 -1935
  754. package/dist/zspec/zdo/buffaloZdo.js.map +0 -1
  755. package/dist/zspec/zdo/definition/clusters.d.ts +0 -624
  756. package/dist/zspec/zdo/definition/clusters.d.ts.map +0 -1
  757. package/dist/zspec/zdo/definition/clusters.js +0 -686
  758. package/dist/zspec/zdo/definition/clusters.js.map +0 -1
  759. package/dist/zspec/zdo/definition/consts.d.ts +0 -13
  760. package/dist/zspec/zdo/definition/consts.d.ts.map +0 -1
  761. package/dist/zspec/zdo/definition/consts.js +0 -16
  762. package/dist/zspec/zdo/definition/consts.js.map +0 -1
  763. package/dist/zspec/zdo/definition/enums.d.ts +0 -85
  764. package/dist/zspec/zdo/definition/enums.d.ts.map +0 -1
  765. package/dist/zspec/zdo/definition/enums.js +0 -103
  766. package/dist/zspec/zdo/definition/enums.js.map +0 -1
  767. package/dist/zspec/zdo/definition/status.d.ts +0 -99
  768. package/dist/zspec/zdo/definition/status.d.ts.map +0 -1
  769. package/dist/zspec/zdo/definition/status.js +0 -108
  770. package/dist/zspec/zdo/definition/status.js.map +0 -1
  771. package/dist/zspec/zdo/definition/tstypes.d.ts +0 -955
  772. package/dist/zspec/zdo/definition/tstypes.d.ts.map +0 -1
  773. package/dist/zspec/zdo/definition/tstypes.js +0 -4
  774. package/dist/zspec/zdo/definition/tstypes.js.map +0 -1
  775. package/dist/zspec/zdo/index.d.ts +0 -8
  776. package/dist/zspec/zdo/index.d.ts.map +0 -1
  777. package/dist/zspec/zdo/index.js +0 -51
  778. package/dist/zspec/zdo/index.js.map +0 -1
  779. package/dist/zspec/zdo/utils.d.ts +0 -24
  780. package/dist/zspec/zdo/utils.d.ts.map +0 -1
  781. package/dist/zspec/zdo/utils.js +0 -74
  782. package/dist/zspec/zdo/utils.js.map +0 -1
  783. package/dist/zspec/zdo/zdoStatusError.d.ts +0 -6
  784. package/dist/zspec/zdo/zdoStatusError.d.ts.map +0 -1
  785. package/dist/zspec/zdo/zdoStatusError.js +0 -13
  786. package/dist/zspec/zdo/zdoStatusError.js.map +0 -1
@@ -1,1046 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const assert_1 = __importDefault(require("assert"));
40
- const utils_1 = require("../../utils");
41
- const logger_1 = require("../../utils/logger");
42
- const ZSpec = __importStar(require("../../zspec"));
43
- const enums_1 = require("../../zspec/enums");
44
- const Zcl = __importStar(require("../../zspec/zcl"));
45
- const Zdo = __importStar(require("../../zspec/zdo"));
46
- const helpers_1 = require("../helpers");
47
- const zclTransactionSequenceNumber_1 = __importDefault(require("../helpers/zclTransactionSequenceNumber"));
48
- const endpoint_1 = __importDefault(require("./endpoint"));
49
- const entity_1 = __importDefault(require("./entity"));
50
- /**
51
- * @ignore
52
- */
53
- const OneJanuary2000 = new Date('January 01, 2000 00:00:00 UTC+00:00').getTime();
54
- const NS = 'zh:controller:device';
55
- class Device extends entity_1.default {
56
- ID;
57
- _applicationVersion;
58
- _dateCode;
59
- _endpoints;
60
- _hardwareVersion;
61
- _ieeeAddr;
62
- _interviewCompleted;
63
- _interviewing;
64
- _lastSeen;
65
- _manufacturerID;
66
- _manufacturerName;
67
- _modelID;
68
- _networkAddress;
69
- _powerSource;
70
- _softwareBuildID;
71
- _stackVersion;
72
- _type;
73
- _zclVersion;
74
- _linkquality;
75
- _skipDefaultResponse;
76
- _customReadResponse;
77
- _lastDefaultResponseSequenceNumber;
78
- _checkinInterval;
79
- _pendingRequestTimeout;
80
- _customClusters = {};
81
- // Getters/setters
82
- get ieeeAddr() {
83
- return this._ieeeAddr;
84
- }
85
- set ieeeAddr(ieeeAddr) {
86
- this._ieeeAddr = ieeeAddr;
87
- }
88
- get applicationVersion() {
89
- return this._applicationVersion;
90
- }
91
- set applicationVersion(applicationVersion) {
92
- this._applicationVersion = applicationVersion;
93
- }
94
- get endpoints() {
95
- return this._endpoints;
96
- }
97
- get interviewCompleted() {
98
- return this._interviewCompleted;
99
- }
100
- get interviewing() {
101
- return this._interviewing;
102
- }
103
- get lastSeen() {
104
- return this._lastSeen;
105
- }
106
- get manufacturerID() {
107
- return this._manufacturerID;
108
- }
109
- get isDeleted() {
110
- return Device.deletedDevices.has(this.ieeeAddr);
111
- }
112
- set type(type) {
113
- this._type = type;
114
- }
115
- get type() {
116
- return this._type;
117
- }
118
- get dateCode() {
119
- return this._dateCode;
120
- }
121
- set dateCode(dateCode) {
122
- this._dateCode = dateCode;
123
- }
124
- set hardwareVersion(hardwareVersion) {
125
- this._hardwareVersion = hardwareVersion;
126
- }
127
- get hardwareVersion() {
128
- return this._hardwareVersion;
129
- }
130
- get manufacturerName() {
131
- return this._manufacturerName;
132
- }
133
- set manufacturerName(manufacturerName) {
134
- this._manufacturerName = manufacturerName;
135
- }
136
- set modelID(modelID) {
137
- this._modelID = modelID;
138
- }
139
- get modelID() {
140
- return this._modelID;
141
- }
142
- get networkAddress() {
143
- return this._networkAddress;
144
- }
145
- set networkAddress(networkAddress) {
146
- Device.nwkToIeeeCache.delete(this._networkAddress);
147
- this._networkAddress = networkAddress;
148
- Device.nwkToIeeeCache.set(this._networkAddress, this.ieeeAddr);
149
- for (const endpoint of this._endpoints) {
150
- endpoint.deviceNetworkAddress = networkAddress;
151
- }
152
- }
153
- get powerSource() {
154
- return this._powerSource;
155
- }
156
- set powerSource(powerSource) {
157
- this._powerSource = typeof powerSource === 'number' ? Zcl.POWER_SOURCES[powerSource & ~(1 << 7)] : powerSource;
158
- }
159
- get softwareBuildID() {
160
- return this._softwareBuildID;
161
- }
162
- set softwareBuildID(softwareBuildID) {
163
- this._softwareBuildID = softwareBuildID;
164
- }
165
- get stackVersion() {
166
- return this._stackVersion;
167
- }
168
- set stackVersion(stackVersion) {
169
- this._stackVersion = stackVersion;
170
- }
171
- get zclVersion() {
172
- return this._zclVersion;
173
- }
174
- set zclVersion(zclVersion) {
175
- this._zclVersion = zclVersion;
176
- }
177
- get linkquality() {
178
- return this._linkquality;
179
- }
180
- set linkquality(linkquality) {
181
- this._linkquality = linkquality;
182
- }
183
- get skipDefaultResponse() {
184
- return this._skipDefaultResponse;
185
- }
186
- set skipDefaultResponse(skipDefaultResponse) {
187
- this._skipDefaultResponse = skipDefaultResponse;
188
- }
189
- get customReadResponse() {
190
- return this._customReadResponse;
191
- }
192
- set customReadResponse(customReadResponse) {
193
- this._customReadResponse = customReadResponse;
194
- }
195
- get checkinInterval() {
196
- return this._checkinInterval;
197
- }
198
- set checkinInterval(checkinInterval) {
199
- this._checkinInterval = checkinInterval;
200
- this.resetPendingRequestTimeout();
201
- }
202
- get pendingRequestTimeout() {
203
- return this._pendingRequestTimeout;
204
- }
205
- set pendingRequestTimeout(pendingRequestTimeout) {
206
- this._pendingRequestTimeout = pendingRequestTimeout;
207
- }
208
- get customClusters() {
209
- return this._customClusters;
210
- }
211
- meta;
212
- // This lookup contains all devices that are queried from the database, this is to ensure that always
213
- // the same instance is returned.
214
- static devices = new Map();
215
- static loadedFromDatabase = false;
216
- static deletedDevices = new Map();
217
- static nwkToIeeeCache = new Map();
218
- static ReportablePropertiesMapping = {
219
- modelId: {
220
- key: 'modelID',
221
- set: (v, d) => {
222
- d.modelID = v;
223
- },
224
- },
225
- manufacturerName: {
226
- key: 'manufacturerName',
227
- set: (v, d) => {
228
- d.manufacturerName = v;
229
- },
230
- },
231
- powerSource: {
232
- key: 'powerSource',
233
- set: (v, d) => {
234
- d.powerSource = v;
235
- },
236
- },
237
- zclVersion: {
238
- key: 'zclVersion',
239
- set: (v, d) => {
240
- d.zclVersion = v;
241
- },
242
- },
243
- appVersion: {
244
- key: 'applicationVersion',
245
- set: (v, d) => {
246
- d.applicationVersion = v;
247
- },
248
- },
249
- stackVersion: {
250
- key: 'stackVersion',
251
- set: (v, d) => {
252
- d.stackVersion = v;
253
- },
254
- },
255
- hwVersion: {
256
- key: 'hardwareVersion',
257
- set: (v, d) => {
258
- d.hardwareVersion = v;
259
- },
260
- },
261
- dateCode: {
262
- key: 'dateCode',
263
- set: (v, d) => {
264
- d.dateCode = v;
265
- },
266
- },
267
- swBuildId: {
268
- key: 'softwareBuildID',
269
- set: (v, d) => {
270
- d.softwareBuildID = v;
271
- },
272
- },
273
- };
274
- constructor(ID, type, ieeeAddr, networkAddress, manufacturerID, endpoints, manufacturerName, powerSource, modelID, applicationVersion, stackVersion, zclVersion, hardwareVersion, dateCode, softwareBuildID, interviewCompleted, meta, lastSeen, checkinInterval, pendingRequestTimeout) {
275
- super();
276
- this.ID = ID;
277
- this._type = type;
278
- this._ieeeAddr = ieeeAddr;
279
- this._networkAddress = networkAddress;
280
- this._manufacturerID = manufacturerID;
281
- this._endpoints = endpoints;
282
- this._manufacturerName = manufacturerName;
283
- this._powerSource = powerSource;
284
- this._modelID = modelID;
285
- this._applicationVersion = applicationVersion;
286
- this._stackVersion = stackVersion;
287
- this._zclVersion = zclVersion;
288
- this._hardwareVersion = hardwareVersion;
289
- this._dateCode = dateCode;
290
- this._softwareBuildID = softwareBuildID;
291
- this._interviewCompleted = interviewCompleted;
292
- this._interviewing = false;
293
- this._skipDefaultResponse = false;
294
- this.meta = meta;
295
- this._lastSeen = lastSeen;
296
- this._checkinInterval = checkinInterval;
297
- this._pendingRequestTimeout = pendingRequestTimeout;
298
- }
299
- createEndpoint(ID) {
300
- if (this.getEndpoint(ID)) {
301
- throw new Error(`Device '${this.ieeeAddr}' already has an endpoint '${ID}'`);
302
- }
303
- const endpoint = endpoint_1.default.create(ID, undefined, undefined, [], [], this.networkAddress, this.ieeeAddr);
304
- this.endpoints.push(endpoint);
305
- this.save();
306
- return endpoint;
307
- }
308
- changeIeeeAddress(ieeeAddr) {
309
- Device.devices.delete(this.ieeeAddr);
310
- this.ieeeAddr = ieeeAddr;
311
- Device.devices.set(this.ieeeAddr, this);
312
- Device.nwkToIeeeCache.set(this.networkAddress, this.ieeeAddr);
313
- this.endpoints.forEach((e) => (e.deviceIeeeAddress = ieeeAddr));
314
- this.save();
315
- }
316
- getEndpoint(ID) {
317
- return this.endpoints.find((e) => e.ID === ID);
318
- }
319
- // There might be multiple endpoints with same DeviceId but it is not supported and first endpoint is returned
320
- getEndpointByDeviceType(deviceType) {
321
- const deviceID = Zcl.ENDPOINT_DEVICE_TYPE[deviceType];
322
- return this.endpoints.find((d) => d.deviceID === deviceID);
323
- }
324
- implicitCheckin() {
325
- // No need to do anythign in `catch` as `endpoint.sendRequest` already logs failures.
326
- /* istanbul ignore next */
327
- Promise.allSettled(this.endpoints.map((e) => e.sendPendingRequests(false))).catch(() => { });
328
- }
329
- updateLastSeen() {
330
- this._lastSeen = Date.now();
331
- }
332
- resetPendingRequestTimeout() {
333
- // pendingRequestTimeout can be changed dynamically at runtime, and it is not persisted.
334
- // Default timeout is one checkin interval in milliseconds.
335
- this._pendingRequestTimeout = (this._checkinInterval ?? 0) * 1000;
336
- }
337
- hasPendingRequests() {
338
- return this.endpoints.find((e) => e.hasPendingRequests()) !== undefined;
339
- }
340
- async onZclData(dataPayload, frame, endpoint) {
341
- // Update reportable properties
342
- if (frame.isCluster('genBasic') && (frame.isCommand('readRsp') || frame.isCommand('report'))) {
343
- const attrKeyValue = helpers_1.ZclFrameConverter.attributeKeyValue(frame, this.manufacturerID, this.customClusters);
344
- for (const key in attrKeyValue) {
345
- Device.ReportablePropertiesMapping[key]?.set(attrKeyValue[key], this);
346
- }
347
- }
348
- // Respond to enroll requests
349
- if (frame.header.isSpecific && frame.isCluster('ssIasZone') && frame.isCommand('enrollReq')) {
350
- logger_1.logger.debug(`IAS - '${this.ieeeAddr}' responding to enroll response`, NS);
351
- const payload = { enrollrspcode: 0, zoneid: 23 };
352
- await endpoint.command('ssIasZone', 'enrollRsp', payload, { disableDefaultResponse: true });
353
- }
354
- // Reponse to read requests
355
- if (frame.header.isGlobal && frame.isCommand('read') && !this._customReadResponse?.(frame, endpoint)) {
356
- const time = Math.round((new Date().getTime() - OneJanuary2000) / 1000);
357
- const attributes = {
358
- ...endpoint.clusters,
359
- genTime: {
360
- attributes: {
361
- timeStatus: 3, // Time-master + synchronised
362
- time: time,
363
- timeZone: new Date().getTimezoneOffset() * -1 * 60,
364
- localTime: time - new Date().getTimezoneOffset() * 60,
365
- lastSetTime: time,
366
- validUntilTime: time + 24 * 60 * 60, // valid for 24 hours
367
- },
368
- },
369
- };
370
- if (frame.cluster.name in attributes) {
371
- const response = {};
372
- for (const entry of frame.payload) {
373
- if (frame.cluster.hasAttribute(entry.attrId)) {
374
- const name = frame.cluster.getAttribute(entry.attrId).name;
375
- if (name in attributes[frame.cluster.name].attributes) {
376
- response[name] = attributes[frame.cluster.name].attributes[name];
377
- }
378
- }
379
- }
380
- try {
381
- await endpoint.readResponse(frame.cluster.ID, frame.header.transactionSequenceNumber, response, {
382
- srcEndpoint: dataPayload.destinationEndpoint,
383
- });
384
- }
385
- catch (error) {
386
- logger_1.logger.error(`Read response to ${this.ieeeAddr} failed (${error.message})`, NS);
387
- }
388
- }
389
- }
390
- // Handle check-in from sleeping end devices
391
- if (frame.header.isSpecific && frame.isCluster('genPollCtrl') && frame.isCommand('checkin')) {
392
- try {
393
- if (this.hasPendingRequests() || this._checkinInterval === undefined) {
394
- const payload = {
395
- startFastPolling: true,
396
- fastPollTimeout: 0,
397
- };
398
- logger_1.logger.debug(`check-in from ${this.ieeeAddr}: accepting fast-poll`, NS);
399
- await endpoint.command(frame.cluster.ID, 'checkinRsp', payload, { sendPolicy: 'immediate' });
400
- // This is a good time to read the checkin interval if we haven't stored it previously
401
- if (this._checkinInterval === undefined) {
402
- const pollPeriod = await endpoint.read('genPollCtrl', ['checkinInterval'], { sendPolicy: 'immediate' });
403
- this._checkinInterval = pollPeriod.checkinInterval / 4; // convert to seconds
404
- this.resetPendingRequestTimeout();
405
- logger_1.logger.debug(`Request Queue (${this.ieeeAddr}): default expiration timeout set to ${this.pendingRequestTimeout}`, NS);
406
- }
407
- await Promise.all(this.endpoints.map(async (e) => await e.sendPendingRequests(true)));
408
- // We *must* end fast-poll when we're done sending things. Otherwise
409
- // we cause undue power-drain.
410
- logger_1.logger.debug(`check-in from ${this.ieeeAddr}: stopping fast-poll`, NS);
411
- await endpoint.command(frame.cluster.ID, 'fastPollStop', {}, { sendPolicy: 'immediate' });
412
- }
413
- else {
414
- const payload = {
415
- startFastPolling: false,
416
- fastPollTimeout: 0,
417
- };
418
- logger_1.logger.debug(`check-in from ${this.ieeeAddr}: declining fast-poll`, NS);
419
- await endpoint.command(frame.cluster.ID, 'checkinRsp', payload, { sendPolicy: 'immediate' });
420
- }
421
- }
422
- catch (error) {
423
- /* istanbul ignore next */
424
- logger_1.logger.error(`Handling of poll check-in from ${this.ieeeAddr} failed (${error.message})`, NS);
425
- }
426
- }
427
- // Send a default response if necessary.
428
- const isDefaultResponse = frame.header.isGlobal && frame.command.name === 'defaultRsp';
429
- const commandHasResponse = frame.command.response != undefined;
430
- const disableDefaultResponse = frame.header.frameControl.disableDefaultResponse;
431
- /* istanbul ignore next */
432
- const disableTuyaDefaultResponse = endpoint.getDevice().manufacturerName?.startsWith('_TZ') && process.env['DISABLE_TUYA_DEFAULT_RESPONSE'];
433
- // Sometimes messages are received twice, prevent responding twice
434
- const alreadyResponded = this._lastDefaultResponseSequenceNumber === frame.header.transactionSequenceNumber;
435
- if (this.type !== 'GreenPower' &&
436
- !dataPayload.wasBroadcast &&
437
- !disableDefaultResponse &&
438
- !isDefaultResponse &&
439
- !commandHasResponse &&
440
- !this._skipDefaultResponse &&
441
- !alreadyResponded &&
442
- !disableTuyaDefaultResponse) {
443
- try {
444
- this._lastDefaultResponseSequenceNumber = frame.header.transactionSequenceNumber;
445
- // In the ZCL it is not documented what the direction of the default response should be
446
- // In https://github.com/Koenkk/zigbee2mqtt/issues/18096 a commandResponse (SERVER_TO_CLIENT)
447
- // is send and the device expects a CLIENT_TO_SERVER back.
448
- // Previously SERVER_TO_CLIENT was always used.
449
- // Therefore for non-global commands we inverse the direction.
450
- const direction = frame.header.isGlobal
451
- ? Zcl.Direction.SERVER_TO_CLIENT
452
- : frame.header.frameControl.direction === Zcl.Direction.CLIENT_TO_SERVER
453
- ? Zcl.Direction.SERVER_TO_CLIENT
454
- : Zcl.Direction.CLIENT_TO_SERVER;
455
- await endpoint.defaultResponse(frame.command.ID, 0, frame.cluster.ID, frame.header.transactionSequenceNumber, { direction });
456
- }
457
- catch (error) {
458
- logger_1.logger.debug(`Default response to ${this.ieeeAddr} failed (${error})`, NS);
459
- }
460
- }
461
- }
462
- /*
463
- * CRUD
464
- */
465
- /**
466
- * Reset runtime lookups.
467
- */
468
- static resetCache() {
469
- Device.devices.clear();
470
- Device.loadedFromDatabase = false;
471
- Device.deletedDevices.clear();
472
- Device.nwkToIeeeCache.clear();
473
- }
474
- static fromDatabaseEntry(entry) {
475
- const networkAddress = entry.nwkAddr;
476
- const ieeeAddr = entry.ieeeAddr;
477
- const endpoints = [];
478
- for (const id in entry.endpoints) {
479
- endpoints.push(endpoint_1.default.fromDatabaseRecord(entry.endpoints[id], networkAddress, ieeeAddr));
480
- }
481
- const meta = entry.meta ? entry.meta : {};
482
- if (entry.type === 'Group') {
483
- throw new Error('Cannot load device from group');
484
- }
485
- // default: no timeout (messages expire immediately after first send attempt)
486
- let pendingRequestTimeout = 0;
487
- if (endpoints.filter((e) => e.inputClusters.includes(Zcl.Clusters.genPollCtrl.ID)).length > 0) {
488
- // default for devices that support genPollCtrl cluster (RX off when idle): 1 day
489
- pendingRequestTimeout = 86400000;
490
- /* istanbul ignore else */
491
- }
492
- // always load value from database available (modernExtend.quirkCheckinInterval() exists for devices without genPollCtl)
493
- if (entry.checkinInterval !== undefined) {
494
- // if the checkin interval is known, messages expire by default after one checkin interval
495
- pendingRequestTimeout = entry.checkinInterval * 1000; // milliseconds
496
- }
497
- logger_1.logger.debug(`Request Queue (${ieeeAddr}): default expiration timeout set to ${pendingRequestTimeout}`, NS);
498
- return new Device(entry.id, entry.type, ieeeAddr, networkAddress, entry.manufId, endpoints, entry.manufName, entry.powerSource, entry.modelId, entry.appVersion, entry.stackVersion, entry.zclVersion, entry.hwVersion, entry.dateCode, entry.swBuildId, entry.interviewCompleted, meta, entry.lastSeen, entry.checkinInterval, pendingRequestTimeout);
499
- }
500
- toDatabaseEntry() {
501
- const epList = this.endpoints.map((e) => e.ID);
502
- const endpoints = {};
503
- for (const endpoint of this.endpoints) {
504
- endpoints[endpoint.ID] = endpoint.toDatabaseRecord();
505
- }
506
- return {
507
- id: this.ID,
508
- type: this.type,
509
- ieeeAddr: this.ieeeAddr,
510
- nwkAddr: this.networkAddress,
511
- manufId: this.manufacturerID,
512
- manufName: this.manufacturerName,
513
- powerSource: this.powerSource,
514
- modelId: this.modelID,
515
- epList,
516
- endpoints,
517
- appVersion: this.applicationVersion,
518
- stackVersion: this.stackVersion,
519
- hwVersion: this.hardwareVersion,
520
- dateCode: this.dateCode,
521
- swBuildId: this.softwareBuildID,
522
- zclVersion: this.zclVersion,
523
- interviewCompleted: this.interviewCompleted,
524
- meta: this.meta,
525
- lastSeen: this.lastSeen,
526
- checkinInterval: this.checkinInterval,
527
- };
528
- }
529
- save(writeDatabase = true) {
530
- entity_1.default.database.update(this.toDatabaseEntry(), writeDatabase);
531
- }
532
- static loadFromDatabaseIfNecessary() {
533
- if (!Device.loadedFromDatabase) {
534
- for (const entry of entity_1.default.database.getEntriesIterator(['Coordinator', 'EndDevice', 'Router', 'GreenPower', 'Unknown'])) {
535
- const device = Device.fromDatabaseEntry(entry);
536
- Device.devices.set(device.ieeeAddr, device);
537
- Device.nwkToIeeeCache.set(device.networkAddress, device.ieeeAddr);
538
- }
539
- Device.loadedFromDatabase = true;
540
- }
541
- }
542
- static find(ieeeOrNwkAddress, includeDeleted = false) {
543
- return typeof ieeeOrNwkAddress === 'string'
544
- ? Device.byIeeeAddr(ieeeOrNwkAddress, includeDeleted)
545
- : Device.byNetworkAddress(ieeeOrNwkAddress, includeDeleted);
546
- }
547
- static byIeeeAddr(ieeeAddr, includeDeleted = false) {
548
- Device.loadFromDatabaseIfNecessary();
549
- return includeDeleted ? (Device.deletedDevices.get(ieeeAddr) ?? Device.devices.get(ieeeAddr)) : Device.devices.get(ieeeAddr);
550
- }
551
- static byNetworkAddress(networkAddress, includeDeleted = false) {
552
- Device.loadFromDatabaseIfNecessary();
553
- const ieeeAddr = Device.nwkToIeeeCache.get(networkAddress);
554
- return ieeeAddr ? Device.byIeeeAddr(ieeeAddr, includeDeleted) : undefined;
555
- }
556
- static byType(type) {
557
- const devices = [];
558
- for (const device of Device.allIterator((d) => d.type === type)) {
559
- devices.push(device);
560
- }
561
- return devices;
562
- }
563
- /**
564
- * @deprecated use allIterator()
565
- */
566
- static all() {
567
- Device.loadFromDatabaseIfNecessary();
568
- return Array.from(Device.devices.values());
569
- }
570
- static *allIterator(predicate) {
571
- Device.loadFromDatabaseIfNecessary();
572
- for (const device of Device.devices.values()) {
573
- if (!predicate || predicate(device)) {
574
- yield device;
575
- }
576
- }
577
- }
578
- undelete(interviewCompleted) {
579
- if (Device.deletedDevices.delete(this.ieeeAddr)) {
580
- Device.devices.set(this.ieeeAddr, this);
581
- this._interviewCompleted = interviewCompleted ?? this._interviewCompleted;
582
- entity_1.default.database.insert(this.toDatabaseEntry());
583
- }
584
- else {
585
- throw new Error(`Device '${this.ieeeAddr}' is not deleted`);
586
- }
587
- }
588
- static create(type, ieeeAddr, networkAddress, manufacturerID, manufacturerName, powerSource, modelID, interviewCompleted) {
589
- Device.loadFromDatabaseIfNecessary();
590
- if (Device.devices.has(ieeeAddr)) {
591
- throw new Error(`Device with IEEE address '${ieeeAddr}' already exists`);
592
- }
593
- const ID = entity_1.default.database.newID();
594
- const device = new Device(ID, type, ieeeAddr, networkAddress, manufacturerID, [], manufacturerName, powerSource, modelID, undefined, undefined, undefined, undefined, undefined, undefined, interviewCompleted, {}, undefined, undefined, 0);
595
- entity_1.default.database.insert(device.toDatabaseEntry());
596
- Device.devices.set(device.ieeeAddr, device);
597
- Device.nwkToIeeeCache.set(device.networkAddress, device.ieeeAddr);
598
- return device;
599
- }
600
- /*
601
- * Zigbee functions
602
- */
603
- async interview(ignoreCache = false) {
604
- if (this.interviewing) {
605
- const message = `Interview - interview already in progress for '${this.ieeeAddr}'`;
606
- logger_1.logger.debug(message, NS);
607
- throw new Error(message);
608
- }
609
- let err;
610
- this._interviewing = true;
611
- logger_1.logger.debug(`Interview - start device '${this.ieeeAddr}'`, NS);
612
- try {
613
- await this.interviewInternal(ignoreCache);
614
- logger_1.logger.debug(`Interview - completed for device '${this.ieeeAddr}'`, NS);
615
- this._interviewCompleted = true;
616
- }
617
- catch (error) {
618
- if (this.interviewQuirks()) {
619
- logger_1.logger.debug(`Interview - completed for device '${this.ieeeAddr}' because of quirks ('${error}')`, NS);
620
- }
621
- else {
622
- logger_1.logger.debug(`Interview - failed for device '${this.ieeeAddr}' with error '${error}'`, NS);
623
- err = error;
624
- }
625
- }
626
- finally {
627
- this._interviewing = false;
628
- this.save();
629
- }
630
- if (err) {
631
- throw err;
632
- }
633
- }
634
- interviewQuirks() {
635
- logger_1.logger.debug(`Interview - quirks check for '${this.modelID}'-'${this.manufacturerName}'-'${this.type}'`, NS);
636
- // Tuya devices are typically hard to interview. They also don't require a full interview to work correctly
637
- // e.g. no ias enrolling is required for the devices to work.
638
- // Assume that in case we got both the manufacturerName and modelID the device works correctly.
639
- // https://github.com/Koenkk/zigbee2mqtt/issues/7564:
640
- // Fails during ias enroll due to UNSUPPORTED_ATTRIBUTE
641
- // https://github.com/Koenkk/zigbee2mqtt/issues/4655
642
- // Device does not change zoneState after enroll (event with original gateway)
643
- // modelID is mostly in the form of e.g. TS0202 and manufacturerName like e.g. _TYZB01_xph99wvr
644
- if (this.modelID?.match('^TS\\d*$') && (this.manufacturerName?.match('^_TZ.*_.*$') || this.manufacturerName?.match('^_TYZB01_.*$'))) {
645
- this._powerSource = this._powerSource || 'Battery';
646
- this._interviewing = false;
647
- this._interviewCompleted = true;
648
- logger_1.logger.debug(`Interview - quirks matched for Tuya end device`, NS);
649
- return true;
650
- }
651
- // Some devices, e.g. Xiaomi end devices have a different interview procedure, after pairing they
652
- // report it's modelID trough a readResponse. The readResponse is received by the controller and set
653
- // on the device.
654
- const lookup = {
655
- '^3R.*?Z': {
656
- type: 'EndDevice',
657
- powerSource: 'Battery',
658
- },
659
- 'lumi..*': {
660
- type: 'EndDevice',
661
- manufacturerID: 4151,
662
- manufacturerName: 'LUMI',
663
- powerSource: 'Battery',
664
- },
665
- 'TERNCY-PP01': {
666
- type: 'EndDevice',
667
- manufacturerID: 4648,
668
- manufacturerName: 'TERNCY',
669
- powerSource: 'Battery',
670
- },
671
- '3RWS18BZ': {}, // https://github.com/Koenkk/zigbee-herdsman-converters/pull/2710
672
- 'MULTI-MECI--EA01': {},
673
- MOT003: {}, // https://github.com/Koenkk/zigbee2mqtt/issues/12471
674
- };
675
- let match;
676
- for (const key in lookup) {
677
- if (this.modelID && this.modelID.match(key)) {
678
- match = key;
679
- break;
680
- }
681
- }
682
- if (match) {
683
- const info = lookup[match];
684
- logger_1.logger.debug(`Interview procedure failed but got modelID matching '${match}', assuming interview succeeded`, NS);
685
- this._type = this._type === 'Unknown' && info.type ? info.type : this._type;
686
- this._manufacturerID = this._manufacturerID || info.manufacturerID;
687
- this._manufacturerName = this._manufacturerName || info.manufacturerName;
688
- this._powerSource = this._powerSource || info.powerSource;
689
- this._interviewing = false;
690
- this._interviewCompleted = true;
691
- logger_1.logger.debug(`Interview - quirks matched on '${match}'`, NS);
692
- return true;
693
- }
694
- else {
695
- logger_1.logger.debug('Interview - quirks did not match', NS);
696
- return false;
697
- }
698
- }
699
- async interviewInternal(ignoreCache) {
700
- const hasNodeDescriptor = () => this._manufacturerID !== undefined && this._type !== 'Unknown';
701
- if (ignoreCache || !hasNodeDescriptor()) {
702
- for (let attempt = 0; attempt < 6; attempt++) {
703
- try {
704
- await this.updateNodeDescriptor();
705
- break;
706
- }
707
- catch (error) {
708
- if (this.interviewQuirks()) {
709
- logger_1.logger.debug(`Interview - completed for device '${this.ieeeAddr}' because of quirks ('${error}')`, NS);
710
- return;
711
- }
712
- else {
713
- // Most of the times the first node descriptor query fails and the seconds one succeeds.
714
- logger_1.logger.debug(`Interview - node descriptor request failed for '${this.ieeeAddr}', attempt ${attempt + 1}`, NS);
715
- }
716
- }
717
- }
718
- }
719
- else {
720
- logger_1.logger.debug(`Interview - skip node descriptor request for '${this.ieeeAddr}', already got it`, NS);
721
- }
722
- if (!hasNodeDescriptor()) {
723
- throw new Error(`Interview failed because can not get node descriptor ('${this.ieeeAddr}')`);
724
- }
725
- if (this.manufacturerID === 4619 && this._type === 'EndDevice') {
726
- // Give Tuya end device some time to pair. Otherwise they leave immediately.
727
- // https://github.com/Koenkk/zigbee2mqtt/issues/5814
728
- logger_1.logger.debug('Interview - Detected Tuya end device, waiting 10 seconds...', NS);
729
- await (0, utils_1.Wait)(10000);
730
- }
731
- else if (this.manufacturerID === 0 || this.manufacturerID === 4098) {
732
- // Potentially a Tuya device, some sleep fast so make sure to read the modelId and manufacturerName quickly.
733
- // In case the device responds, the endoint and modelID/manufacturerName are set
734
- // in controller.onZclOrRawData()
735
- // https://github.com/Koenkk/zigbee2mqtt/issues/7553
736
- logger_1.logger.debug('Interview - Detected potential Tuya end device, reading modelID and manufacturerName...', NS);
737
- try {
738
- const endpoint = endpoint_1.default.create(1, undefined, undefined, [], [], this.networkAddress, this.ieeeAddr);
739
- const result = await endpoint.read('genBasic', ['modelId', 'manufacturerName'], { sendPolicy: 'immediate' });
740
- for (const key in result) {
741
- Device.ReportablePropertiesMapping[key].set(result[key], this);
742
- }
743
- }
744
- catch (error) {
745
- /* istanbul ignore next */
746
- logger_1.logger.debug(`Interview - Tuya read modelID and manufacturerName failed (${error})`, NS);
747
- }
748
- }
749
- // e.g. Xiaomi Aqara Opple devices fail to respond to the first active endpoints request, therefore try 2 times
750
- // https://github.com/Koenkk/zigbee-herdsman/pull/103
751
- let gotActiveEndpoints = false;
752
- for (let attempt = 0; attempt < 2; attempt++) {
753
- try {
754
- await this.updateActiveEndpoints();
755
- gotActiveEndpoints = true;
756
- break;
757
- }
758
- catch (error) {
759
- logger_1.logger.debug(`Interview - active endpoints request failed for '${this.ieeeAddr}', attempt ${attempt + 1} (${error})`, NS);
760
- }
761
- }
762
- if (!gotActiveEndpoints) {
763
- throw new Error(`Interview failed because can not get active endpoints ('${this.ieeeAddr}')`);
764
- }
765
- logger_1.logger.debug(`Interview - got active endpoints for device '${this.ieeeAddr}'`, NS);
766
- const coordinator = Device.byType('Coordinator')[0];
767
- for (const endpoint of this._endpoints) {
768
- await endpoint.updateSimpleDescriptor();
769
- logger_1.logger.debug(`Interview - got simple descriptor for endpoint '${endpoint.ID}' device '${this.ieeeAddr}'`, NS);
770
- // Read attributes
771
- // nice to have but not required for successful pairing as most of the attributes are not mandatory in ZCL specification
772
- if (endpoint.supportsInputCluster('genBasic')) {
773
- for (const key in Device.ReportablePropertiesMapping) {
774
- const item = Device.ReportablePropertiesMapping[key];
775
- if (ignoreCache || !this[item.key]) {
776
- try {
777
- let result;
778
- try {
779
- result = await endpoint.read('genBasic', [key], { sendPolicy: 'immediate' });
780
- }
781
- catch (error) {
782
- // Reading attributes can fail for many reason, e.g. it could be that device rejoins
783
- // while joining like in:
784
- // https://github.com/Koenkk/zigbee-herdsman-converters/issues/2485.
785
- // The modelID and manufacturerName are crucial for device identification, so retry.
786
- if (item.key === 'modelID' || item.key === 'manufacturerName') {
787
- logger_1.logger.debug(`Interview - first ${item.key} retrieval attempt failed, retrying after 10 seconds...`, NS);
788
- await (0, utils_1.Wait)(10000);
789
- result = await endpoint.read('genBasic', [key], { sendPolicy: 'immediate' });
790
- }
791
- else {
792
- throw error;
793
- }
794
- }
795
- item.set(result[key], this);
796
- logger_1.logger.debug(`Interview - got '${item.key}' for device '${this.ieeeAddr}'`, NS);
797
- }
798
- catch (error) {
799
- logger_1.logger.debug(`Interview - failed to read attribute '${item.key}' from endpoint '${endpoint.ID}' (${error})`, NS);
800
- }
801
- }
802
- }
803
- }
804
- // Enroll IAS device
805
- if (endpoint.supportsInputCluster('ssIasZone')) {
806
- logger_1.logger.debug(`Interview - IAS - enrolling '${this.ieeeAddr}' endpoint '${endpoint.ID}'`, NS);
807
- const stateBefore = await endpoint.read('ssIasZone', ['iasCieAddr', 'zoneState'], { sendPolicy: 'immediate' });
808
- logger_1.logger.debug(`Interview - IAS - before enrolling state: '${JSON.stringify(stateBefore)}'`, NS);
809
- // Do not enroll when device has already been enrolled
810
- if (stateBefore.zoneState !== 1 || stateBefore.iasCieAddr !== coordinator.ieeeAddr) {
811
- logger_1.logger.debug(`Interview - IAS - not enrolled, enrolling`, NS);
812
- await endpoint.write('ssIasZone', { iasCieAddr: coordinator.ieeeAddr }, { sendPolicy: 'immediate' });
813
- logger_1.logger.debug(`Interview - IAS - wrote iasCieAddr`, NS);
814
- // There are 2 enrollment procedures:
815
- // - Auto enroll: coordinator has to send enrollResponse without receiving an enroll request
816
- // this case is handled below.
817
- // - Manual enroll: coordinator replies to enroll request with an enroll response.
818
- // this case in hanled in onZclData().
819
- // https://github.com/Koenkk/zigbee2mqtt/issues/4569#issuecomment-706075676
820
- await (0, utils_1.Wait)(500);
821
- logger_1.logger.debug(`IAS - '${this.ieeeAddr}' sending enroll response (auto enroll)`, NS);
822
- const payload = { enrollrspcode: 0, zoneid: 23 };
823
- await endpoint.command('ssIasZone', 'enrollRsp', payload, { disableDefaultResponse: true, sendPolicy: 'immediate' });
824
- let enrolled = false;
825
- for (let attempt = 0; attempt < 20; attempt++) {
826
- await (0, utils_1.Wait)(500);
827
- const stateAfter = await endpoint.read('ssIasZone', ['iasCieAddr', 'zoneState'], { sendPolicy: 'immediate' });
828
- logger_1.logger.debug(`Interview - IAS - after enrolling state (${attempt}): '${JSON.stringify(stateAfter)}'`, NS);
829
- if (stateAfter.zoneState === 1) {
830
- enrolled = true;
831
- break;
832
- }
833
- }
834
- if (enrolled) {
835
- logger_1.logger.debug(`Interview - IAS successfully enrolled '${this.ieeeAddr}' endpoint '${endpoint.ID}'`, NS);
836
- }
837
- else {
838
- throw new Error(`Interview failed because of failed IAS enroll (zoneState didn't change ('${this.ieeeAddr}')`);
839
- }
840
- }
841
- else {
842
- logger_1.logger.debug(`Interview - IAS - already enrolled, skipping enroll`, NS);
843
- }
844
- }
845
- }
846
- // Bind poll control
847
- try {
848
- for (const endpoint of this.endpoints.filter((e) => e.supportsInputCluster('genPollCtrl'))) {
849
- logger_1.logger.debug(`Interview - Poll control - binding '${this.ieeeAddr}' endpoint '${endpoint.ID}'`, NS);
850
- await endpoint.bind('genPollCtrl', coordinator.endpoints[0]);
851
- const pollPeriod = await endpoint.read('genPollCtrl', ['checkinInterval'], { sendPolicy: 'immediate' });
852
- this._checkinInterval = pollPeriod.checkinInterval / 4; // convert to seconds
853
- this.resetPendingRequestTimeout();
854
- }
855
- }
856
- catch (error) {
857
- /* istanbul ignore next */
858
- logger_1.logger.debug(`Interview - failed to bind genPollCtrl (${error})`, NS);
859
- }
860
- }
861
- async updateNodeDescriptor() {
862
- const clusterId = Zdo.ClusterId.NODE_DESCRIPTOR_REQUEST;
863
- const zdoPayload = Zdo.Buffalo.buildRequest(entity_1.default.adapter.hasZdoMessageOverhead, clusterId, this.networkAddress);
864
- const response = await entity_1.default.adapter.sendZdo(this.ieeeAddr, this.networkAddress, clusterId, zdoPayload, false);
865
- if (!Zdo.Buffalo.checkStatus(response)) {
866
- throw new Zdo.StatusError(response[0]);
867
- }
868
- // TODO: make use of: capabilities.rxOnWhenIdle, maxIncTxSize, maxOutTxSize, serverMask.stackComplianceRevision
869
- const nodeDescriptor = response[1];
870
- this._manufacturerID = nodeDescriptor.manufacturerCode;
871
- switch (nodeDescriptor.logicalType) {
872
- case 0x0:
873
- this._type = 'Coordinator';
874
- break;
875
- case 0x1:
876
- this._type = 'Router';
877
- break;
878
- case 0x2:
879
- this._type = 'EndDevice';
880
- break;
881
- }
882
- logger_1.logger.debug(`Interview - got node descriptor for device '${this.ieeeAddr}'`, NS);
883
- // TODO: define a property on Device for this value (would be good to have it displayed)
884
- // log for devices older than 1 from current revision
885
- if (nodeDescriptor.serverMask.stackComplianceRevision < ZSpec.ZIGBEE_REVISION - 1) {
886
- // always 0 before revision 21 where field was added
887
- const rev = nodeDescriptor.serverMask.stackComplianceRevision < 21 ? 'pre-21' : nodeDescriptor.serverMask.stackComplianceRevision;
888
- logger_1.logger.info(`Device '${this.ieeeAddr}' is only compliant to revision '${rev}' of the ZigBee specification (current revision: ${ZSpec.ZIGBEE_REVISION}).`, NS);
889
- }
890
- }
891
- async updateActiveEndpoints() {
892
- const clusterId = Zdo.ClusterId.ACTIVE_ENDPOINTS_REQUEST;
893
- const zdoPayload = Zdo.Buffalo.buildRequest(entity_1.default.adapter.hasZdoMessageOverhead, clusterId, this.networkAddress);
894
- const response = await entity_1.default.adapter.sendZdo(this.ieeeAddr, this.networkAddress, clusterId, zdoPayload, false);
895
- if (!Zdo.Buffalo.checkStatus(response)) {
896
- throw new Zdo.StatusError(response[0]);
897
- }
898
- const activeEndpoints = response[1];
899
- // Make sure that the endpoint are sorted.
900
- activeEndpoints.endpointList.sort((a, b) => a - b);
901
- for (const endpoint of activeEndpoints.endpointList) {
902
- // Some devices, e.g. TERNCY return endpoint 0 in the active endpoints request.
903
- // This is not a valid endpoint number according to the ZCL, requesting a simple descriptor will result
904
- // into an error. Therefore we filter it, more info: https://github.com/Koenkk/zigbee-herdsman/issues/82
905
- /* istanbul ignore else */
906
- if (endpoint !== 0 && !this.getEndpoint(endpoint)) {
907
- this._endpoints.push(endpoint_1.default.create(endpoint, undefined, undefined, [], [], this.networkAddress, this.ieeeAddr));
908
- }
909
- }
910
- // Remove disappeared endpoints (can happen with e.g. custom devices).
911
- this._endpoints = this._endpoints.filter((e) => activeEndpoints.endpointList.includes(e.ID));
912
- }
913
- /**
914
- * Request device to advertise its network address.
915
- * Note: This does not actually update the device property (if needed), as this is already done with `zdoResponse` event in Controller.
916
- */
917
- async requestNetworkAddress() {
918
- const clusterId = Zdo.ClusterId.NETWORK_ADDRESS_REQUEST;
919
- const zdoPayload = Zdo.Buffalo.buildRequest(entity_1.default.adapter.hasZdoMessageOverhead, clusterId, this.ieeeAddr, false, 0);
920
- await entity_1.default.adapter.sendZdo(this.ieeeAddr, ZSpec.BroadcastAddress.RX_ON_WHEN_IDLE, clusterId, zdoPayload, true);
921
- }
922
- async removeFromNetwork() {
923
- if (this._type === 'GreenPower') {
924
- const payload = {
925
- options: 0x002550,
926
- srcID: Number(this.ieeeAddr),
927
- };
928
- const frame = Zcl.Frame.create(Zcl.FrameType.SPECIFIC, Zcl.Direction.SERVER_TO_CLIENT, true, undefined, zclTransactionSequenceNumber_1.default.next(), 'pairing', 33, payload, this.customClusters);
929
- await entity_1.default.adapter.sendZclFrameToAll(242, frame, 242, enums_1.BroadcastAddress.RX_ON_WHEN_IDLE);
930
- }
931
- else {
932
- const clusterId = Zdo.ClusterId.LEAVE_REQUEST;
933
- const zdoPayload = Zdo.Buffalo.buildRequest(entity_1.default.adapter.hasZdoMessageOverhead, clusterId, this.ieeeAddr, Zdo.LeaveRequestFlags.WITHOUT_REJOIN);
934
- const response = await entity_1.default.adapter.sendZdo(this.ieeeAddr, this.networkAddress, clusterId, zdoPayload, false);
935
- if (!Zdo.Buffalo.checkStatus(response)) {
936
- throw new Zdo.StatusError(response[0]);
937
- }
938
- }
939
- this.removeFromDatabase();
940
- }
941
- removeFromDatabase() {
942
- Device.loadFromDatabaseIfNecessary();
943
- for (const endpoint of this.endpoints) {
944
- endpoint.removeFromAllGroupsDatabase();
945
- }
946
- if (entity_1.default.database.has(this.ID)) {
947
- entity_1.default.database.remove(this.ID);
948
- }
949
- Device.deletedDevices.set(this.ieeeAddr, this);
950
- Device.devices.delete(this.ieeeAddr);
951
- // Clear all data in case device joins again
952
- this._interviewCompleted = false;
953
- this._interviewing = false;
954
- this.meta = {};
955
- const newEndpoints = [];
956
- for (const endpoint of this.endpoints) {
957
- newEndpoints.push(endpoint_1.default.create(endpoint.ID, endpoint.profileID, endpoint.deviceID, endpoint.inputClusters, endpoint.outputClusters, this.networkAddress, this.ieeeAddr));
958
- }
959
- this._endpoints = newEndpoints;
960
- }
961
- async lqi() {
962
- const clusterId = Zdo.ClusterId.LQI_TABLE_REQUEST;
963
- // TODO return Zdo.LQITableEntry directly (requires updates in other repos)
964
- const neighbors = [];
965
- const request = async (startIndex) => {
966
- const zdoPayload = Zdo.Buffalo.buildRequest(entity_1.default.adapter.hasZdoMessageOverhead, clusterId, startIndex);
967
- const response = await entity_1.default.adapter.sendZdo(this.ieeeAddr, this.networkAddress, clusterId, zdoPayload, false);
968
- if (!Zdo.Buffalo.checkStatus(response)) {
969
- throw new Zdo.StatusError(response[0]);
970
- }
971
- const result = response[1];
972
- for (const entry of result.entryList) {
973
- neighbors.push({
974
- ieeeAddr: entry.eui64,
975
- networkAddress: entry.nwkAddress,
976
- linkquality: entry.lqi,
977
- relationship: entry.relationship,
978
- depth: entry.depth,
979
- });
980
- }
981
- return [result.neighborTableEntries, result.entryList.length];
982
- };
983
- let [tableEntries, entryCount] = await request(0);
984
- const size = tableEntries;
985
- let nextStartIndex = entryCount;
986
- while (neighbors.length < size) {
987
- [tableEntries, entryCount] = await request(nextStartIndex);
988
- nextStartIndex += entryCount;
989
- }
990
- return { neighbors };
991
- }
992
- async routingTable() {
993
- const clusterId = Zdo.ClusterId.ROUTING_TABLE_REQUEST;
994
- // TODO return Zdo.RoutingTableEntry directly (requires updates in other repos)
995
- const table = [];
996
- const request = async (startIndex) => {
997
- const zdoPayload = Zdo.Buffalo.buildRequest(entity_1.default.adapter.hasZdoMessageOverhead, clusterId, startIndex);
998
- const response = await entity_1.default.adapter.sendZdo(this.ieeeAddr, this.networkAddress, clusterId, zdoPayload, false);
999
- if (!Zdo.Buffalo.checkStatus(response)) {
1000
- throw new Zdo.StatusError(response[0]);
1001
- }
1002
- const result = response[1];
1003
- for (const entry of result.entryList) {
1004
- table.push({
1005
- destinationAddress: entry.destinationAddress,
1006
- status: entry.status,
1007
- nextHop: entry.nextHopAddress,
1008
- });
1009
- }
1010
- return [result.routingTableEntries, result.entryList.length];
1011
- };
1012
- let [tableEntries, entryCount] = await request(0);
1013
- const size = tableEntries;
1014
- let nextStartIndex = entryCount;
1015
- while (table.length < size) {
1016
- [tableEntries, entryCount] = await request(nextStartIndex);
1017
- nextStartIndex += entryCount;
1018
- }
1019
- return { table };
1020
- }
1021
- async ping(disableRecovery = true) {
1022
- // Zigbee does not have an official pinging mechanism. Use a read request
1023
- // of a mandatory basic cluster attribute to keep it as lightweight as
1024
- // possible.
1025
- const endpoint = this.endpoints.find((ep) => ep.inputClusters.includes(0)) ?? this.endpoints[0];
1026
- await endpoint.read('genBasic', ['zclVersion'], { disableRecovery });
1027
- }
1028
- addCustomCluster(name, cluster) {
1029
- (0, assert_1.default)(![Zcl.Clusters.touchlink.ID, Zcl.Clusters.greenPower.ID].includes(cluster.ID), 'Overriding of greenPower or touchlink cluster is not supported');
1030
- if (Zcl.Utils.isClusterName(name)) {
1031
- const existingCluster = Zcl.Clusters[name];
1032
- // Extend existing cluster
1033
- (0, assert_1.default)(existingCluster.ID === cluster.ID, `Custom cluster ID (${cluster.ID}) should match existing cluster ID (${existingCluster.ID})`);
1034
- cluster = {
1035
- ID: cluster.ID,
1036
- manufacturerCode: cluster.manufacturerCode,
1037
- attributes: { ...existingCluster.attributes, ...cluster.attributes },
1038
- commands: { ...existingCluster.commands, ...cluster.commands },
1039
- commandsResponse: { ...existingCluster.commandsResponse, ...cluster.commandsResponse },
1040
- };
1041
- }
1042
- this._customClusters[name] = cluster;
1043
- }
1044
- }
1045
- exports.default = Device;
1046
- //# sourceMappingURL=device.js.map