zigbee-herdsman-converters 21.9.0 → 21.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1394) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/converters/fromZigbee.d.ts +2036 -0
  3. package/converters/fromZigbee.d.ts.map +1 -0
  4. package/converters/fromZigbee.js +5343 -0
  5. package/converters/fromZigbee.js.map +1 -0
  6. package/converters/toZigbee.d.ts +1578 -0
  7. package/converters/toZigbee.d.ts.map +1 -0
  8. package/converters/toZigbee.js +4422 -0
  9. package/converters/toZigbee.js.map +1 -0
  10. package/devices/ITCommander.d.ts +4 -0
  11. package/devices/ITCommander.d.ts.map +1 -0
  12. package/devices/ITCommander.js +77 -0
  13. package/devices/ITCommander.js.map +1 -0
  14. package/devices/acova.d.ts +4 -0
  15. package/devices/acova.d.ts.map +1 -0
  16. package/devices/acova.js +127 -0
  17. package/devices/acova.js.map +1 -0
  18. package/devices/acuity_brands_lighting.d.ts +4 -0
  19. package/devices/acuity_brands_lighting.d.ts.map +1 -0
  20. package/devices/acuity_brands_lighting.js +29 -0
  21. package/devices/acuity_brands_lighting.js.map +1 -0
  22. package/devices/adeo.d.ts +4 -0
  23. package/devices/adeo.d.ts.map +1 -0
  24. package/devices/adeo.js +486 -0
  25. package/devices/adeo.js.map +1 -0
  26. package/devices/adurosmart.d.ts +4 -0
  27. package/devices/adurosmart.d.ts.map +1 -0
  28. package/devices/adurosmart.js +183 -0
  29. package/devices/adurosmart.js.map +1 -0
  30. package/devices/aeotec.d.ts +4 -0
  31. package/devices/aeotec.d.ts.map +1 -0
  32. package/devices/aeotec.js +66 -0
  33. package/devices/aeotec.js.map +1 -0
  34. package/devices/airam.d.ts +4 -0
  35. package/devices/airam.d.ts.map +1 -0
  36. package/devices/airam.js +106 -0
  37. package/devices/airam.js.map +1 -0
  38. package/devices/airzone_aidoo.d.ts +4 -0
  39. package/devices/airzone_aidoo.d.ts.map +1 -0
  40. package/devices/airzone_aidoo.js +81 -0
  41. package/devices/airzone_aidoo.js.map +1 -0
  42. package/devices/ajax_online.d.ts +4 -0
  43. package/devices/ajax_online.d.ts.map +1 -0
  44. package/devices/ajax_online.js +84 -0
  45. package/devices/ajax_online.js.map +1 -0
  46. package/devices/akuvox.d.ts +4 -0
  47. package/devices/akuvox.d.ts.map +1 -0
  48. package/devices/akuvox.js +68 -0
  49. package/devices/akuvox.js.map +1 -0
  50. package/devices/alchemy.d.ts +4 -0
  51. package/devices/alchemy.d.ts.map +1 -0
  52. package/devices/alchemy.js +22 -0
  53. package/devices/alchemy.js.map +1 -0
  54. package/devices/aldi.d.ts +4 -0
  55. package/devices/aldi.d.ts.map +1 -0
  56. package/devices/aldi.js +57 -0
  57. package/devices/aldi.js.map +1 -0
  58. package/devices/alecto.d.ts +4 -0
  59. package/devices/alecto.d.ts.map +1 -0
  60. package/devices/alecto.js +101 -0
  61. package/devices/alecto.js.map +1 -0
  62. package/devices/amina.d.ts +4 -0
  63. package/devices/amina.d.ts.map +1 -0
  64. package/devices/amina.js +370 -0
  65. package/devices/amina.js.map +1 -0
  66. package/devices/anchor.d.ts +4 -0
  67. package/devices/anchor.d.ts.map +1 -0
  68. package/devices/anchor.js +15 -0
  69. package/devices/anchor.js.map +1 -0
  70. package/devices/atlantic.d.ts +4 -0
  71. package/devices/atlantic.d.ts.map +1 -0
  72. package/devices/atlantic.js +146 -0
  73. package/devices/atlantic.js.map +1 -0
  74. package/devices/atsmart.d.ts +4 -0
  75. package/devices/atsmart.d.ts.map +1 -0
  76. package/devices/atsmart.js +15 -0
  77. package/devices/atsmart.js.map +1 -0
  78. package/devices/aubess.d.ts +4 -0
  79. package/devices/aubess.d.ts.map +1 -0
  80. package/devices/aubess.js +60 -0
  81. package/devices/aubess.js.map +1 -0
  82. package/devices/aurora_lighting.d.ts +4 -0
  83. package/devices/aurora_lighting.d.ts.map +1 -0
  84. package/devices/aurora_lighting.js +338 -0
  85. package/devices/aurora_lighting.js.map +1 -0
  86. package/devices/automaton.d.ts +4 -0
  87. package/devices/automaton.d.ts.map +1 -0
  88. package/devices/automaton.js +65 -0
  89. package/devices/automaton.js.map +1 -0
  90. package/devices/avatto.d.ts +4 -0
  91. package/devices/avatto.d.ts.map +1 -0
  92. package/devices/avatto.js +67 -0
  93. package/devices/avatto.js.map +1 -0
  94. package/devices/awox.d.ts +4 -0
  95. package/devices/awox.d.ts.map +1 -0
  96. package/devices/awox.js +240 -0
  97. package/devices/awox.js.map +1 -0
  98. package/devices/axis.d.ts +4 -0
  99. package/devices/axis.d.ts.map +1 -0
  100. package/devices/axis.js +63 -0
  101. package/devices/axis.js.map +1 -0
  102. package/devices/bankamp.d.ts +4 -0
  103. package/devices/bankamp.d.ts.map +1 -0
  104. package/devices/bankamp.js +15 -0
  105. package/devices/bankamp.js.map +1 -0
  106. package/devices/bega.d.ts +4 -0
  107. package/devices/bega.d.ts.map +1 -0
  108. package/devices/bega.js +29 -0
  109. package/devices/bega.js.map +1 -0
  110. package/devices/belkin.d.ts +4 -0
  111. package/devices/belkin.d.ts.map +1 -0
  112. package/devices/belkin.js +15 -0
  113. package/devices/belkin.js.map +1 -0
  114. package/devices/bitron.d.ts +4 -0
  115. package/devices/bitron.d.ts.map +1 -0
  116. package/devices/bitron.js +359 -0
  117. package/devices/bitron.js.map +1 -0
  118. package/devices/bituo_technik.d.ts +4 -0
  119. package/devices/bituo_technik.d.ts.map +1 -0
  120. package/devices/bituo_technik.js +121 -0
  121. package/devices/bituo_technik.js.map +1 -0
  122. package/devices/blaupunkt.d.ts +4 -0
  123. package/devices/blaupunkt.d.ts.map +1 -0
  124. package/devices/blaupunkt.js +68 -0
  125. package/devices/blaupunkt.js.map +1 -0
  126. package/devices/blitzwolf.d.ts +4 -0
  127. package/devices/blitzwolf.d.ts.map +1 -0
  128. package/devices/blitzwolf.js +73 -0
  129. package/devices/blitzwolf.js.map +1 -0
  130. package/devices/bosch.d.ts +4 -0
  131. package/devices/bosch.d.ts.map +1 -0
  132. package/devices/bosch.js +2048 -0
  133. package/devices/bosch.js.map +1 -0
  134. package/devices/bouffalo_lab.d.ts +4 -0
  135. package/devices/bouffalo_lab.d.ts.map +1 -0
  136. package/devices/bouffalo_lab.js +15 -0
  137. package/devices/bouffalo_lab.js.map +1 -0
  138. package/devices/brimate.d.ts +4 -0
  139. package/devices/brimate.d.ts.map +1 -0
  140. package/devices/brimate.js +55 -0
  141. package/devices/brimate.js.map +1 -0
  142. package/devices/bseed.d.ts +4 -0
  143. package/devices/bseed.d.ts.map +1 -0
  144. package/devices/bseed.js +57 -0
  145. package/devices/bseed.js.map +1 -0
  146. package/devices/bticino.d.ts +4 -0
  147. package/devices/bticino.d.ts.map +1 -0
  148. package/devices/bticino.js +113 -0
  149. package/devices/bticino.js.map +1 -0
  150. package/devices/busch_jaeger.d.ts +4 -0
  151. package/devices/busch_jaeger.d.ts.map +1 -0
  152. package/devices/busch_jaeger.js +186 -0
  153. package/devices/busch_jaeger.js.map +1 -0
  154. package/devices/byun.d.ts +4 -0
  155. package/devices/byun.d.ts.map +1 -0
  156. package/devices/byun.js +64 -0
  157. package/devices/byun.js.map +1 -0
  158. package/devices/calex.d.ts +4 -0
  159. package/devices/calex.d.ts.map +1 -0
  160. package/devices/calex.js +91 -0
  161. package/devices/calex.js.map +1 -0
  162. package/devices/candeo.d.ts +4 -0
  163. package/devices/candeo.d.ts.map +1 -0
  164. package/devices/candeo.js +185 -0
  165. package/devices/candeo.js.map +1 -0
  166. package/devices/casaia.d.ts +4 -0
  167. package/devices/casaia.d.ts.map +1 -0
  168. package/devices/casaia.js +99 -0
  169. package/devices/casaia.js.map +1 -0
  170. package/devices/cel.d.ts +4 -0
  171. package/devices/cel.d.ts.map +1 -0
  172. package/devices/cel.js +20 -0
  173. package/devices/cel.js.map +1 -0
  174. package/devices/centralite.d.ts +4 -0
  175. package/devices/centralite.d.ts.map +1 -0
  176. package/devices/centralite.js +444 -0
  177. package/devices/centralite.js.map +1 -0
  178. package/devices/chacon.d.ts +4 -0
  179. package/devices/chacon.d.ts.map +1 -0
  180. package/devices/chacon.js +18 -0
  181. package/devices/chacon.js.map +1 -0
  182. package/devices/cleode.d.ts +4 -0
  183. package/devices/cleode.d.ts.map +1 -0
  184. package/devices/cleode.js +15 -0
  185. package/devices/cleode.js.map +1 -0
  186. package/devices/cleverio.d.ts +4 -0
  187. package/devices/cleverio.d.ts.map +1 -0
  188. package/devices/cleverio.js +77 -0
  189. package/devices/cleverio.js.map +1 -0
  190. package/devices/climax.d.ts +4 -0
  191. package/devices/climax.d.ts.map +1 -0
  192. package/devices/climax.js +181 -0
  193. package/devices/climax.js.map +1 -0
  194. package/devices/commercial_electric.d.ts +4 -0
  195. package/devices/commercial_electric.d.ts.map +1 -0
  196. package/devices/commercial_electric.js +15 -0
  197. package/devices/commercial_electric.js.map +1 -0
  198. package/devices/cree.d.ts +4 -0
  199. package/devices/cree.d.ts.map +1 -0
  200. package/devices/cree.js +15 -0
  201. package/devices/cree.js.map +1 -0
  202. package/devices/ctm.d.ts +4 -0
  203. package/devices/ctm.d.ts.map +1 -0
  204. package/devices/ctm.js +1383 -0
  205. package/devices/ctm.js.map +1 -0
  206. package/devices/current_products_corp.d.ts +4 -0
  207. package/devices/current_products_corp.d.ts.map +1 -0
  208. package/devices/current_products_corp.js +64 -0
  209. package/devices/current_products_corp.js.map +1 -0
  210. package/devices/custom_devices_diy.d.ts +4 -0
  211. package/devices/custom_devices_diy.d.ts.map +1 -0
  212. package/devices/custom_devices_diy.js +1206 -0
  213. package/devices/custom_devices_diy.js.map +1 -0
  214. package/devices/cy_lighting.d.ts +4 -0
  215. package/devices/cy_lighting.d.ts.map +1 -0
  216. package/devices/cy_lighting.js +15 -0
  217. package/devices/cy_lighting.js.map +1 -0
  218. package/devices/danalock.d.ts +4 -0
  219. package/devices/danalock.d.ts.map +1 -0
  220. package/devices/danalock.js +65 -0
  221. package/devices/danalock.js.map +1 -0
  222. package/devices/danfoss.d.ts +4 -0
  223. package/devices/danfoss.d.ts.map +1 -0
  224. package/devices/danfoss.js +743 -0
  225. package/devices/danfoss.js.map +1 -0
  226. package/devices/databyte.d.ts +4 -0
  227. package/devices/databyte.d.ts.map +1 -0
  228. package/devices/databyte.js +95 -0
  229. package/devices/databyte.js.map +1 -0
  230. package/devices/datek.d.ts +4 -0
  231. package/devices/datek.d.ts.map +1 -0
  232. package/devices/datek.js +298 -0
  233. package/devices/datek.js.map +1 -0
  234. package/devices/dawon_dns.d.ts +4 -0
  235. package/devices/dawon_dns.d.ts.map +1 -0
  236. package/devices/dawon_dns.js +318 -0
  237. package/devices/dawon_dns.js.map +1 -0
  238. package/devices/develco.d.ts +4 -0
  239. package/devices/develco.d.ts.map +1 -0
  240. package/devices/develco.js +1037 -0
  241. package/devices/develco.js.map +1 -0
  242. package/devices/digi.d.ts +4 -0
  243. package/devices/digi.d.ts.map +1 -0
  244. package/devices/digi.js +25 -0
  245. package/devices/digi.js.map +1 -0
  246. package/devices/diyruz.d.ts +4 -0
  247. package/devices/diyruz.d.ts.map +1 -0
  248. package/devices/diyruz.js +403 -0
  249. package/devices/diyruz.js.map +1 -0
  250. package/devices/dlink.d.ts +4 -0
  251. package/devices/dlink.d.ts.map +1 -0
  252. package/devices/dlink.js +76 -0
  253. package/devices/dlink.js.map +1 -0
  254. package/devices/dnake.d.ts +4 -0
  255. package/devices/dnake.d.ts.map +1 -0
  256. package/devices/dnake.js +15 -0
  257. package/devices/dnake.js.map +1 -0
  258. package/devices/dowsing_reynolds.d.ts +4 -0
  259. package/devices/dowsing_reynolds.d.ts.map +1 -0
  260. package/devices/dowsing_reynolds.js +15 -0
  261. package/devices/dowsing_reynolds.js.map +1 -0
  262. package/devices/dresden_elektronik.d.ts +4 -0
  263. package/devices/dresden_elektronik.d.ts.map +1 -0
  264. package/devices/dresden_elektronik.js +50 -0
  265. package/devices/dresden_elektronik.js.map +1 -0
  266. package/devices/easyaccess.d.ts +4 -0
  267. package/devices/easyaccess.d.ts.map +1 -0
  268. package/devices/easyaccess.js +71 -0
  269. package/devices/easyaccess.js.map +1 -0
  270. package/devices/easyiot.d.ts +4 -0
  271. package/devices/easyiot.d.ts.map +1 -0
  272. package/devices/easyiot.js +358 -0
  273. package/devices/easyiot.js.map +1 -0
  274. package/devices/eatonhalo_led.d.ts +4 -0
  275. package/devices/eatonhalo_led.d.ts.map +1 -0
  276. package/devices/eatonhalo_led.js +15 -0
  277. package/devices/eatonhalo_led.js.map +1 -0
  278. package/devices/echostar.d.ts +4 -0
  279. package/devices/echostar.d.ts.map +1 -0
  280. package/devices/echostar.js +65 -0
  281. package/devices/echostar.js.map +1 -0
  282. package/devices/ecodim.d.ts +4 -0
  283. package/devices/ecodim.d.ts.map +1 -0
  284. package/devices/ecodim.js +270 -0
  285. package/devices/ecodim.js.map +1 -0
  286. package/devices/ecolink.d.ts +4 -0
  287. package/devices/ecolink.d.ts.map +1 -0
  288. package/devices/ecolink.js +61 -0
  289. package/devices/ecolink.js.map +1 -0
  290. package/devices/ecosmart.d.ts +4 -0
  291. package/devices/ecosmart.d.ts.map +1 -0
  292. package/devices/ecosmart.js +83 -0
  293. package/devices/ecosmart.js.map +1 -0
  294. package/devices/ecozy.d.ts +4 -0
  295. package/devices/ecozy.d.ts.map +1 -0
  296. package/devices/ecozy.js +89 -0
  297. package/devices/ecozy.js.map +1 -0
  298. package/devices/edp.d.ts +4 -0
  299. package/devices/edp.d.ts.map +1 -0
  300. package/devices/edp.js +74 -0
  301. package/devices/edp.js.map +1 -0
  302. package/devices/efekta.d.ts +4 -0
  303. package/devices/efekta.d.ts.map +1 -0
  304. package/devices/efekta.js +754 -0
  305. package/devices/efekta.js.map +1 -0
  306. package/devices/eglo.d.ts +4 -0
  307. package/devices/eglo.d.ts.map +1 -0
  308. package/devices/eglo.js +132 -0
  309. package/devices/eglo.js.map +1 -0
  310. package/devices/elko.d.ts +4 -0
  311. package/devices/elko.d.ts.map +1 -0
  312. package/devices/elko.js +240 -0
  313. package/devices/elko.js.map +1 -0
  314. package/devices/enbrighten.d.ts +4 -0
  315. package/devices/enbrighten.d.ts.map +1 -0
  316. package/devices/enbrighten.js +97 -0
  317. package/devices/enbrighten.js.map +1 -0
  318. package/devices/enocean.d.ts +4 -0
  319. package/devices/enocean.d.ts.map +1 -0
  320. package/devices/enocean.js +153 -0
  321. package/devices/enocean.js.map +1 -0
  322. package/devices/envilar.d.ts +4 -0
  323. package/devices/envilar.d.ts.map +1 -0
  324. package/devices/envilar.js +100 -0
  325. package/devices/envilar.js.map +1 -0
  326. package/devices/essentialb.d.ts +4 -0
  327. package/devices/essentialb.d.ts.map +1 -0
  328. package/devices/essentialb.js +137 -0
  329. package/devices/essentialb.js.map +1 -0
  330. package/devices/essentials.d.ts +4 -0
  331. package/devices/essentials.d.ts.map +1 -0
  332. package/devices/essentials.js +151 -0
  333. package/devices/essentials.js.map +1 -0
  334. package/devices/eucontrols.d.ts +4 -0
  335. package/devices/eucontrols.d.ts.map +1 -0
  336. package/devices/eucontrols.js +15 -0
  337. package/devices/eucontrols.js.map +1 -0
  338. package/devices/eurotronic.d.ts +4 -0
  339. package/devices/eurotronic.d.ts.map +1 -0
  340. package/devices/eurotronic.js +128 -0
  341. package/devices/eurotronic.js.map +1 -0
  342. package/devices/evanell.d.ts +4 -0
  343. package/devices/evanell.d.ts.map +1 -0
  344. package/devices/evanell.js +75 -0
  345. package/devices/evanell.js.map +1 -0
  346. package/devices/evn.d.ts +4 -0
  347. package/devices/evn.d.ts.map +1 -0
  348. package/devices/evn.js +94 -0
  349. package/devices/evn.js.map +1 -0
  350. package/devices/evology.d.ts +4 -0
  351. package/devices/evology.d.ts.map +1 -0
  352. package/devices/evology.js +64 -0
  353. package/devices/evology.js.map +1 -0
  354. package/devices/evvr.d.ts +4 -0
  355. package/devices/evvr.d.ts.map +1 -0
  356. package/devices/evvr.js +15 -0
  357. package/devices/evvr.js.map +1 -0
  358. package/devices/ewelink.d.ts +4 -0
  359. package/devices/ewelink.d.ts.map +1 -0
  360. package/devices/ewelink.js +343 -0
  361. package/devices/ewelink.js.map +1 -0
  362. package/devices/ezex.d.ts +4 -0
  363. package/devices/ezex.d.ts.map +1 -0
  364. package/devices/ezex.js +15 -0
  365. package/devices/ezex.js.map +1 -0
  366. package/devices/fantem.d.ts +4 -0
  367. package/devices/fantem.d.ts.map +1 -0
  368. package/devices/fantem.js +118 -0
  369. package/devices/fantem.js.map +1 -0
  370. package/devices/feibit.d.ts +4 -0
  371. package/devices/feibit.d.ts.map +1 -0
  372. package/devices/feibit.js +334 -0
  373. package/devices/feibit.js.map +1 -0
  374. package/devices/fireangel.d.ts +4 -0
  375. package/devices/fireangel.d.ts.map +1 -0
  376. package/devices/fireangel.js +55 -0
  377. package/devices/fireangel.js.map +1 -0
  378. package/devices/frankever.d.ts +4 -0
  379. package/devices/frankever.d.ts.map +1 -0
  380. package/devices/frankever.js +71 -0
  381. package/devices/frankever.js.map +1 -0
  382. package/devices/frient.d.ts +4 -0
  383. package/devices/frient.d.ts.map +1 -0
  384. package/devices/frient.js +42 -0
  385. package/devices/frient.js.map +1 -0
  386. package/devices/futurehome.d.ts +4 -0
  387. package/devices/futurehome.d.ts.map +1 -0
  388. package/devices/futurehome.js +124 -0
  389. package/devices/futurehome.js.map +1 -0
  390. package/devices/ge.d.ts +4 -0
  391. package/devices/ge.d.ts.map +1 -0
  392. package/devices/ge.js +134 -0
  393. package/devices/ge.js.map +1 -0
  394. package/devices/gewiss.d.ts +4 -0
  395. package/devices/gewiss.d.ts.map +1 -0
  396. package/devices/gewiss.js +78 -0
  397. package/devices/gewiss.js.map +1 -0
  398. package/devices/gidealed.d.ts +4 -0
  399. package/devices/gidealed.d.ts.map +1 -0
  400. package/devices/gidealed.js +15 -0
  401. package/devices/gidealed.js.map +1 -0
  402. package/devices/giderwel.d.ts +4 -0
  403. package/devices/giderwel.d.ts.map +1 -0
  404. package/devices/giderwel.js +15 -0
  405. package/devices/giderwel.js.map +1 -0
  406. package/devices/giex.d.ts +4 -0
  407. package/devices/giex.d.ts.map +1 -0
  408. package/devices/giex.js +121 -0
  409. package/devices/giex.js.map +1 -0
  410. package/devices/girier.d.ts +4 -0
  411. package/devices/girier.d.ts.map +1 -0
  412. package/devices/girier.js +56 -0
  413. package/devices/girier.js.map +1 -0
  414. package/devices/gledopto.d.ts +4 -0
  415. package/devices/gledopto.d.ts.map +1 -0
  416. package/devices/gledopto.js +1046 -0
  417. package/devices/gledopto.js.map +1 -0
  418. package/devices/gmmts.d.ts +4 -0
  419. package/devices/gmmts.d.ts.map +1 -0
  420. package/devices/gmmts.js +2287 -0
  421. package/devices/gmmts.js.map +1 -0
  422. package/devices/gmy.d.ts +4 -0
  423. package/devices/gmy.d.ts.map +1 -0
  424. package/devices/gmy.js +15 -0
  425. package/devices/gmy.js.map +1 -0
  426. package/devices/gs.d.ts +4 -0
  427. package/devices/gs.d.ts.map +1 -0
  428. package/devices/gs.js +89 -0
  429. package/devices/gs.js.map +1 -0
  430. package/devices/gumax.d.ts +4 -0
  431. package/devices/gumax.d.ts.map +1 -0
  432. package/devices/gumax.js +15 -0
  433. package/devices/gumax.js.map +1 -0
  434. package/devices/halemeier.d.ts +4 -0
  435. package/devices/halemeier.d.ts.map +1 -0
  436. package/devices/halemeier.js +129 -0
  437. package/devices/halemeier.js.map +1 -0
  438. package/devices/hampton_bay.d.ts +4 -0
  439. package/devices/hampton_bay.d.ts.map +1 -0
  440. package/devices/hampton_bay.js +72 -0
  441. package/devices/hampton_bay.js.map +1 -0
  442. package/devices/heatit.d.ts +4 -0
  443. package/devices/heatit.d.ts.map +1 -0
  444. package/devices/heatit.js +15 -0
  445. package/devices/heatit.js.map +1 -0
  446. package/devices/heiman.d.ts +4 -0
  447. package/devices/heiman.d.ts.map +1 -0
  448. package/devices/heiman.js +807 -0
  449. package/devices/heiman.js.map +1 -0
  450. package/devices/heimgard_technologies.d.ts +4 -0
  451. package/devices/heimgard_technologies.d.ts.map +1 -0
  452. package/devices/heimgard_technologies.js +193 -0
  453. package/devices/heimgard_technologies.js.map +1 -0
  454. package/devices/hej.d.ts +4 -0
  455. package/devices/hej.d.ts.map +1 -0
  456. package/devices/hej.js +73 -0
  457. package/devices/hej.js.map +1 -0
  458. package/devices/hfh.d.ts +4 -0
  459. package/devices/hfh.d.ts.map +1 -0
  460. package/devices/hfh.js +15 -0
  461. package/devices/hfh.js.map +1 -0
  462. package/devices/hilux.d.ts +4 -0
  463. package/devices/hilux.d.ts.map +1 -0
  464. package/devices/hilux.js +22 -0
  465. package/devices/hilux.js.map +1 -0
  466. package/devices/hive.d.ts +4 -0
  467. package/devices/hive.d.ts.map +1 -0
  468. package/devices/hive.js +766 -0
  469. package/devices/hive.js.map +1 -0
  470. package/devices/hommyn.d.ts +4 -0
  471. package/devices/hommyn.d.ts.map +1 -0
  472. package/devices/hommyn.js +64 -0
  473. package/devices/hommyn.js.map +1 -0
  474. package/devices/honyar.d.ts +4 -0
  475. package/devices/honyar.d.ts.map +1 -0
  476. package/devices/honyar.js +171 -0
  477. package/devices/honyar.js.map +1 -0
  478. package/devices/hornbach.d.ts +4 -0
  479. package/devices/hornbach.d.ts.map +1 -0
  480. package/devices/hornbach.js +99 -0
  481. package/devices/hornbach.js.map +1 -0
  482. package/devices/hzc_electric.d.ts +4 -0
  483. package/devices/hzc_electric.d.ts.map +1 -0
  484. package/devices/hzc_electric.js +94 -0
  485. package/devices/hzc_electric.js.map +1 -0
  486. package/devices/icasa.d.ts +4 -0
  487. package/devices/icasa.d.ts.map +1 -0
  488. package/devices/icasa.js +167 -0
  489. package/devices/icasa.js.map +1 -0
  490. package/devices/idinio.d.ts +4 -0
  491. package/devices/idinio.d.ts.map +1 -0
  492. package/devices/idinio.js +15 -0
  493. package/devices/idinio.js.map +1 -0
  494. package/devices/ihorn.d.ts +4 -0
  495. package/devices/ihorn.d.ts.map +1 -0
  496. package/devices/ihorn.js +109 -0
  497. package/devices/ihorn.js.map +1 -0
  498. package/devices/ikea.d.ts +4 -0
  499. package/devices/ikea.d.ts.map +1 -0
  500. package/devices/ikea.js +927 -0
  501. package/devices/ikea.js.map +1 -0
  502. package/devices/ilightsin.d.ts +4 -0
  503. package/devices/ilightsin.d.ts.map +1 -0
  504. package/devices/ilightsin.js +15 -0
  505. package/devices/ilightsin.js.map +1 -0
  506. package/devices/iluminize.d.ts +4 -0
  507. package/devices/iluminize.d.ts.map +1 -0
  508. package/devices/iluminize.js +376 -0
  509. package/devices/iluminize.js.map +1 -0
  510. package/devices/ilux.d.ts +4 -0
  511. package/devices/ilux.d.ts.map +1 -0
  512. package/devices/ilux.js +15 -0
  513. package/devices/ilux.js.map +1 -0
  514. package/devices/imhotepcreation.d.ts +4 -0
  515. package/devices/imhotepcreation.d.ts.map +1 -0
  516. package/devices/imhotepcreation.js +251 -0
  517. package/devices/imhotepcreation.js.map +1 -0
  518. package/devices/immax.d.ts +4 -0
  519. package/devices/immax.d.ts.map +1 -0
  520. package/devices/immax.js +304 -0
  521. package/devices/immax.js.map +1 -0
  522. package/devices/imou.d.ts +4 -0
  523. package/devices/imou.d.ts.map +1 -0
  524. package/devices/imou.js +28 -0
  525. package/devices/imou.js.map +1 -0
  526. package/devices/index.d.ts +13 -0
  527. package/devices/index.d.ts.map +1 -0
  528. package/devices/index.js +642 -0
  529. package/devices/index.js.map +1 -0
  530. package/devices/innr.d.ts +4 -0
  531. package/devices/innr.d.ts.map +1 -0
  532. package/devices/innr.js +878 -0
  533. package/devices/innr.js.map +1 -0
  534. package/devices/inovelli.d.ts +4 -0
  535. package/devices/inovelli.d.ts.map +1 -0
  536. package/devices/inovelli.js +1977 -0
  537. package/devices/inovelli.js.map +1 -0
  538. package/devices/insta.d.ts +4 -0
  539. package/devices/insta.d.ts.map +1 -0
  540. package/devices/insta.js +186 -0
  541. package/devices/insta.js.map +1 -0
  542. package/devices/iolloi.d.ts +4 -0
  543. package/devices/iolloi.d.ts.map +1 -0
  544. package/devices/iolloi.js +16 -0
  545. package/devices/iolloi.js.map +1 -0
  546. package/devices/iotperfect.d.ts +4 -0
  547. package/devices/iotperfect.d.ts.map +1 -0
  548. package/devices/iotperfect.js +62 -0
  549. package/devices/iotperfect.js.map +1 -0
  550. package/devices/iris.d.ts +4 -0
  551. package/devices/iris.d.ts.map +1 -0
  552. package/devices/iris.js +211 -0
  553. package/devices/iris.js.map +1 -0
  554. package/devices/istar.d.ts +4 -0
  555. package/devices/istar.d.ts.map +1 -0
  556. package/devices/istar.js +22 -0
  557. package/devices/istar.js.map +1 -0
  558. package/devices/jasco.d.ts +4 -0
  559. package/devices/jasco.d.ts.map +1 -0
  560. package/devices/jasco.js +34 -0
  561. package/devices/jasco.js.map +1 -0
  562. package/devices/javis.d.ts +4 -0
  563. package/devices/javis.d.ts.map +1 -0
  564. package/devices/javis.js +84 -0
  565. package/devices/javis.js.map +1 -0
  566. package/devices/jethome.d.ts +4 -0
  567. package/devices/jethome.d.ts.map +1 -0
  568. package/devices/jethome.js +124 -0
  569. package/devices/jethome.js.map +1 -0
  570. package/devices/jiawen.d.ts +4 -0
  571. package/devices/jiawen.d.ts.map +1 -0
  572. package/devices/jiawen.js +22 -0
  573. package/devices/jiawen.js.map +1 -0
  574. package/devices/jumitech.d.ts +4 -0
  575. package/devices/jumitech.d.ts.map +1 -0
  576. package/devices/jumitech.js +15 -0
  577. package/devices/jumitech.js.map +1 -0
  578. package/devices/jxuan.d.ts +4 -0
  579. package/devices/jxuan.d.ts.map +1 -0
  580. package/devices/jxuan.js +89 -0
  581. package/devices/jxuan.js.map +1 -0
  582. package/devices/kami.d.ts +4 -0
  583. package/devices/kami.d.ts.map +1 -0
  584. package/devices/kami.js +55 -0
  585. package/devices/kami.js.map +1 -0
  586. package/devices/keen_home.d.ts +4 -0
  587. package/devices/keen_home.d.ts.map +1 -0
  588. package/devices/keen_home.js +160 -0
  589. package/devices/keen_home.js.map +1 -0
  590. package/devices/klikaanklikuit.d.ts +4 -0
  591. package/devices/klikaanklikuit.d.ts.map +1 -0
  592. package/devices/klikaanklikuit.js +22 -0
  593. package/devices/klikaanklikuit.js.map +1 -0
  594. package/devices/kmpcil.d.ts +4 -0
  595. package/devices/kmpcil.d.ts.map +1 -0
  596. package/devices/kmpcil.js +219 -0
  597. package/devices/kmpcil.js.map +1 -0
  598. package/devices/konke.d.ts +4 -0
  599. package/devices/konke.d.ts.map +1 -0
  600. package/devices/konke.js +210 -0
  601. package/devices/konke.js.map +1 -0
  602. package/devices/ksentry.d.ts +4 -0
  603. package/devices/ksentry.d.ts.map +1 -0
  604. package/devices/ksentry.js +15 -0
  605. package/devices/ksentry.js.map +1 -0
  606. package/devices/kurvia.d.ts +4 -0
  607. package/devices/kurvia.d.ts.map +1 -0
  608. package/devices/kurvia.js +20 -0
  609. package/devices/kurvia.js.map +1 -0
  610. package/devices/kwikset.d.ts +4 -0
  611. package/devices/kwikset.d.ts.map +1 -0
  612. package/devices/kwikset.js +157 -0
  613. package/devices/kwikset.js.map +1 -0
  614. package/devices/lanesto.d.ts +4 -0
  615. package/devices/lanesto.d.ts.map +1 -0
  616. package/devices/lanesto.js +15 -0
  617. package/devices/lanesto.js.map +1 -0
  618. package/devices/lds.d.ts +4 -0
  619. package/devices/lds.d.ts.map +1 -0
  620. package/devices/lds.js +15 -0
  621. package/devices/lds.js.map +1 -0
  622. package/devices/led_trading.d.ts +4 -0
  623. package/devices/led_trading.d.ts.map +1 -0
  624. package/devices/led_trading.js +112 -0
  625. package/devices/led_trading.js.map +1 -0
  626. package/devices/ledvance.d.ts +4 -0
  627. package/devices/ledvance.d.ts.map +1 -0
  628. package/devices/ledvance.js +337 -0
  629. package/devices/ledvance.js.map +1 -0
  630. package/devices/leedarson.d.ts +4 -0
  631. package/devices/leedarson.d.ts.map +1 -0
  632. package/devices/leedarson.js +182 -0
  633. package/devices/leedarson.js.map +1 -0
  634. package/devices/legrand.d.ts +4 -0
  635. package/devices/legrand.d.ts.map +1 -0
  636. package/devices/legrand.js +740 -0
  637. package/devices/legrand.js.map +1 -0
  638. package/devices/lellki.d.ts +4 -0
  639. package/devices/lellki.d.ts.map +1 -0
  640. package/devices/lellki.js +169 -0
  641. package/devices/lellki.js.map +1 -0
  642. package/devices/letsled.d.ts +4 -0
  643. package/devices/letsled.d.ts.map +1 -0
  644. package/devices/letsled.js +15 -0
  645. package/devices/letsled.js.map +1 -0
  646. package/devices/letv.d.ts +4 -0
  647. package/devices/letv.d.ts.map +1 -0
  648. package/devices/letv.js +90 -0
  649. package/devices/letv.js.map +1 -0
  650. package/devices/leviton.d.ts +4 -0
  651. package/devices/leviton.d.ts.map +1 -0
  652. package/devices/leviton.js +164 -0
  653. package/devices/leviton.js.map +1 -0
  654. package/devices/lg.d.ts +4 -0
  655. package/devices/lg.d.ts.map +1 -0
  656. package/devices/lg.js +29 -0
  657. package/devices/lg.js.map +1 -0
  658. package/devices/lidl.d.ts +4 -0
  659. package/devices/lidl.d.ts.map +1 -0
  660. package/devices/lidl.js +674 -0
  661. package/devices/lidl.js.map +1 -0
  662. package/devices/lifecontrol.d.ts +4 -0
  663. package/devices/lifecontrol.d.ts.map +1 -0
  664. package/devices/lifecontrol.js +149 -0
  665. package/devices/lifecontrol.js.map +1 -0
  666. package/devices/lightsolutions.d.ts +4 -0
  667. package/devices/lightsolutions.d.ts.map +1 -0
  668. package/devices/lightsolutions.js +36 -0
  669. package/devices/lightsolutions.js.map +1 -0
  670. package/devices/linkind.d.ts +4 -0
  671. package/devices/linkind.d.ts.map +1 -0
  672. package/devices/linkind.js +275 -0
  673. package/devices/linkind.js.map +1 -0
  674. package/devices/linptech.d.ts +4 -0
  675. package/devices/linptech.d.ts.map +1 -0
  676. package/devices/linptech.js +159 -0
  677. package/devices/linptech.js.map +1 -0
  678. package/devices/livingwise.d.ts +4 -0
  679. package/devices/livingwise.d.ts.map +1 -0
  680. package/devices/livingwise.js +119 -0
  681. package/devices/livingwise.js.map +1 -0
  682. package/devices/livolo.d.ts +4 -0
  683. package/devices/livolo.d.ts.map +1 -0
  684. package/devices/livolo.js +422 -0
  685. package/devices/livolo.js.map +1 -0
  686. package/devices/lixee.d.ts +4 -0
  687. package/devices/lixee.d.ts.map +1 -0
  688. package/devices/lixee.js +1926 -0
  689. package/devices/lixee.js.map +1 -0
  690. package/devices/lonsonho.d.ts +4 -0
  691. package/devices/lonsonho.d.ts.map +1 -0
  692. package/devices/lonsonho.js +303 -0
  693. package/devices/lonsonho.js.map +1 -0
  694. package/devices/ls.d.ts +4 -0
  695. package/devices/ls.d.ts.map +1 -0
  696. package/devices/ls.js +68 -0
  697. package/devices/ls.js.map +1 -0
  698. package/devices/lubeez.d.ts +4 -0
  699. package/devices/lubeez.d.ts.map +1 -0
  700. package/devices/lubeez.js +15 -0
  701. package/devices/lubeez.js.map +1 -0
  702. package/devices/lumi.d.ts +4 -0
  703. package/devices/lumi.d.ts.map +1 -0
  704. package/devices/lumi.js +4387 -0
  705. package/devices/lumi.js.map +1 -0
  706. package/devices/lupus.d.ts +4 -0
  707. package/devices/lupus.d.ts.map +1 -0
  708. package/devices/lupus.js +98 -0
  709. package/devices/lupus.js.map +1 -0
  710. package/devices/lutron.d.ts +4 -0
  711. package/devices/lutron.d.ts.map +1 -0
  712. package/devices/lutron.js +71 -0
  713. package/devices/lutron.js.map +1 -0
  714. package/devices/lux.d.ts +4 -0
  715. package/devices/lux.d.ts.map +1 -0
  716. package/devices/lux.js +91 -0
  717. package/devices/lux.js.map +1 -0
  718. package/devices/lytko.d.ts +4 -0
  719. package/devices/lytko.d.ts.map +1 -0
  720. package/devices/lytko.js +788 -0
  721. package/devices/lytko.js.map +1 -0
  722. package/devices/m_elec.d.ts +4 -0
  723. package/devices/m_elec.d.ts.map +1 -0
  724. package/devices/m_elec.js +36 -0
  725. package/devices/m_elec.js.map +1 -0
  726. package/devices/makegood.d.ts +4 -0
  727. package/devices/makegood.d.ts.map +1 -0
  728. package/devices/makegood.js +66 -0
  729. package/devices/makegood.js.map +1 -0
  730. package/devices/matcall_bv.d.ts +4 -0
  731. package/devices/matcall_bv.d.ts.map +1 -0
  732. package/devices/matcall_bv.js +22 -0
  733. package/devices/matcall_bv.js.map +1 -0
  734. package/devices/mazda.d.ts +4 -0
  735. package/devices/mazda.d.ts.map +1 -0
  736. package/devices/mazda.js +174 -0
  737. package/devices/mazda.js.map +1 -0
  738. package/devices/meazon.d.ts +4 -0
  739. package/devices/meazon.d.ts.map +1 -0
  740. package/devices/meazon.js +99 -0
  741. package/devices/meazon.js.map +1 -0
  742. package/devices/mercator.d.ts +4 -0
  743. package/devices/mercator.d.ts.map +1 -0
  744. package/devices/mercator.js +256 -0
  745. package/devices/mercator.js.map +1 -0
  746. package/devices/miboxer.d.ts +4 -0
  747. package/devices/miboxer.d.ts.map +1 -0
  748. package/devices/miboxer.js +93 -0
  749. package/devices/miboxer.js.map +1 -0
  750. package/devices/micromatic.d.ts +4 -0
  751. package/devices/micromatic.d.ts.map +1 -0
  752. package/devices/micromatic.js +15 -0
  753. package/devices/micromatic.js.map +1 -0
  754. package/devices/modular.d.ts +4 -0
  755. package/devices/modular.d.ts.map +1 -0
  756. package/devices/modular.js +15 -0
  757. package/devices/modular.js.map +1 -0
  758. package/devices/moes.d.ts +4 -0
  759. package/devices/moes.d.ts.map +1 -0
  760. package/devices/moes.js +654 -0
  761. package/devices/moes.js.map +1 -0
  762. package/devices/muller_licht.d.ts +4 -0
  763. package/devices/muller_licht.d.ts.map +1 -0
  764. package/devices/muller_licht.js +341 -0
  765. package/devices/muller_licht.js.map +1 -0
  766. package/devices/multiterm.d.ts +4 -0
  767. package/devices/multiterm.d.ts.map +1 -0
  768. package/devices/multiterm.js +123 -0
  769. package/devices/multiterm.js.map +1 -0
  770. package/devices/namron.d.ts +4 -0
  771. package/devices/namron.d.ts.map +1 -0
  772. package/devices/namron.js +1464 -0
  773. package/devices/namron.js.map +1 -0
  774. package/devices/nanoleaf.d.ts +4 -0
  775. package/devices/nanoleaf.d.ts.map +1 -0
  776. package/devices/nanoleaf.js +15 -0
  777. package/devices/nanoleaf.js.map +1 -0
  778. package/devices/nedis.d.ts +4 -0
  779. package/devices/nedis.d.ts.map +1 -0
  780. package/devices/nedis.js +88 -0
  781. package/devices/nedis.js.map +1 -0
  782. package/devices/neo.d.ts +4 -0
  783. package/devices/neo.d.ts.map +1 -0
  784. package/devices/neo.js +558 -0
  785. package/devices/neo.js.map +1 -0
  786. package/devices/net2grid.d.ts +4 -0
  787. package/devices/net2grid.d.ts.map +1 -0
  788. package/devices/net2grid.js +68 -0
  789. package/devices/net2grid.js.map +1 -0
  790. package/devices/netvox.d.ts +4 -0
  791. package/devices/netvox.d.ts.map +1 -0
  792. package/devices/netvox.js +75 -0
  793. package/devices/netvox.js.map +1 -0
  794. package/devices/nexelec.d.ts +4 -0
  795. package/devices/nexelec.d.ts.map +1 -0
  796. package/devices/nexelec.js +15 -0
  797. package/devices/nexelec.js.map +1 -0
  798. package/devices/niko.d.ts +4 -0
  799. package/devices/niko.d.ts.map +1 -0
  800. package/devices/niko.js +495 -0
  801. package/devices/niko.js.map +1 -0
  802. package/devices/ninja_blocks.d.ts +4 -0
  803. package/devices/ninja_blocks.d.ts.map +1 -0
  804. package/devices/ninja_blocks.js +64 -0
  805. package/devices/ninja_blocks.js.map +1 -0
  806. package/devices/niviss.d.ts +4 -0
  807. package/devices/niviss.d.ts.map +1 -0
  808. package/devices/niviss.js +15 -0
  809. package/devices/niviss.js.map +1 -0
  810. package/devices/nodon.d.ts +4 -0
  811. package/devices/nodon.d.ts.map +1 -0
  812. package/devices/nodon.js +386 -0
  813. package/devices/nodon.js.map +1 -0
  814. package/devices/nordtronic.d.ts +4 -0
  815. package/devices/nordtronic.d.ts.map +1 -0
  816. package/devices/nordtronic.js +41 -0
  817. package/devices/nordtronic.js.map +1 -0
  818. package/devices/nous.d.ts +4 -0
  819. package/devices/nous.d.ts.map +1 -0
  820. package/devices/nous.js +151 -0
  821. package/devices/nous.js.map +1 -0
  822. package/devices/novo.d.ts +4 -0
  823. package/devices/novo.d.ts.map +1 -0
  824. package/devices/novo.js +57 -0
  825. package/devices/novo.js.map +1 -0
  826. package/devices/nue_3a.d.ts +4 -0
  827. package/devices/nue_3a.d.ts.map +1 -0
  828. package/devices/nue_3a.js +361 -0
  829. package/devices/nue_3a.js.map +1 -0
  830. package/devices/nyce.d.ts +4 -0
  831. package/devices/nyce.d.ts.map +1 -0
  832. package/devices/nyce.js +134 -0
  833. package/devices/nyce.js.map +1 -0
  834. package/devices/onenuo.d.ts +4 -0
  835. package/devices/onenuo.d.ts.map +1 -0
  836. package/devices/onenuo.js +86 -0
  837. package/devices/onenuo.js.map +1 -0
  838. package/devices/onesti.d.ts +4 -0
  839. package/devices/onesti.d.ts.map +1 -0
  840. package/devices/onesti.js +208 -0
  841. package/devices/onesti.js.map +1 -0
  842. package/devices/openlumi.d.ts +4 -0
  843. package/devices/openlumi.d.ts.map +1 -0
  844. package/devices/openlumi.js +62 -0
  845. package/devices/openlumi.js.map +1 -0
  846. package/devices/orvibo.d.ts +4 -0
  847. package/devices/orvibo.d.ts.map +1 -0
  848. package/devices/orvibo.js +391 -0
  849. package/devices/orvibo.js.map +1 -0
  850. package/devices/osram.d.ts +4 -0
  851. package/devices/osram.d.ts.map +1 -0
  852. package/devices/osram.js +516 -0
  853. package/devices/osram.js.map +1 -0
  854. package/devices/oujiabao.d.ts +4 -0
  855. package/devices/oujiabao.d.ts.map +1 -0
  856. package/devices/oujiabao.js +55 -0
  857. package/devices/oujiabao.js.map +1 -0
  858. package/devices/owon.d.ts +4 -0
  859. package/devices/owon.d.ts.map +1 -0
  860. package/devices/owon.js +478 -0
  861. package/devices/owon.js.map +1 -0
  862. package/devices/ozsmartthings.d.ts +4 -0
  863. package/devices/ozsmartthings.d.ts.map +1 -0
  864. package/devices/ozsmartthings.js +48 -0
  865. package/devices/ozsmartthings.js.map +1 -0
  866. package/devices/paul_neuhaus.d.ts +4 -0
  867. package/devices/paul_neuhaus.d.ts.map +1 -0
  868. package/devices/paul_neuhaus.js +194 -0
  869. package/devices/paul_neuhaus.js.map +1 -0
  870. package/devices/paulmann.d.ts +4 -0
  871. package/devices/paulmann.d.ts.map +1 -0
  872. package/devices/paulmann.js +330 -0
  873. package/devices/paulmann.js.map +1 -0
  874. package/devices/peq.d.ts +4 -0
  875. package/devices/peq.d.ts.map +1 -0
  876. package/devices/peq.js +64 -0
  877. package/devices/peq.js.map +1 -0
  878. package/devices/perenio.d.ts +4 -0
  879. package/devices/perenio.d.ts.map +1 -0
  880. package/devices/perenio.js +468 -0
  881. package/devices/perenio.js.map +1 -0
  882. package/devices/philio.d.ts +4 -0
  883. package/devices/philio.d.ts.map +1 -0
  884. package/devices/philio.js +16 -0
  885. package/devices/philio.js.map +1 -0
  886. package/devices/philips.d.ts +4 -0
  887. package/devices/philips.d.ts.map +1 -0
  888. package/devices/philips.js +4051 -0
  889. package/devices/philips.js.map +1 -0
  890. package/devices/plaid.d.ts +4 -0
  891. package/devices/plaid.d.ts.map +1 -0
  892. package/devices/plaid.js +65 -0
  893. package/devices/plaid.js.map +1 -0
  894. package/devices/plugwise.d.ts +4 -0
  895. package/devices/plugwise.d.ts.map +1 -0
  896. package/devices/plugwise.js +210 -0
  897. package/devices/plugwise.js.map +1 -0
  898. package/devices/profalux.d.ts +4 -0
  899. package/devices/profalux.d.ts.map +1 -0
  900. package/devices/profalux.js +191 -0
  901. package/devices/profalux.js.map +1 -0
  902. package/devices/prolight.d.ts +4 -0
  903. package/devices/prolight.d.ts.map +1 -0
  904. package/devices/prolight.js +115 -0
  905. package/devices/prolight.js.map +1 -0
  906. package/devices/pushok.d.ts +4 -0
  907. package/devices/pushok.d.ts.map +1 -0
  908. package/devices/pushok.js +300 -0
  909. package/devices/pushok.js.map +1 -0
  910. package/devices/qa.d.ts +4 -0
  911. package/devices/qa.d.ts.map +1 -0
  912. package/devices/qa.js +295 -0
  913. package/devices/qa.js.map +1 -0
  914. package/devices/qmotion.d.ts +4 -0
  915. package/devices/qmotion.d.ts.map +1 -0
  916. package/devices/qmotion.js +73 -0
  917. package/devices/qmotion.js.map +1 -0
  918. package/devices/qoto.d.ts +4 -0
  919. package/devices/qoto.d.ts.map +1 -0
  920. package/devices/qoto.js +87 -0
  921. package/devices/qoto.js.map +1 -0
  922. package/devices/quotra.d.ts +4 -0
  923. package/devices/quotra.d.ts.map +1 -0
  924. package/devices/quotra.js +22 -0
  925. package/devices/quotra.js.map +1 -0
  926. package/devices/rademacher.d.ts +4 -0
  927. package/devices/rademacher.d.ts.map +1 -0
  928. package/devices/rademacher.js +29 -0
  929. package/devices/rademacher.js.map +1 -0
  930. package/devices/radium.d.ts +4 -0
  931. package/devices/radium.d.ts.map +1 -0
  932. package/devices/radium.js +15 -0
  933. package/devices/radium.js.map +1 -0
  934. package/devices/raex.d.ts +4 -0
  935. package/devices/raex.d.ts.map +1 -0
  936. package/devices/raex.js +15 -0
  937. package/devices/raex.js.map +1 -0
  938. package/devices/rgb_genie.d.ts +4 -0
  939. package/devices/rgb_genie.d.ts.map +1 -0
  940. package/devices/rgb_genie.js +279 -0
  941. package/devices/rgb_genie.js.map +1 -0
  942. package/devices/robb.d.ts +4 -0
  943. package/devices/robb.d.ts.map +1 -0
  944. package/devices/robb.js +449 -0
  945. package/devices/robb.js.map +1 -0
  946. package/devices/roome.d.ts +4 -0
  947. package/devices/roome.d.ts.map +1 -0
  948. package/devices/roome.js +55 -0
  949. package/devices/roome.js.map +1 -0
  950. package/devices/rtx.d.ts +4 -0
  951. package/devices/rtx.d.ts.map +1 -0
  952. package/devices/rtx.js +151 -0
  953. package/devices/rtx.js.map +1 -0
  954. package/devices/salus_controls.d.ts +4 -0
  955. package/devices/salus_controls.d.ts.map +1 -0
  956. package/devices/salus_controls.js +136 -0
  957. package/devices/salus_controls.js.map +1 -0
  958. package/devices/samotech.d.ts +4 -0
  959. package/devices/samotech.d.ts.map +1 -0
  960. package/devices/samotech.js +75 -0
  961. package/devices/samotech.js.map +1 -0
  962. package/devices/saswell.d.ts +4 -0
  963. package/devices/saswell.d.ts.map +1 -0
  964. package/devices/saswell.js +125 -0
  965. package/devices/saswell.js.map +1 -0
  966. package/devices/sber.d.ts +4 -0
  967. package/devices/sber.d.ts.map +1 -0
  968. package/devices/sber.js +66 -0
  969. package/devices/sber.js.map +1 -0
  970. package/devices/scanproducts.d.ts +4 -0
  971. package/devices/scanproducts.d.ts.map +1 -0
  972. package/devices/scanproducts.js +22 -0
  973. package/devices/scanproducts.js.map +1 -0
  974. package/devices/schlage.d.ts +4 -0
  975. package/devices/schlage.d.ts.map +1 -0
  976. package/devices/schlage.js +64 -0
  977. package/devices/schlage.js.map +1 -0
  978. package/devices/schneider_electric.d.ts +4 -0
  979. package/devices/schneider_electric.d.ts.map +1 -0
  980. package/devices/schneider_electric.js +2187 -0
  981. package/devices/schneider_electric.js.map +1 -0
  982. package/devices/schwaiger.d.ts +4 -0
  983. package/devices/schwaiger.d.ts.map +1 -0
  984. package/devices/schwaiger.js +109 -0
  985. package/devices/schwaiger.js.map +1 -0
  986. package/devices/seastar_intelligence.d.ts +4 -0
  987. package/devices/seastar_intelligence.d.ts.map +1 -0
  988. package/devices/seastar_intelligence.js +20 -0
  989. package/devices/seastar_intelligence.js.map +1 -0
  990. package/devices/securifi.d.ts +4 -0
  991. package/devices/securifi.d.ts.map +1 -0
  992. package/devices/securifi.js +83 -0
  993. package/devices/securifi.js.map +1 -0
  994. package/devices/sengled.d.ts +7 -0
  995. package/devices/sengled.d.ts.map +1 -0
  996. package/devices/sengled.js +358 -0
  997. package/devices/sengled.js.map +1 -0
  998. package/devices/sercomm.d.ts +4 -0
  999. package/devices/sercomm.d.ts.map +1 -0
  1000. package/devices/sercomm.js +189 -0
  1001. package/devices/sercomm.js.map +1 -0
  1002. package/devices/shade_control.d.ts +4 -0
  1003. package/devices/shade_control.d.ts.map +1 -0
  1004. package/devices/shade_control.js +65 -0
  1005. package/devices/shade_control.js.map +1 -0
  1006. package/devices/shenzhen_homa.d.ts +4 -0
  1007. package/devices/shenzhen_homa.d.ts.map +1 -0
  1008. package/devices/shenzhen_homa.js +111 -0
  1009. package/devices/shenzhen_homa.js.map +1 -0
  1010. package/devices/shinasystem.d.ts +4 -0
  1011. package/devices/shinasystem.d.ts.map +1 -0
  1012. package/devices/shinasystem.js +961 -0
  1013. package/devices/shinasystem.js.map +1 -0
  1014. package/devices/shyugj.d.ts +4 -0
  1015. package/devices/shyugj.d.ts.map +1 -0
  1016. package/devices/shyugj.js +21 -0
  1017. package/devices/shyugj.js.map +1 -0
  1018. package/devices/siglis.d.ts +4 -0
  1019. package/devices/siglis.d.ts.map +1 -0
  1020. package/devices/siglis.js +457 -0
  1021. package/devices/siglis.js.map +1 -0
  1022. package/devices/sikom.d.ts +4 -0
  1023. package/devices/sikom.d.ts.map +1 -0
  1024. package/devices/sikom.js +68 -0
  1025. package/devices/sikom.js.map +1 -0
  1026. package/devices/sinope.d.ts +4 -0
  1027. package/devices/sinope.d.ts.map +1 -0
  1028. package/devices/sinope.js +1755 -0
  1029. package/devices/sinope.js.map +1 -0
  1030. package/devices/siterwell.d.ts +4 -0
  1031. package/devices/siterwell.d.ts.map +1 -0
  1032. package/devices/siterwell.js +111 -0
  1033. package/devices/siterwell.js.map +1 -0
  1034. package/devices/skydance.d.ts +4 -0
  1035. package/devices/skydance.d.ts.map +1 -0
  1036. package/devices/skydance.js +156 -0
  1037. package/devices/skydance.js.map +1 -0
  1038. package/devices/slv.d.ts +4 -0
  1039. package/devices/slv.d.ts.map +1 -0
  1040. package/devices/slv.js +38 -0
  1041. package/devices/slv.js.map +1 -0
  1042. package/devices/smart9.d.ts +4 -0
  1043. package/devices/smart9.d.ts.map +1 -0
  1044. package/devices/smart9.js +67 -0
  1045. package/devices/smart9.js.map +1 -0
  1046. package/devices/smart_home_pty.d.ts +4 -0
  1047. package/devices/smart_home_pty.d.ts.map +1 -0
  1048. package/devices/smart_home_pty.js +22 -0
  1049. package/devices/smart_home_pty.js.map +1 -0
  1050. package/devices/smartenit.d.ts +4 -0
  1051. package/devices/smartenit.d.ts.map +1 -0
  1052. package/devices/smartenit.js +81 -0
  1053. package/devices/smartenit.js.map +1 -0
  1054. package/devices/smartthings.d.ts +4 -0
  1055. package/devices/smartthings.d.ts.map +1 -0
  1056. package/devices/smartthings.js +527 -0
  1057. package/devices/smartthings.js.map +1 -0
  1058. package/devices/smartwings.d.ts +4 -0
  1059. package/devices/smartwings.d.ts.map +1 -0
  1060. package/devices/smartwings.js +64 -0
  1061. package/devices/smartwings.js.map +1 -0
  1062. package/devices/smlight.d.ts +4 -0
  1063. package/devices/smlight.d.ts.map +1 -0
  1064. package/devices/smlight.js +22 -0
  1065. package/devices/smlight.js.map +1 -0
  1066. package/devices/sohan_electric.d.ts +4 -0
  1067. package/devices/sohan_electric.d.ts.map +1 -0
  1068. package/devices/sohan_electric.js +20 -0
  1069. package/devices/sohan_electric.js.map +1 -0
  1070. package/devices/solaredge.d.ts +4 -0
  1071. package/devices/solaredge.d.ts.map +1 -0
  1072. package/devices/solaredge.js +15 -0
  1073. package/devices/solaredge.js.map +1 -0
  1074. package/devices/soma.d.ts +4 -0
  1075. package/devices/soma.d.ts.map +1 -0
  1076. package/devices/soma.js +15 -0
  1077. package/devices/soma.js.map +1 -0
  1078. package/devices/somfy.d.ts +4 -0
  1079. package/devices/somfy.d.ts.map +1 -0
  1080. package/devices/somfy.js +88 -0
  1081. package/devices/somfy.js.map +1 -0
  1082. package/devices/somgoms.d.ts +4 -0
  1083. package/devices/somgoms.d.ts.map +1 -0
  1084. package/devices/somgoms.js +84 -0
  1085. package/devices/somgoms.js.map +1 -0
  1086. package/devices/sonoff.d.ts +4 -0
  1087. package/devices/sonoff.d.ts.map +1 -0
  1088. package/devices/sonoff.js +1452 -0
  1089. package/devices/sonoff.js.map +1 -0
  1090. package/devices/sowilo.d.ts +4 -0
  1091. package/devices/sowilo.d.ts.map +1 -0
  1092. package/devices/sowilo.js +15 -0
  1093. package/devices/sowilo.js.map +1 -0
  1094. package/devices/spotmau.d.ts +4 -0
  1095. package/devices/spotmau.d.ts.map +1 -0
  1096. package/devices/spotmau.js +42 -0
  1097. package/devices/spotmau.js.map +1 -0
  1098. package/devices/stelpro.d.ts +4 -0
  1099. package/devices/stelpro.d.ts.map +1 -0
  1100. package/devices/stelpro.js +366 -0
  1101. package/devices/stelpro.js.map +1 -0
  1102. package/devices/sunricher.d.ts +4 -0
  1103. package/devices/sunricher.d.ts.map +1 -0
  1104. package/devices/sunricher.js +1308 -0
  1105. package/devices/sunricher.js.map +1 -0
  1106. package/devices/swann.d.ts +4 -0
  1107. package/devices/swann.d.ts.map +1 -0
  1108. package/devices/swann.js +73 -0
  1109. package/devices/swann.js.map +1 -0
  1110. package/devices/sylvania.d.ts +4 -0
  1111. package/devices/sylvania.d.ts.map +1 -0
  1112. package/devices/sylvania.js +226 -0
  1113. package/devices/sylvania.js.map +1 -0
  1114. package/devices/tapestry.d.ts +4 -0
  1115. package/devices/tapestry.d.ts.map +1 -0
  1116. package/devices/tapestry.js +56 -0
  1117. package/devices/tapestry.js.map +1 -0
  1118. package/devices/tci.d.ts +4 -0
  1119. package/devices/tci.d.ts.map +1 -0
  1120. package/devices/tci.js +29 -0
  1121. package/devices/tci.js.map +1 -0
  1122. package/devices/tech.d.ts +4 -0
  1123. package/devices/tech.d.ts.map +1 -0
  1124. package/devices/tech.js +131 -0
  1125. package/devices/tech.js.map +1 -0
  1126. package/devices/technicolor.d.ts +4 -0
  1127. package/devices/technicolor.d.ts.map +1 -0
  1128. package/devices/technicolor.js +102 -0
  1129. package/devices/technicolor.js.map +1 -0
  1130. package/devices/terncy.d.ts +4 -0
  1131. package/devices/terncy.d.ts.map +1 -0
  1132. package/devices/terncy.js +116 -0
  1133. package/devices/terncy.js.map +1 -0
  1134. package/devices/the_light_group.d.ts +4 -0
  1135. package/devices/the_light_group.d.ts.map +1 -0
  1136. package/devices/the_light_group.js +130 -0
  1137. package/devices/the_light_group.js.map +1 -0
  1138. package/devices/third_reality.d.ts +4 -0
  1139. package/devices/third_reality.d.ts.map +1 -0
  1140. package/devices/third_reality.js +569 -0
  1141. package/devices/third_reality.js.map +1 -0
  1142. package/devices/titan_products.d.ts +4 -0
  1143. package/devices/titan_products.d.ts.map +1 -0
  1144. package/devices/titan_products.js +62 -0
  1145. package/devices/titan_products.js.map +1 -0
  1146. package/devices/tlwglobal.d.ts +4 -0
  1147. package/devices/tlwglobal.d.ts.map +1 -0
  1148. package/devices/tlwglobal.js +32 -0
  1149. package/devices/tlwglobal.js.map +1 -0
  1150. package/devices/tplink.d.ts +4 -0
  1151. package/devices/tplink.d.ts.map +1 -0
  1152. package/devices/tplink.js +82 -0
  1153. package/devices/tplink.js.map +1 -0
  1154. package/devices/trust.d.ts +4 -0
  1155. package/devices/trust.d.ts.map +1 -0
  1156. package/devices/trust.js +183 -0
  1157. package/devices/trust.js.map +1 -0
  1158. package/devices/tubeszb.d.ts +4 -0
  1159. package/devices/tubeszb.d.ts.map +1 -0
  1160. package/devices/tubeszb.js +60 -0
  1161. package/devices/tubeszb.js.map +1 -0
  1162. package/devices/tuya.d.ts +4 -0
  1163. package/devices/tuya.d.ts.map +1 -0
  1164. package/devices/tuya.js +13607 -0
  1165. package/devices/tuya.js.map +1 -0
  1166. package/devices/ubisys.d.ts +4 -0
  1167. package/devices/ubisys.d.ts.map +1 -0
  1168. package/devices/ubisys.js +1300 -0
  1169. package/devices/ubisys.js.map +1 -0
  1170. package/devices/uhome.d.ts +4 -0
  1171. package/devices/uhome.d.ts.map +1 -0
  1172. package/devices/uhome.js +64 -0
  1173. package/devices/uhome.js.map +1 -0
  1174. package/devices/universal_electronics_inc.d.ts +4 -0
  1175. package/devices/universal_electronics_inc.d.ts.map +1 -0
  1176. package/devices/universal_electronics_inc.js +186 -0
  1177. package/devices/universal_electronics_inc.js.map +1 -0
  1178. package/devices/vbled.d.ts +4 -0
  1179. package/devices/vbled.d.ts.map +1 -0
  1180. package/devices/vbled.js +15 -0
  1181. package/devices/vbled.js.map +1 -0
  1182. package/devices/vesternet.d.ts +4 -0
  1183. package/devices/vesternet.d.ts.map +1 -0
  1184. package/devices/vesternet.js +330 -0
  1185. package/devices/vesternet.js.map +1 -0
  1186. package/devices/viessmann.d.ts +4 -0
  1187. package/devices/viessmann.d.ts.map +1 -0
  1188. package/devices/viessmann.js +115 -0
  1189. package/devices/viessmann.js.map +1 -0
  1190. package/devices/villeroy_boch.d.ts +4 -0
  1191. package/devices/villeroy_boch.d.ts.map +1 -0
  1192. package/devices/villeroy_boch.js +22 -0
  1193. package/devices/villeroy_boch.js.map +1 -0
  1194. package/devices/vimar.d.ts +4 -0
  1195. package/devices/vimar.d.ts.map +1 -0
  1196. package/devices/vimar.js +137 -0
  1197. package/devices/vimar.js.map +1 -0
  1198. package/devices/visonic.d.ts +4 -0
  1199. package/devices/visonic.d.ts.map +1 -0
  1200. package/devices/visonic.js +138 -0
  1201. package/devices/visonic.js.map +1 -0
  1202. package/devices/vrey.d.ts +4 -0
  1203. package/devices/vrey.d.ts.map +1 -0
  1204. package/devices/vrey.js +18 -0
  1205. package/devices/vrey.js.map +1 -0
  1206. package/devices/wally.d.ts +4 -0
  1207. package/devices/wally.d.ts.map +1 -0
  1208. package/devices/wally.js +64 -0
  1209. package/devices/wally.js.map +1 -0
  1210. package/devices/waxman.d.ts +4 -0
  1211. package/devices/waxman.d.ts.map +1 -0
  1212. package/devices/waxman.js +85 -0
  1213. package/devices/waxman.js.map +1 -0
  1214. package/devices/weiser.d.ts +4 -0
  1215. package/devices/weiser.d.ts.map +1 -0
  1216. package/devices/weiser.js +103 -0
  1217. package/devices/weiser.js.map +1 -0
  1218. package/devices/weten.d.ts +4 -0
  1219. package/devices/weten.d.ts.map +1 -0
  1220. package/devices/weten.js +89 -0
  1221. package/devices/weten.js.map +1 -0
  1222. package/devices/wirenboard.d.ts +4 -0
  1223. package/devices/wirenboard.d.ts.map +1 -0
  1224. package/devices/wirenboard.js +626 -0
  1225. package/devices/wirenboard.js.map +1 -0
  1226. package/devices/wisdom.d.ts +4 -0
  1227. package/devices/wisdom.d.ts.map +1 -0
  1228. package/devices/wisdom.js +15 -0
  1229. package/devices/wisdom.js.map +1 -0
  1230. package/devices/woolley.d.ts +4 -0
  1231. package/devices/woolley.d.ts.map +1 -0
  1232. package/devices/woolley.js +88 -0
  1233. package/devices/woolley.js.map +1 -0
  1234. package/devices/woox.d.ts +4 -0
  1235. package/devices/woox.d.ts.map +1 -0
  1236. package/devices/woox.js +137 -0
  1237. package/devices/woox.js.map +1 -0
  1238. package/devices/wyze.d.ts +4 -0
  1239. package/devices/wyze.d.ts.map +1 -0
  1240. package/devices/wyze.js +63 -0
  1241. package/devices/wyze.js.map +1 -0
  1242. package/devices/xinghuoyuan.d.ts +4 -0
  1243. package/devices/xinghuoyuan.d.ts.map +1 -0
  1244. package/devices/xinghuoyuan.js +15 -0
  1245. package/devices/xinghuoyuan.js.map +1 -0
  1246. package/devices/xyzroe.d.ts +4 -0
  1247. package/devices/xyzroe.d.ts.map +1 -0
  1248. package/devices/xyzroe.js +519 -0
  1249. package/devices/xyzroe.js.map +1 -0
  1250. package/devices/yale.d.ts +4 -0
  1251. package/devices/yale.d.ts.map +1 -0
  1252. package/devices/yale.js +503 -0
  1253. package/devices/yale.js.map +1 -0
  1254. package/devices/yandex.d.ts +4 -0
  1255. package/devices/yandex.d.ts.map +1 -0
  1256. package/devices/yandex.js +410 -0
  1257. package/devices/yandex.js.map +1 -0
  1258. package/devices/ynoa.d.ts +4 -0
  1259. package/devices/ynoa.d.ts.map +1 -0
  1260. package/devices/ynoa.js +113 -0
  1261. package/devices/ynoa.js.map +1 -0
  1262. package/devices/yookee.d.ts +4 -0
  1263. package/devices/yookee.d.ts.map +1 -0
  1264. package/devices/yookee.js +63 -0
  1265. package/devices/yookee.js.map +1 -0
  1266. package/devices/ysrsai.d.ts +4 -0
  1267. package/devices/ysrsai.d.ts.map +1 -0
  1268. package/devices/ysrsai.js +66 -0
  1269. package/devices/ysrsai.js.map +1 -0
  1270. package/devices/zemismart.d.ts +4 -0
  1271. package/devices/zemismart.d.ts.map +1 -0
  1272. package/devices/zemismart.js +405 -0
  1273. package/devices/zemismart.js.map +1 -0
  1274. package/devices/zen.d.ts +4 -0
  1275. package/devices/zen.d.ts.map +1 -0
  1276. package/devices/zen.js +96 -0
  1277. package/devices/zen.js.map +1 -0
  1278. package/devices/zigbeetlc.d.ts +13 -0
  1279. package/devices/zigbeetlc.d.ts.map +1 -0
  1280. package/devices/zigbeetlc.js +201 -0
  1281. package/devices/zigbeetlc.js.map +1 -0
  1282. package/devices/zipato.d.ts +4 -0
  1283. package/devices/zipato.d.ts.map +1 -0
  1284. package/devices/zipato.js +15 -0
  1285. package/devices/zipato.js.map +1 -0
  1286. package/index.d.ts +21 -0
  1287. package/index.d.ts.map +1 -0
  1288. package/index.js +488 -0
  1289. package/index.js.map +1 -0
  1290. package/lib/color.d.ts +272 -0
  1291. package/lib/color.d.ts.map +1 -0
  1292. package/lib/color.js +765 -0
  1293. package/lib/color.js.map +1 -0
  1294. package/lib/configureKey.d.ts +3 -0
  1295. package/lib/configureKey.d.ts.map +1 -0
  1296. package/lib/configureKey.js +939 -0
  1297. package/lib/configureKey.js.map +1 -0
  1298. package/lib/constants.d.ts +68 -0
  1299. package/lib/constants.d.ts.map +1 -0
  1300. package/lib/constants.js +293 -0
  1301. package/lib/constants.js.map +1 -0
  1302. package/lib/develco.d.ts +15 -0
  1303. package/lib/develco.d.ts.map +1 -0
  1304. package/lib/develco.js +183 -0
  1305. package/lib/develco.js.map +1 -0
  1306. package/lib/ewelink.d.ts +30 -0
  1307. package/lib/ewelink.d.ts.map +1 -0
  1308. package/lib/ewelink.js +718 -0
  1309. package/lib/ewelink.js.map +1 -0
  1310. package/lib/exposes.d.ts +344 -0
  1311. package/lib/exposes.d.ts.map +1 -0
  1312. package/lib/exposes.js +1065 -0
  1313. package/lib/exposes.js.map +1 -0
  1314. package/lib/generateDefinition.d.ts +6 -0
  1315. package/lib/generateDefinition.d.ts.map +1 -0
  1316. package/lib/generateDefinition.js +356 -0
  1317. package/lib/generateDefinition.js.map +1 -0
  1318. package/lib/ikea.d.ts +39 -0
  1319. package/lib/ikea.d.ts.map +1 -0
  1320. package/lib/ikea.js +776 -0
  1321. package/lib/ikea.js.map +1 -0
  1322. package/lib/kelvinToXy.d.ts +8 -0
  1323. package/lib/kelvinToXy.d.ts.map +1 -0
  1324. package/lib/kelvinToXy.js +1914 -0
  1325. package/lib/kelvinToXy.js.map +1 -0
  1326. package/lib/ledvance.d.ts +20 -0
  1327. package/lib/ledvance.d.ts.map +1 -0
  1328. package/lib/ledvance.js +103 -0
  1329. package/lib/ledvance.js.map +1 -0
  1330. package/lib/legacy.d.ts +5128 -0
  1331. package/lib/legacy.d.ts.map +1 -0
  1332. package/lib/legacy.js +6603 -0
  1333. package/lib/legacy.js.map +1 -0
  1334. package/lib/legrand.d.ts +69 -0
  1335. package/lib/legrand.d.ts.map +1 -0
  1336. package/lib/legrand.js +282 -0
  1337. package/lib/legrand.js.map +1 -0
  1338. package/lib/light.d.ts +6 -0
  1339. package/lib/light.d.ts.map +1 -0
  1340. package/lib/light.js +146 -0
  1341. package/lib/light.js.map +1 -0
  1342. package/lib/logger.d.ts +4 -0
  1343. package/lib/logger.d.ts.map +1 -0
  1344. package/lib/logger.js +14 -0
  1345. package/lib/logger.js.map +1 -0
  1346. package/lib/lumi.d.ts +953 -0
  1347. package/lib/lumi.d.ts.map +1 -0
  1348. package/lib/lumi.js +4973 -0
  1349. package/lib/lumi.js.map +1 -0
  1350. package/lib/modernExtend.d.ts +325 -0
  1351. package/lib/modernExtend.d.ts.map +1 -0
  1352. package/lib/modernExtend.js +1995 -0
  1353. package/lib/modernExtend.js.map +1 -0
  1354. package/lib/ota.d.ts +71 -0
  1355. package/lib/ota.d.ts.map +1 -0
  1356. package/lib/ota.js +663 -0
  1357. package/lib/ota.js.map +1 -0
  1358. package/lib/philips.d.ts +84 -0
  1359. package/lib/philips.d.ts.map +1 -0
  1360. package/lib/philips.js +657 -0
  1361. package/lib/philips.js.map +1 -0
  1362. package/lib/reporting.d.ts +58 -0
  1363. package/lib/reporting.d.ts.map +1 -0
  1364. package/lib/reporting.js +336 -0
  1365. package/lib/reporting.js.map +1 -0
  1366. package/lib/store.d.ts +7 -0
  1367. package/lib/store.d.ts.map +1 -0
  1368. package/lib/store.js +56 -0
  1369. package/lib/store.js.map +1 -0
  1370. package/lib/sunricher.d.ts +13 -0
  1371. package/lib/sunricher.d.ts.map +1 -0
  1372. package/lib/sunricher.js +14 -0
  1373. package/lib/sunricher.js.map +1 -0
  1374. package/lib/tuya.d.ts +764 -0
  1375. package/lib/tuya.d.ts.map +1 -0
  1376. package/lib/tuya.js +2425 -0
  1377. package/lib/tuya.js.map +1 -0
  1378. package/lib/types.d.ts +433 -0
  1379. package/lib/types.d.ts.map +1 -0
  1380. package/lib/types.js +4 -0
  1381. package/lib/types.js.map +1 -0
  1382. package/lib/ubisys.d.ts +19 -0
  1383. package/lib/ubisys.d.ts.map +1 -0
  1384. package/lib/ubisys.js +293 -0
  1385. package/lib/ubisys.js.map +1 -0
  1386. package/lib/utils.d.ts +93 -0
  1387. package/lib/utils.d.ts.map +1 -0
  1388. package/lib/utils.js +790 -0
  1389. package/lib/utils.js.map +1 -0
  1390. package/lib/zosung.d.ts +52 -0
  1391. package/lib/zosung.d.ts.map +1 -0
  1392. package/lib/zosung.js +256 -0
  1393. package/lib/zosung.js.map +1 -0
  1394. package/package.json +2 -2
