zigbee-herdsman 0.55.4 → 0.56.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 (347) hide show
  1. package/.github/workflows/update_deps.yml +1 -1
  2. package/.release-please-manifest.json +1 -1
  3. package/CHANGELOG.md +23 -0
  4. package/dist/adapter/adapter.d.ts +16 -8
  5. package/dist/adapter/adapter.d.ts.map +1 -1
  6. package/dist/adapter/adapter.js +4 -2
  7. package/dist/adapter/adapter.js.map +1 -1
  8. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +11 -11
  9. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
  10. package/dist/adapter/deconz/adapter/deconzAdapter.js +98 -91
  11. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
  12. package/dist/adapter/deconz/adapter/index.d.ts.map +1 -1
  13. package/dist/adapter/deconz/adapter/index.js +0 -2
  14. package/dist/adapter/deconz/adapter/index.js.map +1 -1
  15. package/dist/adapter/deconz/driver/driver.d.ts +13 -13
  16. package/dist/adapter/deconz/driver/driver.d.ts.map +1 -1
  17. package/dist/adapter/deconz/driver/driver.js +124 -126
  18. package/dist/adapter/deconz/driver/driver.js.map +1 -1
  19. package/dist/adapter/deconz/driver/frame.d.ts.map +1 -1
  20. package/dist/adapter/deconz/driver/frame.js +1 -1
  21. package/dist/adapter/deconz/driver/frame.js.map +1 -1
  22. package/dist/adapter/deconz/driver/frameParser.d.ts +3 -1
  23. package/dist/adapter/deconz/driver/frameParser.d.ts.map +1 -1
  24. package/dist/adapter/deconz/driver/frameParser.js +31 -29
  25. package/dist/adapter/deconz/driver/frameParser.js.map +1 -1
  26. package/dist/adapter/deconz/driver/parser.d.ts +3 -4
  27. package/dist/adapter/deconz/driver/parser.d.ts.map +1 -1
  28. package/dist/adapter/deconz/driver/parser.js +3 -28
  29. package/dist/adapter/deconz/driver/parser.js.map +1 -1
  30. package/dist/adapter/ember/adapter/emberAdapter.d.ts +7 -8
  31. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
  32. package/dist/adapter/ember/adapter/emberAdapter.js +68 -80
  33. package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
  34. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
  35. package/dist/adapter/ember/adapter/oneWaitress.js +5 -2
  36. package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
  37. package/dist/adapter/ember/adapter/tokensManager.d.ts +1 -1
  38. package/dist/adapter/ember/adapter/tokensManager.d.ts.map +1 -1
  39. package/dist/adapter/ember/adapter/tokensManager.js +2 -2
  40. package/dist/adapter/ember/adapter/tokensManager.js.map +1 -1
  41. package/dist/adapter/ember/consts.d.ts +0 -27
  42. package/dist/adapter/ember/consts.d.ts.map +1 -1
  43. package/dist/adapter/ember/consts.js +1 -28
  44. package/dist/adapter/ember/consts.js.map +1 -1
  45. package/dist/adapter/ember/ezsp/buffalo.d.ts +1 -3
  46. package/dist/adapter/ember/ezsp/buffalo.d.ts.map +1 -1
  47. package/dist/adapter/ember/ezsp/buffalo.js +11 -34
  48. package/dist/adapter/ember/ezsp/buffalo.js.map +1 -1
  49. package/dist/adapter/ember/ezsp/ezsp.d.ts +22 -38
  50. package/dist/adapter/ember/ezsp/ezsp.d.ts.map +1 -1
  51. package/dist/adapter/ember/ezsp/ezsp.js +36 -65
  52. package/dist/adapter/ember/ezsp/ezsp.js.map +1 -1
  53. package/dist/adapter/ember/types.d.ts +16 -23
  54. package/dist/adapter/ember/types.d.ts.map +1 -1
  55. package/dist/adapter/ember/uart/ash.d.ts +6 -22
  56. package/dist/adapter/ember/uart/ash.d.ts.map +1 -1
  57. package/dist/adapter/ember/uart/ash.js +97 -115
  58. package/dist/adapter/ember/uart/ash.js.map +1 -1
  59. package/dist/adapter/ember/uart/queues.d.ts +9 -9
  60. package/dist/adapter/ember/uart/queues.d.ts.map +1 -1
  61. package/dist/adapter/ember/uart/queues.js +26 -25
  62. package/dist/adapter/ember/uart/queues.js.map +1 -1
  63. package/dist/adapter/ember/utils/initters.js +1 -1
  64. package/dist/adapter/ember/utils/initters.js.map +1 -1
  65. package/dist/adapter/events.d.ts +1 -9
  66. package/dist/adapter/events.d.ts.map +1 -1
  67. package/dist/adapter/events.js +0 -10
  68. package/dist/adapter/events.js.map +1 -1
  69. package/dist/adapter/ezsp/adapter/backup.d.ts +1 -1
  70. package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -1
  71. package/dist/adapter/ezsp/adapter/backup.js +7 -7
  72. package/dist/adapter/ezsp/adapter/backup.js.map +1 -1
  73. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +6 -6
  74. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  75. package/dist/adapter/ezsp/adapter/ezspAdapter.js +24 -29
  76. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
  77. package/dist/adapter/ezsp/adapter/index.d.ts.map +1 -1
  78. package/dist/adapter/ezsp/adapter/index.js +0 -2
  79. package/dist/adapter/ezsp/adapter/index.js.map +1 -1
  80. package/dist/adapter/ezsp/driver/commands.d.ts +2 -2
  81. package/dist/adapter/ezsp/driver/commands.d.ts.map +1 -1
  82. package/dist/adapter/ezsp/driver/commands.js +111 -111
  83. package/dist/adapter/ezsp/driver/commands.js.map +1 -1
  84. package/dist/adapter/ezsp/driver/driver.d.ts +0 -1
  85. package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -1
  86. package/dist/adapter/ezsp/driver/driver.js +22 -13
  87. package/dist/adapter/ezsp/driver/driver.js.map +1 -1
  88. package/dist/adapter/ezsp/driver/ezsp.d.ts +2 -2
  89. package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -1
  90. package/dist/adapter/ezsp/driver/ezsp.js +8 -9
  91. package/dist/adapter/ezsp/driver/ezsp.js.map +1 -1
  92. package/dist/adapter/ezsp/driver/index.d.ts.map +1 -1
  93. package/dist/adapter/ezsp/driver/index.js +0 -1
  94. package/dist/adapter/ezsp/driver/index.js.map +1 -1
  95. package/dist/adapter/ezsp/driver/multicast.js +2 -2
  96. package/dist/adapter/ezsp/driver/multicast.js.map +1 -1
  97. package/dist/adapter/ezsp/driver/parser.d.ts +1 -2
  98. package/dist/adapter/ezsp/driver/parser.d.ts.map +1 -1
  99. package/dist/adapter/ezsp/driver/parser.js +2 -8
  100. package/dist/adapter/ezsp/driver/parser.js.map +1 -1
  101. package/dist/adapter/ezsp/driver/types/basic.d.ts.map +1 -1
  102. package/dist/adapter/ezsp/driver/types/basic.js +0 -1
  103. package/dist/adapter/ezsp/driver/types/basic.js.map +1 -1
  104. package/dist/adapter/ezsp/driver/types/index.d.ts +1 -1
  105. package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
  106. package/dist/adapter/ezsp/driver/types/index.js +1 -2
  107. package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
  108. package/dist/adapter/ezsp/driver/types/named.d.ts.map +1 -1
  109. package/dist/adapter/ezsp/driver/types/named.js +0 -1
  110. package/dist/adapter/ezsp/driver/types/named.js.map +1 -1
  111. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -1
  112. package/dist/adapter/ezsp/driver/types/struct.js +62 -1
  113. package/dist/adapter/ezsp/driver/types/struct.js.map +1 -1
  114. package/dist/adapter/ezsp/driver/uart.d.ts +2 -3
  115. package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -1
  116. package/dist/adapter/ezsp/driver/uart.js +9 -13
  117. package/dist/adapter/ezsp/driver/uart.js.map +1 -1
  118. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +3 -1
  119. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts.map +1 -1
  120. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +1 -1
  121. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +1 -1
  122. package/dist/adapter/ezsp/driver/utils/index.d.ts +1 -15
  123. package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -1
  124. package/dist/adapter/ezsp/driver/utils/index.js +1 -39
  125. package/dist/adapter/ezsp/driver/utils/index.js.map +1 -1
  126. package/dist/adapter/serialPort.d.ts +7 -2
  127. package/dist/adapter/serialPort.d.ts.map +1 -1
  128. package/dist/adapter/serialPort.js +5 -1
  129. package/dist/adapter/serialPort.js.map +1 -1
  130. package/dist/adapter/tstype.d.ts +1 -0
  131. package/dist/adapter/tstype.d.ts.map +1 -1
  132. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +1 -1
  133. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -1
  134. package/dist/adapter/z-stack/adapter/adapter-backup.js +26 -18
  135. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
  136. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +1 -1
  137. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts.map +1 -1
  138. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +27 -12
  139. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
  140. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
  141. package/dist/adapter/z-stack/adapter/manager.js +10 -9
  142. package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
  143. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +6 -6
  144. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  145. package/dist/adapter/z-stack/adapter/zStackAdapter.js +41 -31
  146. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  147. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts.map +1 -1
  148. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +0 -2
  149. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +1 -1
  150. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts.map +1 -1
  151. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +5 -0
  152. package/dist/adapter/z-stack/structs/entries/address-manager-table.js.map +1 -1
  153. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts.map +1 -1
  154. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +0 -1
  155. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js.map +1 -1
  156. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts.map +1 -1
  157. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +5 -0
  158. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js.map +1 -1
  159. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts.map +1 -1
  160. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +0 -1
  161. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js.map +1 -1
  162. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts.map +1 -1
  163. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +5 -0
  164. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js.map +1 -1
  165. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts.map +1 -1
  166. package/dist/adapter/z-stack/structs/entries/channel-list.js +0 -1
  167. package/dist/adapter/z-stack/structs/entries/channel-list.js.map +1 -1
  168. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +1 -1
  169. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts.map +1 -1
  170. package/dist/adapter/z-stack/structs/entries/has-configured.js +11 -5
  171. package/dist/adapter/z-stack/structs/entries/has-configured.js.map +1 -1
  172. package/dist/adapter/z-stack/structs/entries/nib.d.ts +1 -1
  173. package/dist/adapter/z-stack/structs/entries/nib.d.ts.map +1 -1
  174. package/dist/adapter/z-stack/structs/entries/nib.js +5 -1
  175. package/dist/adapter/z-stack/structs/entries/nib.js.map +1 -1
  176. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +1 -1
  177. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts.map +1 -1
  178. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +8 -2
  179. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js.map +1 -1
  180. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +1 -1
  181. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts.map +1 -1
  182. package/dist/adapter/z-stack/structs/entries/nwk-key.js +8 -2
  183. package/dist/adapter/z-stack/structs/entries/nwk-key.js.map +1 -1
  184. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts.map +1 -1
  185. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +0 -1
  186. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js.map +1 -1
  187. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts.map +1 -1
  188. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +0 -1
  189. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js.map +1 -1
  190. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts.map +1 -1
  191. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +5 -0
  192. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js.map +1 -1
  193. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts.map +1 -1
  194. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +0 -1
  195. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +1 -1
  196. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts.map +1 -1
  197. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +6 -0
  198. package/dist/adapter/z-stack/structs/entries/security-manager-table.js.map +1 -1
  199. package/dist/adapter/z-stack/structs/struct.d.ts.map +1 -1
  200. package/dist/adapter/z-stack/structs/struct.js +11 -1
  201. package/dist/adapter/z-stack/structs/struct.js.map +1 -1
  202. package/dist/adapter/z-stack/structs/table.d.ts +1 -1
  203. package/dist/adapter/z-stack/structs/table.d.ts.map +1 -1
  204. package/dist/adapter/z-stack/structs/table.js +18 -13
  205. package/dist/adapter/z-stack/structs/table.js.map +1 -1
  206. package/dist/adapter/z-stack/unpi/frame.d.ts +2 -2
  207. package/dist/adapter/z-stack/unpi/frame.d.ts.map +1 -1
  208. package/dist/adapter/z-stack/unpi/frame.js +1 -1
  209. package/dist/adapter/z-stack/unpi/frame.js.map +1 -1
  210. package/dist/adapter/z-stack/unpi/parser.js +1 -1
  211. package/dist/adapter/z-stack/unpi/parser.js.map +1 -1
  212. package/dist/adapter/z-stack/utils/network-options.js +1 -1
  213. package/dist/adapter/z-stack/utils/network-options.js.map +1 -1
  214. package/dist/adapter/z-stack/znp/znp.d.ts +5 -6
  215. package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -1
  216. package/dist/adapter/z-stack/znp/znp.js +21 -28
  217. package/dist/adapter/z-stack/znp/znp.js.map +1 -1
  218. package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +1 -1
  219. package/dist/adapter/z-stack/znp/zpiObject.js +2 -2
  220. package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -1
  221. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +9 -9
  222. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
  223. package/dist/adapter/zigate/adapter/zigateAdapter.js +92 -118
  224. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
  225. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +1 -1
  226. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -1
  227. package/dist/adapter/zigate/driver/buffaloZiGate.js +3 -3
  228. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -1
  229. package/dist/adapter/zigate/driver/commandType.d.ts.map +1 -1
  230. package/dist/adapter/zigate/driver/commandType.js +3 -2
  231. package/dist/adapter/zigate/driver/commandType.js.map +1 -1
  232. package/dist/adapter/zigate/driver/constants.d.ts +7 -1
  233. package/dist/adapter/zigate/driver/constants.d.ts.map +1 -1
  234. package/dist/adapter/zigate/driver/constants.js +1 -2
  235. package/dist/adapter/zigate/driver/constants.js.map +1 -1
  236. package/dist/adapter/zigate/driver/frame.d.ts.map +1 -1
  237. package/dist/adapter/zigate/driver/frame.js +3 -4
  238. package/dist/adapter/zigate/driver/frame.js.map +1 -1
  239. package/dist/adapter/zigate/driver/messageType.d.ts.map +1 -1
  240. package/dist/adapter/zigate/driver/messageType.js +1 -2
  241. package/dist/adapter/zigate/driver/messageType.js.map +1 -1
  242. package/dist/adapter/zigate/driver/ziGateObject.d.ts +5 -5
  243. package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -1
  244. package/dist/adapter/zigate/driver/ziGateObject.js +8 -9
  245. package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -1
  246. package/dist/adapter/zigate/driver/zigate.d.ts +7 -10
  247. package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -1
  248. package/dist/adapter/zigate/driver/zigate.js +33 -39
  249. package/dist/adapter/zigate/driver/zigate.js.map +1 -1
  250. package/dist/controller/controller.d.ts +18 -6
  251. package/dist/controller/controller.d.ts.map +1 -1
  252. package/dist/controller/controller.js +95 -103
  253. package/dist/controller/controller.js.map +1 -1
  254. package/dist/controller/events.d.ts +2 -13
  255. package/dist/controller/events.d.ts.map +1 -1
  256. package/dist/controller/events.js +0 -13
  257. package/dist/controller/events.js.map +1 -1
  258. package/dist/controller/greenPower.d.ts +6 -2
  259. package/dist/controller/greenPower.d.ts.map +1 -1
  260. package/dist/controller/greenPower.js +17 -13
  261. package/dist/controller/greenPower.js.map +1 -1
  262. package/dist/controller/helpers/request.d.ts +1 -1
  263. package/dist/controller/helpers/request.d.ts.map +1 -1
  264. package/dist/controller/helpers/request.js.map +1 -1
  265. package/dist/controller/helpers/requestQueue.d.ts.map +1 -1
  266. package/dist/controller/helpers/requestQueue.js +2 -2
  267. package/dist/controller/helpers/requestQueue.js.map +1 -1
  268. package/dist/controller/helpers/zclFrameConverter.d.ts +2 -2
  269. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  270. package/dist/controller/helpers/zclFrameConverter.js +2 -2
  271. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  272. package/dist/controller/model/device.d.ts +30 -28
  273. package/dist/controller/model/device.d.ts.map +1 -1
  274. package/dist/controller/model/device.js +43 -31
  275. package/dist/controller/model/device.js.map +1 -1
  276. package/dist/controller/model/endpoint.d.ts +5 -2
  277. package/dist/controller/model/endpoint.d.ts.map +1 -1
  278. package/dist/controller/model/endpoint.js +92 -93
  279. package/dist/controller/model/endpoint.js.map +1 -1
  280. package/dist/controller/model/entity.d.ts +5 -3
  281. package/dist/controller/model/entity.d.ts.map +1 -1
  282. package/dist/controller/model/entity.js +2 -2
  283. package/dist/controller/model/entity.js.map +1 -1
  284. package/dist/controller/model/group.d.ts +1 -0
  285. package/dist/controller/model/group.d.ts.map +1 -1
  286. package/dist/controller/model/group.js +36 -28
  287. package/dist/controller/model/group.js.map +1 -1
  288. package/dist/controller/touchlink.d.ts.map +1 -1
  289. package/dist/controller/touchlink.js +6 -5
  290. package/dist/controller/touchlink.js.map +1 -1
  291. package/dist/controller/tstype.d.ts +1 -4
  292. package/dist/controller/tstype.d.ts.map +1 -1
  293. package/dist/controller/tstype.js +0 -5
  294. package/dist/controller/tstype.js.map +1 -1
  295. package/dist/models/backup-storage-unified.d.ts +2 -2
  296. package/dist/models/backup-storage-unified.d.ts.map +1 -1
  297. package/dist/models/backup.d.ts +1 -1
  298. package/dist/models/backup.d.ts.map +1 -1
  299. package/dist/utils/backup.d.ts.map +1 -1
  300. package/dist/utils/backup.js +20 -52
  301. package/dist/utils/backup.js.map +1 -1
  302. package/dist/utils/index.d.ts +2 -3
  303. package/dist/utils/index.d.ts.map +1 -1
  304. package/dist/utils/index.js +3 -5
  305. package/dist/utils/index.js.map +1 -1
  306. package/dist/utils/logger.d.ts +1 -1
  307. package/dist/utils/logger.d.ts.map +1 -1
  308. package/dist/utils/queue.d.ts.map +1 -1
  309. package/dist/utils/queue.js +8 -8
  310. package/dist/utils/queue.js.map +1 -1
  311. package/dist/utils/utils.d.ts +5 -0
  312. package/dist/utils/utils.d.ts.map +1 -0
  313. package/dist/utils/utils.js +24 -0
  314. package/dist/utils/utils.js.map +1 -0
  315. package/dist/zspec/index.js +0 -10
  316. package/dist/zspec/index.js.map +1 -1
  317. package/dist/zspec/utils.d.ts.map +1 -1
  318. package/dist/zspec/utils.js +7 -1
  319. package/dist/zspec/utils.js.map +1 -1
  320. package/dist/zspec/zcl/buffaloZcl.js +13 -13
  321. package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
  322. package/dist/zspec/zcl/utils.d.ts +1 -1
  323. package/dist/zspec/zcl/utils.d.ts.map +1 -1
  324. package/dist/zspec/zcl/utils.js +21 -20
  325. package/dist/zspec/zcl/utils.js.map +1 -1
  326. package/dist/zspec/zcl/zclFrame.d.ts +3 -3
  327. package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
  328. package/dist/zspec/zcl/zclFrame.js +10 -17
  329. package/dist/zspec/zcl/zclFrame.js.map +1 -1
  330. package/dist/zspec/zcl/zclHeader.d.ts +2 -2
  331. package/dist/zspec/zcl/zclHeader.d.ts.map +1 -1
  332. package/dist/zspec/zcl/zclHeader.js +3 -3
  333. package/dist/zspec/zcl/zclHeader.js.map +1 -1
  334. package/dist/zspec/zdo/buffaloZdo.d.ts +1 -1
  335. package/dist/zspec/zdo/buffaloZdo.d.ts.map +1 -1
  336. package/dist/zspec/zdo/buffaloZdo.js +12 -8
  337. package/dist/zspec/zdo/buffaloZdo.js.map +1 -1
  338. package/package.json +18 -18
  339. package/tsconfig.json +1 -0
  340. package/dist/utils/assertString.d.ts +0 -3
  341. package/dist/utils/assertString.d.ts.map +0 -1
  342. package/dist/utils/assertString.js +0 -9
  343. package/dist/utils/assertString.js.map +0 -1
  344. package/dist/utils/isNumberArray.d.ts +0 -3
  345. package/dist/utils/isNumberArray.d.ts.map +0 -1
  346. package/dist/utils/isNumberArray.js +0 -7
  347. package/dist/utils/isNumberArray.js.map +0 -1
