@willieee802/zigbee-herdsman 0.14.10-5.1

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 (622) hide show
  1. package/.babelrc.js +10 -0
  2. package/.eslintignore +3 -0
  3. package/.github/ISSUE_TEMPLATE/config.yml +5 -0
  4. package/.github/dependabot.yml +6 -0
  5. package/.github/workflows/ci.yml +31 -0
  6. package/.github/workflows/release.yml +56 -0
  7. package/.github/workflows/stale.yml +19 -0
  8. package/.github/workflows/update_deps.yml +24 -0
  9. package/LICENSE +21 -0
  10. package/README.md +9 -0
  11. package/dist/adapter/adapter.d.ts +62 -0
  12. package/dist/adapter/adapter.d.ts.map +1 -0
  13. package/dist/adapter/adapter.js +101 -0
  14. package/dist/adapter/adapter.js.map +1 -0
  15. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +69 -0
  16. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -0
  17. package/dist/adapter/deconz/adapter/deconzAdapter.js +1064 -0
  18. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -0
  19. package/dist/adapter/deconz/adapter/index.d.ts +3 -0
  20. package/dist/adapter/deconz/adapter/index.d.ts.map +1 -0
  21. package/dist/adapter/deconz/adapter/index.js +11 -0
  22. package/dist/adapter/deconz/adapter/index.js.map +1 -0
  23. package/dist/adapter/deconz/driver/constants.d.ts +105 -0
  24. package/dist/adapter/deconz/driver/constants.d.ts.map +1 -0
  25. package/dist/adapter/deconz/driver/constants.js +56 -0
  26. package/dist/adapter/deconz/driver/constants.js.map +1 -0
  27. package/dist/adapter/deconz/driver/driver.d.ts +82 -0
  28. package/dist/adapter/deconz/driver/driver.d.ts.map +1 -0
  29. package/dist/adapter/deconz/driver/driver.js +733 -0
  30. package/dist/adapter/deconz/driver/driver.js.map +1 -0
  31. package/dist/adapter/deconz/driver/frame.d.ts +7 -0
  32. package/dist/adapter/deconz/driver/frame.d.ts.map +1 -0
  33. package/dist/adapter/deconz/driver/frame.js +14 -0
  34. package/dist/adapter/deconz/driver/frame.js.map +1 -0
  35. package/dist/adapter/deconz/driver/frameParser.d.ts +3 -0
  36. package/dist/adapter/deconz/driver/frameParser.d.ts.map +1 -0
  37. package/dist/adapter/deconz/driver/frameParser.js +444 -0
  38. package/dist/adapter/deconz/driver/frameParser.js.map +1 -0
  39. package/dist/adapter/deconz/driver/parser.d.ts +13 -0
  40. package/dist/adapter/deconz/driver/parser.d.ts.map +1 -0
  41. package/dist/adapter/deconz/driver/parser.js +62 -0
  42. package/dist/adapter/deconz/driver/parser.js.map +1 -0
  43. package/dist/adapter/deconz/driver/writer.d.ts +9 -0
  44. package/dist/adapter/deconz/driver/writer.d.ts.map +1 -0
  45. package/dist/adapter/deconz/driver/writer.js +45 -0
  46. package/dist/adapter/deconz/driver/writer.js.map +1 -0
  47. package/dist/adapter/events.d.ts +48 -0
  48. package/dist/adapter/events.d.ts.map +1 -0
  49. package/dist/adapter/events.js +15 -0
  50. package/dist/adapter/events.js.map +1 -0
  51. package/dist/adapter/ezsp/adapter/backup.d.ts +10 -0
  52. package/dist/adapter/ezsp/adapter/backup.d.ts.map +1 -0
  53. package/dist/adapter/ezsp/adapter/backup.js +54 -0
  54. package/dist/adapter/ezsp/adapter/backup.js.map +1 -0
  55. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +60 -0
  56. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -0
  57. package/dist/adapter/ezsp/adapter/ezspAdapter.js +586 -0
  58. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -0
  59. package/dist/adapter/ezsp/adapter/index.d.ts +3 -0
  60. package/dist/adapter/ezsp/adapter/index.d.ts.map +1 -0
  61. package/dist/adapter/ezsp/adapter/index.js +11 -0
  62. package/dist/adapter/ezsp/adapter/index.js.map +1 -0
  63. package/dist/adapter/ezsp/driver/commands.d.ts +35 -0
  64. package/dist/adapter/ezsp/driver/commands.d.ts.map +1 -0
  65. package/dist/adapter/ezsp/driver/commands.js +2358 -0
  66. package/dist/adapter/ezsp/driver/commands.js.map +1 -0
  67. package/dist/adapter/ezsp/driver/consts.d.ts +11 -0
  68. package/dist/adapter/ezsp/driver/consts.d.ts.map +1 -0
  69. package/dist/adapter/ezsp/driver/consts.js +14 -0
  70. package/dist/adapter/ezsp/driver/consts.js.map +1 -0
  71. package/dist/adapter/ezsp/driver/driver.d.ts +104 -0
  72. package/dist/adapter/ezsp/driver/driver.d.ts.map +1 -0
  73. package/dist/adapter/ezsp/driver/driver.js +640 -0
  74. package/dist/adapter/ezsp/driver/driver.js.map +1 -0
  75. package/dist/adapter/ezsp/driver/ezsp.d.ts +97 -0
  76. package/dist/adapter/ezsp/driver/ezsp.d.ts.map +1 -0
  77. package/dist/adapter/ezsp/driver/ezsp.js +578 -0
  78. package/dist/adapter/ezsp/driver/ezsp.js.map +1 -0
  79. package/dist/adapter/ezsp/driver/index.d.ts +4 -0
  80. package/dist/adapter/ezsp/driver/index.d.ts.map +1 -0
  81. package/dist/adapter/ezsp/driver/index.js +9 -0
  82. package/dist/adapter/ezsp/driver/index.js.map +1 -0
  83. package/dist/adapter/ezsp/driver/multicast.d.ts +13 -0
  84. package/dist/adapter/ezsp/driver/multicast.d.ts.map +1 -0
  85. package/dist/adapter/ezsp/driver/multicast.js +75 -0
  86. package/dist/adapter/ezsp/driver/multicast.js.map +1 -0
  87. package/dist/adapter/ezsp/driver/parser.d.ts +13 -0
  88. package/dist/adapter/ezsp/driver/parser.d.ts.map +1 -0
  89. package/dist/adapter/ezsp/driver/parser.js +112 -0
  90. package/dist/adapter/ezsp/driver/parser.js.map +1 -0
  91. package/dist/adapter/ezsp/driver/types/basic.d.ts +63 -0
  92. package/dist/adapter/ezsp/driver/types/basic.d.ts.map +1 -0
  93. package/dist/adapter/ezsp/driver/types/basic.js +209 -0
  94. package/dist/adapter/ezsp/driver/types/basic.js.map +1 -0
  95. package/dist/adapter/ezsp/driver/types/index.d.ts +10 -0
  96. package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -0
  97. package/dist/adapter/ezsp/driver/types/index.js +134 -0
  98. package/dist/adapter/ezsp/driver/types/index.js.map +1 -0
  99. package/dist/adapter/ezsp/driver/types/named.d.ts +698 -0
  100. package/dist/adapter/ezsp/driver/types/named.d.ts.map +1 -0
  101. package/dist/adapter/ezsp/driver/types/named.js +1727 -0
  102. package/dist/adapter/ezsp/driver/types/named.js.map +1 -0
  103. package/dist/adapter/ezsp/driver/types/struct.d.ts +252 -0
  104. package/dist/adapter/ezsp/driver/types/struct.d.ts.map +1 -0
  105. package/dist/adapter/ezsp/driver/types/struct.js +709 -0
  106. package/dist/adapter/ezsp/driver/types/struct.js.map +1 -0
  107. package/dist/adapter/ezsp/driver/uart.d.ts +45 -0
  108. package/dist/adapter/ezsp/driver/uart.d.ts.map +1 -0
  109. package/dist/adapter/ezsp/driver/uart.js +367 -0
  110. package/dist/adapter/ezsp/driver/uart.js.map +1 -0
  111. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts +3 -0
  112. package/dist/adapter/ezsp/driver/utils/crc16ccitt.d.ts.map +1 -0
  113. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js +56 -0
  114. package/dist/adapter/ezsp/driver/utils/crc16ccitt.js.map +1 -0
  115. package/dist/adapter/ezsp/driver/utils/index.d.ts +19 -0
  116. package/dist/adapter/ezsp/driver/utils/index.d.ts.map +1 -0
  117. package/dist/adapter/ezsp/driver/utils/index.js +68 -0
  118. package/dist/adapter/ezsp/driver/utils/index.js.map +1 -0
  119. package/dist/adapter/ezsp/driver/writer.d.ts +14 -0
  120. package/dist/adapter/ezsp/driver/writer.d.ts.map +1 -0
  121. package/dist/adapter/ezsp/driver/writer.js +89 -0
  122. package/dist/adapter/ezsp/driver/writer.js.map +1 -0
  123. package/dist/adapter/index.d.ts +5 -0
  124. package/dist/adapter/index.d.ts.map +1 -0
  125. package/dist/adapter/index.js +36 -0
  126. package/dist/adapter/index.js.map +1 -0
  127. package/dist/adapter/serialPort.d.ts +9 -0
  128. package/dist/adapter/serialPort.d.ts.map +1 -0
  129. package/dist/adapter/serialPort.js +23 -0
  130. package/dist/adapter/serialPort.js.map +1 -0
  131. package/dist/adapter/serialPortUtils.d.ts +13 -0
  132. package/dist/adapter/serialPortUtils.d.ts.map +1 -0
  133. package/dist/adapter/serialPortUtils.js +19 -0
  134. package/dist/adapter/serialPortUtils.js.map +1 -0
  135. package/dist/adapter/socketPortUtils.d.ts +11 -0
  136. package/dist/adapter/socketPortUtils.d.ts.map +1 -0
  137. package/dist/adapter/socketPortUtils.js +17 -0
  138. package/dist/adapter/socketPortUtils.js.map +1 -0
  139. package/dist/adapter/tstype.d.ts +86 -0
  140. package/dist/adapter/tstype.d.ts.map +1 -0
  141. package/dist/adapter/tstype.js +3 -0
  142. package/dist/adapter/tstype.js.map +1 -0
  143. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts +63 -0
  144. package/dist/adapter/z-stack/adapter/adapter-backup.d.ts.map +1 -0
  145. package/dist/adapter/z-stack/adapter/adapter-backup.js +442 -0
  146. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -0
  147. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts +151 -0
  148. package/dist/adapter/z-stack/adapter/adapter-nv-memory.d.ts.map +1 -0
  149. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +259 -0
  150. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -0
  151. package/dist/adapter/z-stack/adapter/endpoints.d.ts +12 -0
  152. package/dist/adapter/z-stack/adapter/endpoints.d.ts.map +1 -0
  153. package/dist/adapter/z-stack/adapter/endpoints.js +74 -0
  154. package/dist/adapter/z-stack/adapter/endpoints.js.map +1 -0
  155. package/dist/adapter/z-stack/adapter/index.d.ts +3 -0
  156. package/dist/adapter/z-stack/adapter/index.d.ts.map +1 -0
  157. package/dist/adapter/z-stack/adapter/index.js +9 -0
  158. package/dist/adapter/z-stack/adapter/index.js.map +1 -0
  159. package/dist/adapter/z-stack/adapter/manager.d.ts +87 -0
  160. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -0
  161. package/dist/adapter/z-stack/adapter/manager.js +477 -0
  162. package/dist/adapter/z-stack/adapter/manager.js.map +1 -0
  163. package/dist/adapter/z-stack/adapter/tstype.d.ts +7 -0
  164. package/dist/adapter/z-stack/adapter/tstype.d.ts.map +1 -0
  165. package/dist/adapter/z-stack/adapter/tstype.js +11 -0
  166. package/dist/adapter/z-stack/adapter/tstype.js.map +1 -0
  167. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +82 -0
  168. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -0
  169. package/dist/adapter/z-stack/adapter/zStackAdapter.js +869 -0
  170. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -0
  171. package/dist/adapter/z-stack/constants/af.d.ts +24 -0
  172. package/dist/adapter/z-stack/constants/af.d.ts.map +1 -0
  173. package/dist/adapter/z-stack/constants/af.js +28 -0
  174. package/dist/adapter/z-stack/constants/af.js.map +1 -0
  175. package/dist/adapter/z-stack/constants/common.d.ts +279 -0
  176. package/dist/adapter/z-stack/constants/common.d.ts.map +1 -0
  177. package/dist/adapter/z-stack/constants/common.js +290 -0
  178. package/dist/adapter/z-stack/constants/common.js.map +1 -0
  179. package/dist/adapter/z-stack/constants/dbg.d.ts +23 -0
  180. package/dist/adapter/z-stack/constants/dbg.d.ts.map +1 -0
  181. package/dist/adapter/z-stack/constants/dbg.js +25 -0
  182. package/dist/adapter/z-stack/constants/dbg.js.map +1 -0
  183. package/dist/adapter/z-stack/constants/index.d.ts +11 -0
  184. package/dist/adapter/z-stack/constants/index.d.ts.map +1 -0
  185. package/dist/adapter/z-stack/constants/index.js +48 -0
  186. package/dist/adapter/z-stack/constants/index.js.map +1 -0
  187. package/dist/adapter/z-stack/constants/mac.d.ts +128 -0
  188. package/dist/adapter/z-stack/constants/mac.d.ts.map +1 -0
  189. package/dist/adapter/z-stack/constants/mac.js +130 -0
  190. package/dist/adapter/z-stack/constants/mac.js.map +1 -0
  191. package/dist/adapter/z-stack/constants/sapi.d.ts +25 -0
  192. package/dist/adapter/z-stack/constants/sapi.d.ts.map +1 -0
  193. package/dist/adapter/z-stack/constants/sapi.js +27 -0
  194. package/dist/adapter/z-stack/constants/sapi.js.map +1 -0
  195. package/dist/adapter/z-stack/constants/sys.d.ts +72 -0
  196. package/dist/adapter/z-stack/constants/sys.d.ts.map +1 -0
  197. package/dist/adapter/z-stack/constants/sys.js +74 -0
  198. package/dist/adapter/z-stack/constants/sys.js.map +1 -0
  199. package/dist/adapter/z-stack/constants/util.d.ts +82 -0
  200. package/dist/adapter/z-stack/constants/util.d.ts.map +1 -0
  201. package/dist/adapter/z-stack/constants/util.js +84 -0
  202. package/dist/adapter/z-stack/constants/util.js.map +1 -0
  203. package/dist/adapter/z-stack/constants/utils.d.ts +5 -0
  204. package/dist/adapter/z-stack/constants/utils.d.ts.map +1 -0
  205. package/dist/adapter/z-stack/constants/utils.js +15 -0
  206. package/dist/adapter/z-stack/constants/utils.js.map +1 -0
  207. package/dist/adapter/z-stack/constants/zdo.d.ts +103 -0
  208. package/dist/adapter/z-stack/constants/zdo.d.ts.map +1 -0
  209. package/dist/adapter/z-stack/constants/zdo.js +105 -0
  210. package/dist/adapter/z-stack/constants/zdo.js.map +1 -0
  211. package/dist/adapter/z-stack/models/index.d.ts +2 -0
  212. package/dist/adapter/z-stack/models/index.d.ts.map +1 -0
  213. package/dist/adapter/z-stack/models/index.js +18 -0
  214. package/dist/adapter/z-stack/models/index.js.map +1 -0
  215. package/dist/adapter/z-stack/models/startup-options.d.ts +13 -0
  216. package/dist/adapter/z-stack/models/startup-options.d.ts.map +1 -0
  217. package/dist/adapter/z-stack/models/startup-options.js +3 -0
  218. package/dist/adapter/z-stack/models/startup-options.js.map +1 -0
  219. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts +24 -0
  220. package/dist/adapter/z-stack/structs/entries/address-manager-entry.d.ts.map +1 -0
  221. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js +46 -0
  222. package/dist/adapter/z-stack/structs/entries/address-manager-entry.js.map +1 -0
  223. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts +11 -0
  224. package/dist/adapter/z-stack/structs/entries/address-manager-table.d.ts.map +1 -0
  225. package/dist/adapter/z-stack/structs/entries/address-manager-table.js +23 -0
  226. package/dist/adapter/z-stack/structs/entries/address-manager-table.js.map +1 -0
  227. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts +11 -0
  228. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.d.ts.map +1 -0
  229. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js +22 -0
  230. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-entry.js.map +1 -0
  231. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts +11 -0
  232. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.d.ts.map +1 -0
  233. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js +24 -0
  234. package/dist/adapter/z-stack/structs/entries/aps-link-key-data-table.js.map +1 -0
  235. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts +11 -0
  236. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.d.ts.map +1 -0
  237. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js +25 -0
  238. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-entry.js.map +1 -0
  239. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts +11 -0
  240. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.d.ts.map +1 -0
  241. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js +24 -0
  242. package/dist/adapter/z-stack/structs/entries/aps-tc-link-key-table.js.map +1 -0
  243. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts +9 -0
  244. package/dist/adapter/z-stack/structs/entries/channel-list.d.ts.map +1 -0
  245. package/dist/adapter/z-stack/structs/entries/channel-list.js +16 -0
  246. package/dist/adapter/z-stack/structs/entries/channel-list.js.map +1 -0
  247. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts +9 -0
  248. package/dist/adapter/z-stack/structs/entries/has-configured.d.ts.map +1 -0
  249. package/dist/adapter/z-stack/structs/entries/has-configured.js +17 -0
  250. package/dist/adapter/z-stack/structs/entries/has-configured.js.map +1 -0
  251. package/dist/adapter/z-stack/structs/entries/index.d.ts +17 -0
  252. package/dist/adapter/z-stack/structs/entries/index.d.ts.map +1 -0
  253. package/dist/adapter/z-stack/structs/entries/index.js +33 -0
  254. package/dist/adapter/z-stack/structs/entries/index.js.map +1 -0
  255. package/dist/adapter/z-stack/structs/entries/nib.d.ts +11 -0
  256. package/dist/adapter/z-stack/structs/entries/nib.d.ts.map +1 -0
  257. package/dist/adapter/z-stack/structs/entries/nib.js +69 -0
  258. package/dist/adapter/z-stack/structs/entries/nib.js.map +1 -0
  259. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts +11 -0
  260. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.d.ts.map +1 -0
  261. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js +19 -0
  262. package/dist/adapter/z-stack/structs/entries/nwk-key-descriptor.js.map +1 -0
  263. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts +9 -0
  264. package/dist/adapter/z-stack/structs/entries/nwk-key.d.ts.map +1 -0
  265. package/dist/adapter/z-stack/structs/entries/nwk-key.js +16 -0
  266. package/dist/adapter/z-stack/structs/entries/nwk-key.js.map +1 -0
  267. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts +9 -0
  268. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.d.ts.map +1 -0
  269. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js +16 -0
  270. package/dist/adapter/z-stack/structs/entries/nwk-pan-id.js.map +1 -0
  271. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts +14 -0
  272. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.d.ts.map +1 -0
  273. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js +24 -0
  274. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-entry.js.map +1 -0
  275. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts +11 -0
  276. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.d.ts.map +1 -0
  277. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js +23 -0
  278. package/dist/adapter/z-stack/structs/entries/nwk-sec-material-descriptor-table.js.map +1 -0
  279. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts +21 -0
  280. package/dist/adapter/z-stack/structs/entries/security-manager-entry.d.ts.map +1 -0
  281. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js +37 -0
  282. package/dist/adapter/z-stack/structs/entries/security-manager-entry.js.map +1 -0
  283. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts +11 -0
  284. package/dist/adapter/z-stack/structs/entries/security-manager-table.d.ts.map +1 -0
  285. package/dist/adapter/z-stack/structs/entries/security-manager-table.js +25 -0
  286. package/dist/adapter/z-stack/structs/entries/security-manager-table.js.map +1 -0
  287. package/dist/adapter/z-stack/structs/index.d.ts +5 -0
  288. package/dist/adapter/z-stack/structs/index.d.ts.map +1 -0
  289. package/dist/adapter/z-stack/structs/index.js +21 -0
  290. package/dist/adapter/z-stack/structs/index.js.map +1 -0
  291. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts +14 -0
  292. package/dist/adapter/z-stack/structs/serializable-memory-object.d.ts.map +1 -0
  293. package/dist/adapter/z-stack/structs/serializable-memory-object.js +3 -0
  294. package/dist/adapter/z-stack/structs/serializable-memory-object.js.map +1 -0
  295. package/dist/adapter/z-stack/structs/struct.d.ts +100 -0
  296. package/dist/adapter/z-stack/structs/struct.d.ts.map +1 -0
  297. package/dist/adapter/z-stack/structs/struct.js +296 -0
  298. package/dist/adapter/z-stack/structs/struct.js.map +1 -0
  299. package/dist/adapter/z-stack/structs/table.d.ts +95 -0
  300. package/dist/adapter/z-stack/structs/table.d.ts.map +1 -0
  301. package/dist/adapter/z-stack/structs/table.js +162 -0
  302. package/dist/adapter/z-stack/structs/table.js.map +1 -0
  303. package/dist/adapter/z-stack/unpi/constants.d.ts +29 -0
  304. package/dist/adapter/z-stack/unpi/constants.d.ts.map +1 -0
  305. package/dist/adapter/z-stack/unpi/constants.js +42 -0
  306. package/dist/adapter/z-stack/unpi/constants.js.map +1 -0
  307. package/dist/adapter/z-stack/unpi/frame.d.ts +17 -0
  308. package/dist/adapter/z-stack/unpi/frame.d.ts.map +1 -0
  309. package/dist/adapter/z-stack/unpi/frame.js +49 -0
  310. package/dist/adapter/z-stack/unpi/frame.js.map +1 -0
  311. package/dist/adapter/z-stack/unpi/index.d.ts +6 -0
  312. package/dist/adapter/z-stack/unpi/index.d.ts.map +1 -0
  313. package/dist/adapter/z-stack/unpi/index.js +38 -0
  314. package/dist/adapter/z-stack/unpi/index.js.map +1 -0
  315. package/dist/adapter/z-stack/unpi/parser.d.ts +11 -0
  316. package/dist/adapter/z-stack/unpi/parser.d.ts.map +1 -0
  317. package/dist/adapter/z-stack/unpi/parser.js +75 -0
  318. package/dist/adapter/z-stack/unpi/parser.js.map +1 -0
  319. package/dist/adapter/z-stack/unpi/writer.d.ts +11 -0
  320. package/dist/adapter/z-stack/unpi/writer.d.ts.map +1 -0
  321. package/dist/adapter/z-stack/unpi/writer.js +45 -0
  322. package/dist/adapter/z-stack/unpi/writer.js.map +1 -0
  323. package/dist/adapter/z-stack/utils/channel-list.d.ts +21 -0
  324. package/dist/adapter/z-stack/utils/channel-list.d.ts.map +1 -0
  325. package/dist/adapter/z-stack/utils/channel-list.js +41 -0
  326. package/dist/adapter/z-stack/utils/channel-list.js.map +1 -0
  327. package/dist/adapter/z-stack/utils/index.d.ts +3 -0
  328. package/dist/adapter/z-stack/utils/index.d.ts.map +1 -0
  329. package/dist/adapter/z-stack/utils/index.js +19 -0
  330. package/dist/adapter/z-stack/utils/index.js.map +1 -0
  331. package/dist/adapter/z-stack/utils/network-options.d.ts +9 -0
  332. package/dist/adapter/z-stack/utils/network-options.d.ts.map +1 -0
  333. package/dist/adapter/z-stack/utils/network-options.js +23 -0
  334. package/dist/adapter/z-stack/utils/network-options.js.map +1 -0
  335. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts +12 -0
  336. package/dist/adapter/z-stack/znp/buffaloZnp.d.ts.map +1 -0
  337. package/dist/adapter/z-stack/znp/buffaloZnp.js +114 -0
  338. package/dist/adapter/z-stack/znp/buffaloZnp.js.map +1 -0
  339. package/dist/adapter/z-stack/znp/definition.d.ts +6 -0
  340. package/dist/adapter/z-stack/znp/definition.d.ts.map +1 -0
  341. package/dist/adapter/z-stack/znp/definition.js +3051 -0
  342. package/dist/adapter/z-stack/znp/definition.js.map +1 -0
  343. package/dist/adapter/z-stack/znp/index.d.ts +4 -0
  344. package/dist/adapter/z-stack/znp/index.d.ts.map +1 -0
  345. package/dist/adapter/z-stack/znp/index.js +11 -0
  346. package/dist/adapter/z-stack/znp/index.js.map +1 -0
  347. package/dist/adapter/z-stack/znp/parameterType.d.ts +23 -0
  348. package/dist/adapter/z-stack/znp/parameterType.d.ts.map +1 -0
  349. package/dist/adapter/z-stack/znp/parameterType.js +26 -0
  350. package/dist/adapter/z-stack/znp/parameterType.js.map +1 -0
  351. package/dist/adapter/z-stack/znp/tstype.d.ts +22 -0
  352. package/dist/adapter/z-stack/znp/tstype.d.ts.map +1 -0
  353. package/dist/adapter/z-stack/znp/tstype.js +3 -0
  354. package/dist/adapter/z-stack/znp/tstype.js.map +1 -0
  355. package/dist/adapter/z-stack/znp/znp.d.ts +44 -0
  356. package/dist/adapter/z-stack/znp/znp.d.ts.map +1 -0
  357. package/dist/adapter/z-stack/znp/znp.js +326 -0
  358. package/dist/adapter/z-stack/znp/znp.js.map +1 -0
  359. package/dist/adapter/z-stack/znp/zpiObject.d.ts +20 -0
  360. package/dist/adapter/z-stack/znp/zpiObject.d.ts.map +1 -0
  361. package/dist/adapter/z-stack/znp/zpiObject.js +97 -0
  362. package/dist/adapter/z-stack/znp/zpiObject.js.map +1 -0
  363. package/dist/adapter/zigate/adapter/index.d.ts +3 -0
  364. package/dist/adapter/zigate/adapter/index.d.ts.map +1 -0
  365. package/dist/adapter/zigate/adapter/index.js +11 -0
  366. package/dist/adapter/zigate/adapter/index.js.map +1 -0
  367. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +70 -0
  368. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -0
  369. package/dist/adapter/zigate/adapter/zigateAdapter.js +679 -0
  370. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -0
  371. package/dist/adapter/zigate/debug.d.ts +8 -0
  372. package/dist/adapter/zigate/debug.d.ts.map +1 -0
  373. package/dist/adapter/zigate/debug.js +23 -0
  374. package/dist/adapter/zigate/debug.js.map +1 -0
  375. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts +19 -0
  376. package/dist/adapter/zigate/driver/buffaloZiGate.d.ts.map +1 -0
  377. package/dist/adapter/zigate/driver/buffaloZiGate.js +140 -0
  378. package/dist/adapter/zigate/driver/buffaloZiGate.js.map +1 -0
  379. package/dist/adapter/zigate/driver/commandType.d.ts +42 -0
  380. package/dist/adapter/zigate/driver/commandType.d.ts.map +1 -0
  381. package/dist/adapter/zigate/driver/commandType.js +386 -0
  382. package/dist/adapter/zigate/driver/commandType.js.map +1 -0
  383. package/dist/adapter/zigate/driver/constants.d.ts +277 -0
  384. package/dist/adapter/zigate/driver/constants.d.ts.map +1 -0
  385. package/dist/adapter/zigate/driver/constants.js +372 -0
  386. package/dist/adapter/zigate/driver/constants.js.map +1 -0
  387. package/dist/adapter/zigate/driver/frame.d.ts +27 -0
  388. package/dist/adapter/zigate/driver/frame.d.ts.map +1 -0
  389. package/dist/adapter/zigate/driver/frame.js +173 -0
  390. package/dist/adapter/zigate/driver/frame.js.map +1 -0
  391. package/dist/adapter/zigate/driver/messageType.d.ts +12 -0
  392. package/dist/adapter/zigate/driver/messageType.d.ts.map +1 -0
  393. package/dist/adapter/zigate/driver/messageType.js +279 -0
  394. package/dist/adapter/zigate/driver/messageType.js.map +1 -0
  395. package/dist/adapter/zigate/driver/parameterType.d.ts +21 -0
  396. package/dist/adapter/zigate/driver/parameterType.d.ts.map +1 -0
  397. package/dist/adapter/zigate/driver/parameterType.js +24 -0
  398. package/dist/adapter/zigate/driver/parameterType.js.map +1 -0
  399. package/dist/adapter/zigate/driver/ziGateObject.d.ts +24 -0
  400. package/dist/adapter/zigate/driver/ziGateObject.d.ts.map +1 -0
  401. package/dist/adapter/zigate/driver/ziGateObject.js +107 -0
  402. package/dist/adapter/zigate/driver/ziGateObject.js.map +1 -0
  403. package/dist/adapter/zigate/driver/zigate.d.ts +50 -0
  404. package/dist/adapter/zigate/driver/zigate.d.ts.map +1 -0
  405. package/dist/adapter/zigate/driver/zigate.js +304 -0
  406. package/dist/adapter/zigate/driver/zigate.js.map +1 -0
  407. package/dist/buffalo/buffalo.d.ts +49 -0
  408. package/dist/buffalo/buffalo.d.ts.map +1 -0
  409. package/dist/buffalo/buffalo.js +308 -0
  410. package/dist/buffalo/buffalo.js.map +1 -0
  411. package/dist/buffalo/index.d.ts +4 -0
  412. package/dist/buffalo/index.d.ts.map +1 -0
  413. package/dist/buffalo/index.js +34 -0
  414. package/dist/buffalo/index.js.map +1 -0
  415. package/dist/buffalo/tstype.d.ts +9 -0
  416. package/dist/buffalo/tstype.d.ts.map +1 -0
  417. package/dist/buffalo/tstype.js +3 -0
  418. package/dist/buffalo/tstype.js.map +1 -0
  419. package/dist/controller/controller.d.ts +111 -0
  420. package/dist/controller/controller.d.ts.map +1 -0
  421. package/dist/controller/controller.js +608 -0
  422. package/dist/controller/controller.js.map +1 -0
  423. package/dist/controller/database.d.ts +19 -0
  424. package/dist/controller/database.d.ts.map +1 -0
  425. package/dist/controller/database.js +94 -0
  426. package/dist/controller/database.js.map +1 -0
  427. package/dist/controller/events.d.ts +56 -0
  428. package/dist/controller/events.d.ts.map +1 -0
  429. package/dist/controller/events.js +100 -0
  430. package/dist/controller/events.js.map +1 -0
  431. package/dist/controller/greenPower.d.ts +13 -0
  432. package/dist/controller/greenPower.d.ts.map +1 -0
  433. package/dist/controller/greenPower.js +221 -0
  434. package/dist/controller/greenPower.js.map +1 -0
  435. package/dist/controller/helpers/index.d.ts +3 -0
  436. package/dist/controller/helpers/index.d.ts.map +1 -0
  437. package/dist/controller/helpers/index.js +29 -0
  438. package/dist/controller/helpers/index.js.map +1 -0
  439. package/dist/controller/helpers/zclFrameConverter.d.ts +8 -0
  440. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -0
  441. package/dist/controller/helpers/zclFrameConverter.js +32 -0
  442. package/dist/controller/helpers/zclFrameConverter.js.map +1 -0
  443. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts +6 -0
  444. package/dist/controller/helpers/zclTransactionSequenceNumber.d.ts.map +1 -0
  445. package/dist/controller/helpers/zclTransactionSequenceNumber.js +14 -0
  446. package/dist/controller/helpers/zclTransactionSequenceNumber.js.map +1 -0
  447. package/dist/controller/index.d.ts +6 -0
  448. package/dist/controller/index.d.ts.map +1 -0
  449. package/dist/controller/index.js +9 -0
  450. package/dist/controller/index.js.map +1 -0
  451. package/dist/controller/logger-stub.d.ts +7 -0
  452. package/dist/controller/logger-stub.d.ts.map +1 -0
  453. package/dist/controller/logger-stub.js +3 -0
  454. package/dist/controller/logger-stub.js.map +1 -0
  455. package/dist/controller/model/device.d.ts +128 -0
  456. package/dist/controller/model/device.d.ts.map +1 -0
  457. package/dist/controller/model/device.js +682 -0
  458. package/dist/controller/model/device.js.map +1 -0
  459. package/dist/controller/model/endpoint.d.ts +129 -0
  460. package/dist/controller/model/endpoint.d.ts.map +1 -0
  461. package/dist/controller/model/endpoint.js +666 -0
  462. package/dist/controller/model/endpoint.js.map +1 -0
  463. package/dist/controller/model/entity.d.ts +15 -0
  464. package/dist/controller/model/entity.d.ts.map +1 -0
  465. package/dist/controller/model/entity.js +27 -0
  466. package/dist/controller/model/entity.js.map +1 -0
  467. package/dist/controller/model/group.d.ts +40 -0
  468. package/dist/controller/model/group.d.ts.map +1 -0
  469. package/dist/controller/model/group.js +222 -0
  470. package/dist/controller/model/group.js.map +1 -0
  471. package/dist/controller/model/index.d.ts +6 -0
  472. package/dist/controller/model/index.d.ts.map +1 -0
  473. package/dist/controller/model/index.js +15 -0
  474. package/dist/controller/model/index.js.map +1 -0
  475. package/dist/controller/touchlink.d.ts +20 -0
  476. package/dist/controller/touchlink.d.ts.map +1 -0
  477. package/dist/controller/touchlink.js +158 -0
  478. package/dist/controller/touchlink.js.map +1 -0
  479. package/dist/controller/tstype.d.ts +21 -0
  480. package/dist/controller/tstype.d.ts.map +1 -0
  481. package/dist/controller/tstype.js +10 -0
  482. package/dist/controller/tstype.js.map +1 -0
  483. package/dist/index.d.ts +4 -0
  484. package/dist/index.d.ts.map +1 -0
  485. package/dist/index.js +34 -0
  486. package/dist/index.js.map +1 -0
  487. package/dist/models/backup-storage-legacy.d.ts +27 -0
  488. package/dist/models/backup-storage-legacy.d.ts.map +1 -0
  489. package/dist/models/backup-storage-legacy.js +3 -0
  490. package/dist/models/backup-storage-legacy.js.map +1 -0
  491. package/dist/models/backup-storage-unified.d.ts +50 -0
  492. package/dist/models/backup-storage-unified.d.ts.map +1 -0
  493. package/dist/models/backup-storage-unified.js +3 -0
  494. package/dist/models/backup-storage-unified.js.map +1 -0
  495. package/dist/models/backup.d.ts +38 -0
  496. package/dist/models/backup.d.ts.map +1 -0
  497. package/dist/models/backup.js +3 -0
  498. package/dist/models/backup.js.map +1 -0
  499. package/dist/models/index.d.ts +5 -0
  500. package/dist/models/index.d.ts.map +1 -0
  501. package/dist/models/index.js +21 -0
  502. package/dist/models/index.js.map +1 -0
  503. package/dist/models/network-options.d.ts +13 -0
  504. package/dist/models/network-options.d.ts.map +1 -0
  505. package/dist/models/network-options.js +3 -0
  506. package/dist/models/network-options.js.map +1 -0
  507. package/dist/utils/assertString.d.ts +3 -0
  508. package/dist/utils/assertString.d.ts.map +1 -0
  509. package/dist/utils/assertString.js +9 -0
  510. package/dist/utils/assertString.js.map +1 -0
  511. package/dist/utils/backup.d.ts +21 -0
  512. package/dist/utils/backup.d.ts.map +1 -0
  513. package/dist/utils/backup.js +188 -0
  514. package/dist/utils/backup.js.map +1 -0
  515. package/dist/utils/equalsPartial.d.ts +3 -0
  516. package/dist/utils/equalsPartial.d.ts.map +1 -0
  517. package/dist/utils/equalsPartial.js +12 -0
  518. package/dist/utils/equalsPartial.js.map +1 -0
  519. package/dist/utils/index.d.ts +10 -0
  520. package/dist/utils/index.d.ts.map +1 -0
  521. package/dist/utils/index.js +46 -0
  522. package/dist/utils/index.js.map +1 -0
  523. package/dist/utils/isNumberArray.d.ts +3 -0
  524. package/dist/utils/isNumberArray.d.ts.map +1 -0
  525. package/dist/utils/isNumberArray.js +7 -0
  526. package/dist/utils/isNumberArray.js.map +1 -0
  527. package/dist/utils/queue.d.ts +12 -0
  528. package/dist/utils/queue.d.ts.map +1 -0
  529. package/dist/utils/queue.js +51 -0
  530. package/dist/utils/queue.js.map +1 -0
  531. package/dist/utils/realpathSync.d.ts +3 -0
  532. package/dist/utils/realpathSync.d.ts.map +1 -0
  533. package/dist/utils/realpathSync.js +13 -0
  534. package/dist/utils/realpathSync.js.map +1 -0
  535. package/dist/utils/wait.d.ts +3 -0
  536. package/dist/utils/wait.d.ts.map +1 -0
  537. package/dist/utils/wait.js +9 -0
  538. package/dist/utils/wait.js.map +1 -0
  539. package/dist/utils/waitress.d.ts +22 -0
  540. package/dist/utils/waitress.d.ts.map +1 -0
  541. package/dist/utils/waitress.js +62 -0
  542. package/dist/utils/waitress.js.map +1 -0
  543. package/dist/zcl/buffaloZcl.d.ts +42 -0
  544. package/dist/zcl/buffaloZcl.d.ts.map +1 -0
  545. package/dist/zcl/buffaloZcl.js +592 -0
  546. package/dist/zcl/buffaloZcl.js.map +1 -0
  547. package/dist/zcl/definition/buffaloZclDataType.d.ts +18 -0
  548. package/dist/zcl/definition/buffaloZclDataType.d.ts.map +1 -0
  549. package/dist/zcl/definition/buffaloZclDataType.js +21 -0
  550. package/dist/zcl/definition/buffaloZclDataType.js.map +1 -0
  551. package/dist/zcl/definition/cluster.d.ts +30 -0
  552. package/dist/zcl/definition/cluster.d.ts.map +1 -0
  553. package/dist/zcl/definition/cluster.js +5216 -0
  554. package/dist/zcl/definition/cluster.js.map +1 -0
  555. package/dist/zcl/definition/dataType.d.ts +60 -0
  556. package/dist/zcl/definition/dataType.d.ts.map +1 -0
  557. package/dist/zcl/definition/dataType.js +65 -0
  558. package/dist/zcl/definition/dataType.js.map +1 -0
  559. package/dist/zcl/definition/direction.d.ts +6 -0
  560. package/dist/zcl/definition/direction.d.ts.map +1 -0
  561. package/dist/zcl/definition/direction.js +9 -0
  562. package/dist/zcl/definition/direction.js.map +1 -0
  563. package/dist/zcl/definition/endpointDeviceType.d.ts +5 -0
  564. package/dist/zcl/definition/endpointDeviceType.d.ts.map +1 -0
  565. package/dist/zcl/definition/endpointDeviceType.js +16 -0
  566. package/dist/zcl/definition/endpointDeviceType.js.map +1 -0
  567. package/dist/zcl/definition/foundation.d.ts +12 -0
  568. package/dist/zcl/definition/foundation.d.ts.map +1 -0
  569. package/dist/zcl/definition/foundation.js +168 -0
  570. package/dist/zcl/definition/foundation.js.map +1 -0
  571. package/dist/zcl/definition/frameControl.d.ts +11 -0
  572. package/dist/zcl/definition/frameControl.d.ts.map +1 -0
  573. package/dist/zcl/definition/frameControl.js +3 -0
  574. package/dist/zcl/definition/frameControl.js.map +1 -0
  575. package/dist/zcl/definition/frameType.d.ts +6 -0
  576. package/dist/zcl/definition/frameType.d.ts.map +1 -0
  577. package/dist/zcl/definition/frameType.js +9 -0
  578. package/dist/zcl/definition/frameType.js.map +1 -0
  579. package/dist/zcl/definition/index.d.ts +14 -0
  580. package/dist/zcl/definition/index.d.ts.map +1 -0
  581. package/dist/zcl/definition/index.js +52 -0
  582. package/dist/zcl/definition/index.js.map +1 -0
  583. package/dist/zcl/definition/manufacturerCode.d.ts +1075 -0
  584. package/dist/zcl/definition/manufacturerCode.d.ts.map +1 -0
  585. package/dist/zcl/definition/manufacturerCode.js +1080 -0
  586. package/dist/zcl/definition/manufacturerCode.js.map +1 -0
  587. package/dist/zcl/definition/powerSource.d.ts +5 -0
  588. package/dist/zcl/definition/powerSource.d.ts.map +1 -0
  589. package/dist/zcl/definition/powerSource.js +13 -0
  590. package/dist/zcl/definition/powerSource.js.map +1 -0
  591. package/dist/zcl/definition/status.d.ts +39 -0
  592. package/dist/zcl/definition/status.d.ts.map +1 -0
  593. package/dist/zcl/definition/status.js +42 -0
  594. package/dist/zcl/definition/status.js.map +1 -0
  595. package/dist/zcl/definition/tstype.d.ts +17 -0
  596. package/dist/zcl/definition/tstype.d.ts.map +1 -0
  597. package/dist/zcl/definition/tstype.js +3 -0
  598. package/dist/zcl/definition/tstype.js.map +1 -0
  599. package/dist/zcl/index.d.ts +16 -0
  600. package/dist/zcl/index.d.ts.map +1 -0
  601. package/dist/zcl/index.js +56 -0
  602. package/dist/zcl/index.js.map +1 -0
  603. package/dist/zcl/tstype.d.ts +57 -0
  604. package/dist/zcl/tstype.d.ts.map +1 -0
  605. package/dist/zcl/tstype.js +11 -0
  606. package/dist/zcl/tstype.js.map +1 -0
  607. package/dist/zcl/utils.d.ts +7 -0
  608. package/dist/zcl/utils.d.ts.map +1 -0
  609. package/dist/zcl/utils.js +166 -0
  610. package/dist/zcl/utils.js.map +1 -0
  611. package/dist/zcl/zclFrame.d.ts +46 -0
  612. package/dist/zcl/zclFrame.d.ts.map +1 -0
  613. package/dist/zcl/zclFrame.js +348 -0
  614. package/dist/zcl/zclFrame.js.map +1 -0
  615. package/dist/zcl/zclStatusError.d.ts +6 -0
  616. package/dist/zcl/zclStatusError.d.ts.map +1 -0
  617. package/dist/zcl/zclStatusError.js +14 -0
  618. package/dist/zcl/zclStatusError.js.map +1 -0
  619. package/examples/join-and-log.js +29 -0
  620. package/package.json +76 -0
  621. package/tsconfig.json +24 -0
  622. package/typedoc-tsconfig.json +44 -0
