zigbee-herdsman-converters 20.13.0 → 20.14.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 (531) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/converters/fromZigbee.d.ts.map +1 -1
  3. package/converters/fromZigbee.js +345 -334
  4. package/converters/fromZigbee.js.map +1 -1
  5. package/converters/toZigbee.d.ts +1 -1
  6. package/converters/toZigbee.d.ts.map +1 -1
  7. package/converters/toZigbee.js +80 -82
  8. package/converters/toZigbee.js.map +1 -1
  9. package/devices/ITCommander.d.ts.map +1 -1
  10. package/devices/ITCommander.js +1 -1
  11. package/devices/ITCommander.js.map +1 -1
  12. package/devices/acova.d.ts.map +1 -1
  13. package/devices/acova.js.map +1 -1
  14. package/devices/akuvox.d.ts.map +1 -1
  15. package/devices/akuvox.js.map +1 -1
  16. package/devices/aldi.d.ts.map +1 -1
  17. package/devices/aldi.js.map +1 -1
  18. package/devices/alecto.d.ts.map +1 -1
  19. package/devices/alecto.js.map +1 -1
  20. package/devices/atlantic.d.ts.map +1 -1
  21. package/devices/atlantic.js.map +1 -1
  22. package/devices/aubess.d.ts.map +1 -1
  23. package/devices/aubess.js.map +1 -1
  24. package/devices/aurora_lighting.d.ts.map +1 -1
  25. package/devices/aurora_lighting.js +2 -2
  26. package/devices/aurora_lighting.js.map +1 -1
  27. package/devices/avatto.js +0 -1
  28. package/devices/avatto.js.map +1 -1
  29. package/devices/axis.d.ts.map +1 -1
  30. package/devices/axis.js.map +1 -1
  31. package/devices/bitron.d.ts.map +1 -1
  32. package/devices/bitron.js +9 -9
  33. package/devices/bitron.js.map +1 -1
  34. package/devices/bituo_technik.d.ts.map +1 -1
  35. package/devices/bituo_technik.js +2 -2
  36. package/devices/bituo_technik.js.map +1 -1
  37. package/devices/blaupunkt.d.ts.map +1 -1
  38. package/devices/blaupunkt.js +1 -1
  39. package/devices/blaupunkt.js.map +1 -1
  40. package/devices/blitzwolf.d.ts.map +1 -1
  41. package/devices/blitzwolf.js.map +1 -1
  42. package/devices/bosch.d.ts.map +1 -1
  43. package/devices/bosch.js +25 -25
  44. package/devices/bosch.js.map +1 -1
  45. package/devices/brimate.d.ts.map +1 -1
  46. package/devices/brimate.js.map +1 -1
  47. package/devices/bseed.d.ts.map +1 -1
  48. package/devices/bseed.js.map +1 -1
  49. package/devices/bticino.d.ts.map +1 -1
  50. package/devices/bticino.js.map +1 -1
  51. package/devices/busch_jaeger.d.ts.map +1 -1
  52. package/devices/busch_jaeger.js.map +1 -1
  53. package/devices/byun.d.ts.map +1 -1
  54. package/devices/byun.js.map +1 -1
  55. package/devices/casaia.d.ts.map +1 -1
  56. package/devices/casaia.js +2 -2
  57. package/devices/casaia.js.map +1 -1
  58. package/devices/centralite.d.ts.map +1 -1
  59. package/devices/centralite.js +5 -5
  60. package/devices/centralite.js.map +1 -1
  61. package/devices/cleverio.d.ts.map +1 -1
  62. package/devices/cleverio.js.map +1 -1
  63. package/devices/ctm.d.ts.map +1 -1
  64. package/devices/ctm.js +62 -62
  65. package/devices/ctm.js.map +1 -1
  66. package/devices/current_products_corp.d.ts.map +1 -1
  67. package/devices/current_products_corp.js.map +1 -1
  68. package/devices/custom_devices_diy.d.ts.map +1 -1
  69. package/devices/custom_devices_diy.js +12 -12
  70. package/devices/custom_devices_diy.js.map +1 -1
  71. package/devices/danalock.d.ts.map +1 -1
  72. package/devices/danalock.js.map +1 -1
  73. package/devices/danfoss.d.ts.map +1 -1
  74. package/devices/danfoss.js +2 -2
  75. package/devices/danfoss.js.map +1 -1
  76. package/devices/datek.d.ts.map +1 -1
  77. package/devices/datek.js +1 -1
  78. package/devices/datek.js.map +1 -1
  79. package/devices/dawon_dns.d.ts.map +1 -1
  80. package/devices/dawon_dns.js.map +1 -1
  81. package/devices/develco.d.ts.map +1 -1
  82. package/devices/develco.js +15 -14
  83. package/devices/develco.js.map +1 -1
  84. package/devices/digi.d.ts.map +1 -1
  85. package/devices/digi.js.map +1 -1
  86. package/devices/dlink.d.ts.map +1 -1
  87. package/devices/dlink.js.map +1 -1
  88. package/devices/easyaccess.d.ts.map +1 -1
  89. package/devices/easyaccess.js.map +1 -1
  90. package/devices/easyiot.d.ts.map +1 -1
  91. package/devices/easyiot.js.map +1 -1
  92. package/devices/echostar.d.ts.map +1 -1
  93. package/devices/echostar.js.map +1 -1
  94. package/devices/ecodim.d.ts.map +1 -1
  95. package/devices/ecodim.js +1 -1
  96. package/devices/ecodim.js.map +1 -1
  97. package/devices/ecolink.d.ts.map +1 -1
  98. package/devices/ecolink.js.map +1 -1
  99. package/devices/ecozy.d.ts.map +1 -1
  100. package/devices/ecozy.js.map +1 -1
  101. package/devices/enocean.d.ts.map +1 -1
  102. package/devices/enocean.js.map +1 -1
  103. package/devices/envilar.d.ts.map +1 -1
  104. package/devices/envilar.js +2 -2
  105. package/devices/envilar.js.map +1 -1
  106. package/devices/eurotronic.d.ts.map +1 -1
  107. package/devices/eurotronic.js.map +1 -1
  108. package/devices/evanell.d.ts.map +1 -1
  109. package/devices/evanell.js.map +1 -1
  110. package/devices/evology.d.ts.map +1 -1
  111. package/devices/evology.js.map +1 -1
  112. package/devices/ewelink.d.ts.map +1 -1
  113. package/devices/ewelink.js +1 -1
  114. package/devices/ewelink.js.map +1 -1
  115. package/devices/fantem.d.ts.map +1 -1
  116. package/devices/fantem.js +2 -2
  117. package/devices/fantem.js.map +1 -1
  118. package/devices/fireangel.d.ts.map +1 -1
  119. package/devices/fireangel.js.map +1 -1
  120. package/devices/frankever.d.ts.map +1 -1
  121. package/devices/frankever.js.map +1 -1
  122. package/devices/frient.d.ts.map +1 -1
  123. package/devices/frient.js.map +1 -1
  124. package/devices/gewiss.d.ts.map +1 -1
  125. package/devices/gewiss.js.map +1 -1
  126. package/devices/giex.d.ts.map +1 -1
  127. package/devices/giex.js.map +1 -1
  128. package/devices/gledopto.js +2 -2
  129. package/devices/gledopto.js.map +1 -1
  130. package/devices/gmmts.d.ts.map +1 -1
  131. package/devices/gmmts.js +23 -23
  132. package/devices/gmmts.js.map +1 -1
  133. package/devices/gumax.d.ts +4 -0
  134. package/devices/gumax.d.ts.map +1 -0
  135. package/devices/gumax.js +15 -0
  136. package/devices/gumax.js.map +1 -0
  137. package/devices/heiman.d.ts.map +1 -1
  138. package/devices/heiman.js +2 -2
  139. package/devices/heiman.js.map +1 -1
  140. package/devices/heimgard_technologies.d.ts.map +1 -1
  141. package/devices/heimgard_technologies.js +2 -2
  142. package/devices/heimgard_technologies.js.map +1 -1
  143. package/devices/hive.js +1 -1
  144. package/devices/hive.js.map +1 -1
  145. package/devices/hommyn.d.ts.map +1 -1
  146. package/devices/hommyn.js.map +1 -1
  147. package/devices/hzc.d.ts.map +1 -1
  148. package/devices/hzc.js.map +1 -1
  149. package/devices/hzc_electric.d.ts.map +1 -1
  150. package/devices/hzc_electric.js.map +1 -1
  151. package/devices/ihorn.d.ts.map +1 -1
  152. package/devices/ihorn.js.map +1 -1
  153. package/devices/imhotepcreation.d.ts.map +1 -1
  154. package/devices/index.d.ts.map +1 -1
  155. package/devices/index.js +4 -2
  156. package/devices/index.js.map +1 -1
  157. package/devices/innr.d.ts.map +1 -1
  158. package/devices/innr.js +2 -2
  159. package/devices/innr.js.map +1 -1
  160. package/devices/inovelli.d.ts.map +1 -1
  161. package/devices/inovelli.js +38 -38
  162. package/devices/inovelli.js.map +1 -1
  163. package/devices/insta.d.ts.map +1 -1
  164. package/devices/insta.js.map +1 -1
  165. package/devices/iotperfect.d.ts.map +1 -1
  166. package/devices/iotperfect.js.map +1 -1
  167. package/devices/iris.d.ts.map +1 -1
  168. package/devices/iris.js +1 -1
  169. package/devices/iris.js.map +1 -1
  170. package/devices/javis.d.ts.map +1 -1
  171. package/devices/javis.js.map +1 -1
  172. package/devices/jxuan.d.ts.map +1 -1
  173. package/devices/jxuan.js +2 -2
  174. package/devices/jxuan.js.map +1 -1
  175. package/devices/kami.d.ts.map +1 -1
  176. package/devices/kami.js.map +1 -1
  177. package/devices/keen_home.d.ts.map +1 -1
  178. package/devices/keen_home.js.map +1 -1
  179. package/devices/kmpcil.d.ts.map +1 -1
  180. package/devices/kmpcil.js +5 -5
  181. package/devices/kmpcil.js.map +1 -1
  182. package/devices/kwikset.d.ts.map +1 -1
  183. package/devices/kwikset.js.map +1 -1
  184. package/devices/led_trading.d.ts.map +1 -1
  185. package/devices/led_trading.js +1 -8
  186. package/devices/led_trading.js.map +1 -1
  187. package/devices/legrand.d.ts.map +1 -1
  188. package/devices/legrand.js +2 -2
  189. package/devices/legrand.js.map +1 -1
  190. package/devices/lellki.d.ts.map +1 -1
  191. package/devices/lellki.js +2 -2
  192. package/devices/lellki.js.map +1 -1
  193. package/devices/letv.d.ts.map +1 -1
  194. package/devices/letv.js.map +1 -1
  195. package/devices/leviton.d.ts.map +1 -1
  196. package/devices/leviton.js +1 -1
  197. package/devices/leviton.js.map +1 -1
  198. package/devices/lidl.d.ts.map +1 -1
  199. package/devices/lidl.js +15 -15
  200. package/devices/lidl.js.map +1 -1
  201. package/devices/lifecontrol.d.ts.map +1 -1
  202. package/devices/lifecontrol.js +1 -1
  203. package/devices/lifecontrol.js.map +1 -1
  204. package/devices/linkind.d.ts.map +1 -1
  205. package/devices/linkind.js +2 -2
  206. package/devices/linkind.js.map +1 -1
  207. package/devices/linptech.d.ts.map +1 -1
  208. package/devices/linptech.js +5 -5
  209. package/devices/linptech.js.map +1 -1
  210. package/devices/livolo.d.ts.map +1 -1
  211. package/devices/livolo.js +1 -1
  212. package/devices/livolo.js.map +1 -1
  213. package/devices/lixee.d.ts.map +1 -1
  214. package/devices/lixee.js +29 -28
  215. package/devices/lixee.js.map +1 -1
  216. package/devices/ls.d.ts.map +1 -1
  217. package/devices/ls.js.map +1 -1
  218. package/devices/lumi.d.ts.map +1 -1
  219. package/devices/lumi.js +7 -7
  220. package/devices/lumi.js.map +1 -1
  221. package/devices/lupus.d.ts.map +1 -1
  222. package/devices/lupus.js +2 -2
  223. package/devices/lupus.js.map +1 -1
  224. package/devices/lutron.d.ts.map +1 -1
  225. package/devices/lutron.js.map +1 -1
  226. package/devices/lux.d.ts.map +1 -1
  227. package/devices/lux.js.map +1 -1
  228. package/devices/lytko.js +6 -6
  229. package/devices/lytko.js.map +1 -1
  230. package/devices/meazon.d.ts.map +1 -1
  231. package/devices/meazon.js.map +1 -1
  232. package/devices/mercator.d.ts.map +1 -1
  233. package/devices/mercator.js +2 -2
  234. package/devices/mercator.js.map +1 -1
  235. package/devices/miboxer.d.ts.map +1 -1
  236. package/devices/miboxer.js +1 -1
  237. package/devices/miboxer.js.map +1 -1
  238. package/devices/moes.d.ts.map +1 -1
  239. package/devices/moes.js +3 -3
  240. package/devices/moes.js.map +1 -1
  241. package/devices/multiterm.js +1 -1
  242. package/devices/multiterm.js.map +1 -1
  243. package/devices/namron.js +6 -6
  244. package/devices/namron.js.map +1 -1
  245. package/devices/neo.d.ts.map +1 -1
  246. package/devices/neo.js +1 -1
  247. package/devices/neo.js.map +1 -1
  248. package/devices/net2grid.d.ts.map +1 -1
  249. package/devices/net2grid.js.map +1 -1
  250. package/devices/netvox.d.ts.map +1 -1
  251. package/devices/netvox.js.map +1 -1
  252. package/devices/niko.d.ts.map +1 -1
  253. package/devices/niko.js +10 -10
  254. package/devices/niko.js.map +1 -1
  255. package/devices/ninja_blocks.d.ts.map +1 -1
  256. package/devices/ninja_blocks.js.map +1 -1
  257. package/devices/nodon.d.ts.map +1 -1
  258. package/devices/nodon.js +2 -2
  259. package/devices/nodon.js.map +1 -1
  260. package/devices/nous.d.ts.map +1 -1
  261. package/devices/nous.js.map +1 -1
  262. package/devices/novo.d.ts.map +1 -1
  263. package/devices/novo.js.map +1 -1
  264. package/devices/nue_3a.js +2 -2
  265. package/devices/nue_3a.js.map +1 -1
  266. package/devices/nyce.d.ts.map +1 -1
  267. package/devices/nyce.js.map +1 -1
  268. package/devices/onesti.d.ts.map +1 -1
  269. package/devices/onesti.js.map +1 -1
  270. package/devices/openlumi.d.ts.map +1 -1
  271. package/devices/openlumi.js.map +1 -1
  272. package/devices/oujiabao.d.ts.map +1 -1
  273. package/devices/oujiabao.js.map +1 -1
  274. package/devices/owon.d.ts.map +1 -1
  275. package/devices/owon.js +35 -26
  276. package/devices/owon.js.map +1 -1
  277. package/devices/peq.d.ts.map +1 -1
  278. package/devices/peq.js.map +1 -1
  279. package/devices/perenio.d.ts.map +1 -1
  280. package/devices/perenio.js +21 -21
  281. package/devices/perenio.js.map +1 -1
  282. package/devices/philips.d.ts.map +1 -1
  283. package/devices/philips.js +28 -0
  284. package/devices/philips.js.map +1 -1
  285. package/devices/plaid.d.ts.map +1 -1
  286. package/devices/plaid.js.map +1 -1
  287. package/devices/plugwise.d.ts.map +1 -1
  288. package/devices/plugwise.js +1 -1
  289. package/devices/plugwise.js.map +1 -1
  290. package/devices/qa.d.ts.map +1 -1
  291. package/devices/qa.js.map +1 -1
  292. package/devices/qmotion.d.ts.map +1 -1
  293. package/devices/qmotion.js +1 -1
  294. package/devices/qmotion.js.map +1 -1
  295. package/devices/qoto.d.ts.map +1 -1
  296. package/devices/qoto.js.map +1 -1
  297. package/devices/rgb_genie.d.ts.map +1 -1
  298. package/devices/rgb_genie.js +2 -2
  299. package/devices/rgb_genie.js.map +1 -1
  300. package/devices/roome.d.ts.map +1 -1
  301. package/devices/roome.js.map +1 -1
  302. package/devices/rtx.d.ts.map +1 -1
  303. package/devices/rtx.js.map +1 -1
  304. package/devices/salus_controls.d.ts.map +1 -1
  305. package/devices/salus_controls.js.map +1 -1
  306. package/devices/saswell.d.ts.map +1 -1
  307. package/devices/saswell.js +1 -1
  308. package/devices/saswell.js.map +1 -1
  309. package/devices/sber.d.ts.map +1 -1
  310. package/devices/sber.js.map +1 -1
  311. package/devices/schlage.d.ts.map +1 -1
  312. package/devices/schlage.js.map +1 -1
  313. package/devices/schneider_electric.d.ts.map +1 -1
  314. package/devices/schneider_electric.js +22 -22
  315. package/devices/schneider_electric.js.map +1 -1
  316. package/devices/securifi.d.ts.map +1 -1
  317. package/devices/securifi.js.map +1 -1
  318. package/devices/sengled.d.ts.map +1 -1
  319. package/devices/sercomm.d.ts.map +1 -1
  320. package/devices/sercomm.js.map +1 -1
  321. package/devices/shade_control.d.ts.map +1 -1
  322. package/devices/shade_control.js.map +1 -1
  323. package/devices/shinasystem.js +1 -1
  324. package/devices/shinasystem.js.map +1 -1
  325. package/devices/siglis.d.ts.map +1 -1
  326. package/devices/siglis.js +4 -5
  327. package/devices/siglis.js.map +1 -1
  328. package/devices/sinope.d.ts.map +1 -1
  329. package/devices/sinope.js +76 -84
  330. package/devices/sinope.js.map +1 -1
  331. package/devices/siterwell.d.ts.map +1 -1
  332. package/devices/siterwell.js.map +1 -1
  333. package/devices/skydance.d.ts.map +1 -1
  334. package/devices/skydance.js.map +1 -1
  335. package/devices/smart9.d.ts.map +1 -1
  336. package/devices/smart9.js.map +1 -1
  337. package/devices/smartenit.d.ts.map +1 -1
  338. package/devices/smartenit.js.map +1 -1
  339. package/devices/smartthings.js +1 -1
  340. package/devices/smartthings.js.map +1 -1
  341. package/devices/smartwings.d.ts.map +1 -1
  342. package/devices/smartwings.js.map +1 -1
  343. package/devices/somgoms.d.ts.map +1 -1
  344. package/devices/somgoms.js.map +1 -1
  345. package/devices/sonoff.d.ts.map +1 -1
  346. package/devices/sonoff.js +2 -2
  347. package/devices/sonoff.js.map +1 -1
  348. package/devices/stelpro.d.ts.map +1 -1
  349. package/devices/stelpro.js +3 -3
  350. package/devices/stelpro.js.map +1 -1
  351. package/devices/sunricher.d.ts.map +1 -1
  352. package/devices/sunricher.js +3 -8
  353. package/devices/sunricher.js.map +1 -1
  354. package/devices/swann.d.ts.map +1 -1
  355. package/devices/swann.js.map +1 -1
  356. package/devices/tapestry.d.ts.map +1 -1
  357. package/devices/tapestry.js.map +1 -1
  358. package/devices/technicolor.d.ts.map +1 -1
  359. package/devices/technicolor.js.map +1 -1
  360. package/devices/third_reality.d.ts.map +1 -1
  361. package/devices/third_reality.js +166 -15
  362. package/devices/third_reality.js.map +1 -1
  363. package/devices/titan_products.d.ts.map +1 -1
  364. package/devices/titan_products.js.map +1 -1
  365. package/devices/tplink.d.ts.map +1 -1
  366. package/devices/tplink.js.map +1 -1
  367. package/devices/tuya.d.ts.map +1 -1
  368. package/devices/tuya.js +20 -20
  369. package/devices/tuya.js.map +1 -1
  370. package/devices/ubisys.d.ts.map +1 -1
  371. package/devices/ubisys.js +30 -27
  372. package/devices/ubisys.js.map +1 -1
  373. package/devices/uhome.d.ts.map +1 -1
  374. package/devices/uhome.js.map +1 -1
  375. package/devices/universal_electronics_inc.d.ts.map +1 -1
  376. package/devices/universal_electronics_inc.js +1 -1
  377. package/devices/universal_electronics_inc.js.map +1 -1
  378. package/devices/vesternet.d.ts.map +1 -1
  379. package/devices/vesternet.js.map +1 -1
  380. package/devices/viessmann.d.ts.map +1 -1
  381. package/devices/viessmann.js.map +1 -1
  382. package/devices/vimar.d.ts.map +1 -1
  383. package/devices/vimar.js.map +1 -1
  384. package/devices/visonic.d.ts.map +1 -1
  385. package/devices/visonic.js.map +1 -1
  386. package/devices/wally.d.ts.map +1 -1
  387. package/devices/wally.js.map +1 -1
  388. package/devices/waxman.d.ts.map +1 -1
  389. package/devices/waxman.js.map +1 -1
  390. package/devices/weiser.d.ts.map +1 -1
  391. package/devices/weiser.js.map +1 -1
  392. package/devices/wirenboard.d.ts.map +1 -1
  393. package/devices/wirenboard.js +11 -11
  394. package/devices/wirenboard.js.map +1 -1
  395. package/devices/woolley.d.ts.map +1 -1
  396. package/devices/woolley.js +1 -1
  397. package/devices/woolley.js.map +1 -1
  398. package/devices/woox.d.ts.map +1 -1
  399. package/devices/woox.js.map +1 -1
  400. package/devices/wyze.d.ts.map +1 -1
  401. package/devices/wyze.js.map +1 -1
  402. package/devices/xyzroe.d.ts.map +1 -1
  403. package/devices/xyzroe.js +6 -6
  404. package/devices/xyzroe.js.map +1 -1
  405. package/devices/yale.d.ts.map +1 -1
  406. package/devices/yale.js +3 -3
  407. package/devices/yale.js.map +1 -1
  408. package/devices/yookee.d.ts.map +1 -1
  409. package/devices/yookee.js.map +1 -1
  410. package/devices/zemismart.d.ts.map +1 -1
  411. package/devices/zemismart.js +2 -2
  412. package/devices/zemismart.js.map +1 -1
  413. package/devices/zen.d.ts.map +1 -1
  414. package/devices/zen.js.map +1 -1
  415. package/index.d.ts +5 -5
  416. package/index.d.ts.map +1 -1
  417. package/index.js +31 -16
  418. package/index.js.map +1 -1
  419. package/lib/color.d.ts +1 -1
  420. package/lib/color.d.ts.map +1 -1
  421. package/lib/color.js +47 -50
  422. package/lib/color.js.map +1 -1
  423. package/lib/configureKey.js +2 -2
  424. package/lib/configureKey.js.map +1 -1
  425. package/lib/develco.d.ts.map +1 -1
  426. package/lib/develco.js +5 -6
  427. package/lib/develco.js.map +1 -1
  428. package/lib/ewelink.d.ts.map +1 -1
  429. package/lib/exposes.js +1 -1
  430. package/lib/exposes.js.map +1 -1
  431. package/lib/ikea.d.ts +1 -1
  432. package/lib/ikea.d.ts.map +1 -1
  433. package/lib/ikea.js +10 -10
  434. package/lib/ikea.js.map +1 -1
  435. package/lib/ledvance.d.ts +1 -1
  436. package/lib/ledvance.d.ts.map +1 -1
  437. package/lib/legacy.d.ts +3 -16
  438. package/lib/legacy.d.ts.map +1 -1
  439. package/lib/legacy.js +121 -131
  440. package/lib/legacy.js.map +1 -1
  441. package/lib/legrand.d.ts +1 -1
  442. package/lib/legrand.d.ts.map +1 -1
  443. package/lib/legrand.js +4 -4
  444. package/lib/legrand.js.map +1 -1
  445. package/lib/light.d.ts +1 -1
  446. package/lib/light.js +5 -5
  447. package/lib/light.js.map +1 -1
  448. package/lib/logger.d.ts.map +1 -1
  449. package/lib/logger.js +4 -4
  450. package/lib/logger.js.map +1 -1
  451. package/lib/lumi.d.ts +1 -1
  452. package/lib/lumi.d.ts.map +1 -1
  453. package/lib/lumi.js +90 -92
  454. package/lib/lumi.js.map +1 -1
  455. package/lib/modernExtend.d.ts +1 -1
  456. package/lib/modernExtend.d.ts.map +1 -1
  457. package/lib/modernExtend.js +15 -15
  458. package/lib/modernExtend.js.map +1 -1
  459. package/lib/ota/common.d.ts +1 -1
  460. package/lib/ota/common.d.ts.map +1 -1
  461. package/lib/ota/common.js +5 -5
  462. package/lib/ota/common.js.map +1 -1
  463. package/lib/ota/gmmts.d.ts +1 -1
  464. package/lib/ota/gmmts.d.ts.map +1 -1
  465. package/lib/ota/gmmts.js +2 -2
  466. package/lib/ota/gmmts.js.map +1 -1
  467. package/lib/ota/index.d.ts +5 -5
  468. package/lib/ota/index.d.ts.map +1 -1
  469. package/lib/ota/index.js +7 -7
  470. package/lib/ota/index.js.map +1 -1
  471. package/lib/ota/inovelli.d.ts +1 -6
  472. package/lib/ota/inovelli.d.ts.map +1 -1
  473. package/lib/ota/inovelli.js +11 -11
  474. package/lib/ota/inovelli.js.map +1 -1
  475. package/lib/ota/jethome.d.ts +1 -1
  476. package/lib/ota/jethome.d.ts.map +1 -1
  477. package/lib/ota/jethome.js +4 -4
  478. package/lib/ota/jethome.js.map +1 -1
  479. package/lib/ota/ledvance.d.ts +1 -1
  480. package/lib/ota/ledvance.d.ts.map +1 -1
  481. package/lib/ota/ledvance.js +4 -4
  482. package/lib/ota/ledvance.js.map +1 -1
  483. package/lib/ota/lixee.d.ts +1 -1
  484. package/lib/ota/lixee.d.ts.map +1 -1
  485. package/lib/ota/lixee.js +3 -3
  486. package/lib/ota/lixee.js.map +1 -1
  487. package/lib/ota/salus.d.ts +1 -1
  488. package/lib/ota/salus.d.ts.map +1 -1
  489. package/lib/ota/salus.js +5 -5
  490. package/lib/ota/salus.js.map +1 -1
  491. package/lib/ota/securifi.d.ts +1 -1
  492. package/lib/ota/securifi.d.ts.map +1 -1
  493. package/lib/ota/securifi.js +2 -2
  494. package/lib/ota/securifi.js.map +1 -1
  495. package/lib/ota/tradfri.d.ts.map +1 -1
  496. package/lib/ota/tradfri.js +4 -4
  497. package/lib/ota/tradfri.js.map +1 -1
  498. package/lib/ota/ubisys.d.ts.map +1 -1
  499. package/lib/ota/ubisys.js +4 -4
  500. package/lib/ota/ubisys.js.map +1 -1
  501. package/lib/ota/zigbeeOTA.d.ts +1 -1
  502. package/lib/ota/zigbeeOTA.d.ts.map +1 -1
  503. package/lib/ota/zigbeeOTA.js +9 -9
  504. package/lib/ota/zigbeeOTA.js.map +1 -1
  505. package/lib/philips.js +12 -12
  506. package/lib/philips.js.map +1 -1
  507. package/lib/reporting.d.ts +1 -1
  508. package/lib/reporting.d.ts.map +1 -1
  509. package/lib/reporting.js +7 -7
  510. package/lib/reporting.js.map +1 -1
  511. package/lib/store.d.ts +1 -1
  512. package/lib/store.d.ts.map +1 -1
  513. package/lib/store.js +2 -2
  514. package/lib/store.js.map +1 -1
  515. package/lib/tuya.d.ts +1 -1
  516. package/lib/tuya.d.ts.map +1 -1
  517. package/lib/tuya.js +24 -56
  518. package/lib/tuya.js.map +1 -1
  519. package/lib/types.d.ts +4 -4
  520. package/lib/types.d.ts.map +1 -1
  521. package/lib/types.js +1 -0
  522. package/lib/types.js.map +1 -1
  523. package/lib/ubisys.d.ts +1 -1
  524. package/lib/ubisys.d.ts.map +1 -1
  525. package/lib/ubisys.js +1 -1
  526. package/lib/ubisys.js.map +1 -1
  527. package/lib/utils.d.ts +1 -1
  528. package/lib/utils.d.ts.map +1 -1
  529. package/lib/utils.js +26 -26
  530. package/lib/utils.js.map +1 -1
  531. package/package.json +8 -9