@@ -38,7 +38,6 @@ const ZSpec = __importStar(require("../../../zspec"));
38
38
  const Zcl = __importStar(require("../../../zspec/zcl"));
39
39
  const Zdo = __importStar(require("../../../zspec/zdo"));
40
40
  const buffaloZdo_1 = require("../../../zspec/zdo/buffaloZdo");
41
- const events_1 = require("../../events");
42
41
  const serialPortUtils_1 = __importDefault(require("../../serialPortUtils"));
43
42
  const socketPortUtils_1 = __importDefault(require("../../socketPortUtils"));
44
43
  const consts_1 = require("../consts");
@@ -103,7 +102,6 @@ const BACKUP_OLDEST_SUPPORTED_EZSP_VERSION = 12;
103
102
  * NOTE: This is blocking the request queue, so we shouldn't go crazy high.
104
103
  */
105
104
  const BROADCAST_NETWORK_KEY_SWITCH_WAIT_TIME = 15000;
106
- const QUEUE_HIGH_COUNT = 4;
107
105
  const QUEUE_MAX_SEND_ATTEMPTS = 3;
108
106
  const QUEUE_BUSY_DEFER_MSEC = 500;
109
107
  const QUEUE_NETWORK_DOWN_DEFER_MSEC = 1500;
@@ -140,8 +138,8 @@ const TRUST_CENTER_ADDRESS_CACHE_SIZE = 2;
140
138
  * Removing `ENABLE_ROUTE_DISCOVERY` leads to devices that won't reconnect/go offline, and various other issues. Keeping it for now.