@@ -0,0 +1,1064 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const debug_1 = __importDefault(require("debug"));
30
+ const adapter_1 = __importDefault(require("../../adapter"));
31
+ const debug = (0, debug_1.default)("zigbee-herdsman:deconz:adapter");
32
+ const driver_1 = __importDefault(require("../driver/driver"));
33
+ const zcl_1 = require("../../../zcl");
34
+ const Events = __importStar(require("../../events"));
35
+ const frameParser_1 = __importDefault(require("../driver/frameParser"));
36
+ const utils_1 = require("../../../utils");
37
+ const constants_1 = __importDefault(require("../driver/constants"));
38
+ var frameParser = require('../driver/frameParser');
39
+ ;
40
+ class DeconzAdapter extends adapter_1.default {
41
+ constructor(networkOptions, serialPortOptions, backupPath, adapterOptions, logger) {
42
+ super(networkOptions, serialPortOptions, backupPath, adapterOptions, logger);
43
+ this.frameParserEvent = frameParser.frameParserEvents;
44
+ this.TX_OPTIONS = 0x00; // No APS ACKS
45
+ const concurrent = this.adapterOptions && this.adapterOptions.concurrent ?
46
+ this.adapterOptions.concurrent : 2;
47
+ // TODO: https://github.com/Koenkk/zigbee2mqtt/issues/4884#issuecomment-728903121
48
+ const delay = this.adapterOptions && typeof this.adapterOptions.delay === 'number' ?
49
+ this.adapterOptions.delay : 0;
50
+ this.waitress = new utils_1.Waitress(this.waitressValidator, this.waitressTimeoutFormatter);
51
+ this.driver = new driver_1.default(serialPortOptions.path);
52
+ this.driver.setDelay(delay);
53
+ if (delay >= 200) {
54
+ this.TX_OPTIONS = 0x04; // activate APS ACKS
55
+ }
56
+ this.driver.on('rxFrame', (frame) => { (0, frameParser_1.default)(frame); });
57
+ this.queue = new utils_1.Queue(concurrent);
58
+ this.transactionID = 0;
59
+ this.openRequestsQueue = [];
60
+ this.joinPermitted = false;
61
+ this.fwVersion = null;
62
+ this.frameParserEvent.on('receivedDataPayload', (data) => { this.checkReceivedDataPayload(data); });
63
+ this.frameParserEvent.on('receivedGreenPowerIndication', (data) => { this.checkReceivedGreenPowerIndication(data); });
64
+ const that = this;
65
+ setInterval(() => { that.checkReceivedDataPayload(null); }, 1000);
66
+ setTimeout(() => { that.checkCoordinatorSimpleDescriptor(false); }, 3000);
67
+ }
68
+ static async isValidPath(path) {
69
+ return driver_1.default.isValidPath(path);
70
+ }
71
+ static async autoDetectPath() {
72
+ return driver_1.default.autoDetectPath();
73
+ }
74
+ /**
75
+ * Adapter methods
76
+ */
77
+ async start() {
78
+ await this.driver.open();
79
+ return "resumed";
80
+ }
81
+ async stop() {
82
+ await this.driver.close();
83
+ }
84
+ async getCoordinator() {
85
+ const ieeeAddr = await this.driver.readParameterRequest(constants_1.default.PARAM.Network.MAC);
86
+ const nwkAddr = await this.driver.readParameterRequest(constants_1.default.PARAM.Network.NWK_ADDRESS);
87
+ const endpoints = [{
88
+ ID: 0x01,
89
+ profileID: 0x0104,
90
+ deviceID: 0x0005,
91
+ inputClusters: [0x0000, 0x000A, 0x0019],
92
+ outputClusters: [0x0001, 0x0020, 0x0500]
93
+ },
94
+ {
95
+ ID: 0xF2,
96
+ profileID: 0xA1E0,
97
+ deviceID: 0x0064,
98
+ inputClusters: [],
99
+ outputClusters: [0x0021]
100
+ }];
101
+ return {
102
+ networkAddress: nwkAddr,
103
+ manufacturerID: 0x1135,
104
+ ieeeAddr: ieeeAddr,
105
+ endpoints,
106
+ };
107
+ }
108
+ async permitJoin(seconds, networkAddress) {
109
+ const transactionID = this.nextTransactionID();
110
+ const request = {};
111
+ const zdpFrame = [transactionID, seconds, 0]; // tc_significance 1 or 0 ?
112
+ request.requestId = transactionID;
113
+ request.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
114
+ request.destAddr16 = networkAddress || 0xFFFC;
115
+ request.destEndpoint = 0;
116
+ request.profileId = 0;
117
+ request.clusterId = 0x36; // permit join
118
+ request.srcEndpoint = 0;
119
+ request.asduLength = 3;
120
+ request.asduPayload = zdpFrame;
121
+ request.txOptions = 0;
122
+ request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
123
+ request.timeout = 5;
124
+ try {
125
+ await this.driver.enqueueSendDataRequest(request);
126
+ if (seconds === 0) {
127
+ this.joinPermitted = false;
128
+ }
129
+ else {
130
+ this.joinPermitted = true;
131
+ }
132
+ this.driver.writeParameterRequest(constants_1.default.PARAM.Network.PERMIT_JOIN, seconds);
133
+ debug("PERMIT_JOIN - " + seconds + " seconds");
134
+ }
135
+ catch (error) {
136
+ const msg = "PERMIT_JOIN FAILED - " + error;
137
+ debug(msg);
138
+ // try again
139
+ this.permitJoin(seconds, networkAddress);
140
+ //return Promise.reject(new Error(msg)); // do not reject
141
+ }
142
+ }
143
+ async getCoordinatorVersion() {
144
+ // product: number; transportrev: number; majorrel: number; minorrel: number; maintrel: number; revision: string;
145
+ if (this.fwVersion != null) {
146
+ return this.fwVersion;
147
+ }
148
+ else {
149
+ try {
150
+ const fw = await this.driver.readFirmwareVersionRequest();
151
+ const buf = Buffer.from(fw);
152
+ let fwString = "0x" + buf.readUInt32LE(0).toString(16);
153
+ const type = (fw[1] === 5) ? "ConBee/RaspBee" : "ConBee2/RaspBee2";
154
+ const meta = { "transportrev": 0, "product": 0, "majorrel": fw[3], "minorrel": fw[2], "maintrel": 0, "revision": fwString };
155
+ this.fwVersion = { type: type, meta: meta };
156
+ return { type: type, meta: meta };
157
+ }
158
+ catch (error) {
159
+ debug("Get coordinator version Error: " + error);
160
+ }
161
+ }
162
+ }
163
+ async addInstallCode(ieeeAddress, key) {
164
+ return Promise.reject(new Error('Add install code is not supported'));
165
+ }
166
+ async reset(type) {
167
+ return Promise.reject(new Error('Reset is not supported'));
168
+ }
169
+ async lqi(networkAddress) {
170
+ const neighbors = [];
171
+ const add = (list) => {
172
+ for (const entry of list) {
173
+ const relationByte = entry.readUInt8(18);
174
+ const extAddr = [];
175
+ for (let i = 8; i < 16; i++) {
176
+ extAddr.push(entry[i]);
177
+ }
178
+ neighbors.push({
179
+ linkquality: entry.readUInt8(21),
180
+ networkAddress: entry.readUInt16LE(16),
181
+ ieeeAddr: this.driver.macAddrArrayToString(extAddr),
182
+ relationship: (relationByte >> 1) & ((1 << 3) - 1),
183
+ depth: entry.readUInt8(20)
184
+ });
185
+ }
186
+ };
187
+ const request = async (startIndex) => {
188
+ const transactionID = this.nextTransactionID();
189
+ const req = {};
190
+ req.requestId = transactionID;
191
+ req.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
192
+ req.destAddr16 = networkAddress;
193
+ req.destEndpoint = 0;
194
+ req.profileId = 0;
195
+ req.clusterId = 0x31; // mgmt_lqi_request
196
+ req.srcEndpoint = 0;
197
+ req.asduLength = 2;
198
+ req.asduPayload = [transactionID, startIndex];
199
+ req.txOptions = 0;
200
+ req.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
201
+ this.driver.enqueueSendDataRequest(req)
202
+ .then(result => { })
203
+ .catch(error => { });
204
+ try {
205
+ const d = await this.waitForData(networkAddress, 0, 0x8031);
206
+ const data = d.asduPayload;
207
+ if (data[1] !== 0) { // status
208
+ throw new Error(`LQI for '${networkAddress}' failed`);
209
+ }
210
+ const tableList = [];
211
+ const response = {
212
+ status: data[1],
213
+ tableEntrys: data[2],
214
+ startIndex: data[3],
215
+ tableListCount: data[4],
216
+ tableList: tableList
217
+ };
218
+ let tableEntry = [];
219
+ let counter = 0;
220
+ for (let i = 5; i < ((response.tableListCount * 22) + 5); i++) { // one tableentry = 22 bytes
221
+ tableEntry.push(data[i]);
222
+ counter++;
223
+ if (counter === 22) {
224
+ response.tableList.push(Buffer.from(tableEntry));
225
+ tableEntry = [];
226
+ counter = 0;
227
+ }
228
+ }
229
+ debug("LQI RESPONSE - addr: 0x" + networkAddress.toString(16) + " status: " + response.status + " read " + (response.tableListCount + response.startIndex) + "/" + response.tableEntrys + " entrys");
230
+ return response;
231
+ }
232
+ catch (error) {
233
+ const msg = "LQI REQUEST FAILED - addr: 0x" + networkAddress.toString(16) + " " + error;
234
+ debug(msg);
235
+ return Promise.reject(new Error(msg));
236
+ }
237
+ };
238
+ let response = await request(0);
239
+ add(response.tableList);
240
+ let nextStartIndex = response.tableListCount;
241
+ while (neighbors.length < response.tableEntrys) {
242
+ response = await request(nextStartIndex);
243
+ add(response.tableList);
244
+ nextStartIndex += response.tableListCount;
245
+ }
246
+ return { neighbors };
247
+ }
248
+ async routingTable(networkAddress) {
249
+ const table = [];
250
+ const statusLookup = {
251
+ 0: 'ACTIVE',
252
+ 1: 'DISCOVERY_UNDERWAY',
253
+ 2: 'DISCOVERY_FAILED',
254
+ 3: 'INACTIVE',
255
+ };
256
+ const add = (list) => {
257
+ for (const entry of list) {
258
+ const statusByte = entry.readUInt8(2);
259
+ const extAddr = [];
260
+ for (let i = 8; i < 16; i++) {
261
+ extAddr.push(entry[i]);
262
+ }
263
+ table.push({
264
+ destinationAddress: entry.readUInt16LE(0),
265
+ status: statusLookup[(statusByte >> 5) & ((1 << 3) - 1)],
266
+ nextHop: entry.readUInt16LE(3)
267
+ });
268
+ }
269
+ };
270
+ const request = async (startIndex) => {
271
+ const transactionID = this.nextTransactionID();
272
+ const req = {};
273
+ req.requestId = transactionID;
274
+ req.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
275
+ req.destAddr16 = networkAddress;
276
+ req.destEndpoint = 0;
277
+ req.profileId = 0;
278
+ req.clusterId = 0x32; // mgmt_rtg_request
279
+ req.srcEndpoint = 0;
280
+ req.asduLength = 2;
281
+ req.asduPayload = [transactionID, startIndex];
282
+ req.txOptions = 0;
283
+ req.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
284
+ req.timeout = 30;
285
+ this.driver.enqueueSendDataRequest(req)
286
+ .then(result => { })
287
+ .catch(error => { });
288
+ try {
289
+ const d = await this.waitForData(networkAddress, 0, 0x8032);
290
+ const data = d.asduPayload;
291
+ if (data[1] !== 0) { // status
292
+ throw new Error(`Routingtables for '${networkAddress}' failed`);
293
+ }
294
+ const tableList = [];
295
+ const response = {
296
+ status: data[1],
297
+ tableEntrys: data[2],
298
+ startIndex: data[3],
299
+ tableListCount: data[4],
300
+ tableList: tableList
301
+ };
302
+ let tableEntry = [];
303
+ let counter = 0;
304
+ for (let i = 5; i < ((response.tableListCount * 5) + 5); i++) { // one tableentry = 5 bytes
305
+ tableEntry.push(data[i]);
306
+ counter++;
307
+ if (counter === 5) {
308
+ response.tableList.push(Buffer.from(tableEntry));
309
+ tableEntry = [];
310
+ counter = 0;
311
+ }
312
+ }
313
+ debug("ROUTING_TABLE RESPONSE - addr: 0x" + networkAddress.toString(16) + " status: " + response.status + " read " + (response.tableListCount + response.startIndex) + "/" + response.tableEntrys + " entrys");
314
+ return response;
315
+ }
316
+ catch (error) {
317
+ const msg = "ROUTING_TABLE REQUEST FAILED - addr: 0x" + networkAddress.toString(16) + " " + error;
318
+ debug(msg);
319
+ return Promise.reject(new Error(msg));
320
+ }
321
+ };
322
+ let response = await request(0);
323
+ add(response.tableList);
324
+ let nextStartIndex = response.tableListCount;
325
+ while (table.length < response.tableEntrys) {
326
+ response = await request(nextStartIndex);
327
+ add(response.tableList);
328
+ nextStartIndex += response.tableListCount;
329
+ }
330
+ return { table };
331
+ }
332
+ async nodeDescriptor(networkAddress) {
333
+ const transactionID = this.nextTransactionID();
334
+ const nwk1 = networkAddress & 0xff;
335
+ const nwk2 = (networkAddress >> 8) & 0xff;
336
+ const request = {};
337
+ const zdpFrame = [transactionID, nwk1, nwk2];
338
+ request.requestId = transactionID;
339
+ request.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
340
+ request.destAddr16 = networkAddress;
341
+ request.destEndpoint = 0;
342
+ request.profileId = 0;
343
+ request.clusterId = 0x02; // node descriptor
344
+ request.srcEndpoint = 0;
345
+ request.asduLength = 3;
346
+ request.asduPayload = zdpFrame;
347
+ request.txOptions = 0;
348
+ request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
349
+ request.timeout = 30;
350
+ this.driver.enqueueSendDataRequest(request)
351
+ .then(result => { })
352
+ .catch(error => { });
353
+ try {
354
+ const d = await this.waitForData(networkAddress, 0, 0x8002);
355
+ const data = d.asduPayload;
356
+ const buf = Buffer.from(data);
357
+ const logicaltype = (data[4] & 7);
358
+ const type = (logicaltype === 1) ? 'Router' : (logicaltype === 2) ? 'EndDevice' : (logicaltype === 0) ? 'Coordinator' : 'Unknown';
359
+ const manufacturer = buf.readUInt16LE(7);
360
+ debug("RECEIVING NODE_DESCRIPTOR - addr: 0x" + networkAddress.toString(16) + " type: " + type + " manufacturer: 0x" + manufacturer.toString(16));
361
+ return { manufacturerCode: manufacturer, type };
362
+ }
363
+ catch (error) {
364
+ const msg = "RECEIVING NODE_DESCRIPTOR FAILED - addr: 0x" + networkAddress.toString(16) + " " + error;
365
+ debug(msg);
366
+ return Promise.reject(new Error(msg));
367
+ }
368
+ }
369
+ async activeEndpoints(networkAddress) {
370
+ const transactionID = this.nextTransactionID();
371
+ const nwk1 = networkAddress & 0xff;
372
+ const nwk2 = (networkAddress >> 8) & 0xff;
373
+ const request = {};
374
+ const zdpFrame = [transactionID, nwk1, nwk2];
375
+ request.requestId = transactionID;
376
+ request.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
377
+ request.destAddr16 = networkAddress;
378
+ request.destEndpoint = 0;
379
+ request.profileId = 0;
380
+ request.clusterId = 0x05; // active endpoints
381
+ request.srcEndpoint = 0;
382
+ request.asduLength = 3;
383
+ request.asduPayload = zdpFrame;
384
+ request.txOptions = 0;
385
+ request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
386
+ request.timeout = 30;
387
+ this.driver.enqueueSendDataRequest(request)
388
+ .then(result => { })
389
+ .catch(error => { });
390
+ try {
391
+ const d = await this.waitForData(networkAddress, 0, 0x8005);
392
+ const data = d.asduPayload;
393
+ const buf = Buffer.from(data);
394
+ const epCount = buf.readUInt8(4);
395
+ const epList = [];
396
+ for (let i = 5; i < (epCount + 5); i++) {
397
+ epList.push(buf.readUInt8(i));
398
+ }
399
+ debug("ACTIVE_ENDPOINTS - addr: 0x" + networkAddress.toString(16) + " EP list: " + epList);
400
+ return { endpoints: epList };
401
+ }
402
+ catch (error) {
403
+ const msg = "READING ACTIVE_ENDPOINTS FAILED - addr: 0x" + networkAddress.toString(16) + " " + error;
404
+ debug(msg);
405
+ return Promise.reject(new Error(msg));
406
+ }
407
+ }
408
+ async simpleDescriptor(networkAddress, endpointID) {
409
+ const transactionID = this.nextTransactionID();
410
+ const nwk1 = networkAddress & 0xff;
411
+ const nwk2 = (networkAddress >> 8) & 0xff;
412
+ const request = {};
413
+ const zdpFrame = [transactionID, nwk1, nwk2, endpointID];
414
+ request.requestId = transactionID;
415
+ request.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
416
+ request.destAddr16 = networkAddress;
417
+ request.destEndpoint = 0;
418
+ request.profileId = 0;
419
+ request.clusterId = 0x04; // simple descriptor
420
+ request.srcEndpoint = 0;
421
+ request.asduLength = 4;
422
+ request.asduPayload = zdpFrame;
423
+ request.txOptions = 0;
424
+ request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
425
+ request.timeout = 30;
426
+ this.driver.enqueueSendDataRequest(request)
427
+ .then(result => { })
428
+ .catch(error => { });
429
+ try {
430
+ const d = await this.waitForData(networkAddress, 0, 0x8004);
431
+ const data = d.asduPayload;
432
+ const buf = Buffer.from(data);
433
+ const inCount = buf.readUInt8(11);
434
+ const inClusters = [];
435
+ let cIndex = 12;
436
+ for (let i = 0; i < inCount; i++) {
437
+ inClusters[i] = buf.readUInt16LE(cIndex);
438
+ cIndex += 2;
439
+ }
440
+ const outCount = buf.readUInt8(12 + (inCount * 2));
441
+ const outClusters = [];
442
+ cIndex = 13 + (inCount * 2);
443
+ for (let l = 0; l < outCount; l++) {
444
+ outClusters[l] = buf.readUInt16LE(cIndex);
445
+ cIndex += 2;
446
+ }
447
+ const simpleDesc = {
448
+ profileID: buf.readUInt16LE(6),
449
+ endpointID: buf.readUInt8(5),
450
+ deviceID: buf.readUInt16LE(8),
451
+ inputClusters: inClusters,
452
+ outputClusters: outClusters
453
+ };
454
+ debug("RECEIVING SIMPLE_DESCRIPTOR - addr: 0x" + networkAddress.toString(16) + " EP:" + simpleDesc.endpointID + " inClusters: " + inClusters + " outClusters: " + outClusters);
455
+ return simpleDesc;
456
+ }
457
+ catch (error) {
458
+ const msg = "RECEIVING SIMPLE_DESCRIPTOR FAILED - addr: 0x" + networkAddress.toString(16) + " " + error;
459
+ debug(msg);
460
+ return Promise.reject(new Error(msg));
461
+ }
462
+ }
463
+ async checkCoordinatorSimpleDescriptor(skip) {
464
+ debug("checking coordinator simple descriptor");
465
+ var simpleDesc = null;
466
+ if (skip === false) {
467
+ try {
468
+ simpleDesc = await this.simpleDescriptor(0x0, 1);
469
+ }
470
+ catch (error) {
471
+ }
472
+ if (simpleDesc === null) {
473
+ this.checkCoordinatorSimpleDescriptor(false);
474
+ return;
475
+ }
476
+ debug("EP: " + simpleDesc.endpointID);
477
+ debug("profile ID: " + simpleDesc.profileID);
478
+ debug("device ID: " + simpleDesc.deviceID);
479
+ for (let i = 0; i < simpleDesc.inputClusters.length; i++) {
480
+ debug("input cluster: 0x" + simpleDesc.inputClusters[i].toString(16));
481
+ }
482
+ for (let o = 0; o < simpleDesc.outputClusters.length; o++) {
483
+ debug("output cluster: 0x" + simpleDesc.outputClusters[o].toString(16));
484
+ }
485
+ let ok = true;
486
+ if (simpleDesc.endpointID === 0x1) {
487
+ if (!simpleDesc.inputClusters.includes(0x0) || !simpleDesc.inputClusters.includes(0x0A) || !simpleDesc.inputClusters.includes(0x19) ||
488
+ !simpleDesc.outputClusters.includes(0x01) || !simpleDesc.outputClusters.includes(0x20) || !simpleDesc.outputClusters.includes(0x500)) {
489
+ debug("missing cluster");
490
+ ok = false;
491
+ }
492
+ if (ok === true) {
493
+ return;
494
+ }
495
+ }
496
+ }
497
+ debug("setting new simple descriptor");
498
+ try { //[ sd1 ep proId devId vers #inCl iCl1 iCl2 iCl3 #outC oCl1 oCl2 oCl3 ]
499
+ const sd = [0x00, 0x01, 0x04, 0x01, 0x05, 0x00, 0x01, 0x03, 0x00, 0x00, 0x0A, 0x00, 0x19, 0x00, 0x03, 0x01, 0x00, 0x20, 0x00, 0x00, 0x05];
500
+ const sd1 = sd.reverse();
501
+ await this.driver.writeParameterRequest(constants_1.default.PARAM.STK.Endpoint, sd1);
502
+ }
503
+ catch (error) {
504
+ debug("error setting simple descriptor - try again");
505
+ this.checkCoordinatorSimpleDescriptor(true);
506
+ return;
507
+ }
508
+ debug("success setting simple descriptor");
509
+ }
510
+ waitFor(networkAddress, endpoint, frameType, direction, transactionSequenceNumber, clusterID, commandIdentifier, timeout) {
511
+ const payload = {
512
+ address: networkAddress, endpoint, clusterID, commandIdentifier, frameType, direction,
513
+ transactionSequenceNumber,
514
+ };
515
+ const waiter = this.waitress.waitFor(payload, timeout);
516
+ const cancel = () => this.waitress.remove(waiter.ID);
517
+ return { promise: waiter.start().promise, cancel };
518
+ }
519
+ async sendZclFrameToEndpoint(ieeeAddr, networkAddress, endpoint, zclFrame, timeout, disableResponse, disableRecovery, sourceEndpoint) {
520
+ const transactionID = this.nextTransactionID();
521
+ const request = {};
522
+ let pay = zclFrame.toBuffer();
523
+ //console.log("zclFramte.toBuffer:");
524
+ //console.log(pay);
525
+ request.requestId = transactionID;
526
+ request.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
527
+ request.destAddr16 = networkAddress;
528
+ request.destEndpoint = endpoint;
529
+ request.profileId = sourceEndpoint === 242 && endpoint === 242 ? 0xa1e0 : 0x104;
530
+ request.clusterId = zclFrame.Cluster.ID;
531
+ request.srcEndpoint = sourceEndpoint || 1;
532
+ request.asduLength = pay.length;
533
+ request.asduPayload = [...pay];
534
+ request.txOptions = this.TX_OPTIONS; // 0x00 normal; 0x04 APS ACK
535
+ request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
536
+ request.timeout = timeout;
537
+ const command = zclFrame.getCommand();
538
+ this.driver.enqueueSendDataRequest(request)
539
+ .then(result => {
540
+ debug(`sendZclFrameToEndpoint - message send with transSeq Nr.: ${zclFrame.Header.transactionSequenceNumber}`);
541
+ debug(command.hasOwnProperty('response') + ", " + zclFrame.Header.frameControl.disableDefaultResponse + ", " + disableResponse);
542
+ if (!command.hasOwnProperty('response') || zclFrame.Header.frameControl.disableDefaultResponse || !disableResponse) {
543
+ debug("resolve request");
544
+ return Promise.resolve();
545
+ }
546
+ })
547
+ .catch(error => {
548
+ debug(`sendZclFrameToEndpoint ERROR`);
549
+ debug(error);
550
+ //return Promise.reject(new Error("sendZclFrameToEndpoint ERROR " + error));
551
+ });
552
+ try {
553
+ let data = null;
554
+ if (command.hasOwnProperty('response') && !disableResponse) {
555
+ data = await this.waitForData(networkAddress, 0x104, zclFrame.Cluster.ID, zclFrame.Header.transactionSequenceNumber, request.timeout);
556
+ }
557
+ else if (!zclFrame.Header.frameControl.disableDefaultResponse) {
558
+ data = await this.waitForData(networkAddress, 0x104, zclFrame.Cluster.ID, zclFrame.Header.transactionSequenceNumber, request.timeout);
559
+ }
560
+ if (data !== null) {
561
+ const asdu = data.asduPayload;
562
+ const buffer = Buffer.from(asdu);
563
+ const frame = zcl_1.ZclFrame.fromBuffer(zclFrame.Cluster.ID, buffer);
564
+ const response = {
565
+ address: (data.srcAddrMode === 0x02) ? data.srcAddr16 : null,
566
+ frame: frame,
567
+ endpoint: data.srcEndpoint,
568
+ linkquality: data.lqi,
569
+ groupID: (data.srcAddrMode === 0x01) ? data.srcAddr16 : null,
570
+ wasBroadcast: data.srcAddrMode === 0x01 || data.srcAddrMode === 0xF,
571
+ destinationEndpoint: data.destEndpoint,
572
+ };
573
+ debug(`response received`);
574
+ return response;
575
+ }
576
+ else {
577
+ debug(`no response expected`);
578
+ return null;
579
+ }
580
+ }
581
+ catch (error) {
582
+ throw new Error("no response received");
583
+ }
584
+ }
585
+ async sendZclFrameToGroup(groupID, zclFrame) {
586
+ const transactionID = this.nextTransactionID();
587
+ const request = {};
588
+ let pay = zclFrame.toBuffer();
589
+ debug("zclFrame to group - zclFrame.payload:");
590
+ debug(zclFrame.Payload);
591
+ //console.log("zclFramte.toBuffer:");
592
+ //console.log(pay);
593
+ request.requestId = transactionID;
594
+ request.destAddrMode = constants_1.default.PARAM.addressMode.GROUP_ADDR;
595
+ request.destAddr16 = groupID;
596
+ request.profileId = 0x104;
597
+ request.clusterId = zclFrame.Cluster.ID;
598
+ request.srcEndpoint = 1;
599
+ request.asduLength = pay.length;
600
+ request.asduPayload = [...pay];
601
+ request.txOptions = 0;
602
+ request.radius = constants_1.default.PARAM.txRadius.UNLIMITED;
603
+ try {
604
+ debug(`sendZclFrameToGroup - message send`);
605
+ return this.driver.enqueueSendDataRequest(request);
606
+ }
607
+ catch (error) {
608
+ //debug(`sendZclFrameToGroup ERROR: ${error}`);
609
+ throw new Error(error);
610
+ }
611
+ }
612
+ async sendZclFrameToAll(endpoint, zclFrame, sourceEndpoint) {
613
+ const transactionID = this.nextTransactionID();
614
+ const request = {};
615
+ let pay = zclFrame.toBuffer();
616
+ debug("zclFrame to all - zclFrame.payload:");
617
+ debug(zclFrame.Payload);
618
+ request.requestId = transactionID;
619
+ request.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
620
+ request.destAddr16 = 0xFFFD;
621
+ request.destEndpoint = endpoint;
622
+ request.profileId = sourceEndpoint === 242 && endpoint === 242 ? 0xa1e0 : 0x104;
623
+ request.clusterId = zclFrame.Cluster.ID;
624
+ request.srcEndpoint = sourceEndpoint;
625
+ request.asduLength = pay.length;
626
+ request.asduPayload = [...pay];
627
+ request.txOptions = 0;
628
+ request.radius = constants_1.default.PARAM.txRadius.UNLIMITED;
629
+ try {
630
+ debug(`sendZclFrameToAll - message send`);
631
+ return this.driver.enqueueSendDataRequest(request);
632
+ }
633
+ catch (error) {
634
+ //debug(`sendZclFrameToAll ERROR: ${error}`);
635
+ throw new Error(error);
636
+ }
637
+ }
638
+ async bind(destinationNetworkAddress, sourceIeeeAddress, sourceEndpoint, clusterID, destinationAddressOrGroup, type, destinationEndpoint) {
639
+ const transactionID = this.nextTransactionID();
640
+ const clid1 = clusterID & 0xff;
641
+ const clid2 = (clusterID >> 8) & 0xff;
642
+ const destAddrMode = (type === 'group') ? constants_1.default.PARAM.addressMode.GROUP_ADDR : constants_1.default.PARAM.addressMode.IEEE_ADDR;
643
+ let destArray;
644
+ if (type === 'endpoint') {
645
+ destArray = this.driver.macAddrStringToArray(destinationAddressOrGroup);
646
+ destArray = destArray.concat([destinationEndpoint]);
647
+ }
648
+ else {
649
+ destArray = [destinationAddressOrGroup, (destinationAddressOrGroup >> 8) & 0xff];
650
+ }
651
+ const request = {};
652
+ const zdpFrame = [transactionID].concat(this.driver.macAddrStringToArray(sourceIeeeAddress)).concat([sourceEndpoint, clid1, clid2, destAddrMode]).concat(destArray);
653
+ request.requestId = transactionID;
654
+ request.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
655
+ request.destAddr16 = destinationNetworkAddress;
656
+ request.destEndpoint = 0;
657
+ request.profileId = 0;
658
+ request.clusterId = 0x21; // bind_request
659
+ request.srcEndpoint = 0;
660
+ request.asduLength = zdpFrame.length;
661
+ request.asduPayload = zdpFrame;
662
+ request.txOptions = 0x04; // 0x04 use APS ACKS
663
+ request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
664
+ request.timeout = 30;
665
+ this.driver.enqueueSendDataRequest(request)
666
+ .then(result => { })
667
+ .catch(error => { });
668
+ try {
669
+ const d = await this.waitForData(destinationNetworkAddress, 0, 0x8021);
670
+ const data = d.asduPayload;
671
+ debug("BIND RESPONSE - addr: 0x" + destinationNetworkAddress.toString(16) + " status: " + data[1]);
672
+ if (data[1] !== 0) {
673
+ throw new Error("status: " + data[1]);
674
+ }
675
+ }
676
+ catch (error) {
677
+ debug("BIND FAILED - addr: 0x" + destinationNetworkAddress.toString(16) + " " + error);
678
+ throw new Error(error);
679
+ }
680
+ }
681
+ async unbind(destinationNetworkAddress, sourceIeeeAddress, sourceEndpoint, clusterID, destinationAddressOrGroup, type, destinationEndpoint) {
682
+ const transactionID = this.nextTransactionID();
683
+ const clid1 = clusterID & 0xff;
684
+ const clid2 = (clusterID >> 8) & 0xff;
685
+ const destAddrMode = (type === 'group') ? constants_1.default.PARAM.addressMode.GROUP_ADDR : constants_1.default.PARAM.addressMode.IEEE_ADDR;
686
+ let destArray;
687
+ if (type === 'endpoint') {
688
+ destArray = this.driver.macAddrStringToArray(destinationAddressOrGroup);
689
+ destArray = destArray.concat([destinationEndpoint]);
690
+ }
691
+ else {
692
+ destArray = [destinationAddressOrGroup, (destinationAddressOrGroup >> 8) & 0xff];
693
+ }
694
+ const request = {};
695
+ const zdpFrame = [transactionID].concat(this.driver.macAddrStringToArray(sourceIeeeAddress)).concat([sourceEndpoint, clid1, clid2, destAddrMode]).concat(destArray);
696
+ request.requestId = transactionID;
697
+ request.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
698
+ request.destAddr16 = destinationNetworkAddress;
699
+ request.destEndpoint = 0;
700
+ request.profileId = 0;
701
+ request.clusterId = 0x22; // unbind_request
702
+ request.srcEndpoint = 0;
703
+ request.asduLength = zdpFrame.length;
704
+ request.asduPayload = zdpFrame;
705
+ request.txOptions = 0x04; // 0x04 use APS ACKS
706
+ request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
707
+ request.timeout = 30;
708
+ this.driver.enqueueSendDataRequest(request)
709
+ .then(result => { })
710
+ .catch(error => { });
711
+ try {
712
+ const d = await this.waitForData(destinationNetworkAddress, 0, 0x8022);
713
+ const data = d.asduPayload;
714
+ debug("UNBIND RESPONSE - addr: 0x" + destinationNetworkAddress.toString(16) + " status: " + data[1]);
715
+ if (data[1] !== 0) {
716
+ throw new Error("status: " + data[1]);
717
+ }
718
+ }
719
+ catch (error) {
720
+ debug("UNBIND FAILED - addr: 0x" + destinationNetworkAddress.toString(16) + " " + error);
721
+ throw new Error(error);
722
+ }
723
+ }
724
+ async removeDevice(networkAddress, ieeeAddr) {
725
+ const transactionID = this.nextTransactionID();
726
+ const nwk1 = networkAddress & 0xff;
727
+ const nwk2 = (networkAddress >> 8) & 0xff;
728
+ const request = {};
729
+ //const zdpFrame = [transactionID].concat(this.driver.macAddrStringToArray(ieeeAddr)).concat([0]);
730
+ const zdpFrame = [transactionID].concat([0, 0, 0, 0, 0, 0, 0, 0]).concat([0]);
731
+ request.requestId = transactionID;
732
+ request.destAddrMode = constants_1.default.PARAM.addressMode.NWK_ADDR;
733
+ request.destAddr16 = networkAddress;
734
+ request.destEndpoint = 0;
735
+ request.profileId = 0;
736
+ request.clusterId = 0x34; // mgmt_leave_request
737
+ request.srcEndpoint = 0;
738
+ request.asduLength = 10;
739
+ request.asduPayload = zdpFrame;
740
+ request.txOptions = 0;
741
+ request.radius = constants_1.default.PARAM.txRadius.DEFAULT_RADIUS;
742
+ this.driver.enqueueSendDataRequest(request)
743
+ .then(result => { })
744
+ .catch(error => { });
745
+ try {
746
+ const d = await this.waitForData(networkAddress, 0, 0x8034);
747
+ const data = d.asduPayload;
748
+ debug("REMOVE_DEVICE - addr: 0x" + networkAddress.toString(16) + " status: " + data[1]);
749
+ const payload = {
750
+ networkAddress: networkAddress,
751
+ ieeeAddr: ieeeAddr,
752
+ };
753
+ if (data[1] !== 0) {
754
+ throw new Error("status: " + data[1]);
755
+ }
756
+ this.emit(Events.Events.deviceLeave, payload);
757
+ }
758
+ catch (error) {
759
+ debug("REMOVE_DEVICE FAILED - addr: 0x" + networkAddress.toString(16) + " " + error);
760
+ throw new Error(error);
761
+ }
762
+ }
763
+ async supportsBackup() {
764
+ return false;
765
+ }
766
+ async backup() {
767
+ throw new Error("This adapter does not support backup");
768
+ }
769
+ async getNetworkParameters() {
770
+ try {
771
+ let panid = await this.driver.readParameterRequest(constants_1.default.PARAM.Network.PAN_ID);
772
+ let expanid = await this.driver.readParameterRequest(constants_1.default.PARAM.Network.APS_EXT_PAN_ID);
773
+ let channel = await this.driver.readParameterRequest(constants_1.default.PARAM.Network.CHANNEL);
774
+ let networkKey = await this.driver.readParameterRequest(constants_1.default.PARAM.Network.NETWORK_KEY);
775
+ // check current channel against configuration.yaml
776
+ if (this.networkOptions.channelList[0] !== channel) {
777
+ debug("Channel in configuration.yaml (" + this.networkOptions.channelList[0] + ") differs from current channel (" + channel + "). Changing channel.");
778
+ let setChannelMask = 0;
779
+ switch (this.networkOptions.channelList[0]) {
780
+ case 11:
781
+ setChannelMask = 0x800;
782
+ break;
783
+ case 12:
784
+ setChannelMask = 0x1000;
785
+ break;
786
+ case 13:
787
+ setChannelMask = 0x2000;
788
+ break;
789
+ case 14:
790
+ setChannelMask = 0x4000;
791
+ break;
792
+ case 15:
793
+ setChannelMask = 0x8000;
794
+ break;
795
+ case 16:
796
+ setChannelMask = 0x10000;
797
+ break;
798
+ case 17:
799
+ setChannelMask = 0x20000;
800
+ break;
801
+ case 18:
802
+ setChannelMask = 0x40000;
803
+ break;
804
+ case 19:
805
+ setChannelMask = 0x80000;
806
+ break;
807
+ case 20:
808
+ setChannelMask = 0x100000;
809
+ break;
810
+ case 21:
811
+ setChannelMask = 0x200000;
812
+ break;
813
+ case 22:
814
+ setChannelMask = 0x400000;
815
+ break;
816
+ case 23:
817
+ setChannelMask = 0x800000;
818
+ break;
819
+ case 24:
820
+ setChannelMask = 0x1000000;
821
+ break;
822
+ case 25:
823
+ setChannelMask = 0x2000000;
824
+ break;
825
+ case 26:
826
+ setChannelMask = 0x4000000;
827
+ break;
828
+ default:
829
+ break;
830
+ }
831
+ try {
832
+ await this.driver.writeParameterRequest(constants_1.default.PARAM.Network.CHANNEL_MASK, setChannelMask);
833
+ await this.driver.changeNetworkStateRequest(constants_1.default.PARAM.Network.NET_OFFLINE);
834
+ await this.driver.changeNetworkStateRequest(constants_1.default.PARAM.Network.NET_CONNECTED);
835
+ await this.sleep(3000);
836
+ channel = await this.driver.readParameterRequest(constants_1.default.PARAM.Network.CHANNEL);
837
+ }
838
+ catch (error) {
839
+ debug("Could not set channel: " + error);
840
+ }
841
+ }
842
+ // check current panid against configuration.yaml
843
+ if (this.networkOptions.panID !== panid) {
844
+ debug("panid in configuration.yaml (" + this.networkOptions.panID + ") differs from current panid (" + panid + "). Changing panid.");
845
+ try {
846
+ await this.driver.writeParameterRequest(constants_1.default.PARAM.Network.PAN_ID, this.networkOptions.panID);
847
+ await this.driver.changeNetworkStateRequest(constants_1.default.PARAM.Network.NET_OFFLINE);
848
+ await this.driver.changeNetworkStateRequest(constants_1.default.PARAM.Network.NET_CONNECTED);
849
+ await this.sleep(3000);
850
+ panid = await this.driver.readParameterRequest(constants_1.default.PARAM.Network.PAN_ID);
851
+ }
852
+ catch (error) {
853
+ debug("Could not set panid: " + error);
854
+ }
855
+ }
856
+ // check current extended_panid against configuration.yaml
857
+ if (this.driver.generalArrayToString(this.networkOptions.extendedPanID, 8) !== expanid) {
858
+ debug("extended panid in configuration.yaml (" + this.driver.macAddrArrayToString(this.networkOptions.extendedPanID) + ") differs from current extended panid (" + expanid + "). Changing extended panid.");
859
+ try {
860
+ //await this.driver.writeParameterRequest(PARAM.PARAM.Network.USE_APS_EXT_PAN_ID, 1);
861
+ await this.driver.writeParameterRequest(constants_1.default.PARAM.Network.APS_EXT_PAN_ID, this.networkOptions.extendedPanID);
862
+ await this.driver.changeNetworkStateRequest(constants_1.default.PARAM.Network.NET_OFFLINE);
863
+ await this.driver.changeNetworkStateRequest(constants_1.default.PARAM.Network.NET_CONNECTED);
864
+ await this.sleep(3000);
865
+ expanid = await this.driver.readParameterRequest(constants_1.default.PARAM.Network.APS_EXT_PAN_ID);
866
+ }
867
+ catch (error) {
868
+ debug("Could not set extended panid: " + error);
869
+ }
870
+ }
871
+ // check current network key against configuration.yaml
872
+ if (this.driver.generalArrayToString(this.networkOptions.networkKey, 16) !== networkKey) {
873
+ debug("network key in configuration.yaml (hidden) differs from current network key (" + networkKey + "). Changing network key.");
874
+ try {
875
+ await this.driver.writeParameterRequest(constants_1.default.PARAM.Network.NETWORK_KEY, this.networkOptions.networkKey);
876
+ await this.driver.changeNetworkStateRequest(constants_1.default.PARAM.Network.NET_OFFLINE);
877
+ await this.driver.changeNetworkStateRequest(constants_1.default.PARAM.Network.NET_CONNECTED);
878
+ await this.sleep(3000);
879
+ }
880
+ catch (error) {
881
+ debug("Could not set network key: " + error);
882
+ }
883
+ }
884
+ return {
885
+ panID: panid,
886
+ extendedPanID: expanid,
887
+ channel: channel
888
+ };
889
+ }
890
+ catch (error) {
891
+ const msg = "get network parameters Error:" + error;
892
+ debug(msg);
893
+ return Promise.reject(new Error(msg));
894
+ }
895
+ }
896
+ async restoreChannelInterPAN() {
897
+ throw new Error("not supported");
898
+ }
899
+ async sendZclFrameInterPANToIeeeAddr(zclFrame, ieeeAddr) {
900
+ throw new Error("not supported");
901
+ }
902
+ async sendZclFrameInterPANBroadcast(zclFrame, timeout) {
903
+ throw new Error("not supported");
904
+ }
905
+ async sendZclFrameInterPANBroadcastWithResponse(zclFrame, timeout) {
906
+ throw new Error("not supported");
907
+ }
908
+ async setChannelInterPAN(channel) {
909
+ throw new Error("not supported");
910
+ }
911
+ async setTransmitPower(value) {
912
+ throw new Error("not supported");
913
+ }
914
+ async sendZclFrameInterPANIeeeAddr(zclFrame, ieeeAddr) {
915
+ throw new Error("not supported");
916
+ }
917
+ /**
918
+ * Private methods
919
+ */
920
+ sleep(ms) {
921
+ return new Promise(resolve => setTimeout(resolve, ms));
922
+ }
923
+ waitForData(addr, profileId, clusterId, transactionSequenceNumber, timeout) {
924
+ return new Promise((resolve, reject) => {
925
+ const ts = Date.now();
926
+ const commandId = constants_1.default.PARAM.APS.DATA_INDICATION;
927
+ const req = { addr, profileId, clusterId, transactionSequenceNumber, resolve, reject, ts, timeout };
928
+ this.openRequestsQueue.push(req);
929
+ });
930
+ }
931
+ checkReceivedGreenPowerIndication(ind) {
932
+ ind.clusterId = 0x21;
933
+ let gpFrame = [ind.rspId, ind.seqNr, ind.id,
934
+ 0, 0,
935
+ // ind.options & 0xff, (ind.options >> 8) & 0xff,
936
+ ind.srcId & 0xff, (ind.srcId >> 8) & 0xff, (ind.srcId >> 16) & 0xff, (ind.srcId >> 24) & 0xff,
937
+ ind.frameCounter & 0xff, (ind.frameCounter >> 8) & 0xff, (ind.frameCounter >> 16) & 0xff, (ind.frameCounter >> 24) & 0xff,
938
+ ind.commandId, ind.commandFrameSize].concat(ind.commandFrame);
939
+ const payBuf = Buffer.from(gpFrame);
940
+ const payload = {
941
+ frame: zcl_1.ZclFrame.fromBuffer(ind.clusterId, payBuf),
942
+ address: ind.srcId,
943
+ endpoint: 242,
944
+ linkquality: 127,
945
+ groupID: 0x0b84,
946
+ wasBroadcast: false,
947
+ destinationEndpoint: 1,
948
+ };
949
+ this.waitress.resolve(payload);
950
+ this.emit(Events.Events.zclData, payload);
951
+ }
952
+ checkReceivedDataPayload(resp) {
953
+ var _a;
954
+ let srcAddr = null;
955
+ let frame = null;
956
+ if (resp != null) {
957
+ srcAddr = (resp.srcAddr16 != null) ? resp.srcAddr16 : resp.srcAddr64;
958
+ if (resp.profileId != 0x00) {
959
+ try {
960
+ frame = zcl_1.ZclFrame.fromBuffer(resp.clusterId, Buffer.from(resp.asduPayload));
961
+ }
962
+ catch (error) {
963
+ debug("could not parse zclFrame: " + error);
964
+ }
965
+ }
966
+ }
967
+ let i = this.openRequestsQueue.length;
968
+ while (i--) {
969
+ const req = this.openRequestsQueue[i];
970
+ if (srcAddr != null && req.addr === srcAddr && req.clusterId === resp.clusterId &&
971
+ req.profileId === resp.profileId) {
972
+ if (frame !== null && req.transactionSequenceNumber !== null && req.transactionSequenceNumber !== undefined) {
973
+ if (req.transactionSequenceNumber === frame.Header.transactionSequenceNumber) {
974
+ debug("resolve data request with transSeq Nr.: " + req.transactionSequenceNumber);
975
+ this.openRequestsQueue.splice(i, 1);
976
+ req.resolve(resp);
977
+ }
978
+ }
979
+ else {
980
+ debug("resolve data request without a transSeq Nr.");
981
+ this.openRequestsQueue.splice(i, 1);
982
+ req.resolve(resp);
983
+ }
984
+ }
985
+ const now = Date.now();
986
+ // Default timeout: 60 seconds.
987
+ // Comparison is negated to prevent orphans when invalid timeout is entered (resulting in NaN).
988
+ if (!((now - req.ts) <= ((_a = req.timeout) !== null && _a !== void 0 ? _a : 60) * 1000)) {
989
+ //debug("Timeout for request in openRequestsQueue addr: " + req.addr.toString(16) + " clusterId: " + req.clusterId.toString(16) + " profileId: " + req.profileId.toString(16));
990
+ //remove from busyQueue
991
+ this.openRequestsQueue.splice(i, 1);
992
+ req.reject("waiting for response TIMEOUT");
993
+ }
994
+ }
995
+ // check unattended incomming messages
996
+ if (resp != null && resp.profileId === 0x00 && resp.clusterId === 0x13) {
997
+ // device Annce
998
+ const payBuf = Buffer.from(resp.asduPayload);
999
+ const payload = {
1000
+ networkAddress: payBuf.readUInt16LE(1),
1001
+ ieeeAddr: this.driver.macAddrArrayToString(resp.asduPayload.slice(3, 11)),
1002
+ };
1003
+ if (this.joinPermitted === true) {
1004
+ this.emit(Events.Events.deviceJoined, payload);
1005
+ }
1006
+ else {
1007
+ this.emit(Events.Events.deviceAnnounce, payload);
1008
+ }
1009
+ }
1010
+ if (resp != null && resp.profileId != 0x00) {
1011
+ const payBuf = Buffer.from(resp.asduPayload);
1012
+ try {
1013
+ const payload = {
1014
+ frame: zcl_1.ZclFrame.fromBuffer(resp.clusterId, payBuf),
1015
+ address: (resp.destAddrMode === 0x03) ? resp.srcAddr64 : resp.srcAddr16,
1016
+ endpoint: resp.srcEndpoint,
1017
+ linkquality: resp.lqi,
1018
+ groupID: (resp.destAddrMode === 0x01) ? resp.destAddr16 : null,
1019
+ wasBroadcast: resp.destAddrMode === 0x01 || resp.destAddrMode === 0xF,
1020
+ destinationEndpoint: resp.destEndpoint,
1021
+ };
1022
+ this.waitress.resolve(payload);
1023
+ this.emit(Events.Events.zclData, payload);
1024
+ }
1025
+ catch (error) {
1026
+ const payload = {
1027
+ clusterID: resp.clusterId,
1028
+ data: payBuf,
1029
+ address: (resp.destAddrMode === 0x03) ? resp.srcAddr64 : resp.srcAddr16,
1030
+ endpoint: resp.srcEndpoint,
1031
+ linkquality: resp.lqi,
1032
+ groupID: (resp.destAddrMode === 0x01) ? resp.destAddr16 : null,
1033
+ wasBroadcast: resp.destAddrMode === 0x01 || resp.destAddrMode === 0xF,
1034
+ destinationEndpoint: resp.destEndpoint,
1035
+ };
1036
+ this.emit(Events.Events.rawData, payload);
1037
+ }
1038
+ }
1039
+ }
1040
+ nextTransactionID() {
1041
+ this.transactionID++;
1042
+ if (this.transactionID > 255) {
1043
+ this.transactionID = 1;
1044
+ }
1045
+ return this.transactionID;
1046
+ }
1047
+ waitressTimeoutFormatter(matcher, timeout) {
1048
+ return `Timeout - ${matcher.address} - ${matcher.endpoint}` +
1049
+ ` - ${matcher.transactionSequenceNumber} - ${matcher.clusterID}` +
1050
+ ` - ${matcher.commandIdentifier} after ${timeout}ms`;
1051
+ }
1052
+ waitressValidator(payload, matcher) {
1053
+ const transactionSequenceNumber = payload.frame.Header.transactionSequenceNumber;
1054
+ return (!matcher.address || payload.address === matcher.address) &&
1055
+ payload.endpoint === matcher.endpoint &&
1056
+ (!matcher.transactionSequenceNumber || transactionSequenceNumber === matcher.transactionSequenceNumber) &&
1057
+ payload.frame.Cluster.ID === matcher.clusterID &&
1058
+ matcher.frameType === payload.frame.Header.frameControl.frameType &&
1059
+ matcher.commandIdentifier === payload.frame.Header.commandIdentifier &&
1060
+ matcher.direction === payload.frame.Header.frameControl.direction;
1061
+ }
1062
+ }
1063
+ exports.default = DeconzAdapter;
1064
+ //# sourceMappingURL=deconzAdapter.js.map