package/lib/legacy.js CHANGED
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
3
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
4
  if (k2 === undefined) k2 = k;
4
5
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -59,16 +60,15 @@ exports.isCoverInverted = isCoverInverted;
59
60
  exports.convertDecimalValueTo2ByteHexArray = convertDecimalValueTo2ByteHexArray;
60
61
  exports.convertTimeTo2ByteHexArray = convertTimeTo2ByteHexArray;
61
62
  exports.getMetaValue = getMetaValue;
62
- /* eslint-disable @typescript-eslint/no-explicit-any */
63
63
  const fs_1 = __importDefault(require("fs"));
64
64
  const fromZigbee_1 = __importDefault(require("../converters/fromZigbee"));
65
- const globalStore = __importStar(require("./store"));
66
- const utils = __importStar(require("./utils"));
67
- const fromZigbeeStore = {};
68
65
  const constants = __importStar(require("./constants"));
69
66
  const exposes = __importStar(require("./exposes"));
70
67
  const light = __importStar(require("./light"));
71
68
  const logger_1 = require("./logger");
69
+ const globalStore = __importStar(require("./store"));
70
+ const utils = __importStar(require("./utils"));
71
+ const fromZigbeeStore = {};
72
72
  // get object property name (key) by it's value
73
73
  const getKey = (object, value) => {
74
74
  for (const key in object) {
@@ -249,10 +249,10 @@ function convertRawToCycleTimer(value) {
249
249
  weekdays = 'once';
250
250
  }
251
251
  let minsincemidnight = value[4] * 256 + value[5];
252
- // @ts-ignore
252
+ // @ts-expect-error ignore
253
253
  starttime = String(parseInt(minsincemidnight / 60)).padStart(2, '0') + ':' + String(minsincemidnight % 60).padStart(2, '0');
254
254
  minsincemidnight = value[6] * 256 + value[7];
255
- // @ts-ignore
255
+ // @ts-expect-error ignore
256
256
  endtime = String(parseInt(minsincemidnight / 60)).padStart(2, '0') + ':' + String(minsincemidnight % 60).padStart(2, '0');
257
257
  irrigationDuration = value[8] * 256 + value[9];
258
258
  pauseDuration = value[10] * 256 + value[11];
@@ -473,7 +473,7 @@ function convertRawToTimer(value) {
473
473
  if (value.length > 12) {
474
474
  timernr = value[1];
475
475
  const minsincemidnight = value[2] * 256 + value[3];
476
- // @ts-ignore
476
+ // @ts-expect-error ignore
477
477
  starttime = String(parseInt(minsincemidnight / 60)).padStart(2, '0') + ':' + String(minsincemidnight % 60).padStart(2, '0');
478
478
  duration = value[4] * 256 + value[5];
479
479
  if (value[6] > 0) {
@@ -1069,7 +1069,7 @@ function getMetaValue(entity, definition, key, groupStrategy = 'first') {
1069
1069
  if (entity.constructor.name === 'Group' && entity.members.length > 0) {
1070
1070
  const values = [];
1071
1071
  for (const memberMeta of definition) {
1072
- if (memberMeta.meta && memberMeta.meta.hasOwnProperty(key)) {
1072
+ if (memberMeta.meta && memberMeta.meta[key] !== undefined) {
1073
1073
  if (groupStrategy === 'first') {
1074
1074
  return memberMeta.meta[key];
1075
1075
  }
@@ -1083,7 +1083,7 @@ function getMetaValue(entity, definition, key, groupStrategy = 'first') {
1083
1083
  return values[0];
1084
1084
  }
1085
1085
  }
1086
- else if (definition && definition.meta && definition.meta.hasOwnProperty(key)) {
1086
+ else if (definition && definition.meta && definition.meta[key] !== undefined) {
1087
1087
  return definition.meta[key];
1088
1088
  }
1089
1089
  return undefined;
@@ -1122,7 +1122,7 @@ const toPercentage = (value, min, max) => {
1122
1122
  };
1123
1123
  const postfixWithEndpointName = (name, msg, definition) => {
1124
1124
  if (definition.meta && definition.meta.multiEndpoint) {
1125
- const endpointName = definition.hasOwnProperty('endpoint') ? getKey(definition.endpoint(msg.device), msg.endpoint.ID) : msg.endpoint.ID;
1125
+ const endpointName = definition.endpoint !== undefined ? getKey(definition.endpoint(msg.device), msg.endpoint.ID) : msg.endpoint.ID;
1126
1126
  return `${name}_${endpointName}`;
1127
1127
  }
1128
1128
  else {
@@ -1504,7 +1504,7 @@ const fromZigbee1 = {
1504
1504
  break;
1505
1505
  }
1506
1506
  case 1: // report state
1507
- // @ts-ignore
1507
+ // @ts-expect-error ignore
1508
1508
  result.state = { 0: 'OPEN', 1: 'STOP', 2: 'CLOSE' }[value];
1509
1509
  break;
1510
1510
  case dataPoints.motorDirection: // reverse direction
@@ -1514,7 +1514,7 @@ const fromZigbee1 = {
1514
1514
  result.cycle_time = value;
1515
1515
  break;
1516
1516
  case 101: // model
1517
- // @ts-ignore
1517
+ // @ts-expect-error ignore
1518
1518
  result.motor_type = {
1519
1519
  0: '',
1520
1520
  1: 'AM0/6-28R-Sm',
@@ -1528,11 +1528,11 @@ const fromZigbee1 = {
1528
1528
  result.cycle_count = value;
1529
1529
  break;
1530
1530
  case 103: // set or clear bottom limit
1531
- // @ts-ignore
1531
+ // @ts-expect-error ignore
1532
1532
  result.bottom_limit = { 0: 'SET', 1: 'CLEAR' }[value];
1533
1533
  break;
1534
1534
  case 104: // set or clear top limit
1535
- // @ts-ignore
1535
+ // @ts-expect-error ignore
1536
1536
  result.top_limit = { 0: 'SET', 1: 'CLEAR' }[value];
1537
1537
  break;
1538
1538
  case 109: // active power
@@ -1544,7 +1544,7 @@ const fromZigbee1 = {
1544
1544
  case 116: // report confirmation
1545
1545
  break;
1546
1546
  case 121: // running state
1547
- // @ts-ignore
1547
+ // @ts-expect-error ignore
1548
1548
  result.motor_state = { 0: 'OPENING', 1: 'STOPPED', 2: 'CLOSING' }[value];
1549
1549
  result.running = value !== 1 ? true : false;
1550
1550
  break;
@@ -1753,7 +1753,7 @@ const fromZigbee1 = {
1753
1753
  cluster: 'manuSpecificTuya',
1754
1754
  type: ['commandDataResponse', 'commandDataReport'],
1755
1755
  convert: (model, msg, publish, options, meta) => {
1756
- // @ts-ignore
1756
+ // @ts-expect-error ignore
1757
1757
  const modelConverters = giexFzModelConverters[model.model] || {};
1758
1758
  for (const dpValue of msg.data.dpValues) {
1759
1759
  const value = getDataValue(dpValue);
@@ -1796,14 +1796,14 @@ const fromZigbee1 = {
1796
1796
  const value = getDataValue(dpValue);
1797
1797
  switch (dp) {
1798
1798
  case dataPoints.alectoSmokeState:
1799
- // @ts-ignore
1799
+ // @ts-expect-error ignore
1800
1800
  return { smoke_state: { 0: 'alarm', 1: 'normal' }[value] };
1801
1801
  case dataPoints.alectoSmokeValue:
1802
1802
  return { smoke_value: value };
1803
1803
  case dataPoints.alectoSelfChecking:
1804
1804
  return { self_checking: value };
1805
1805
  case dataPoints.alectoCheckingResult:
1806
- // @ts-ignore
1806
+ // @ts-expect-error ignore
1807
1807
  return { checking_result: { 0: 'checking', 1: 'check_success', 2: 'check_failure', 3: 'others' }[value] };
1808
1808
  case dataPoints.alectoSmokeTest:
1809
1809
  return { smoke_test: value };
@@ -1812,7 +1812,7 @@ const fromZigbee1 = {
1812
1812
  case dataPoints.alectoBatteryPercentage:
1813
1813
  return { battery: value };
1814
1814
  case dataPoints.alectoBatteryState:
1815
- // @ts-ignore
1815
+ // @ts-expect-error ignore
1816
1816
  return { battery_state: { 0: 'low', 1: 'middle', 2: 'high' }[value] };
1817
1817
  case dataPoints.alectoSilence:
1818
1818
  return { silence: value };
@@ -2022,7 +2022,7 @@ const fromZigbee1 = {
2022
2022
  2: 'double',
2023
2023
  3: 'hold',
2024
2024
  };
2025
- if (msg.data.hasOwnProperty('data')) {
2025
+ if (msg.data.data !== undefined) {
2026
2026
  const zoneStatus = msg.data.zonestatus;
2027
2027
  return { click: buttonStates[zoneStatus] };
2028
2028
  }
@@ -3004,24 +3004,19 @@ const fromZigbee1 = {
3004
3004
  result[postfixWithEndpointName('remote_sensing', msg, model)] = msg.data['remoteSensing'];
3005
3005
  }
3006
3006
  const ctrl = msg.data['ctrlSeqeOfOper'];
3007
- if (typeof ctrl == 'number' && thermostatControlSequenceOfOperations.hasOwnProperty(ctrl)) {
3008
- result[postfixWithEndpointName('control_sequence_of_operation', msg, model)] =
3009
- // @ts-ignore
3010
- thermostatControlSequenceOfOperations[ctrl];
3007
+ if (typeof ctrl == 'number' && thermostatControlSequenceOfOperations[ctrl] !== undefined) {
3008
+ result[postfixWithEndpointName('control_sequence_of_operation', msg, model)] = thermostatControlSequenceOfOperations[ctrl];
3011
3009
  }
3012
3010
  const smode = msg.data['systemMode'];
3013
- if (typeof smode == 'number' && thermostatSystemModes.hasOwnProperty(smode)) {
3014
- // @ts-ignore
3011
+ if (typeof smode == 'number' && thermostatSystemModes[smode] !== undefined) {
3015
3012
  result[postfixWithEndpointName('system_mode', msg, model)] = thermostatSystemModes[smode];
3016
3013
  }
3017
3014
  const rmode = msg.data['runningMode'];
3018
- if (typeof rmode == 'number' && thermostatSystemModes.hasOwnProperty(rmode)) {
3019
- // @ts-ignore
3015
+ if (typeof rmode == 'number' && thermostatSystemModes[rmode] !== undefined) {
3020
3016
  result[postfixWithEndpointName('running_mode', msg, model)] = thermostatSystemModes[rmode];
3021
3017
  }
3022
3018
  const state = msg.data['runningState'];
3023
- if (typeof state == 'number' && constants.thermostatRunningStates.hasOwnProperty(state)) {
3024
- // @ts-ignore
3019
+ if (typeof state == 'number' && constants.thermostatRunningStates[state] !== undefined) {
3025
3020
  result[postfixWithEndpointName('running_state', msg, model)] = constants.thermostatRunningStates[state];
3026
3021
  }
3027
3022
  if (typeof msg.data['pIHeatingDemand'] == 'number') {
@@ -3272,7 +3267,7 @@ const fromZigbee1 = {
3272
3267
  if (!utils.isLegacyEnabled(options)) {
3273
3268
  return fromZigbee_1.default.hue_dimmer_switch.convert(model, msg, publish, options, meta);
3274
3269
  }
3275
- const multiplePressTimeout = options && options.hasOwnProperty('multiple_press_timeout') ? options.multiple_press_timeout : 0.25;
3270
+ const multiplePressTimeout = options && options.multiple_press_timeout !== undefined ? options.multiple_press_timeout : 0.25;
3276
3271
  const getPayload = function (button, pressType, pressDuration, pressCounter, brightnessSend, brightnessValue) {
3277
3272
  const payLoad = {};
3278
3273
  payLoad['action'] = `${button}-${pressType}`;
@@ -3290,7 +3285,7 @@ const fromZigbee1 = {
3290
3285
  const button = buttonLookup[msg.data['button']];
3291
3286
  const typeLookup = { 0: 'press', 1: 'hold', 2: 'release', 3: 'release' };
3292
3287
  const type = typeLookup[msg.data['type']];
3293
- const brightnessEnabled = options && options.hasOwnProperty('send_brightess') ? options.send_brightess : true;
3288
+ const brightnessEnabled = options && options.send_brightess !== undefined ? options.send_brightess : true;
3294
3289
  const brightnessSend = brightnessEnabled && button && (button == 'up' || button == 'down');
3295
3290
  // Initialize store
3296
3291
  if (!fromZigbeeStore[deviceID]) {
@@ -3362,7 +3357,7 @@ const fromZigbee1 = {
3362
3357
  fromZigbeeStore[deviceID].delayedTimer = setTimeout(() => {
3363
3358
  publish(getPayload(fromZigbeeStore[deviceID].delayedButton, fromZigbeeStore[deviceID].delayedType, 0, fromZigbeeStore[deviceID].delayedCounter, fromZigbeeStore[deviceID].delayedBrightnessSend, fromZigbeeStore[deviceID].brightnessValue));
3364
3359
  fromZigbeeStore[deviceID].delayedTimer = null;
3365
- // @ts-expect-error
3360
+ // @ts-expect-error ignore
3366
3361
  }, multiplePressTimeout * 1000);
3367
3362
  }
3368
3363
  else {
@@ -3543,7 +3538,7 @@ const fromZigbee1 = {
3543
3538
  const presetLookup = { 0: 'programming', 1: 'manual', 2: 'temporary_manual', 3: 'holiday' };
3544
3539
  switch (dp) {
3545
3540
  case dataPoints.moesSsystemMode:
3546
- // @ts-ignore
3541
+ // @ts-expect-error ignore
3547
3542
  return { preset: presetLookup[value], system_mode: 'heat' };
3548
3543
  case dataPoints.moesSheatingSetpoint:
3549
3544
  return { current_heating_setpoint: value };
@@ -3573,7 +3568,7 @@ const fromZigbee1 = {
3573
3568
  // local_temperature is now stale: the valve does not report the re-calibrated value until an actual temperature change
3574
3569
  // so update local_temperature by subtracting the old calibration and adding the new one
3575
3570
  ...(meta && meta.state && meta.state.local_temperature != null && meta.state.local_temperature_calibration != null
3576
- ? // @ts-expect-error
3571
+ ? // @ts-expect-error ignore
3577
3572
  { local_temperature: meta.state.local_temperature + (value - meta.state.local_temperature_calibration) }
3578
3573
  : {}),
3579
3574
  };
@@ -3699,7 +3694,7 @@ const fromZigbee1 = {
3699
3694
  case dataPoints.connecteTempFloor:
3700
3695
  return { external_temperature: value };
3701
3696
  case dataPoints.connecteSensorType:
3702
- // @ts-ignore
3697
+ // @ts-expect-error ignore
3703
3698
  return { sensor: { 0: 'internal', 1: 'external', 2: 'both' }[value] };
3704
3699
  case dataPoints.connecteHysteresis:
3705
3700
  return { hysteresis: value };
@@ -3754,7 +3749,7 @@ const fromZigbee1 = {
3754
3749
  return { away_mode: 'OFF', preset_mode: 'none' };
3755
3750
  }
3756
3751
  case dataPoints.saswellScheduleMode:
3757
- if (thermostatScheduleMode.hasOwnProperty(value)) {
3752
+ if (thermostatScheduleMode[value] !== undefined) {
3758
3753
  return { schedule_mode: thermostatScheduleMode[value] };
3759
3754
  }
3760
3755
  else {
@@ -4012,13 +4007,13 @@ const fromZigbee1 = {
4012
4007
  return { away_preset_days: value };
4013
4008
  case dataPoints.mode: {
4014
4009
  const ret = {};
4015
- const presetOk = getMetaValue(msg.endpoint, model, 'tuyaThermostatPreset').hasOwnProperty(value);
4010
+ const presetOk = getMetaValue(msg.endpoint, model, 'tuyaThermostatPreset')[value] !== undefined;
4016
4011
  if (presetOk) {
4017
4012
  ret.preset = getMetaValue(msg.endpoint, model, 'tuyaThermostatPreset')[value];
4018
4013
  ret.away_mode = ret.preset == 'away' ? 'ON' : 'OFF'; // Away is special HA mode
4019
4014
  const presetToSystemMode = utils.getMetaValue(msg.endpoint, model, 'tuyaThermostatPresetToSystemMode', null, {});
4020
4015
  if (value in presetToSystemMode) {
4021
- // @ts-expect-error
4016
+ // @ts-expect-error ignore
4022
4017
  ret.system_mode = presetToSystemMode[value];
4023
4018
  }
4024
4019
  }
@@ -4098,7 +4093,7 @@ const fromZigbee1 = {
4098
4093
  let result = null;
4099
4094
  switch (dp) {
4100
4095
  case dataPoints.state:
4101
- // @ts-ignore
4096
+ // @ts-expect-error ignore
4102
4097
  result = { occupancy: { 1: true, 0: false }[value] };
4103
4098
  break;
4104
4099
  case dataPoints.msReferenceLuminance:
@@ -4111,7 +4106,7 @@ const fromZigbee1 = {
4111
4106
  result = { v_sensitivity: msLookups.VSensitivity[value] };
4112
4107
  break;
4113
4108
  case dataPoints.msLedStatus:
4114
- // @ts-ignore
4109
+ // @ts-expect-error ignore
4115
4110
  result = { led_status: { 1: 'OFF', 0: 'ON' }[value] };
4116
4111
  break;
4117
4112
  case dataPoints.msVacancyDelay:
@@ -4212,11 +4207,11 @@ const fromZigbee1 = {
4212
4207
  }
4213
4208
  break;
4214
4209
  case dataPoints.tvWindowDetection:
4215
- // @ts-ignore
4210
+ // @ts-expect-error ignore
4216
4211
  result = { window_detection: { 1: true, 0: false }[value] };
4217
4212
  break;
4218
4213
  case dataPoints.tvFrostDetection:
4219
- // @ts-ignore
4214
+ // @ts-expect-error ignore
4220
4215
  result = { frost_detection: { 1: true, 0: false }[value] };
4221
4216
  break;
4222
4217
  case dataPoints.tvHeatingSetpoint:
@@ -4236,7 +4231,7 @@ const fromZigbee1 = {
4236
4231
  result = { battery: value };
4237
4232
  break;
4238
4233
  case dataPoints.tvChildLock:
4239
- // @ts-ignore
4234
+ // @ts-expect-error ignore
4240
4235
  result = { child_lock: { 1: 'LOCK', 0: 'UNLOCK' }[value] };
4241
4236
  break;
4242
4237
  case dataPoints.tvErrorStatus:
@@ -4394,7 +4389,7 @@ const fromZigbee1 = {
4394
4389
  convert: (model, msg, publish, options, meta) => {
4395
4390
  const separateWhite = model.meta && model.meta.separateWhite;
4396
4391
  const result = {};
4397
- for (const [i, dpValue] of msg.data.dpValues.entries()) {
4392
+ for (const dpValue of msg.data.dpValues.values()) {
4398
4393
  const dp = dpValue.dp;
4399
4394
  const value = getDataValue(dpValue);
4400
4395
  if (dp === dataPoints.state) {
@@ -4558,7 +4553,7 @@ const fromZigbee1 = {
4558
4553
  let result = null;
4559
4554
  switch (dp) {
4560
4555
  case dataPoints.tshpsPresenceState:
4561
- // @ts-ignore
4556
+ // @ts-expect-error ignore
4562
4557
  result = { presence: { 0: false, 1: true }[value] };
4563
4558
  break;
4564
4559
  case dataPoints.tshpscSensitivity:
@@ -4610,11 +4605,11 @@ const fromZigbee1 = {
4610
4605
  result.battery = value;
4611
4606
  break;
4612
4607
  case dataPoints.lmsSensitivity:
4613
- // @ts-ignore
4608
+ // @ts-expect-error ignore
4614
4609
  result.sensitivity = { '0': 'low', '1': 'medium', '2': 'high' }[value];
4615
4610
  break;
4616
4611
  case dataPoints.lmsKeepTime:
4617
- // @ts-ignore
4612
+ // @ts-expect-error ignore
4618
4613
  result.keep_time = { '0': '10', '1': '30', '2': '60', '3': '120' }[value];
4619
4614
  break;
4620
4615
  case dataPoints.lmsIlluminance:
@@ -4644,19 +4639,18 @@ const fromZigbee1 = {
4644
4639
  break;
4645
4640
  }
4646
4641
  case dataPoints.state:
4647
- // @ts-ignore
4642
+ // @ts-expect-error ignore
4648
4643
  result = { state: { 0: 'OPEN', 1: 'STOP', 2: 'CLOSE' }[value], running: { 0: true, 1: false, 2: true }[value] };
4649
4644
  break;
4650
4645
  case dataPoints.moesCoverBacklight:
4651
- // @ts-ignore
4652
4646
  result = { backlight: value ? 'ON' : 'OFF' };
4653
4647
  break;
4654
4648
  case dataPoints.moesCoverCalibration:
4655
- // @ts-ignore
4649
+ // @ts-expect-error ignore
4656
4650
  result = { calibration: { 0: 'ON', 1: 'OFF' }[value] };
4657
4651
  break;
4658
4652
  case dataPoints.moesCoverMotorReversal:
4659
- // @ts-ignore
4653
+ // @ts-expect-error ignore
4660
4654
  result = { motor_reversal: { 0: 'OFF', 1: 'ON' }[value] };
4661
4655
  break;
4662
4656
  default:
@@ -4679,7 +4673,7 @@ const fromZigbee1 = {
4679
4673
  return { humidity: value / (['_TZE200_bjawzodf', '_TZE200_zl1kmjqx'].includes(meta.device.manufacturerName) ? 10 : 1) };
4680
4674
  case dataPoints.tthBatteryLevel:
4681
4675
  return {
4682
- // @ts-ignore
4676
+ // @ts-expect-error ignore
4683
4677
  battery_level: { 0: 'low', 1: 'middle', 2: 'high' }[value],
4684
4678
  battery_low: value === 0 ? true : false,
4685
4679
  };
@@ -4709,7 +4703,7 @@ const fromZigbee1 = {
4709
4703
  result.battery = value;
4710
4704
  break;
4711
4705
  case dataPoints.nousTempUnitConvert:
4712
- // @ts-ignore
4706
+ // @ts-expect-error ignore
4713
4707
  result.temperature_unit_convert = { 0x00: 'celsius', 0x01: 'fahrenheit' }[value];
4714
4708
  break;
4715
4709
  case dataPoints.nousMaxTemp:
@@ -4725,11 +4719,11 @@ const fromZigbee1 = {
4725
4719
  result.min_humidity = value;
4726
4720
  break;
4727
4721
  case dataPoints.nousTempAlarm:
4728
- // @ts-ignore
4722
+ // @ts-expect-error ignore
4729
4723
  result.temperature_alarm = { 0x00: 'lower_alarm', 0x01: 'upper_alarm', 0x02: 'canceled' }[value];
4730
4724
  break;
4731
4725
  case dataPoints.nousHumiAlarm:
4732
- // @ts-ignore
4726
+ // @ts-expect-error ignore
4733
4727
  result.humidity_alarm = { 0x00: 'lower_alarm', 0x01: 'upper_alarm', 0x02: 'canceled' }[value];
4734
4728
  break;
4735
4729
  case dataPoints.nousTempSensitivity:
@@ -4876,15 +4870,15 @@ const fromZigbee1 = {
4876
4870
  case dataPoints.hyLocalTemp: // 0x027F MCU reporting room temperature
4877
4871
  return { local_temperature: (value / 10).toFixed(1) };
4878
4872
  case dataPoints.hySensor: // Sensor type
4879
- // @ts-ignore
4873
+ // @ts-expect-error ignore
4880
4874
  return { sensor_type: { 0: 'internal', 1: 'external', 2: 'both' }[value] };
4881
4875
  case dataPoints.hyPowerOnBehavior: // 0x0475 State after power on
4882
- // @ts-ignore
4876
+ // @ts-expect-error ignore
4883
4877
  return { power_on_behavior: { 0: 'restore', 1: 'off', 2: 'on' }[value] };
4884
4878
  case dataPoints.hyWeekFormat: // 0x0476 Week select 0 - 5 days, 1 - 6 days, 2 - 7 days
4885
4879
  return { week: thermostatWeekFormat[value] };
4886
4880
  case dataPoints.hyMode: // 0x0480 mode
4887
- // @ts-ignore
4881
+ // @ts-expect-error ignore
4888
4882
  return { system_mode: { 0: 'manual', 1: 'auto', 2: 'away' }[value] };
4889
4883
  case dataPoints.hyAlarm: // [16] [0]
4890
4884
  return { alarm: value > 0 ? true : false };
@@ -4905,7 +4899,7 @@ const fromZigbee1 = {
4905
4899
  return { occupancy: value > 0 ? true : false };
4906
4900
  case 102:
4907
4901
  return {
4908
- // @ts-ignore
4902
+ // @ts-expect-error ignore
4909
4903
  power_type: { 0: 'battery_full', 1: 'battery_high', 2: 'battery_medium', 3: 'battery_low', 4: 'usb' }[value],
4910
4904
  battery_low: value === 3,
4911
4905
  };
@@ -4930,7 +4924,7 @@ const fromZigbee1 = {
4930
4924
  case 112:
4931
4925
  return { unknown_112: value ? 'ON' : 'OFF' };
4932
4926
  case dataPoints.neoTempHumidityAlarm:
4933
- // @ts-ignore
4927
+ // @ts-expect-error ignore
4934
4928
  return { alarm: { 0: 'over_temperature', 1: 'over_humidity', 2: 'below_min_temperature', 3: 'below_min_humdity', 4: 'off' }[value] };
4935
4929
  default: // Unknown code
4936
4930
  logger_1.logger.debug(`Unrecognized DP #${dp}: ${JSON.stringify(dpValue)}`, 'zhc:legacy:fz:neo_nas_pd07');
@@ -4969,7 +4963,7 @@ const fromZigbee1 = {
4969
4963
  return { humidity_max: value };
4970
4964
  case dataPoints.neoPowerType: // 0x0465 [4]
4971
4965
  return {
4972
- // @ts-ignore
4966
+ // @ts-expect-error ignore
4973
4967
  power_type: { 0: 'battery_full', 1: 'battery_high', 2: 'battery_medium', 3: 'battery_low', 4: 'usb' }[value],
4974
4968
  battery_low: value === 3,
4975
4969
  };
@@ -4978,7 +4972,7 @@ const fromZigbee1 = {
4978
4972
  case dataPoints.neoUnknown3: // 0x0473 [0]
4979
4973
  break;
4980
4974
  case dataPoints.neoVolume: // 0x0474 [0]/[1]/[2] Volume 0-max, 2-low
4981
- // @ts-ignore
4975
+ // @ts-expect-error ignore
4982
4976
  return { volume: { 2: 'low', 1: 'medium', 0: 'high' }[value] };
4983
4977
  default: // Unknown code
4984
4978
  logger_1.logger.debug(`Unrecognized DP #${dp}: ${JSON.stringify(dpValue)}`, 'zhc:legacy:fz:neo_t_h_alarm');
@@ -5002,7 +4996,7 @@ const fromZigbee1 = {
5002
4996
  case dataPoints.neoAOMelody: // 0x21 [5] Melody
5003
4997
  return { melody: value };
5004
4998
  case dataPoints.neoAOVolume: // 0x5 [0]/[1]/[2] Volume 0-low, 2-max
5005
- // @ts-ignore
4999
+ // @ts-expect-error ignore
5006
5000
  return { volume: { 0: 'low', 1: 'medium', 2: 'high' }[value] };
5007
5001
  default: // Unknown code
5008
5002
  logger_1.logger.debug(`Unrecognized DP #${dp}: ${JSON.stringify(msg.data)}`, 'zhc:legacy:fz:neo_alarm');
@@ -5018,18 +5012,18 @@ const fromZigbee1 = {
5018
5012
  const value = getDataValue(dpValue);
5019
5013
  switch (dp) {
5020
5014
  case dataPoints.fantemPowerSupplyMode:
5021
- // @ts-ignore
5015
+ // @ts-expect-error ignore
5022
5016
  return { power_supply_mode: { 0: 'unknown', 1: 'no_neutral', 2: 'with_neutral' }[value] };
5023
5017
  case dataPoints.fantemExtSwitchType:
5024
- // @ts-ignore
5018
+ // @ts-expect-error ignore
5025
5019
  return { switch_type: { 0: 'unknown', 1: 'toggle', 2: 'momentary', 3: 'rotary', 4: 'auto_config' }[value] };
5026
5020
  case dataPoints.fantemLoadDetectionMode:
5027
- // @ts-ignore
5021
+ // @ts-expect-error ignore
5028
5022
  return { load_detection_mode: { 0: 'none', 1: 'first_power_on', 2: 'every_power_on' }[value] };
5029
5023
  case dataPoints.fantemExtSwitchStatus:
5030
5024
  return { switch_status: value };
5031
5025
  case dataPoints.fantemControlMode:
5032
- // @ts-ignore
5026
+ // @ts-expect-error ignore
5033
5027
  return { control_mode: { 0: 'ext_switch', 1: 'remote', 2: 'both' }[value] };
5034
5028
  case 111:
5035
5029
  // Value 0 is received after each device power-on. No idea what it means.
@@ -5037,10 +5031,10 @@ const fromZigbee1 = {
5037
5031
  case dataPoints.fantemLoadType:
5038
5032
  // Not sure if 0 is 'resistive' and 2 is 'resistive_inductive'.
5039
5033
  // If you see 'unknown', pls. check with Tuya gateway and app and update with label shown in Tuya app.
5040
- // @ts-ignore
5034
+ // @ts-expect-error ignore
5041
5035
  return { load_type: { 0: 'unknown', 1: 'resistive_capacitive', 2: 'unknown', 3: 'detecting' }[value] };
5042
5036
  case dataPoints.fantemLoadDimmable:
5043
- // @ts-ignore
5037
+ // @ts-expect-error ignore
5044
5038
  return { load_dimmable: { 0: 'unknown', 1: 'dimmable', 2: 'not_dimmable' }[value] };
5045
5039
  default:
5046
5040
  logger_1.logger.debug(`Unrecognized DP|Value [${dp}|${value}][${JSON.stringify(dpValue)}]`, 'zhc:legacy:fz:zb006x_settings');
@@ -5459,7 +5453,7 @@ const fromZigbee1 = {
5459
5453
  }
5460
5454
  return result;
5461
5455
  }
5462
- if (thermostatMeta.hasOwnProperty('weeklyScheduleConversion')) {
5456
+ if (thermostatMeta.weeklyScheduleConversion !== undefined) {
5463
5457
  conversion = thermostatMeta.weeklyScheduleConversion;
5464
5458
  }
5465
5459
  if (conversion == 'saswell') {
@@ -5471,7 +5465,6 @@ const fromZigbee1 = {
5471
5465
  return {
5472
5466
  // Same as in hvacThermostat:getWeeklyScheduleRsp hvacThermostat:setWeeklySchedule cluster format
5473
5467
  weekly_schedule: {
5474
- // @ts-ignore
5475
5468
  days: [constants.thermostatDayOfWeek[dayOfWeek]],
5476
5469
  transitions: dataToTransitions(value, maxTransitions, dataOffset),
5477
5470
  },
@@ -5621,7 +5614,6 @@ const fromZigbee2 = {
5621
5614
  options: [exposes.options.legacy()],
5622
5615
  convert: (model, msg, publish, options, meta) => {
5623
5616
  if (!utils.isLegacyEnabled(options)) {
5624
- // @ts-ignore
5625
5617
  return fromZigbee1.tuya_thermostat_weekly_schedule_2.convert(model, msg, publish, options, meta);
5626
5618
  }
5627
5619
  const dpValue = firstDpValue(msg, meta, 'tuya_thermostat_weekly_schedule');
@@ -5648,7 +5640,7 @@ const fromZigbee2 = {
5648
5640
  }
5649
5641
  return result;
5650
5642
  }
5651
- if (thermostatMeta.hasOwnProperty('weeklyScheduleConversion')) {
5643
+ if (thermostatMeta.weeklyScheduleConversion !== undefined) {
5652
5644
  conversion = thermostatMeta.weeklyScheduleConversion;
5653
5645
  }
5654
5646
  if (conversion == 'saswell') {
@@ -5682,7 +5674,6 @@ const toZigbee1 = {
5682
5674
  SA12IZL_alarm: {
5683
5675
  key: ['alarm'],
5684
5676
  convertSet: async (entity, key, value, meta) => {
5685
- // @ts-ignore
5686
5677
  await sendDataPointEnum(entity, 20, value ? 0 : 1);
5687
5678
  },
5688
5679
  },
@@ -5806,12 +5797,12 @@ const toZigbee2 = {
5806
5797
  break;
5807
5798
  }
5808
5799
  case 'top_limit': {
5809
- // @ts-ignore
5800
+ // @ts-expect-error ignore
5810
5801
  await sendDataPointEnum(entity, 104, { SET: 0, CLEAR: 1 }[value]);
5811
5802
  break;
5812
5803
  }
5813
5804
  case 'bottom_limit': {
5814
- // @ts-ignore
5805
+ // @ts-expect-error ignore
5815
5806
  await sendDataPointEnum(entity, 103, { SET: 0, CLEAR: 1 }[value]);
5816
5807
  break;
5817
5808
  }
@@ -5826,7 +5817,7 @@ const toZigbee2 = {
5826
5817
  else {
5827
5818
  value = parseInt(value);
5828
5819
  }
5829
- return toZigbee1.tuya_cover_control.convertSet(entity, 'position', value, meta);
5820
+ return await toZigbee1.tuya_cover_control.convertSet(entity, 'position', value, meta);
5830
5821
  }
5831
5822
  case 'report': {
5832
5823
  await sendDataPointBool(entity, 116, 0);
@@ -6104,11 +6095,11 @@ const toZigbee2 = {
6104
6095
  'away_preset_days',
6105
6096
  ]) {
6106
6097
  let v = 0;
6107
- if (value.hasOwnProperty(attrName)) {
6098
+ if (value[attrName] !== undefined) {
6108
6099
  v = value[attrName];
6109
6100
  }
6110
- else if (meta.state.hasOwnProperty(attrName)) {
6111
- // @ts-expect-error
6101
+ else if (meta.state[attrName] !== undefined) {
6102
+ // @ts-expect-error ignore
6112
6103
  v = meta.state[attrName];
6113
6104
  }
6114
6105
  switch (attrName) {
@@ -6168,11 +6159,11 @@ const toZigbee2 = {
6168
6159
  // temperature
6169
6160
  const attrName = `${key}_temp_${i}`;
6170
6161
  let v = 17;
6171
- if (value.hasOwnProperty(attrName)) {
6162
+ if (value[attrName] !== undefined) {
6172
6163
  v = value[attrName];
6173
6164
  }
6174
- else if (meta.state.hasOwnProperty(attrName)) {
6175
- // @ts-expect-error
6165
+ else if (meta.state[attrName] !== undefined) {
6166
+ // @ts-expect-error ignore
6176
6167
  v = meta.state[attrName];
6177
6168
  }
6178
6169
  if (v < 0.5 || v > 29.5)
@@ -6182,21 +6173,21 @@ const toZigbee2 = {
6182
6173
  // hour
6183
6174
  let attrName = `${key}_hour_${i}`;
6184
6175
  let h = 0;
6185
- if (value.hasOwnProperty(attrName)) {
6176
+ if (value[attrName] !== undefined) {
6186
6177
  h = value[attrName];
6187
6178
  }
6188
- else if (meta.state.hasOwnProperty(attrName)) {
6189
- // @ts-expect-error
6179
+ else if (meta.state[attrName] !== undefined) {
6180
+ // @ts-expect-error ignore
6190
6181
  h = meta.state[attrName];
6191
6182
  }
6192
6183
  // minute
6193
6184
  attrName = `${key}_minute_${i}`;
6194
6185
  let m = 0;
6195
- if (value.hasOwnProperty(attrName)) {
6186
+ if (value[attrName] !== undefined) {
6196
6187
  m = value[attrName];
6197
6188
  }
6198
- else if (meta.state.hasOwnProperty(attrName)) {
6199
- // @ts-expect-error
6189
+ else if (meta.state[attrName] !== undefined) {
6190
+ // @ts-expect-error ignore
6200
6191
  m = meta.state[attrName];
6201
6192
  }
6202
6193
  let rt = h * 4 + m / 15;
@@ -6270,8 +6261,8 @@ const toZigbee2 = {
6270
6261
  matsee_garage_door_opener: {
6271
6262
  key: ['trigger'],
6272
6263
  convertSet: async (entity, key, value, meta) => {
6273
- const state = meta.message.hasOwnProperty('trigger') ? meta.message.trigger : true;
6274
- // @ts-expect-error
6264
+ const state = meta.message.trigger !== undefined ? meta.message.trigger : true;
6265
+ // @ts-expect-error ignore
6275
6266
  await sendDataPointBool(entity, dataPoints.garageDoorTrigger, state);
6276
6267
  return { state: { trigger: state } };
6277
6268
  },
@@ -6298,7 +6289,7 @@ const toZigbee2 = {
6298
6289
  await sendDataPointBool(entity, dataPoints.connecteChildLock, value === 'LOCK');
6299
6290
  break;
6300
6291
  case 'local_temperature_calibration':
6301
- // @ts-ignore
6292
+ // @ts-expect-error ignore
6302
6293
  if (value < 0)
6303
6294
  value = 0xffffffff + value + 1;
6304
6295
  await sendDataPointValue(entity, dataPoints.connecteTempCalibration, value);
@@ -6308,7 +6299,7 @@ const toZigbee2 = {
6308
6299
  await sendDataPointValue(entity, dataPoints.connecteHysteresis, value);
6309
6300
  break;
6310
6301
  case 'max_temperature_protection':
6311
- // @ts-ignore
6302
+ // @ts-expect-error ignore
6312
6303
  await sendDataPointValue(entity, dataPoints.connecteMaxProtectTemp, Math.round(value));
6313
6304
  break;
6314
6305
  case 'current_heating_setpoint':
@@ -6316,7 +6307,7 @@ const toZigbee2 = {
6316
6307
  break;
6317
6308
  case 'sensor':
6318
6309
  await sendDataPointEnum(entity, dataPoints.connecteSensorType,
6319
- // @ts-ignore
6310
+ // @ts-expect-error ignore
6320
6311
  { internal: 0, external: 1, both: 2 }[value]);
6321
6312
  break;
6322
6313
  case 'system_mode':
@@ -6456,7 +6447,7 @@ const toZigbee2 = {
6456
6447
  }
6457
6448
  /* Merge modified value into existing state and send all over in one go */
6458
6449
  const newProgram = {
6459
- // @ts-expect-error
6450
+ // @ts-expect-error ignore
6460
6451
  ...meta.state.program,
6461
6452
  ...value,
6462
6453
  };
@@ -6615,12 +6606,12 @@ const toZigbee2 = {
6615
6606
  switch (key) {
6616
6607
  case 'power_on_behavior':
6617
6608
  await sendDataPointEnum(entity, dataPoints.moesSwitchPowerOnBehavior,
6618
- // @ts-expect-error
6609
+ // @ts-expect-error ignore
6619
6610
  utils.getKey(moesSwitch.powerOnBehavior, value));
6620
6611
  break;
6621
6612
  case 'indicate_light':
6622
6613
  await sendDataPointEnum(entity, dataPoints.moesSwitchIndicateLight,
6623
- // @ts-expect-error
6614
+ // @ts-expect-error ignore
6624
6615
  utils.getKey(moesSwitch.indicateLight, value));
6625
6616
  break;
6626
6617
  default:
@@ -6779,7 +6770,7 @@ const toZigbee2 = {
6779
6770
  return ret;
6780
6771
  }
6781
6772
  else {
6782
- if ((meta.state.hasOwnProperty(key) && meta.state[key] == '') || !meta.state.hasOwnProperty(key)) {
6773
+ if ((meta.state[key] !== undefined && meta.state[key] == '') || meta.state[key] === undefined) {
6783
6774
  data.push(0x03);
6784
6775
  }
6785
6776
  else {
@@ -6835,7 +6826,7 @@ const toZigbee2 = {
6835
6826
  return ret;
6836
6827
  }
6837
6828
  else {
6838
- if ((meta.state.hasOwnProperty(key) && meta.state[key] == '') || !meta.state.hasOwnProperty(key)) {
6829
+ if ((meta.state[key] !== undefined && meta.state[key] == '') || meta.state[key] === undefined) {
6839
6830
  data.push(0x03);
6840
6831
  }
6841
6832
  else {
@@ -6912,15 +6903,14 @@ const toZigbee2 = {
6912
6903
  key: ['weekly_schedule'],
6913
6904
  convertSet: async (entity, key, value, meta) => {
6914
6905
  const thermostatMeta = utils.getMetaValue(entity, meta.mapped, 'thermostat');
6915
- // @ts-expect-error
6906
+ // @ts-expect-error ignore
6916
6907
  const maxTransitions = thermostatMeta.weeklyScheduleMaxTransitions;
6917
- // @ts-expect-error
6908
+ // @ts-expect-error ignore
6918
6909
  const supportedModes = thermostatMeta.weeklyScheduleSupportedModes;
6919
- // @ts-expect-error
6910
+ // @ts-expect-error ignore
6920
6911
  const firstDayDpId = thermostatMeta.weeklyScheduleFirstDayDpId;
6921
6912
  let conversion = 'generic';
6922
- if (thermostatMeta.hasOwnProperty('weeklyScheduleConversion')) {
6923
- // @ts-expect-error
6913
+ if (utils.isObject(thermostatMeta) && thermostatMeta.weeklyScheduleConversion !== undefined) {
6924
6914
  conversion = thermostatMeta.weeklyScheduleConversion;
6925
6915
  }
6926
6916
  function transitionToData(transition) {
@@ -7018,7 +7008,7 @@ const toZigbee2 = {
7018
7008
  convertSet: async (entity, key, value, meta) => {
7019
7009
  const modeId = utils.getKey(utils.getMetaValue(entity, meta.mapped, 'tuyaThermostatSystemMode'), value, null, Number);
7020
7010
  if (modeId !== null) {
7021
- // @ts-expect-error
7011
+ // @ts-expect-error ignore
7022
7012
  await sendDataPointEnum(entity, dataPoints.mode, parseInt(modeId));
7023
7013
  }
7024
7014
  else {
@@ -7031,7 +7021,7 @@ const toZigbee2 = {
7031
7021
  convertSet: async (entity, key, value, meta) => {
7032
7022
  const presetId = utils.getKey(utils.getMetaValue(entity, meta.mapped, 'tuyaThermostatPreset'), value, null, Number);
7033
7023
  if (presetId !== null) {
7034
- // @ts-expect-error
7024
+ // @ts-expect-error ignore
7035
7025
  await sendDataPointEnum(entity, dataPoints.mode, parseInt(presetId));
7036
7026
  }
7037
7027
  else {
@@ -7043,10 +7033,10 @@ const toZigbee2 = {
7043
7033
  key: ['away_mode'],
7044
7034
  convertSet: async (entity, key, value, meta) => {
7045
7035
  // HA has special behavior for the away mode
7046
- // @ts-expect-error
7036
+ // @ts-expect-error ignore
7047
7037
  const awayPresetId = utils.getKey(utils.getMetaValue(entity, meta.mapped, 'tuyaThermostatPreset'), 'away', null, Number);
7048
7038
  const schedulePresetId = utils.getKey(utils.getMetaValue(entity, meta.mapped, 'tuyaThermostatPreset'), 'schedule', null,
7049
- // @ts-expect-error
7039
+ // @ts-expect-error ignore
7050
7040
  Number);
7051
7041
  if (awayPresetId !== null) {
7052
7042
  if (value == 'ON') {
@@ -7067,7 +7057,7 @@ const toZigbee2 = {
7067
7057
  convertSet: async (entity, key, value, meta) => {
7068
7058
  const modeId = utils.getKey(fanModes, value, null, Number);
7069
7059
  if (modeId !== null) {
7070
- // @ts-expect-error
7060
+ // @ts-expect-error ignore
7071
7061
  await sendDataPointEnum(entity, dataPoints.fanMode, parseInt(modeId));
7072
7062
  }
7073
7063
  else {
@@ -7080,7 +7070,7 @@ const toZigbee2 = {
7080
7070
  convertSet: async (entity, key, value, meta) => {
7081
7071
  const modeId = utils.getKey(fanModes, value, null, Number);
7082
7072
  if (modeId !== null) {
7083
- // @ts-expect-error
7073
+ // @ts-expect-error ignore
7084
7074
  await sendDataPointEnum(entity, dataPoints.bacFanMode, parseInt(modeId));
7085
7075
  }
7086
7076
  else {
@@ -7139,7 +7129,7 @@ const toZigbee2 = {
7139
7129
  convertSet: async (entity, key, value, meta) => {
7140
7130
  const modeId = utils.getKey(thermostatForceMode, value, null, Number);
7141
7131
  if (modeId !== null) {
7142
- // @ts-expect-error
7132
+ // @ts-expect-error ignore
7143
7133
  await sendDataPointEnum(entity, dataPoints.forceMode, parseInt(modeId));
7144
7134
  }
7145
7135
  else {
@@ -7152,7 +7142,7 @@ const toZigbee2 = {
7152
7142
  convertSet: async (entity, key, value, meta) => {
7153
7143
  const modeId = utils.getKey(utils.getMetaValue(entity, meta.mapped, 'tuyaThermostatSystemMode'), value, null, Number);
7154
7144
  if (modeId !== null) {
7155
- // @ts-expect-error
7145
+ // @ts-expect-error ignore
7156
7146
  await sendDataPointEnum(entity, dataPoints.forceMode, parseInt(modeId));
7157
7147
  }
7158
7148
  else {
@@ -7311,7 +7301,7 @@ const toZigbee2 = {
7311
7301
  break;
7312
7302
  case 'volume':
7313
7303
  await sendDataPointEnum(entity, dataPoints.neoVolume,
7314
- // @ts-ignore
7304
+ // @ts-expect-error ignore
7315
7305
  { low: 2, medium: 1, high: 0 }[value]);
7316
7306
  break;
7317
7307
  case 'duration':
@@ -7352,7 +7342,7 @@ const toZigbee2 = {
7352
7342
  break;
7353
7343
  case 'volume':
7354
7344
  await sendDataPointEnum(entity, dataPoints.neoAOVolume,
7355
- // @ts-ignore
7345
+ // @ts-expect-error ignore
7356
7346
  { low: 0, medium: 1, high: 2 }[value]);
7357
7347
  break;
7358
7348
  case 'duration':
@@ -7524,9 +7514,9 @@ const toZigbee2 = {
7524
7514
  }
7525
7515
  data = data.concat(convertStringToHexArray(speedString));
7526
7516
  let colors = value.colors;
7527
- // @ts-expect-error
7517
+ // @ts-expect-error ignore
7528
7518
  if (!colors && meta.state && meta.state.effect && meta.state.effect.colors) {
7529
- // @ts-expect-error
7519
+ // @ts-expect-error ignore
7530
7520
  colors = meta.state.effect.colors;
7531
7521
  }
7532
7522
  if (colors) {
@@ -7620,7 +7610,7 @@ const toZigbee2 = {
7620
7610
  return hsb;
7621
7611
  };
7622
7612
  let hsb = {};
7623
- if (value.hasOwnProperty('hsb')) {
7613
+ if (value.hsb !== undefined) {
7624
7614
  const split = value.hsb.split(',').map((i) => parseInt(i));
7625
7615
  hsb = fillInHSB(split[0], split[1], split[2], meta.state);
7626
7616
  }
@@ -7739,12 +7729,12 @@ const toZigbee2 = {
7739
7729
  break;
7740
7730
  case 'sensor_type':
7741
7731
  await sendDataPointEnum(entity, dataPoints.hySensor,
7742
- // @ts-ignore
7732
+ // @ts-expect-error ignore
7743
7733
  { internal: 0, external: 1, both: 2 }[value]);
7744
7734
  break;
7745
7735
  case 'power_on_behavior':
7746
7736
  await sendDataPointEnum(entity, dataPoints.hyPowerOnBehavior,
7747
- // @ts-ignore
7737
+ // @ts-expect-error ignore
7748
7738
  { restore: 0, off: 1, on: 2 }[value]);
7749
7739
  break;
7750
7740
  case 'week':
@@ -7752,7 +7742,7 @@ const toZigbee2 = {
7752
7742
  break;
7753
7743
  case 'system_mode':
7754
7744
  await sendDataPointEnum(entity, dataPoints.hyMode,
7755
- // @ts-ignore
7745
+ // @ts-expect-error ignore
7756
7746
  { manual: 0, auto: 1, away: 2 }[value]);
7757
7747
  break;
7758
7748
  default: // Unknown key
@@ -7803,11 +7793,11 @@ const toZigbee2 = {
7803
7793
  await sendDataPointBool(entity, dataPoints.fantemReportingEnable, value, 'sendData');
7804
7794
  break;
7805
7795
  case 'sensitivity':
7806
- // @ts-ignore
7796
+ // @ts-expect-error ignore
7807
7797
  await entity.write('ssIasZone', { currentZoneSensitivityLevel: { low: 0, medium: 1, high: 2 }[value] });
7808
7798
  break;
7809
7799
  case 'keep_time':
7810
- // @ts-ignore
7800
+ // @ts-expect-error ignore
7811
7801
  await entity.write('ssIasZone', { 61441: { value: { '0': 0, '30': 1, '60': 2, '120': 3, '240': 4, '480': 5 }[value], type: 0x20 } });
7812
7802
  break;
7813
7803
  default: // Unknown key
@@ -7821,16 +7811,16 @@ const toZigbee2 = {
7821
7811
  switch (key) {
7822
7812
  case 'switch_type':
7823
7813
  await sendDataPointEnum(entity, dataPoints.fantemExtSwitchType,
7824
- // @ts-expect-error
7814
+ // @ts-expect-error ignore
7825
7815
  { unknown: 0, toggle: 1, momentary: 2, rotary: 3, auto_config: 4 }[value], 'sendData');
7826
7816
  break;
7827
7817
  case 'load_detection_mode':
7828
7818
  await sendDataPointEnum(entity, dataPoints.fantemLoadDetectionMode,
7829
- // @ts-expect-error
7819
+ // @ts-expect-error ignore
7830
7820
  { none: 0, first_power_on: 1, every_power_on: 2 }[value], 'sendData');
7831
7821
  break;
7832
7822
  case 'control_mode':
7833
- // @ts-expect-error
7823
+ // @ts-expect-error ignore
7834
7824
  await sendDataPointEnum(entity, dataPoints.fantemControlMode, { ext_switch: 0, remote: 1, both: 2 }[value], 'sendData');
7835
7825
  break;
7836
7826
  default: // Unknown key
@@ -7849,7 +7839,7 @@ const toZigbee2 = {
7849
7839
  await sendDataPointEnum(entity, dataPoints.msVSensitivity, utils.getKey(msLookups.VSensitivity, value));
7850
7840
  break;
7851
7841
  case 'led_status':
7852
- // @ts-ignore
7842
+ // @ts-expect-error ignore
7853
7843
  await sendDataPointEnum(entity, dataPoints.msLedStatus, { on: 0, off: 1 }[value.toLowerCase()]);
7854
7844
  break;
7855
7845
  case 'vacancy_delay':
@@ -8027,7 +8017,7 @@ const toZigbee2 = {
8027
8017
  cool: 250,
8028
8018
  coolest: colorTempMin,
8029
8019
  };
8030
- // @ts-ignore
8020
+ // @ts-expect-error ignore
8031
8021
  if (typeof value === 'string' && isNaN(value)) {
8032
8022
  const presetName = value.toLowerCase();
8033
8023
  if (presetName in preset) {
@@ -8198,11 +8188,11 @@ const toZigbee2 = {
8198
8188
  convertSet: async (entity, key, value, meta) => {
8199
8189
  switch (key) {
8200
8190
  case 'sensitivity':
8201
- // @ts-ignore
8191
+ // @ts-expect-error ignore
8202
8192
  await sendDataPointEnum(entity, dataPoints.lmsSensitivity, { low: 0, medium: 1, high: 2 }[value]);
8203
8193
  break;
8204
8194
  case 'keep_time':
8205
- // @ts-ignore
8195
+ // @ts-expect-error ignore
8206
8196
  await sendDataPointEnum(entity, dataPoints.lmsKeepTime, { '10': 0, '30': 1, '60': 2, '120': 3 }[value]);
8207
8197
  break;
8208
8198
  default: // Unknown key
@@ -8236,7 +8226,7 @@ const toZigbee2 = {
8236
8226
  }
8237
8227
  break;
8238
8228
  case 'state': {
8239
- // @ts-ignore
8229
+ // @ts-expect-error ignore
8240
8230
  const state = { OPEN: 0, STOP: 1, CLOSE: 2 }[value.toUpperCase()];
8241
8231
  await sendDataPointEnum(entity, dataPoints.state, state);
8242
8232
  break;