141
139
  */
142
140
  exports.DEFAULT_APS_OPTIONS = enums_1.EmberApsOption.RETRY | enums_1.EmberApsOption.ENABLE_ROUTE_DISCOVERY | enums_1.EmberApsOption.ENABLE_ADDRESS_DISCOVERY;
143
- /** Time for a ZDO request to get a callback response. ASH is 2400*6 for ACK timeout. */
144
- const DEFAULT_ZDO_REQUEST_TIMEOUT = 15000; // msec
141
+ /** Time for a request to get a callback response. ASH is 2400*6 for ACK timeout. */
142
+ const DEFAULT_REQUEST_TIMEOUT = 15000; // msec
145
143
  /** Time for a network-related request to get a response (usually via event). */
146
144
  const DEFAULT_NETWORK_REQUEST_TIMEOUT = 10000; // nothing on the network to bother requests, should be much faster than this
147
145
  /** Time between watchdog counters reading/clearing */
@@ -183,17 +181,33 @@ class EmberAdapter extends __1.Adapter {
183
181
  multicastTable;
184
182
  constructor(networkOptions, serialPortOptions, backupPath, adapterOptions) {
185
183
  super(networkOptions, serialPortOptions, backupPath, adapterOptions);
184
+ this.version = {
185
+ ezsp: 0,
186
+ revision: 'unknown',
187
+ build: 0,
188
+ major: 0,
189
+ minor: 0,
190
+ patch: 0,
191
+ special: 0,
192
+ type: enums_1.EmberVersionType.GA,
193
+ };
194
+ this.zdoRequestSequence = 0; // start at 1
195
+ this.interpanLock = false;
196
+ this.networkCache = (0, initters_1.initNetworkCache)();
197
+ this.manufacturerCode = DEFAULT_MANUFACTURER_CODE; // will be set in NCP in initEzsp
198
+ this.multicastTable = [];
186
199
  this.stackConfig = this.loadStackConfig();
187
200
  this.queue = new utils_1.Queue(this.adapterOptions.concurrent || 16); // ORed to avoid 0 (not checked in settings/queue constructor)
188
201
  this.oneWaitress = new oneWaitress_1.EmberOneWaitress();
189
202
  this.ezsp = new ezsp_1.Ezsp(serialPortOptions);
190
- this.ezsp.on(ezsp_1.EzspEvents.ZDO_RESPONSE, this.onZDOResponse.bind(this));
191
- this.ezsp.on(ezsp_1.EzspEvents.INCOMING_MESSAGE, this.onIncomingMessage.bind(this));
192
- this.ezsp.on(ezsp_1.EzspEvents.TOUCHLINK_MESSAGE, this.onTouchlinkMessage.bind(this));
193
- this.ezsp.on(ezsp_1.EzspEvents.STACK_STATUS, this.onStackStatus.bind(this));
194
- this.ezsp.on(ezsp_1.EzspEvents.TRUST_CENTER_JOIN, this.onTrustCenterJoin.bind(this));
195
- this.ezsp.on(ezsp_1.EzspEvents.MESSAGE_SENT, this.onMessageSent.bind(this));
196
- this.ezsp.on(ezsp_1.EzspEvents.GREENPOWER_MESSAGE, this.onGreenpowerMessage.bind(this));
203
+ this.ezsp.on('zdoResponse', this.onZDOResponse.bind(this));
204
+ this.ezsp.on('incomingMessage', this.onIncomingMessage.bind(this));
205
+ this.ezsp.on('touchlinkMessage', this.onTouchlinkMessage.bind(this));
206
+ this.ezsp.on('stackStatus', this.onStackStatus.bind(this));
207
+ this.ezsp.on('trustCenterJoin', this.onTrustCenterJoin.bind(this));
208
+ this.ezsp.on('messageSent', this.onMessageSent.bind(this));
209
+ this.ezsp.on('greenpowerMessage', this.onGreenpowerMessage.bind(this));
210
+ this.ezsp.once('ncpNeedsResetAndInit', this.onNcpNeedsResetAndInit.bind(this));
197
211
  }
198
212
  loadStackConfig() {
199
213
  // store stack config in same dir as backup
@@ -349,7 +363,7 @@ class EmberAdapter extends __1.Adapter {
349
363
  catch (error) {
350
364
  // remove to allow retry on next occurrence
351
365
  this.multicastTable.splice(tableIdx, 1);
352
- logger_1.logger.error(error, NS);
366
+ logger_1.logger.error(error.message, NS);
353
367
  }
354
368
  }
355
369
  break;
@@ -370,13 +384,13 @@ class EmberAdapter extends __1.Adapter {
370
384
  logger_1.logger.debug(`<~~~ [ZDO ${Zdo.ClusterId[apsFrame.clusterId]} from=${sender} ${payload ? JSON.stringify(payload) : 'OK'}]`, NS);
371
385
  this.oneWaitress.resolveZDO(sender, apsFrame, payload);
372
386
  if (apsFrame.clusterId === Zdo.ClusterId.NETWORK_ADDRESS_RESPONSE) {
373
- this.emit(events_1.Events.networkAddress, {
387
+ this.emit('networkAddress', {
374
388
  networkAddress: payload.nwkAddress,
375
389
  ieeeAddr: payload.eui64,
376
390
  });
377
391
  }
378
392
  else if (apsFrame.clusterId === Zdo.ClusterId.END_DEVICE_ANNOUNCE) {
379
- this.emit(events_1.Events.deviceAnnounce, {
393
+ this.emit('deviceAnnounce', {
380
394
  networkAddress: payload.nwkAddress,
381
395
  ieeeAddr: payload.eui64,
382
396
  });
@@ -408,7 +422,7 @@ class EmberAdapter extends __1.Adapter {
408
422
  destinationEndpoint: apsFrame.destinationEndpoint,
409
423
  };
410
424
  this.oneWaitress.resolveZCL(payload);
411
- this.emit(events_1.Events.zclPayload, payload);
425
+ this.emit('zclPayload', payload);
412
426
  }
413
427
  /**
414
428
  * Emitted from @see Ezsp.ezspMacFilterMatchMessageHandler when the message is a valid InterPAN touchlink message.
@@ -433,7 +447,7 @@ class EmberAdapter extends __1.Adapter {
433
447
  destinationEndpoint: endpoint,
434
448
  };
435
449
  this.oneWaitress.resolveZCL(payload);
436
- this.emit(events_1.Events.zclPayload, payload);
450
+ this.emit('zclPayload', payload);
437
451
  }
438
452
  /**
439
453
  * Emitted from @see Ezsp.ezspGpepIncomingMessageHandler
@@ -472,11 +486,11 @@ class EmberAdapter extends __1.Adapter {
472
486
  destinationEndpoint: ZSpec.GP_ENDPOINT,
473
487
  };
474
488
  this.oneWaitress.resolveZCL(payload);
475
- this.emit(events_1.Events.zclPayload, payload);
489
+ this.emit('zclPayload', payload);
476
490
  }
477
491
  catch (err) {
492
+ /* istanbul ignore next */
478
493
  logger_1.logger.error(`<~x~ [GP] Failed creating ZCL payload. Skipping. ${err}`, NS);
479
- return;
480
494
  }
481
495
  }
482
496
  /**
@@ -495,7 +509,7 @@ class EmberAdapter extends __1.Adapter {
495
509
  networkAddress: newNodeId,
496
510
  ieeeAddr: newNodeEui64,
497
511
  };
498
- this.emit(events_1.Events.deviceLeave, payload);
512
+ this.emit('deviceLeave', payload);
499
513
  }
500
514
  else {
501
515
  if (policyDecision !== enums_1.EmberJoinDecision.DENY_JOIN) {
@@ -510,11 +524,11 @@ class EmberAdapter extends __1.Adapter {
510
524
  logger_1.logger.debug(`[WORKAROUND] Setting coordinator manufacturer code to ${Zcl.ManufacturerCode[joinManufCode]}.`, NS);
511
525
  await this.ezsp.ezspSetManufacturerCode(joinManufCode);
512
526
  this.manufacturerCode = joinManufCode;
513
- this.emit(events_1.Events.deviceJoined, payload);
527
+ this.emit('deviceJoined', payload);
514
528
  });
515
529
  }
516
530
  else {
517
- this.emit(events_1.Events.deviceJoined, payload);
531
+ this.emit('deviceJoined', payload);
518
532
  }
519
533
  }
520
534
  else {
@@ -531,17 +545,6 @@ class EmberAdapter extends __1.Adapter {
531
545
  logger_1.logger.info(`[ASH COUNTERS] ${ashCounters.join(',')}`, NS);
532
546
  });
533
547
  }
534
- initVariables() {
535
- this.ezsp.removeAllListeners(ezsp_1.EzspEvents.NCP_NEEDS_RESET_AND_INIT);
536
- clearInterval(this.watchdogCountersHandle);
537
- this.queue.clear();
538
- this.zdoRequestSequence = 0; // start at 1
539
- this.interpanLock = false;
540
- this.networkCache = (0, initters_1.initNetworkCache)();
541
- this.manufacturerCode = DEFAULT_MANUFACTURER_CODE; // will be set in NCP in initEzsp
542
- this.multicastTable = [];
543
- this.ezsp.once(ezsp_1.EzspEvents.NCP_NEEDS_RESET_AND_INIT, this.onNcpNeedsResetAndInit.bind(this));
544
- }
545
548
  /**
546
549
  * Proceed to execute the long list of commands required to setup comms between Host<>NCP.
547
550
  * This is called by start and on internal reset.
@@ -586,6 +589,9 @@ class EmberAdapter extends __1.Adapter {
586
589
  if (status !== enums_1.SLStatus.OK) {
587
590
  throw new Error(`Failed to get network parameters with status=${enums_1.SLStatus[status]}.`);
588
591
  }
592
+ if (this.adapterOptions.transmitPower != null && parameters.radioTxPower !== this.adapterOptions.transmitPower) {
593
+ await this.setTransmitPower(this.adapterOptions.transmitPower);
594
+ }
589
595
  this.networkCache.parameters = parameters;
590
596
  this.networkCache.eui64 = await this.ezsp.ezspGetEui64();
591
597
  logger_1.logger.debug(`[INIT] Network Ready! ${JSON.stringify(this.networkCache)}`, NS);
@@ -723,7 +729,7 @@ class EmberAdapter extends __1.Adapter {
723
729
  const backup = this.getStoredBackup();
724
730
  if (initStatus === enums_1.SLStatus.NOT_JOINED || action === NetworkInitAction.LEFT) {
725
731
  // no network
726
- if (backup != null) {
732
+ if (backup != undefined) {
727
733
  if (this.networkOptions.panID === backup.networkOptions.panId &&
728
734
  Buffer.from(this.networkOptions.extendedPanID).equals(backup.networkOptions.extendedPanId) &&
729
735
  this.networkOptions.channelList.includes(backup.logicalChannel) &&
@@ -748,6 +754,7 @@ class EmberAdapter extends __1.Adapter {
748
754
  switch (action) {
749
755
  case NetworkInitAction.FORM_BACKUP: {
750
756
  logger_1.logger.info(`[INIT TC] Forming from backup.`, NS);
757
+ // `backup` valid in this `action` path (not detected by TS)
751
758
  /* istanbul ignore next */
752
759
  const keyList = backup.devices.map((device) => {
753
760
  const octets = Array.from(device.ieeeAddress.reverse());
@@ -830,12 +837,12 @@ class EmberAdapter extends __1.Adapter {
830
837
  const netParams = {
831
838
  panId,
832
839
  extendedPanId,
833
- radioTxPower: 5,
840
+ radioTxPower: this.adapterOptions.transmitPower || 5,
834
841
  radioChannel,
835
842
  joinMethod: enums_1.EmberJoinMethod.MAC_ASSOCIATION,
836
843
  nwkManagerId: ZSpec.COORDINATOR_ADDRESS,
837
844
  nwkUpdateId: 0,
838
- channels: consts_1.EMBER_ALL_802_15_4_CHANNELS_MASK,
845
+ channels: ZSpec.ALL_802_15_4_CHANNELS_MASK,
839
846
  };
840
847
  logger_1.logger.info(`[INIT FORM] Forming new network with: ${JSON.stringify(netParams)}`, NS);
841
848
  status = await this.ezsp.ezspFormNetwork(netParams);
@@ -852,14 +859,14 @@ class EmberAdapter extends __1.Adapter {
852
859
  */
853
860
  getStoredBackup() {
854
861
  if (!(0, fs_1.existsSync)(this.backupPath)) {
855
- return null;
862
+ return undefined;
856
863
  }
857
864
  let data;
858
865
  try {
859
866
  data = JSON.parse((0, fs_1.readFileSync)(this.backupPath).toString());
860
867
  }
861
868
  catch (error) {
862
- throw new Error(`[BACKUP] Coordinator backup is corrupted.`);
869
+ throw new Error(`[BACKUP] Coordinator backup is corrupted. (${error.stack})`);
863
870
  }
864
871
  if (data.metadata?.format === 'zigpy/open-coordinator-backup' && data.metadata?.version) {
865
872
  if (data.metadata?.version !== 1) {
@@ -871,7 +878,7 @@ class EmberAdapter extends __1.Adapter {
871
878
  if (data.metadata.internal.ezspVersion < BACKUP_OLDEST_SUPPORTED_EZSP_VERSION) {
872
879
  (0, fs_1.renameSync)(this.backupPath, `${this.backupPath}.old`);
873
880
  logger_1.logger.warning(`[BACKUP] Current backup file is from an unsupported EZSP version. Renaming and ignoring.`, NS);
874
- return null;
881
+ return undefined;
875
882
  }
876
883
  return utils_1.BackupUtils.fromUnifiedBackup(data);
877
884
  }
@@ -984,23 +991,8 @@ class EmberAdapter extends __1.Adapter {
984
991
  * @param status
985
992
  */
986
993
  async onNcpNeedsResetAndInit(status) {
987
- logger_1.logger.error(`!!! ADAPTER FATAL ERROR reason=${enums_1.EzspStatus[status]}. !!!`, NS);
988
- if (this.queue.count() > QUEUE_HIGH_COUNT) {
989
- logger_1.logger.info(`Request queue is high (${this.queue.count()}), triggering full restart to prevent stressing the adapter.`, NS);
990
- this.emit(events_1.Events.disconnected);
991
- }
992
- else {
993
- logger_1.logger.info(`Attempting adapter reset...`, NS);
994
- try {
995
- await this.stop();
996
- await (0, utils_1.Wait)(500); // just because
997
- await this.start();
998
- }
999
- catch (err) {
1000
- logger_1.logger.error(`Failed to reset and init adapter. ${err}`, NS);
1001
- this.emit(events_1.Events.disconnected);
1002
- }
1003
- }
994
+ logger_1.logger.error(`Adapter fatal error: ${enums_1.EzspStatus[status]}`, NS);
995
+ this.emit('disconnected');
1004
996
  }
1005
997
  //---- START Events
1006
998
  //---- END Events
@@ -1193,8 +1185,8 @@ class EmberAdapter extends __1.Adapter {
1193
1185
  */
1194
1186
  async emberPermitJoining(duration, broadcastMgmtPermitJoin) {
1195
1187
  let status = await this.ezsp.ezspPermitJoining(duration);
1196
- let apsFrame = null;
1197
- let messageTag = null;
1188
+ let apsFrame;
1189
+ let messageTag;
1198
1190
  logger_1.logger.debug(`Permit joining for ${duration} sec. status=${[status]}`, NS);
1199
1191
  if (broadcastMgmtPermitJoin) {
1200
1192
  // `authentication`: TC significance always 1 (zb specs)
@@ -1303,17 +1295,17 @@ class EmberAdapter extends __1.Adapter {
1303
1295
  static async autoDetectPath() {
1304
1296
  const paths = await serialPortUtils_1.default.find(autoDetectDefinitions);
1305
1297
  paths.sort((a, b) => (a < b ? -1 : 1));
1306
- return paths.length > 0 ? paths[0] : null;
1298
+ return paths.length > 0 ? paths[0] : undefined;
1307
1299
  }
1308
1300
  async start() {
1309
1301
  logger_1.logger.info(`======== Ember Adapter Starting ========`, NS);
1310
- this.initVariables();
1311
1302
  const result = await this.initEzsp();
1312
1303
  return result;
1313
1304
  }
1314
1305
  async stop() {
1306
+ clearInterval(this.watchdogCountersHandle);
1315
1307
  await this.ezsp.stop();
1316
- this.initVariables();
1308
+ this.ezsp.removeAllListeners();
1317
1309
  logger_1.logger.info(`======== Ember Adapter Stopped ========`, NS);
1318
1310
  }
1319
1311
  // queued, non-InterPAN
@@ -1385,14 +1377,11 @@ class EmberAdapter extends __1.Adapter {
1385
1377
  if (nkStatus !== enums_1.SLStatus.OK) {
1386
1378
  throw new Error(`[BACKUP] Failed to export Network Key with status=${enums_1.SLStatus[nkStatus]}.`);
1387
1379
  }
1388
- const zbChannels = Array.from(Array(consts_1.EMBER_NUM_802_15_4_CHANNELS), (e, i) => i + consts_1.EMBER_MIN_802_15_4_CHANNEL_NUMBER);
1389
1380
  return {
1390
1381
  networkOptions: {
1391
1382
  panId: netParams.panId, // uint16_t
1392
1383
  extendedPanId: Buffer.from(netParams.extendedPanId),
1393
- channelList: zbChannels
1394
- .map(/* istanbul ignore next */ (c) => ((2 ** c) & netParams.channels ? c : null))
1395
- .filter((x) => x),
1384
+ channelList: ZSpec.Utils.uint32MaskToChannels(netParams.channels),
1396
1385
  networkKey: networkKey.contents,
1397
1386
  networkKeyDistribute: false,
1398
1387
  },
@@ -1567,7 +1556,7 @@ class EmberAdapter extends __1.Adapter {
1567
1556
  target: networkAddress,
1568
1557
  apsFrame,
1569
1558
  responseClusterId: Zdo.ClusterId.PERMIT_JOINING_RESPONSE,
1570
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1559
+ }, DEFAULT_REQUEST_TIMEOUT);
1571
1560
  });
1572
1561
  }
1573
1562
  else {
@@ -1615,7 +1604,7 @@ class EmberAdapter extends __1.Adapter {
1615
1604
  target: networkAddress,
1616
1605
  apsFrame,
1617
1606
  responseClusterId: Zdo.ClusterId.LQI_TABLE_RESPONSE,
1618
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1607
+ }, DEFAULT_REQUEST_TIMEOUT);
1619
1608
  for (const entry of result.entryList) {
1620
1609
  neighbors.push({
1621
1610
  ieeeAddr: entry.eui64,
@@ -1652,7 +1641,7 @@ class EmberAdapter extends __1.Adapter {
1652
1641
  target: networkAddress,
1653
1642
  apsFrame,
1654
1643
  responseClusterId: Zdo.ClusterId.ROUTING_TABLE_RESPONSE,
1655
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1644
+ }, DEFAULT_REQUEST_TIMEOUT);
1656
1645
  for (const entry of result.entryList) {
1657
1646
  table.push({
1658
1647
  destinationAddress: entry.destinationAddress,
@@ -1685,7 +1674,7 @@ class EmberAdapter extends __1.Adapter {
1685
1674
  target: networkAddress,
1686
1675
  apsFrame,
1687
1676
  responseClusterId: Zdo.ClusterId.NODE_DESCRIPTOR_RESPONSE,
1688
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1677
+ }, DEFAULT_REQUEST_TIMEOUT);
1689
1678
  let type = 'Unknown';
1690
1679
  switch (result.logicalType) {
1691
1680
  case 0x0:
@@ -1720,7 +1709,7 @@ class EmberAdapter extends __1.Adapter {
1720
1709
  target: networkAddress,
1721
1710
  apsFrame,
1722
1711
  responseClusterId: Zdo.ClusterId.ACTIVE_ENDPOINTS_RESPONSE,
1723
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1712
+ }, DEFAULT_REQUEST_TIMEOUT);
1724
1713
  return { endpoints: result.endpointList };
1725
1714
  }, networkAddress);
1726
1715
  }
@@ -1737,7 +1726,7 @@ class EmberAdapter extends __1.Adapter {
1737
1726
  target: networkAddress,
1738
1727
  apsFrame,
1739
1728
  responseClusterId: Zdo.ClusterId.SIMPLE_DESCRIPTOR_RESPONSE,
1740
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1729
+ }, DEFAULT_REQUEST_TIMEOUT);
1741
1730
  return {
1742
1731
  profileID: result.profileId,
1743
1732
  endpointID: result.endpoint,
@@ -1753,7 +1742,7 @@ class EmberAdapter extends __1.Adapter {
1753
1742
  this.checkInterpanLock();
1754
1743
  const zdoPayload = buffaloZdo_1.BuffaloZdo.buildBindRequest(sourceIeeeAddress, sourceEndpoint, clusterID, type === 'group' ? Zdo.MULTICAST_BINDING : Zdo.UNICAST_BINDING, destinationAddressOrGroup, // not used with MULTICAST_BINDING
1755
1744
  destinationAddressOrGroup, // not used with UNICAST_BINDING
1756
- destinationEndpoint);
1745
+ destinationEndpoint ?? 0);
1757
1746
  const [status, apsFrame] = await this.sendZDORequest(destinationNetworkAddress, Zdo.ClusterId.BIND_REQUEST, zdoPayload, exports.DEFAULT_APS_OPTIONS);
1758
1747
  if (status !== enums_1.SLStatus.OK) {
1759
1748
  throw new Error(`[ZDO] Failed bind request for '${destinationNetworkAddress}' destination '${destinationAddressOrGroup}' endpoint '${destinationEndpoint}' with status=${enums_1.SLStatus[status]}.`);
@@ -1762,7 +1751,7 @@ class EmberAdapter extends __1.Adapter {
1762
1751
  target: destinationNetworkAddress,
1763
1752
  apsFrame,
1764
1753
  responseClusterId: Zdo.ClusterId.BIND_RESPONSE,
1765
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1754
+ }, DEFAULT_REQUEST_TIMEOUT);
1766
1755
  }, destinationNetworkAddress);
1767
1756
  }
1768
1757
  // queued, non-InterPAN
@@ -1771,7 +1760,7 @@ class EmberAdapter extends __1.Adapter {
1771
1760
  this.checkInterpanLock();
1772
1761
  const zdoPayload = buffaloZdo_1.BuffaloZdo.buildUnbindRequest(sourceIeeeAddress, sourceEndpoint, clusterID, type === 'group' ? Zdo.MULTICAST_BINDING : Zdo.UNICAST_BINDING, destinationAddressOrGroup, // not used with MULTICAST_BINDING
1773
1762
  destinationAddressOrGroup, // not used with UNICAST_BINDING
1774
- destinationEndpoint);
1763
+ destinationEndpoint ?? 0);
1775
1764
  const [status, apsFrame] = await this.sendZDORequest(destinationNetworkAddress, Zdo.ClusterId.UNBIND_REQUEST, zdoPayload, exports.DEFAULT_APS_OPTIONS);
1776
1765
  if (status !== enums_1.SLStatus.OK) {
1777
1766
  throw new Error(`[ZDO] Failed unbind request for '${destinationNetworkAddress}' destination '${destinationAddressOrGroup}' endpoint '${destinationEndpoint}' with status=${enums_1.SLStatus[status]}.`);
@@ -1780,7 +1769,7 @@ class EmberAdapter extends __1.Adapter {
1780
1769
  target: destinationNetworkAddress,
1781
1770
  apsFrame,
1782
1771
  responseClusterId: Zdo.ClusterId.UNBIND_RESPONSE,
1783
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1772
+ }, DEFAULT_REQUEST_TIMEOUT);
1784
1773
  }, destinationNetworkAddress);
1785
1774
  }
1786
1775
  // queued, non-InterPAN
@@ -1796,7 +1785,7 @@ class EmberAdapter extends __1.Adapter {
1796
1785
  target: networkAddress,
1797
1786
  apsFrame,
1798
1787
  responseClusterId: Zdo.ClusterId.LEAVE_RESPONSE,
1799
- }, DEFAULT_ZDO_REQUEST_TIMEOUT);
1788
+ }, DEFAULT_REQUEST_TIMEOUT);
1800
1789
  }, networkAddress);
1801
1790
  }
1802
1791
  //---- ZCL
@@ -1804,7 +1793,7 @@ class EmberAdapter extends __1.Adapter {
1804
1793
  async sendZclFrameToEndpoint(ieeeAddr, networkAddress, endpoint, zclFrame, timeout, disableResponse, disableRecovery, sourceEndpoint) {
1805
1794
  const sourceEndpointInfo = (sourceEndpoint && endpoints_1.FIXED_ENDPOINTS.find((epi) => epi.endpoint === sourceEndpoint)) || endpoints_1.FIXED_ENDPOINTS[0];
1806
1795
  const command = zclFrame.command;
1807
- let commandResponseId = null;
1796
+ let commandResponseId;
1808
1797
  if (command.response !== undefined && disableResponse === false) {
1809
1798
  commandResponseId = command.response;
1810
1799
  }
@@ -1821,7 +1810,7 @@ class EmberAdapter extends __1.Adapter {
1821
1810
  sequence: 0, // set by stack
1822
1811
  };
1823
1812
  // don't RETRY if no response expected
1824
- if (commandResponseId == null) {
1813
+ if (commandResponseId === undefined) {
1825
1814
  apsFrame.options &= ~enums_1.EmberApsOption.RETRY;
1826
1815
  }
1827
1816
  const data = zclFrame.toBuffer();
@@ -1867,7 +1856,7 @@ class EmberAdapter extends __1.Adapter {
1867
1856
  }
1868
1857
  logger_1.logger.debug(`~x~> [ZCL to=${networkAddress}] Failed to send request attempt ${i}/${QUEUE_MAX_SEND_ATTEMPTS} with status=${enums_1.SLStatus[status]}.`, NS);
1869
1858
  }
1870
- if (commandResponseId != null) {
1859
+ if (commandResponseId !== undefined) {
1871
1860
  // NOTE: aps sequence number will have been set by send function
1872
1861
  const result = await this.oneWaitress.startWaitingFor({
1873
1862
  target: networkAddress,
@@ -1877,7 +1866,6 @@ class EmberAdapter extends __1.Adapter {
1877
1866
  }, timeout);
1878
1867
  return result;
1879
1868
  }
1880
- return null;
1881
1869
  }, networkAddress);
1882
1870
  }
1883
1871
  // queued, non-InterPAN
@@ -2012,7 +2000,7 @@ class EmberAdapter extends __1.Adapter {
2012
2000
  }
2013
2001
  // NOTE: can use ezspRawTransmitCompleteHandler if needed here
2014
2002
  const result = await this.oneWaitress.startWaitingFor({
2015
- target: null,
2003
+ target: undefined,
2016
2004
  apsFrame: apsFrame,
2017
2005
  zclSequence: zclFrame.header.transactionSequenceNumber,
2018
2006
  commandIdentifier: command.response,