@@ -0,0 +1,1977 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const zigbee_herdsman_1 = require("zigbee-herdsman");
40
+ const fromZigbee_1 = __importDefault(require("../converters/fromZigbee"));
41
+ const toZigbee_1 = __importDefault(require("../converters/toZigbee"));
42
+ const exposes = __importStar(require("../lib/exposes"));
43
+ const modernExtend_1 = require("../lib/modernExtend");
44
+ const reporting = __importStar(require("../lib/reporting"));
45
+ const globalStore = __importStar(require("../lib/store"));
46
+ const utils = __importStar(require("../lib/utils"));
47
+ const e = exposes.presets;
48
+ const ea = exposes.access;
49
+ const clickLookup = {
50
+ 0: 'single',
51
+ 1: 'release',
52
+ 2: 'held',
53
+ 3: 'double',
54
+ 4: 'triple',
55
+ 5: 'quadruple',
56
+ 6: 'quintuple',
57
+ };
58
+ const buttonLookup = {
59
+ 1: 'down',
60
+ 2: 'up',
61
+ 3: 'config',
62
+ 4: 'aux_down',
63
+ 5: 'aux_up',
64
+ 6: 'aux_config',
65
+ };
66
+ const ledEffects = {
67
+ off: 0,
68
+ solid: 1,
69
+ fast_blink: 2,
70
+ slow_blink: 3,
71
+ pulse: 4,
72
+ chase: 5,
73
+ open_close: 6,
74
+ small_to_big: 7,
75
+ aurora: 8,
76
+ slow_falling: 9,
77
+ medium_falling: 10,
78
+ fast_falling: 11,
79
+ slow_rising: 12,
80
+ medium_rising: 13,
81
+ fast_rising: 14,
82
+ medium_blink: 15,
83
+ slow_chase: 16,
84
+ fast_chase: 17,
85
+ fast_siren: 18,
86
+ slow_siren: 19,
87
+ clear_effect: 255,
88
+ };
89
+ const individualLedEffects = {
90
+ off: 0,
91
+ solid: 1,
92
+ fast_blink: 2,
93
+ slow_blink: 3,
94
+ pulse: 4,
95
+ chase: 5,
96
+ falling: 6,
97
+ rising: 7,
98
+ aurora: 8,
99
+ clear_effect: 255,
100
+ };
101
+ const inovelliExtend = {
102
+ addCustomClusterInovelli: () => (0, modernExtend_1.deviceAddCustomCluster)('manuSpecificInovelli', {
103
+ ID: 64561,
104
+ manufacturerCode: 0x122f,
105
+ attributes: {
106
+ dimmingSpeedUpRemote: { ID: 0x001, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
107
+ dimmingSpeedUpLocal: { ID: 0x0002, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
108
+ rampRateOffToOnRemote: { ID: 0x0003, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
109
+ rampRateOffToOnLocal: { ID: 0x0004, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
110
+ dimmingSpeedDownRemote: { ID: 0x0005, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
111
+ dimmingSpeedDownLocal: { ID: 0x0006, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
112
+ rampRateOnToOffRemote: { ID: 0x0007, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
113
+ rampRateOnToOffLocal: { ID: 0x0008, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
114
+ minimumLevel: { ID: 0x0009, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
115
+ maximumLevel: { ID: 0x000a, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
116
+ invertSwitch: { ID: 0x000b, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
117
+ autoTimerOff: { ID: 0x000c, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
118
+ defaultLevelLocal: { ID: 0x000d, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
119
+ defaultLevelRemote: { ID: 0x000e, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
120
+ stateAfterPowerRestored: { ID: 0x000f, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
121
+ loadLevelIndicatorTimeout: { ID: 0x0011, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
122
+ activePowerReports: { ID: 0x0012, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
123
+ periodicPowerAndEnergyReports: { ID: 0x0013, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
124
+ activeEnergyReports: { ID: 0x0014, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
125
+ powerType: { ID: 0x0015, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
126
+ switchType: { ID: 0x0016, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
127
+ quickStartTime: { ID: 0x0017, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
128
+ quickStartLevel: { ID: 0x0018, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
129
+ higherOutputInNonNeutral: { ID: 0x0019, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
130
+ leadingTrailingEdge: { ID: 0x001a, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
131
+ nonNeutralAuxMediumGear: { ID: 0x001e, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
132
+ nonNeutralAuxLowGear: { ID: 0x001f, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
133
+ internalTemperature: { ID: 0x0020, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
134
+ overheat: { ID: 0x0021, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
135
+ buttonDelay: { ID: 0x0032, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
136
+ deviceBindNumber: { ID: 0x0033, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
137
+ smartBulbMode: { ID: 0x0034, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
138
+ doubleTapUpToParam55: { ID: 0x0035, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
139
+ doubleTapDownToParam56: { ID: 0x0036, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
140
+ brightnessLevelForDoubleTapUp: { ID: 0x0037, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
141
+ brightnessLevelForDoubleTapDown: { ID: 0x0038, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
142
+ defaultLed1ColorWhenOn: { ID: 0x003c, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
143
+ defaultLed1ColorWhenOff: { ID: 0x003d, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
144
+ defaultLed1IntensityWhenOn: { ID: 0x003e, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
145
+ defaultLed1IntensityWhenOff: { ID: 0x003f, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
146
+ defaultLed2ColorWhenOn: { ID: 0x0041, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
147
+ defaultLed2ColorWhenOff: { ID: 0x0042, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
148
+ defaultLed2IntensityWhenOn: { ID: 0x0043, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
149
+ defaultLed2IntensityWhenOff: { ID: 0x0044, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
150
+ defaultLed3ColorWhenOn: { ID: 0x0046, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
151
+ defaultLed3ColorWhenOff: { ID: 0x0047, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
152
+ defaultLed3IntensityWhenOn: { ID: 0x0048, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
153
+ defaultLed3IntensityWhenOff: { ID: 0x0049, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
154
+ defaultLed4ColorWhenOn: { ID: 0x004b, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
155
+ defaultLed4ColorWhenOff: { ID: 0x004c, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
156
+ defaultLed4IntensityWhenOn: { ID: 0x004d, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
157
+ defaultLed4IntensityWhenOff: { ID: 0x004e, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
158
+ defaultLed5ColorWhenOn: { ID: 0x0050, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
159
+ defaultLed5ColorWhenOff: { ID: 0x0051, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
160
+ defaultLed5IntensityWhenOn: { ID: 0x0052, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
161
+ defaultLed5IntensityWhenOff: { ID: 0x0053, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
162
+ defaultLed6ColorWhenOn: { ID: 0x0055, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
163
+ defaultLed6ColorWhenOff: { ID: 0x0056, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
164
+ defaultLed6IntensityWhenOn: { ID: 0x0057, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
165
+ defaultLed6IntensityWhenOff: { ID: 0x0058, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
166
+ defaultLed7ColorWhenOn: { ID: 0x005a, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
167
+ defaultLed7ColorWhenOff: { ID: 0x005b, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
168
+ defaultLed7IntensityWhenOn: { ID: 0x005c, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
169
+ defaultLed7IntensityWhenOff: { ID: 0x005d, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
170
+ ledColorWhenOn: { ID: 0x005f, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
171
+ ledColorWhenOff: { ID: 0x060, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
172
+ ledIntensityWhenOn: { ID: 0x0061, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
173
+ ledIntensityWhenOff: { ID: 0x0062, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
174
+ ledBarScaling: { ID: 0x0064, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
175
+ singleTapBehavior: { ID: 0x0078, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
176
+ fanTimerMode: { ID: 0x0079, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
177
+ auxSwitchUniqueScenes: { ID: 0x007b, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
178
+ bindingOffToOnSyncLevel: { ID: 0x007d, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
179
+ breezeMode: { ID: 0x0081, type: zigbee_herdsman_1.Zcl.DataType.UINT32 },
180
+ fanControlMode: { ID: 0x0082, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
181
+ lowLevelForFanControlMode: { ID: 0x0083, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
182
+ mediumLevelForFanControlMode: { ID: 0x0084, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
183
+ highLevelForFanControlMode: { ID: 0x0085, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
184
+ ledColorForFanControlMode: { ID: 0x0086, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
185
+ localProtection: { ID: 0x0100, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
186
+ remoteProtection: { ID: 0x0101, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
187
+ outputMode: { ID: 0x0102, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
188
+ onOffLedMode: { ID: 0x0103, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
189
+ firmwareUpdateInProgressIndicator: { ID: 0x0104, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
190
+ relayClick: { ID: 0x105, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
191
+ doubleTapClearNotifications: { ID: 0x106, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
192
+ fanLedLevelType: { ID: 0x0107, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
193
+ },
194
+ commands: {
195
+ ledEffect: {
196
+ ID: 1,
197
+ parameters: [
198
+ { name: 'effect', type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
199
+ { name: 'color', type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
200
+ { name: 'level', type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
201
+ { name: 'duration', type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
202
+ ],
203
+ },
204
+ individualLedEffect: {
205
+ ID: 3,
206
+ parameters: [
207
+ { name: 'led', type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
208
+ { name: 'effect', type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
209
+ { name: 'color', type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
210
+ { name: 'level', type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
211
+ { name: 'duration', type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
212
+ ],
213
+ },
214
+ },
215
+ commandsResponse: {},
216
+ }),
217
+ };
218
+ const fanModes = { off: 0, low: 2, smart: 4, medium: 86, high: 170, on: 255 };
219
+ const breezemodes = ['off', 'low', 'medium', 'high'];
220
+ const INOVELLI = 0x122f;
221
+ // Converts brightness level to a fan mode
222
+ const intToFanMode = (value) => {
223
+ let selectedMode = 'low';
224
+ if (value >= fanModes.low) {
225
+ selectedMode = 'low';
226
+ }
227
+ if (value >= fanModes.medium) {
228
+ selectedMode = 'medium';
229
+ }
230
+ if (value >= fanModes.high) {
231
+ selectedMode = 'high';
232
+ }
233
+ if (value == 4) {
234
+ selectedMode = 'smart';
235
+ }
236
+ if (value == 0) {
237
+ selectedMode = 'off';
238
+ }
239
+ return selectedMode;
240
+ };
241
+ /**
242
+ * Convert speed string to int needed for breeze mode calculation.
243
+ * @param speedIn - speed string
244
+ * @returns low = 1, medium = 2, high = 3, off = 0
245
+ */
246
+ const speedToInt = (speedIn) => {
247
+ switch (speedIn) {
248
+ case 'low':
249
+ return 1;
250
+ case 'medium':
251
+ return 2;
252
+ case 'high':
253
+ return 3;
254
+ default:
255
+ return 0;
256
+ }
257
+ };
258
+ // Create Expose list with Inovelli Parameters definitions
259
+ const attributesToExposeList = (ATTRIBUTES, exposesList) => {
260
+ Object.keys(ATTRIBUTES).forEach((key) => {
261
+ if (ATTRIBUTES[key].displayType === 'enum') {
262
+ const enumE = e
263
+ .enum(key, ATTRIBUTES[key].readOnly ? ea.STATE_GET : ea.ALL, Object.keys(ATTRIBUTES[key].values))
264
+ .withDescription(ATTRIBUTES[key].description);
265
+ if (!ATTRIBUTES[key].readOnly) {
266
+ enumE.withCategory(ATTRIBUTES[key].category ?? 'config');
267
+ }
268
+ exposesList.push(enumE);
269
+ }
270
+ else if (ATTRIBUTES[key].displayType === 'binary' || ATTRIBUTES[key].displayType === 'switch') {
271
+ const binary = e
272
+ .binary(key, ATTRIBUTES[key].readOnly ? ea.STATE_GET : ea.ALL,
273
+ // @ts-expect-error ignore
274
+ ATTRIBUTES[key].values.Enabled, ATTRIBUTES[key].values.Disabled)
275
+ .withDescription(ATTRIBUTES[key].description);
276
+ if (!ATTRIBUTES[key].readOnly) {
277
+ binary.withCategory(ATTRIBUTES[key].category ?? 'config');
278
+ }
279
+ exposesList.push(binary);
280
+ }
281
+ else {
282
+ const numeric = e
283
+ .numeric(key, ATTRIBUTES[key].readOnly ? ea.STATE_GET : ea.ALL)
284
+ .withValueMin(ATTRIBUTES[key].min)
285
+ .withValueMax(ATTRIBUTES[key].max);
286
+ if (ATTRIBUTES[key].values) {
287
+ Object.keys(ATTRIBUTES[key].values).forEach((value) => {
288
+ numeric.withPreset(value, ATTRIBUTES[key].values[value], '');
289
+ });
290
+ }
291
+ if (ATTRIBUTES[key].unit) {
292
+ numeric.withUnit(ATTRIBUTES[key].unit);
293
+ }
294
+ numeric.withDescription(ATTRIBUTES[key].description);
295
+ if (!ATTRIBUTES[key].readOnly) {
296
+ numeric.withCategory(ATTRIBUTES[key].category ?? 'config');
297
+ }
298
+ exposesList.push(numeric);
299
+ }
300
+ });
301
+ };
302
+ /**
303
+ * Common Attributes
304
+ *
305
+ * These attributes are shared between all devices with the manufacturer specific Inovelli cluster
306
+ * Some of the descriptions, max, min or value properties may be overridden for each device
307
+ */
308
+ const COMMON_ATTRIBUTES = {
309
+ dimmingSpeedUpRemote: {
310
+ ID: 1,
311
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
312
+ min: 0,
313
+ max: 127,
314
+ description: 'This changes the speed that the light dims up when controlled from the hub. ' +
315
+ 'A setting of 0 turns the light immediately on. Increasing the value slows down the transition speed. ' +
316
+ 'Every number represents 100ms. Default = 25 (2.5s)',
317
+ },
318
+ dimmingSpeedUpLocal: {
319
+ ID: 2,
320
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
321
+ min: 0,
322
+ max: 127,
323
+ description: 'This changes the speed that the light dims up when controlled at the switch. ' +
324
+ 'A setting of 0 turns the light immediately on. Increasing the value slows down the transition speed. ' +
325
+ 'Every number represents 100ms. Default = 127 - Keep in sync with dimmingSpeedUpRemote setting.',
326
+ },
327
+ rampRateOffToOnRemote: {
328
+ ID: 3,
329
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
330
+ min: 0,
331
+ max: 127,
332
+ description: 'This changes the speed that the light turns on when controlled from the hub. ' +
333
+ 'A setting of 0 turns the light immediately on. Increasing the value slows down the transition speed. ' +
334
+ 'Every number represents 100ms. Default = 127 - Keep in sync with dimmingSpeedUpRemote setting.',
335
+ },
336
+ rampRateOffToOnLocal: {
337
+ ID: 4,
338
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
339
+ min: 0,
340
+ max: 127,
341
+ description: 'This changes the speed that the light turns on when controlled at the switch. ' +
342
+ 'A setting of 0 turns the light immediately on. Increasing the value slows down the transition speed. ' +
343
+ 'Every number represents 100ms. Default = 127 - Keep in sync with dimmingSpeedUpRemote setting.',
344
+ },
345
+ dimmingSpeedDownRemote: {
346
+ ID: 5,
347
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
348
+ min: 0,
349
+ max: 127,
350
+ description: 'This changes the speed that the light dims down when controlled from the hub. ' +
351
+ 'A setting of 0 turns the light immediately off. Increasing the value slows down the transition speed. ' +
352
+ 'Every number represents 100ms. Default = 127 - Keep in sync with dimmingSpeedUpRemote setting.',
353
+ },
354
+ dimmingSpeedDownLocal: {
355
+ ID: 6,
356
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
357
+ min: 0,
358
+ max: 127,
359
+ description: 'This changes the speed that the light dims down when controlled at the switch. ' +
360
+ 'A setting of 0 turns the light immediately off. Increasing the value slows down the transition speed. ' +
361
+ 'Every number represents 100ms. Default = 127 - Keep in sync with dimmingSpeedUpLocal setting.',
362
+ },
363
+ rampRateOnToOffRemote: {
364
+ ID: 7,
365
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
366
+ min: 0,
367
+ max: 127,
368
+ description: 'This changes the speed that the light turns off when controlled from the hub. ' +
369
+ "A setting of 'instant' turns the light immediately off. Increasing the value slows down the transition speed. " +
370
+ 'Every number represents 100ms. Default = 127 - Keep in sync with rampRateOffToOnRemote setting.',
371
+ },
372
+ rampRateOnToOffLocal: {
373
+ ID: 8,
374
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
375
+ min: 0,
376
+ max: 127,
377
+ description: 'This changes the speed that the light turns off when controlled at the switch. ' +
378
+ "A setting of 'instant' turns the light immediately off. Increasing the value slows down the transition speed. " +
379
+ 'Every number represents 100ms. Default = 127 - Keep in sync with rampRateOffToOnLocal setting.',
380
+ },
381
+ invertSwitch: {
382
+ ID: 11,
383
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
384
+ displayType: 'enum',
385
+ values: { Yes: 1, No: 0 },
386
+ min: 0,
387
+ max: 1,
388
+ description: 'Inverts the orientation of the switch.' +
389
+ ' Useful when the switch is installed upside down. Essentially up becomes down and down becomes up.',
390
+ },
391
+ autoTimerOff: {
392
+ ID: 12,
393
+ min: 0,
394
+ max: 32767,
395
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT16,
396
+ unit: 'seconds',
397
+ values: { Disabled: 0 },
398
+ description: 'Automatically turns the switch off after this many seconds.' +
399
+ ' When the switch is turned on a timer is started. When the timer expires, the switch is turned off. 0 = Auto off is disabled.',
400
+ },
401
+ defaultLevelLocal: {
402
+ ID: 13,
403
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
404
+ min: 0,
405
+ max: 255,
406
+ description: 'Default level for the load when it is turned on at the switch.' +
407
+ ' A setting of 255 means that the switch will return to the level that it was on before it was turned off.',
408
+ },
409
+ defaultLevelRemote: {
410
+ ID: 14,
411
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
412
+ min: 0,
413
+ max: 255,
414
+ description: 'Default level for the load when it is turned on from the hub.' +
415
+ ' A setting of 255 means that the switch will return to the level that it was on before it was turned off.',
416
+ },
417
+ stateAfterPowerRestored: {
418
+ ID: 15,
419
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
420
+ min: 0,
421
+ max: 255,
422
+ description: 'The state the switch should return to when power is restored after power failure. 0 = off, 1-254 = level, 255 = previous.',
423
+ },
424
+ loadLevelIndicatorTimeout: {
425
+ ID: 17,
426
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
427
+ description: 'Shows the level that the load is at for x number of seconds after the load is adjusted' +
428
+ ' and then returns to the Default LED state. 0 = Stay Off, 1-10 = seconds, 11 = Stay On.',
429
+ displayType: 'enum',
430
+ values: {
431
+ 'Stay Off': 0,
432
+ '1 Second': 1,
433
+ '2 Seconds': 2,
434
+ '3 Seconds': 3,
435
+ '4 Seconds': 4,
436
+ '5 Seconds': 5,
437
+ '6 Seconds': 6,
438
+ '7 Seconds': 7,
439
+ '8 Seconds': 8,
440
+ '9 Seconds': 9,
441
+ '10 Seconds': 10,
442
+ 'Stay On': 11,
443
+ },
444
+ min: 0,
445
+ max: 11,
446
+ },
447
+ switchType: {
448
+ ID: 22,
449
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
450
+ displayType: 'enum',
451
+ values: { 'Single Pole': 0, '3-Way Dumb Switch': 1, '3-Way Aux Switch': 2, 'Single-Pole Full Sine Wave': 3 },
452
+ min: 0,
453
+ max: 3,
454
+ description: 'Set the switch configuration.',
455
+ },
456
+ internalTemperature: {
457
+ ID: 32,
458
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
459
+ min: 0,
460
+ max: 127,
461
+ readOnly: true,
462
+ description: 'The temperature measured by the temperature sensor inside the chip, in degrees Celsius',
463
+ category: 'diagnostic',
464
+ unit: '°C',
465
+ },
466
+ overheat: {
467
+ ID: 33,
468
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
469
+ displayType: 'enum',
470
+ values: { 'No Alert': 0, Overheated: 1 },
471
+ min: 0,
472
+ max: 1,
473
+ readOnly: true,
474
+ description: 'Indicates if the internal chipset is currently in an overheated state.',
475
+ },
476
+ buttonDelay: {
477
+ ID: 50,
478
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
479
+ values: {
480
+ '0ms': 0,
481
+ '100ms': 1,
482
+ '200ms': 2,
483
+ '300ms': 3,
484
+ '400ms': 4,
485
+ '500ms': 5,
486
+ '600ms': 6,
487
+ '700ms': 7,
488
+ '800ms': 8,
489
+ '900ms': 9,
490
+ },
491
+ displayType: 'enum',
492
+ min: 0,
493
+ max: 9,
494
+ description: 'This will set the button press delay. 0 = no delay (Disables Button Press Events), Default = 500ms.',
495
+ },
496
+ deviceBindNumber: {
497
+ ID: 51,
498
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
499
+ readOnly: true,
500
+ description: 'The number of devices currently bound (excluding gateways) and counts one group as two devices',
501
+ },
502
+ smartBulbMode: {
503
+ ID: 52,
504
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
505
+ displayType: 'enum',
506
+ values: { Disabled: 0, 'Smart Bulb Mode': 1 },
507
+ description: 'For use with Smart Bulbs that need constant power and are controlled via commands rather than power.',
508
+ },
509
+ doubleTapUpToParam55: {
510
+ ID: 53,
511
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
512
+ displayType: 'enum',
513
+ values: { Disabled: 0, Enabled: 1 },
514
+ description: 'Enable or Disable setting level to parameter 55 on double-tap UP.',
515
+ },
516
+ doubleTapDownToParam56: {
517
+ ID: 54,
518
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
519
+ displayType: 'enum',
520
+ values: { Disabled: 0, Enabled: 1 },
521
+ description: 'Enable or Disable setting level to parameter 56 on double-tap DOWN.',
522
+ },
523
+ brightnessLevelForDoubleTapUp: {
524
+ ID: 55,
525
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
526
+ min: 2,
527
+ max: 255,
528
+ description: 'Set this level on double-tap UP (if enabled by P53). 255 = send ON command.',
529
+ },
530
+ brightnessLevelForDoubleTapDown: {
531
+ ID: 56,
532
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
533
+ min: 0,
534
+ max: 255,
535
+ description: 'Set this level on double-tap DOWN (if enabled by P54). 255 = send OFF command.',
536
+ },
537
+ ledColorWhenOn: {
538
+ ID: 95,
539
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
540
+ min: 0,
541
+ max: 255,
542
+ values: {
543
+ Red: 0,
544
+ Orange: 21,
545
+ Yellow: 42,
546
+ Green: 85,
547
+ Cyan: 127,
548
+ Blue: 170,
549
+ Violet: 212,
550
+ Pink: 234,
551
+ White: 255,
552
+ },
553
+ description: 'Set the color of the LED Indicator when the load is on.',
554
+ },
555
+ ledColorWhenOff: {
556
+ ID: 96,
557
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
558
+ min: 0,
559
+ max: 255,
560
+ values: {
561
+ Red: 0,
562
+ Orange: 21,
563
+ Yellow: 42,
564
+ Green: 85,
565
+ Cyan: 127,
566
+ Blue: 170,
567
+ Violet: 212,
568
+ Pink: 234,
569
+ White: 255,
570
+ },
571
+ description: 'Set the color of the LED Indicator when the load is off.',
572
+ },
573
+ ledIntensityWhenOn: {
574
+ ID: 97,
575
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
576
+ min: 0,
577
+ max: 100,
578
+ description: 'Set the intensity of the LED Indicator when the load is on.',
579
+ },
580
+ ledIntensityWhenOff: {
581
+ ID: 98,
582
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
583
+ min: 0,
584
+ max: 100,
585
+ description: 'Set the intensity of the LED Indicator when the load is off.',
586
+ },
587
+ singleTapBehavior: {
588
+ ID: 120,
589
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
590
+ displayType: 'enum',
591
+ values: { 'Old Behavior': 0, 'New Behavior': 1, 'Down Always Off': 2 },
592
+ description: 'Behavior of single tapping the on or off button. Old behavior turns the switch on or off. ' +
593
+ 'New behavior cycles through the levels set by P131-133. Down Always Off is like the new behavior but ' +
594
+ 'down always turns the switch off instead of going to next lower speed.',
595
+ },
596
+ fanControlMode: {
597
+ ID: 130,
598
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
599
+ displayType: 'enum',
600
+ values: { Disabled: 0, 'Multi Tap': 1, Cycle: 2 },
601
+ description: 'Which mode to use when binding EP3 (config button) to another device (like a fan module).',
602
+ },
603
+ lowLevelForFanControlMode: {
604
+ ID: 131,
605
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
606
+ min: 2,
607
+ max: 254,
608
+ description: 'Level to send to device bound to EP3 when set to low.',
609
+ },
610
+ mediumLevelForFanControlMode: {
611
+ ID: 132,
612
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
613
+ min: 2,
614
+ max: 254,
615
+ description: 'Level to send to device bound to EP3 when set to medium.',
616
+ },
617
+ highLevelForFanControlMode: {
618
+ ID: 133,
619
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
620
+ min: 2,
621
+ max: 254,
622
+ description: 'Level to send to device bound to EP3 when set to high.',
623
+ },
624
+ ledColorForFanControlMode: {
625
+ ID: 134,
626
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
627
+ min: 0,
628
+ max: 255,
629
+ values: {
630
+ Red: 0,
631
+ Orange: 21,
632
+ Yellow: 42,
633
+ Green: 85,
634
+ Cyan: 127,
635
+ Blue: 170,
636
+ Violet: 212,
637
+ Pink: 234,
638
+ White: 255,
639
+ },
640
+ description: 'LED color used to display fan control mode.',
641
+ },
642
+ auxSwitchUniqueScenes: {
643
+ ID: 123,
644
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
645
+ displayType: 'enum',
646
+ values: { Disabled: 0, Enabled: 1 },
647
+ description: 'Have unique scene numbers for scenes activated with the aux switch.',
648
+ },
649
+ bindingOffToOnSyncLevel: {
650
+ ID: 125,
651
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
652
+ displayType: 'enum',
653
+ values: { Disabled: 0, Enabled: 1 },
654
+ description: 'Send Move_To_Level using Default Level with Off/On to bound devices.',
655
+ },
656
+ localProtection: {
657
+ ID: 256,
658
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
659
+ values: { Disabled: 0, Enabled: 1 },
660
+ description: 'Ability to control switch from the wall.',
661
+ displayType: 'enum',
662
+ },
663
+ remoteProtection: {
664
+ ID: 257,
665
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
666
+ values: { Disabled: 0, Enabled: 1 },
667
+ readOnly: true,
668
+ description: 'Ability to control switch from the hub.',
669
+ displayType: 'enum',
670
+ },
671
+ onOffLedMode: {
672
+ ID: 259,
673
+ min: 0,
674
+ max: 1,
675
+ values: { All: 0, One: 1 },
676
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
677
+ description: 'When the device is in On/Off mode, use full LED bar or just one LED.',
678
+ displayType: 'enum',
679
+ },
680
+ firmwareUpdateInProgressIndicator: {
681
+ ID: 260,
682
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
683
+ values: { Disabled: 0, Enabled: 1 },
684
+ description: 'Display progress on LED bar during firmware update.',
685
+ displayType: 'enum',
686
+ },
687
+ defaultLed1ColorWhenOn: {
688
+ ID: 60,
689
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
690
+ min: 0,
691
+ max: 255,
692
+ description: '0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.',
693
+ },
694
+ defaultLed1ColorWhenOff: {
695
+ ID: 61,
696
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
697
+ min: 0,
698
+ max: 255,
699
+ description: '0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.',
700
+ },
701
+ defaultLed1IntensityWhenOn: {
702
+ ID: 62,
703
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
704
+ min: 0,
705
+ max: 101,
706
+ description: 'Intesity of LED strip when on. 101 = Synchronized with default all LED strip intensity parameter.',
707
+ },
708
+ defaultLed1IntensityWhenOff: {
709
+ ID: 63,
710
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
711
+ min: 0,
712
+ max: 101,
713
+ description: 'Intesity of LED strip when off. 101 = Synchronized with default all LED strip intensity parameter.',
714
+ },
715
+ defaultLed2ColorWhenOn: {
716
+ ID: 65,
717
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
718
+ min: 0,
719
+ max: 255,
720
+ description: '0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.',
721
+ },
722
+ defaultLed2ColorWhenOff: {
723
+ ID: 66,
724
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
725
+ min: 0,
726
+ max: 255,
727
+ description: '0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.',
728
+ },
729
+ defaultLed2IntensityWhenOn: {
730
+ ID: 67,
731
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
732
+ min: 0,
733
+ max: 101,
734
+ description: 'Intesity of LED strip when on. 101 = Synchronized with default all LED strip intensity parameter.',
735
+ },
736
+ defaultLed2IntensityWhenOff: {
737
+ ID: 68,
738
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
739
+ min: 0,
740
+ max: 101,
741
+ description: 'Intesity of LED strip when off. 101 = Synchronized with default all LED strip intensity parameter.',
742
+ },
743
+ defaultLed3ColorWhenOn: {
744
+ ID: 70,
745
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
746
+ min: 0,
747
+ max: 255,
748
+ description: '0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.',
749
+ },
750
+ defaultLed3ColorWhenOff: {
751
+ ID: 71,
752
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
753
+ min: 0,
754
+ max: 255,
755
+ description: '0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.',
756
+ },
757
+ defaultLed3IntensityWhenOn: {
758
+ ID: 72,
759
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
760
+ min: 0,
761
+ max: 101,
762
+ description: 'Intesity of LED strip when on. 101 = Synchronized with default all LED strip intensity parameter.',
763
+ },
764
+ defaultLed3IntensityWhenOff: {
765
+ ID: 73,
766
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
767
+ min: 0,
768
+ max: 101,
769
+ description: 'Intesity of LED strip when off. 101 = Synchronized with default all LED strip intensity parameter.',
770
+ },
771
+ defaultLed4ColorWhenOn: {
772
+ ID: 75,
773
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
774
+ min: 0,
775
+ max: 255,
776
+ description: '0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.',
777
+ },
778
+ defaultLed4ColorWhenOff: {
779
+ ID: 76,
780
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
781
+ min: 0,
782
+ max: 255,
783
+ description: '0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.',
784
+ },
785
+ defaultLed4IntensityWhenOn: {
786
+ ID: 77,
787
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
788
+ min: 0,
789
+ max: 101,
790
+ description: 'Intesity of LED strip when on. 101 = Synchronized with default all LED strip intensity parameter.',
791
+ },
792
+ defaultLed4IntensityWhenOff: {
793
+ ID: 78,
794
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
795
+ min: 0,
796
+ max: 101,
797
+ description: 'Intesity of LED strip when off. 101 = Synchronized with default all LED strip intensity parameter.',
798
+ },
799
+ defaultLed5ColorWhenOn: {
800
+ ID: 80,
801
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
802
+ min: 0,
803
+ max: 255,
804
+ description: '0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.',
805
+ },
806
+ defaultLed5ColorWhenOff: {
807
+ ID: 81,
808
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
809
+ min: 0,
810
+ max: 255,
811
+ description: '0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.',
812
+ },
813
+ defaultLed5IntensityWhenOn: {
814
+ ID: 82,
815
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
816
+ min: 0,
817
+ max: 101,
818
+ description: 'Intesity of LED strip when on. 101 = Synchronized with default all LED strip intensity parameter.',
819
+ },
820
+ defaultLed5IntensityWhenOff: {
821
+ ID: 83,
822
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
823
+ min: 0,
824
+ max: 101,
825
+ description: 'Intesity of LED strip when off. 101 = Synchronized with default all LED strip intensity parameter.',
826
+ },
827
+ defaultLed6ColorWhenOn: {
828
+ ID: 85,
829
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
830
+ min: 0,
831
+ max: 255,
832
+ description: '0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.',
833
+ },
834
+ defaultLed6ColorWhenOff: {
835
+ ID: 86,
836
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
837
+ min: 0,
838
+ max: 255,
839
+ description: '0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.',
840
+ },
841
+ defaultLed6IntensityWhenOn: {
842
+ ID: 87,
843
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
844
+ min: 0,
845
+ max: 101,
846
+ description: 'Intesity of LED strip when on. 101 = Synchronized with default all LED strip intensity parameter.',
847
+ },
848
+ defaultLed6IntensityWhenOff: {
849
+ ID: 88,
850
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
851
+ min: 0,
852
+ max: 101,
853
+ description: 'Intesity of LED strip when off. 101 = Synchronized with default all LED strip intensity parameter.',
854
+ },
855
+ defaultLed7ColorWhenOn: {
856
+ ID: 90,
857
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
858
+ min: 0,
859
+ max: 255,
860
+ description: '0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.',
861
+ },
862
+ defaultLed7ColorWhenOff: {
863
+ ID: 91,
864
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
865
+ min: 0,
866
+ max: 255,
867
+ description: '0-254:This is the color of the LED strip in a hex representation. 255:Synchronization with default all LED strip color parameter.',
868
+ },
869
+ defaultLed7IntensityWhenOn: {
870
+ ID: 92,
871
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
872
+ min: 0,
873
+ max: 101,
874
+ description: 'Intesity of LED strip when on. 101 = Synchronized with default all LED strip intensity parameter.',
875
+ },
876
+ defaultLed7IntensityWhenOff: {
877
+ ID: 93,
878
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
879
+ min: 0,
880
+ max: 101,
881
+ description: 'Intesity of LED strip when off. 101 = Synchronized with default all LED strip intensity parameter.',
882
+ },
883
+ doubleTapClearNotifications: {
884
+ ID: 262,
885
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
886
+ min: 0,
887
+ max: 1,
888
+ description: 'Double-Tap the Config button to clear notifications.',
889
+ values: { 'Enabled (Default)': 0, Disabled: 1 },
890
+ displayType: 'enum',
891
+ },
892
+ fanLedLevelType: {
893
+ ID: 263,
894
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
895
+ min: 0,
896
+ max: 10,
897
+ values: { 'Limitless (like VZM31)': 0, 'Adaptive LED': 10 },
898
+ description: 'Level display of the LED Strip',
899
+ },
900
+ };
901
+ const COMMON_DIMMER_ATTRIBUTES = {
902
+ ...COMMON_ATTRIBUTES,
903
+ minimumLevel: {
904
+ ID: 9,
905
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
906
+ min: 1,
907
+ max: 254,
908
+ description: 'The minimum level that the dimmer allows the bulb to be dimmed to. ' +
909
+ 'Useful when the user has an LED bulb that does not turn on or flickers at a lower level.',
910
+ },
911
+ maximumLevel: {
912
+ ID: 10,
913
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
914
+ min: 2,
915
+ max: 255,
916
+ description: 'The maximum level that the dimmer allows the bulb to be dimmed to.' +
917
+ 'Useful when the user has an LED bulb that reaches its maximum level before the ' +
918
+ 'dimmer value of 99 or when the user wants to limit the maximum brightness.',
919
+ },
920
+ powerType: {
921
+ ID: 21,
922
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
923
+ displayType: 'enum',
924
+ values: { 'Non Neutral': 0, Neutral: 1 },
925
+ min: 0,
926
+ max: 1,
927
+ readOnly: true,
928
+ description: 'Set the power type for the device.',
929
+ },
930
+ outputMode: {
931
+ ID: 258,
932
+ min: 0,
933
+ max: 1,
934
+ values: { Dimmer: 0, 'On/Off': 1 },
935
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
936
+ description: 'Use device as a Dimmer or an On/Off switch.',
937
+ displayType: 'enum',
938
+ },
939
+ };
940
+ const COMMON_DIMMER_ON_OFF_ATTRIBUTES = {
941
+ ledBarScaling: {
942
+ ID: 100,
943
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
944
+ displayType: 'enum',
945
+ values: { 'Gen3 method (VZM-style)': 0, 'Gen2 method (LZW-style)': 1 },
946
+ description: 'Method used for scaling.',
947
+ },
948
+ activePowerReports: {
949
+ ID: 18,
950
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
951
+ min: 0,
952
+ max: 100,
953
+ description: 'Percent power level change that will result in a new power report being sent. 0 = Disabled',
954
+ },
955
+ periodicPowerAndEnergyReports: {
956
+ ID: 19,
957
+ min: 0,
958
+ max: 32767,
959
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT16,
960
+ description: 'Time period between consecutive power & energy reports being sent (in seconds). The timer is reset after each report is sent.',
961
+ },
962
+ activeEnergyReports: {
963
+ ID: 20,
964
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT16,
965
+ min: 0,
966
+ max: 32767,
967
+ description: 'Energy reports Energy level change which will result in sending a new energy report.' +
968
+ '0 = disabled, 1-32767 = 0.01kWh-327.67kWh. Default setting: 10 (0.1 kWh)',
969
+ },
970
+ };
971
+ const VZM30_ATTRIBUTES = {
972
+ ...COMMON_ATTRIBUTES,
973
+ ...COMMON_DIMMER_ON_OFF_ATTRIBUTES,
974
+ switchType: {
975
+ ...COMMON_ATTRIBUTES.switchType,
976
+ values: { 'Single Pole': 0, 'Aux Switch': 1 },
977
+ max: 1,
978
+ },
979
+ };
980
+ const VZM31_ATTRIBUTES = {
981
+ ...COMMON_DIMMER_ATTRIBUTES,
982
+ ...COMMON_DIMMER_ON_OFF_ATTRIBUTES,
983
+ quickStartTime: {
984
+ ID: 23,
985
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
986
+ min: 0,
987
+ max: 60,
988
+ description: 'Duration of full power output while lamp tranisitions from Off to On. In 60th of second. 0 = disable, 1 = 1/60s, 60 = 1s',
989
+ },
990
+ quickStartLevel: {
991
+ ID: 24,
992
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
993
+ min: 1,
994
+ max: 254,
995
+ description: 'Level of power output during Quick Start Light time (P23).',
996
+ },
997
+ higherOutputInNonNeutral: {
998
+ ID: 25,
999
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
1000
+ displayType: 'enum',
1001
+ values: { 'Disabled (default)': 0, Enabled: 1 },
1002
+ min: 0,
1003
+ max: 1,
1004
+ description: 'Increase level in non-neutral mode',
1005
+ },
1006
+ relayClick: {
1007
+ ID: 261,
1008
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
1009
+ min: 0,
1010
+ max: 1,
1011
+ description: 'In neutral on/off setups, the default is to have a clicking sound to notify you that the relay ' +
1012
+ 'is open or closed. You may disable this sound by creating a, “simulated” on/off where the switch ' +
1013
+ 'only will turn onto 100 or off to 0.',
1014
+ values: { 'Disabled (Click Sound On)': 0, 'Enabled (Click Sound Off)': 1 },
1015
+ displayType: 'enum',
1016
+ },
1017
+ };
1018
+ const VZM35_ATTRIBUTES = {
1019
+ ...COMMON_DIMMER_ATTRIBUTES,
1020
+ minimumLevel: {
1021
+ ...COMMON_DIMMER_ATTRIBUTES.minimumLevel,
1022
+ description: '1-84: The level corresponding to the fan is Low, Medium, High. ' +
1023
+ '85-170: The level corresponding to the fan is Medium, Medium, High. ' +
1024
+ '170-254: The level corresponding to the fan is High, High, High ',
1025
+ },
1026
+ maximumLevel: {
1027
+ ...COMMON_DIMMER_ATTRIBUTES.maximumLevel,
1028
+ description: '2-84: The level corresponding to the fan is Low, Medium, High.',
1029
+ },
1030
+ switchType: {
1031
+ ...COMMON_ATTRIBUTES.switchType,
1032
+ values: { 'Single Pole': 0, 'Aux Switch': 1 },
1033
+ max: 1,
1034
+ },
1035
+ smartBulbMode: {
1036
+ ...COMMON_ATTRIBUTES.smartBulbMode,
1037
+ description: 'For use with Smart Fans that need constant power and are controlled via commands rather than power.',
1038
+ values: { Disabled: 0, 'Smart Fan Mode': 1 },
1039
+ },
1040
+ quickStartTime: {
1041
+ ID: 23,
1042
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
1043
+ min: 0,
1044
+ max: 60,
1045
+ description: 'Duration of full power output while fan tranisitions from Off to On. In 60th of second. 0 = disable, 1 = 1/60s, 60 = 1s',
1046
+ },
1047
+ nonNeutralAuxMediumGear: {
1048
+ ID: 30,
1049
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
1050
+ min: 42,
1051
+ max: 135,
1052
+ description: 'Identification value in Non-nuetral, medium gear, aux switch',
1053
+ },
1054
+ nonNeutralAuxLowGear: {
1055
+ ID: 31,
1056
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
1057
+ min: 42,
1058
+ max: 135,
1059
+ description: 'Identification value in Non-nuetral, low gear, aux switch',
1060
+ },
1061
+ outputMode: {
1062
+ ...COMMON_DIMMER_ATTRIBUTES.outputMode,
1063
+ values: { 'Ceiling Fan (3-Speed)': 0, 'Exhaust Fan (On/Off)': 1 },
1064
+ description: 'Use device in ceiling fan (3-Speed) or in exhaust fan (On/Off) mode.',
1065
+ },
1066
+ fanTimerMode: {
1067
+ ID: 121,
1068
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
1069
+ displayType: 'enum',
1070
+ values: { Disabled: 0, Enabled: 1 },
1071
+ description: 'Enable or disable advanced timer mode to have the switch act like a bathroom fan timer',
1072
+ },
1073
+ };
1074
+ const VZM36_ATTRIBUTES = {
1075
+ dimmingSpeedUpRemote_1: { ...COMMON_ATTRIBUTES.dimmingSpeedUpRemote },
1076
+ rampRateOffToOnRemote_1: { ...COMMON_ATTRIBUTES.rampRateOffToOnRemote },
1077
+ dimmingSpeedDownRemote_1: { ...COMMON_ATTRIBUTES.dimmingSpeedDownRemote },
1078
+ rampRateOnToOffRemote_1: { ...COMMON_ATTRIBUTES.rampRateOnToOffRemote },
1079
+ minimumLevel_1: { ...COMMON_DIMMER_ATTRIBUTES.minimumLevel },
1080
+ maximumLevel_1: { ...COMMON_DIMMER_ATTRIBUTES.maximumLevel },
1081
+ autoTimerOff_1: {
1082
+ ...COMMON_ATTRIBUTES.autoTimerOff,
1083
+ description: 'Automatically turns the light off after this many seconds.' +
1084
+ ' When the light is turned on a timer is started. When the timer expires, the light is turned off. 0 = Auto off is disabled.',
1085
+ },
1086
+ defaultLevelRemote_1: {
1087
+ ...COMMON_ATTRIBUTES.defaultLevelRemote,
1088
+ description: 'Default level for the light when it is turned on from the hub.' +
1089
+ ' A setting of 255 means that the light will return to the level that it was on before it was turned off.',
1090
+ },
1091
+ stateAfterPowerRestored_1: {
1092
+ ...COMMON_ATTRIBUTES.stateAfterPowerRestored,
1093
+ description: 'The state the light should return to when power is restored after power failure. 0 = off, 1-254 = level, 255 = previous.',
1094
+ },
1095
+ higherOutputInNonNeutral_1: {
1096
+ ID: 25,
1097
+ dataType: zigbee_herdsman_1.Zcl.DataType.BOOLEAN,
1098
+ displayType: 'enum',
1099
+ values: { 'Disabled (default)': 0, Enabled: 1 },
1100
+ min: 0,
1101
+ max: 1,
1102
+ description: 'Increase level in non-neutral mode for light.',
1103
+ },
1104
+ quickStartTime_1: {
1105
+ ID: 23,
1106
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
1107
+ min: 0,
1108
+ max: 60,
1109
+ description: 'Duration of full power output while lamp tranisitions from Off to On. In 60th of second. 0 = disable, 1 = 1/60s, 60 = 1s',
1110
+ },
1111
+ quickStartLevel_1: {
1112
+ ID: 24,
1113
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
1114
+ min: 1,
1115
+ max: 254,
1116
+ description: 'Level of power output during Quick Start Light time (P23).',
1117
+ },
1118
+ leadingTrailingEdge_1: {
1119
+ ID: 26,
1120
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
1121
+ displayType: 'enum',
1122
+ values: { 'Leading Edge': 0, 'Trailing Edge': 1 },
1123
+ min: 0,
1124
+ max: 1,
1125
+ description: 'Leading Edge has a value of 0 and is the default value, whereas Trailing Edge has a value of ' +
1126
+ '1. Please note that Trailing Edge is only available on neutral single-pole and neutral multi-way with an ' +
1127
+ 'aux/add-on switch (multi-way with a dumb/existing switch and non-neutral setups are not supported and ' +
1128
+ 'will default back to Leading Edge).',
1129
+ },
1130
+ smartBulbMode_1: { ...COMMON_ATTRIBUTES.smartBulbMode },
1131
+ ledColorWhenOn_1: { ...COMMON_ATTRIBUTES.ledColorWhenOn },
1132
+ ledIntensityWhenOn_1: { ...COMMON_ATTRIBUTES.ledIntensityWhenOn },
1133
+ // remote protection is readonly...
1134
+ outputMode_1: { ...COMMON_DIMMER_ATTRIBUTES.outputMode },
1135
+ // Endpoint 2 (Fan)
1136
+ dimmingSpeedUpRemote_2: {
1137
+ ...COMMON_ATTRIBUTES.dimmingSpeedUpRemote,
1138
+ description: 'This changes the speed that the fan ramps up when controlled from the hub. ' +
1139
+ 'A setting of 0 turns the fan immediately on. Increasing the value slows down the transition speed. ' +
1140
+ 'Every number represents 100ms. Default = 25 (2.5s)',
1141
+ },
1142
+ rampRateOffToOnRemote_2: {
1143
+ ...COMMON_ATTRIBUTES.rampRateOffToOnRemote,
1144
+ description: 'This changes the speed that the fan turns on when controlled from the hub. ' +
1145
+ 'A setting of 0 turns the fan immediately on. Increasing the value slows down the transition speed. ' +
1146
+ 'Every number represents 100ms. Default = 127 - Keep in sync with dimmingSpeedUpRemote setting.',
1147
+ },
1148
+ dimmingSpeedDownRemote_2: {
1149
+ ...COMMON_ATTRIBUTES.dimmingSpeedDownRemote,
1150
+ description: 'This changes the speed that the fan ramps down when controlled from the hub. ' +
1151
+ 'A setting of 0 turns the fan immediately off. Increasing the value slows down the transition speed. ' +
1152
+ 'Every number represents 100ms. Default = 127 - Keep in sync with dimmingSpeedUpRemote setting.',
1153
+ },
1154
+ rampRateOnToOffRemote_2: {
1155
+ ...COMMON_ATTRIBUTES.rampRateOnToOffRemote,
1156
+ description: 'This changes the speed that the fan turns off when controlled from the hub. ' +
1157
+ "A setting of 'instant' turns the fan immediately off. Increasing the value slows down the transition speed. " +
1158
+ 'Every number represents 100ms. Default = 127 - Keep in sync with rampRateOffToOnRemote setting.',
1159
+ },
1160
+ minimumLevel_2: {
1161
+ ...COMMON_DIMMER_ATTRIBUTES.minimumLevel,
1162
+ description: 'The minimum level that the fan can be set to.',
1163
+ },
1164
+ maximumLevel_2: {
1165
+ ...COMMON_DIMMER_ATTRIBUTES.maximumLevel,
1166
+ description: 'The maximum level that the fan can be set to.',
1167
+ },
1168
+ autoTimerOff_2: {
1169
+ ...COMMON_ATTRIBUTES.autoTimerOff,
1170
+ description: 'Automatically turns the fan off after this many seconds.' +
1171
+ ' When the fan is turned on a timer is started. When the timer expires, the switch is turned off. 0 = Auto off is disabled.',
1172
+ },
1173
+ defaultLevelRemote_2: {
1174
+ ...COMMON_ATTRIBUTES.defaultLevelRemote,
1175
+ description: 'Default level for the fan when it is turned on from the hub.' +
1176
+ ' A setting of 255 means that the fan will return to the level that it was on before it was turned off.',
1177
+ },
1178
+ stateAfterPowerRestored_2: {
1179
+ ...COMMON_ATTRIBUTES.stateAfterPowerRestored,
1180
+ description: 'The state the fan should return to when power is restored after power failure. 0 = off, 1-254 = level, 255 = previous.',
1181
+ },
1182
+ quickStartTime_2: {
1183
+ ID: 23,
1184
+ dataType: zigbee_herdsman_1.Zcl.DataType.UINT8,
1185
+ min: 0,
1186
+ max: 60,
1187
+ description: 'Duration of full power output while fan tranisitions from Off to On. In 60th of second. 0 = disable, 1 = 1/60s, 60 = 1s',
1188
+ },
1189
+ // power type readonly
1190
+ // internal temp readonly
1191
+ // overheat readonly
1192
+ smartBulbMode_2: {
1193
+ ...COMMON_DIMMER_ATTRIBUTES.smartBulbMode,
1194
+ values: { Disabled: 0, 'Smart Fan Mode': 1 },
1195
+ description: 'For use with Smart Fans that need constant power and are controlled via commands rather than power.',
1196
+ },
1197
+ // remote protection readonly..
1198
+ outputMode_2: {
1199
+ ...COMMON_DIMMER_ATTRIBUTES.outputMode,
1200
+ values: { 'Ceiling Fan (3-Speed)': 0, 'Exhaust Fan (On/Off)': 1 },
1201
+ description: 'Use device in ceiling fan (3-Speed) or in exhaust fan (On/Off) mode.',
1202
+ },
1203
+ };
1204
+ const tzLocal = {
1205
+ inovelli_parameters: (ATTRIBUTES) => ({
1206
+ key: Object.keys(ATTRIBUTES).filter((a) => !ATTRIBUTES[a].readOnly),
1207
+ convertSet: async (entity, key, value, meta) => {
1208
+ // Check key to see if there is an endpoint postfix for the VZM36
1209
+ const keysplit = key.split('_');
1210
+ let entityToUse = entity;
1211
+ if (keysplit.length === 2) {
1212
+ entityToUse = meta.device.getEndpoint(Number(keysplit[1]));
1213
+ }
1214
+ if (!(key in ATTRIBUTES)) {
1215
+ return;
1216
+ }
1217
+ const payload = {
1218
+ [ATTRIBUTES[key].ID]: {
1219
+ value: ATTRIBUTES[key].displayType === 'enum'
1220
+ ? // @ts-expect-error ignore
1221
+ ATTRIBUTES[key].values[value]
1222
+ : value,
1223
+ type: ATTRIBUTES[key].dataType,
1224
+ },
1225
+ };
1226
+ await entityToUse.write('manuSpecificInovelli', payload, {
1227
+ manufacturerCode: INOVELLI,
1228
+ });
1229
+ return {
1230
+ state: {
1231
+ [key]: value,
1232
+ },
1233
+ };
1234
+ },
1235
+ convertGet: async (entity, key, meta) => {
1236
+ // Check key to see if there is an endpoint postfix for the VZM36
1237
+ const keysplit = key.split('_');
1238
+ let entityToUse = entity;
1239
+ let keyToUse = key;
1240
+ if (keysplit.length === 2) {
1241
+ entityToUse = meta.device.getEndpoint(Number(keysplit[1]));
1242
+ keyToUse = keysplit[0];
1243
+ }
1244
+ await entityToUse.read('manuSpecificInovelli', [keyToUse], {
1245
+ manufacturerCode: INOVELLI,
1246
+ });
1247
+ },
1248
+ }),
1249
+ inovelli_parameters_readOnly: (ATTRIBUTES) => ({
1250
+ key: Object.keys(ATTRIBUTES).filter((a) => ATTRIBUTES[a].readOnly),
1251
+ convertGet: async (entity, key, meta) => {
1252
+ // Check key to see if there is an endpoint postfix for the VZM36
1253
+ const keysplit = key.split('_');
1254
+ let entityToUse = entity;
1255
+ let keyToUse = key;
1256
+ if (keysplit.length === 2) {
1257
+ entityToUse = meta.device.getEndpoint(Number(keysplit[1]));
1258
+ keyToUse = keysplit[0];
1259
+ }
1260
+ await entityToUse.read('manuSpecificInovelli', [keyToUse], {
1261
+ manufacturerCode: INOVELLI,
1262
+ });
1263
+ },
1264
+ }),
1265
+ inovelli_led_effect: {
1266
+ key: ['led_effect'],
1267
+ convertSet: async (entity, key, values, meta) => {
1268
+ await entity.command('manuSpecificInovelli', 'ledEffect', {
1269
+ // @ts-expect-error ignore
1270
+ effect: ledEffects[values.effect],
1271
+ // @ts-expect-error ignore
1272
+ color: Math.min(Math.max(0, values.color), 255),
1273
+ // @ts-expect-error ignore
1274
+ level: Math.min(Math.max(0, values.level), 100),
1275
+ // @ts-expect-error ignore
1276
+ duration: Math.min(Math.max(0, values.duration), 255),
1277
+ }, { disableResponse: true, disableDefaultResponse: true });
1278
+ return { state: { [key]: values } };
1279
+ },
1280
+ },
1281
+ inovelli_individual_led_effect: {
1282
+ key: ['individual_led_effect'],
1283
+ convertSet: async (entity, key, values, meta) => {
1284
+ await entity.command('manuSpecificInovelli', 'individualLedEffect', {
1285
+ // @ts-expect-error ignore
1286
+ led: Math.min(Math.max(0, parseInt(values.led)), 7),
1287
+ // @ts-expect-error ignore
1288
+ effect: individualLedEffects[values.effect],
1289
+ // @ts-expect-error ignore
1290
+ color: Math.min(Math.max(0, values.color), 255),
1291
+ // @ts-expect-error ignore
1292
+ level: Math.min(Math.max(0, values.level), 100),
1293
+ // @ts-expect-error ignore
1294
+ duration: Math.min(Math.max(0, values.duration), 255),
1295
+ }, { disableResponse: true, disableDefaultResponse: true });
1296
+ return { state: { [key]: values } };
1297
+ },
1298
+ },
1299
+ /**
1300
+ * Inovelli VZM31SN has a default transition property that the device should
1301
+ * fallback to if a transition is not specified by passing 0xffff
1302
+ */
1303
+ light_onoff_brightness_inovelli: {
1304
+ key: ['state', 'brightness', 'brightness_percent'],
1305
+ convertSet: async (entity, key, value, meta) => {
1306
+ const { message } = meta;
1307
+ const transition = utils.getTransition(entity, 'brightness', meta);
1308
+ const turnsOffAtBrightness1 = utils.getMetaValue(entity, meta.mapped, 'turnsOffAtBrightness1', 'allEqual', false);
1309
+ let state = message.state !== undefined
1310
+ ? // @ts-expect-error ignore
1311
+ message.state.toLowerCase()
1312
+ : undefined;
1313
+ let brightness = undefined;
1314
+ if (message.brightness !== undefined) {
1315
+ brightness = Number(message.brightness);
1316
+ }
1317
+ else if (message.brightness_percent !== undefined) {
1318
+ brightness = utils.mapNumberRange(Number(message.brightness_percent), 0, 100, 0, 255);
1319
+ }
1320
+ if (brightness !== undefined && (isNaN(brightness) || brightness < 0 || brightness > 255)) {
1321
+ // Allow 255 value, changing this to 254 would be a breaking change.
1322
+ throw new Error(`Brightness value of message: '${JSON.stringify(message)}' invalid, must be a number >= 0 and =< 254`);
1323
+ }
1324
+ if (state !== undefined && ['on', 'off', 'toggle'].includes(state) === false) {
1325
+ throw new Error(`State value of message: '${JSON.stringify(message)}' invalid, must be 'ON', 'OFF' or 'TOGGLE'`);
1326
+ }
1327
+ if (state === 'toggle' || state === 'off' || (brightness === undefined && state === 'on')) {
1328
+ if (transition.specified && transition.time > 0) {
1329
+ if (state === 'toggle') {
1330
+ state = meta.state.state === 'ON' ? 'off' : 'on';
1331
+ }
1332
+ if (state === 'off' && meta.state.brightness && meta.state.state === 'ON') {
1333
+ // https://github.com/Koenkk/zigbee2mqtt/issues/2850#issuecomment-580365633
1334
+ // We need to remember the state before turning the device off as we need to restore
1335
+ // it once we turn it on again.
1336
+ // We cannot rely on the meta.state as when reporting is enabled the bulb will reports
1337
+ // it brightness while decreasing the brightness.
1338
+ globalStore.putValue(entity, 'brightness', meta.state.brightness);
1339
+ globalStore.putValue(entity, 'turnedOffWithTransition', true);
1340
+ }
1341
+ const fallbackLevel = utils.getObjectProperty(meta.state, 'brightness', 254);
1342
+ let level = state === 'off' ? 0 : globalStore.getValue(entity, 'brightness', fallbackLevel);
1343
+ if (state === 'on' && level === 0) {
1344
+ level = turnsOffAtBrightness1 ? 2 : 1;
1345
+ }
1346
+ const payload = { level, transtime: transition.time };
1347
+ await entity.command('genLevelCtrl', 'moveToLevelWithOnOff', payload, utils.getOptions(meta.mapped, entity));
1348
+ const result = { state: { state: state.toUpperCase() } };
1349
+ // @ts-expect-error ignore
1350
+ if (state === 'on')
1351
+ result.state.brightness = level;
1352
+ return result;
1353
+ }
1354
+ else {
1355
+ // Store brightness where the bulb was turned off with as we need it when the bulb is turned on
1356
+ // with transition.
1357
+ if (meta.state.brightness !== undefined && state === 'off') {
1358
+ globalStore.putValue(entity, 'brightness', meta.state.brightness);
1359
+ globalStore.putValue(entity, 'turnedOffWithTransition', true);
1360
+ }
1361
+ const result = await inovelliOnOffConvertSet(entity, 'state', state, meta);
1362
+ if (result.state && result.state.state === 'ON' && meta.state.brightness === 0) {
1363
+ // @ts-expect-error ignore
1364
+ result.state.brightness = 1;
1365
+ }
1366
+ return result;
1367
+ }
1368
+ }
1369
+ else {
1370
+ brightness = Math.min(254, brightness);
1371
+ if (brightness === 1 && turnsOffAtBrightness1) {
1372
+ brightness = 2;
1373
+ }
1374
+ globalStore.putValue(entity, 'brightness', brightness);
1375
+ await entity.command('genLevelCtrl', 'moveToLevelWithOnOff', {
1376
+ level: Number(brightness),
1377
+ transtime: !transition.specified ? 0xffff : transition.time,
1378
+ }, utils.getOptions(meta.mapped, entity));
1379
+ return {
1380
+ state: {
1381
+ state: brightness === 0 ? 'OFF' : 'ON',
1382
+ brightness: Number(brightness),
1383
+ },
1384
+ };
1385
+ }
1386
+ },
1387
+ convertGet: async (entity, key, meta) => {
1388
+ if (key === 'brightness') {
1389
+ await entity.read('genLevelCtrl', ['currentLevel']);
1390
+ }
1391
+ else if (key === 'state') {
1392
+ await toZigbee_1.default.on_off.convertGet(entity, key, meta);
1393
+ }
1394
+ },
1395
+ },
1396
+ fan_mode: (endpointId) => ({
1397
+ key: ['fan_mode'],
1398
+ convertSet: async (entity, key, value, meta) => {
1399
+ const endpoint = meta.device.getEndpoint(endpointId);
1400
+ await endpoint.command('genLevelCtrl', 'moveToLevelWithOnOff', {
1401
+ level: fanModes[value],
1402
+ transtime: 0xffff,
1403
+ }, utils.getOptions(meta.mapped, entity));
1404
+ meta.state[key] = value;
1405
+ return {
1406
+ state: {
1407
+ [key]: value,
1408
+ state: 'ON',
1409
+ },
1410
+ };
1411
+ },
1412
+ convertGet: async (entity, key, meta) => {
1413
+ const endpoint = meta.device.getEndpoint(endpointId);
1414
+ await endpoint.read('genLevelCtrl', ['currentLevel']);
1415
+ },
1416
+ }),
1417
+ fan_state: {
1418
+ key: ['fan_state'],
1419
+ convertSet: async (entity, key, value, meta) => {
1420
+ const state = meta.message.fan_state !== undefined ? meta.message.fan_state.toString().toLowerCase() : null;
1421
+ utils.validateValue(state, ['toggle', 'off', 'on']);
1422
+ await entity.command('genOnOff', state, {}, utils.getOptions(meta.mapped, entity));
1423
+ if (state === 'toggle') {
1424
+ const currentState = meta.state[`state${meta.endpoint_name ? `_${meta.endpoint_name}` : ''}`];
1425
+ return currentState ? { state: { fan_state: currentState === 'OFF' ? 'ON' : 'OFF' } } : {};
1426
+ }
1427
+ else {
1428
+ return { state: { fan_state: state.toString().toUpperCase() } };
1429
+ }
1430
+ },
1431
+ convertGet: async (entity, key, meta) => {
1432
+ await entity.read('genOnOff', ['onOff']);
1433
+ },
1434
+ },
1435
+ /**
1436
+ * On the VZM36, When turning the fan on and off, we must ensure that we are sending these
1437
+ * commands to endpoint 2 on the canopy module.
1438
+ */
1439
+ vzm36_fan_on_off: {
1440
+ key: ['fan_state', 'on_time', 'off_wait_time'],
1441
+ convertSet: async (entity, key, value, meta) => {
1442
+ const endpoint = meta.device.getEndpoint(2);
1443
+ // is entity an endpoint, or just the device? may need to get the actual endpoint..
1444
+ utils.assertEndpoint(entity);
1445
+ const state = typeof meta.message.fan_state === 'string' ? meta.message.fan_state.toLowerCase() : null;
1446
+ utils.validateValue(state, ['toggle', 'off', 'on']);
1447
+ if (state === 'on' && (meta.message.on_time !== undefined || meta.message.off_wait_time !== undefined)) {
1448
+ const onTime = meta.message.on_time !== undefined ? meta.message.on_time : 0;
1449
+ const offWaitTime = meta.message.off_wait_time !== undefined ? meta.message.off_wait_time : 0;
1450
+ if (typeof onTime !== 'number') {
1451
+ throw Error('The on_time value must be a number!');
1452
+ }
1453
+ if (typeof offWaitTime !== 'number') {
1454
+ throw Error('The off_wait_time value must be a number!');
1455
+ }
1456
+ const payload = { ctrlbits: 0, ontime: Math.round(onTime * 10), offwaittime: Math.round(offWaitTime * 10) };
1457
+ await endpoint.command('genOnOff', 'onWithTimedOff', payload, utils.getOptions(meta.mapped, entity));
1458
+ }
1459
+ else {
1460
+ await endpoint.command('genOnOff', state, {}, utils.getOptions(meta.mapped, endpoint));
1461
+ if (state === 'toggle') {
1462
+ const currentState = meta.state[`state${meta.endpoint_name ? `_${meta.endpoint_name}` : ''}`];
1463
+ return currentState ? { state: { fan_state: currentState === 'OFF' ? 'ON' : 'OFF' } } : {};
1464
+ }
1465
+ else {
1466
+ return { state: { fan_state: state.toUpperCase() } };
1467
+ }
1468
+ }
1469
+ },
1470
+ convertGet: async (entity, key, meta) => {
1471
+ const endpoint = meta.device.getEndpoint(2);
1472
+ await endpoint.read('genOnOff', ['onOff']);
1473
+ },
1474
+ },
1475
+ vzm36_breezeMode: {
1476
+ key: ['breezeMode'],
1477
+ convertSet: async (entity, key, values, meta) => {
1478
+ // Calculate the value..
1479
+ let configValue = 0;
1480
+ let term = false;
1481
+ configValue += speedToInt(values.speed1);
1482
+ configValue += (Number(values.time1) / 5) * 4;
1483
+ let speed = speedToInt(values.speed2);
1484
+ if (speed !== 0) {
1485
+ configValue += speed * 64;
1486
+ configValue += (values.time2 / 5) * 256;
1487
+ }
1488
+ else {
1489
+ term = true;
1490
+ }
1491
+ speed = speedToInt(values.speed3);
1492
+ if (speed !== 0 && !term) {
1493
+ configValue += speed * 4096;
1494
+ configValue += (values.time3 / 5) * 16384;
1495
+ }
1496
+ else {
1497
+ term = true;
1498
+ }
1499
+ speed = speedToInt(values.speed4);
1500
+ if (speed !== 0 && !term) {
1501
+ configValue += speed * 262144;
1502
+ configValue += (values.time4 / 5) * 1048576;
1503
+ }
1504
+ else {
1505
+ term = true;
1506
+ }
1507
+ speed = speedToInt(values.speed5);
1508
+ if (speed !== 0 && !term) {
1509
+ configValue += speed * 16777216;
1510
+ configValue += (values.time5 / 5) * 67108864;
1511
+ }
1512
+ else {
1513
+ term = true;
1514
+ }
1515
+ const endpoint = meta.device.getEndpoint(2);
1516
+ const payload = { breezeMode: configValue.toString() };
1517
+ await endpoint.write('manuSpecificInovelli', payload, {
1518
+ manufacturerCode: INOVELLI,
1519
+ });
1520
+ return { state: { [key]: values } };
1521
+ },
1522
+ },
1523
+ breezeMode: {
1524
+ key: ['breezeMode'],
1525
+ convertSet: async (entity, key, values, meta) => {
1526
+ // Calculate the value..
1527
+ let configValue = 0;
1528
+ let term = false;
1529
+ configValue += speedToInt(values.speed1);
1530
+ configValue += (Number(values.time1) / 5) * 4;
1531
+ let speed = speedToInt(values.speed2);
1532
+ if (speed !== 0) {
1533
+ configValue += speed * 64;
1534
+ configValue += (values.time2 / 5) * 256;
1535
+ }
1536
+ else {
1537
+ term = true;
1538
+ }
1539
+ speed = speedToInt(values.speed3);
1540
+ if (speed !== 0 && !term) {
1541
+ configValue += speed * 4096;
1542
+ configValue += (values.time3 / 5) * 16384;
1543
+ }
1544
+ else {
1545
+ term = true;
1546
+ }
1547
+ speed = speedToInt(values.speed4);
1548
+ if (speed !== 0 && !term) {
1549
+ configValue += speed * 262144;
1550
+ configValue += (values.time4 / 5) * 1048576;
1551
+ }
1552
+ else {
1553
+ term = true;
1554
+ }
1555
+ speed = speedToInt(values.speed5);
1556
+ if (speed !== 0 && !term) {
1557
+ configValue += speed * 16777216;
1558
+ configValue += (values.time5 / 5) * 67108864;
1559
+ }
1560
+ else {
1561
+ term = true;
1562
+ }
1563
+ const endpoint = meta.device.getEndpoint(1);
1564
+ const payload = { breezeMode: configValue.toString() };
1565
+ await endpoint.write('manuSpecificInovelli', payload, {
1566
+ manufacturerCode: INOVELLI,
1567
+ });
1568
+ return { state: { [key]: values } };
1569
+ },
1570
+ },
1571
+ };
1572
+ /*
1573
+ * Inovelli VZM31SN has a default transition property that the device should
1574
+ * fallback to if a transition is not specified by passing 0xffff
1575
+ */
1576
+ const inovelliOnOffConvertSet = async (entity, key, value, meta) => {
1577
+ // @ts-expect-error ignore
1578
+ const state = meta.message.state !== undefined ? meta.message.state.toLowerCase() : null;
1579
+ utils.validateValue(state, ['toggle', 'off', 'on']);
1580
+ if (state === 'on' && (meta.message.on_time !== undefined || meta.message.off_wait_time !== undefined)) {
1581
+ const onTime = meta.message.on_time !== undefined ? meta.message.on_time : 0;
1582
+ const offWaitTime = meta.message.off_wait_time !== undefined ? meta.message.off_wait_time : 0;
1583
+ if (typeof onTime !== 'number') {
1584
+ throw Error('The on_time value must be a number!');
1585
+ }
1586
+ if (typeof offWaitTime !== 'number') {
1587
+ throw Error('The off_wait_time value must be a number!');
1588
+ }
1589
+ const payload = {
1590
+ ctrlbits: 0,
1591
+ ontime: meta.message.on_time !== undefined ? Math.round(onTime * 10) : 0xffff,
1592
+ offwaittime: meta.message.off_wait_time !== undefined ? Math.round(offWaitTime * 10) : 0xffff,
1593
+ };
1594
+ await entity.command('genOnOff', 'onWithTimedOff', payload, utils.getOptions(meta.mapped, entity));
1595
+ }
1596
+ else {
1597
+ await entity.command('genOnOff', state, {}, utils.getOptions(meta.mapped, entity));
1598
+ if (state === 'toggle') {
1599
+ const currentState = meta.state[`state${meta.endpoint_name ? `_${meta.endpoint_name}` : ''}`];
1600
+ return currentState ? { state: { state: currentState === 'OFF' ? 'ON' : 'OFF' } } : {};
1601
+ }
1602
+ else {
1603
+ return { state: { state: state.toUpperCase() } };
1604
+ }
1605
+ }
1606
+ };
1607
+ const fzLocal = {
1608
+ inovelli: (ATTRIBUTES) => ({
1609
+ cluster: 'manuSpecificInovelli',
1610
+ type: ['raw', 'readResponse', 'commandQueryNextImageRequest'],
1611
+ convert: (model, msg, publish, options, meta) => {
1612
+ if (msg.type === 'raw' && msg.endpoint.ID == 2 && msg.data[4] === 0x00) {
1613
+ // Scene Event
1614
+ // # byte 1 - msg.data[6]
1615
+ // # 0 - pressed
1616
+ // # 1 - released
1617
+ // # 2 - held
1618
+ // # 3 - 2x
1619
+ // # 4 - 3x
1620
+ // # 5 - 4x
1621
+ // # 6 - 5x
1622
+ // # byte 2 - msg.data[5]
1623
+ // # 1 - down button
1624
+ // # 2 - up button
1625
+ // # 3 - config button
1626
+ const button = buttonLookup[msg.data[5]];
1627
+ const action = clickLookup[msg.data[6]];
1628
+ return { action: `${button}_${action}` };
1629
+ }
1630
+ else if (msg.type === 'readResponse') {
1631
+ return Object.keys(msg.data).reduce((p, c) => {
1632
+ if (ATTRIBUTES[c] && ATTRIBUTES[c].displayType === 'enum') {
1633
+ return {
1634
+ ...p,
1635
+ [c]: Object.keys(ATTRIBUTES[c].values).find((k) => ATTRIBUTES[c].values[k] === msg.data[c]),
1636
+ };
1637
+ }
1638
+ return { ...p, [c]: msg.data[c] };
1639
+ }, {});
1640
+ }
1641
+ else {
1642
+ return msg.data;
1643
+ }
1644
+ },
1645
+ }),
1646
+ fan_mode: (endpointId) => ({
1647
+ cluster: 'genLevelCtrl',
1648
+ type: ['attributeReport', 'readResponse'],
1649
+ convert: (model, msg, publish, options, meta) => {
1650
+ if (msg.endpoint.ID == endpointId) {
1651
+ if (msg.data.currentLevel !== undefined) {
1652
+ const mode = intToFanMode(msg.data['currentLevel'] || 1);
1653
+ return {
1654
+ fan_mode: mode,
1655
+ };
1656
+ }
1657
+ }
1658
+ return msg.data;
1659
+ },
1660
+ }),
1661
+ fan_state: {
1662
+ cluster: 'genOnOff',
1663
+ type: ['attributeReport', 'readResponse'],
1664
+ convert: (model, msg, publish, options, meta) => {
1665
+ if (msg.data.onOff !== undefined) {
1666
+ return { fan_state: msg.data['onOff'] === 1 ? 'ON' : 'OFF' };
1667
+ }
1668
+ return msg.data;
1669
+ },
1670
+ },
1671
+ brightness: {
1672
+ cluster: 'genLevelCtrl',
1673
+ type: ['attributeReport', 'readResponse'],
1674
+ convert: (model, msg, publish, options, meta) => {
1675
+ if (msg.endpoint.ID == 1) {
1676
+ if (msg.data.currentLevel !== undefined) {
1677
+ return { brightness: msg.data['currentLevel'] };
1678
+ }
1679
+ }
1680
+ },
1681
+ },
1682
+ /**
1683
+ * Decode breeze mode value:
1684
+ *
1685
+ * 0: disable
1686
+ * 1~0xffffffff: custom (using user configuration parameters) 4bytes
1687
+ * Up to 5 different options. First two bits determine the speed. Next four bits is time * 5 seconds.
1688
+ * 1111 11 1111 11 1111 11 1111 11 1111 11
1689
+ * Setting byte: 00-off, 01-low, 10-meduim, 11-high
1690
+ * Each 6 bit word is stored in ascending order, step one word being LSB
1691
+ *
1692
+ * Extract each nybble of the word, then reverse the calculation to get the settig for each.
1693
+ */
1694
+ breeze_mode: {
1695
+ cluster: 'manuSpecificInovelli',
1696
+ type: ['attributeReport', 'readResponse'],
1697
+ convert: (model, msg, publish, options, meta) => {
1698
+ if (msg.endpoint.ID == 2) {
1699
+ if (msg.data.breeze_mode !== undefined) {
1700
+ const bitmasks = [3, 60, 192, 3840, 12288, 245760, 786432, 15728640, 50331648, 1006632960];
1701
+ const raw = msg.data['breeze_mode'];
1702
+ const s1 = breezemodes[raw & bitmasks[0]];
1703
+ const s2 = breezemodes[(raw & bitmasks[2]) / 64];
1704
+ const s3 = breezemodes[(raw & bitmasks[4]) / 4096];
1705
+ const s4 = breezemodes[(raw & bitmasks[6]) / 262144];
1706
+ const s5 = breezemodes[(raw & bitmasks[8]) / 16777216];
1707
+ const d1 = ((raw & bitmasks[1]) / 4) * 5;
1708
+ const d2 = ((raw & bitmasks[3]) / 256) * 5;
1709
+ const d3 = ((raw & bitmasks[5]) / 16384) * 5;
1710
+ const d4 = ((raw & bitmasks[7]) / 1048576) * 5;
1711
+ const d5 = ((raw & bitmasks[9]) / 67108864) * 5;
1712
+ return {
1713
+ breeze_mode: {
1714
+ speed1: s1,
1715
+ duration1: d1,
1716
+ speed2: s2,
1717
+ duration2: d2,
1718
+ speed3: s3,
1719
+ duration3: d3,
1720
+ speed4: s4,
1721
+ duration4: d4,
1722
+ speed5: s5,
1723
+ duration5: d5,
1724
+ },
1725
+ };
1726
+ }
1727
+ }
1728
+ },
1729
+ },
1730
+ vzm36_fan_light_state: {
1731
+ cluster: 'genOnOff',
1732
+ type: ['attributeReport', 'readResponse'],
1733
+ convert: (model, msg, publish, options, meta) => {
1734
+ if (msg.endpoint.ID === 1) {
1735
+ if (msg.data.onOff !== undefined) {
1736
+ return { state: msg.data['onOff'] === 1 ? 'ON' : 'OFF' };
1737
+ }
1738
+ }
1739
+ else if (msg.endpoint.ID === 2) {
1740
+ if (msg.data.onOff !== undefined) {
1741
+ return { fan_state: msg.data['onOff'] === 1 ? 'ON' : 'OFF' };
1742
+ }
1743
+ }
1744
+ else {
1745
+ return msg.data;
1746
+ }
1747
+ },
1748
+ },
1749
+ };
1750
+ const exposeLedEffects = () => {
1751
+ return e
1752
+ .composite('led_effect', 'led_effect', ea.STATE_SET)
1753
+ .withFeature(e.enum('effect', ea.STATE_SET, Object.keys(ledEffects)).withDescription('Animation Effect to use for the LEDs'))
1754
+ .withFeature(e
1755
+ .numeric('color', ea.STATE_SET)
1756
+ .withValueMin(0)
1757
+ .withValueMax(255)
1758
+ .withDescription('Calculated by using a hue color circle(value/255*360) If color = 255 display white'))
1759
+ .withFeature(e.numeric('level', ea.STATE_SET).withValueMin(0).withValueMax(100).withDescription('Brightness of the LEDs'))
1760
+ .withFeature(e
1761
+ .numeric('duration', ea.STATE_SET)
1762
+ .withValueMin(0)
1763
+ .withValueMax(255)
1764
+ .withDescription('1-60 is in seconds calculated 61-120 is in minutes calculated by(value-60) ' +
1765
+ 'Example a value of 65 would be 65-60 = 5 minutes - 120-254 Is in hours calculated by(value-120) ' +
1766
+ 'Example a value of 132 would be 132-120 would be 12 hours. - 255 Indefinitely'))
1767
+ .withCategory('config');
1768
+ };
1769
+ const exposeIndividualLedEffects = () => {
1770
+ return e
1771
+ .composite('individual_led_effect', 'individual_led_effect', ea.STATE_SET)
1772
+ .withFeature(e.enum('led', ea.STATE_SET, ['1', '2', '3', '4', '5', '6', '7']).withDescription('Individual LED to target.'))
1773
+ .withFeature(e.enum('effect', ea.STATE_SET, Object.keys(individualLedEffects)).withDescription('Animation Effect to use for the LED'))
1774
+ .withFeature(e
1775
+ .numeric('color', ea.STATE_SET)
1776
+ .withValueMin(0)
1777
+ .withValueMax(255)
1778
+ .withDescription('Calculated by using a hue color circle(value/255*360) If color = 255 display white'))
1779
+ .withFeature(e.numeric('level', ea.STATE_SET).withValueMin(0).withValueMax(100).withDescription('Brightness of the LED'))
1780
+ .withFeature(e
1781
+ .numeric('duration', ea.STATE_SET)
1782
+ .withValueMin(0)
1783
+ .withValueMax(255)
1784
+ .withDescription('1-60 is in seconds calculated 61-120 is in minutes calculated by(value-60) ' +
1785
+ 'Example a value of 65 would be 65-60 = 5 minutes - 120-254 Is in hours calculated by(value-120) ' +
1786
+ ' Example a value of 132 would be 132-120 would be 12 hours. - 255 Indefinitely'))
1787
+ .withCategory('config');
1788
+ };
1789
+ const exposeBreezeMode = () => {
1790
+ return e
1791
+ .composite('breeze mode', 'breezeMode', ea.STATE_SET)
1792
+ .withFeature(e.enum('speed1', ea.STATE_SET, ['low', 'medium', 'high']).withDescription('Step 1 Speed'))
1793
+ .withFeature(e.numeric('time1', ea.STATE_SET).withValueMin(1).withValueMax(80).withDescription('Duration (s) for fan in Step 1 '))
1794
+ .withFeature(e.enum('speed2', ea.STATE_SET, ['low', 'medium', 'high']).withDescription('Step 2 Speed'))
1795
+ .withFeature(e.numeric('time2', ea.STATE_SET).withValueMin(1).withValueMax(80).withDescription('Duration (s) for fan in Step 2 '))
1796
+ .withFeature(e.enum('speed3', ea.STATE_SET, ['low', 'medium', 'high']).withDescription('Step 3 Speed'))
1797
+ .withFeature(e.numeric('time3', ea.STATE_SET).withValueMin(1).withValueMax(80).withDescription('Duration (s) for fan in Step 3 '))
1798
+ .withFeature(e.enum('speed4', ea.STATE_SET, ['low', 'medium', 'high']).withDescription('Step 4 Speed'))
1799
+ .withFeature(e.numeric('time4', ea.STATE_SET).withValueMin(1).withValueMax(80).withDescription('Duration (s) for fan in Step 4 '))
1800
+ .withFeature(e.enum('speed5', ea.STATE_SET, ['low', 'medium', 'high']).withDescription('Step 5 Speed'))
1801
+ .withFeature(e.numeric('time5', ea.STATE_SET).withValueMin(1).withValueMax(80).withDescription('Duration (s) for fan in Step 5 '))
1802
+ .withCategory('config');
1803
+ };
1804
+ const exposesListVZM30 = [e.light_brightness(), exposeLedEffects(), exposeIndividualLedEffects()];
1805
+ const exposesListVZM31 = [e.light_brightness(), exposeLedEffects(), exposeIndividualLedEffects()];
1806
+ const exposesListVZM35 = [e.fan().withModes(Object.keys(fanModes)), exposeLedEffects(), exposeIndividualLedEffects(), exposeBreezeMode()];
1807
+ const exposesListVZM36 = [e.light_brightness(), e.fan().withModes(Object.keys(fanModes)), exposeBreezeMode()];
1808
+ // Populate exposes list from the attributes description
1809
+ attributesToExposeList(VZM30_ATTRIBUTES, exposesListVZM30);
1810
+ attributesToExposeList(VZM31_ATTRIBUTES, exposesListVZM31);
1811
+ attributesToExposeList(VZM35_ATTRIBUTES, exposesListVZM35);
1812
+ attributesToExposeList(VZM36_ATTRIBUTES, exposesListVZM36);
1813
+ // Put actions at the bottom of ui
1814
+ const buttonTapSequences = [
1815
+ 'down_single',
1816
+ 'up_single',
1817
+ 'config_single',
1818
+ 'down_release',
1819
+ 'up_release',
1820
+ 'config_release',
1821
+ 'down_held',
1822
+ 'up_held',
1823
+ 'config_held',
1824
+ 'down_double',
1825
+ 'up_double',
1826
+ 'config_double',
1827
+ 'down_triple',
1828
+ 'up_triple',
1829
+ 'config_triple',
1830
+ 'down_quadruple',
1831
+ 'up_quadruple',
1832
+ 'config_quadruple',
1833
+ 'down_quintuple',
1834
+ 'up_quintuple',
1835
+ 'config_quintuple',
1836
+ ];
1837
+ exposesListVZM30.push(e.action(buttonTapSequences));
1838
+ exposesListVZM31.push(e.action(buttonTapSequences));
1839
+ exposesListVZM35.push(e.action(buttonTapSequences));
1840
+ const definitions = [
1841
+ {
1842
+ zigbeeModel: ['VZM30-SN'],
1843
+ model: 'VZM30-SN',
1844
+ vendor: 'Inovelli',
1845
+ description: 'On/off switch',
1846
+ exposes: exposesListVZM30.concat((0, modernExtend_1.identify)().exposes),
1847
+ extend: [
1848
+ (0, modernExtend_1.deviceEndpoints)({
1849
+ endpoints: { '1': 1, '2': 2, '3': 3, '4': 4 },
1850
+ multiEndpointSkip: ['state', 'voltage', 'power', 'current', 'energy', 'brightness', 'temperature', 'humidity'],
1851
+ }),
1852
+ inovelliExtend.addCustomClusterInovelli(),
1853
+ (0, modernExtend_1.temperature)(),
1854
+ (0, modernExtend_1.humidity)(),
1855
+ (0, modernExtend_1.electricityMeter)(),
1856
+ ],
1857
+ toZigbee: [
1858
+ tzLocal.light_onoff_brightness_inovelli,
1859
+ toZigbee_1.default.power_on_behavior,
1860
+ toZigbee_1.default.ignore_transition,
1861
+ toZigbee_1.default.identify,
1862
+ tzLocal.inovelli_led_effect,
1863
+ tzLocal.inovelli_individual_led_effect,
1864
+ tzLocal.inovelli_parameters(VZM30_ATTRIBUTES),
1865
+ tzLocal.inovelli_parameters_readOnly(VZM30_ATTRIBUTES),
1866
+ ],
1867
+ fromZigbee: [fromZigbee_1.default.on_off, fromZigbee_1.default.brightness, fromZigbee_1.default.level_config, fromZigbee_1.default.power_on_behavior, fromZigbee_1.default.ignore_basic_report, fzLocal.inovelli(VZM30_ATTRIBUTES)],
1868
+ ota: true,
1869
+ configure: async (device, coordinatorEndpoint) => {
1870
+ const endpoint = device.getEndpoint(1);
1871
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
1872
+ await reporting.onOff(endpoint);
1873
+ // Bind for Button Event Reporting
1874
+ const endpoint2 = device.getEndpoint(2);
1875
+ await reporting.bind(endpoint2, coordinatorEndpoint, ['manuSpecificInovelli']);
1876
+ },
1877
+ },
1878
+ {
1879
+ zigbeeModel: ['VZM31-SN'],
1880
+ model: 'VZM31-SN',
1881
+ vendor: 'Inovelli',
1882
+ description: '2-in-1 switch + dimmer',
1883
+ exposes: exposesListVZM31.concat((0, modernExtend_1.identify)().exposes),
1884
+ extend: [
1885
+ (0, modernExtend_1.deviceEndpoints)({
1886
+ endpoints: { '1': 1, '2': 2, '3': 3 },
1887
+ multiEndpointSkip: ['state', 'power', 'energy', 'brightness'],
1888
+ }),
1889
+ inovelliExtend.addCustomClusterInovelli(),
1890
+ (0, modernExtend_1.electricityMeter)({
1891
+ current: false,
1892
+ voltage: false,
1893
+ power: { min: 15, max: 3600, change: 1 },
1894
+ energy: { min: 15, max: 3600, change: 0 },
1895
+ }),
1896
+ ],
1897
+ toZigbee: [
1898
+ tzLocal.light_onoff_brightness_inovelli,
1899
+ toZigbee_1.default.power_on_behavior,
1900
+ toZigbee_1.default.ignore_transition,
1901
+ toZigbee_1.default.identify,
1902
+ tzLocal.inovelli_led_effect,
1903
+ tzLocal.inovelli_individual_led_effect,
1904
+ tzLocal.inovelli_parameters(VZM31_ATTRIBUTES),
1905
+ tzLocal.inovelli_parameters_readOnly(VZM31_ATTRIBUTES),
1906
+ ],
1907
+ fromZigbee: [fromZigbee_1.default.on_off, fromZigbee_1.default.brightness, fromZigbee_1.default.level_config, fromZigbee_1.default.power_on_behavior, fromZigbee_1.default.ignore_basic_report, fzLocal.inovelli(VZM31_ATTRIBUTES)],
1908
+ ota: true,
1909
+ configure: async (device, coordinatorEndpoint) => {
1910
+ const endpoint = device.getEndpoint(1);
1911
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
1912
+ await reporting.onOff(endpoint);
1913
+ // Bind for Button Event Reporting
1914
+ const endpoint2 = device.getEndpoint(2);
1915
+ await reporting.bind(endpoint2, coordinatorEndpoint, ['manuSpecificInovelli']);
1916
+ },
1917
+ },
1918
+ {
1919
+ zigbeeModel: ['VZM35-SN'],
1920
+ model: 'VZM35-SN',
1921
+ vendor: 'Inovelli',
1922
+ description: 'Fan controller',
1923
+ fromZigbee: [fzLocal.fan_state, fzLocal.fan_mode(1), fzLocal.breeze_mode, fzLocal.inovelli(VZM35_ATTRIBUTES)],
1924
+ toZigbee: [
1925
+ toZigbee_1.default.identify,
1926
+ tzLocal.fan_state,
1927
+ tzLocal.fan_mode(1),
1928
+ tzLocal.inovelli_led_effect,
1929
+ tzLocal.inovelli_individual_led_effect,
1930
+ tzLocal.inovelli_parameters(VZM35_ATTRIBUTES),
1931
+ tzLocal.inovelli_parameters_readOnly(VZM35_ATTRIBUTES),
1932
+ tzLocal.breezeMode,
1933
+ ],
1934
+ exposes: exposesListVZM35.concat((0, modernExtend_1.identify)().exposes),
1935
+ extend: [inovelliExtend.addCustomClusterInovelli()],
1936
+ ota: true,
1937
+ configure: async (device, coordinatorEndpoint) => {
1938
+ const endpoint = device.getEndpoint(1);
1939
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
1940
+ // Bind for Button Event Reporting
1941
+ const endpoint2 = device.getEndpoint(2);
1942
+ await reporting.bind(endpoint2, coordinatorEndpoint, ['manuSpecificInovelli']);
1943
+ },
1944
+ },
1945
+ {
1946
+ zigbeeModel: ['VZM36'],
1947
+ model: 'VZM36',
1948
+ vendor: 'Inovelli',
1949
+ description: 'Fan canopy module',
1950
+ fromZigbee: [fzLocal.brightness, fzLocal.vzm36_fan_light_state, fzLocal.fan_mode(2), fzLocal.breeze_mode, fzLocal.inovelli(VZM36_ATTRIBUTES)],
1951
+ toZigbee: [
1952
+ toZigbee_1.default.identify,
1953
+ tzLocal.vzm36_fan_on_off, // Need to use VZM36 specific converter
1954
+ tzLocal.fan_mode(2),
1955
+ tzLocal.light_onoff_brightness_inovelli,
1956
+ tzLocal.inovelli_parameters(VZM36_ATTRIBUTES),
1957
+ tzLocal.inovelli_parameters_readOnly(VZM36_ATTRIBUTES),
1958
+ tzLocal.vzm36_breezeMode,
1959
+ ],
1960
+ exposes: exposesListVZM36.concat((0, modernExtend_1.identify)().exposes),
1961
+ extend: [inovelliExtend.addCustomClusterInovelli()],
1962
+ ota: true,
1963
+ // The configure method below is needed to make the device reports on/off state changes
1964
+ // when the device is controlled manually through the button on it.
1965
+ configure: async (device, coordinatorEndpoint) => {
1966
+ const endpoint = device.getEndpoint(1);
1967
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
1968
+ await reporting.onOff(endpoint);
1969
+ const endpoint2 = device.getEndpoint(2);
1970
+ await reporting.bind(endpoint2, coordinatorEndpoint, ['genOnOff']);
1971
+ await reporting.onOff(endpoint2);
1972
+ },
1973
+ },
1974
+ ];
1975
+ exports.default = definitions;
1976
+ module.exports = definitions;
1977
+ //# sourceMappingURL=inovelli.js.map