zigbee-herdsman-converters 22.1.0 → 23.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2581) hide show
  1. package/README.md +23 -6
  2. package/dist/converters/fromZigbee.d.ts +2036 -0
  3. package/dist/converters/fromZigbee.d.ts.map +1 -0
  4. package/dist/converters/fromZigbee.js +5348 -0
  5. package/dist/converters/fromZigbee.js.map +1 -0
  6. package/dist/converters/toZigbee.d.ts +1582 -0
  7. package/dist/converters/toZigbee.d.ts.map +1 -0
  8. package/dist/converters/toZigbee.js +4418 -0
  9. package/dist/converters/toZigbee.js.map +1 -0
  10. package/dist/devices/ITCommander.d.ts +3 -0
  11. package/dist/devices/ITCommander.d.ts.map +1 -0
  12. package/dist/devices/ITCommander.js +76 -0
  13. package/dist/devices/acova.d.ts +3 -0
  14. package/dist/devices/acova.d.ts.map +1 -0
  15. package/dist/devices/acova.js +126 -0
  16. package/dist/devices/acuity_brands_lighting.d.ts +3 -0
  17. package/dist/devices/acuity_brands_lighting.d.ts.map +1 -0
  18. package/dist/devices/acuity_brands_lighting.js +61 -0
  19. package/dist/devices/adeo.d.ts +3 -0
  20. package/dist/devices/adeo.d.ts.map +1 -0
  21. package/dist/devices/adeo.js +485 -0
  22. package/dist/devices/adeo.js.map +1 -0
  23. package/dist/devices/adurosmart.d.ts +3 -0
  24. package/dist/devices/adurosmart.d.ts.map +1 -0
  25. package/dist/devices/adurosmart.js +189 -0
  26. package/dist/devices/aeotec.d.ts +3 -0
  27. package/dist/devices/aeotec.d.ts.map +1 -0
  28. package/dist/devices/aeotec.js +98 -0
  29. package/dist/devices/airam.d.ts +3 -0
  30. package/dist/devices/airam.d.ts.map +1 -0
  31. package/dist/devices/airam.js +105 -0
  32. package/dist/devices/airzone_aidoo.d.ts +3 -0
  33. package/dist/devices/airzone_aidoo.d.ts.map +1 -0
  34. package/dist/devices/airzone_aidoo.js +80 -0
  35. package/dist/devices/ajax_online.d.ts +3 -0
  36. package/dist/devices/ajax_online.d.ts.map +1 -0
  37. package/dist/devices/ajax_online.js +83 -0
  38. package/dist/devices/akuvox.d.ts +3 -0
  39. package/dist/devices/akuvox.d.ts.map +1 -0
  40. package/dist/devices/akuvox.js +68 -0
  41. package/dist/devices/alchemy.d.ts +3 -0
  42. package/dist/devices/alchemy.d.ts.map +1 -0
  43. package/dist/devices/alchemy.js +54 -0
  44. package/dist/devices/aldi.d.ts +3 -0
  45. package/dist/devices/aldi.d.ts.map +1 -0
  46. package/dist/devices/aldi.js +57 -0
  47. package/dist/devices/alecto.d.ts +3 -0
  48. package/dist/devices/alecto.d.ts.map +1 -0
  49. package/dist/devices/alecto.js +95 -0
  50. package/dist/devices/amina.d.ts +3 -0
  51. package/dist/devices/amina.d.ts.map +1 -0
  52. package/dist/devices/amina.js +366 -0
  53. package/dist/devices/amina.js.map +1 -0
  54. package/dist/devices/anchor.d.ts +3 -0
  55. package/dist/devices/anchor.d.ts.map +1 -0
  56. package/dist/devices/anchor.js +47 -0
  57. package/dist/devices/atlantic.d.ts +3 -0
  58. package/dist/devices/atlantic.d.ts.map +1 -0
  59. package/dist/devices/atlantic.js +145 -0
  60. package/dist/devices/atlantic.js.map +1 -0
  61. package/dist/devices/atsmart.d.ts +3 -0
  62. package/dist/devices/atsmart.d.ts.map +1 -0
  63. package/dist/devices/atsmart.js +47 -0
  64. package/dist/devices/aubess.d.ts +3 -0
  65. package/dist/devices/aubess.d.ts.map +1 -0
  66. package/dist/devices/aubess.js +60 -0
  67. package/dist/devices/aurora_lighting.d.ts +3 -0
  68. package/dist/devices/aurora_lighting.d.ts.map +1 -0
  69. package/dist/devices/aurora_lighting.js +332 -0
  70. package/dist/devices/automaton.d.ts +3 -0
  71. package/dist/devices/automaton.d.ts.map +1 -0
  72. package/dist/devices/automaton.js +64 -0
  73. package/dist/devices/avatto.d.ts +3 -0
  74. package/dist/devices/avatto.d.ts.map +1 -0
  75. package/dist/devices/avatto.js +275 -0
  76. package/dist/devices/avatto.js.map +1 -0
  77. package/dist/devices/awox.d.ts +3 -0
  78. package/dist/devices/awox.d.ts.map +1 -0
  79. package/dist/devices/awox.js +239 -0
  80. package/dist/devices/axis.d.ts +3 -0
  81. package/dist/devices/axis.d.ts.map +1 -0
  82. package/dist/devices/axis.js +62 -0
  83. package/dist/devices/bankamp.d.ts +3 -0
  84. package/dist/devices/bankamp.d.ts.map +1 -0
  85. package/dist/devices/bankamp.js +47 -0
  86. package/dist/devices/bega.d.ts +3 -0
  87. package/dist/devices/bega.d.ts.map +1 -0
  88. package/dist/devices/bega.js +61 -0
  89. package/dist/devices/belkin.d.ts +3 -0
  90. package/dist/devices/belkin.d.ts.map +1 -0
  91. package/dist/devices/belkin.js +47 -0
  92. package/dist/devices/bitron.d.ts +3 -0
  93. package/dist/devices/bitron.d.ts.map +1 -0
  94. package/dist/devices/bitron.js +357 -0
  95. package/dist/devices/bitron.js.map +1 -0
  96. package/dist/devices/bituo_technik.d.ts +3 -0
  97. package/dist/devices/bituo_technik.d.ts.map +1 -0
  98. package/dist/devices/bituo_technik.js +120 -0
  99. package/dist/devices/blaupunkt.d.ts +3 -0
  100. package/dist/devices/blaupunkt.d.ts.map +1 -0
  101. package/dist/devices/blaupunkt.js +67 -0
  102. package/dist/devices/blitzwolf.d.ts +3 -0
  103. package/dist/devices/blitzwolf.d.ts.map +1 -0
  104. package/dist/devices/blitzwolf.js +73 -0
  105. package/dist/devices/bosch.d.ts +3 -0
  106. package/dist/devices/bosch.d.ts.map +1 -0
  107. package/dist/devices/bosch.js +2042 -0
  108. package/dist/devices/bosch.js.map +1 -0
  109. package/dist/devices/bouffalo_lab.d.ts +3 -0
  110. package/dist/devices/bouffalo_lab.d.ts.map +1 -0
  111. package/dist/devices/bouffalo_lab.js +47 -0
  112. package/dist/devices/brimate.d.ts +3 -0
  113. package/dist/devices/brimate.d.ts.map +1 -0
  114. package/dist/devices/brimate.js +54 -0
  115. package/dist/devices/bseed.d.ts +3 -0
  116. package/dist/devices/bseed.d.ts.map +1 -0
  117. package/dist/devices/bseed.js +53 -0
  118. package/dist/devices/bticino.d.ts +3 -0
  119. package/dist/devices/bticino.d.ts.map +1 -0
  120. package/dist/devices/bticino.js +112 -0
  121. package/dist/devices/busch_jaeger.d.ts +3 -0
  122. package/dist/devices/busch_jaeger.d.ts.map +1 -0
  123. package/dist/devices/busch_jaeger.js +184 -0
  124. package/dist/devices/busch_jaeger.js.map +1 -0
  125. package/dist/devices/byun.d.ts +3 -0
  126. package/dist/devices/byun.d.ts.map +1 -0
  127. package/dist/devices/byun.js +63 -0
  128. package/dist/devices/calex.d.ts +3 -0
  129. package/dist/devices/calex.d.ts.map +1 -0
  130. package/dist/devices/calex.js +90 -0
  131. package/dist/devices/candeo.d.ts +3 -0
  132. package/dist/devices/candeo.d.ts.map +1 -0
  133. package/dist/devices/candeo.js +224 -0
  134. package/dist/devices/casaia.d.ts +3 -0
  135. package/dist/devices/casaia.d.ts.map +1 -0
  136. package/dist/devices/casaia.js +98 -0
  137. package/dist/devices/cel.d.ts +3 -0
  138. package/dist/devices/cel.d.ts.map +1 -0
  139. package/dist/devices/cel.js +19 -0
  140. package/dist/devices/centralite.d.ts +3 -0
  141. package/dist/devices/centralite.d.ts.map +1 -0
  142. package/dist/devices/centralite.js +452 -0
  143. package/dist/devices/centralite.js.map +1 -0
  144. package/dist/devices/chacon.d.ts +3 -0
  145. package/dist/devices/chacon.d.ts.map +1 -0
  146. package/dist/devices/chacon.js +57 -0
  147. package/dist/devices/cleode.d.ts +3 -0
  148. package/dist/devices/cleode.d.ts.map +1 -0
  149. package/dist/devices/cleode.js +47 -0
  150. package/dist/devices/cleverio.d.ts +3 -0
  151. package/dist/devices/cleverio.d.ts.map +1 -0
  152. package/dist/devices/cleverio.js +77 -0
  153. package/dist/devices/climax.d.ts +3 -0
  154. package/dist/devices/climax.d.ts.map +1 -0
  155. package/dist/devices/climax.js +180 -0
  156. package/dist/devices/commercial_electric.d.ts +3 -0
  157. package/dist/devices/commercial_electric.d.ts.map +1 -0
  158. package/dist/devices/commercial_electric.js +47 -0
  159. package/dist/devices/cree.d.ts +3 -0
  160. package/dist/devices/cree.d.ts.map +1 -0
  161. package/dist/devices/cree.js +47 -0
  162. package/dist/devices/ctm.d.ts +3 -0
  163. package/dist/devices/ctm.d.ts.map +1 -0
  164. package/dist/devices/ctm.js +1361 -0
  165. package/dist/devices/ctm.js.map +1 -0
  166. package/dist/devices/current_products_corp.d.ts +3 -0
  167. package/dist/devices/current_products_corp.d.ts.map +1 -0
  168. package/dist/devices/current_products_corp.js +63 -0
  169. package/dist/devices/custom_devices_diy.d.ts +3 -0
  170. package/dist/devices/custom_devices_diy.d.ts.map +1 -0
  171. package/dist/devices/custom_devices_diy.js +1204 -0
  172. package/dist/devices/custom_devices_diy.js.map +1 -0
  173. package/dist/devices/cy_lighting.d.ts +3 -0
  174. package/dist/devices/cy_lighting.d.ts.map +1 -0
  175. package/dist/devices/cy_lighting.js +47 -0
  176. package/dist/devices/danalock.d.ts +3 -0
  177. package/dist/devices/danalock.d.ts.map +1 -0
  178. package/dist/devices/danalock.js +64 -0
  179. package/dist/devices/danfoss.d.ts +3 -0
  180. package/dist/devices/danfoss.d.ts.map +1 -0
  181. package/dist/devices/danfoss.js +741 -0
  182. package/dist/devices/danfoss.js.map +1 -0
  183. package/dist/devices/databyte.d.ts +3 -0
  184. package/dist/devices/databyte.d.ts.map +1 -0
  185. package/dist/devices/databyte.js +93 -0
  186. package/dist/devices/datek.d.ts +3 -0
  187. package/dist/devices/datek.d.ts.map +1 -0
  188. package/dist/devices/datek.js +307 -0
  189. package/dist/devices/datek.js.map +1 -0
  190. package/dist/devices/dawon_dns.d.ts +3 -0
  191. package/dist/devices/dawon_dns.d.ts.map +1 -0
  192. package/dist/devices/dawon_dns.js +317 -0
  193. package/dist/devices/develco.d.ts +3 -0
  194. package/dist/devices/develco.d.ts.map +1 -0
  195. package/dist/devices/develco.js +1034 -0
  196. package/dist/devices/develco.js.map +1 -0
  197. package/dist/devices/digi.d.ts +3 -0
  198. package/dist/devices/digi.d.ts.map +1 -0
  199. package/dist/devices/digi.js +24 -0
  200. package/dist/devices/direct_signs.d.ts +3 -0
  201. package/dist/devices/direct_signs.d.ts.map +1 -0
  202. package/dist/devices/direct_signs.js +47 -0
  203. package/dist/devices/diyruz.d.ts +3 -0
  204. package/dist/devices/diyruz.d.ts.map +1 -0
  205. package/dist/devices/diyruz.js +400 -0
  206. package/dist/devices/dlink.d.ts +3 -0
  207. package/dist/devices/dlink.d.ts.map +1 -0
  208. package/dist/devices/dlink.js +75 -0
  209. package/dist/devices/dnake.d.ts +3 -0
  210. package/dist/devices/dnake.d.ts.map +1 -0
  211. package/dist/devices/dnake.js +47 -0
  212. package/dist/devices/dowsing_reynolds.d.ts +3 -0
  213. package/dist/devices/dowsing_reynolds.d.ts.map +1 -0
  214. package/dist/devices/dowsing_reynolds.js +47 -0
  215. package/dist/devices/dresden_elektronik.d.ts +3 -0
  216. package/dist/devices/dresden_elektronik.d.ts.map +1 -0
  217. package/dist/devices/dresden_elektronik.js +82 -0
  218. package/dist/devices/easyaccess.d.ts +3 -0
  219. package/dist/devices/easyaccess.d.ts.map +1 -0
  220. package/dist/devices/easyaccess.js +70 -0
  221. package/dist/devices/easyiot.d.ts +3 -0
  222. package/dist/devices/easyiot.d.ts.map +1 -0
  223. package/dist/devices/easyiot.js +357 -0
  224. package/dist/devices/easyiot.js.map +1 -0
  225. package/dist/devices/eatonhalo_led.d.ts +3 -0
  226. package/dist/devices/eatonhalo_led.d.ts.map +1 -0
  227. package/dist/devices/eatonhalo_led.js +47 -0
  228. package/dist/devices/echostar.d.ts +3 -0
  229. package/dist/devices/echostar.d.ts.map +1 -0
  230. package/dist/devices/echostar.js +64 -0
  231. package/dist/devices/ecodim.d.ts +3 -0
  232. package/dist/devices/ecodim.d.ts.map +1 -0
  233. package/dist/devices/ecodim.js +269 -0
  234. package/dist/devices/ecolink.d.ts +3 -0
  235. package/dist/devices/ecolink.d.ts.map +1 -0
  236. package/dist/devices/ecolink.js +60 -0
  237. package/dist/devices/ecosmart.d.ts +3 -0
  238. package/dist/devices/ecosmart.d.ts.map +1 -0
  239. package/dist/devices/ecosmart.js +115 -0
  240. package/dist/devices/ecozy.d.ts +3 -0
  241. package/dist/devices/ecozy.d.ts.map +1 -0
  242. package/dist/devices/ecozy.js +88 -0
  243. package/dist/devices/edp.d.ts +3 -0
  244. package/dist/devices/edp.d.ts.map +1 -0
  245. package/dist/devices/edp.js +73 -0
  246. package/dist/devices/efekta.d.ts +3 -0
  247. package/dist/devices/efekta.d.ts.map +1 -0
  248. package/dist/devices/efekta.js +2632 -0
  249. package/dist/devices/eglo.d.ts +3 -0
  250. package/dist/devices/eglo.d.ts.map +1 -0
  251. package/dist/devices/eglo.js +133 -0
  252. package/dist/devices/elko.d.ts +3 -0
  253. package/dist/devices/elko.d.ts.map +1 -0
  254. package/dist/devices/elko.js +239 -0
  255. package/dist/devices/enbrighten.d.ts +3 -0
  256. package/dist/devices/enbrighten.d.ts.map +1 -0
  257. package/dist/devices/enbrighten.js +156 -0
  258. package/dist/devices/enocean.d.ts +3 -0
  259. package/dist/devices/enocean.d.ts.map +1 -0
  260. package/dist/devices/enocean.js +152 -0
  261. package/dist/devices/envilar.d.ts +3 -0
  262. package/dist/devices/envilar.d.ts.map +1 -0
  263. package/dist/devices/envilar.js +99 -0
  264. package/dist/devices/essentialb.d.ts +3 -0
  265. package/dist/devices/essentialb.d.ts.map +1 -0
  266. package/dist/devices/essentialb.js +136 -0
  267. package/dist/devices/essentials.d.ts +3 -0
  268. package/dist/devices/essentials.d.ts.map +1 -0
  269. package/dist/devices/essentials.js +150 -0
  270. package/dist/devices/eucontrols.d.ts +3 -0
  271. package/dist/devices/eucontrols.d.ts.map +1 -0
  272. package/dist/devices/eucontrols.js +47 -0
  273. package/dist/devices/eurotronic.d.ts +3 -0
  274. package/dist/devices/eurotronic.d.ts.map +1 -0
  275. package/dist/devices/eurotronic.js +205 -0
  276. package/dist/devices/evanell.d.ts +3 -0
  277. package/dist/devices/evanell.d.ts.map +1 -0
  278. package/dist/devices/evanell.js +71 -0
  279. package/dist/devices/evn.d.ts +3 -0
  280. package/dist/devices/evn.d.ts.map +1 -0
  281. package/dist/devices/evn.js +93 -0
  282. package/dist/devices/evology.d.ts +3 -0
  283. package/dist/devices/evology.d.ts.map +1 -0
  284. package/dist/devices/evology.js +63 -0
  285. package/dist/devices/evvr.d.ts +3 -0
  286. package/dist/devices/evvr.d.ts.map +1 -0
  287. package/dist/devices/evvr.js +47 -0
  288. package/dist/devices/ewelink.d.ts +3 -0
  289. package/dist/devices/ewelink.d.ts.map +1 -0
  290. package/dist/devices/ewelink.js +352 -0
  291. package/dist/devices/ewelink.js.map +1 -0
  292. package/dist/devices/ezex.d.ts +3 -0
  293. package/dist/devices/ezex.d.ts.map +1 -0
  294. package/dist/devices/ezex.js +47 -0
  295. package/dist/devices/fantem.d.ts +3 -0
  296. package/dist/devices/fantem.d.ts.map +1 -0
  297. package/dist/devices/fantem.js +116 -0
  298. package/dist/devices/fantem.js.map +1 -0
  299. package/dist/devices/feibit.d.ts +3 -0
  300. package/dist/devices/feibit.d.ts.map +1 -0
  301. package/dist/devices/feibit.js +343 -0
  302. package/dist/devices/feibit.js.map +1 -0
  303. package/dist/devices/fireangel.d.ts +3 -0
  304. package/dist/devices/fireangel.d.ts.map +1 -0
  305. package/dist/devices/fireangel.js +54 -0
  306. package/dist/devices/frankever.d.ts +3 -0
  307. package/dist/devices/frankever.d.ts.map +1 -0
  308. package/dist/devices/frankever.js +67 -0
  309. package/dist/devices/frient.d.ts +3 -0
  310. package/dist/devices/frient.d.ts.map +1 -0
  311. package/dist/devices/frient.js +74 -0
  312. package/dist/devices/futurehome.d.ts +3 -0
  313. package/dist/devices/futurehome.d.ts.map +1 -0
  314. package/dist/devices/futurehome.js +123 -0
  315. package/dist/devices/ge.d.ts +3 -0
  316. package/dist/devices/ge.d.ts.map +1 -0
  317. package/dist/devices/ge.js +133 -0
  318. package/dist/devices/gewiss.d.ts +3 -0
  319. package/dist/devices/gewiss.d.ts.map +1 -0
  320. package/dist/devices/gewiss.js +85 -0
  321. package/dist/devices/gidealed.d.ts +3 -0
  322. package/dist/devices/gidealed.d.ts.map +1 -0
  323. package/dist/devices/gidealed.js +47 -0
  324. package/dist/devices/giderwel.d.ts +3 -0
  325. package/dist/devices/giderwel.d.ts.map +1 -0
  326. package/dist/devices/giderwel.js +47 -0
  327. package/dist/devices/giex.d.ts +3 -0
  328. package/dist/devices/giex.d.ts.map +1 -0
  329. package/dist/devices/giex.js +114 -0
  330. package/dist/devices/girier.d.ts +3 -0
  331. package/dist/devices/girier.d.ts.map +1 -0
  332. package/dist/devices/girier.js +51 -0
  333. package/dist/devices/gledopto.d.ts +3 -0
  334. package/dist/devices/gledopto.d.ts.map +1 -0
  335. package/dist/devices/gledopto.js +1051 -0
  336. package/dist/devices/gledopto.js.map +1 -0
  337. package/dist/devices/gmmts.d.ts +3 -0
  338. package/dist/devices/gmmts.d.ts.map +1 -0
  339. package/dist/devices/gmmts.js +2285 -0
  340. package/dist/devices/gmmts.js.map +1 -0
  341. package/dist/devices/gmy.d.ts +3 -0
  342. package/dist/devices/gmy.d.ts.map +1 -0
  343. package/dist/devices/gmy.js +47 -0
  344. package/dist/devices/gs.d.ts +3 -0
  345. package/dist/devices/gs.d.ts.map +1 -0
  346. package/dist/devices/gs.js +121 -0
  347. package/dist/devices/gumax.d.ts +3 -0
  348. package/dist/devices/gumax.d.ts.map +1 -0
  349. package/dist/devices/gumax.js +47 -0
  350. package/dist/devices/halemeier.d.ts +3 -0
  351. package/dist/devices/halemeier.d.ts.map +1 -0
  352. package/dist/devices/halemeier.js +128 -0
  353. package/dist/devices/hampton_bay.d.ts +3 -0
  354. package/dist/devices/hampton_bay.d.ts.map +1 -0
  355. package/dist/devices/hampton_bay.js +71 -0
  356. package/dist/devices/heatit.d.ts +3 -0
  357. package/dist/devices/heatit.d.ts.map +1 -0
  358. package/dist/devices/heatit.js +47 -0
  359. package/dist/devices/heiman.d.ts +3 -0
  360. package/dist/devices/heiman.d.ts.map +1 -0
  361. package/dist/devices/heiman.js +816 -0
  362. package/dist/devices/heimgard_technologies.d.ts +3 -0
  363. package/dist/devices/heimgard_technologies.d.ts.map +1 -0
  364. package/dist/devices/heimgard_technologies.js +192 -0
  365. package/dist/devices/hej.d.ts +3 -0
  366. package/dist/devices/hej.d.ts.map +1 -0
  367. package/dist/devices/hej.js +105 -0
  368. package/dist/devices/hfh.d.ts +3 -0
  369. package/dist/devices/hfh.d.ts.map +1 -0
  370. package/dist/devices/hfh.js +47 -0
  371. package/dist/devices/hilux.d.ts +3 -0
  372. package/dist/devices/hilux.d.ts.map +1 -0
  373. package/dist/devices/hilux.js +54 -0
  374. package/dist/devices/hive.d.ts +3 -0
  375. package/dist/devices/hive.d.ts.map +1 -0
  376. package/dist/devices/hive.js +765 -0
  377. package/dist/devices/hommyn.d.ts +3 -0
  378. package/dist/devices/hommyn.d.ts.map +1 -0
  379. package/dist/devices/hommyn.js +63 -0
  380. package/dist/devices/honyar.d.ts +3 -0
  381. package/dist/devices/honyar.d.ts.map +1 -0
  382. package/dist/devices/honyar.js +170 -0
  383. package/dist/devices/hornbach.d.ts +3 -0
  384. package/dist/devices/hornbach.d.ts.map +1 -0
  385. package/dist/devices/hornbach.js +138 -0
  386. package/dist/devices/hzc_electric.d.ts +3 -0
  387. package/dist/devices/hzc_electric.d.ts.map +1 -0
  388. package/dist/devices/hzc_electric.js +105 -0
  389. package/dist/devices/icasa.d.ts +3 -0
  390. package/dist/devices/icasa.d.ts.map +1 -0
  391. package/dist/devices/icasa.js +166 -0
  392. package/dist/devices/idinio.d.ts +3 -0
  393. package/dist/devices/idinio.d.ts.map +1 -0
  394. package/dist/devices/idinio.js +47 -0
  395. package/dist/devices/ihorn.d.ts +3 -0
  396. package/dist/devices/ihorn.d.ts.map +1 -0
  397. package/dist/devices/ihorn.js +108 -0
  398. package/dist/devices/ikea.d.ts +3 -0
  399. package/dist/devices/ikea.d.ts.map +1 -0
  400. package/dist/devices/ikea.js +980 -0
  401. package/dist/devices/ilightsin.d.ts +3 -0
  402. package/dist/devices/ilightsin.d.ts.map +1 -0
  403. package/dist/devices/ilightsin.js +47 -0
  404. package/dist/devices/iluminize.d.ts +3 -0
  405. package/dist/devices/iluminize.d.ts.map +1 -0
  406. package/dist/devices/iluminize.js +389 -0
  407. package/dist/devices/ilux.d.ts +3 -0
  408. package/dist/devices/ilux.d.ts.map +1 -0
  409. package/dist/devices/ilux.js +47 -0
  410. package/dist/devices/imhotepcreation.d.ts +3 -0
  411. package/dist/devices/imhotepcreation.d.ts.map +1 -0
  412. package/dist/devices/imhotepcreation.js +242 -0
  413. package/dist/devices/immax.d.ts +3 -0
  414. package/dist/devices/immax.d.ts.map +1 -0
  415. package/dist/devices/immax.js +303 -0
  416. package/dist/devices/imou.d.ts +3 -0
  417. package/dist/devices/imou.d.ts.map +1 -0
  418. package/dist/devices/imou.js +60 -0
  419. package/dist/devices/index.js +649 -0
  420. package/dist/devices/index.js.map +1 -0
  421. package/dist/devices/innr.d.ts +3 -0
  422. package/dist/devices/innr.d.ts.map +1 -0
  423. package/dist/devices/innr.js +868 -0
  424. package/dist/devices/inovelli.d.ts +3 -0
  425. package/dist/devices/inovelli.d.ts.map +1 -0
  426. package/dist/devices/inovelli.js +2002 -0
  427. package/dist/devices/inovelli.js.map +1 -0
  428. package/dist/devices/insta.d.ts +3 -0
  429. package/dist/devices/insta.d.ts.map +1 -0
  430. package/dist/devices/insta.js +185 -0
  431. package/dist/devices/iolloi.d.ts +3 -0
  432. package/dist/devices/iolloi.d.ts.map +1 -0
  433. package/dist/devices/iolloi.js +48 -0
  434. package/dist/devices/iotperfect.d.ts +3 -0
  435. package/dist/devices/iotperfect.d.ts.map +1 -0
  436. package/dist/devices/iotperfect.js +57 -0
  437. package/dist/devices/iris.d.ts +3 -0
  438. package/dist/devices/iris.d.ts.map +1 -0
  439. package/dist/devices/iris.js +210 -0
  440. package/dist/devices/istar.d.ts +3 -0
  441. package/dist/devices/istar.d.ts.map +1 -0
  442. package/dist/devices/istar.js +54 -0
  443. package/dist/devices/jasco.d.ts +3 -0
  444. package/dist/devices/jasco.d.ts.map +1 -0
  445. package/dist/devices/jasco.js +66 -0
  446. package/dist/devices/javis.d.ts +3 -0
  447. package/dist/devices/javis.d.ts.map +1 -0
  448. package/dist/devices/javis.js +80 -0
  449. package/dist/devices/jethome.d.ts +3 -0
  450. package/dist/devices/jethome.d.ts.map +1 -0
  451. package/dist/devices/jethome.js +123 -0
  452. package/dist/devices/jethome.js.map +1 -0
  453. package/dist/devices/jiawen.d.ts +3 -0
  454. package/dist/devices/jiawen.d.ts.map +1 -0
  455. package/dist/devices/jiawen.js +54 -0
  456. package/dist/devices/jumitech.d.ts +3 -0
  457. package/dist/devices/jumitech.d.ts.map +1 -0
  458. package/dist/devices/jumitech.js +47 -0
  459. package/dist/devices/jxuan.d.ts +3 -0
  460. package/dist/devices/jxuan.d.ts.map +1 -0
  461. package/dist/devices/jxuan.js +88 -0
  462. package/dist/devices/kami.d.ts +3 -0
  463. package/dist/devices/kami.d.ts.map +1 -0
  464. package/dist/devices/kami.js +54 -0
  465. package/dist/devices/keen_home.d.ts +3 -0
  466. package/dist/devices/keen_home.d.ts.map +1 -0
  467. package/dist/devices/keen_home.js +159 -0
  468. package/dist/devices/klikaanklikuit.d.ts +3 -0
  469. package/dist/devices/klikaanklikuit.d.ts.map +1 -0
  470. package/dist/devices/klikaanklikuit.js +54 -0
  471. package/dist/devices/kmpcil.d.ts +3 -0
  472. package/dist/devices/kmpcil.d.ts.map +1 -0
  473. package/dist/devices/kmpcil.js +215 -0
  474. package/dist/devices/kmpcil.js.map +1 -0
  475. package/dist/devices/konke.d.ts +3 -0
  476. package/dist/devices/konke.d.ts.map +1 -0
  477. package/dist/devices/konke.js +210 -0
  478. package/dist/devices/ksentry.d.ts +3 -0
  479. package/dist/devices/ksentry.d.ts.map +1 -0
  480. package/dist/devices/ksentry.js +47 -0
  481. package/dist/devices/kurvia.d.ts +3 -0
  482. package/dist/devices/kurvia.d.ts.map +1 -0
  483. package/dist/devices/kurvia.js +52 -0
  484. package/dist/devices/kwikset.d.ts +3 -0
  485. package/dist/devices/kwikset.d.ts.map +1 -0
  486. package/dist/devices/kwikset.js +156 -0
  487. package/dist/devices/lanesto.d.ts +3 -0
  488. package/dist/devices/lanesto.d.ts.map +1 -0
  489. package/dist/devices/lanesto.js +47 -0
  490. package/dist/devices/lds.d.ts +3 -0
  491. package/dist/devices/lds.d.ts.map +1 -0
  492. package/dist/devices/lds.js +47 -0
  493. package/dist/devices/led_trading.d.ts +3 -0
  494. package/dist/devices/led_trading.d.ts.map +1 -0
  495. package/dist/devices/led_trading.js +111 -0
  496. package/dist/devices/led_trading.js.map +1 -0
  497. package/dist/devices/ledvance.d.ts +3 -0
  498. package/dist/devices/ledvance.d.ts.map +1 -0
  499. package/dist/devices/ledvance.js +370 -0
  500. package/dist/devices/leedarson.d.ts +3 -0
  501. package/dist/devices/leedarson.d.ts.map +1 -0
  502. package/dist/devices/leedarson.js +183 -0
  503. package/dist/devices/legrand.d.ts +3 -0
  504. package/dist/devices/legrand.d.ts.map +1 -0
  505. package/dist/devices/legrand.js +737 -0
  506. package/dist/devices/lellki.d.ts +3 -0
  507. package/dist/devices/lellki.d.ts.map +1 -0
  508. package/dist/devices/lellki.js +164 -0
  509. package/dist/devices/letsled.d.ts +3 -0
  510. package/dist/devices/letsled.d.ts.map +1 -0
  511. package/dist/devices/letsled.js +47 -0
  512. package/dist/devices/letv.d.ts +3 -0
  513. package/dist/devices/letv.d.ts.map +1 -0
  514. package/dist/devices/letv.js +89 -0
  515. package/dist/devices/leviton.d.ts +3 -0
  516. package/dist/devices/leviton.d.ts.map +1 -0
  517. package/dist/devices/leviton.js +167 -0
  518. package/dist/devices/leviton.js.map +1 -0
  519. package/dist/devices/lg.d.ts +3 -0
  520. package/dist/devices/lg.d.ts.map +1 -0
  521. package/dist/devices/lg.js +61 -0
  522. package/dist/devices/lidl.d.ts +3 -0
  523. package/dist/devices/lidl.d.ts.map +1 -0
  524. package/dist/devices/lidl.js +673 -0
  525. package/dist/devices/lidl.js.map +1 -0
  526. package/dist/devices/lifecontrol.d.ts +3 -0
  527. package/dist/devices/lifecontrol.d.ts.map +1 -0
  528. package/dist/devices/lifecontrol.js +150 -0
  529. package/dist/devices/lifecontrol.js.map +1 -0
  530. package/dist/devices/lightsolutions.d.ts +3 -0
  531. package/dist/devices/lightsolutions.d.ts.map +1 -0
  532. package/dist/devices/lightsolutions.js +68 -0
  533. package/dist/devices/linkind.d.ts +3 -0
  534. package/dist/devices/linkind.d.ts.map +1 -0
  535. package/dist/devices/linkind.js +274 -0
  536. package/dist/devices/linptech.d.ts +3 -0
  537. package/dist/devices/linptech.d.ts.map +1 -0
  538. package/dist/devices/linptech.js +158 -0
  539. package/dist/devices/linptech.js.map +1 -0
  540. package/dist/devices/livingwise.d.ts +3 -0
  541. package/dist/devices/livingwise.d.ts.map +1 -0
  542. package/dist/devices/livingwise.js +118 -0
  543. package/dist/devices/livolo.d.ts +3 -0
  544. package/dist/devices/livolo.d.ts.map +1 -0
  545. package/dist/devices/livolo.js +421 -0
  546. package/dist/devices/livolo.js.map +1 -0
  547. package/dist/devices/lixee.d.ts +3 -0
  548. package/dist/devices/lixee.d.ts.map +1 -0
  549. package/dist/devices/lixee.js +1922 -0
  550. package/dist/devices/lixee.js.map +1 -0
  551. package/dist/devices/lonsonho.d.ts +3 -0
  552. package/dist/devices/lonsonho.d.ts.map +1 -0
  553. package/dist/devices/lonsonho.js +290 -0
  554. package/dist/devices/ls.d.ts +3 -0
  555. package/dist/devices/ls.d.ts.map +1 -0
  556. package/dist/devices/ls.js +66 -0
  557. package/dist/devices/lubeez.d.ts +3 -0
  558. package/dist/devices/lubeez.d.ts.map +1 -0
  559. package/dist/devices/lubeez.js +47 -0
  560. package/dist/devices/lumi.d.ts +3 -0
  561. package/dist/devices/lumi.d.ts.map +1 -0
  562. package/dist/devices/lumi.js +4433 -0
  563. package/dist/devices/lumi.js.map +1 -0
  564. package/dist/devices/lupus.d.ts +3 -0
  565. package/dist/devices/lupus.d.ts.map +1 -0
  566. package/dist/devices/lupus.js +97 -0
  567. package/dist/devices/lutron.d.ts +3 -0
  568. package/dist/devices/lutron.d.ts.map +1 -0
  569. package/dist/devices/lutron.js +71 -0
  570. package/dist/devices/lux.d.ts +3 -0
  571. package/dist/devices/lux.d.ts.map +1 -0
  572. package/dist/devices/lux.js +90 -0
  573. package/dist/devices/lytko.d.ts +3 -0
  574. package/dist/devices/lytko.d.ts.map +1 -0
  575. package/dist/devices/lytko.js +787 -0
  576. package/dist/devices/lytko.js.map +1 -0
  577. package/dist/devices/m_elec.d.ts +3 -0
  578. package/dist/devices/m_elec.d.ts.map +1 -0
  579. package/dist/devices/m_elec.js +68 -0
  580. package/dist/devices/makegood.d.ts +3 -0
  581. package/dist/devices/makegood.d.ts.map +1 -0
  582. package/dist/devices/makegood.js +65 -0
  583. package/dist/devices/matcall_bv.d.ts +3 -0
  584. package/dist/devices/matcall_bv.d.ts.map +1 -0
  585. package/dist/devices/matcall_bv.js +54 -0
  586. package/dist/devices/mazda.d.ts +3 -0
  587. package/dist/devices/mazda.d.ts.map +1 -0
  588. package/dist/devices/mazda.js +163 -0
  589. package/dist/devices/mazda.js.map +1 -0
  590. package/dist/devices/meazon.d.ts +3 -0
  591. package/dist/devices/meazon.d.ts.map +1 -0
  592. package/dist/devices/meazon.js +98 -0
  593. package/dist/devices/meazon.js.map +1 -0
  594. package/dist/devices/mercator.d.ts +3 -0
  595. package/dist/devices/mercator.d.ts.map +1 -0
  596. package/dist/devices/mercator.js +252 -0
  597. package/dist/devices/miboxer.d.ts +3 -0
  598. package/dist/devices/miboxer.d.ts.map +1 -0
  599. package/dist/devices/miboxer.js +92 -0
  600. package/dist/devices/micromatic.d.ts +3 -0
  601. package/dist/devices/micromatic.d.ts.map +1 -0
  602. package/dist/devices/micromatic.js +47 -0
  603. package/dist/devices/modular.d.ts +3 -0
  604. package/dist/devices/modular.d.ts.map +1 -0
  605. package/dist/devices/modular.js +47 -0
  606. package/dist/devices/moes.d.ts +3 -0
  607. package/dist/devices/moes.d.ts.map +1 -0
  608. package/dist/devices/moes.js +722 -0
  609. package/dist/devices/muller_licht.d.ts +3 -0
  610. package/dist/devices/muller_licht.d.ts.map +1 -0
  611. package/dist/devices/muller_licht.js +337 -0
  612. package/dist/devices/multiterm.d.ts +3 -0
  613. package/dist/devices/multiterm.d.ts.map +1 -0
  614. package/dist/devices/multiterm.js +122 -0
  615. package/dist/devices/multiterm.js.map +1 -0
  616. package/dist/devices/namron.d.ts +3 -0
  617. package/dist/devices/namron.d.ts.map +1 -0
  618. package/dist/devices/namron.js +1576 -0
  619. package/dist/devices/namron.js.map +1 -0
  620. package/dist/devices/nanoleaf.d.ts +3 -0
  621. package/dist/devices/nanoleaf.d.ts.map +1 -0
  622. package/dist/devices/nanoleaf.js +47 -0
  623. package/dist/devices/nedis.d.ts +3 -0
  624. package/dist/devices/nedis.d.ts.map +1 -0
  625. package/dist/devices/nedis.js +87 -0
  626. package/dist/devices/neo.d.ts +3 -0
  627. package/dist/devices/neo.d.ts.map +1 -0
  628. package/dist/devices/neo.js +561 -0
  629. package/dist/devices/neo.js.map +1 -0
  630. package/dist/devices/net2grid.d.ts +3 -0
  631. package/dist/devices/net2grid.d.ts.map +1 -0
  632. package/dist/devices/net2grid.js +67 -0
  633. package/dist/devices/netvox.d.ts +3 -0
  634. package/dist/devices/netvox.d.ts.map +1 -0
  635. package/dist/devices/netvox.js +74 -0
  636. package/dist/devices/nexelec.d.ts +3 -0
  637. package/dist/devices/nexelec.d.ts.map +1 -0
  638. package/dist/devices/nexelec.js +47 -0
  639. package/dist/devices/niko.d.ts +3 -0
  640. package/dist/devices/niko.d.ts.map +1 -0
  641. package/dist/devices/niko.js +626 -0
  642. package/dist/devices/niko.js.map +1 -0
  643. package/dist/devices/ninja_blocks.d.ts +3 -0
  644. package/dist/devices/ninja_blocks.d.ts.map +1 -0
  645. package/dist/devices/ninja_blocks.js +63 -0
  646. package/dist/devices/niviss.d.ts +3 -0
  647. package/dist/devices/niviss.d.ts.map +1 -0
  648. package/dist/devices/niviss.js +47 -0
  649. package/dist/devices/nodon.d.ts +3 -0
  650. package/dist/devices/nodon.d.ts.map +1 -0
  651. package/dist/devices/nodon.js +386 -0
  652. package/dist/devices/nordtronic.d.ts +3 -0
  653. package/dist/devices/nordtronic.d.ts.map +1 -0
  654. package/dist/devices/nordtronic.js +73 -0
  655. package/dist/devices/nous.d.ts +3 -0
  656. package/dist/devices/nous.d.ts.map +1 -0
  657. package/dist/devices/nous.js +168 -0
  658. package/dist/devices/novo.d.ts +3 -0
  659. package/dist/devices/novo.d.ts.map +1 -0
  660. package/dist/devices/novo.js +57 -0
  661. package/dist/devices/nue_3a.d.ts +3 -0
  662. package/dist/devices/nue_3a.d.ts.map +1 -0
  663. package/dist/devices/nue_3a.js +360 -0
  664. package/dist/devices/nue_3a.js.map +1 -0
  665. package/dist/devices/nyce.d.ts +3 -0
  666. package/dist/devices/nyce.d.ts.map +1 -0
  667. package/dist/devices/nyce.js +133 -0
  668. package/dist/devices/onenuo.d.ts +3 -0
  669. package/dist/devices/onenuo.d.ts.map +1 -0
  670. package/dist/devices/onenuo.js +85 -0
  671. package/dist/devices/onesti.d.ts +3 -0
  672. package/dist/devices/onesti.d.ts.map +1 -0
  673. package/dist/devices/onesti.js +207 -0
  674. package/dist/devices/onesti.js.map +1 -0
  675. package/dist/devices/openlumi.d.ts +3 -0
  676. package/dist/devices/openlumi.d.ts.map +1 -0
  677. package/dist/devices/openlumi.js +61 -0
  678. package/dist/devices/orvibo.d.ts +12 -0
  679. package/dist/devices/orvibo.d.ts.map +1 -0
  680. package/dist/devices/orvibo.js +597 -0
  681. package/dist/devices/orvibo.js.map +1 -0
  682. package/dist/devices/osram.d.ts +3 -0
  683. package/dist/devices/osram.d.ts.map +1 -0
  684. package/dist/devices/osram.js +516 -0
  685. package/dist/devices/oujiabao.d.ts +3 -0
  686. package/dist/devices/oujiabao.d.ts.map +1 -0
  687. package/dist/devices/oujiabao.js +54 -0
  688. package/dist/devices/owon.d.ts +3 -0
  689. package/dist/devices/owon.d.ts.map +1 -0
  690. package/dist/devices/owon.js +476 -0
  691. package/dist/devices/owon.js.map +1 -0
  692. package/dist/devices/ozsmartthings.d.ts +3 -0
  693. package/dist/devices/ozsmartthings.d.ts.map +1 -0
  694. package/dist/devices/ozsmartthings.js +47 -0
  695. package/dist/devices/paul_neuhaus.d.ts +3 -0
  696. package/dist/devices/paul_neuhaus.d.ts.map +1 -0
  697. package/dist/devices/paul_neuhaus.js +193 -0
  698. package/dist/devices/paulmann.d.ts +3 -0
  699. package/dist/devices/paulmann.d.ts.map +1 -0
  700. package/dist/devices/paulmann.js +337 -0
  701. package/dist/devices/peq.d.ts +3 -0
  702. package/dist/devices/peq.d.ts.map +1 -0
  703. package/dist/devices/peq.js +63 -0
  704. package/dist/devices/perenio.d.ts +3 -0
  705. package/dist/devices/perenio.d.ts.map +1 -0
  706. package/dist/devices/perenio.js +465 -0
  707. package/dist/devices/perenio.js.map +1 -0
  708. package/dist/devices/philio.d.ts +3 -0
  709. package/dist/devices/philio.d.ts.map +1 -0
  710. package/dist/devices/philio.js +48 -0
  711. package/dist/devices/philips.d.ts +3 -0
  712. package/dist/devices/philips.d.ts.map +1 -0
  713. package/dist/devices/philips.js +4064 -0
  714. package/dist/devices/philips.js.map +1 -0
  715. package/dist/devices/plaid.d.ts +3 -0
  716. package/dist/devices/plaid.d.ts.map +1 -0
  717. package/dist/devices/plaid.js +64 -0
  718. package/dist/devices/plugwise.d.ts +3 -0
  719. package/dist/devices/plugwise.d.ts.map +1 -0
  720. package/dist/devices/plugwise.js +209 -0
  721. package/dist/devices/plugwise.js.map +1 -0
  722. package/dist/devices/profalux.d.ts +3 -0
  723. package/dist/devices/profalux.d.ts.map +1 -0
  724. package/dist/devices/profalux.js +207 -0
  725. package/dist/devices/profalux.js.map +1 -0
  726. package/dist/devices/prolight.d.ts +3 -0
  727. package/dist/devices/prolight.d.ts.map +1 -0
  728. package/dist/devices/prolight.js +114 -0
  729. package/dist/devices/purmo.d.ts +3 -0
  730. package/dist/devices/purmo.d.ts.map +1 -0
  731. package/dist/devices/purmo.js +94 -0
  732. package/dist/devices/pushok.d.ts +3 -0
  733. package/dist/devices/pushok.d.ts.map +1 -0
  734. package/dist/devices/pushok.js +375 -0
  735. package/dist/devices/pushok.js.map +1 -0
  736. package/dist/devices/qa.d.ts +3 -0
  737. package/dist/devices/qa.d.ts.map +1 -0
  738. package/dist/devices/qa.js +294 -0
  739. package/dist/devices/qmotion.d.ts +3 -0
  740. package/dist/devices/qmotion.d.ts.map +1 -0
  741. package/dist/devices/qmotion.js +72 -0
  742. package/dist/devices/qoto.d.ts +3 -0
  743. package/dist/devices/qoto.d.ts.map +1 -0
  744. package/dist/devices/qoto.js +86 -0
  745. package/dist/devices/quotra.d.ts +3 -0
  746. package/dist/devices/quotra.d.ts.map +1 -0
  747. package/dist/devices/quotra.js +54 -0
  748. package/dist/devices/rademacher.d.ts +3 -0
  749. package/dist/devices/rademacher.d.ts.map +1 -0
  750. package/dist/devices/rademacher.js +61 -0
  751. package/dist/devices/radium.d.ts +3 -0
  752. package/dist/devices/radium.d.ts.map +1 -0
  753. package/dist/devices/radium.js +47 -0
  754. package/dist/devices/raex.d.ts +3 -0
  755. package/dist/devices/raex.d.ts.map +1 -0
  756. package/dist/devices/raex.js +47 -0
  757. package/dist/devices/rgb_genie.d.ts +3 -0
  758. package/dist/devices/rgb_genie.d.ts.map +1 -0
  759. package/dist/devices/rgb_genie.js +278 -0
  760. package/dist/devices/robb.d.ts +3 -0
  761. package/dist/devices/robb.d.ts.map +1 -0
  762. package/dist/devices/robb.js +471 -0
  763. package/dist/devices/roome.d.ts +3 -0
  764. package/dist/devices/roome.d.ts.map +1 -0
  765. package/dist/devices/roome.js +54 -0
  766. package/dist/devices/rtx.d.ts +3 -0
  767. package/dist/devices/rtx.d.ts.map +1 -0
  768. package/dist/devices/rtx.js +146 -0
  769. package/dist/devices/salus_controls.d.ts +3 -0
  770. package/dist/devices/salus_controls.d.ts.map +1 -0
  771. package/dist/devices/salus_controls.js +224 -0
  772. package/dist/devices/samotech.d.ts +3 -0
  773. package/dist/devices/samotech.d.ts.map +1 -0
  774. package/dist/devices/samotech.js +107 -0
  775. package/dist/devices/saswell.d.ts +3 -0
  776. package/dist/devices/saswell.d.ts.map +1 -0
  777. package/dist/devices/saswell.js +126 -0
  778. package/dist/devices/sber.d.ts +3 -0
  779. package/dist/devices/sber.d.ts.map +1 -0
  780. package/dist/devices/sber.js +98 -0
  781. package/dist/devices/scanproducts.d.ts +3 -0
  782. package/dist/devices/scanproducts.d.ts.map +1 -0
  783. package/dist/devices/scanproducts.js +54 -0
  784. package/dist/devices/schlage.d.ts +3 -0
  785. package/dist/devices/schlage.d.ts.map +1 -0
  786. package/dist/devices/schlage.js +63 -0
  787. package/dist/devices/schneider_electric.d.ts +3 -0
  788. package/dist/devices/schneider_electric.d.ts.map +1 -0
  789. package/dist/devices/schneider_electric.js +2187 -0
  790. package/dist/devices/schneider_electric.js.map +1 -0
  791. package/dist/devices/schwaiger.d.ts +3 -0
  792. package/dist/devices/schwaiger.d.ts.map +1 -0
  793. package/dist/devices/schwaiger.js +108 -0
  794. package/dist/devices/seastar_intelligence.d.ts +3 -0
  795. package/dist/devices/seastar_intelligence.d.ts.map +1 -0
  796. package/dist/devices/seastar_intelligence.js +52 -0
  797. package/dist/devices/securifi.d.ts +3 -0
  798. package/dist/devices/securifi.d.ts.map +1 -0
  799. package/dist/devices/securifi.js +82 -0
  800. package/dist/devices/sengled.d.ts +6 -0
  801. package/dist/devices/sengled.d.ts.map +1 -0
  802. package/dist/devices/sengled.js +388 -0
  803. package/dist/devices/sengled.js.map +1 -0
  804. package/dist/devices/sercomm.d.ts +3 -0
  805. package/dist/devices/sercomm.d.ts.map +1 -0
  806. package/dist/devices/sercomm.js +189 -0
  807. package/dist/devices/shade_control.d.ts +3 -0
  808. package/dist/devices/shade_control.d.ts.map +1 -0
  809. package/dist/devices/shade_control.js +64 -0
  810. package/dist/devices/shenzhen_homa.d.ts +3 -0
  811. package/dist/devices/shenzhen_homa.d.ts.map +1 -0
  812. package/dist/devices/shenzhen_homa.js +143 -0
  813. package/dist/devices/shinasystem.d.ts +3 -0
  814. package/dist/devices/shinasystem.d.ts.map +1 -0
  815. package/dist/devices/shinasystem.js +960 -0
  816. package/dist/devices/shinasystem.js.map +1 -0
  817. package/dist/devices/shyugj.d.ts +3 -0
  818. package/dist/devices/shyugj.d.ts.map +1 -0
  819. package/dist/devices/shyugj.js +53 -0
  820. package/dist/devices/siglis.d.ts +3 -0
  821. package/dist/devices/siglis.d.ts.map +1 -0
  822. package/dist/devices/siglis.js +452 -0
  823. package/dist/devices/siglis.js.map +1 -0
  824. package/dist/devices/sikom.d.ts +3 -0
  825. package/dist/devices/sikom.d.ts.map +1 -0
  826. package/dist/devices/sikom.js +67 -0
  827. package/dist/devices/simon.d.ts +3 -0
  828. package/dist/devices/simon.d.ts.map +1 -0
  829. package/dist/devices/simon.js +14 -0
  830. package/dist/devices/sinope.d.ts +3 -0
  831. package/dist/devices/sinope.d.ts.map +1 -0
  832. package/dist/devices/sinope.js +1754 -0
  833. package/dist/devices/sinope.js.map +1 -0
  834. package/dist/devices/siterwell.d.ts +3 -0
  835. package/dist/devices/siterwell.d.ts.map +1 -0
  836. package/dist/devices/siterwell.js +110 -0
  837. package/dist/devices/skydance.d.ts +3 -0
  838. package/dist/devices/skydance.d.ts.map +1 -0
  839. package/dist/devices/skydance.js +138 -0
  840. package/dist/devices/slv.d.ts +3 -0
  841. package/dist/devices/slv.d.ts.map +1 -0
  842. package/dist/devices/slv.js +70 -0
  843. package/dist/devices/smart9.d.ts +3 -0
  844. package/dist/devices/smart9.d.ts.map +1 -0
  845. package/dist/devices/smart9.js +66 -0
  846. package/dist/devices/smart_home_pty.d.ts +3 -0
  847. package/dist/devices/smart_home_pty.d.ts.map +1 -0
  848. package/dist/devices/smart_home_pty.js +54 -0
  849. package/dist/devices/smartenit.d.ts +3 -0
  850. package/dist/devices/smartenit.d.ts.map +1 -0
  851. package/dist/devices/smartenit.js +80 -0
  852. package/dist/devices/smartthings.d.ts +3 -0
  853. package/dist/devices/smartthings.d.ts.map +1 -0
  854. package/dist/devices/smartthings.js +526 -0
  855. package/dist/devices/smartthings.js.map +1 -0
  856. package/dist/devices/smartwings.d.ts +3 -0
  857. package/dist/devices/smartwings.d.ts.map +1 -0
  858. package/dist/devices/smartwings.js +63 -0
  859. package/dist/devices/smlight.d.ts +3 -0
  860. package/dist/devices/smlight.d.ts.map +1 -0
  861. package/dist/devices/smlight.js +56 -0
  862. package/dist/devices/sohan_electric.d.ts +3 -0
  863. package/dist/devices/sohan_electric.d.ts.map +1 -0
  864. package/dist/devices/sohan_electric.js +53 -0
  865. package/dist/devices/solaredge.d.ts +3 -0
  866. package/dist/devices/solaredge.d.ts.map +1 -0
  867. package/dist/devices/solaredge.js +47 -0
  868. package/dist/devices/soma.d.ts +3 -0
  869. package/dist/devices/soma.d.ts.map +1 -0
  870. package/dist/devices/soma.js +47 -0
  871. package/dist/devices/somfy.d.ts +3 -0
  872. package/dist/devices/somfy.d.ts.map +1 -0
  873. package/dist/devices/somfy.js +101 -0
  874. package/dist/devices/somgoms.d.ts +3 -0
  875. package/dist/devices/somgoms.d.ts.map +1 -0
  876. package/dist/devices/somgoms.js +84 -0
  877. package/dist/devices/sonoff.d.ts +3 -0
  878. package/dist/devices/sonoff.d.ts.map +1 -0
  879. package/dist/devices/sonoff.js +1612 -0
  880. package/dist/devices/sonoff.js.map +1 -0
  881. package/dist/devices/sowilo.d.ts +3 -0
  882. package/dist/devices/sowilo.d.ts.map +1 -0
  883. package/dist/devices/sowilo.js +47 -0
  884. package/dist/devices/spotmau.d.ts +3 -0
  885. package/dist/devices/spotmau.d.ts.map +1 -0
  886. package/dist/devices/spotmau.js +74 -0
  887. package/dist/devices/stelpro.d.ts +3 -0
  888. package/dist/devices/stelpro.d.ts.map +1 -0
  889. package/dist/devices/stelpro.js +365 -0
  890. package/dist/devices/stelpro.js.map +1 -0
  891. package/dist/devices/sunricher.d.ts +3 -0
  892. package/dist/devices/sunricher.d.ts.map +1 -0
  893. package/dist/devices/sunricher.js +2282 -0
  894. package/dist/devices/sunricher.js.map +1 -0
  895. package/dist/devices/swann.d.ts +3 -0
  896. package/dist/devices/swann.d.ts.map +1 -0
  897. package/dist/devices/swann.js +72 -0
  898. package/dist/devices/sylvania.d.ts +3 -0
  899. package/dist/devices/sylvania.d.ts.map +1 -0
  900. package/dist/devices/sylvania.js +226 -0
  901. package/dist/devices/tapestry.d.ts +3 -0
  902. package/dist/devices/tapestry.d.ts.map +1 -0
  903. package/dist/devices/tapestry.js +55 -0
  904. package/dist/devices/tci.d.ts +3 -0
  905. package/dist/devices/tci.d.ts.map +1 -0
  906. package/dist/devices/tci.js +61 -0
  907. package/dist/devices/tech.d.ts +3 -0
  908. package/dist/devices/tech.d.ts.map +1 -0
  909. package/dist/devices/tech.js +225 -0
  910. package/dist/devices/tech.js.map +1 -0
  911. package/dist/devices/technicolor.d.ts +3 -0
  912. package/dist/devices/technicolor.d.ts.map +1 -0
  913. package/dist/devices/technicolor.js +101 -0
  914. package/dist/devices/terncy.d.ts +3 -0
  915. package/dist/devices/terncy.d.ts.map +1 -0
  916. package/dist/devices/terncy.js +116 -0
  917. package/dist/devices/the_light_group.d.ts +3 -0
  918. package/dist/devices/the_light_group.d.ts.map +1 -0
  919. package/dist/devices/the_light_group.js +129 -0
  920. package/dist/devices/third_reality.d.ts +3 -0
  921. package/dist/devices/third_reality.d.ts.map +1 -0
  922. package/dist/devices/third_reality.js +609 -0
  923. package/dist/devices/third_reality.js.map +1 -0
  924. package/dist/devices/titan_products.d.ts +3 -0
  925. package/dist/devices/titan_products.d.ts.map +1 -0
  926. package/dist/devices/titan_products.js +61 -0
  927. package/dist/devices/tlwglobal.d.ts +3 -0
  928. package/dist/devices/tlwglobal.d.ts.map +1 -0
  929. package/dist/devices/tlwglobal.js +64 -0
  930. package/dist/devices/tplink.d.ts +3 -0
  931. package/dist/devices/tplink.d.ts.map +1 -0
  932. package/dist/devices/tplink.js +80 -0
  933. package/dist/devices/trust.d.ts +3 -0
  934. package/dist/devices/trust.d.ts.map +1 -0
  935. package/dist/devices/trust.js +182 -0
  936. package/dist/devices/tubeszb.d.ts +3 -0
  937. package/dist/devices/tubeszb.d.ts.map +1 -0
  938. package/dist/devices/tubeszb.js +59 -0
  939. package/dist/devices/tuya.d.ts +3 -0
  940. package/dist/devices/tuya.d.ts.map +1 -0
  941. package/dist/devices/tuya.js +16004 -0
  942. package/dist/devices/tuya.js.map +1 -0
  943. package/dist/devices/ubisys.d.ts +3 -0
  944. package/dist/devices/ubisys.d.ts.map +1 -0
  945. package/dist/devices/ubisys.js +1310 -0
  946. package/dist/devices/ubisys.js.map +1 -0
  947. package/dist/devices/uhome.d.ts +3 -0
  948. package/dist/devices/uhome.d.ts.map +1 -0
  949. package/dist/devices/uhome.js +63 -0
  950. package/dist/devices/universal_electronics_inc.d.ts +3 -0
  951. package/dist/devices/universal_electronics_inc.d.ts.map +1 -0
  952. package/dist/devices/universal_electronics_inc.js +185 -0
  953. package/dist/devices/vbled.d.ts +3 -0
  954. package/dist/devices/vbled.d.ts.map +1 -0
  955. package/dist/devices/vbled.js +47 -0
  956. package/dist/devices/vesternet.d.ts +3 -0
  957. package/dist/devices/vesternet.d.ts.map +1 -0
  958. package/dist/devices/vesternet.js +329 -0
  959. package/dist/devices/vesternet.js.map +1 -0
  960. package/dist/devices/viessmann.d.ts +3 -0
  961. package/dist/devices/viessmann.d.ts.map +1 -0
  962. package/dist/devices/viessmann.js +123 -0
  963. package/dist/devices/villeroy_boch.d.ts +3 -0
  964. package/dist/devices/villeroy_boch.d.ts.map +1 -0
  965. package/dist/devices/villeroy_boch.js +54 -0
  966. package/dist/devices/vimar.d.ts +3 -0
  967. package/dist/devices/vimar.d.ts.map +1 -0
  968. package/dist/devices/vimar.js +136 -0
  969. package/dist/devices/visonic.d.ts +3 -0
  970. package/dist/devices/visonic.d.ts.map +1 -0
  971. package/dist/devices/visonic.js +137 -0
  972. package/dist/devices/vrey.d.ts +3 -0
  973. package/dist/devices/vrey.d.ts.map +1 -0
  974. package/dist/devices/vrey.js +48 -0
  975. package/dist/devices/wally.d.ts +3 -0
  976. package/dist/devices/wally.d.ts.map +1 -0
  977. package/dist/devices/wally.js +63 -0
  978. package/dist/devices/waxman.d.ts +3 -0
  979. package/dist/devices/waxman.d.ts.map +1 -0
  980. package/dist/devices/waxman.js +84 -0
  981. package/dist/devices/weiser.d.ts +3 -0
  982. package/dist/devices/weiser.d.ts.map +1 -0
  983. package/dist/devices/weiser.js +102 -0
  984. package/dist/devices/weiser.js.map +1 -0
  985. package/dist/devices/weten.d.ts +3 -0
  986. package/dist/devices/weten.d.ts.map +1 -0
  987. package/dist/devices/weten.js +88 -0
  988. package/dist/devices/wirenboard.d.ts +3 -0
  989. package/dist/devices/wirenboard.d.ts.map +1 -0
  990. package/dist/devices/wirenboard.js +666 -0
  991. package/dist/devices/wirenboard.js.map +1 -0
  992. package/dist/devices/wisdom.d.ts +3 -0
  993. package/dist/devices/wisdom.d.ts.map +1 -0
  994. package/dist/devices/wisdom.js +47 -0
  995. package/dist/devices/woolley.d.ts +3 -0
  996. package/dist/devices/woolley.d.ts.map +1 -0
  997. package/dist/devices/woolley.js +87 -0
  998. package/dist/devices/woox.d.ts +3 -0
  999. package/dist/devices/woox.d.ts.map +1 -0
  1000. package/dist/devices/woox.js +132 -0
  1001. package/dist/devices/wyze.d.ts +3 -0
  1002. package/dist/devices/wyze.d.ts.map +1 -0
  1003. package/dist/devices/wyze.js +62 -0
  1004. package/dist/devices/xal.d.ts +3 -0
  1005. package/dist/devices/xal.d.ts.map +1 -0
  1006. package/dist/devices/xal.js +61 -0
  1007. package/dist/devices/xinghuoyuan.d.ts +3 -0
  1008. package/dist/devices/xinghuoyuan.d.ts.map +1 -0
  1009. package/dist/devices/xinghuoyuan.js +47 -0
  1010. package/dist/devices/xyzroe.d.ts +3 -0
  1011. package/dist/devices/xyzroe.d.ts.map +1 -0
  1012. package/dist/devices/xyzroe.js +516 -0
  1013. package/dist/devices/xyzroe.js.map +1 -0
  1014. package/dist/devices/yale.d.ts +3 -0
  1015. package/dist/devices/yale.d.ts.map +1 -0
  1016. package/dist/devices/yale.js +502 -0
  1017. package/dist/devices/yale.js.map +1 -0
  1018. package/dist/devices/yandex.d.ts +3 -0
  1019. package/dist/devices/yandex.d.ts.map +1 -0
  1020. package/dist/devices/yandex.js +444 -0
  1021. package/dist/devices/yandex.js.map +1 -0
  1022. package/dist/devices/ynoa.d.ts +3 -0
  1023. package/dist/devices/ynoa.d.ts.map +1 -0
  1024. package/dist/devices/ynoa.js +112 -0
  1025. package/dist/devices/yokis.d.ts +3 -0
  1026. package/dist/devices/yokis.d.ts.map +1 -0
  1027. package/dist/devices/yokis.js +2535 -0
  1028. package/dist/devices/yokis.js.map +1 -0
  1029. package/dist/devices/yookee.d.ts +3 -0
  1030. package/dist/devices/yookee.d.ts.map +1 -0
  1031. package/dist/devices/yookee.js +62 -0
  1032. package/dist/devices/ysrsai.d.ts +3 -0
  1033. package/dist/devices/ysrsai.d.ts.map +1 -0
  1034. package/dist/devices/ysrsai.js +65 -0
  1035. package/dist/devices/zemismart.d.ts +3 -0
  1036. package/dist/devices/zemismart.d.ts.map +1 -0
  1037. package/dist/devices/zemismart.js +391 -0
  1038. package/dist/devices/zen.d.ts +3 -0
  1039. package/dist/devices/zen.d.ts.map +1 -0
  1040. package/dist/devices/zen.js +95 -0
  1041. package/dist/devices/zigbeetlc.js +235 -0
  1042. package/dist/devices/zipato.d.ts +3 -0
  1043. package/dist/devices/zipato.d.ts.map +1 -0
  1044. package/dist/devices/zipato.js +47 -0
  1045. package/dist/index.d.ts +20 -0
  1046. package/dist/index.d.ts.map +1 -0
  1047. package/dist/index.js +513 -0
  1048. package/dist/index.js.map +1 -0
  1049. package/dist/indexer.d.ts +5 -0
  1050. package/dist/indexer.d.ts.map +1 -0
  1051. package/dist/indexer.js +135 -0
  1052. package/dist/indexer.js.map +1 -0
  1053. package/dist/lib/color.d.ts +271 -0
  1054. package/dist/lib/color.d.ts.map +1 -0
  1055. package/dist/lib/color.js +754 -0
  1056. package/dist/lib/color.js.map +1 -0
  1057. package/dist/lib/configureKey.d.ts +3 -0
  1058. package/dist/lib/configureKey.d.ts.map +1 -0
  1059. package/dist/lib/configureKey.js +938 -0
  1060. package/dist/lib/configureKey.js.map +1 -0
  1061. package/dist/lib/constants.d.ts +68 -0
  1062. package/dist/lib/constants.d.ts.map +1 -0
  1063. package/dist/lib/constants.js +264 -0
  1064. package/dist/lib/constants.js.map +1 -0
  1065. package/dist/lib/develco.d.ts +15 -0
  1066. package/dist/lib/develco.d.ts.map +1 -0
  1067. package/dist/lib/develco.js +183 -0
  1068. package/dist/lib/develco.js.map +1 -0
  1069. package/dist/lib/ewelink.d.ts +30 -0
  1070. package/dist/lib/ewelink.d.ts.map +1 -0
  1071. package/dist/lib/ewelink.js +716 -0
  1072. package/dist/lib/ewelink.js.map +1 -0
  1073. package/dist/lib/exposes.d.ts +360 -0
  1074. package/dist/lib/exposes.d.ts.map +1 -0
  1075. package/dist/lib/exposes.js +1085 -0
  1076. package/dist/lib/exposes.js.map +1 -0
  1077. package/dist/lib/generateDefinition.d.ts +6 -0
  1078. package/dist/lib/generateDefinition.d.ts.map +1 -0
  1079. package/dist/lib/generateDefinition.js +345 -0
  1080. package/dist/lib/generateDefinition.js.map +1 -0
  1081. package/dist/lib/ikea.d.ts +39 -0
  1082. package/dist/lib/ikea.d.ts.map +1 -0
  1083. package/dist/lib/ikea.js +785 -0
  1084. package/dist/lib/ikea.js.map +1 -0
  1085. package/dist/lib/kelvinToXy.js +1913 -0
  1086. package/dist/lib/kelvinToXy.js.map +1 -0
  1087. package/dist/lib/ledvance.d.ts +20 -0
  1088. package/dist/lib/ledvance.d.ts.map +1 -0
  1089. package/dist/lib/ledvance.js +103 -0
  1090. package/dist/lib/ledvance.js.map +1 -0
  1091. package/dist/lib/legacy.d.ts +5054 -0
  1092. package/dist/lib/legacy.d.ts.map +1 -0
  1093. package/dist/lib/legacy.js +6456 -0
  1094. package/dist/lib/legacy.js.map +1 -0
  1095. package/dist/lib/legrand.d.ts +69 -0
  1096. package/dist/lib/legrand.d.ts.map +1 -0
  1097. package/dist/lib/legrand.js +282 -0
  1098. package/dist/lib/legrand.js.map +1 -0
  1099. package/dist/lib/light.d.ts +8 -0
  1100. package/dist/lib/light.d.ts.map +1 -0
  1101. package/dist/lib/light.js +142 -0
  1102. package/dist/lib/light.js.map +1 -0
  1103. package/dist/lib/logger.d.ts +4 -0
  1104. package/dist/lib/logger.d.ts.map +1 -0
  1105. package/dist/lib/logger.js +14 -0
  1106. package/dist/lib/lumi.d.ts +962 -0
  1107. package/dist/lib/lumi.d.ts.map +1 -0
  1108. package/dist/lib/lumi.js +5020 -0
  1109. package/dist/lib/lumi.js.map +1 -0
  1110. package/dist/lib/modernExtend.d.ts +337 -0
  1111. package/dist/lib/modernExtend.d.ts.map +1 -0
  1112. package/dist/lib/modernExtend.js +2091 -0
  1113. package/dist/lib/modernExtend.js.map +1 -0
  1114. package/dist/lib/namron.d.ts +56 -0
  1115. package/dist/lib/namron.d.ts.map +1 -0
  1116. package/dist/lib/namron.js +434 -0
  1117. package/dist/lib/namron.js.map +1 -0
  1118. package/dist/lib/nodon.d.ts +3 -0
  1119. package/dist/lib/nodon.d.ts.map +1 -0
  1120. package/dist/lib/nodon.js +130 -0
  1121. package/dist/lib/nodon.js.map +1 -0
  1122. package/dist/lib/ota.d.ts +71 -0
  1123. package/dist/lib/ota.d.ts.map +1 -0
  1124. package/dist/lib/ota.js +661 -0
  1125. package/dist/lib/ota.js.map +1 -0
  1126. package/dist/lib/philips.d.ts +252 -0
  1127. package/dist/lib/philips.d.ts.map +1 -0
  1128. package/dist/lib/philips.js +687 -0
  1129. package/dist/lib/philips.js.map +1 -0
  1130. package/dist/lib/reporting.d.ts +58 -0
  1131. package/dist/lib/reporting.d.ts.map +1 -0
  1132. package/dist/lib/reporting.js +285 -0
  1133. package/dist/lib/store.d.ts +7 -0
  1134. package/dist/lib/store.d.ts.map +1 -0
  1135. package/dist/lib/store.js +49 -0
  1136. package/dist/lib/store.js.map +1 -0
  1137. package/dist/lib/sunricher.d.ts +13 -0
  1138. package/dist/lib/sunricher.d.ts.map +1 -0
  1139. package/dist/lib/sunricher.js +14 -0
  1140. package/dist/lib/tuya.d.ts +784 -0
  1141. package/dist/lib/tuya.d.ts.map +1 -0
  1142. package/dist/lib/tuya.js +2397 -0
  1143. package/dist/lib/tuya.js.map +1 -0
  1144. package/dist/lib/types.d.ts +440 -0
  1145. package/dist/lib/types.d.ts.map +1 -0
  1146. package/dist/lib/ubisys.d.ts +19 -0
  1147. package/dist/lib/ubisys.d.ts.map +1 -0
  1148. package/dist/lib/ubisys.js +293 -0
  1149. package/dist/lib/ubisys.js.map +1 -0
  1150. package/dist/lib/utils.d.ts +93 -0
  1151. package/dist/lib/utils.d.ts.map +1 -0
  1152. package/dist/lib/utils.js +726 -0
  1153. package/dist/lib/utils.js.map +1 -0
  1154. package/dist/lib/zosung.d.ts +52 -0
  1155. package/dist/lib/zosung.d.ts.map +1 -0
  1156. package/dist/lib/zosung.js +253 -0
  1157. package/dist/lib/zosung.js.map +1 -0
  1158. package/dist/models-index.json +1 -0
  1159. package/package.json +21 -30
  1160. package/CHANGELOG.md +0 -7334
  1161. package/converters/fromZigbee.d.ts +0 -2031
  1162. package/converters/fromZigbee.d.ts.map +0 -1
  1163. package/converters/fromZigbee.js +0 -5324
  1164. package/converters/fromZigbee.js.map +0 -1
  1165. package/converters/toZigbee.d.ts +0 -1574
  1166. package/converters/toZigbee.d.ts.map +0 -1
  1167. package/converters/toZigbee.js +0 -4433
  1168. package/converters/toZigbee.js.map +0 -1
  1169. package/devices/ITCommander.d.ts +0 -3
  1170. package/devices/ITCommander.d.ts.map +0 -1
  1171. package/devices/ITCommander.js +0 -76
  1172. package/devices/acova.d.ts +0 -3
  1173. package/devices/acova.d.ts.map +0 -1
  1174. package/devices/acova.js +0 -126
  1175. package/devices/acuity_brands_lighting.d.ts +0 -3
  1176. package/devices/acuity_brands_lighting.d.ts.map +0 -1
  1177. package/devices/acuity_brands_lighting.js +0 -61
  1178. package/devices/adeo.d.ts +0 -3
  1179. package/devices/adeo.d.ts.map +0 -1
  1180. package/devices/adeo.js +0 -485
  1181. package/devices/adeo.js.map +0 -1
  1182. package/devices/adurosmart.d.ts +0 -3
  1183. package/devices/adurosmart.d.ts.map +0 -1
  1184. package/devices/adurosmart.js +0 -189
  1185. package/devices/aeotec.d.ts +0 -3
  1186. package/devices/aeotec.d.ts.map +0 -1
  1187. package/devices/aeotec.js +0 -98
  1188. package/devices/airam.d.ts +0 -3
  1189. package/devices/airam.d.ts.map +0 -1
  1190. package/devices/airam.js +0 -105
  1191. package/devices/airzone_aidoo.d.ts +0 -3
  1192. package/devices/airzone_aidoo.d.ts.map +0 -1
  1193. package/devices/airzone_aidoo.js +0 -80
  1194. package/devices/ajax_online.d.ts +0 -3
  1195. package/devices/ajax_online.d.ts.map +0 -1
  1196. package/devices/ajax_online.js +0 -83
  1197. package/devices/akuvox.d.ts +0 -3
  1198. package/devices/akuvox.d.ts.map +0 -1
  1199. package/devices/akuvox.js +0 -68
  1200. package/devices/alchemy.d.ts +0 -3
  1201. package/devices/alchemy.d.ts.map +0 -1
  1202. package/devices/alchemy.js +0 -54
  1203. package/devices/aldi.d.ts +0 -3
  1204. package/devices/aldi.d.ts.map +0 -1
  1205. package/devices/aldi.js +0 -57
  1206. package/devices/alecto.d.ts +0 -3
  1207. package/devices/alecto.d.ts.map +0 -1
  1208. package/devices/alecto.js +0 -95
  1209. package/devices/amina.d.ts +0 -3
  1210. package/devices/amina.d.ts.map +0 -1
  1211. package/devices/amina.js +0 -369
  1212. package/devices/amina.js.map +0 -1
  1213. package/devices/anchor.d.ts +0 -3
  1214. package/devices/anchor.d.ts.map +0 -1
  1215. package/devices/anchor.js +0 -47
  1216. package/devices/atlantic.d.ts +0 -3
  1217. package/devices/atlantic.d.ts.map +0 -1
  1218. package/devices/atlantic.js +0 -145
  1219. package/devices/atlantic.js.map +0 -1
  1220. package/devices/atsmart.d.ts +0 -3
  1221. package/devices/atsmart.d.ts.map +0 -1
  1222. package/devices/atsmart.js +0 -47
  1223. package/devices/aubess.d.ts +0 -3
  1224. package/devices/aubess.d.ts.map +0 -1
  1225. package/devices/aubess.js +0 -60
  1226. package/devices/aurora_lighting.d.ts +0 -3
  1227. package/devices/aurora_lighting.d.ts.map +0 -1
  1228. package/devices/aurora_lighting.js +0 -332
  1229. package/devices/automaton.d.ts +0 -3
  1230. package/devices/automaton.d.ts.map +0 -1
  1231. package/devices/automaton.js +0 -64
  1232. package/devices/avatto.d.ts +0 -3
  1233. package/devices/avatto.d.ts.map +0 -1
  1234. package/devices/avatto.js +0 -273
  1235. package/devices/avatto.js.map +0 -1
  1236. package/devices/awox.d.ts +0 -3
  1237. package/devices/awox.d.ts.map +0 -1
  1238. package/devices/awox.js +0 -239
  1239. package/devices/axis.d.ts +0 -3
  1240. package/devices/axis.d.ts.map +0 -1
  1241. package/devices/axis.js +0 -62
  1242. package/devices/bankamp.d.ts +0 -3
  1243. package/devices/bankamp.d.ts.map +0 -1
  1244. package/devices/bankamp.js +0 -47
  1245. package/devices/bega.d.ts +0 -3
  1246. package/devices/bega.d.ts.map +0 -1
  1247. package/devices/bega.js +0 -61
  1248. package/devices/belkin.d.ts +0 -3
  1249. package/devices/belkin.d.ts.map +0 -1
  1250. package/devices/belkin.js +0 -47
  1251. package/devices/bitron.d.ts +0 -3
  1252. package/devices/bitron.d.ts.map +0 -1
  1253. package/devices/bitron.js +0 -357
  1254. package/devices/bitron.js.map +0 -1
  1255. package/devices/bituo_technik.d.ts +0 -3
  1256. package/devices/bituo_technik.d.ts.map +0 -1
  1257. package/devices/bituo_technik.js +0 -120
  1258. package/devices/blaupunkt.d.ts +0 -3
  1259. package/devices/blaupunkt.d.ts.map +0 -1
  1260. package/devices/blaupunkt.js +0 -67
  1261. package/devices/blitzwolf.d.ts +0 -3
  1262. package/devices/blitzwolf.d.ts.map +0 -1
  1263. package/devices/blitzwolf.js +0 -73
  1264. package/devices/bosch.d.ts +0 -3
  1265. package/devices/bosch.d.ts.map +0 -1
  1266. package/devices/bosch.js +0 -2046
  1267. package/devices/bosch.js.map +0 -1
  1268. package/devices/bouffalo_lab.d.ts +0 -3
  1269. package/devices/bouffalo_lab.d.ts.map +0 -1
  1270. package/devices/bouffalo_lab.js +0 -47
  1271. package/devices/brimate.d.ts +0 -3
  1272. package/devices/brimate.d.ts.map +0 -1
  1273. package/devices/brimate.js +0 -54
  1274. package/devices/bseed.d.ts +0 -3
  1275. package/devices/bseed.d.ts.map +0 -1
  1276. package/devices/bseed.js +0 -53
  1277. package/devices/bticino.d.ts +0 -3
  1278. package/devices/bticino.d.ts.map +0 -1
  1279. package/devices/bticino.js +0 -112
  1280. package/devices/busch_jaeger.d.ts +0 -3
  1281. package/devices/busch_jaeger.d.ts.map +0 -1
  1282. package/devices/busch_jaeger.js +0 -184
  1283. package/devices/busch_jaeger.js.map +0 -1
  1284. package/devices/byun.d.ts +0 -3
  1285. package/devices/byun.d.ts.map +0 -1
  1286. package/devices/byun.js +0 -63
  1287. package/devices/calex.d.ts +0 -3
  1288. package/devices/calex.d.ts.map +0 -1
  1289. package/devices/calex.js +0 -90
  1290. package/devices/candeo.d.ts +0 -3
  1291. package/devices/candeo.d.ts.map +0 -1
  1292. package/devices/candeo.js +0 -224
  1293. package/devices/casaia.d.ts +0 -3
  1294. package/devices/casaia.d.ts.map +0 -1
  1295. package/devices/casaia.js +0 -98
  1296. package/devices/cel.d.ts +0 -3
  1297. package/devices/cel.d.ts.map +0 -1
  1298. package/devices/cel.js +0 -19
  1299. package/devices/centralite.d.ts +0 -3
  1300. package/devices/centralite.d.ts.map +0 -1
  1301. package/devices/centralite.js +0 -452
  1302. package/devices/centralite.js.map +0 -1
  1303. package/devices/chacon.d.ts +0 -3
  1304. package/devices/chacon.d.ts.map +0 -1
  1305. package/devices/chacon.js +0 -57
  1306. package/devices/cleode.d.ts +0 -3
  1307. package/devices/cleode.d.ts.map +0 -1
  1308. package/devices/cleode.js +0 -47
  1309. package/devices/cleverio.d.ts +0 -3
  1310. package/devices/cleverio.d.ts.map +0 -1
  1311. package/devices/cleverio.js +0 -77
  1312. package/devices/climax.d.ts +0 -3
  1313. package/devices/climax.d.ts.map +0 -1
  1314. package/devices/climax.js +0 -180
  1315. package/devices/commercial_electric.d.ts +0 -3
  1316. package/devices/commercial_electric.d.ts.map +0 -1
  1317. package/devices/commercial_electric.js +0 -47
  1318. package/devices/cree.d.ts +0 -3
  1319. package/devices/cree.d.ts.map +0 -1
  1320. package/devices/cree.js +0 -47
  1321. package/devices/ctm.d.ts +0 -3
  1322. package/devices/ctm.d.ts.map +0 -1
  1323. package/devices/ctm.js +0 -1361
  1324. package/devices/ctm.js.map +0 -1
  1325. package/devices/current_products_corp.d.ts +0 -3
  1326. package/devices/current_products_corp.d.ts.map +0 -1
  1327. package/devices/current_products_corp.js +0 -63
  1328. package/devices/custom_devices_diy.d.ts +0 -3
  1329. package/devices/custom_devices_diy.d.ts.map +0 -1
  1330. package/devices/custom_devices_diy.js +0 -1206
  1331. package/devices/custom_devices_diy.js.map +0 -1
  1332. package/devices/cy_lighting.d.ts +0 -3
  1333. package/devices/cy_lighting.d.ts.map +0 -1
  1334. package/devices/cy_lighting.js +0 -47
  1335. package/devices/danalock.d.ts +0 -3
  1336. package/devices/danalock.d.ts.map +0 -1
  1337. package/devices/danalock.js +0 -64
  1338. package/devices/danfoss.d.ts +0 -3
  1339. package/devices/danfoss.d.ts.map +0 -1
  1340. package/devices/danfoss.js +0 -741
  1341. package/devices/danfoss.js.map +0 -1
  1342. package/devices/databyte.d.ts +0 -3
  1343. package/devices/databyte.d.ts.map +0 -1
  1344. package/devices/databyte.js +0 -93
  1345. package/devices/datek.d.ts +0 -3
  1346. package/devices/datek.d.ts.map +0 -1
  1347. package/devices/datek.js +0 -307
  1348. package/devices/datek.js.map +0 -1
  1349. package/devices/dawon_dns.d.ts +0 -3
  1350. package/devices/dawon_dns.d.ts.map +0 -1
  1351. package/devices/dawon_dns.js +0 -317
  1352. package/devices/develco.d.ts +0 -3
  1353. package/devices/develco.d.ts.map +0 -1
  1354. package/devices/develco.js +0 -1034
  1355. package/devices/develco.js.map +0 -1
  1356. package/devices/digi.d.ts +0 -3
  1357. package/devices/digi.d.ts.map +0 -1
  1358. package/devices/digi.js +0 -24
  1359. package/devices/direct_signs.d.ts +0 -3
  1360. package/devices/direct_signs.d.ts.map +0 -1
  1361. package/devices/direct_signs.js +0 -47
  1362. package/devices/diyruz.d.ts +0 -3
  1363. package/devices/diyruz.d.ts.map +0 -1
  1364. package/devices/diyruz.js +0 -400
  1365. package/devices/dlink.d.ts +0 -3
  1366. package/devices/dlink.d.ts.map +0 -1
  1367. package/devices/dlink.js +0 -75
  1368. package/devices/dnake.d.ts +0 -3
  1369. package/devices/dnake.d.ts.map +0 -1
  1370. package/devices/dnake.js +0 -47
  1371. package/devices/dowsing_reynolds.d.ts +0 -3
  1372. package/devices/dowsing_reynolds.d.ts.map +0 -1
  1373. package/devices/dowsing_reynolds.js +0 -47
  1374. package/devices/dresden_elektronik.d.ts +0 -3
  1375. package/devices/dresden_elektronik.d.ts.map +0 -1
  1376. package/devices/dresden_elektronik.js +0 -82
  1377. package/devices/easyaccess.d.ts +0 -3
  1378. package/devices/easyaccess.d.ts.map +0 -1
  1379. package/devices/easyaccess.js +0 -70
  1380. package/devices/easyiot.d.ts +0 -3
  1381. package/devices/easyiot.d.ts.map +0 -1
  1382. package/devices/easyiot.js +0 -357
  1383. package/devices/easyiot.js.map +0 -1
  1384. package/devices/eatonhalo_led.d.ts +0 -3
  1385. package/devices/eatonhalo_led.d.ts.map +0 -1
  1386. package/devices/eatonhalo_led.js +0 -47
  1387. package/devices/echostar.d.ts +0 -3
  1388. package/devices/echostar.d.ts.map +0 -1
  1389. package/devices/echostar.js +0 -64
  1390. package/devices/ecodim.d.ts +0 -3
  1391. package/devices/ecodim.d.ts.map +0 -1
  1392. package/devices/ecodim.js +0 -269
  1393. package/devices/ecolink.d.ts +0 -3
  1394. package/devices/ecolink.d.ts.map +0 -1
  1395. package/devices/ecolink.js +0 -60
  1396. package/devices/ecosmart.d.ts +0 -3
  1397. package/devices/ecosmart.d.ts.map +0 -1
  1398. package/devices/ecosmart.js +0 -115
  1399. package/devices/ecozy.d.ts +0 -3
  1400. package/devices/ecozy.d.ts.map +0 -1
  1401. package/devices/ecozy.js +0 -88
  1402. package/devices/edp.d.ts +0 -3
  1403. package/devices/edp.d.ts.map +0 -1
  1404. package/devices/edp.js +0 -73
  1405. package/devices/efekta.d.ts +0 -3
  1406. package/devices/efekta.d.ts.map +0 -1
  1407. package/devices/efekta.js +0 -2632
  1408. package/devices/eglo.d.ts +0 -3
  1409. package/devices/eglo.d.ts.map +0 -1
  1410. package/devices/eglo.js +0 -133
  1411. package/devices/elko.d.ts +0 -3
  1412. package/devices/elko.d.ts.map +0 -1
  1413. package/devices/elko.js +0 -239
  1414. package/devices/enbrighten.d.ts +0 -3
  1415. package/devices/enbrighten.d.ts.map +0 -1
  1416. package/devices/enbrighten.js +0 -156
  1417. package/devices/enocean.d.ts +0 -3
  1418. package/devices/enocean.d.ts.map +0 -1
  1419. package/devices/enocean.js +0 -152
  1420. package/devices/envilar.d.ts +0 -3
  1421. package/devices/envilar.d.ts.map +0 -1
  1422. package/devices/envilar.js +0 -99
  1423. package/devices/essentialb.d.ts +0 -3
  1424. package/devices/essentialb.d.ts.map +0 -1
  1425. package/devices/essentialb.js +0 -136
  1426. package/devices/essentials.d.ts +0 -3
  1427. package/devices/essentials.d.ts.map +0 -1
  1428. package/devices/essentials.js +0 -150
  1429. package/devices/eucontrols.d.ts +0 -3
  1430. package/devices/eucontrols.d.ts.map +0 -1
  1431. package/devices/eucontrols.js +0 -47
  1432. package/devices/eurotronic.d.ts +0 -3
  1433. package/devices/eurotronic.d.ts.map +0 -1
  1434. package/devices/eurotronic.js +0 -205
  1435. package/devices/evanell.d.ts +0 -3
  1436. package/devices/evanell.d.ts.map +0 -1
  1437. package/devices/evanell.js +0 -71
  1438. package/devices/evn.d.ts +0 -3
  1439. package/devices/evn.d.ts.map +0 -1
  1440. package/devices/evn.js +0 -93
  1441. package/devices/evology.d.ts +0 -3
  1442. package/devices/evology.d.ts.map +0 -1
  1443. package/devices/evology.js +0 -63
  1444. package/devices/evvr.d.ts +0 -3
  1445. package/devices/evvr.d.ts.map +0 -1
  1446. package/devices/evvr.js +0 -47
  1447. package/devices/ewelink.d.ts +0 -3
  1448. package/devices/ewelink.d.ts.map +0 -1
  1449. package/devices/ewelink.js +0 -352
  1450. package/devices/ewelink.js.map +0 -1
  1451. package/devices/ezex.d.ts +0 -3
  1452. package/devices/ezex.d.ts.map +0 -1
  1453. package/devices/ezex.js +0 -47
  1454. package/devices/fantem.d.ts +0 -3
  1455. package/devices/fantem.d.ts.map +0 -1
  1456. package/devices/fantem.js +0 -114
  1457. package/devices/fantem.js.map +0 -1
  1458. package/devices/feibit.d.ts +0 -3
  1459. package/devices/feibit.d.ts.map +0 -1
  1460. package/devices/feibit.js +0 -344
  1461. package/devices/feibit.js.map +0 -1
  1462. package/devices/fireangel.d.ts +0 -3
  1463. package/devices/fireangel.d.ts.map +0 -1
  1464. package/devices/fireangel.js +0 -54
  1465. package/devices/frankever.d.ts +0 -3
  1466. package/devices/frankever.d.ts.map +0 -1
  1467. package/devices/frankever.js +0 -67
  1468. package/devices/frient.d.ts +0 -3
  1469. package/devices/frient.d.ts.map +0 -1
  1470. package/devices/frient.js +0 -74
  1471. package/devices/futurehome.d.ts +0 -3
  1472. package/devices/futurehome.d.ts.map +0 -1
  1473. package/devices/futurehome.js +0 -123
  1474. package/devices/ge.d.ts +0 -3
  1475. package/devices/ge.d.ts.map +0 -1
  1476. package/devices/ge.js +0 -133
  1477. package/devices/gewiss.d.ts +0 -3
  1478. package/devices/gewiss.d.ts.map +0 -1
  1479. package/devices/gewiss.js +0 -85
  1480. package/devices/gidealed.d.ts +0 -3
  1481. package/devices/gidealed.d.ts.map +0 -1
  1482. package/devices/gidealed.js +0 -47
  1483. package/devices/giderwel.d.ts +0 -3
  1484. package/devices/giderwel.d.ts.map +0 -1
  1485. package/devices/giderwel.js +0 -47
  1486. package/devices/giex.d.ts +0 -3
  1487. package/devices/giex.d.ts.map +0 -1
  1488. package/devices/giex.js +0 -114
  1489. package/devices/girier.d.ts +0 -3
  1490. package/devices/girier.d.ts.map +0 -1
  1491. package/devices/girier.js +0 -51
  1492. package/devices/gledopto.d.ts +0 -3
  1493. package/devices/gledopto.d.ts.map +0 -1
  1494. package/devices/gledopto.js +0 -1052
  1495. package/devices/gledopto.js.map +0 -1
  1496. package/devices/gmmts.d.ts +0 -3
  1497. package/devices/gmmts.d.ts.map +0 -1
  1498. package/devices/gmmts.js +0 -2285
  1499. package/devices/gmmts.js.map +0 -1
  1500. package/devices/gmy.d.ts +0 -3
  1501. package/devices/gmy.d.ts.map +0 -1
  1502. package/devices/gmy.js +0 -47
  1503. package/devices/gs.d.ts +0 -3
  1504. package/devices/gs.d.ts.map +0 -1
  1505. package/devices/gs.js +0 -121
  1506. package/devices/gumax.d.ts +0 -3
  1507. package/devices/gumax.d.ts.map +0 -1
  1508. package/devices/gumax.js +0 -47
  1509. package/devices/halemeier.d.ts +0 -3
  1510. package/devices/halemeier.d.ts.map +0 -1
  1511. package/devices/halemeier.js +0 -128
  1512. package/devices/hampton_bay.d.ts +0 -3
  1513. package/devices/hampton_bay.d.ts.map +0 -1
  1514. package/devices/hampton_bay.js +0 -71
  1515. package/devices/heatit.d.ts +0 -3
  1516. package/devices/heatit.d.ts.map +0 -1
  1517. package/devices/heatit.js +0 -47
  1518. package/devices/heiman.d.ts +0 -3
  1519. package/devices/heiman.d.ts.map +0 -1
  1520. package/devices/heiman.js +0 -816
  1521. package/devices/heimgard_technologies.d.ts +0 -3
  1522. package/devices/heimgard_technologies.d.ts.map +0 -1
  1523. package/devices/heimgard_technologies.js +0 -192
  1524. package/devices/hej.d.ts +0 -3
  1525. package/devices/hej.d.ts.map +0 -1
  1526. package/devices/hej.js +0 -105
  1527. package/devices/hfh.d.ts +0 -3
  1528. package/devices/hfh.d.ts.map +0 -1
  1529. package/devices/hfh.js +0 -47
  1530. package/devices/hilux.d.ts +0 -3
  1531. package/devices/hilux.d.ts.map +0 -1
  1532. package/devices/hilux.js +0 -54
  1533. package/devices/hive.d.ts +0 -3
  1534. package/devices/hive.d.ts.map +0 -1
  1535. package/devices/hive.js +0 -765
  1536. package/devices/hommyn.d.ts +0 -3
  1537. package/devices/hommyn.d.ts.map +0 -1
  1538. package/devices/hommyn.js +0 -63
  1539. package/devices/honyar.d.ts +0 -3
  1540. package/devices/honyar.d.ts.map +0 -1
  1541. package/devices/honyar.js +0 -170
  1542. package/devices/hornbach.d.ts +0 -3
  1543. package/devices/hornbach.d.ts.map +0 -1
  1544. package/devices/hornbach.js +0 -138
  1545. package/devices/hzc_electric.d.ts +0 -3
  1546. package/devices/hzc_electric.d.ts.map +0 -1
  1547. package/devices/hzc_electric.js +0 -105
  1548. package/devices/icasa.d.ts +0 -3
  1549. package/devices/icasa.d.ts.map +0 -1
  1550. package/devices/icasa.js +0 -166
  1551. package/devices/idinio.d.ts +0 -3
  1552. package/devices/idinio.d.ts.map +0 -1
  1553. package/devices/idinio.js +0 -47
  1554. package/devices/ihorn.d.ts +0 -3
  1555. package/devices/ihorn.d.ts.map +0 -1
  1556. package/devices/ihorn.js +0 -108
  1557. package/devices/ikea.d.ts +0 -3
  1558. package/devices/ikea.d.ts.map +0 -1
  1559. package/devices/ikea.js +0 -980
  1560. package/devices/ilightsin.d.ts +0 -3
  1561. package/devices/ilightsin.d.ts.map +0 -1
  1562. package/devices/ilightsin.js +0 -47
  1563. package/devices/iluminize.d.ts +0 -3
  1564. package/devices/iluminize.d.ts.map +0 -1
  1565. package/devices/iluminize.js +0 -389
  1566. package/devices/ilux.d.ts +0 -3
  1567. package/devices/ilux.d.ts.map +0 -1
  1568. package/devices/ilux.js +0 -47
  1569. package/devices/imhotepcreation.d.ts +0 -3
  1570. package/devices/imhotepcreation.d.ts.map +0 -1
  1571. package/devices/imhotepcreation.js +0 -242
  1572. package/devices/immax.d.ts +0 -3
  1573. package/devices/immax.d.ts.map +0 -1
  1574. package/devices/immax.js +0 -303
  1575. package/devices/imou.d.ts +0 -3
  1576. package/devices/imou.d.ts.map +0 -1
  1577. package/devices/imou.js +0 -60
  1578. package/devices/index.js +0 -649
  1579. package/devices/index.js.map +0 -1
  1580. package/devices/innr.d.ts +0 -3
  1581. package/devices/innr.d.ts.map +0 -1
  1582. package/devices/innr.js +0 -868
  1583. package/devices/inovelli.d.ts +0 -3
  1584. package/devices/inovelli.d.ts.map +0 -1
  1585. package/devices/inovelli.js +0 -2014
  1586. package/devices/inovelli.js.map +0 -1
  1587. package/devices/insta.d.ts +0 -3
  1588. package/devices/insta.d.ts.map +0 -1
  1589. package/devices/insta.js +0 -185
  1590. package/devices/iolloi.d.ts +0 -3
  1591. package/devices/iolloi.d.ts.map +0 -1
  1592. package/devices/iolloi.js +0 -48
  1593. package/devices/iotperfect.d.ts +0 -3
  1594. package/devices/iotperfect.d.ts.map +0 -1
  1595. package/devices/iotperfect.js +0 -57
  1596. package/devices/iris.d.ts +0 -3
  1597. package/devices/iris.d.ts.map +0 -1
  1598. package/devices/iris.js +0 -210
  1599. package/devices/istar.d.ts +0 -3
  1600. package/devices/istar.d.ts.map +0 -1
  1601. package/devices/istar.js +0 -54
  1602. package/devices/jasco.d.ts +0 -3
  1603. package/devices/jasco.d.ts.map +0 -1
  1604. package/devices/jasco.js +0 -66
  1605. package/devices/javis.d.ts +0 -3
  1606. package/devices/javis.d.ts.map +0 -1
  1607. package/devices/javis.js +0 -80
  1608. package/devices/jethome.d.ts +0 -3
  1609. package/devices/jethome.d.ts.map +0 -1
  1610. package/devices/jethome.js +0 -123
  1611. package/devices/jethome.js.map +0 -1
  1612. package/devices/jiawen.d.ts +0 -3
  1613. package/devices/jiawen.d.ts.map +0 -1
  1614. package/devices/jiawen.js +0 -54
  1615. package/devices/jumitech.d.ts +0 -3
  1616. package/devices/jumitech.d.ts.map +0 -1
  1617. package/devices/jumitech.js +0 -47
  1618. package/devices/jxuan.d.ts +0 -3
  1619. package/devices/jxuan.d.ts.map +0 -1
  1620. package/devices/jxuan.js +0 -88
  1621. package/devices/kami.d.ts +0 -3
  1622. package/devices/kami.d.ts.map +0 -1
  1623. package/devices/kami.js +0 -54
  1624. package/devices/keen_home.d.ts +0 -3
  1625. package/devices/keen_home.d.ts.map +0 -1
  1626. package/devices/keen_home.js +0 -159
  1627. package/devices/klikaanklikuit.d.ts +0 -3
  1628. package/devices/klikaanklikuit.d.ts.map +0 -1
  1629. package/devices/klikaanklikuit.js +0 -54
  1630. package/devices/kmpcil.d.ts +0 -3
  1631. package/devices/kmpcil.d.ts.map +0 -1
  1632. package/devices/kmpcil.js +0 -215
  1633. package/devices/kmpcil.js.map +0 -1
  1634. package/devices/konke.d.ts +0 -3
  1635. package/devices/konke.d.ts.map +0 -1
  1636. package/devices/konke.js +0 -210
  1637. package/devices/ksentry.d.ts +0 -3
  1638. package/devices/ksentry.d.ts.map +0 -1
  1639. package/devices/ksentry.js +0 -47
  1640. package/devices/kurvia.d.ts +0 -3
  1641. package/devices/kurvia.d.ts.map +0 -1
  1642. package/devices/kurvia.js +0 -52
  1643. package/devices/kwikset.d.ts +0 -3
  1644. package/devices/kwikset.d.ts.map +0 -1
  1645. package/devices/kwikset.js +0 -156
  1646. package/devices/lanesto.d.ts +0 -3
  1647. package/devices/lanesto.d.ts.map +0 -1
  1648. package/devices/lanesto.js +0 -47
  1649. package/devices/lds.d.ts +0 -3
  1650. package/devices/lds.d.ts.map +0 -1
  1651. package/devices/lds.js +0 -47
  1652. package/devices/led_trading.d.ts +0 -3
  1653. package/devices/led_trading.d.ts.map +0 -1
  1654. package/devices/led_trading.js +0 -111
  1655. package/devices/led_trading.js.map +0 -1
  1656. package/devices/ledvance.d.ts +0 -3
  1657. package/devices/ledvance.d.ts.map +0 -1
  1658. package/devices/ledvance.js +0 -370
  1659. package/devices/leedarson.d.ts +0 -3
  1660. package/devices/leedarson.d.ts.map +0 -1
  1661. package/devices/leedarson.js +0 -183
  1662. package/devices/legrand.d.ts +0 -3
  1663. package/devices/legrand.d.ts.map +0 -1
  1664. package/devices/legrand.js +0 -737
  1665. package/devices/lellki.d.ts +0 -3
  1666. package/devices/lellki.d.ts.map +0 -1
  1667. package/devices/lellki.js +0 -164
  1668. package/devices/letsled.d.ts +0 -3
  1669. package/devices/letsled.d.ts.map +0 -1
  1670. package/devices/letsled.js +0 -47
  1671. package/devices/letv.d.ts +0 -3
  1672. package/devices/letv.d.ts.map +0 -1
  1673. package/devices/letv.js +0 -89
  1674. package/devices/leviton.d.ts +0 -3
  1675. package/devices/leviton.d.ts.map +0 -1
  1676. package/devices/leviton.js +0 -163
  1677. package/devices/leviton.js.map +0 -1
  1678. package/devices/lg.d.ts +0 -3
  1679. package/devices/lg.d.ts.map +0 -1
  1680. package/devices/lg.js +0 -61
  1681. package/devices/lidl.d.ts +0 -3
  1682. package/devices/lidl.d.ts.map +0 -1
  1683. package/devices/lidl.js +0 -673
  1684. package/devices/lidl.js.map +0 -1
  1685. package/devices/lifecontrol.d.ts +0 -3
  1686. package/devices/lifecontrol.d.ts.map +0 -1
  1687. package/devices/lifecontrol.js +0 -148
  1688. package/devices/lifecontrol.js.map +0 -1
  1689. package/devices/lightsolutions.d.ts +0 -3
  1690. package/devices/lightsolutions.d.ts.map +0 -1
  1691. package/devices/lightsolutions.js +0 -68
  1692. package/devices/linkind.d.ts +0 -3
  1693. package/devices/linkind.d.ts.map +0 -1
  1694. package/devices/linkind.js +0 -274
  1695. package/devices/linptech.d.ts +0 -3
  1696. package/devices/linptech.d.ts.map +0 -1
  1697. package/devices/linptech.js +0 -158
  1698. package/devices/linptech.js.map +0 -1
  1699. package/devices/livingwise.d.ts +0 -3
  1700. package/devices/livingwise.d.ts.map +0 -1
  1701. package/devices/livingwise.js +0 -118
  1702. package/devices/livolo.d.ts +0 -3
  1703. package/devices/livolo.d.ts.map +0 -1
  1704. package/devices/livolo.js +0 -421
  1705. package/devices/livolo.js.map +0 -1
  1706. package/devices/lixee.d.ts +0 -3
  1707. package/devices/lixee.d.ts.map +0 -1
  1708. package/devices/lixee.js +0 -1924
  1709. package/devices/lixee.js.map +0 -1
  1710. package/devices/lonsonho.d.ts +0 -3
  1711. package/devices/lonsonho.d.ts.map +0 -1
  1712. package/devices/lonsonho.js +0 -290
  1713. package/devices/ls.d.ts +0 -3
  1714. package/devices/ls.d.ts.map +0 -1
  1715. package/devices/ls.js +0 -66
  1716. package/devices/lubeez.d.ts +0 -3
  1717. package/devices/lubeez.d.ts.map +0 -1
  1718. package/devices/lubeez.js +0 -47
  1719. package/devices/lumi.d.ts +0 -3
  1720. package/devices/lumi.d.ts.map +0 -1
  1721. package/devices/lumi.js +0 -4430
  1722. package/devices/lumi.js.map +0 -1
  1723. package/devices/lupus.d.ts +0 -3
  1724. package/devices/lupus.d.ts.map +0 -1
  1725. package/devices/lupus.js +0 -97
  1726. package/devices/lutron.d.ts +0 -3
  1727. package/devices/lutron.d.ts.map +0 -1
  1728. package/devices/lutron.js +0 -71
  1729. package/devices/lux.d.ts +0 -3
  1730. package/devices/lux.d.ts.map +0 -1
  1731. package/devices/lux.js +0 -90
  1732. package/devices/lytko.d.ts +0 -3
  1733. package/devices/lytko.d.ts.map +0 -1
  1734. package/devices/lytko.js +0 -787
  1735. package/devices/lytko.js.map +0 -1
  1736. package/devices/m_elec.d.ts +0 -3
  1737. package/devices/m_elec.d.ts.map +0 -1
  1738. package/devices/m_elec.js +0 -68
  1739. package/devices/makegood.d.ts +0 -3
  1740. package/devices/makegood.d.ts.map +0 -1
  1741. package/devices/makegood.js +0 -65
  1742. package/devices/matcall_bv.d.ts +0 -3
  1743. package/devices/matcall_bv.d.ts.map +0 -1
  1744. package/devices/matcall_bv.js +0 -54
  1745. package/devices/mazda.d.ts +0 -3
  1746. package/devices/mazda.d.ts.map +0 -1
  1747. package/devices/mazda.js +0 -163
  1748. package/devices/mazda.js.map +0 -1
  1749. package/devices/meazon.d.ts +0 -3
  1750. package/devices/meazon.d.ts.map +0 -1
  1751. package/devices/meazon.js +0 -98
  1752. package/devices/meazon.js.map +0 -1
  1753. package/devices/mercator.d.ts +0 -3
  1754. package/devices/mercator.d.ts.map +0 -1
  1755. package/devices/mercator.js +0 -252
  1756. package/devices/miboxer.d.ts +0 -3
  1757. package/devices/miboxer.d.ts.map +0 -1
  1758. package/devices/miboxer.js +0 -92
  1759. package/devices/micromatic.d.ts +0 -3
  1760. package/devices/micromatic.d.ts.map +0 -1
  1761. package/devices/micromatic.js +0 -47
  1762. package/devices/modular.d.ts +0 -3
  1763. package/devices/modular.d.ts.map +0 -1
  1764. package/devices/modular.js +0 -47
  1765. package/devices/moes.d.ts +0 -3
  1766. package/devices/moes.d.ts.map +0 -1
  1767. package/devices/moes.js +0 -722
  1768. package/devices/muller_licht.d.ts +0 -3
  1769. package/devices/muller_licht.d.ts.map +0 -1
  1770. package/devices/muller_licht.js +0 -337
  1771. package/devices/multiterm.d.ts +0 -3
  1772. package/devices/multiterm.d.ts.map +0 -1
  1773. package/devices/multiterm.js +0 -122
  1774. package/devices/multiterm.js.map +0 -1
  1775. package/devices/namron.d.ts +0 -3
  1776. package/devices/namron.d.ts.map +0 -1
  1777. package/devices/namron.js +0 -1572
  1778. package/devices/namron.js.map +0 -1
  1779. package/devices/nanoleaf.d.ts +0 -3
  1780. package/devices/nanoleaf.d.ts.map +0 -1
  1781. package/devices/nanoleaf.js +0 -47
  1782. package/devices/nedis.d.ts +0 -3
  1783. package/devices/nedis.d.ts.map +0 -1
  1784. package/devices/nedis.js +0 -87
  1785. package/devices/neo.d.ts +0 -3
  1786. package/devices/neo.d.ts.map +0 -1
  1787. package/devices/neo.js +0 -557
  1788. package/devices/neo.js.map +0 -1
  1789. package/devices/net2grid.d.ts +0 -3
  1790. package/devices/net2grid.d.ts.map +0 -1
  1791. package/devices/net2grid.js +0 -67
  1792. package/devices/netvox.d.ts +0 -3
  1793. package/devices/netvox.d.ts.map +0 -1
  1794. package/devices/netvox.js +0 -74
  1795. package/devices/nexelec.d.ts +0 -3
  1796. package/devices/nexelec.d.ts.map +0 -1
  1797. package/devices/nexelec.js +0 -47
  1798. package/devices/niko.d.ts +0 -3
  1799. package/devices/niko.d.ts.map +0 -1
  1800. package/devices/niko.js +0 -632
  1801. package/devices/niko.js.map +0 -1
  1802. package/devices/ninja_blocks.d.ts +0 -3
  1803. package/devices/ninja_blocks.d.ts.map +0 -1
  1804. package/devices/ninja_blocks.js +0 -63
  1805. package/devices/niviss.d.ts +0 -3
  1806. package/devices/niviss.d.ts.map +0 -1
  1807. package/devices/niviss.js +0 -47
  1808. package/devices/nodon.d.ts +0 -3
  1809. package/devices/nodon.d.ts.map +0 -1
  1810. package/devices/nodon.js +0 -386
  1811. package/devices/nordtronic.d.ts +0 -3
  1812. package/devices/nordtronic.d.ts.map +0 -1
  1813. package/devices/nordtronic.js +0 -73
  1814. package/devices/nous.d.ts +0 -3
  1815. package/devices/nous.d.ts.map +0 -1
  1816. package/devices/nous.js +0 -168
  1817. package/devices/novo.d.ts +0 -3
  1818. package/devices/novo.d.ts.map +0 -1
  1819. package/devices/novo.js +0 -57
  1820. package/devices/nue_3a.d.ts +0 -3
  1821. package/devices/nue_3a.d.ts.map +0 -1
  1822. package/devices/nue_3a.js +0 -360
  1823. package/devices/nue_3a.js.map +0 -1
  1824. package/devices/nyce.d.ts +0 -3
  1825. package/devices/nyce.d.ts.map +0 -1
  1826. package/devices/nyce.js +0 -133
  1827. package/devices/onenuo.d.ts +0 -3
  1828. package/devices/onenuo.d.ts.map +0 -1
  1829. package/devices/onenuo.js +0 -85
  1830. package/devices/onesti.d.ts +0 -3
  1831. package/devices/onesti.d.ts.map +0 -1
  1832. package/devices/onesti.js +0 -207
  1833. package/devices/onesti.js.map +0 -1
  1834. package/devices/openlumi.d.ts +0 -3
  1835. package/devices/openlumi.d.ts.map +0 -1
  1836. package/devices/openlumi.js +0 -61
  1837. package/devices/orvibo.d.ts +0 -12
  1838. package/devices/orvibo.d.ts.map +0 -1
  1839. package/devices/orvibo.js +0 -595
  1840. package/devices/orvibo.js.map +0 -1
  1841. package/devices/osram.d.ts +0 -3
  1842. package/devices/osram.d.ts.map +0 -1
  1843. package/devices/osram.js +0 -516
  1844. package/devices/oujiabao.d.ts +0 -3
  1845. package/devices/oujiabao.d.ts.map +0 -1
  1846. package/devices/oujiabao.js +0 -54
  1847. package/devices/owon.d.ts +0 -3
  1848. package/devices/owon.d.ts.map +0 -1
  1849. package/devices/owon.js +0 -476
  1850. package/devices/owon.js.map +0 -1
  1851. package/devices/ozsmartthings.d.ts +0 -3
  1852. package/devices/ozsmartthings.d.ts.map +0 -1
  1853. package/devices/ozsmartthings.js +0 -47
  1854. package/devices/paul_neuhaus.d.ts +0 -3
  1855. package/devices/paul_neuhaus.d.ts.map +0 -1
  1856. package/devices/paul_neuhaus.js +0 -193
  1857. package/devices/paulmann.d.ts +0 -3
  1858. package/devices/paulmann.d.ts.map +0 -1
  1859. package/devices/paulmann.js +0 -337
  1860. package/devices/peq.d.ts +0 -3
  1861. package/devices/peq.d.ts.map +0 -1
  1862. package/devices/peq.js +0 -63
  1863. package/devices/perenio.d.ts +0 -3
  1864. package/devices/perenio.d.ts.map +0 -1
  1865. package/devices/perenio.js +0 -467
  1866. package/devices/perenio.js.map +0 -1
  1867. package/devices/philio.d.ts +0 -3
  1868. package/devices/philio.d.ts.map +0 -1
  1869. package/devices/philio.js +0 -48
  1870. package/devices/philips.d.ts +0 -3
  1871. package/devices/philips.d.ts.map +0 -1
  1872. package/devices/philips.js +0 -4057
  1873. package/devices/philips.js.map +0 -1
  1874. package/devices/plaid.d.ts +0 -3
  1875. package/devices/plaid.d.ts.map +0 -1
  1876. package/devices/plaid.js +0 -64
  1877. package/devices/plugwise.d.ts +0 -3
  1878. package/devices/plugwise.d.ts.map +0 -1
  1879. package/devices/plugwise.js +0 -209
  1880. package/devices/plugwise.js.map +0 -1
  1881. package/devices/profalux.d.ts +0 -3
  1882. package/devices/profalux.d.ts.map +0 -1
  1883. package/devices/profalux.js +0 -190
  1884. package/devices/profalux.js.map +0 -1
  1885. package/devices/prolight.d.ts +0 -3
  1886. package/devices/prolight.d.ts.map +0 -1
  1887. package/devices/prolight.js +0 -114
  1888. package/devices/purmo.d.ts +0 -3
  1889. package/devices/purmo.d.ts.map +0 -1
  1890. package/devices/purmo.js +0 -94
  1891. package/devices/pushok.d.ts +0 -3
  1892. package/devices/pushok.d.ts.map +0 -1
  1893. package/devices/pushok.js +0 -375
  1894. package/devices/pushok.js.map +0 -1
  1895. package/devices/qa.d.ts +0 -3
  1896. package/devices/qa.d.ts.map +0 -1
  1897. package/devices/qa.js +0 -294
  1898. package/devices/qmotion.d.ts +0 -3
  1899. package/devices/qmotion.d.ts.map +0 -1
  1900. package/devices/qmotion.js +0 -72
  1901. package/devices/qoto.d.ts +0 -3
  1902. package/devices/qoto.d.ts.map +0 -1
  1903. package/devices/qoto.js +0 -86
  1904. package/devices/quotra.d.ts +0 -3
  1905. package/devices/quotra.d.ts.map +0 -1
  1906. package/devices/quotra.js +0 -54
  1907. package/devices/rademacher.d.ts +0 -3
  1908. package/devices/rademacher.d.ts.map +0 -1
  1909. package/devices/rademacher.js +0 -61
  1910. package/devices/radium.d.ts +0 -3
  1911. package/devices/radium.d.ts.map +0 -1
  1912. package/devices/radium.js +0 -47
  1913. package/devices/raex.d.ts +0 -3
  1914. package/devices/raex.d.ts.map +0 -1
  1915. package/devices/raex.js +0 -47
  1916. package/devices/rgb_genie.d.ts +0 -3
  1917. package/devices/rgb_genie.d.ts.map +0 -1
  1918. package/devices/rgb_genie.js +0 -278
  1919. package/devices/robb.d.ts +0 -3
  1920. package/devices/robb.d.ts.map +0 -1
  1921. package/devices/robb.js +0 -471
  1922. package/devices/roome.d.ts +0 -3
  1923. package/devices/roome.d.ts.map +0 -1
  1924. package/devices/roome.js +0 -54
  1925. package/devices/rtx.d.ts +0 -3
  1926. package/devices/rtx.d.ts.map +0 -1
  1927. package/devices/rtx.js +0 -146
  1928. package/devices/salus_controls.d.ts +0 -3
  1929. package/devices/salus_controls.d.ts.map +0 -1
  1930. package/devices/salus_controls.js +0 -224
  1931. package/devices/samotech.d.ts +0 -3
  1932. package/devices/samotech.d.ts.map +0 -1
  1933. package/devices/samotech.js +0 -107
  1934. package/devices/saswell.d.ts +0 -3
  1935. package/devices/saswell.d.ts.map +0 -1
  1936. package/devices/saswell.js +0 -126
  1937. package/devices/sber.d.ts +0 -3
  1938. package/devices/sber.d.ts.map +0 -1
  1939. package/devices/sber.js +0 -98
  1940. package/devices/scanproducts.d.ts +0 -3
  1941. package/devices/scanproducts.d.ts.map +0 -1
  1942. package/devices/scanproducts.js +0 -54
  1943. package/devices/schlage.d.ts +0 -3
  1944. package/devices/schlage.d.ts.map +0 -1
  1945. package/devices/schlage.js +0 -63
  1946. package/devices/schneider_electric.d.ts +0 -3
  1947. package/devices/schneider_electric.d.ts.map +0 -1
  1948. package/devices/schneider_electric.js +0 -2189
  1949. package/devices/schneider_electric.js.map +0 -1
  1950. package/devices/schwaiger.d.ts +0 -3
  1951. package/devices/schwaiger.d.ts.map +0 -1
  1952. package/devices/schwaiger.js +0 -108
  1953. package/devices/seastar_intelligence.d.ts +0 -3
  1954. package/devices/seastar_intelligence.d.ts.map +0 -1
  1955. package/devices/seastar_intelligence.js +0 -52
  1956. package/devices/securifi.d.ts +0 -3
  1957. package/devices/securifi.d.ts.map +0 -1
  1958. package/devices/securifi.js +0 -82
  1959. package/devices/sengled.d.ts +0 -6
  1960. package/devices/sengled.d.ts.map +0 -1
  1961. package/devices/sengled.js +0 -390
  1962. package/devices/sengled.js.map +0 -1
  1963. package/devices/sercomm.d.ts +0 -3
  1964. package/devices/sercomm.d.ts.map +0 -1
  1965. package/devices/sercomm.js +0 -189
  1966. package/devices/shade_control.d.ts +0 -3
  1967. package/devices/shade_control.d.ts.map +0 -1
  1968. package/devices/shade_control.js +0 -64
  1969. package/devices/shenzhen_homa.d.ts +0 -3
  1970. package/devices/shenzhen_homa.d.ts.map +0 -1
  1971. package/devices/shenzhen_homa.js +0 -143
  1972. package/devices/shinasystem.d.ts +0 -3
  1973. package/devices/shinasystem.d.ts.map +0 -1
  1974. package/devices/shinasystem.js +0 -960
  1975. package/devices/shinasystem.js.map +0 -1
  1976. package/devices/shyugj.d.ts +0 -3
  1977. package/devices/shyugj.d.ts.map +0 -1
  1978. package/devices/shyugj.js +0 -53
  1979. package/devices/siglis.d.ts +0 -3
  1980. package/devices/siglis.d.ts.map +0 -1
  1981. package/devices/siglis.js +0 -454
  1982. package/devices/siglis.js.map +0 -1
  1983. package/devices/sikom.d.ts +0 -3
  1984. package/devices/sikom.d.ts.map +0 -1
  1985. package/devices/sikom.js +0 -67
  1986. package/devices/simon.d.ts +0 -3
  1987. package/devices/simon.d.ts.map +0 -1
  1988. package/devices/simon.js +0 -14
  1989. package/devices/sinope.d.ts +0 -3
  1990. package/devices/sinope.d.ts.map +0 -1
  1991. package/devices/sinope.js +0 -1754
  1992. package/devices/sinope.js.map +0 -1
  1993. package/devices/siterwell.d.ts +0 -3
  1994. package/devices/siterwell.d.ts.map +0 -1
  1995. package/devices/siterwell.js +0 -110
  1996. package/devices/skydance.d.ts +0 -3
  1997. package/devices/skydance.d.ts.map +0 -1
  1998. package/devices/skydance.js +0 -138
  1999. package/devices/slv.d.ts +0 -3
  2000. package/devices/slv.d.ts.map +0 -1
  2001. package/devices/slv.js +0 -70
  2002. package/devices/smart9.d.ts +0 -3
  2003. package/devices/smart9.d.ts.map +0 -1
  2004. package/devices/smart9.js +0 -66
  2005. package/devices/smart_home_pty.d.ts +0 -3
  2006. package/devices/smart_home_pty.d.ts.map +0 -1
  2007. package/devices/smart_home_pty.js +0 -54
  2008. package/devices/smartenit.d.ts +0 -3
  2009. package/devices/smartenit.d.ts.map +0 -1
  2010. package/devices/smartenit.js +0 -80
  2011. package/devices/smartthings.d.ts +0 -3
  2012. package/devices/smartthings.d.ts.map +0 -1
  2013. package/devices/smartthings.js +0 -526
  2014. package/devices/smartthings.js.map +0 -1
  2015. package/devices/smartwings.d.ts +0 -3
  2016. package/devices/smartwings.d.ts.map +0 -1
  2017. package/devices/smartwings.js +0 -63
  2018. package/devices/smlight.d.ts +0 -3
  2019. package/devices/smlight.d.ts.map +0 -1
  2020. package/devices/smlight.js +0 -56
  2021. package/devices/sohan_electric.d.ts +0 -3
  2022. package/devices/sohan_electric.d.ts.map +0 -1
  2023. package/devices/sohan_electric.js +0 -53
  2024. package/devices/solaredge.d.ts +0 -3
  2025. package/devices/solaredge.d.ts.map +0 -1
  2026. package/devices/solaredge.js +0 -47
  2027. package/devices/soma.d.ts +0 -3
  2028. package/devices/soma.d.ts.map +0 -1
  2029. package/devices/soma.js +0 -47
  2030. package/devices/somfy.d.ts +0 -3
  2031. package/devices/somfy.d.ts.map +0 -1
  2032. package/devices/somfy.js +0 -101
  2033. package/devices/somgoms.d.ts +0 -3
  2034. package/devices/somgoms.d.ts.map +0 -1
  2035. package/devices/somgoms.js +0 -84
  2036. package/devices/sonoff.d.ts +0 -3
  2037. package/devices/sonoff.d.ts.map +0 -1
  2038. package/devices/sonoff.js +0 -1583
  2039. package/devices/sonoff.js.map +0 -1
  2040. package/devices/sowilo.d.ts +0 -3
  2041. package/devices/sowilo.d.ts.map +0 -1
  2042. package/devices/sowilo.js +0 -47
  2043. package/devices/spotmau.d.ts +0 -3
  2044. package/devices/spotmau.d.ts.map +0 -1
  2045. package/devices/spotmau.js +0 -74
  2046. package/devices/stelpro.d.ts +0 -3
  2047. package/devices/stelpro.d.ts.map +0 -1
  2048. package/devices/stelpro.js +0 -365
  2049. package/devices/stelpro.js.map +0 -1
  2050. package/devices/sunricher.d.ts +0 -3
  2051. package/devices/sunricher.d.ts.map +0 -1
  2052. package/devices/sunricher.js +0 -2169
  2053. package/devices/sunricher.js.map +0 -1
  2054. package/devices/swann.d.ts +0 -3
  2055. package/devices/swann.d.ts.map +0 -1
  2056. package/devices/swann.js +0 -72
  2057. package/devices/sylvania.d.ts +0 -3
  2058. package/devices/sylvania.d.ts.map +0 -1
  2059. package/devices/sylvania.js +0 -226
  2060. package/devices/tapestry.d.ts +0 -3
  2061. package/devices/tapestry.d.ts.map +0 -1
  2062. package/devices/tapestry.js +0 -55
  2063. package/devices/tci.d.ts +0 -3
  2064. package/devices/tci.d.ts.map +0 -1
  2065. package/devices/tci.js +0 -61
  2066. package/devices/tech.d.ts +0 -3
  2067. package/devices/tech.d.ts.map +0 -1
  2068. package/devices/tech.js +0 -217
  2069. package/devices/tech.js.map +0 -1
  2070. package/devices/technicolor.d.ts +0 -3
  2071. package/devices/technicolor.d.ts.map +0 -1
  2072. package/devices/technicolor.js +0 -101
  2073. package/devices/terncy.d.ts +0 -3
  2074. package/devices/terncy.d.ts.map +0 -1
  2075. package/devices/terncy.js +0 -116
  2076. package/devices/the_light_group.d.ts +0 -3
  2077. package/devices/the_light_group.d.ts.map +0 -1
  2078. package/devices/the_light_group.js +0 -129
  2079. package/devices/third_reality.d.ts +0 -3
  2080. package/devices/third_reality.d.ts.map +0 -1
  2081. package/devices/third_reality.js +0 -609
  2082. package/devices/third_reality.js.map +0 -1
  2083. package/devices/titan_products.d.ts +0 -3
  2084. package/devices/titan_products.d.ts.map +0 -1
  2085. package/devices/titan_products.js +0 -61
  2086. package/devices/tlwglobal.d.ts +0 -3
  2087. package/devices/tlwglobal.d.ts.map +0 -1
  2088. package/devices/tlwglobal.js +0 -64
  2089. package/devices/tplink.d.ts +0 -3
  2090. package/devices/tplink.d.ts.map +0 -1
  2091. package/devices/tplink.js +0 -80
  2092. package/devices/trust.d.ts +0 -3
  2093. package/devices/trust.d.ts.map +0 -1
  2094. package/devices/trust.js +0 -182
  2095. package/devices/tubeszb.d.ts +0 -3
  2096. package/devices/tubeszb.d.ts.map +0 -1
  2097. package/devices/tubeszb.js +0 -59
  2098. package/devices/tuya.d.ts +0 -3
  2099. package/devices/tuya.d.ts.map +0 -1
  2100. package/devices/tuya.js +0 -14328
  2101. package/devices/tuya.js.map +0 -1
  2102. package/devices/ubisys.d.ts +0 -3
  2103. package/devices/ubisys.d.ts.map +0 -1
  2104. package/devices/ubisys.js +0 -1313
  2105. package/devices/ubisys.js.map +0 -1
  2106. package/devices/uhome.d.ts +0 -3
  2107. package/devices/uhome.d.ts.map +0 -1
  2108. package/devices/uhome.js +0 -63
  2109. package/devices/universal_electronics_inc.d.ts +0 -3
  2110. package/devices/universal_electronics_inc.d.ts.map +0 -1
  2111. package/devices/universal_electronics_inc.js +0 -185
  2112. package/devices/vbled.d.ts +0 -3
  2113. package/devices/vbled.d.ts.map +0 -1
  2114. package/devices/vbled.js +0 -47
  2115. package/devices/vesternet.d.ts +0 -3
  2116. package/devices/vesternet.d.ts.map +0 -1
  2117. package/devices/vesternet.js +0 -329
  2118. package/devices/vesternet.js.map +0 -1
  2119. package/devices/viessmann.d.ts +0 -3
  2120. package/devices/viessmann.d.ts.map +0 -1
  2121. package/devices/viessmann.js +0 -123
  2122. package/devices/villeroy_boch.d.ts +0 -3
  2123. package/devices/villeroy_boch.d.ts.map +0 -1
  2124. package/devices/villeroy_boch.js +0 -54
  2125. package/devices/vimar.d.ts +0 -3
  2126. package/devices/vimar.d.ts.map +0 -1
  2127. package/devices/vimar.js +0 -136
  2128. package/devices/visonic.d.ts +0 -3
  2129. package/devices/visonic.d.ts.map +0 -1
  2130. package/devices/visonic.js +0 -137
  2131. package/devices/vrey.d.ts +0 -3
  2132. package/devices/vrey.d.ts.map +0 -1
  2133. package/devices/vrey.js +0 -48
  2134. package/devices/wally.d.ts +0 -3
  2135. package/devices/wally.d.ts.map +0 -1
  2136. package/devices/wally.js +0 -63
  2137. package/devices/waxman.d.ts +0 -3
  2138. package/devices/waxman.d.ts.map +0 -1
  2139. package/devices/waxman.js +0 -84
  2140. package/devices/weiser.d.ts +0 -3
  2141. package/devices/weiser.d.ts.map +0 -1
  2142. package/devices/weiser.js +0 -102
  2143. package/devices/weiser.js.map +0 -1
  2144. package/devices/weten.d.ts +0 -3
  2145. package/devices/weten.d.ts.map +0 -1
  2146. package/devices/weten.js +0 -88
  2147. package/devices/wirenboard.d.ts +0 -3
  2148. package/devices/wirenboard.d.ts.map +0 -1
  2149. package/devices/wirenboard.js +0 -666
  2150. package/devices/wirenboard.js.map +0 -1
  2151. package/devices/wisdom.d.ts +0 -3
  2152. package/devices/wisdom.d.ts.map +0 -1
  2153. package/devices/wisdom.js +0 -47
  2154. package/devices/woolley.d.ts +0 -3
  2155. package/devices/woolley.d.ts.map +0 -1
  2156. package/devices/woolley.js +0 -87
  2157. package/devices/woox.d.ts +0 -3
  2158. package/devices/woox.d.ts.map +0 -1
  2159. package/devices/woox.js +0 -132
  2160. package/devices/wyze.d.ts +0 -3
  2161. package/devices/wyze.d.ts.map +0 -1
  2162. package/devices/wyze.js +0 -62
  2163. package/devices/xal.d.ts +0 -3
  2164. package/devices/xal.d.ts.map +0 -1
  2165. package/devices/xal.js +0 -61
  2166. package/devices/xinghuoyuan.d.ts +0 -3
  2167. package/devices/xinghuoyuan.d.ts.map +0 -1
  2168. package/devices/xinghuoyuan.js +0 -47
  2169. package/devices/xyzroe.d.ts +0 -3
  2170. package/devices/xyzroe.d.ts.map +0 -1
  2171. package/devices/xyzroe.js +0 -518
  2172. package/devices/xyzroe.js.map +0 -1
  2173. package/devices/yale.d.ts +0 -3
  2174. package/devices/yale.d.ts.map +0 -1
  2175. package/devices/yale.js +0 -502
  2176. package/devices/yale.js.map +0 -1
  2177. package/devices/yandex.d.ts +0 -3
  2178. package/devices/yandex.d.ts.map +0 -1
  2179. package/devices/yandex.js +0 -442
  2180. package/devices/yandex.js.map +0 -1
  2181. package/devices/ynoa.d.ts +0 -3
  2182. package/devices/ynoa.d.ts.map +0 -1
  2183. package/devices/ynoa.js +0 -112
  2184. package/devices/yokis.d.ts +0 -3
  2185. package/devices/yokis.d.ts.map +0 -1
  2186. package/devices/yokis.js +0 -2532
  2187. package/devices/yokis.js.map +0 -1
  2188. package/devices/yookee.d.ts +0 -3
  2189. package/devices/yookee.d.ts.map +0 -1
  2190. package/devices/yookee.js +0 -62
  2191. package/devices/ysrsai.d.ts +0 -3
  2192. package/devices/ysrsai.d.ts.map +0 -1
  2193. package/devices/ysrsai.js +0 -65
  2194. package/devices/zemismart.d.ts +0 -3
  2195. package/devices/zemismart.d.ts.map +0 -1
  2196. package/devices/zemismart.js +0 -391
  2197. package/devices/zen.d.ts +0 -3
  2198. package/devices/zen.d.ts.map +0 -1
  2199. package/devices/zen.js +0 -95
  2200. package/devices/zigbeetlc.js +0 -235
  2201. package/devices/zipato.d.ts +0 -3
  2202. package/devices/zipato.d.ts.map +0 -1
  2203. package/devices/zipato.js +0 -47
  2204. package/index.d.ts +0 -20
  2205. package/index.d.ts.map +0 -1
  2206. package/index.js +0 -526
  2207. package/index.js.map +0 -1
  2208. package/lib/color.d.ts +0 -271
  2209. package/lib/color.d.ts.map +0 -1
  2210. package/lib/color.js +0 -761
  2211. package/lib/color.js.map +0 -1
  2212. package/lib/configureKey.d.ts +0 -3
  2213. package/lib/configureKey.d.ts.map +0 -1
  2214. package/lib/configureKey.js +0 -938
  2215. package/lib/configureKey.js.map +0 -1
  2216. package/lib/constants.d.ts +0 -68
  2217. package/lib/constants.d.ts.map +0 -1
  2218. package/lib/constants.js +0 -264
  2219. package/lib/constants.js.map +0 -1
  2220. package/lib/develco.d.ts +0 -15
  2221. package/lib/develco.d.ts.map +0 -1
  2222. package/lib/develco.js +0 -183
  2223. package/lib/develco.js.map +0 -1
  2224. package/lib/ewelink.d.ts +0 -30
  2225. package/lib/ewelink.d.ts.map +0 -1
  2226. package/lib/ewelink.js +0 -718
  2227. package/lib/ewelink.js.map +0 -1
  2228. package/lib/exposes.d.ts +0 -360
  2229. package/lib/exposes.d.ts.map +0 -1
  2230. package/lib/exposes.js +0 -1085
  2231. package/lib/exposes.js.map +0 -1
  2232. package/lib/generateDefinition.d.ts +0 -6
  2233. package/lib/generateDefinition.d.ts.map +0 -1
  2234. package/lib/generateDefinition.js +0 -345
  2235. package/lib/generateDefinition.js.map +0 -1
  2236. package/lib/ikea.d.ts +0 -39
  2237. package/lib/ikea.d.ts.map +0 -1
  2238. package/lib/ikea.js +0 -787
  2239. package/lib/ikea.js.map +0 -1
  2240. package/lib/kelvinToXy.js +0 -1913
  2241. package/lib/kelvinToXy.js.map +0 -1
  2242. package/lib/ledvance.d.ts +0 -20
  2243. package/lib/ledvance.d.ts.map +0 -1
  2244. package/lib/ledvance.js +0 -103
  2245. package/lib/ledvance.js.map +0 -1
  2246. package/lib/legacy.d.ts +0 -5054
  2247. package/lib/legacy.d.ts.map +0 -1
  2248. package/lib/legacy.js +0 -6540
  2249. package/lib/legacy.js.map +0 -1
  2250. package/lib/legrand.d.ts +0 -69
  2251. package/lib/legrand.d.ts.map +0 -1
  2252. package/lib/legrand.js +0 -282
  2253. package/lib/legrand.js.map +0 -1
  2254. package/lib/light.d.ts +0 -8
  2255. package/lib/light.d.ts.map +0 -1
  2256. package/lib/light.js +0 -142
  2257. package/lib/light.js.map +0 -1
  2258. package/lib/logger.d.ts +0 -4
  2259. package/lib/logger.d.ts.map +0 -1
  2260. package/lib/logger.js +0 -14
  2261. package/lib/lumi.d.ts +0 -962
  2262. package/lib/lumi.d.ts.map +0 -1
  2263. package/lib/lumi.js +0 -5027
  2264. package/lib/lumi.js.map +0 -1
  2265. package/lib/modernExtend.d.ts +0 -325
  2266. package/lib/modernExtend.d.ts.map +0 -1
  2267. package/lib/modernExtend.js +0 -2015
  2268. package/lib/modernExtend.js.map +0 -1
  2269. package/lib/namron.d.ts +0 -56
  2270. package/lib/namron.d.ts.map +0 -1
  2271. package/lib/namron.js +0 -434
  2272. package/lib/namron.js.map +0 -1
  2273. package/lib/nodon.d.ts +0 -3
  2274. package/lib/nodon.d.ts.map +0 -1
  2275. package/lib/nodon.js +0 -130
  2276. package/lib/nodon.js.map +0 -1
  2277. package/lib/ota.d.ts +0 -71
  2278. package/lib/ota.d.ts.map +0 -1
  2279. package/lib/ota.js +0 -663
  2280. package/lib/ota.js.map +0 -1
  2281. package/lib/philips.d.ts +0 -249
  2282. package/lib/philips.d.ts.map +0 -1
  2283. package/lib/philips.js +0 -656
  2284. package/lib/philips.js.map +0 -1
  2285. package/lib/reporting.d.ts +0 -58
  2286. package/lib/reporting.d.ts.map +0 -1
  2287. package/lib/reporting.js +0 -285
  2288. package/lib/store.d.ts +0 -7
  2289. package/lib/store.d.ts.map +0 -1
  2290. package/lib/store.js +0 -51
  2291. package/lib/store.js.map +0 -1
  2292. package/lib/sunricher.d.ts +0 -13
  2293. package/lib/sunricher.d.ts.map +0 -1
  2294. package/lib/sunricher.js +0 -14
  2295. package/lib/tuya.d.ts +0 -786
  2296. package/lib/tuya.d.ts.map +0 -1
  2297. package/lib/tuya.js +0 -2415
  2298. package/lib/tuya.js.map +0 -1
  2299. package/lib/types.d.ts +0 -439
  2300. package/lib/types.d.ts.map +0 -1
  2301. package/lib/ubisys.d.ts +0 -19
  2302. package/lib/ubisys.d.ts.map +0 -1
  2303. package/lib/ubisys.js +0 -293
  2304. package/lib/ubisys.js.map +0 -1
  2305. package/lib/utils.d.ts +0 -93
  2306. package/lib/utils.d.ts.map +0 -1
  2307. package/lib/utils.js +0 -754
  2308. package/lib/utils.js.map +0 -1
  2309. package/lib/zosung.d.ts +0 -52
  2310. package/lib/zosung.d.ts.map +0 -1
  2311. package/lib/zosung.js +0 -253
  2312. package/lib/zosung.js.map +0 -1
  2313. package/models-index.json +0 -1
  2314. /package/{devices → dist/devices}/ITCommander.js.map +0 -0
  2315. /package/{devices → dist/devices}/acova.js.map +0 -0
  2316. /package/{devices → dist/devices}/acuity_brands_lighting.js.map +0 -0
  2317. /package/{devices → dist/devices}/adurosmart.js.map +0 -0
  2318. /package/{devices → dist/devices}/aeotec.js.map +0 -0
  2319. /package/{devices → dist/devices}/airam.js.map +0 -0
  2320. /package/{devices → dist/devices}/airzone_aidoo.js.map +0 -0
  2321. /package/{devices → dist/devices}/ajax_online.js.map +0 -0
  2322. /package/{devices → dist/devices}/akuvox.js.map +0 -0
  2323. /package/{devices → dist/devices}/alchemy.js.map +0 -0
  2324. /package/{devices → dist/devices}/aldi.js.map +0 -0
  2325. /package/{devices → dist/devices}/alecto.js.map +0 -0
  2326. /package/{devices → dist/devices}/anchor.js.map +0 -0
  2327. /package/{devices → dist/devices}/atsmart.js.map +0 -0
  2328. /package/{devices → dist/devices}/aubess.js.map +0 -0
  2329. /package/{devices → dist/devices}/aurora_lighting.js.map +0 -0
  2330. /package/{devices → dist/devices}/automaton.js.map +0 -0
  2331. /package/{devices → dist/devices}/awox.js.map +0 -0
  2332. /package/{devices → dist/devices}/axis.js.map +0 -0
  2333. /package/{devices → dist/devices}/bankamp.js.map +0 -0
  2334. /package/{devices → dist/devices}/bega.js.map +0 -0
  2335. /package/{devices → dist/devices}/belkin.js.map +0 -0
  2336. /package/{devices → dist/devices}/bituo_technik.js.map +0 -0
  2337. /package/{devices → dist/devices}/blaupunkt.js.map +0 -0
  2338. /package/{devices → dist/devices}/blitzwolf.js.map +0 -0
  2339. /package/{devices → dist/devices}/bouffalo_lab.js.map +0 -0
  2340. /package/{devices → dist/devices}/brimate.js.map +0 -0
  2341. /package/{devices → dist/devices}/bseed.js.map +0 -0
  2342. /package/{devices → dist/devices}/bticino.js.map +0 -0
  2343. /package/{devices → dist/devices}/byun.js.map +0 -0
  2344. /package/{devices → dist/devices}/calex.js.map +0 -0
  2345. /package/{devices → dist/devices}/candeo.js.map +0 -0
  2346. /package/{devices → dist/devices}/casaia.js.map +0 -0
  2347. /package/{devices → dist/devices}/cel.js.map +0 -0
  2348. /package/{devices → dist/devices}/chacon.js.map +0 -0
  2349. /package/{devices → dist/devices}/cleode.js.map +0 -0
  2350. /package/{devices → dist/devices}/cleverio.js.map +0 -0
  2351. /package/{devices → dist/devices}/climax.js.map +0 -0
  2352. /package/{devices → dist/devices}/commercial_electric.js.map +0 -0
  2353. /package/{devices → dist/devices}/cree.js.map +0 -0
  2354. /package/{devices → dist/devices}/current_products_corp.js.map +0 -0
  2355. /package/{devices → dist/devices}/cy_lighting.js.map +0 -0
  2356. /package/{devices → dist/devices}/danalock.js.map +0 -0
  2357. /package/{devices → dist/devices}/databyte.js.map +0 -0
  2358. /package/{devices → dist/devices}/dawon_dns.js.map +0 -0
  2359. /package/{devices → dist/devices}/digi.js.map +0 -0
  2360. /package/{devices → dist/devices}/direct_signs.js.map +0 -0
  2361. /package/{devices → dist/devices}/diyruz.js.map +0 -0
  2362. /package/{devices → dist/devices}/dlink.js.map +0 -0
  2363. /package/{devices → dist/devices}/dnake.js.map +0 -0
  2364. /package/{devices → dist/devices}/dowsing_reynolds.js.map +0 -0
  2365. /package/{devices → dist/devices}/dresden_elektronik.js.map +0 -0
  2366. /package/{devices → dist/devices}/easyaccess.js.map +0 -0
  2367. /package/{devices → dist/devices}/eatonhalo_led.js.map +0 -0
  2368. /package/{devices → dist/devices}/echostar.js.map +0 -0
  2369. /package/{devices → dist/devices}/ecodim.js.map +0 -0
  2370. /package/{devices → dist/devices}/ecolink.js.map +0 -0
  2371. /package/{devices → dist/devices}/ecosmart.js.map +0 -0
  2372. /package/{devices → dist/devices}/ecozy.js.map +0 -0
  2373. /package/{devices → dist/devices}/edp.js.map +0 -0
  2374. /package/{devices → dist/devices}/efekta.js.map +0 -0
  2375. /package/{devices → dist/devices}/eglo.js.map +0 -0
  2376. /package/{devices → dist/devices}/elko.js.map +0 -0
  2377. /package/{devices → dist/devices}/enbrighten.js.map +0 -0
  2378. /package/{devices → dist/devices}/enocean.js.map +0 -0
  2379. /package/{devices → dist/devices}/envilar.js.map +0 -0
  2380. /package/{devices → dist/devices}/essentialb.js.map +0 -0
  2381. /package/{devices → dist/devices}/essentials.js.map +0 -0
  2382. /package/{devices → dist/devices}/eucontrols.js.map +0 -0
  2383. /package/{devices → dist/devices}/eurotronic.js.map +0 -0
  2384. /package/{devices → dist/devices}/evanell.js.map +0 -0
  2385. /package/{devices → dist/devices}/evn.js.map +0 -0
  2386. /package/{devices → dist/devices}/evology.js.map +0 -0
  2387. /package/{devices → dist/devices}/evvr.js.map +0 -0
  2388. /package/{devices → dist/devices}/ezex.js.map +0 -0
  2389. /package/{devices → dist/devices}/fireangel.js.map +0 -0
  2390. /package/{devices → dist/devices}/frankever.js.map +0 -0
  2391. /package/{devices → dist/devices}/frient.js.map +0 -0
  2392. /package/{devices → dist/devices}/futurehome.js.map +0 -0
  2393. /package/{devices → dist/devices}/ge.js.map +0 -0
  2394. /package/{devices → dist/devices}/gewiss.js.map +0 -0
  2395. /package/{devices → dist/devices}/gidealed.js.map +0 -0
  2396. /package/{devices → dist/devices}/giderwel.js.map +0 -0
  2397. /package/{devices → dist/devices}/giex.js.map +0 -0
  2398. /package/{devices → dist/devices}/girier.js.map +0 -0
  2399. /package/{devices → dist/devices}/gmy.js.map +0 -0
  2400. /package/{devices → dist/devices}/gs.js.map +0 -0
  2401. /package/{devices → dist/devices}/gumax.js.map +0 -0
  2402. /package/{devices → dist/devices}/halemeier.js.map +0 -0
  2403. /package/{devices → dist/devices}/hampton_bay.js.map +0 -0
  2404. /package/{devices → dist/devices}/heatit.js.map +0 -0
  2405. /package/{devices → dist/devices}/heiman.js.map +0 -0
  2406. /package/{devices → dist/devices}/heimgard_technologies.js.map +0 -0
  2407. /package/{devices → dist/devices}/hej.js.map +0 -0
  2408. /package/{devices → dist/devices}/hfh.js.map +0 -0
  2409. /package/{devices → dist/devices}/hilux.js.map +0 -0
  2410. /package/{devices → dist/devices}/hive.js.map +0 -0
  2411. /package/{devices → dist/devices}/hommyn.js.map +0 -0
  2412. /package/{devices → dist/devices}/honyar.js.map +0 -0
  2413. /package/{devices → dist/devices}/hornbach.js.map +0 -0
  2414. /package/{devices → dist/devices}/hzc_electric.js.map +0 -0
  2415. /package/{devices → dist/devices}/icasa.js.map +0 -0
  2416. /package/{devices → dist/devices}/idinio.js.map +0 -0
  2417. /package/{devices → dist/devices}/ihorn.js.map +0 -0
  2418. /package/{devices → dist/devices}/ikea.js.map +0 -0
  2419. /package/{devices → dist/devices}/ilightsin.js.map +0 -0
  2420. /package/{devices → dist/devices}/iluminize.js.map +0 -0
  2421. /package/{devices → dist/devices}/ilux.js.map +0 -0
  2422. /package/{devices → dist/devices}/imhotepcreation.js.map +0 -0
  2423. /package/{devices → dist/devices}/immax.js.map +0 -0
  2424. /package/{devices → dist/devices}/imou.js.map +0 -0
  2425. /package/{devices → dist/devices}/index.d.ts +0 -0
  2426. /package/{devices → dist/devices}/index.d.ts.map +0 -0
  2427. /package/{devices → dist/devices}/innr.js.map +0 -0
  2428. /package/{devices → dist/devices}/insta.js.map +0 -0
  2429. /package/{devices → dist/devices}/iolloi.js.map +0 -0
  2430. /package/{devices → dist/devices}/iotperfect.js.map +0 -0
  2431. /package/{devices → dist/devices}/iris.js.map +0 -0
  2432. /package/{devices → dist/devices}/istar.js.map +0 -0
  2433. /package/{devices → dist/devices}/jasco.js.map +0 -0
  2434. /package/{devices → dist/devices}/javis.js.map +0 -0
  2435. /package/{devices → dist/devices}/jiawen.js.map +0 -0
  2436. /package/{devices → dist/devices}/jumitech.js.map +0 -0
  2437. /package/{devices → dist/devices}/jxuan.js.map +0 -0
  2438. /package/{devices → dist/devices}/kami.js.map +0 -0
  2439. /package/{devices → dist/devices}/keen_home.js.map +0 -0
  2440. /package/{devices → dist/devices}/klikaanklikuit.js.map +0 -0
  2441. /package/{devices → dist/devices}/konke.js.map +0 -0
  2442. /package/{devices → dist/devices}/ksentry.js.map +0 -0
  2443. /package/{devices → dist/devices}/kurvia.js.map +0 -0
  2444. /package/{devices → dist/devices}/kwikset.js.map +0 -0
  2445. /package/{devices → dist/devices}/lanesto.js.map +0 -0
  2446. /package/{devices → dist/devices}/lds.js.map +0 -0
  2447. /package/{devices → dist/devices}/ledvance.js.map +0 -0
  2448. /package/{devices → dist/devices}/leedarson.js.map +0 -0
  2449. /package/{devices → dist/devices}/legrand.js.map +0 -0
  2450. /package/{devices → dist/devices}/lellki.js.map +0 -0
  2451. /package/{devices → dist/devices}/letsled.js.map +0 -0
  2452. /package/{devices → dist/devices}/letv.js.map +0 -0
  2453. /package/{devices → dist/devices}/lg.js.map +0 -0
  2454. /package/{devices → dist/devices}/lightsolutions.js.map +0 -0
  2455. /package/{devices → dist/devices}/linkind.js.map +0 -0
  2456. /package/{devices → dist/devices}/livingwise.js.map +0 -0
  2457. /package/{devices → dist/devices}/lonsonho.js.map +0 -0
  2458. /package/{devices → dist/devices}/ls.js.map +0 -0
  2459. /package/{devices → dist/devices}/lubeez.js.map +0 -0
  2460. /package/{devices → dist/devices}/lupus.js.map +0 -0
  2461. /package/{devices → dist/devices}/lutron.js.map +0 -0
  2462. /package/{devices → dist/devices}/lux.js.map +0 -0
  2463. /package/{devices → dist/devices}/m_elec.js.map +0 -0
  2464. /package/{devices → dist/devices}/makegood.js.map +0 -0
  2465. /package/{devices → dist/devices}/matcall_bv.js.map +0 -0
  2466. /package/{devices → dist/devices}/mercator.js.map +0 -0
  2467. /package/{devices → dist/devices}/miboxer.js.map +0 -0
  2468. /package/{devices → dist/devices}/micromatic.js.map +0 -0
  2469. /package/{devices → dist/devices}/modular.js.map +0 -0
  2470. /package/{devices → dist/devices}/moes.js.map +0 -0
  2471. /package/{devices → dist/devices}/muller_licht.js.map +0 -0
  2472. /package/{devices → dist/devices}/nanoleaf.js.map +0 -0
  2473. /package/{devices → dist/devices}/nedis.js.map +0 -0
  2474. /package/{devices → dist/devices}/net2grid.js.map +0 -0
  2475. /package/{devices → dist/devices}/netvox.js.map +0 -0
  2476. /package/{devices → dist/devices}/nexelec.js.map +0 -0
  2477. /package/{devices → dist/devices}/ninja_blocks.js.map +0 -0
  2478. /package/{devices → dist/devices}/niviss.js.map +0 -0
  2479. /package/{devices → dist/devices}/nodon.js.map +0 -0
  2480. /package/{devices → dist/devices}/nordtronic.js.map +0 -0
  2481. /package/{devices → dist/devices}/nous.js.map +0 -0
  2482. /package/{devices → dist/devices}/novo.js.map +0 -0
  2483. /package/{devices → dist/devices}/nyce.js.map +0 -0
  2484. /package/{devices → dist/devices}/onenuo.js.map +0 -0
  2485. /package/{devices → dist/devices}/openlumi.js.map +0 -0
  2486. /package/{devices → dist/devices}/osram.js.map +0 -0
  2487. /package/{devices → dist/devices}/oujiabao.js.map +0 -0
  2488. /package/{devices → dist/devices}/ozsmartthings.js.map +0 -0
  2489. /package/{devices → dist/devices}/paul_neuhaus.js.map +0 -0
  2490. /package/{devices → dist/devices}/paulmann.js.map +0 -0
  2491. /package/{devices → dist/devices}/peq.js.map +0 -0
  2492. /package/{devices → dist/devices}/philio.js.map +0 -0
  2493. /package/{devices → dist/devices}/plaid.js.map +0 -0
  2494. /package/{devices → dist/devices}/prolight.js.map +0 -0
  2495. /package/{devices → dist/devices}/purmo.js.map +0 -0
  2496. /package/{devices → dist/devices}/qa.js.map +0 -0
  2497. /package/{devices → dist/devices}/qmotion.js.map +0 -0
  2498. /package/{devices → dist/devices}/qoto.js.map +0 -0
  2499. /package/{devices → dist/devices}/quotra.js.map +0 -0
  2500. /package/{devices → dist/devices}/rademacher.js.map +0 -0
  2501. /package/{devices → dist/devices}/radium.js.map +0 -0
  2502. /package/{devices → dist/devices}/raex.js.map +0 -0
  2503. /package/{devices → dist/devices}/rgb_genie.js.map +0 -0
  2504. /package/{devices → dist/devices}/robb.js.map +0 -0
  2505. /package/{devices → dist/devices}/roome.js.map +0 -0
  2506. /package/{devices → dist/devices}/rtx.js.map +0 -0
  2507. /package/{devices → dist/devices}/salus_controls.js.map +0 -0
  2508. /package/{devices → dist/devices}/samotech.js.map +0 -0
  2509. /package/{devices → dist/devices}/saswell.js.map +0 -0
  2510. /package/{devices → dist/devices}/sber.js.map +0 -0
  2511. /package/{devices → dist/devices}/scanproducts.js.map +0 -0
  2512. /package/{devices → dist/devices}/schlage.js.map +0 -0
  2513. /package/{devices → dist/devices}/schwaiger.js.map +0 -0
  2514. /package/{devices → dist/devices}/seastar_intelligence.js.map +0 -0
  2515. /package/{devices → dist/devices}/securifi.js.map +0 -0
  2516. /package/{devices → dist/devices}/sercomm.js.map +0 -0
  2517. /package/{devices → dist/devices}/shade_control.js.map +0 -0
  2518. /package/{devices → dist/devices}/shenzhen_homa.js.map +0 -0
  2519. /package/{devices → dist/devices}/shyugj.js.map +0 -0
  2520. /package/{devices → dist/devices}/sikom.js.map +0 -0
  2521. /package/{devices → dist/devices}/simon.js.map +0 -0
  2522. /package/{devices → dist/devices}/siterwell.js.map +0 -0
  2523. /package/{devices → dist/devices}/skydance.js.map +0 -0
  2524. /package/{devices → dist/devices}/slv.js.map +0 -0
  2525. /package/{devices → dist/devices}/smart9.js.map +0 -0
  2526. /package/{devices → dist/devices}/smart_home_pty.js.map +0 -0
  2527. /package/{devices → dist/devices}/smartenit.js.map +0 -0
  2528. /package/{devices → dist/devices}/smartwings.js.map +0 -0
  2529. /package/{devices → dist/devices}/smlight.js.map +0 -0
  2530. /package/{devices → dist/devices}/sohan_electric.js.map +0 -0
  2531. /package/{devices → dist/devices}/solaredge.js.map +0 -0
  2532. /package/{devices → dist/devices}/soma.js.map +0 -0
  2533. /package/{devices → dist/devices}/somfy.js.map +0 -0
  2534. /package/{devices → dist/devices}/somgoms.js.map +0 -0
  2535. /package/{devices → dist/devices}/sowilo.js.map +0 -0
  2536. /package/{devices → dist/devices}/spotmau.js.map +0 -0
  2537. /package/{devices → dist/devices}/swann.js.map +0 -0
  2538. /package/{devices → dist/devices}/sylvania.js.map +0 -0
  2539. /package/{devices → dist/devices}/tapestry.js.map +0 -0
  2540. /package/{devices → dist/devices}/tci.js.map +0 -0
  2541. /package/{devices → dist/devices}/technicolor.js.map +0 -0
  2542. /package/{devices → dist/devices}/terncy.js.map +0 -0
  2543. /package/{devices → dist/devices}/the_light_group.js.map +0 -0
  2544. /package/{devices → dist/devices}/titan_products.js.map +0 -0
  2545. /package/{devices → dist/devices}/tlwglobal.js.map +0 -0
  2546. /package/{devices → dist/devices}/tplink.js.map +0 -0
  2547. /package/{devices → dist/devices}/trust.js.map +0 -0
  2548. /package/{devices → dist/devices}/tubeszb.js.map +0 -0
  2549. /package/{devices → dist/devices}/uhome.js.map +0 -0
  2550. /package/{devices → dist/devices}/universal_electronics_inc.js.map +0 -0
  2551. /package/{devices → dist/devices}/vbled.js.map +0 -0
  2552. /package/{devices → dist/devices}/viessmann.js.map +0 -0
  2553. /package/{devices → dist/devices}/villeroy_boch.js.map +0 -0
  2554. /package/{devices → dist/devices}/vimar.js.map +0 -0
  2555. /package/{devices → dist/devices}/visonic.js.map +0 -0
  2556. /package/{devices → dist/devices}/vrey.js.map +0 -0
  2557. /package/{devices → dist/devices}/wally.js.map +0 -0
  2558. /package/{devices → dist/devices}/waxman.js.map +0 -0
  2559. /package/{devices → dist/devices}/weten.js.map +0 -0
  2560. /package/{devices → dist/devices}/wisdom.js.map +0 -0
  2561. /package/{devices → dist/devices}/woolley.js.map +0 -0
  2562. /package/{devices → dist/devices}/woox.js.map +0 -0
  2563. /package/{devices → dist/devices}/wyze.js.map +0 -0
  2564. /package/{devices → dist/devices}/xal.js.map +0 -0
  2565. /package/{devices → dist/devices}/xinghuoyuan.js.map +0 -0
  2566. /package/{devices → dist/devices}/ynoa.js.map +0 -0
  2567. /package/{devices → dist/devices}/yookee.js.map +0 -0
  2568. /package/{devices → dist/devices}/ysrsai.js.map +0 -0
  2569. /package/{devices → dist/devices}/zemismart.js.map +0 -0
  2570. /package/{devices → dist/devices}/zen.js.map +0 -0
  2571. /package/{devices → dist/devices}/zigbeetlc.d.ts +0 -0
  2572. /package/{devices → dist/devices}/zigbeetlc.d.ts.map +0 -0
  2573. /package/{devices → dist/devices}/zigbeetlc.js.map +0 -0
  2574. /package/{devices → dist/devices}/zipato.js.map +0 -0
  2575. /package/{lib → dist/lib}/kelvinToXy.d.ts +0 -0
  2576. /package/{lib → dist/lib}/kelvinToXy.d.ts.map +0 -0
  2577. /package/{lib → dist/lib}/logger.js.map +0 -0
  2578. /package/{lib → dist/lib}/reporting.js.map +0 -0
  2579. /package/{lib → dist/lib}/sunricher.js.map +0 -0
  2580. /package/{lib → dist/lib}/types.js +0 -0
  2581. /package/{lib → dist/lib}/types.js.map +0 -0
@@ -0,0 +1,4433 @@
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
+ exports.definitions = void 0;
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 logger_1 = require("../lib/logger");
44
+ const lumi = __importStar(require("../lib/lumi"));
45
+ const m = __importStar(require("../lib/modernExtend"));
46
+ const reporting = __importStar(require("../lib/reporting"));
47
+ const globalStore = __importStar(require("../lib/store"));
48
+ const e = exposes.presets;
49
+ const ea = exposes.access;
50
+ const { lumiAction, lumiOperationMode, lumiPowerOnBehavior, lumiZigbeeOTA, lumiSwitchType, lumiAirQuality, lumiVoc, lumiDisplayUnit, lumiLight, lumiOutageCountRestoreBindReporting, lumiElectricityMeter, lumiPower, lumiOverloadProtection, lumiLedIndicator, lumiButtonLock, lumiMotorSpeed, lumiCurtainSpeed, lumiCurtainManualOpenClose, lumiCurtainAdaptivePullingSpeed, lumiCurtainManualStop, lumiCurtainReverse, lumiCurtainStatus, lumiCurtainLastManualOperation, lumiCurtainPosition, lumiCurtainTraverseTime, lumiCurtainCalibrationStatus, lumiCurtainCalibrated, lumiCurtainIdentifyBeep, lumiOnOff, lumiLedDisabledNight, lumiFlipIndicatorLight, lumiPreventReset, lumiClickMode, lumiSlider, lumiSetEventMode, lumiSwitchMode, lumiVibration, lumiReportInterval, lumiSensitivityAdjustment, lumiKnobRotation, lumiCommandMode, lumiBattery, lumiLockRelay, lumiMultiClick, lumiPreventLeave, } = lumi.modernExtend;
51
+ const NS = "zhc:lumi";
52
+ const { manufacturerCode } = lumi;
53
+ exports.definitions = [
54
+ {
55
+ zigbeeModel: ["lumi.flood.acn001"],
56
+ model: "SJCGQ13LM",
57
+ vendor: "Aqara",
58
+ description: "Water leak sensor E1",
59
+ fromZigbee: [fromZigbee_1.default.ias_water_leak_alarm_1, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.battery],
60
+ toZigbee: [],
61
+ exposes: [e.water_leak(), e.battery(), e.battery_low(), e.battery_voltage(), e.device_temperature(), e.power_outage_count(false)],
62
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
63
+ configure: async (device, coordinatorEndpoint) => {
64
+ const endpoint = device.getEndpoint(1);
65
+ await endpoint.read("genPowerCfg", ["batteryVoltage"]);
66
+ },
67
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
68
+ },
69
+ {
70
+ zigbeeModel: ["lumi.airm.fhac01"],
71
+ model: "KQJCMB11LM",
72
+ vendor: "Aqara",
73
+ description: "Air monitoring panel S1",
74
+ fromZigbee: [fromZigbee_1.default.temperature, fromZigbee_1.default.humidity, lumi.fromZigbee.lumi_pm25, lumi.fromZigbee.lumi_co2],
75
+ toZigbee: [],
76
+ exposes: [e.temperature(), e.humidity(), e.pm25(), e.co2()],
77
+ extend: [lumiZigbeeOTA()],
78
+ },
79
+ {
80
+ zigbeeModel: ["lumi.magnet.acn001"],
81
+ model: "MCCGQ14LM",
82
+ vendor: "Aqara",
83
+ description: "Door and window sensor E1",
84
+ fromZigbee: [fromZigbee_1.default.ias_contact_alarm_1, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.battery],
85
+ toZigbee: [],
86
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
87
+ exposes: [e.contact(), e.battery(), e.battery_low(), e.battery_voltage()],
88
+ configure: async (device, coordinatorEndpoint) => {
89
+ const endpoint = device.getEndpoint(1);
90
+ await endpoint.read("genPowerCfg", ["batteryVoltage"]);
91
+ },
92
+ extend: [
93
+ m.quirkCheckinInterval("1_HOUR"),
94
+ // OTA request: "fieldControl":0, "manufacturerCode":4447, "imageType":10635, no available for now
95
+ // https://github.com/Koenkk/zigbee-OTA/pull/138
96
+ // lumiZigbeeOTA(),
97
+ ],
98
+ },
99
+ {
100
+ zigbeeModel: ["lumi.magnet.ac01"],
101
+ model: "MCCGQ13LM",
102
+ vendor: "Aqara",
103
+ description: "Door and window sensor P1",
104
+ fromZigbee: [lumi.fromZigbee.lumi_contact, fromZigbee_1.default.ias_contact_alarm_1, lumi.fromZigbee.lumi_specific],
105
+ toZigbee: [lumi.toZigbee.lumi_detection_distance],
106
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
107
+ exposes: [
108
+ e.contact(),
109
+ e.battery(),
110
+ e.battery_voltage(),
111
+ e.tamper(),
112
+ e
113
+ .enum("detection_distance", ea.ALL, ["10mm", "20mm", "30mm"])
114
+ .withDescription('The sensor will be considered "off" within the set distance. Please press the device button before setting'),
115
+ ],
116
+ extend: [m.quirkCheckinInterval("1_HOUR")],
117
+ },
118
+ {
119
+ zigbeeModel: ["lumi.dimmer.rcbac1"],
120
+ model: "ZNDDMK11LM",
121
+ vendor: "Aqara",
122
+ description: "Smart lightstrip driver",
123
+ fromZigbee: [lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_specific, ...m.light({ colorTemp: { range: undefined }, color: true }).fromZigbee],
124
+ toZigbee: [
125
+ lumi.toZigbee.lumi_dimmer_mode,
126
+ lumi.toZigbee.lumi_switch_power_outage_memory,
127
+ ...m.light({ colorTemp: { range: undefined }, color: true }).toZigbee,
128
+ ],
129
+ exposes: [
130
+ e.power(),
131
+ e.energy(),
132
+ e.voltage(),
133
+ e.device_temperature(),
134
+ e.power_outage_memory(),
135
+ // When in rgbw mode, only one of color and colortemp will be valid, and l2 will be invalid
136
+ // Do not control l2 in rgbw mode
137
+ e
138
+ .light_brightness_colortemp_colorxy([153, 370])
139
+ .removeFeature("color_temp_startup")
140
+ .withEndpoint("l1"),
141
+ e.light_brightness_colortemp([153, 370]).removeFeature("color_temp_startup").withEndpoint("l2"),
142
+ e.enum("dimmer_mode", ea.ALL, ["rgbw", "dual_ct"]).withDescription("Switch between rgbw mode or dual color temperature mode"),
143
+ ],
144
+ extend: [m.deviceEndpoints({ endpoints: { l1: 1, l2: 2 } }), lumiZigbeeOTA()],
145
+ },
146
+ {
147
+ zigbeeModel: ["lumi.light.aqcn02"],
148
+ model: "ZNLDP12LM",
149
+ vendor: "Aqara",
150
+ description: "Light bulb",
151
+ extend: [lumiLight({ colorTemp: true, powerOutageMemory: "light" }), lumiZigbeeOTA()],
152
+ },
153
+ {
154
+ zigbeeModel: ["lumi.light.acn003"],
155
+ model: "ZNXDD01LM",
156
+ vendor: "Aqara",
157
+ description: "Ceiling light L1-350",
158
+ extend: [lumiLight({ colorTemp: true, powerOutageMemory: "switch" }), lumiZigbeeOTA()],
159
+ },
160
+ {
161
+ zigbeeModel: ["lumi.light.cwac02", "lumi.light.acn014"],
162
+ model: "ZNLDP13LM",
163
+ vendor: "Aqara",
164
+ description: "Light bulb T1",
165
+ whiteLabel: [{ vendor: "Aqara", model: "LEDLBT1-L01" }],
166
+ extend: [
167
+ lumiZigbeeOTA(),
168
+ lumiLight({ colorTemp: true, powerOutageMemory: "switch" }),
169
+ m.forceDeviceType({ type: "Router" }),
170
+ m.forcePowerSource({ powerSource: "Mains (single phase)" }),
171
+ ],
172
+ },
173
+ {
174
+ zigbeeModel: ["lumi.light.cwopcn01"],
175
+ model: "XDD11LM",
176
+ vendor: "Aqara",
177
+ description: "Opple MX960",
178
+ meta: { turnsOffAtBrightness1: true },
179
+ extend: [lumiLight({ colorTemp: true, powerOutageMemory: "switch" }), lumiZigbeeOTA()],
180
+ },
181
+ {
182
+ zigbeeModel: ["lumi.light.cwopcn02"],
183
+ model: "XDD12LM",
184
+ vendor: "Aqara",
185
+ description: "Opple MX650",
186
+ meta: { turnsOffAtBrightness1: true },
187
+ extend: [lumiZigbeeOTA(), lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
188
+ },
189
+ {
190
+ zigbeeModel: ["lumi.light.cwopcn03"],
191
+ model: "XDD13LM",
192
+ vendor: "Aqara",
193
+ description: "Opple MX480",
194
+ meta: { turnsOffAtBrightness1: true },
195
+ extend: [lumiLight({ colorTemp: true, powerOutageMemory: "switch", colorTempRange: [175, 370] }), lumiZigbeeOTA()],
196
+ },
197
+ {
198
+ zigbeeModel: ["lumi.light.cwjwcn01"],
199
+ model: "JWSP001A",
200
+ vendor: "Aqara",
201
+ description: "Jiawen LED Driver & Dimmer",
202
+ extend: [lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
203
+ },
204
+ {
205
+ zigbeeModel: ["lumi.light.cwjwcn02"],
206
+ model: "JWDL001A",
207
+ vendor: "Aqara",
208
+ description: "Embedded spot led light",
209
+ extend: [lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
210
+ },
211
+ {
212
+ zigbeeModel: ["lumi.sensor_switch"],
213
+ model: "WXKG01LM",
214
+ vendor: "Xiaomi",
215
+ whiteLabel: [
216
+ { vendor: "Xiaomi", model: "YTC4040GL" },
217
+ { vendor: "Xiaomi", model: "YTC4006CN" },
218
+ { vendor: "Xiaomi", model: "YTC4017CN" },
219
+ { vendor: "Xiaomi", model: "ZHTZ02LM" },
220
+ ],
221
+ description: "Mi wireless switch",
222
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
223
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_action_WXKG01LM],
224
+ exposes: [
225
+ e.battery(),
226
+ e.action(["single", "double", "triple", "quadruple", "hold", "release", "many"]),
227
+ e.battery_voltage(),
228
+ e.power_outage_count(false),
229
+ ],
230
+ toZigbee: [],
231
+ extend: [m.quirkCheckinInterval("1_HOUR")],
232
+ },
233
+ {
234
+ zigbeeModel: ["lumi.sensor_switch.aq2", "lumi.remote.b1acn01"],
235
+ model: "WXKG11LM",
236
+ vendor: "Aqara",
237
+ description: "Wireless mini switch",
238
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
239
+ exposes: [
240
+ e.battery(),
241
+ e.battery_voltage(),
242
+ e.action(["single", "double", "triple", "quadruple", "hold", "release"]),
243
+ e.device_temperature(),
244
+ e.power_outage_count(),
245
+ ],
246
+ fromZigbee: [lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_basic],
247
+ toZigbee: [],
248
+ extend: [m.quirkCheckinInterval("1_HOUR")],
249
+ },
250
+ {
251
+ zigbeeModel: ["lumi.sensor_switch.aq3", "lumi.sensor_swit"],
252
+ model: "WXKG12LM",
253
+ vendor: "Aqara",
254
+ description: "Wireless mini switch (with gyroscope)",
255
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
256
+ exposes: [e.battery(), e.action(["single", "double", "hold", "release", "shake"]), e.battery_voltage()],
257
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_action_multistate],
258
+ toZigbee: [],
259
+ extend: [m.quirkCheckinInterval("1_HOUR")],
260
+ },
261
+ {
262
+ zigbeeModel: ["lumi.sensor_86sw1"],
263
+ model: "WXKG03LM_rev1",
264
+ vendor: "Aqara",
265
+ description: "Wireless remote switch (single rocker), 2016 model",
266
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
267
+ exposes: [e.battery(), e.action(["single"]), e.battery_voltage()],
268
+ fromZigbee: [lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_basic],
269
+ toZigbee: [],
270
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiPreventReset()],
271
+ },
272
+ {
273
+ zigbeeModel: ["lumi.remote.b186acn01"],
274
+ model: "WXKG03LM_rev2",
275
+ vendor: "Aqara",
276
+ description: "Wireless remote switch (single rocker), 2018 model",
277
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
278
+ exposes: [e.battery(), e.action(["single", "double", "hold"]), e.battery_voltage()],
279
+ fromZigbee: [lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_basic],
280
+ toZigbee: [],
281
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiPreventReset()],
282
+ },
283
+ {
284
+ zigbeeModel: ["lumi.remote.b186acn02"],
285
+ model: "WXKG06LM",
286
+ vendor: "Aqara",
287
+ description: "Wireless remote switch D1 (single rocker)",
288
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_action_multistate],
289
+ toZigbee: [],
290
+ exposes: [e.battery(), e.action(["single", "double", "hold"]), e.battery_voltage()],
291
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
292
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiPreventReset()],
293
+ configure: async (device, coordinatorEndpoint) => {
294
+ try {
295
+ const endpoint = device.endpoints[1];
296
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff", "genPowerCfg"]);
297
+ }
298
+ catch {
299
+ // fails for some but device works as expected: https://github.com/Koenkk/zigbee2mqtt/issues/9136
300
+ }
301
+ },
302
+ },
303
+ {
304
+ zigbeeModel: ["lumi.light.acn132"],
305
+ model: "LGYCDD01LM",
306
+ vendor: "Aqara",
307
+ whiteLabel: [{ vendor: "Aqara", model: "RLS-K01D" }],
308
+ description: "Light strip T1",
309
+ extend: [
310
+ m.light({ effect: false, powerOnBehavior: false, colorTemp: { startup: false, range: [153, 370] }, color: true }),
311
+ lumiPowerOnBehavior(),
312
+ m.numeric({
313
+ name: "length",
314
+ valueMin: 1,
315
+ valueMax: 10,
316
+ valueStep: 0.2,
317
+ scale: 5,
318
+ unit: "m",
319
+ cluster: "manuSpecificLumi",
320
+ attribute: { ID: 0x051b, type: 0x20 },
321
+ description: "LED strip length",
322
+ zigbeeCommandOptions: { manufacturerCode },
323
+ }),
324
+ m.numeric({
325
+ name: "min_brightness",
326
+ valueMin: 0,
327
+ valueMax: 99,
328
+ unit: "%",
329
+ cluster: "manuSpecificLumi",
330
+ attribute: { ID: 0x0515, type: 0x20 },
331
+ description: "Minimum brightness level",
332
+ zigbeeCommandOptions: { manufacturerCode },
333
+ }),
334
+ m.numeric({
335
+ name: "max_brightness",
336
+ valueMin: 1,
337
+ valueMax: 100,
338
+ unit: "%",
339
+ cluster: "manuSpecificLumi",
340
+ attribute: { ID: 0x0516, type: 0x20 },
341
+ description: "Maximum brightness level",
342
+ zigbeeCommandOptions: { manufacturerCode },
343
+ }),
344
+ m.binary({
345
+ name: "audio",
346
+ valueOn: ["ON", 1],
347
+ valueOff: ["OFF", 0],
348
+ cluster: "manuSpecificLumi",
349
+ attribute: { ID: 0x051c, type: 0x20 },
350
+ description: "Enabling audio",
351
+ zigbeeCommandOptions: { manufacturerCode },
352
+ }),
353
+ m.enumLookup({
354
+ name: "audio_sensitivity",
355
+ lookup: { low: 0, medium: 1, high: 2 },
356
+ cluster: "manuSpecificLumi",
357
+ attribute: { ID: 0x051e, type: 0x20 },
358
+ description: "Audio sensitivity",
359
+ zigbeeCommandOptions: { manufacturerCode },
360
+ }),
361
+ m.enumLookup({
362
+ name: "audio_effect",
363
+ lookup: { random: 0, blink: 1, rainbow: 2, wave: 3 },
364
+ cluster: "manuSpecificLumi",
365
+ attribute: { ID: 0x051d, type: 0x23 },
366
+ description: "Audio effect",
367
+ zigbeeCommandOptions: { manufacturerCode },
368
+ }),
369
+ m.numeric({
370
+ name: "preset",
371
+ valueMin: 1,
372
+ valueMax: 32,
373
+ cluster: "manuSpecificLumi",
374
+ attribute: { ID: 0x051f, type: 0x23 },
375
+ description: "Preset index (0-6 default presets)",
376
+ zigbeeCommandOptions: { manufacturerCode },
377
+ }),
378
+ m.numeric({
379
+ name: "speed",
380
+ valueMin: 1,
381
+ valueMax: 100,
382
+ cluster: "manuSpecificLumi",
383
+ attribute: { ID: 0x0520, type: 0x20 },
384
+ description: "Effect speed",
385
+ zigbeeCommandOptions: { manufacturerCode },
386
+ }),
387
+ lumiZigbeeOTA(),
388
+ ],
389
+ },
390
+ {
391
+ zigbeeModel: ["lumi.sensor_86sw2", "lumi.sensor_86sw2.es1"],
392
+ model: "WXKG02LM_rev1",
393
+ vendor: "Aqara",
394
+ description: "Wireless remote switch (double rocker), 2016 model",
395
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
396
+ exposes: [e.battery(), e.action(["single_left", "single_right", "single_both"]), e.battery_voltage(), e.power_outage_count(false)],
397
+ fromZigbee: [lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_basic],
398
+ toZigbee: [],
399
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiPreventReset()],
400
+ },
401
+ {
402
+ zigbeeModel: ["lumi.remote.b286acn01"],
403
+ model: "WXKG02LM_rev2",
404
+ vendor: "Aqara",
405
+ description: "Wireless remote switch (double rocker), 2018 model",
406
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
407
+ exposes: [
408
+ e.battery(),
409
+ e.action([
410
+ "single_left",
411
+ "single_right",
412
+ "single_both",
413
+ "double_left",
414
+ "double_right",
415
+ "double_both",
416
+ "hold_left",
417
+ "hold_right",
418
+ "hold_both",
419
+ ]),
420
+ e.battery_voltage(),
421
+ ],
422
+ fromZigbee: [lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_basic],
423
+ toZigbee: [],
424
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiPreventReset()],
425
+ },
426
+ {
427
+ zigbeeModel: ["lumi.switch.b1laus01"],
428
+ model: "WS-USC01",
429
+ vendor: "Aqara",
430
+ description: "Smart wall switch (no neutral, single rocker), US",
431
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
432
+ toZigbee: [
433
+ toZigbee_1.default.on_off,
434
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
435
+ lumi.toZigbee.lumi_flip_indicator_light,
436
+ lumi.toZigbee.lumi_switch_mode_switch,
437
+ lumi.toZigbee.lumi_switch_power_outage_memory,
438
+ ],
439
+ exposes: [
440
+ e.switch(),
441
+ e.action(["single", "double"]),
442
+ e.flip_indicator_light(),
443
+ e.power_outage_memory(),
444
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode"),
445
+ e
446
+ .enum("mode_switch", ea.ALL, ["anti_flicker_mode", "quick_mode"])
447
+ .withDescription("Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster."),
448
+ e.power_outage_count(),
449
+ e.device_temperature().withAccess(ea.STATE),
450
+ ],
451
+ configure: async (device, coordinatorEndpoint) => {
452
+ const endpoint1 = device.getEndpoint(1);
453
+ // set "event" mode
454
+ await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
455
+ device.powerSource = "Mains (single phase)";
456
+ device.save();
457
+ },
458
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
459
+ },
460
+ {
461
+ zigbeeModel: ["lumi.switch.b2laus01"],
462
+ model: "WS-USC02",
463
+ vendor: "Aqara",
464
+ description: "Smart wall switch (no neutral, double rocker), US",
465
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
466
+ toZigbee: [
467
+ toZigbee_1.default.on_off,
468
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
469
+ lumi.toZigbee.lumi_flip_indicator_light,
470
+ lumi.toZigbee.lumi_switch_power_outage_memory,
471
+ lumi.toZigbee.lumi_switch_mode_switch,
472
+ ],
473
+ exposes: [
474
+ e.switch().withEndpoint("top"),
475
+ e.switch().withEndpoint("bottom"),
476
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for top button").withEndpoint("top"),
477
+ e
478
+ .enum("operation_mode", ea.ALL, ["control_relay", "decoupled"])
479
+ .withDescription("Decoupled mode for bottom button")
480
+ .withEndpoint("bottom"),
481
+ e
482
+ .enum("mode_switch", ea.ALL, ["anti_flicker_mode", "quick_mode"])
483
+ .withDescription("Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster."),
484
+ e.power_outage_count(),
485
+ e.device_temperature().withAccess(ea.STATE),
486
+ e.flip_indicator_light(),
487
+ e.power_outage_memory(),
488
+ e.action(["single_top", "single_bottom", "single_both", "double_top", "double_bottom", "double_both"]),
489
+ ],
490
+ meta: { multiEndpoint: true },
491
+ endpoint: (device) => {
492
+ return { top: 1, bottom: 2 };
493
+ },
494
+ configure: async (device, coordinatorEndpoint) => {
495
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
496
+ },
497
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
498
+ },
499
+ {
500
+ zigbeeModel: ["lumi.switch.b1naus01"],
501
+ model: "WS-USC03",
502
+ vendor: "Aqara",
503
+ description: "Smart wall switch (with neutral, single rocker), US",
504
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
505
+ toZigbee: [
506
+ toZigbee_1.default.on_off,
507
+ lumi.toZigbee.lumi_power,
508
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
509
+ lumi.toZigbee.lumi_switch_power_outage_memory,
510
+ lumi.toZigbee.lumi_flip_indicator_light,
511
+ ],
512
+ exposes: [
513
+ e.switch(),
514
+ e.action(["single", "double"]),
515
+ e.flip_indicator_light(),
516
+ e.power_outage_count(),
517
+ e.device_temperature().withAccess(ea.STATE),
518
+ e.power().withAccess(ea.STATE_GET),
519
+ e.energy(),
520
+ e.voltage(),
521
+ e.power_outage_memory(),
522
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode"),
523
+ ],
524
+ configure: async (device, coordinatorEndpoint) => {
525
+ const endpoint1 = device.getEndpoint(1);
526
+ // set "event" mode
527
+ await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
528
+ },
529
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
530
+ },
531
+ {
532
+ zigbeeModel: ["lumi.switch.b2naus01"],
533
+ model: "WS-USC04",
534
+ vendor: "Aqara",
535
+ description: "Smart wall switch (with neutral, double rocker), US",
536
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
537
+ toZigbee: [
538
+ toZigbee_1.default.on_off,
539
+ lumi.toZigbee.lumi_power,
540
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
541
+ lumi.toZigbee.lumi_switch_power_outage_memory,
542
+ lumi.toZigbee.lumi_flip_indicator_light,
543
+ ],
544
+ exposes: [
545
+ e.switch().withEndpoint("top"),
546
+ e.switch().withEndpoint("bottom"),
547
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for top button").withEndpoint("top"),
548
+ e
549
+ .enum("operation_mode", ea.ALL, ["control_relay", "decoupled"])
550
+ .withDescription("Decoupled mode for bottom button")
551
+ .withEndpoint("bottom"),
552
+ e.power_outage_count(),
553
+ e.device_temperature().withAccess(ea.STATE),
554
+ e.flip_indicator_light(),
555
+ e.power().withAccess(ea.STATE_GET),
556
+ e.energy(),
557
+ e.voltage(),
558
+ e.power_outage_memory(),
559
+ e.action(["single_top", "single_bottom", "single_both", "double_top", "double_bottom", "double_both"]),
560
+ ],
561
+ meta: { multiEndpoint: true, multiEndpointSkip: ["power", "energy"] },
562
+ endpoint: (device) => {
563
+ return { top: 1, bottom: 2 };
564
+ },
565
+ configure: async (device, coordinatorEndpoint) => {
566
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
567
+ },
568
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
569
+ },
570
+ {
571
+ zigbeeModel: ["lumi.switch.l1acn1"],
572
+ model: "QBKG27LM",
573
+ vendor: "Aqara",
574
+ description: "Smart wall switch H1 (no neutral, single rocker)",
575
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_specific, lumi.fromZigbee.lumi_action_multistate],
576
+ toZigbee: [
577
+ toZigbee_1.default.on_off,
578
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
579
+ lumi.toZigbee.lumi_switch_power_outage_memory,
580
+ lumi.toZigbee.lumi_led_disabled_night,
581
+ lumi.toZigbee.lumi_flip_indicator_light,
582
+ lumi.toZigbee.lumi_switch_mode_switch,
583
+ ],
584
+ exposes: [
585
+ e.switch(),
586
+ e.device_temperature(),
587
+ e.power_outage_memory(),
588
+ e.led_disabled_night(),
589
+ e.flip_indicator_light(),
590
+ e.action(["single", "double"]),
591
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode"),
592
+ e.power_outage_count(),
593
+ e
594
+ .enum("mode_switch", ea.ALL, ["anti_flicker_mode", "quick_mode"])
595
+ .withDescription("Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster."),
596
+ ],
597
+ configure: async (device, coordinatorEndpoint) => {
598
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
599
+ },
600
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
601
+ },
602
+ {
603
+ zigbeeModel: ["lumi.switch.l2acn1"],
604
+ model: "QBKG28LM",
605
+ vendor: "Aqara",
606
+ description: "Smart wall switch H1 (no neutral, double rocker)",
607
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
608
+ toZigbee: [
609
+ toZigbee_1.default.on_off,
610
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
611
+ lumi.toZigbee.lumi_switch_power_outage_memory,
612
+ lumi.toZigbee.lumi_flip_indicator_light,
613
+ lumi.toZigbee.lumi_led_disabled_night,
614
+ lumi.toZigbee.lumi_switch_mode_switch,
615
+ ],
616
+ meta: { multiEndpoint: true },
617
+ endpoint: (device) => {
618
+ return { left: 1, right: 2 };
619
+ },
620
+ exposes: [
621
+ e.switch().withEndpoint("left"),
622
+ e.switch().withEndpoint("right"),
623
+ e.device_temperature(),
624
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for left button").withEndpoint("left"),
625
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for right button").withEndpoint("right"),
626
+ e.action(["single_left", "double_left", "single_right", "double_right", "single_both", "double_both"]),
627
+ e.power_outage_memory(),
628
+ e.flip_indicator_light(),
629
+ e.led_disabled_night(),
630
+ e
631
+ .enum("mode_switch", ea.ALL, ["anti_flicker_mode", "quick_mode"])
632
+ .withDescription("Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster."),
633
+ ],
634
+ configure: async (device, coordinatorEndpoint) => {
635
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
636
+ },
637
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
638
+ },
639
+ {
640
+ zigbeeModel: ["lumi.switch.l3acn1"],
641
+ model: "QBKG29LM",
642
+ vendor: "Aqara",
643
+ description: "Smart wall switch H1 (no neutral, triple rocker)",
644
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
645
+ toZigbee: [
646
+ toZigbee_1.default.on_off,
647
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
648
+ lumi.toZigbee.lumi_switch_power_outage_memory,
649
+ lumi.toZigbee.lumi_flip_indicator_light,
650
+ lumi.toZigbee.lumi_led_disabled_night,
651
+ lumi.toZigbee.lumi_switch_mode_switch,
652
+ ],
653
+ meta: { multiEndpoint: true },
654
+ endpoint: (device) => ({ left: 1, center: 2, right: 3 }),
655
+ exposes: [
656
+ e.switch().withEndpoint("left"),
657
+ e.switch().withEndpoint("center"),
658
+ e.switch().withEndpoint("right"),
659
+ e.power_outage_memory(),
660
+ e.flip_indicator_light(),
661
+ e.led_disabled_night(),
662
+ e.power_outage_count(),
663
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for left button").withEndpoint("left"),
664
+ e
665
+ .enum("operation_mode", ea.ALL, ["control_relay", "decoupled"])
666
+ .withDescription("Decoupled mode for center button")
667
+ .withEndpoint("center"),
668
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for right button").withEndpoint("right"),
669
+ e
670
+ .enum("mode_switch", ea.ALL, ["anti_flicker_mode", "quick_mode"])
671
+ .withDescription("Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster."),
672
+ e.device_temperature().withAccess(ea.STATE),
673
+ e.action([
674
+ "single_left",
675
+ "double_left",
676
+ "single_center",
677
+ "double_center",
678
+ "single_right",
679
+ "double_right",
680
+ "single_left_center",
681
+ "double_left_center",
682
+ "single_left_right",
683
+ "double_left_right",
684
+ "single_center_right",
685
+ "double_center_right",
686
+ "single_all",
687
+ "double_all",
688
+ ]),
689
+ ],
690
+ configure: async (device, coordinatorEndpoint) => {
691
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
692
+ },
693
+ extend: [lumiPreventReset()],
694
+ },
695
+ {
696
+ zigbeeModel: ["lumi.switch.n1acn1"],
697
+ model: "QBKG30LM",
698
+ vendor: "Aqara",
699
+ description: "Smart wall switch H1 Pro (with neutral, single rocker)",
700
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_specific, lumi.fromZigbee.lumi_action_multistate],
701
+ toZigbee: [
702
+ toZigbee_1.default.on_off,
703
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
704
+ lumi.toZigbee.lumi_switch_power_outage_memory,
705
+ lumi.toZigbee.lumi_led_disabled_night,
706
+ lumi.toZigbee.lumi_flip_indicator_light,
707
+ ],
708
+ exposes: [
709
+ e.switch(),
710
+ e.power(),
711
+ e.energy(),
712
+ e.voltage(),
713
+ e.device_temperature(),
714
+ e.power_outage_memory(),
715
+ e.led_disabled_night(),
716
+ e.flip_indicator_light(),
717
+ e.action(["single", "double"]),
718
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode"),
719
+ e.power_outage_count(),
720
+ ],
721
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
722
+ },
723
+ {
724
+ zigbeeModel: ["lumi.switch.n2acn1"],
725
+ model: "QBKG31LM",
726
+ vendor: "Aqara",
727
+ description: "Smart wall switch H1 Pro (with neutral, double rocker)",
728
+ meta: { multiEndpoint: true, multiEndpointSkip: ["power", "energy"] },
729
+ endpoint: (device) => {
730
+ return { left: 1, right: 2 };
731
+ },
732
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_specific, lumi.fromZigbee.lumi_action_multistate],
733
+ toZigbee: [
734
+ toZigbee_1.default.on_off,
735
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
736
+ lumi.toZigbee.lumi_switch_power_outage_memory,
737
+ lumi.toZigbee.lumi_led_disabled_night,
738
+ lumi.toZigbee.lumi_flip_indicator_light,
739
+ ],
740
+ exposes: [
741
+ e.switch().withEndpoint("left"),
742
+ e.switch().withEndpoint("right"),
743
+ e.power(),
744
+ e.energy(),
745
+ e.voltage(),
746
+ e.device_temperature(),
747
+ e.power_outage_memory(),
748
+ e.led_disabled_night(),
749
+ e.flip_indicator_light(),
750
+ e.action(["single_left", "single_right", "single_both", "double_left", "double_right", "double_both"]),
751
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for left button").withEndpoint("left"),
752
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for right button").withEndpoint("right"),
753
+ e.power_outage_count(),
754
+ ],
755
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
756
+ },
757
+ {
758
+ zigbeeModel: ["lumi.switch.n3acn1"],
759
+ model: "QBKG32LM",
760
+ vendor: "Aqara",
761
+ description: "Smart wall switch H1 Pro (with neutral, triple rocker)",
762
+ meta: { multiEndpoint: true },
763
+ endpoint: (device) => {
764
+ return { left: 1, center: 2, right: 3 };
765
+ },
766
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_specific, lumi.fromZigbee.lumi_action_multistate],
767
+ toZigbee: [
768
+ toZigbee_1.default.on_off,
769
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
770
+ lumi.toZigbee.lumi_switch_power_outage_memory,
771
+ lumi.toZigbee.lumi_led_disabled_night,
772
+ lumi.toZigbee.lumi_flip_indicator_light,
773
+ ],
774
+ exposes: [
775
+ e.switch().withEndpoint("left"),
776
+ e.switch().withEndpoint("right"),
777
+ e.switch().withEndpoint("center"),
778
+ e.power(),
779
+ e.energy(),
780
+ e.voltage(),
781
+ e.device_temperature(),
782
+ e.power_outage_memory(),
783
+ e.led_disabled_night(),
784
+ e.flip_indicator_light(),
785
+ e.action([
786
+ "single_left",
787
+ "double_left",
788
+ "single_center",
789
+ "double_center",
790
+ "single_right",
791
+ "double_right",
792
+ "single_left_center",
793
+ "double_left_center",
794
+ "single_left_right",
795
+ "double_left_right",
796
+ "single_center_right",
797
+ "double_center_right",
798
+ "single_all",
799
+ "double_all",
800
+ ]),
801
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for left button").withEndpoint("left"),
802
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for right button").withEndpoint("right"),
803
+ e
804
+ .enum("operation_mode", ea.ALL, ["control_relay", "decoupled"])
805
+ .withDescription("Decoupled mode for center button")
806
+ .withEndpoint("center"),
807
+ e.power_outage_count(),
808
+ ],
809
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
810
+ },
811
+ {
812
+ zigbeeModel: ["lumi.switch.l1aeu1"],
813
+ model: "WS-EUK01",
814
+ vendor: "Aqara",
815
+ description: "Smart wall switch H1 EU (no neutral, single rocker)",
816
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
817
+ toZigbee: [
818
+ toZigbee_1.default.on_off,
819
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
820
+ lumi.toZigbee.lumi_switch_power_outage_memory,
821
+ lumi.toZigbee.lumi_flip_indicator_light,
822
+ lumi.toZigbee.lumi_led_disabled_night,
823
+ lumi.toZigbee.lumi_switch_mode_switch,
824
+ ],
825
+ exposes: [
826
+ e.switch(),
827
+ e.action(["single", "double"]),
828
+ e.power_outage_memory(),
829
+ e.flip_indicator_light(),
830
+ e.led_disabled_night(),
831
+ e.power_outage_count(),
832
+ e.device_temperature().withAccess(ea.STATE),
833
+ e.operation_mode_select(["control_relay", "decoupled"]).withDescription("Switches between direct relay control and action sending only"),
834
+ e
835
+ .mode_switch_select(["anti_flicker_mode", "quick_mode"])
836
+ .withDescription("Features. Anti flicker mode can be used to solve blinking issues of some lights." +
837
+ "Quick mode makes the device respond faster."),
838
+ ],
839
+ configure: async (device, coordinatorEndpoint) => {
840
+ const endpoint1 = device.getEndpoint(1);
841
+ // set "event" mode
842
+ await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
843
+ },
844
+ extend: [lumiPreventReset()],
845
+ },
846
+ {
847
+ zigbeeModel: ["lumi.switch.l2aeu1"],
848
+ model: "WS-EUK02",
849
+ vendor: "Aqara",
850
+ description: "Smart wall switch H1 EU (no neutral, double rocker)",
851
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
852
+ toZigbee: [
853
+ toZigbee_1.default.on_off,
854
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
855
+ lumi.toZigbee.lumi_switch_power_outage_memory,
856
+ lumi.toZigbee.lumi_flip_indicator_light,
857
+ lumi.toZigbee.lumi_led_disabled_night,
858
+ lumi.toZigbee.lumi_switch_mode_switch,
859
+ ],
860
+ meta: { multiEndpoint: true },
861
+ endpoint: (_device) => {
862
+ return { left: 1, right: 2 };
863
+ },
864
+ exposes: [
865
+ e.switch().withEndpoint("left"),
866
+ e.switch().withEndpoint("right"),
867
+ e.power_outage_memory(),
868
+ e.flip_indicator_light(),
869
+ e.led_disabled_night(),
870
+ e.power_outage_count(),
871
+ e.device_temperature().withAccess(ea.STATE),
872
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for left button").withEndpoint("left"),
873
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for right button").withEndpoint("right"),
874
+ e
875
+ .enum("mode_switch", ea.ALL, ["anti_flicker_mode", "quick_mode"])
876
+ .withDescription("Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster."),
877
+ e.action(["single_left", "double_left", "single_right", "double_right", "single_both", "double_both"]),
878
+ ],
879
+ configure: async (device, coordinatorEndpoint) => {
880
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
881
+ },
882
+ extend: [lumiPreventReset()],
883
+ },
884
+ {
885
+ zigbeeModel: ["lumi.switch.n1aeu1"],
886
+ model: "WS-EUK03",
887
+ vendor: "Aqara",
888
+ description: "Smart wall switch H1 EU (with neutral, single rocker)",
889
+ fromZigbee: [fromZigbee_1.default.on_off, fromZigbee_1.default.electrical_measurement, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
890
+ toZigbee: [
891
+ toZigbee_1.default.on_off,
892
+ toZigbee_1.default.electrical_measurement_power,
893
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
894
+ lumi.toZigbee.lumi_switch_power_outage_memory,
895
+ lumi.toZigbee.lumi_flip_indicator_light,
896
+ lumi.toZigbee.lumi_led_disabled_night,
897
+ ],
898
+ exposes: [
899
+ e.switch(),
900
+ e.action(["single", "double"]),
901
+ e.power().withAccess(ea.STATE_GET),
902
+ e.energy(),
903
+ e.flip_indicator_light(),
904
+ e.power_outage_memory(),
905
+ e.device_temperature().withAccess(ea.STATE),
906
+ e.led_disabled_night(),
907
+ e.power_outage_count(),
908
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode"),
909
+ ],
910
+ configure: async (device, coordinatorEndpoint) => {
911
+ const endpoint1 = device.getEndpoint(1);
912
+ // set "event" mode
913
+ await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
914
+ },
915
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
916
+ },
917
+ {
918
+ zigbeeModel: ["lumi.switch.n2aeu1"],
919
+ model: "WS-EUK04",
920
+ vendor: "Aqara",
921
+ description: "Smart wall switch H1 EU (with neutral, double rocker)",
922
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
923
+ toZigbee: [
924
+ toZigbee_1.default.on_off,
925
+ lumi.toZigbee.lumi_power,
926
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
927
+ lumi.toZigbee.lumi_switch_power_outage_memory,
928
+ lumi.toZigbee.lumi_flip_indicator_light,
929
+ lumi.toZigbee.lumi_led_disabled_night,
930
+ ],
931
+ meta: { multiEndpoint: true, multiEndpointSkip: ["power", "energy"] },
932
+ endpoint: (device) => {
933
+ return { left: 1, right: 2 };
934
+ },
935
+ exposes: [
936
+ e.switch().withEndpoint("left"),
937
+ e.switch().withEndpoint("right"),
938
+ e.power().withAccess(ea.STATE_GET),
939
+ e.energy(),
940
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for left button").withEndpoint("left"),
941
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for right button").withEndpoint("right"),
942
+ e.action(["single_left", "double_left", "single_right", "double_right", "single_both", "double_both"]),
943
+ e.device_temperature().withAccess(ea.STATE),
944
+ e.power_outage_memory(),
945
+ e.flip_indicator_light(),
946
+ e.led_disabled_night(),
947
+ e.power_outage_count(),
948
+ ],
949
+ configure: async (device, coordinatorEndpoint) => {
950
+ const endpoint1 = device.getEndpoint(1);
951
+ // set "event" mode
952
+ await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
953
+ },
954
+ extend: [lumiPreventReset()],
955
+ },
956
+ {
957
+ zigbeeModel: ["lumi.ctrl_neutral1"],
958
+ model: "QBKG04LM",
959
+ vendor: "Aqara",
960
+ description: "Smart wall switch (no neutral, single rocker)",
961
+ fromZigbee: [lumi.fromZigbee.lumi_on_off, lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_operation_mode_basic],
962
+ exposes: [
963
+ e.switch(),
964
+ e.action(["release", "hold", "double", "single", "hold_release"]),
965
+ e.enum("operation_mode", ea.STATE_SET, ["control_relay", "decoupled"]).withDescription("Decoupled mode"),
966
+ ],
967
+ toZigbee: [toZigbee_1.default.on_off, { ...lumi.toZigbee.lumi_switch_operation_mode_basic, convertGet: null }],
968
+ endpoint: (device) => {
969
+ return { system: 1, default: 2 };
970
+ },
971
+ configure: async (device, coordinatorEndpoint) => {
972
+ // Device advertises itself as Router but is an EndDevice
973
+ device.type = "EndDevice";
974
+ device.save();
975
+ },
976
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
977
+ },
978
+ {
979
+ zigbeeModel: ["lumi.ctrl_ln1.aq1", "lumi.ctrl_ln1"],
980
+ model: "QBKG11LM",
981
+ vendor: "Aqara",
982
+ description: "Smart wall switch (with neutral, single rocker)",
983
+ fromZigbee: [
984
+ lumi.fromZigbee.lumi_action,
985
+ lumi.fromZigbee.lumi_action_multistate,
986
+ lumi.fromZigbee.lumi_on_off,
987
+ lumi.fromZigbee.lumi_basic,
988
+ lumi.fromZigbee.lumi_operation_mode_basic,
989
+ fromZigbee_1.default.ignore_multistate_report,
990
+ lumi.fromZigbee.lumi_power,
991
+ ],
992
+ exposes: [
993
+ e.switch(),
994
+ e.power().withAccess(ea.STATE_GET),
995
+ e.device_temperature(),
996
+ e.energy(),
997
+ e.action(["single", "double", "release", "hold"]),
998
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode"),
999
+ ],
1000
+ toZigbee: [toZigbee_1.default.on_off, lumi.toZigbee.lumi_switch_operation_mode_basic, lumi.toZigbee.lumi_power],
1001
+ endpoint: (device) => {
1002
+ return { system: 1 };
1003
+ },
1004
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
1005
+ configure: async (device, coordinatorEndpoint) => {
1006
+ device.powerSource = "Mains (single phase)";
1007
+ device.save();
1008
+ },
1009
+ },
1010
+ {
1011
+ zigbeeModel: ["lumi.ctrl_neutral2"],
1012
+ model: "QBKG03LM",
1013
+ vendor: "Aqara",
1014
+ description: "Smart wall switch (no neutral, double rocker)",
1015
+ fromZigbee: [lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_on_off, lumi.fromZigbee.lumi_operation_mode_basic, lumi.fromZigbee.lumi_basic],
1016
+ exposes: [
1017
+ e.switch().withEndpoint("left"),
1018
+ e.switch().withEndpoint("right"),
1019
+ e.device_temperature(),
1020
+ e.action([
1021
+ "release_left",
1022
+ "release_right",
1023
+ "release_both",
1024
+ "double_left",
1025
+ "double_right",
1026
+ "single_left",
1027
+ "single_right",
1028
+ "hold_release_left",
1029
+ "hold_release_left",
1030
+ ]),
1031
+ e
1032
+ .enum("operation_mode", ea.STATE_SET, ["control_left_relay", "control_right_relay", "decoupled"])
1033
+ .withDescription("Operation mode for left button")
1034
+ .withEndpoint("left")
1035
+ .withCategory("config"),
1036
+ e
1037
+ .enum("operation_mode", ea.STATE_SET, ["control_left_relay", "control_right_relay", "decoupled"])
1038
+ .withDescription("Operation mode for right button")
1039
+ .withEndpoint("right")
1040
+ .withCategory("config"),
1041
+ ],
1042
+ toZigbee: [toZigbee_1.default.on_off, { ...lumi.toZigbee.lumi_switch_operation_mode_basic, convertGet: null }, lumi.toZigbee.lumi_power],
1043
+ meta: { multiEndpoint: true },
1044
+ endpoint: (device) => {
1045
+ return { system: 1, left: 2, right: 3 };
1046
+ },
1047
+ configure: async (device, coordinatorEndpoint) => {
1048
+ // Device advertises itself as Router but is an EndDevice
1049
+ device.type = "EndDevice";
1050
+ device.save();
1051
+ },
1052
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
1053
+ },
1054
+ {
1055
+ zigbeeModel: ["lumi.ctrl_ln2.aq1", "lumi.ctrl_ln2"],
1056
+ model: "QBKG12LM",
1057
+ vendor: "Aqara",
1058
+ description: "Smart wall switch (with neutral, double rocker)",
1059
+ fromZigbee: [
1060
+ lumi.fromZigbee.lumi_action,
1061
+ lumi.fromZigbee.lumi_action_multistate,
1062
+ lumi.fromZigbee.lumi_on_off,
1063
+ lumi.fromZigbee.lumi_basic,
1064
+ lumi.fromZigbee.lumi_operation_mode_basic,
1065
+ lumi.fromZigbee.lumi_power,
1066
+ ],
1067
+ exposes: [
1068
+ e.switch().withEndpoint("left"),
1069
+ e.switch().withEndpoint("right"),
1070
+ e.device_temperature(),
1071
+ e.energy(),
1072
+ e.power().withAccess(ea.STATE_GET),
1073
+ e.action([
1074
+ "single_left",
1075
+ "single_right",
1076
+ "single_both",
1077
+ "double_left",
1078
+ "double_right",
1079
+ "double_both",
1080
+ "hold_left",
1081
+ "hold_right",
1082
+ "hold_both",
1083
+ "release_left",
1084
+ "release_right",
1085
+ "release_both",
1086
+ ]),
1087
+ e
1088
+ .enum("operation_mode", ea.ALL, ["control_left_relay", "control_right_relay", "decoupled"])
1089
+ .withDescription("Operation mode for left button")
1090
+ .withEndpoint("left"),
1091
+ e
1092
+ .enum("operation_mode", ea.ALL, ["control_left_relay", "control_right_relay", "decoupled"])
1093
+ .withDescription("Operation mode for right button")
1094
+ .withEndpoint("right"),
1095
+ ],
1096
+ meta: { multiEndpoint: true, multiEndpointSkip: ["power", "energy"] },
1097
+ toZigbee: [toZigbee_1.default.on_off, lumi.toZigbee.lumi_switch_operation_mode_basic, lumi.toZigbee.lumi_power],
1098
+ endpoint: (device) => {
1099
+ return { left: 1, right: 2, system: 1 };
1100
+ },
1101
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
1102
+ configure: async (device, coordinatorEndpoint) => {
1103
+ device.powerSource = "Mains (single phase)";
1104
+ device.save();
1105
+ },
1106
+ },
1107
+ {
1108
+ zigbeeModel: ["lumi.remote.b286acn02"],
1109
+ model: "WXKG07LM",
1110
+ vendor: "Aqara",
1111
+ description: "Wireless remote switch D1 (double rocker)",
1112
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1113
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_action_multistate],
1114
+ toZigbee: [],
1115
+ endpoint: (device) => {
1116
+ return { left: 1, right: 2, both: 3 };
1117
+ },
1118
+ exposes: [
1119
+ e.battery(),
1120
+ e.battery_voltage(),
1121
+ e.action([
1122
+ "single_left",
1123
+ "single_right",
1124
+ "single_both",
1125
+ "double_left",
1126
+ "double_right",
1127
+ "double_both",
1128
+ "hold_left",
1129
+ "hold_right",
1130
+ "hold_both",
1131
+ ]),
1132
+ ],
1133
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiPreventReset()],
1134
+ },
1135
+ {
1136
+ zigbeeModel: ["lumi.switch.b1lacn02"],
1137
+ model: "QBKG21LM",
1138
+ vendor: "Aqara",
1139
+ description: "Smart wall switch D1 (no neutral, single rocker)",
1140
+ fromZigbee: [lumi.fromZigbee.lumi_on_off, lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_operation_mode_basic],
1141
+ exposes: [
1142
+ e.switch(),
1143
+ e.action(["release", "hold", "double", "single", "hold_release"]),
1144
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode"),
1145
+ ],
1146
+ toZigbee: [toZigbee_1.default.on_off, lumi.toZigbee.lumi_switch_operation_mode_basic],
1147
+ endpoint: (device) => {
1148
+ return { system: 1, default: 2 };
1149
+ },
1150
+ extend: [lumiPreventReset()],
1151
+ configure: async (device, coordinatorEndpoint) => {
1152
+ // Device advertises itself as Router but is an EndDevice
1153
+ device.type = "EndDevice";
1154
+ device.powerSource = "Mains (single phase)";
1155
+ device.save();
1156
+ },
1157
+ },
1158
+ {
1159
+ zigbeeModel: ["lumi.switch.b2lacn02"],
1160
+ model: "QBKG22LM",
1161
+ vendor: "Aqara",
1162
+ description: "Smart wall switch D1 (no neutral, double rocker)",
1163
+ fromZigbee: [lumi.fromZigbee.lumi_on_off, lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_operation_mode_basic],
1164
+ exposes: [
1165
+ e.switch().withEndpoint("left"),
1166
+ e.switch().withEndpoint("right"),
1167
+ e.action([
1168
+ "release_left",
1169
+ "release_right",
1170
+ "release_both",
1171
+ "double_left",
1172
+ "double_right",
1173
+ "single_left",
1174
+ "single_right",
1175
+ "hold_release_left",
1176
+ "hold_release_left",
1177
+ ]),
1178
+ e
1179
+ .enum("operation_mode", ea.ALL, ["control_left_relay", "control_right_relay", "decoupled"])
1180
+ .withDescription("Operation mode for left button")
1181
+ .withEndpoint("left"),
1182
+ e
1183
+ .enum("operation_mode", ea.ALL, ["control_left_relay", "control_right_relay", "decoupled"])
1184
+ .withDescription("Operation mode for right button")
1185
+ .withEndpoint("right"),
1186
+ ],
1187
+ toZigbee: [toZigbee_1.default.on_off, lumi.toZigbee.lumi_switch_operation_mode_basic],
1188
+ meta: { multiEndpoint: true },
1189
+ endpoint: (device) => {
1190
+ return { system: 1, left: 2, right: 3 };
1191
+ },
1192
+ extend: [lumiPreventReset()],
1193
+ configure: async (device, coordinatorEndpoint) => {
1194
+ // Device advertises itself as Router but is an EndDevice
1195
+ device.type = "EndDevice";
1196
+ device.save();
1197
+ },
1198
+ },
1199
+ {
1200
+ zigbeeModel: ["lumi.switch.l3acn3"],
1201
+ model: "QBKG25LM",
1202
+ vendor: "Aqara",
1203
+ description: "Smart wall switch D1 (no neutral, triple rocker)",
1204
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
1205
+ toZigbee: [
1206
+ toZigbee_1.default.on_off,
1207
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
1208
+ lumi.toZigbee.lumi_switch_power_outage_memory,
1209
+ lumi.toZigbee.lumi_led_disabled_night,
1210
+ lumi.toZigbee.lumi_switch_mode_switch,
1211
+ lumi.toZigbee.lumi_flip_indicator_light,
1212
+ ],
1213
+ meta: { multiEndpoint: true },
1214
+ endpoint: (device) => {
1215
+ return { left: 1, center: 2, right: 3 };
1216
+ },
1217
+ exposes: [
1218
+ e.switch().withEndpoint("left"),
1219
+ e.switch().withEndpoint("center"),
1220
+ e.switch().withEndpoint("right"),
1221
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for left button").withEndpoint("left"),
1222
+ e
1223
+ .enum("operation_mode", ea.ALL, ["control_relay", "decoupled"])
1224
+ .withDescription("Decoupled mode for center button")
1225
+ .withEndpoint("center"),
1226
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for right button").withEndpoint("right"),
1227
+ e
1228
+ .enum("mode_switch", ea.ALL, ["anti_flicker_mode", "quick_mode"])
1229
+ .withDescription("Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster."),
1230
+ e.power_outage_memory(),
1231
+ e.led_disabled_night(),
1232
+ e.device_temperature().withAccess(ea.STATE),
1233
+ e.flip_indicator_light(),
1234
+ e.action([
1235
+ "left_single",
1236
+ "left_double",
1237
+ "center_single",
1238
+ "center_double",
1239
+ "right_single",
1240
+ "right_double",
1241
+ "single_left_center",
1242
+ "double_left_center",
1243
+ "single_left_right",
1244
+ "double_left_right",
1245
+ "single_center_right",
1246
+ "double_center_right",
1247
+ "single_all",
1248
+ "double_all",
1249
+ ]),
1250
+ e.power_outage_count(),
1251
+ ],
1252
+ configure: async (device, coordinatorEndpoint) => {
1253
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
1254
+ },
1255
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
1256
+ },
1257
+ {
1258
+ zigbeeModel: ["lumi.switch.n3acn3"],
1259
+ model: "QBKG26LM",
1260
+ vendor: "Aqara",
1261
+ description: "Smart wall switch D1 (with neutral, triple rocker)",
1262
+ exposes: [
1263
+ e.switch().withEndpoint("left"),
1264
+ e.switch().withEndpoint("center"),
1265
+ e.switch().withEndpoint("right"),
1266
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for left button").withEndpoint("left"),
1267
+ e
1268
+ .enum("operation_mode", ea.ALL, ["control_relay", "decoupled"])
1269
+ .withDescription("Decoupled mode for center button")
1270
+ .withEndpoint("center"),
1271
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for right button").withEndpoint("right"),
1272
+ e.power().withAccess(ea.STATE),
1273
+ e.power_outage_memory(),
1274
+ e.led_disabled_night(),
1275
+ e.voltage(),
1276
+ e.energy(),
1277
+ e.device_temperature().withAccess(ea.STATE),
1278
+ e.flip_indicator_light(),
1279
+ e.action([
1280
+ "single_left",
1281
+ "double_left",
1282
+ "single_center",
1283
+ "double_center",
1284
+ "single_right",
1285
+ "double_right",
1286
+ "single_left_center",
1287
+ "double_left_center",
1288
+ "single_left_right",
1289
+ "double_left_right",
1290
+ "single_center_right",
1291
+ "double_center_right",
1292
+ "single_all",
1293
+ "double_all",
1294
+ ]),
1295
+ ],
1296
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_specific, lumi.fromZigbee.lumi_action_multistate],
1297
+ toZigbee: [
1298
+ toZigbee_1.default.on_off,
1299
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
1300
+ lumi.toZigbee.lumi_switch_power_outage_memory,
1301
+ lumi.toZigbee.lumi_led_disabled_night,
1302
+ lumi.toZigbee.lumi_flip_indicator_light,
1303
+ ],
1304
+ meta: { multiEndpoint: true },
1305
+ endpoint: (device) => {
1306
+ return { left: 1, center: 2, right: 3 };
1307
+ },
1308
+ configure: async (device, coordinatorEndpoint) => {
1309
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
1310
+ },
1311
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
1312
+ },
1313
+ {
1314
+ zigbeeModel: ["lumi.switch.b1nacn02"],
1315
+ model: "QBKG23LM",
1316
+ vendor: "Aqara",
1317
+ description: "Smart wall switch D1 (with neutral, single rocker)",
1318
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_action_multistate],
1319
+ toZigbee: [toZigbee_1.default.on_off, lumi.toZigbee.lumi_power, lumi.toZigbee.lumi_switch_operation_mode_basic],
1320
+ endpoint: (device) => {
1321
+ return { system: 1 };
1322
+ },
1323
+ exposes: [
1324
+ e.switch(),
1325
+ e.power().withAccess(ea.STATE_GET),
1326
+ e.energy(),
1327
+ e.device_temperature().withAccess(ea.STATE),
1328
+ e.voltage(),
1329
+ e.action(["single", "release"]),
1330
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode"),
1331
+ ],
1332
+ configure: async (device, coordinatorEndpoint) => {
1333
+ device.type = "Router";
1334
+ device.powerSource = "Mains (single phase)";
1335
+ device.save();
1336
+ },
1337
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
1338
+ },
1339
+ {
1340
+ zigbeeModel: ["lumi.switch.b2nacn02"],
1341
+ model: "QBKG24LM",
1342
+ vendor: "Aqara",
1343
+ description: "Smart wall switch D1 (with neutral, double rocker)",
1344
+ fromZigbee: [
1345
+ fromZigbee_1.default.on_off,
1346
+ lumi.fromZigbee.lumi_power,
1347
+ lumi.fromZigbee.lumi_action_multistate,
1348
+ lumi.fromZigbee.lumi_operation_mode_basic,
1349
+ lumi.fromZigbee.lumi_specific,
1350
+ lumi.fromZigbee.lumi_basic,
1351
+ ],
1352
+ toZigbee: [toZigbee_1.default.on_off, lumi.toZigbee.lumi_power, lumi.toZigbee.lumi_switch_operation_mode_basic],
1353
+ meta: { multiEndpoint: true, multiEndpointSkip: ["power", "energy"] },
1354
+ endpoint: (device) => {
1355
+ return { left: 1, right: 2, system: 1 };
1356
+ },
1357
+ exposes: [
1358
+ e.switch().withEndpoint("left"),
1359
+ e.switch().withEndpoint("right"),
1360
+ e.energy(),
1361
+ e.power().withAccess(ea.STATE_GET),
1362
+ e.action(["hold_left", "single_left", "double_left", "single_right", "double_right", "single_both", "double_both"]),
1363
+ e
1364
+ .enum("operation_mode", ea.ALL, ["control_left_relay", "decoupled"])
1365
+ .withDescription("Decoupled mode for left button")
1366
+ .withEndpoint("left"),
1367
+ e
1368
+ .enum("operation_mode", ea.ALL, ["control_right_relay", "decoupled"])
1369
+ .withDescription("Decoupled mode for right button")
1370
+ .withEndpoint("right"),
1371
+ ],
1372
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
1373
+ },
1374
+ {
1375
+ zigbeeModel: ["lumi.switch.b1lacn01"],
1376
+ model: "QBKG17LM",
1377
+ vendor: "Aqara",
1378
+ description: "Smart wall switch T1 (no neutral, single rocker)",
1379
+ extend: [
1380
+ lumiZigbeeOTA(),
1381
+ lumiOnOff({ powerOutageMemory: "binary", operationMode: true }),
1382
+ lumiLedDisabledNight(),
1383
+ lumiFlipIndicatorLight(),
1384
+ lumiAction({ actionLookup: { single: 1, double: 2 } }),
1385
+ lumiPreventReset(),
1386
+ ],
1387
+ },
1388
+ {
1389
+ zigbeeModel: ["lumi.switch.b2lacn01"],
1390
+ model: "QBKG18LM",
1391
+ vendor: "Aqara",
1392
+ description: "Smart wall switch T1 (no neutral, double rocker)",
1393
+ extend: [
1394
+ lumiZigbeeOTA(),
1395
+ m.deviceEndpoints({ endpoints: { left: 1, right: 2 } }),
1396
+ lumiOnOff({ powerOutageMemory: "binary", operationMode: true, endpointNames: ["left", "right"] }),
1397
+ lumiLedDisabledNight(),
1398
+ lumiFlipIndicatorLight(),
1399
+ lumiAction({ actionLookup: { single: 1, double: 2 }, buttonLookup: { left: 41, right: 42, both: 51 } }),
1400
+ lumiPreventReset(),
1401
+ ],
1402
+ },
1403
+ {
1404
+ zigbeeModel: ["lumi.switch.b1nacn01"],
1405
+ model: "QBKG19LM",
1406
+ vendor: "Aqara",
1407
+ description: "Smart wall switch T1 (with neutral, single rocker)",
1408
+ extend: [
1409
+ lumiZigbeeOTA(),
1410
+ lumiOnOff({ powerOutageMemory: "binary", operationMode: true }),
1411
+ lumiLedDisabledNight(),
1412
+ lumiFlipIndicatorLight(),
1413
+ lumiAction({ actionLookup: { single: 1, double: 2 } }),
1414
+ lumiElectricityMeter(),
1415
+ lumiPower(),
1416
+ lumiPreventReset(),
1417
+ ],
1418
+ },
1419
+ {
1420
+ zigbeeModel: ["lumi.switch.b2nacn01"],
1421
+ model: "QBKG20LM",
1422
+ vendor: "Aqara",
1423
+ description: "Smart wall switch T1 (with neutral, double rocker)",
1424
+ extend: [
1425
+ m.forceDeviceType({ type: "Router" }),
1426
+ m.forcePowerSource({ powerSource: "Mains (single phase)" }),
1427
+ lumiZigbeeOTA(),
1428
+ m.deviceEndpoints({ endpoints: { left: 1, right: 2 } }),
1429
+ lumiOnOff({ powerOutageMemory: "binary", operationMode: true, endpointNames: ["left", "right"] }),
1430
+ lumiLedDisabledNight(),
1431
+ lumiFlipIndicatorLight(),
1432
+ lumiAction({ actionLookup: { single: 1, double: 2 }, buttonLookup: { left: 41, right: 42, both: 51 } }),
1433
+ lumiElectricityMeter(),
1434
+ lumiPower(),
1435
+ lumiPreventReset(),
1436
+ ],
1437
+ },
1438
+ {
1439
+ zigbeeModel: ["lumi.switch.b3l01"],
1440
+ model: "QBKG33LM",
1441
+ vendor: "Aqara",
1442
+ description: "Smart wall switch T1 (no neutral, triple rocker)",
1443
+ extend: [
1444
+ lumiZigbeeOTA(),
1445
+ m.deviceEndpoints({ endpoints: { left: 1, center: 2, right: 3 } }),
1446
+ lumiOnOff({ powerOutageMemory: "binary", operationMode: true, endpointNames: ["left", "center", "right"] }),
1447
+ lumiLedDisabledNight(),
1448
+ lumiFlipIndicatorLight(),
1449
+ lumiAction({
1450
+ actionLookup: { single: 1, double: 2 },
1451
+ buttonLookup: {
1452
+ left: 41,
1453
+ center: 42,
1454
+ right: 43,
1455
+ left_center: 51,
1456
+ left_right: 52,
1457
+ center_right: 53,
1458
+ all: 61,
1459
+ },
1460
+ }),
1461
+ lumiPreventReset(),
1462
+ ],
1463
+ },
1464
+ {
1465
+ zigbeeModel: ["lumi.switch.b3n01"],
1466
+ model: "QBKG34LM",
1467
+ vendor: "Aqara",
1468
+ description: "Smart wall switch T1 (with neutral, triple rocker)",
1469
+ extend: [
1470
+ lumiZigbeeOTA(),
1471
+ m.deviceEndpoints({ endpoints: { left: 1, center: 2, right: 3 } }),
1472
+ lumiOnOff({ powerOutageMemory: "binary", operationMode: true, endpointNames: ["left", "center", "right"] }),
1473
+ lumiLedDisabledNight(),
1474
+ lumiFlipIndicatorLight(),
1475
+ lumiAction({
1476
+ actionLookup: { single: 1, double: 2 },
1477
+ buttonLookup: {
1478
+ left: 41,
1479
+ center: 42,
1480
+ right: 43,
1481
+ left_center: 51,
1482
+ left_right: 52,
1483
+ center_right: 53,
1484
+ all: 61,
1485
+ },
1486
+ }),
1487
+ lumiElectricityMeter(),
1488
+ lumiPower(),
1489
+ lumiPreventReset(),
1490
+ ],
1491
+ },
1492
+ {
1493
+ zigbeeModel: ["lumi.sens", "lumi.sensor_ht"],
1494
+ model: "WSDCGQ01LM",
1495
+ vendor: "Xiaomi",
1496
+ whiteLabel: [
1497
+ { vendor: "Xiaomi", model: "YTC4042GL" },
1498
+ { vendor: "Xiaomi", model: "YTC4007CN" },
1499
+ { vendor: "Xiaomi", model: "YTC4018CN" },
1500
+ ],
1501
+ description: "Mi temperature and humidity sensor",
1502
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1503
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_temperature, fromZigbee_1.default.humidity],
1504
+ toZigbee: [],
1505
+ exposes: [e.battery(), e.temperature(), e.humidity(), e.battery_voltage()],
1506
+ extend: [m.quirkCheckinInterval("1_HOUR")],
1507
+ },
1508
+ {
1509
+ zigbeeModel: ["lumi.weather"],
1510
+ model: "WSDCGQ11LM",
1511
+ vendor: "Aqara",
1512
+ description: "Temperature and humidity sensor",
1513
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1514
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_temperature, fromZigbee_1.default.humidity, fromZigbee_1.default.pressure],
1515
+ toZigbee: [],
1516
+ exposes: [e.battery(), e.temperature(), e.humidity(), e.pressure(), e.battery_voltage()],
1517
+ configure: async (device, coordinatorEndpoint) => {
1518
+ device.powerSource = "Battery";
1519
+ device.save();
1520
+ },
1521
+ extend: [m.quirkCheckinInterval("1_HOUR")],
1522
+ },
1523
+ {
1524
+ zigbeeModel: ["lumi.sensor_ht.agl02"],
1525
+ model: "WSDCGQ12LM",
1526
+ vendor: "Aqara",
1527
+ description: "Temperature and humidity sensor T1",
1528
+ whiteLabel: [
1529
+ { vendor: "Aqara", model: "TH-S02D" },
1530
+ { vendor: "Yandex", model: "YNDX-00523" },
1531
+ ],
1532
+ fromZigbee: [lumi.fromZigbee.lumi_specific, fromZigbee_1.default.temperature, fromZigbee_1.default.humidity, lumi.fromZigbee.lumi_pressure, fromZigbee_1.default.battery],
1533
+ toZigbee: [],
1534
+ exposes: [e.temperature(), e.humidity(), e.pressure(), e.device_temperature(), e.battery(), e.battery_voltage(), e.power_outage_count(false)],
1535
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1536
+ configure: async (device, coordinatorEndpoint) => {
1537
+ const endpoint = device.getEndpoint(1);
1538
+ const binds = ["msTemperatureMeasurement", "msRelativeHumidity", "msPressureMeasurement"];
1539
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
1540
+ await endpoint.read("genPowerCfg", ["batteryVoltage"]);
1541
+ },
1542
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
1543
+ },
1544
+ {
1545
+ zigbeeModel: ["lumi.sensor_motion"],
1546
+ model: "RTCGQ01LM",
1547
+ vendor: "Xiaomi",
1548
+ whiteLabel: [
1549
+ { vendor: "Xiaomi", model: "YTC4041GL" },
1550
+ { vendor: "Xiaomi", model: "YTC4004CN" },
1551
+ { vendor: "Xiaomi", model: "YTC4016CN" },
1552
+ { vendor: "Xiaomi", model: "ZHTZ02LM" },
1553
+ ],
1554
+ description: "Mi motion sensor",
1555
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1556
+ fromZigbee: [lumi.fromZigbee.lumi_basic, fromZigbee_1.default.occupancy_with_timeout],
1557
+ toZigbee: [],
1558
+ exposes: [e.battery(), e.occupancy(), e.battery_voltage(), e.power_outage_count(false)],
1559
+ extend: [m.quirkCheckinInterval("1_HOUR")],
1560
+ },
1561
+ {
1562
+ zigbeeModel: ["lumi.sensor_motion.aq2"],
1563
+ model: "RTCGQ11LM",
1564
+ vendor: "Aqara",
1565
+ description: "Motion sensor",
1566
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1567
+ fromZigbee: [lumi.fromZigbee.lumi_basic, fromZigbee_1.default.occupancy_with_timeout, lumi.fromZigbee.lumi_illuminance],
1568
+ toZigbee: [],
1569
+ exposes: [e.battery(), e.occupancy(), e.device_temperature(), e.battery_voltage(), e.illuminance(), e.power_outage_count(false)],
1570
+ extend: [m.quirkCheckinInterval("1_HOUR")],
1571
+ },
1572
+ {
1573
+ zigbeeModel: ["lumi.motion.agl02"],
1574
+ model: "RTCGQ12LM",
1575
+ vendor: "Aqara",
1576
+ description: "Motion sensor T1",
1577
+ whiteLabel: [{ vendor: "Yandex", model: "YNDX-00522" }],
1578
+ fromZigbee: [lumi.fromZigbee.lumi_occupancy_illuminance, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.battery],
1579
+ toZigbee: [lumi.toZigbee.lumi_detection_interval],
1580
+ exposes: [
1581
+ e.occupancy(),
1582
+ e.illuminance(),
1583
+ e
1584
+ .numeric("detection_interval", ea.ALL)
1585
+ .withValueMin(2)
1586
+ .withValueMax(65535)
1587
+ .withUnit("s")
1588
+ .withDescription("Time interval for detecting actions"),
1589
+ e.device_temperature(),
1590
+ e.battery(),
1591
+ e.battery_voltage(),
1592
+ e.power_outage_count(false),
1593
+ ],
1594
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1595
+ configure: async (device, coordinatorEndpoint) => {
1596
+ const endpoint = device.getEndpoint(1);
1597
+ await endpoint.read("genPowerCfg", ["batteryVoltage"]);
1598
+ await endpoint.read("manuSpecificLumi", [0x0102], { manufacturerCode: manufacturerCode });
1599
+ },
1600
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
1601
+ },
1602
+ {
1603
+ zigbeeModel: ["lumi.motion.agl04"],
1604
+ model: "RTCGQ13LM",
1605
+ vendor: "Aqara",
1606
+ description: "High precision motion sensor",
1607
+ fromZigbee: [lumi.fromZigbee.lumi_occupancy, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.battery],
1608
+ toZigbee: [lumi.toZigbee.lumi_detection_interval, lumi.toZigbee.lumi_motion_sensitivity],
1609
+ exposes: [
1610
+ e.occupancy(),
1611
+ e.enum("motion_sensitivity", ea.ALL, ["low", "medium", "high"]),
1612
+ e
1613
+ .numeric("detection_interval", ea.ALL)
1614
+ .withValueMin(2)
1615
+ .withValueMax(65535)
1616
+ .withUnit("s")
1617
+ .withDescription("Time interval for detecting actions"),
1618
+ e.device_temperature(),
1619
+ e.battery(),
1620
+ e.battery_voltage(),
1621
+ e.power_outage_count(false),
1622
+ ],
1623
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1624
+ configure: async (device, coordinatorEndpoint) => {
1625
+ const endpoint = device.getEndpoint(1);
1626
+ await endpoint.read("genPowerCfg", ["batteryVoltage"]);
1627
+ await endpoint.read("manuSpecificLumi", [0x0102], { manufacturerCode: manufacturerCode });
1628
+ await endpoint.read("manuSpecificLumi", [0x010c], { manufacturerCode: manufacturerCode });
1629
+ },
1630
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
1631
+ },
1632
+ {
1633
+ zigbeeModel: ["lumi.motion.ac02"],
1634
+ model: "RTCGQ14LM",
1635
+ vendor: "Aqara",
1636
+ whiteLabel: [{ vendor: "Aqara", model: "MS-S02" }],
1637
+ description: "Motion sensor P1",
1638
+ fromZigbee: [lumi.fromZigbee.lumi_occupancy_illuminance, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.battery],
1639
+ toZigbee: [lumi.toZigbee.lumi_detection_interval, lumi.toZigbee.lumi_motion_sensitivity, lumi.toZigbee.lumi_trigger_indicator],
1640
+ exposes: [
1641
+ e.occupancy(),
1642
+ e.illuminance(),
1643
+ e
1644
+ .motion_sensitivity_select(["low", "medium", "high"])
1645
+ .withDescription("Select motion sensitivity to use. Press pairing button right before changing this otherwise it will fail."),
1646
+ e
1647
+ .detection_interval()
1648
+ .withDescription("Time interval between action detection. Press pairing button right before changing this otherwise it will fail."),
1649
+ e
1650
+ .trigger_indicator()
1651
+ .withDescription("When this option is enabled then " +
1652
+ "blue LED will blink once when motion is detected. " +
1653
+ "Press pairing button right before changing this otherwise it will fail."),
1654
+ e.device_temperature(),
1655
+ e.battery(),
1656
+ e.battery_voltage(),
1657
+ ],
1658
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1659
+ configure: async (device, coordinatorEndpoint) => {
1660
+ const endpoint = device.getEndpoint(1);
1661
+ await endpoint.read("genPowerCfg", ["batteryVoltage"]);
1662
+ await endpoint.read("manuSpecificLumi", [0x0102], { manufacturerCode: manufacturerCode });
1663
+ await endpoint.read("manuSpecificLumi", [0x010c], { manufacturerCode: manufacturerCode });
1664
+ await endpoint.read("manuSpecificLumi", [0x0152], { manufacturerCode: manufacturerCode });
1665
+ },
1666
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
1667
+ },
1668
+ {
1669
+ zigbeeModel: ["lumi.motion.acn001"],
1670
+ model: "RTCGQ15LM",
1671
+ vendor: "Aqara",
1672
+ description: "Motion sensor E1",
1673
+ fromZigbee: [lumi.fromZigbee.lumi_occupancy_illuminance, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.battery],
1674
+ toZigbee: [lumi.toZigbee.lumi_detection_interval],
1675
+ exposes: [
1676
+ e.occupancy(),
1677
+ e.illuminance(),
1678
+ e
1679
+ .numeric("detection_interval", ea.ALL)
1680
+ .withValueMin(2)
1681
+ .withValueMax(65535)
1682
+ .withUnit("s")
1683
+ .withDescription("Time interval for detecting actions"),
1684
+ e.device_temperature(),
1685
+ e.battery(),
1686
+ e.battery_voltage(),
1687
+ e.power_outage_count(false),
1688
+ ],
1689
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1690
+ configure: async (device, coordinatorEndpoint) => {
1691
+ const endpoint = device.getEndpoint(1);
1692
+ await endpoint.read("genPowerCfg", ["batteryVoltage"]);
1693
+ await endpoint.read("manuSpecificLumi", [0x0102], { manufacturerCode: manufacturerCode });
1694
+ },
1695
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
1696
+ },
1697
+ {
1698
+ zigbeeModel: ["lumi.motion.ac01"],
1699
+ model: "RTCZCGQ11LM",
1700
+ vendor: "Aqara",
1701
+ description: "Presence sensor FP1",
1702
+ fromZigbee: [lumi.fromZigbee.lumi_specific, lumi.fromZigbee.lumi_presence_region_events],
1703
+ toZigbee: [
1704
+ lumi.toZigbee.lumi_presence,
1705
+ lumi.toZigbee.lumi_monitoring_mode,
1706
+ lumi.toZigbee.lumi_approach_distance,
1707
+ lumi.toZigbee.lumi_motion_sensitivity,
1708
+ lumi.toZigbee.lumi_reset_nopresence_status,
1709
+ lumi.toZigbee.lumi_presence_region_upsert,
1710
+ lumi.toZigbee.lumi_presence_region_delete,
1711
+ ],
1712
+ exposes: [
1713
+ e.presence().withAccess(ea.STATE_GET),
1714
+ e.device_temperature(),
1715
+ e.power_outage_count(),
1716
+ e
1717
+ .enum("presence_event", ea.STATE, ["enter", "leave", "left_enter", "right_leave", "right_enter", "left_leave", "approach", "away"])
1718
+ .withDescription('Presence events: "enter", "leave", "left_enter", "right_leave", "right_enter", "left_leave", "approach", "away"'),
1719
+ e
1720
+ .enum("monitoring_mode", ea.ALL, ["undirected", "left_right"])
1721
+ .withDescription("Monitoring mode with or without considering right and left sides"),
1722
+ e.enum("approach_distance", ea.ALL, ["far", "medium", "near"]).withDescription("The distance at which the sensor detects approaching"),
1723
+ e
1724
+ .enum("motion_sensitivity", ea.ALL, ["low", "medium", "high"])
1725
+ .withDescription("Different sensitivities means different static human body recognition rate and response speed of occupied"),
1726
+ e.enum("reset_nopresence_status", ea.SET, [""]).withDescription("Reset the status of no presence"),
1727
+ e
1728
+ .enum("action", ea.STATE, ["region_*_enter", "region_*_leave", "region_*_occupied", "region_*_unoccupied"])
1729
+ .withDescription('Most recent region event. Event template is "region_<REGION_ID>_<EVENT_TYPE>", ' +
1730
+ 'where <REGION_ID> is region number (1-10), <EVENT_TYPE> is one of "enter", "leave", "occupied", "unoccupied". ' +
1731
+ '"enter" / "leave" events are usually triggered first, followed by "occupied" / "unoccupied" after a couple of seconds.'),
1732
+ e
1733
+ .composite("region_upsert", "region_upsert", ea.SET)
1734
+ .withDescription("Definition of a new region to be added (or replace existing one). " +
1735
+ "Creating or modifying a region requires you to define which zones of a 7x4 detection grid " +
1736
+ "should be active for that zone. Regions can overlap, meaning that a zone can be defined " +
1737
+ 'in more than one region (eg. "zone x = 1 & y = 1" can be added to region 1 & 2). ' +
1738
+ '"Zone x = 1 & y = 1" is the nearest zone on the right (from sensor\'s perspective, along the detection path).')
1739
+ .withFeature(e
1740
+ .numeric("region_id", ea.SET)
1741
+ .withValueMin(lumi.presence.constants.region_config_regionId_min)
1742
+ .withValueMax(lumi.presence.constants.region_config_regionId_max))
1743
+ .withFeature(e
1744
+ .list("zones", ea.SET, e
1745
+ .composite("Zone position", "zone_position", ea.SET)
1746
+ .withFeature(e
1747
+ .numeric("x", ea.SET)
1748
+ .withValueMin(lumi.presence.constants.region_config_zoneX_min)
1749
+ .withValueMax(lumi.presence.constants.region_config_zoneX_max))
1750
+ .withFeature(e
1751
+ .numeric("y", ea.SET)
1752
+ .withValueMin(lumi.presence.constants.region_config_zoneY_min)
1753
+ .withValueMax(lumi.presence.constants.region_config_zoneY_max)))
1754
+ .withDescription('list of dictionaries in the format {"x": 1, "y": 1}, {"x": 2, "y": 1}')),
1755
+ e
1756
+ .composite("region_delete", "region_delete", ea.SET)
1757
+ .withDescription("Region definition to be deleted from the device.")
1758
+ .withFeature(e
1759
+ .numeric("region_id", ea.SET)
1760
+ .withValueMin(lumi.presence.constants.region_config_regionId_min)
1761
+ .withValueMax(lumi.presence.constants.region_config_regionId_max)),
1762
+ ],
1763
+ configure: async (device, coordinatorEndpoint) => {
1764
+ device.softwareBuildID = `${device.applicationVersion}`;
1765
+ device.save();
1766
+ const endpoint = device.getEndpoint(1);
1767
+ await endpoint.read("manuSpecificLumi", [0x010c], { manufacturerCode: manufacturerCode });
1768
+ await endpoint.read("manuSpecificLumi", [0x0142], { manufacturerCode: manufacturerCode });
1769
+ await endpoint.read("manuSpecificLumi", [0x0144], { manufacturerCode: manufacturerCode });
1770
+ await endpoint.read("manuSpecificLumi", [0x0146], { manufacturerCode: manufacturerCode });
1771
+ },
1772
+ extend: [lumiZigbeeOTA()],
1773
+ },
1774
+ {
1775
+ zigbeeModel: ["lumi.sensor_occupy.agl1"],
1776
+ model: "FP1E",
1777
+ vendor: "Aqara",
1778
+ description: "Presence sensor",
1779
+ fromZigbee: [lumi.fromZigbee.lumi_specific],
1780
+ toZigbee: [lumi.toZigbee.lumi_motion_sensitivity],
1781
+ exposes: [
1782
+ e.device_temperature(),
1783
+ e.power_outage_count(),
1784
+ e.motion_sensitivity_select(["low", "medium", "high"]).withDescription("Select motion sensitivity to use."),
1785
+ ],
1786
+ configure: async (device, coordinatorEndpoint) => {
1787
+ // Retrieve motion sensitivity value
1788
+ const endpoint = device.getEndpoint(1);
1789
+ await endpoint.read("manuSpecificLumi", [0x010c], { manufacturerCode: manufacturerCode });
1790
+ },
1791
+ extend: [
1792
+ lumiZigbeeOTA(),
1793
+ lumi.lumiModernExtend.fp1ePresence(),
1794
+ lumi.lumiModernExtend.fp1eMovement(),
1795
+ lumi.lumiModernExtend.fp1eTargetDistance(),
1796
+ lumi.lumiModernExtend.fp1eDetectionRange(),
1797
+ lumi.lumiModernExtend.fp1eSpatialLearning(),
1798
+ lumi.lumiModernExtend.fp1eRestartDevice(),
1799
+ m.identify(),
1800
+ ],
1801
+ },
1802
+ {
1803
+ zigbeeModel: ["lumi.sensor_magnet"],
1804
+ model: "MCCGQ01LM",
1805
+ vendor: "Xiaomi",
1806
+ whiteLabel: [
1807
+ { vendor: "Xiaomi", model: "YTC4039GL" },
1808
+ { vendor: "Xiaomi", model: "YTC4005CN" },
1809
+ { vendor: "Xiaomi", model: "YTC4015CN" },
1810
+ { vendor: "Xiaomi", model: "ZHTZ02LM" },
1811
+ ],
1812
+ description: "Mi door and window sensor",
1813
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1814
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_contact],
1815
+ toZigbee: [],
1816
+ exposes: [e.battery(), e.contact(), e.battery_voltage(), e.power_outage_count(false)],
1817
+ extend: [m.quirkCheckinInterval("1_HOUR")],
1818
+ },
1819
+ {
1820
+ zigbeeModel: ["lumi.sensor_magnet.aq2"],
1821
+ model: "MCCGQ11LM",
1822
+ vendor: "Aqara",
1823
+ description: "Door and window sensor",
1824
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1825
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_contact],
1826
+ toZigbee: [],
1827
+ exposes: [e.battery(), e.contact(), e.device_temperature(), e.battery_voltage(), e.power_outage_count(false), e.trigger_count()],
1828
+ extend: [m.quirkCheckinInterval("1_HOUR")],
1829
+ configure: async (device) => {
1830
+ device.powerSource = "Battery";
1831
+ device.save();
1832
+ },
1833
+ },
1834
+ {
1835
+ zigbeeModel: ["lumi.sensor_wleak.aq1"],
1836
+ model: "SJCGQ11LM",
1837
+ vendor: "Aqara",
1838
+ description: "Water leak sensor",
1839
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1840
+ fromZigbee: [lumi.fromZigbee.lumi_basic, fromZigbee_1.default.ias_water_leak_alarm_1],
1841
+ toZigbee: [],
1842
+ exposes: [
1843
+ e.battery(),
1844
+ e.water_leak(),
1845
+ e.battery_low(),
1846
+ e.battery_voltage(),
1847
+ e.device_temperature(),
1848
+ e.power_outage_count(false),
1849
+ e.trigger_count(),
1850
+ ],
1851
+ extend: [m.quirkCheckinInterval("1_HOUR")],
1852
+ },
1853
+ {
1854
+ zigbeeModel: ["lumi.flood.agl02"],
1855
+ model: "SJCGQ12LM",
1856
+ vendor: "Aqara",
1857
+ description: "Water leak sensor T1",
1858
+ whiteLabel: [
1859
+ { vendor: "Aqara", model: "WL-S02D" },
1860
+ { vendor: "Yandex", model: "YNDX-00521" },
1861
+ ],
1862
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1863
+ fromZigbee: [lumi.fromZigbee.lumi_basic, fromZigbee_1.default.ias_water_leak_alarm_1, lumi.fromZigbee.lumi_specific],
1864
+ toZigbee: [],
1865
+ exposes: [e.battery(), e.water_leak(), e.battery_low(), e.tamper(), e.battery_voltage()],
1866
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
1867
+ },
1868
+ {
1869
+ zigbeeModel: ["lumi.sensor_cube", "lumi.sensor_cube.aqgl01"],
1870
+ model: "MFKZQ01LM",
1871
+ vendor: "Aqara",
1872
+ description: "Cube",
1873
+ whiteLabel: [{ vendor: "Xiaomi", model: "MFKZQ01LM" }],
1874
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1875
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_action_analog],
1876
+ exposes: [
1877
+ e.battery(),
1878
+ e.battery_voltage(),
1879
+ e.angle("action_angle"),
1880
+ e.device_temperature(),
1881
+ e.power_outage_count(false),
1882
+ e.cube_side("action_from_side"),
1883
+ e.cube_side("action_side"),
1884
+ e.cube_side("action_to_side"),
1885
+ e.cube_side("side"),
1886
+ e.action(["shake", "throw", "wakeup", "fall", "tap", "slide", "flip180", "flip90", "rotate_left", "rotate_right"]),
1887
+ ],
1888
+ toZigbee: [],
1889
+ extend: [m.quirkCheckinInterval("1_HOUR")],
1890
+ },
1891
+ {
1892
+ zigbeeModel: ["lumi.plug"],
1893
+ model: "ZNCZ02LM",
1894
+ description: "Mi smart plug",
1895
+ vendor: "Xiaomi",
1896
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_basic, fromZigbee_1.default.ignore_occupancy_report, fromZigbee_1.default.ignore_illuminance_report],
1897
+ toZigbee: [toZigbee_1.default.on_off, lumi.toZigbee.lumi_switch_power_outage_memory, lumi.toZigbee.lumi_power],
1898
+ exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.device_temperature(), e.power_outage_memory()],
1899
+ extend: [lumiZigbeeOTA()],
1900
+ },
1901
+ {
1902
+ zigbeeModel: ["lumi.plug.mitw01"],
1903
+ model: "ZNCZ03LM",
1904
+ description: "Mi smart plug TW",
1905
+ vendor: "Xiaomi",
1906
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_basic, fromZigbee_1.default.ignore_occupancy_report, fromZigbee_1.default.ignore_illuminance_report],
1907
+ toZigbee: [toZigbee_1.default.on_off, lumi.toZigbee.lumi_power],
1908
+ exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.device_temperature().withAccess(ea.STATE), e.voltage()],
1909
+ },
1910
+ {
1911
+ zigbeeModel: ["lumi.plug.mmeu01"],
1912
+ model: "ZNCZ04LM",
1913
+ description: "Mi smart plug EU",
1914
+ vendor: "Xiaomi",
1915
+ fromZigbee: [
1916
+ fromZigbee_1.default.on_off,
1917
+ lumi.fromZigbee.lumi_power,
1918
+ lumi.fromZigbee.lumi_specific,
1919
+ fromZigbee_1.default.ignore_occupancy_report,
1920
+ fromZigbee_1.default.ignore_illuminance_report,
1921
+ fromZigbee_1.default.ignore_time_read,
1922
+ ],
1923
+ toZigbee: [
1924
+ toZigbee_1.default.on_off,
1925
+ lumi.toZigbee.lumi_power,
1926
+ lumi.toZigbee.lumi_switch_power_outage_memory,
1927
+ lumi.toZigbee.lumi_auto_off,
1928
+ lumi.toZigbee.lumi_led_disabled_night,
1929
+ lumi.toZigbee.lumi_overload_protection,
1930
+ ],
1931
+ exposes: [
1932
+ e.switch(),
1933
+ e.power().withAccess(ea.STATE_GET),
1934
+ e.energy(),
1935
+ e.device_temperature().withAccess(ea.STATE),
1936
+ e.voltage(),
1937
+ e.current(),
1938
+ e.consumer_connected(),
1939
+ e.led_disabled_night(),
1940
+ e.power_outage_memory(),
1941
+ e.auto_off(20),
1942
+ e.overload_protection(100, 2300),
1943
+ ],
1944
+ extend: [lumiZigbeeOTA()],
1945
+ },
1946
+ {
1947
+ zigbeeModel: ["lumi.plug.maus01"],
1948
+ model: "ZNCZ12LM",
1949
+ description: "Smart plug US",
1950
+ vendor: "Aqara",
1951
+ fromZigbee: [
1952
+ fromZigbee_1.default.on_off,
1953
+ lumi.fromZigbee.lumi_power,
1954
+ lumi.fromZigbee.lumi_specific,
1955
+ lumi.fromZigbee.lumi_basic,
1956
+ fromZigbee_1.default.ignore_occupancy_report,
1957
+ fromZigbee_1.default.ignore_illuminance_report,
1958
+ ],
1959
+ toZigbee: [
1960
+ toZigbee_1.default.on_off,
1961
+ lumi.toZigbee.lumi_power,
1962
+ lumi.toZigbee.lumi_switch_power_outage_memory,
1963
+ lumi.toZigbee.lumi_auto_off,
1964
+ lumi.toZigbee.lumi_led_disabled_night,
1965
+ lumi.toZigbee.lumi_overload_protection,
1966
+ ],
1967
+ exposes: [
1968
+ e.switch(),
1969
+ e.power().withAccess(ea.STATE_GET),
1970
+ e.energy(),
1971
+ e.device_temperature().withAccess(ea.STATE),
1972
+ e.voltage(),
1973
+ e.current(),
1974
+ e.consumer_connected(),
1975
+ e.led_disabled_night(),
1976
+ e.power_outage_memory(),
1977
+ e.auto_off(20),
1978
+ e.overload_protection(100, 2300),
1979
+ ],
1980
+ extend: [lumiZigbeeOTA()],
1981
+ },
1982
+ {
1983
+ zigbeeModel: ["lumi.plug.maeu01"],
1984
+ model: "SP-EUC01",
1985
+ description: "Smart plug EU",
1986
+ vendor: "Aqara",
1987
+ extend: [m.forceDeviceType({ type: "Router" }), lumiZigbeeOTA()],
1988
+ fromZigbee: [
1989
+ fromZigbee_1.default.on_off,
1990
+ lumi.fromZigbee.lumi_basic,
1991
+ fromZigbee_1.default.electrical_measurement,
1992
+ fromZigbee_1.default.metering,
1993
+ lumi.fromZigbee.lumi_specific,
1994
+ lumi.fromZigbee.lumi_power,
1995
+ fromZigbee_1.default.device_temperature,
1996
+ ],
1997
+ toZigbee: [
1998
+ toZigbee_1.default.on_off,
1999
+ lumi.toZigbee.lumi_switch_power_outage_memory,
2000
+ lumi.toZigbee.lumi_led_disabled_night,
2001
+ lumi.toZigbee.lumi_overload_protection,
2002
+ lumi.toZigbee.lumi_auto_off,
2003
+ lumi.toZigbee.lumi_socket_button_lock,
2004
+ ],
2005
+ configure: async (device, coordinatorEndpoint) => {
2006
+ const endpoint = device.getEndpoint(1);
2007
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff"]);
2008
+ await reporting.onOff(endpoint);
2009
+ // Not all plugs support electricity measurements:
2010
+ // - https://github.com/Koenkk/zigbee2mqtt/issues/6861
2011
+ // - https://github.com/Koenkk/zigbee-herdsman-converters/issues/1050#issuecomment-673111969
2012
+ // Voltage and current are not supported:
2013
+ // - https://github.com/Koenkk/zigbee-herdsman-converters/issues/1050
2014
+ try {
2015
+ await reporting.bind(endpoint, coordinatorEndpoint, ["haElectricalMeasurement"]);
2016
+ await endpoint.read("haElectricalMeasurement", ["acPowerMultiplier", "acPowerDivisor"]);
2017
+ }
2018
+ catch (e) {
2019
+ logger_1.logger.warning(`SP-EUC01 failed to setup electricity measurements (${e.message})`, NS);
2020
+ logger_1.logger.debug(e.stack, NS);
2021
+ }
2022
+ try {
2023
+ await reporting.bind(endpoint, coordinatorEndpoint, ["seMetering"]);
2024
+ await reporting.readMeteringMultiplierDivisor(endpoint);
2025
+ await reporting.currentSummDelivered(endpoint, { change: 0 });
2026
+ }
2027
+ catch (e) {
2028
+ logger_1.logger.warning(`SP-EUC01 failed to setup metering (${e.message})`, NS);
2029
+ logger_1.logger.debug(e.stack, NS);
2030
+ }
2031
+ },
2032
+ onEvent: async (type, data, device) => {
2033
+ const switchEndpoint = device.getEndpoint(1);
2034
+ if (switchEndpoint == null) {
2035
+ return;
2036
+ }
2037
+ // This device doesn't support temperature reporting.
2038
+ // Therefore we read the temperature every 30 min.
2039
+ if (type === "stop") {
2040
+ clearInterval(globalStore.getValue(device, "interval"));
2041
+ globalStore.clearValue(device, "interval");
2042
+ }
2043
+ else if (!globalStore.hasValue(device, "interval")) {
2044
+ const interval = setInterval(async () => {
2045
+ try {
2046
+ await switchEndpoint.read("genDeviceTempCfg", ["currentTemperature"]);
2047
+ }
2048
+ catch {
2049
+ // Do nothing
2050
+ }
2051
+ }, 1800000);
2052
+ globalStore.putValue(device, "interval", interval);
2053
+ }
2054
+ },
2055
+ exposes: [
2056
+ e.switch(),
2057
+ e.power(),
2058
+ e.energy(),
2059
+ e.power_outage_memory(),
2060
+ e.voltage(),
2061
+ e.current(),
2062
+ e.device_temperature().withDescription("Device temperature (polled every 30 min)"),
2063
+ e.consumer_connected(),
2064
+ e.led_disabled_night(),
2065
+ e.overload_protection(100, 2300),
2066
+ e.auto_off(20),
2067
+ e.button_lock(),
2068
+ ],
2069
+ },
2070
+ {
2071
+ zigbeeModel: ["lumi.plug.aq1"],
2072
+ model: "ZNCZ11LM",
2073
+ vendor: "Aqara",
2074
+ description: "Smart plug",
2075
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, fromZigbee_1.default.ignore_occupancy_report, lumi.fromZigbee.lumi_basic],
2076
+ toZigbee: [
2077
+ toZigbee_1.default.on_off,
2078
+ lumi.toZigbee.lumi_power,
2079
+ lumi.toZigbee.lumi_led_disabled_night,
2080
+ lumi.toZigbee.lumi_switch_power_outage_memory,
2081
+ lumi.toZigbee.lumi_auto_off,
2082
+ ],
2083
+ exposes: [
2084
+ e.switch(),
2085
+ e.power().withAccess(ea.STATE_GET),
2086
+ e.energy(),
2087
+ e.device_temperature(),
2088
+ e.voltage(),
2089
+ e.power_outage_memory(),
2090
+ e.led_disabled_night(),
2091
+ e.auto_off(30),
2092
+ ],
2093
+ extend: [m.customTimeResponse("2000_LOCAL")],
2094
+ },
2095
+ {
2096
+ zigbeeModel: ["lumi.ctrl_86plug", "lumi.ctrl_86plug.aq1"],
2097
+ model: "QBCZ11LM",
2098
+ description: "Smart wall outlet",
2099
+ vendor: "Aqara",
2100
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_basic],
2101
+ toZigbee: [toZigbee_1.default.on_off, lumi.toZigbee.lumi_switch_power_outage_memory, lumi.toZigbee.lumi_power],
2102
+ exposes: [
2103
+ e.switch(),
2104
+ e.power().withAccess(ea.STATE_GET),
2105
+ e.energy(),
2106
+ e.device_temperature().withAccess(ea.STATE),
2107
+ e.voltage(),
2108
+ e.power_outage_memory(),
2109
+ ],
2110
+ extend: [lumiZigbeeOTA()],
2111
+ },
2112
+ {
2113
+ zigbeeModel: ["lumi.sensor_smoke"],
2114
+ model: "JTYJ-GD-01LM/BW",
2115
+ description: "Mijia Honeywell smoke detector",
2116
+ vendor: "Xiaomi",
2117
+ whiteLabel: [{ vendor: "Xiaomi", model: "YTC4020RT" }],
2118
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
2119
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_smoke],
2120
+ toZigbee: [lumi.toZigbee.lumi_sensitivity, lumi.toZigbee.lumi_selftest],
2121
+ exposes: [
2122
+ e.smoke(),
2123
+ e.battery_low(),
2124
+ e.tamper(),
2125
+ e.battery(),
2126
+ e.enum("sensitivity", ea.STATE_SET, ["low", "medium", "high"]),
2127
+ e.numeric("smoke_density", ea.STATE),
2128
+ e.enum("selftest", ea.SET, [""]),
2129
+ e.battery_voltage(),
2130
+ e.binary("test", ea.STATE, true, false).withDescription("Test mode activated"),
2131
+ e.device_temperature(),
2132
+ e.power_outage_count(false),
2133
+ ],
2134
+ extend: [m.quirkCheckinInterval("1_HOUR")],
2135
+ },
2136
+ {
2137
+ zigbeeModel: ["lumi.sensor_natgas"],
2138
+ model: "JTQJ-BF-01LM/BW",
2139
+ vendor: "Xiaomi",
2140
+ whiteLabel: [{ vendor: "Xiaomi", model: "YTC4019RT" }],
2141
+ description: "Mijia Honeywell gas leak detector",
2142
+ fromZigbee: [fromZigbee_1.default.ias_gas_alarm_1, lumi.fromZigbee.lumi_gas_sensitivity, lumi.fromZigbee.lumi_gas_density],
2143
+ toZigbee: [lumi.toZigbee.lumi_sensitivity, lumi.toZigbee.lumi_selftest],
2144
+ exposes: [
2145
+ e.gas(),
2146
+ e.tamper(),
2147
+ e.enum("sensitivity", ea.STATE_SET, ["low", "medium", "high"]),
2148
+ e.numeric("gas_density", ea.STATE),
2149
+ e.enum("selftest", ea.SET, [""]),
2150
+ ],
2151
+ configure: async (device, coordinatorEndpoint) => {
2152
+ device.powerSource = "Mains (single phase)";
2153
+ device.type = "Router";
2154
+ device.save();
2155
+ },
2156
+ },
2157
+ {
2158
+ zigbeeModel: ["lumi.sensor_gas.acn02"],
2159
+ model: "JT-BZ-01AQ/A",
2160
+ vendor: "Aqara",
2161
+ description: "Smart natural gas detector",
2162
+ whiteLabel: [{ vendor: "Aqara", model: "JT-BZ-03AQ/A" }],
2163
+ fromZigbee: [lumi.fromZigbee.lumi_specific],
2164
+ toZigbee: [
2165
+ lumi.toZigbee.lumi_alarm,
2166
+ lumi.toZigbee.lumi_density,
2167
+ lumi.toZigbee.lumi_gas_sensitivity,
2168
+ lumi.toZigbee.lumi_selftest,
2169
+ lumi.toZigbee.lumi_buzzer,
2170
+ lumi.toZigbee.lumi_buzzer_manual,
2171
+ lumi.toZigbee.lumi_linkage_alarm,
2172
+ lumi.toZigbee.lumi_state,
2173
+ lumi.toZigbee.lumi_power_outage_count,
2174
+ ],
2175
+ exposes: [
2176
+ e.gas().withAccess(ea.STATE_GET),
2177
+ e.numeric("gas_density", ea.STATE_GET).withUnit("%LEL").withDescription("Value of gas concentration"),
2178
+ e
2179
+ .enum("gas_sensitivity", ea.ALL, ["10%LEL", "15%LEL"])
2180
+ .withDescription('Gas concentration value at which an alarm is triggered ("10%LEL" is more sensitive than "15%LEL")'),
2181
+ e
2182
+ .enum("selftest", ea.SET, ["selftest"])
2183
+ .withDescription("Starts the self-test process (checking the indicator light and buzzer work properly)"),
2184
+ e.binary("test", ea.STATE, true, false).withDescription("Self-test in progress"),
2185
+ e
2186
+ .enum("buzzer", ea.SET, ["mute", "alarm"])
2187
+ .withDescription("The buzzer can be muted and alarmed manually. " +
2188
+ 'During a gas alarm, the buzzer can be manually muted for 10 minutes ("mute"), but cannot be unmuted manually ' +
2189
+ "before this timeout expires. The buzzer cannot be pre-muted, as this function only works during a gas alarm. " +
2190
+ 'During the absence of a gas alarm, the buzzer can be manually alarmed ("alarm") and disalarmed ("mute"), ' +
2191
+ 'but for this "linkage_alarm" option must be enabled'),
2192
+ e.binary("buzzer_manual_alarm", ea.STATE_GET, true, false).withDescription("Buzzer alarmed (manually)"),
2193
+ e.binary("buzzer_manual_mute", ea.STATE_GET, true, false).withDescription("Buzzer muted (manually)"),
2194
+ e
2195
+ .binary("linkage_alarm", ea.ALL, true, false)
2196
+ .withDescription("When this option is enabled and a gas " +
2197
+ 'alarm has occurred, then "linkage_alarm_state"=true, and when the gas alarm has ended or the buzzer has ' +
2198
+ 'been manually muted, then "linkage_alarm_state"=false'),
2199
+ e.binary("linkage_alarm_state", ea.STATE, true, false).withDescription('"linkage_alarm" is triggered'),
2200
+ e
2201
+ .binary("state", ea.STATE_GET, "preparation", "work")
2202
+ .withDescription('"Preparation" or "work" ' +
2203
+ '(measurement of the gas concentration value and triggering of an alarm are only performed in the "work" state)'),
2204
+ e.power_outage_count().withAccess(ea.STATE_GET),
2205
+ ],
2206
+ configure: async (device, coordinatorEndpoint) => {
2207
+ const endpoint = device.getEndpoint(1);
2208
+ await endpoint.write("manuSpecificLumi", { 331: { value: 1, type: 0x20 } }, { manufacturerCode: manufacturerCode });
2209
+ await endpoint.read("manuSpecificLumi", [0x013a], { manufacturerCode: manufacturerCode });
2210
+ await endpoint.read("manuSpecificLumi", [0x013b], { manufacturerCode: manufacturerCode });
2211
+ await endpoint.read("manuSpecificLumi", [0x013d], { manufacturerCode: manufacturerCode });
2212
+ await endpoint.read("manuSpecificLumi", [0x0126], { manufacturerCode: manufacturerCode });
2213
+ await endpoint.read("manuSpecificLumi", [0x0139], { manufacturerCode: manufacturerCode });
2214
+ await endpoint.read("manuSpecificLumi", [0x010c], { manufacturerCode: manufacturerCode });
2215
+ await endpoint.read("manuSpecificLumi", [0x014b], { manufacturerCode: manufacturerCode });
2216
+ await endpoint.read("manuSpecificLumi", [0x0002], { manufacturerCode: manufacturerCode });
2217
+ },
2218
+ extend: [lumiZigbeeOTA()],
2219
+ },
2220
+ {
2221
+ zigbeeModel: ["lumi.sensor_smoke.acn03"],
2222
+ model: "JY-GZ-01AQ",
2223
+ vendor: "Aqara",
2224
+ description: "Smart smoke detector",
2225
+ whiteLabel: [{ vendor: "Aqara", model: "JY-GZ-03AQ" }],
2226
+ fromZigbee: [lumi.fromZigbee.lumi_specific, fromZigbee_1.default.battery],
2227
+ toZigbee: [
2228
+ lumi.toZigbee.lumi_alarm,
2229
+ lumi.toZigbee.lumi_density,
2230
+ lumi.toZigbee.lumi_selftest,
2231
+ lumi.toZigbee.lumi_buzzer,
2232
+ lumi.toZigbee.lumi_buzzer_manual,
2233
+ lumi.toZigbee.lumi_heartbeat_indicator,
2234
+ lumi.toZigbee.lumi_linkage_alarm,
2235
+ ],
2236
+ exposes: [
2237
+ e.smoke().withAccess(ea.STATE_GET),
2238
+ e.numeric("smoke_density", ea.STATE_GET).withDescription("Value of smoke concentration"),
2239
+ e.numeric("smoke_density_dbm", ea.STATE_GET).withUnit("dB/m").withDescription("Value of smoke concentration in dB/m"),
2240
+ e
2241
+ .enum("selftest", ea.SET, ["selftest"])
2242
+ .withDescription("Starts the self-test process (checking the indicator light and buzzer work properly)"),
2243
+ e.binary("test", ea.STATE, true, false).withDescription("Self-test in progress"),
2244
+ e
2245
+ .enum("buzzer", ea.SET, ["mute", "alarm"])
2246
+ .withDescription("The buzzer can be muted and alarmed manually. " +
2247
+ 'During a smoke alarm, the buzzer can be manually muted for 80 seconds ("mute") and unmuted ("alarm"). ' +
2248
+ "The buzzer cannot be pre-muted, as this function only works during a smoke alarm. " +
2249
+ 'During the absence of a smoke alarm, the buzzer can be manually alarmed ("alarm") and disalarmed ("mute"), ' +
2250
+ 'but for this "linkage_alarm" option must be enabled'),
2251
+ e.binary("buzzer_manual_alarm", ea.STATE_GET, true, false).withDescription("Buzzer alarmed (manually)"),
2252
+ e.binary("buzzer_manual_mute", ea.STATE_GET, true, false).withDescription("Buzzer muted (manually)"),
2253
+ e
2254
+ .binary("heartbeat_indicator", ea.ALL, true, false)
2255
+ .withDescription("When this option is enabled then in the normal monitoring state, the green indicator light flashes every 60 seconds"),
2256
+ e
2257
+ .binary("linkage_alarm", ea.ALL, true, false)
2258
+ .withDescription("When this option is enabled and a smoke " +
2259
+ 'alarm has occurred, then "linkage_alarm_state"=true, and when the smoke alarm has ended or the buzzer has ' +
2260
+ 'been manually muted, then "linkage_alarm_state"=false'),
2261
+ e.binary("linkage_alarm_state", ea.STATE, true, false).withDescription('"linkage_alarm" is triggered'),
2262
+ e.battery(),
2263
+ e.battery_voltage(),
2264
+ e.power_outage_count(false),
2265
+ ],
2266
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
2267
+ configure: async (device, coordinatorEndpoint) => {
2268
+ const endpoint = device.getEndpoint(1);
2269
+ await endpoint.write("manuSpecificLumi", { 331: { value: 1, type: 0x20 } }, { manufacturerCode: manufacturerCode });
2270
+ await endpoint.read("genPowerCfg", ["batteryVoltage"]);
2271
+ await endpoint.read("manuSpecificLumi", [0x013a], { manufacturerCode: manufacturerCode });
2272
+ await endpoint.read("manuSpecificLumi", [0x013b], { manufacturerCode: manufacturerCode });
2273
+ await endpoint.read("manuSpecificLumi", [0x013c], { manufacturerCode: manufacturerCode });
2274
+ await endpoint.read("manuSpecificLumi", [0x013d], { manufacturerCode: manufacturerCode });
2275
+ await endpoint.read("manuSpecificLumi", [0x0126], { manufacturerCode: manufacturerCode });
2276
+ await endpoint.read("manuSpecificLumi", [0x014b], { manufacturerCode: manufacturerCode });
2277
+ },
2278
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
2279
+ },
2280
+ {
2281
+ zigbeeModel: ["lumi.lock.v1"],
2282
+ model: "A6121",
2283
+ vendor: "Xiaomi",
2284
+ description: "Vima Smart Lock",
2285
+ fromZigbee: [lumi.fromZigbee.lumi_lock_report],
2286
+ exposes: [e.text("inserted", ea.STATE)],
2287
+ toZigbee: [],
2288
+ },
2289
+ {
2290
+ zigbeeModel: ["lumi.vibration.aq1"],
2291
+ model: "DJT11LM",
2292
+ vendor: "Aqara",
2293
+ description: "Vibration sensor",
2294
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
2295
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_vibration_analog],
2296
+ toZigbee: [lumi.toZigbee.lumi_vibration_sensitivity],
2297
+ exposes: [
2298
+ e.battery(),
2299
+ e.device_temperature(),
2300
+ e.vibration(),
2301
+ e.action(["vibration", "tilt", "drop"]),
2302
+ e.numeric("strength", ea.STATE),
2303
+ e.numeric("sensitivity", ea.STATE_SET).withDescription("Sensitivity, 1 = highest, 21 = lowest").withValueMin(1).withValueMax(21),
2304
+ e.angle_axis("angle_x"),
2305
+ e.angle_axis("angle_y"),
2306
+ e.angle_axis("angle_z"),
2307
+ e.x_axis(),
2308
+ e.y_axis(),
2309
+ e.z_axis(),
2310
+ e.battery_voltage(),
2311
+ e.power_outage_count(false),
2312
+ ],
2313
+ extend: [m.quirkCheckinInterval("1_HOUR")],
2314
+ },
2315
+ {
2316
+ zigbeeModel: ["lumi.vibration.agl01"],
2317
+ model: "DJT12LM",
2318
+ vendor: "Aqara",
2319
+ description: "Vibration sensor T1",
2320
+ extend: [
2321
+ lumiVibration(),
2322
+ // lumiMiscellaneous(),
2323
+ lumiReportInterval(),
2324
+ lumiSensitivityAdjustment(),
2325
+ lumiBattery({ voltageToPercentage: { min: 2850, max: 3000 } }),
2326
+ lumiZigbeeOTA(),
2327
+ m.quirkCheckinInterval("1_HOUR"),
2328
+ ],
2329
+ },
2330
+ {
2331
+ zigbeeModel: ["lumi.curtain"],
2332
+ model: "ZNCLDJ11LM",
2333
+ description: "Curtain controller",
2334
+ vendor: "Aqara",
2335
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_curtain_position, lumi.fromZigbee.lumi_curtain_position_tilt],
2336
+ toZigbee: [lumi.toZigbee.lumi_curtain_position_state, lumi.toZigbee.lumi_curtain_options],
2337
+ onEvent: async (type, data, device) => {
2338
+ if (type === "message" &&
2339
+ data.type === "attributeReport" &&
2340
+ data.cluster === "genBasic" &&
2341
+ data.data["1028"] !== undefined &&
2342
+ data.data["1028"] === 0) {
2343
+ // Try to read the position after the motor stops, the device occasionally report wrong data right after stopping
2344
+ // Might need to add delay, seems to be working without one but needs more tests.
2345
+ await device.getEndpoint(1).read("genAnalogOutput", ["presentValue"]);
2346
+ }
2347
+ },
2348
+ exposes: [
2349
+ e.cover_position().setAccess("state", ea.ALL),
2350
+ e.binary("running", ea.STATE, true, false).withDescription("Whether the motor is moving or not"),
2351
+ e.enum("motor_state", ea.STATE, ["stopped", "opening", "closing"]).withDescription("Motor state"),
2352
+ ],
2353
+ extend: [lumiZigbeeOTA()],
2354
+ },
2355
+ {
2356
+ zigbeeModel: ["lumi.curtain.aq2"],
2357
+ model: "ZNGZDJ11LM",
2358
+ description: "Roller shade controller",
2359
+ vendor: "Aqara",
2360
+ whiteLabel: [{ vendor: "Aqara", model: "SRSC-M01" }],
2361
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_curtain_position, lumi.fromZigbee.lumi_curtain_position_tilt],
2362
+ toZigbee: [lumi.toZigbee.lumi_curtain_position_state, lumi.toZigbee.lumi_curtain_options],
2363
+ exposes: [
2364
+ e.cover_position().setAccess("state", ea.ALL),
2365
+ e.binary("running", ea.STATE, true, false).withDescription("Whether the motor is moving or not"),
2366
+ ],
2367
+ extend: [lumiZigbeeOTA()],
2368
+ },
2369
+ {
2370
+ zigbeeModel: ["lumi.curtain.vagl02"],
2371
+ model: "ZNGZDJ16LM",
2372
+ description: "Roller shade controller T1C",
2373
+ vendor: "Aqara",
2374
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_curtain_position, lumi.fromZigbee.lumi_curtain_position_tilt],
2375
+ toZigbee: [lumi.toZigbee.lumi_curtain_position_state, lumi.toZigbee.lumi_curtain_options],
2376
+ exposes: [
2377
+ e.cover_position().setAccess("state", ea.ALL),
2378
+ e.binary("running", ea.STATE, true, false).withDescription("Whether the motor is moving or not"),
2379
+ ],
2380
+ extend: [lumiZigbeeOTA()],
2381
+ },
2382
+ {
2383
+ zigbeeModel: ["lumi.curtain.hagl04"],
2384
+ model: "ZNCLDJ12LM",
2385
+ vendor: "Aqara",
2386
+ description: "Curtain controller B1",
2387
+ fromZigbee: [
2388
+ lumi.fromZigbee.lumi_basic,
2389
+ lumi.fromZigbee.lumi_curtain_position,
2390
+ lumi.fromZigbee.lumi_curtain_position_tilt,
2391
+ lumi.fromZigbee.lumi_curtain_status,
2392
+ ],
2393
+ toZigbee: [lumi.toZigbee.lumi_curtain_position_state, lumi.toZigbee.lumi_curtain_options],
2394
+ onEvent: async (type, data, device) => {
2395
+ // The position (genAnalogOutput.presentValue) reported via an attribute contains an invalid value
2396
+ // however when reading it will provide the correct value.
2397
+ if (data.type === "attributeReport" && data.cluster === "genAnalogOutput") {
2398
+ await device.endpoints[0].read("genAnalogOutput", ["presentValue"]);
2399
+ }
2400
+ },
2401
+ exposes: [
2402
+ e.cover_position().setAccess("state", ea.ALL),
2403
+ e.battery(),
2404
+ e.binary("running", ea.STATE, true, false).withDescription("Whether the motor is moving or not"),
2405
+ e.enum("motor_state", ea.STATE, ["closing", "opening", "stopped"]).withDescription("The current state of the motor."),
2406
+ e.power_outage_count(),
2407
+ ],
2408
+ extend: [lumiZigbeeOTA()],
2409
+ },
2410
+ {
2411
+ zigbeeModel: ["lumi.curtain.hagl07"],
2412
+ model: "ZNCLDJ14LM",
2413
+ vendor: "Aqara",
2414
+ description: "Curtain controller C2",
2415
+ fromZigbee: [
2416
+ lumi.fromZigbee.lumi_basic,
2417
+ lumi.fromZigbee.lumi_curtain_position,
2418
+ lumi.fromZigbee.lumi_curtain_status,
2419
+ lumi.fromZigbee.lumi_curtain_options,
2420
+ ],
2421
+ toZigbee: [
2422
+ lumi.toZigbee.lumi_curtain_position_state,
2423
+ lumi.toZigbee.lumi_curtain_hand_open,
2424
+ lumi.toZigbee.lumi_curtain_reverse,
2425
+ lumi.toZigbee.lumi_curtain_limits_calibration_ZNCLDJ14LM,
2426
+ ],
2427
+ exposes: [
2428
+ e.cover_position().setAccess("state", ea.ALL),
2429
+ e.binary("reverse_direction", ea.ALL, true, false).withDescription("Whether the curtain direction is inverted"),
2430
+ e.binary("hand_open", ea.ALL, true, false).withDescription("Pulling curtains by hand starts the motor"),
2431
+ e.binary("running", ea.STATE, true, false).withDescription("Whether the motor is moving or not"),
2432
+ e.enum("motor_state", ea.STATE, ["closing", "opening", "stopped"]).withDescription("The current state of the motor."),
2433
+ e.power_outage_count(),
2434
+ ],
2435
+ extend: [lumiZigbeeOTA()],
2436
+ },
2437
+ {
2438
+ zigbeeModel: ["lumi.curtain.acn04"],
2439
+ model: "ZNCLDJ01LM",
2440
+ vendor: "Aqara",
2441
+ description: "Curtain controller C3",
2442
+ toZigbee: [lumi.toZigbee.lumi_curtain_limits_calibration, lumi.toZigbee.lumi_curtain_automatic_calibration_ZNCLDJ01LM],
2443
+ exposes: [
2444
+ e.enum("limits_calibration", ea.SET, ["start", "end", "reset"]).withDescription("Calibrate the position limits"),
2445
+ e
2446
+ .enum("automatic_calibration", ea.SET, ["calibrate"])
2447
+ .withDescription("Performs an automatic calibration process similar to Aqara’s method to set curtain limits."),
2448
+ ],
2449
+ extend: [
2450
+ m.windowCovering({ controls: ["lift"], coverInverted: true, configureReporting: true }),
2451
+ lumiCurtainSpeed(),
2452
+ lumiCurtainManualOpenClose(),
2453
+ lumiCurtainAdaptivePullingSpeed(),
2454
+ lumiCurtainManualStop(),
2455
+ lumiCurtainReverse(),
2456
+ lumiCurtainStatus(),
2457
+ lumiCurtainLastManualOperation(),
2458
+ lumiCurtainPosition(),
2459
+ lumiCurtainTraverseTime(),
2460
+ lumiCurtainCalibrationStatus(),
2461
+ lumiCurtainCalibrated(),
2462
+ lumiCurtainIdentifyBeep(),
2463
+ m.identify(),
2464
+ lumiZigbeeOTA(),
2465
+ ],
2466
+ },
2467
+ {
2468
+ zigbeeModel: ["lumi.curtain.acn002"],
2469
+ model: "ZNJLBL01LM",
2470
+ description: "Roller shade driver E1",
2471
+ vendor: "Aqara",
2472
+ whiteLabel: [{ vendor: "Aqara", model: "RSD-M01" }],
2473
+ fromZigbee: [
2474
+ lumi.fromZigbee.lumi_curtain_position,
2475
+ lumi.fromZigbee.lumi_curtain_status,
2476
+ fromZigbee_1.default.ignore_basic_report,
2477
+ lumi.fromZigbee.lumi_specific,
2478
+ ],
2479
+ toZigbee: [lumi.toZigbee.lumi_curtain_position_state, lumi.toZigbee.lumi_curtain_battery, lumi.toZigbee.lumi_curtain_charging_status],
2480
+ onEvent: async (type, data, device) => {
2481
+ if (type === "message" &&
2482
+ data.type === "attributeReport" &&
2483
+ data.cluster === "genMultistateOutput" &&
2484
+ data.data.presentValue !== undefined &&
2485
+ data.data.presentValue > 1) {
2486
+ // Try to read the position after the motor stops, the device occasionally report wrong data right after stopping
2487
+ // Might need to add delay, seems to be working without one but needs more tests.
2488
+ await device.getEndpoint(1).read("genAnalogOutput", ["presentValue"]);
2489
+ }
2490
+ },
2491
+ exposes: [
2492
+ e.cover_position().setAccess("state", ea.ALL),
2493
+ e.battery().withAccess(ea.STATE_GET),
2494
+ e.device_temperature(),
2495
+ e.binary("charging_status", ea.STATE_GET, true, false).withDescription("The current charging status."),
2496
+ e.enum("motor_state", ea.STATE, ["closing", "opening", "stopped", "blocked"]).withDescription("The current state of the motor."),
2497
+ e.binary("running", ea.STATE, true, false).withDescription("Whether the motor is moving or not"),
2498
+ ],
2499
+ configure: async (device, coordinatorEndpoint) => {
2500
+ device.powerSource = "Battery";
2501
+ device.save();
2502
+ const endpoint = device.getEndpoint(1);
2503
+ await endpoint.read("manuSpecificLumi", [0x040a], { manufacturerCode: manufacturerCode });
2504
+ },
2505
+ extend: [
2506
+ m.quirkAddEndpointCluster({
2507
+ endpointID: 1,
2508
+ inputClusters: ["manuSpecificLumi"],
2509
+ }),
2510
+ lumiZigbeeOTA(),
2511
+ lumiMotorSpeed(),
2512
+ ],
2513
+ },
2514
+ {
2515
+ // 'lumi.curtain.acn003' - CN version (ZNCLBL01LM), 'lumi.curtain.agl001' - global version (CM-M01)
2516
+ zigbeeModel: ["lumi.curtain.acn003", "lumi.curtain.agl001"],
2517
+ model: "ZNCLBL01LM",
2518
+ vendor: "Aqara",
2519
+ whiteLabel: [
2520
+ { vendor: "Aqara", model: "CM-M01" },
2521
+ { vendor: "Aqara", model: "CM-M01R" },
2522
+ ],
2523
+ description: "Curtain driver E1",
2524
+ fromZigbee: [fromZigbee_1.default.battery, lumi.fromZigbee.lumi_curtain_position_tilt, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.power_source],
2525
+ toZigbee: [
2526
+ lumi.toZigbee.lumi_curtain_position_state,
2527
+ lumi.toZigbee.lumi_curtain_battery_voltage,
2528
+ lumi.toZigbee.lumi_curtain_hooks_lock,
2529
+ lumi.toZigbee.lumi_curtain_hooks_state,
2530
+ lumi.toZigbee.lumi_curtain_hand_open,
2531
+ lumi.toZigbee.lumi_curtain_limits_calibration,
2532
+ toZigbee_1.default.power_source,
2533
+ toZigbee_1.default.battery_percentage_remaining,
2534
+ ],
2535
+ exposes: [
2536
+ e.cover_position().setAccess("state", ea.ALL),
2537
+ e.binary("hand_open", ea.ALL, true, false).withDescription("Pulling curtains by hand starts the motor"),
2538
+ e.enum("limits_calibration", ea.SET, ["start", "end", "reset"]).withDescription("Calibrate the position limits"),
2539
+ e.battery().withAccess(ea.STATE_GET),
2540
+ e.battery_voltage().withAccess(ea.STATE_GET),
2541
+ e.device_temperature(),
2542
+ e.illuminance(),
2543
+ e.action(["manual_open", "manual_close"]),
2544
+ e.enum("motor_state", ea.STATE, ["stopped", "opening", "closing", "pause"]).withDescription("Motor state"),
2545
+ e.binary("running", ea.STATE, true, false).withDescription("Whether the motor is moving or not"),
2546
+ e.enum("hooks_lock", ea.STATE_SET, ["LOCK", "UNLOCK"]).withDescription("Lock the curtain driver hooks"),
2547
+ e.enum("hooks_state", ea.STATE_GET, ["unlocked", "locked", "locking", "unlocking"]).withDescription("Hooks state"),
2548
+ e.numeric("target_position", ea.STATE).withUnit("%").withDescription("Target position"),
2549
+ e.enum("power_source", ea.STATE_GET, ["battery", "dc_source"]).withDescription("The current power source"),
2550
+ e.binary("charging", ea.STATE_GET, true, false).withDescription("The current charging state"),
2551
+ ],
2552
+ configure: async (device, coordinatorEndpoint) => {
2553
+ const endpoint = device.getEndpoint(1);
2554
+ // Read correct version to replace version advertised by `genBasic` and `genOta`:
2555
+ // https://github.com/Koenkk/zigbee2mqtt/issues/15745
2556
+ await endpoint.read("manuSpecificLumi", [0x00ee], { manufacturerCode: manufacturerCode });
2557
+ await endpoint.read("genPowerCfg", ["batteryPercentageRemaining"]);
2558
+ await endpoint.read("manuSpecificLumi", [0x040b], { manufacturerCode: manufacturerCode });
2559
+ await endpoint.read("manuSpecificLumi", [0x0428], { manufacturerCode: manufacturerCode });
2560
+ await endpoint.read("genBasic", ["powerSource"]);
2561
+ await endpoint.read("closuresWindowCovering", ["currentPositionLiftPercentage"]);
2562
+ },
2563
+ extend: [lumiZigbeeOTA()],
2564
+ },
2565
+ {
2566
+ zigbeeModel: ["lumi.relay.c2acn01"],
2567
+ model: "LLKZMK11LM",
2568
+ vendor: "Aqara",
2569
+ description: "Dual relay module",
2570
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_power, fromZigbee_1.default.ignore_multistate_report, fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_basic_raw],
2571
+ meta: { multiEndpoint: true },
2572
+ toZigbee: [toZigbee_1.default.on_off, lumi.toZigbee.lumi_interlock, lumi.toZigbee.lumi_power, lumi.toZigbee.lumi_switch_power_outage_memory],
2573
+ endpoint: (device) => {
2574
+ return { l1: 1, l2: 2 };
2575
+ },
2576
+ exposes: [
2577
+ e.power().withAccess(ea.STATE_GET),
2578
+ e.energy(),
2579
+ e.device_temperature(),
2580
+ e.voltage(),
2581
+ e.current(),
2582
+ e.switch().withEndpoint("l1"),
2583
+ e.switch().withEndpoint("l2"),
2584
+ e.power_outage_count(false),
2585
+ e.power_outage_memory(),
2586
+ e.binary("interlock", ea.STATE_SET, true, false).withDescription("Enabling prevents both relais being on at the same time"),
2587
+ ],
2588
+ extend: [lumiZigbeeOTA()],
2589
+ configure: async (device, coordinatorEndpoint) => {
2590
+ device.powerSource = "Mains (single phase)";
2591
+ device.save();
2592
+ },
2593
+ },
2594
+ {
2595
+ zigbeeModel: ["lumi.switch.acn047"],
2596
+ model: "LLKZMK12LM",
2597
+ vendor: "Aqara",
2598
+ whiteLabel: [{ vendor: "Aqara", model: "DCM-K01" }],
2599
+ description: "Dual relay module T2",
2600
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_specific, lumi.fromZigbee.lumi_power],
2601
+ toZigbee: [toZigbee_1.default.on_off],
2602
+ meta: { multiEndpoint: true, multiEndpointSkip: ["power", "energy"] },
2603
+ endpoint: (device) => {
2604
+ return { l1: 1, l2: 2 };
2605
+ },
2606
+ exposes: [
2607
+ e.switch().withEndpoint("l1"),
2608
+ e.switch().withEndpoint("l2"),
2609
+ e.power(),
2610
+ e.current(),
2611
+ e.energy(),
2612
+ e.voltage(),
2613
+ e.device_temperature(),
2614
+ ],
2615
+ extend: [
2616
+ lumiSwitchType(),
2617
+ lumiPowerOnBehavior({ lookup: { on: 0, previous: 1, off: 2, toggle: 3 } }),
2618
+ lumiOperationMode({ description: "Decoupled mode for 1st relay", endpointName: "l1" }),
2619
+ lumiOperationMode({ description: "Decoupled mode for 2nd relay", endpointName: "l2" }),
2620
+ lumiAction({ endpointNames: ["l1", "l2"] }),
2621
+ m.binary({
2622
+ name: "interlock",
2623
+ valueOn: ["ON", 1],
2624
+ valueOff: ["OFF", 0],
2625
+ cluster: "manuSpecificLumi",
2626
+ attribute: { ID: 0x02d0, type: 0x10 },
2627
+ description: "Enabling prevents both relays being on at the same time (Interlock)",
2628
+ zigbeeCommandOptions: { manufacturerCode },
2629
+ }),
2630
+ m.enumLookup({
2631
+ name: "mode",
2632
+ lookup: { power: 0, pulse: 1, dry: 3 },
2633
+ cluster: "manuSpecificLumi",
2634
+ attribute: { ID: 0x0289, type: 0x20 },
2635
+ description: "Work mode: Power mode, Dry mode with impulse, Dry mode",
2636
+ zigbeeCommandOptions: { manufacturerCode },
2637
+ }),
2638
+ m.numeric({
2639
+ name: "pulse_length",
2640
+ valueMin: 200,
2641
+ valueMax: 2000,
2642
+ unit: "ms",
2643
+ cluster: "manuSpecificLumi",
2644
+ attribute: { ID: 0x00eb, type: 0x21 },
2645
+ description: "Impulse length in Dry mode with impulse",
2646
+ zigbeeCommandOptions: { manufacturerCode },
2647
+ }),
2648
+ lumiZigbeeOTA(),
2649
+ ],
2650
+ },
2651
+ {
2652
+ zigbeeModel: ["lumi.lock.acn02"],
2653
+ model: "ZNMS12LM",
2654
+ description: "Smart door lock S2",
2655
+ vendor: "Aqara",
2656
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_door_lock_report, lumi.fromZigbee.lumi_door_lock_low_battery],
2657
+ toZigbee: [],
2658
+ exposes: [
2659
+ e.battery(),
2660
+ e.battery_voltage(),
2661
+ e.battery_low(),
2662
+ e.binary("state", ea.STATE, "UNLOCK", "LOCK"),
2663
+ e.binary("reverse", ea.STATE, "UNLOCK", "LOCK"),
2664
+ e.enum("action", ea.STATE, [
2665
+ "finger_not_match",
2666
+ "password_not_match",
2667
+ "reverse_lock",
2668
+ "reverse_lock_cancel",
2669
+ "locked",
2670
+ "lock_opened",
2671
+ "finger_add",
2672
+ "finger_delete",
2673
+ "password_add",
2674
+ "password_delete",
2675
+ "lock_opened_inside",
2676
+ "lock_opened_outside",
2677
+ "ring_bell",
2678
+ "change_language_to",
2679
+ "finger_open",
2680
+ "password_open",
2681
+ "door_closed",
2682
+ ]),
2683
+ ],
2684
+ meta: { battery: { voltageToPercentage: { min: 3000, max: 4200 } } },
2685
+ configure: async (device, coordinatorEndpoint) => {
2686
+ // Device advertises itself as Router but is an EndDevice
2687
+ device.type = "EndDevice";
2688
+ device.save();
2689
+ },
2690
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
2691
+ },
2692
+ {
2693
+ zigbeeModel: ["lumi.lock.acn03"],
2694
+ model: "ZNMS13LM",
2695
+ description: "Smart door lock S2 Pro",
2696
+ vendor: "Aqara",
2697
+ fromZigbee: [lumi.fromZigbee.lumi_door_lock_report, fromZigbee_1.default.ignore_basic_report],
2698
+ toZigbee: [],
2699
+ exposes: [
2700
+ e.binary("state", ea.STATE, "UNLOCK", "LOCK"),
2701
+ e.binary("reverse", ea.STATE, "UNLOCK", "LOCK"),
2702
+ e.enum("action", ea.STATE, [
2703
+ "finger_not_match",
2704
+ "password_not_match",
2705
+ "reverse_lock",
2706
+ "reverse_lock_cancel",
2707
+ "locked",
2708
+ "lock_opened",
2709
+ "finger_add",
2710
+ "finger_delete",
2711
+ "password_add",
2712
+ "password_delete",
2713
+ "lock_opened_inside",
2714
+ "lock_opened_outside",
2715
+ "ring_bell",
2716
+ "change_language_to",
2717
+ "finger_open",
2718
+ "password_open",
2719
+ "door_closed",
2720
+ ]),
2721
+ ],
2722
+ extend: [m.quirkCheckinInterval("1_HOUR")],
2723
+ configure: async (device, coordinatorEndpoint) => {
2724
+ // Device advertises itself as Router but is an EndDevice
2725
+ device.type = "EndDevice";
2726
+ device.save();
2727
+ },
2728
+ },
2729
+ {
2730
+ zigbeeModel: ["lumi.lock.aq1"],
2731
+ model: "ZNMS11LM",
2732
+ description: "Smart door lock",
2733
+ vendor: "Aqara",
2734
+ fromZigbee: [lumi.fromZigbee.lumi_door_lock_report, fromZigbee_1.default.ignore_basic_report],
2735
+ toZigbee: [],
2736
+ exposes: [
2737
+ e.binary("state", ea.STATE, "UNLOCK", "LOCK"),
2738
+ e.binary("reverse", ea.STATE, "UNLOCK", "LOCK"),
2739
+ e.enum("action", ea.STATE, [
2740
+ "finger_not_match",
2741
+ "password_not_match",
2742
+ "reverse_lock",
2743
+ "reverse_lock_cancel",
2744
+ "locked",
2745
+ "lock_opened",
2746
+ "finger_add",
2747
+ "finger_delete",
2748
+ "password_add",
2749
+ "password_delete",
2750
+ "lock_opened_inside",
2751
+ "lock_opened_outside",
2752
+ "ring_bell",
2753
+ "change_language_to",
2754
+ "finger_open",
2755
+ "password_open",
2756
+ "door_closed",
2757
+ ]),
2758
+ ],
2759
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
2760
+ },
2761
+ {
2762
+ zigbeeModel: ["lumi.remote.b286opcn01"],
2763
+ model: "WXCJKG11LM",
2764
+ vendor: "Aqara",
2765
+ description: "Opple wireless switch (single band)",
2766
+ fromZigbee: [
2767
+ lumi.fromZigbee.lumi_action_on,
2768
+ lumi.fromZigbee.lumi_action_off,
2769
+ fromZigbee_1.default.battery,
2770
+ lumi.fromZigbee.lumi_action_multistate,
2771
+ lumi.fromZigbee.lumi_specific,
2772
+ ],
2773
+ exposes: [
2774
+ e.battery(),
2775
+ e.battery_voltage(),
2776
+ e.action([
2777
+ "button_1_hold",
2778
+ "button_1_release",
2779
+ "button_1_single",
2780
+ "button_1_double",
2781
+ "button_1_triple",
2782
+ "button_2_hold",
2783
+ "button_2_release",
2784
+ "button_2_single",
2785
+ "button_2_double",
2786
+ "button_2_triple",
2787
+ ]),
2788
+ e
2789
+ .enum("operation_mode", ea.ALL, ["command", "event"])
2790
+ .withDescription('Operation mode, select "command" to enable bindings (wake up the device before changing modes!)'),
2791
+ ],
2792
+ toZigbee: [lumi.toZigbee.lumi_operation_mode_opple],
2793
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
2794
+ extend: [m.quirkCheckinInterval("1_HOUR")],
2795
+ configure: async (device, coordinatorEndpoint) => {
2796
+ const endpoint = device.getEndpoint(1);
2797
+ await endpoint.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode });
2798
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff", "genPowerCfg"]);
2799
+ },
2800
+ },
2801
+ {
2802
+ zigbeeModel: ["lumi.remote.b486opcn01"],
2803
+ model: "WXCJKG12LM",
2804
+ vendor: "Aqara",
2805
+ description: "Opple wireless switch (double band)",
2806
+ fromZigbee: [
2807
+ lumi.fromZigbee.lumi_action_on,
2808
+ lumi.fromZigbee.lumi_action_off,
2809
+ lumi.fromZigbee.lumi_action_step,
2810
+ lumi.fromZigbee.lumi_action_step_color_temp,
2811
+ fromZigbee_1.default.battery,
2812
+ lumi.fromZigbee.lumi_action_multistate,
2813
+ lumi.fromZigbee.lumi_specific,
2814
+ ],
2815
+ exposes: [
2816
+ e.battery(),
2817
+ e.battery_voltage(),
2818
+ e.action([
2819
+ "button_1_hold",
2820
+ "button_1_release",
2821
+ "button_1_single",
2822
+ "button_1_double",
2823
+ "button_1_triple",
2824
+ "button_2_hold",
2825
+ "button_2_release",
2826
+ "button_2_single",
2827
+ "button_2_double",
2828
+ "button_2_triple",
2829
+ "button_3_hold",
2830
+ "button_3_release",
2831
+ "button_3_single",
2832
+ "button_3_double",
2833
+ "button_3_triple",
2834
+ "button_4_hold",
2835
+ "button_4_release",
2836
+ "button_4_single",
2837
+ "button_4_double",
2838
+ "button_4_triple",
2839
+ ]),
2840
+ e
2841
+ .enum("operation_mode", ea.ALL, ["command", "event"])
2842
+ .withDescription('Operation mode, select "command" to enable bindings (wake up the device before changing modes!)'),
2843
+ ],
2844
+ toZigbee: [lumi.toZigbee.lumi_operation_mode_opple],
2845
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
2846
+ extend: [m.quirkCheckinInterval("1_HOUR")],
2847
+ configure: async (device, coordinatorEndpoint) => {
2848
+ const endpoint = device.getEndpoint(1);
2849
+ await endpoint.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode });
2850
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff", "genLevelCtrl", "lightingColorCtrl", "genPowerCfg"]);
2851
+ },
2852
+ },
2853
+ {
2854
+ zigbeeModel: ["lumi.remote.b686opcn01"],
2855
+ model: "WXCJKG13LM",
2856
+ vendor: "Aqara",
2857
+ description: "Opple wireless switch (triple band)",
2858
+ fromZigbee: [
2859
+ lumi.fromZigbee.lumi_action_on,
2860
+ lumi.fromZigbee.lumi_action_off,
2861
+ lumi.fromZigbee.lumi_action_step,
2862
+ lumi.fromZigbee.lumi_action_move,
2863
+ lumi.fromZigbee.lumi_action_stop,
2864
+ lumi.fromZigbee.lumi_action_step_color_temp,
2865
+ lumi.fromZigbee.lumi_action_move_color_temp,
2866
+ fromZigbee_1.default.battery,
2867
+ lumi.fromZigbee.lumi_action_multistate,
2868
+ lumi.fromZigbee.lumi_specific,
2869
+ ],
2870
+ exposes: [
2871
+ e.battery(),
2872
+ e.battery_voltage(),
2873
+ e.action([
2874
+ "button_1_hold",
2875
+ "button_1_release",
2876
+ "button_1_single",
2877
+ "button_1_double",
2878
+ "button_1_triple",
2879
+ "button_2_hold",
2880
+ "button_2_release",
2881
+ "button_2_single",
2882
+ "button_2_double",
2883
+ "button_2_triple",
2884
+ "button_3_hold",
2885
+ "button_3_release",
2886
+ "button_3_single",
2887
+ "button_3_double",
2888
+ "button_3_triple",
2889
+ "button_4_hold",
2890
+ "button_4_release",
2891
+ "button_4_single",
2892
+ "button_4_double",
2893
+ "button_4_triple",
2894
+ "button_5_hold",
2895
+ "button_5_release",
2896
+ "button_5_single",
2897
+ "button_5_double",
2898
+ "button_5_triple",
2899
+ "button_6_hold",
2900
+ "button_6_release",
2901
+ "button_6_single",
2902
+ "button_6_double",
2903
+ "button_6_triple",
2904
+ ]),
2905
+ e
2906
+ .enum("operation_mode", ea.ALL, ["command", "event"])
2907
+ .withDescription('Operation mode, select "command" to enable bindings (wake up the device before changing modes!)'),
2908
+ e.power_outage_count(false),
2909
+ ],
2910
+ toZigbee: [lumi.toZigbee.lumi_operation_mode_opple],
2911
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
2912
+ extend: [m.quirkCheckinInterval("1_HOUR")],
2913
+ configure: async (device, coordinatorEndpoint) => {
2914
+ const endpoint = device.getEndpoint(1);
2915
+ await endpoint.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode });
2916
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff", "genLevelCtrl", "lightingColorCtrl", "genPowerCfg"]);
2917
+ },
2918
+ },
2919
+ {
2920
+ zigbeeModel: ["lumi.sen_ill.mgl01"],
2921
+ model: "GZCGQ01LM",
2922
+ vendor: "Xiaomi",
2923
+ whiteLabel: [{ vendor: "Xiaomi", model: "YTC4043GL" }],
2924
+ description: "Mi light sensor",
2925
+ fromZigbee: [fromZigbee_1.default.battery, lumi.fromZigbee.lumi_specific],
2926
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
2927
+ extend: [m.quirkCheckinInterval("1_HOUR"), m.illuminance()],
2928
+ exposes: [e.battery(), e.battery_voltage()],
2929
+ },
2930
+ {
2931
+ zigbeeModel: ["lumi.light.acn128"],
2932
+ model: "TDL01LM",
2933
+ vendor: "Aqara",
2934
+ description: "Spotlight T3",
2935
+ whiteLabel: [
2936
+ { vendor: "Aqara", model: "MZSD11LM" },
2937
+ { vendor: "Aqara", model: "MZSD12LM" },
2938
+ { vendor: "Aqara", model: "MZTD11LM" },
2939
+ ],
2940
+ extend: [
2941
+ lumiZigbeeOTA(),
2942
+ lumiLight({
2943
+ colorTemp: true,
2944
+ color: false,
2945
+ powerOutageMemory: "enum",
2946
+ levelConfig: { disabledFeatures: ["current_level_startup"] },
2947
+ }),
2948
+ m.numeric({
2949
+ name: "min_brightness",
2950
+ valueMin: 0,
2951
+ valueMax: 99,
2952
+ unit: "%",
2953
+ cluster: "manuSpecificLumi",
2954
+ attribute: { ID: 0x0515, type: 0x20 },
2955
+ description: "Minimum brightness level",
2956
+ zigbeeCommandOptions: { manufacturerCode },
2957
+ }),
2958
+ m.numeric({
2959
+ name: "max_brightness",
2960
+ valueMin: 1,
2961
+ valueMax: 100,
2962
+ unit: "%",
2963
+ cluster: "manuSpecificLumi",
2964
+ attribute: { ID: 0x0516, type: 0x20 },
2965
+ description: "Maximum brightness level",
2966
+ zigbeeCommandOptions: { manufacturerCode },
2967
+ }),
2968
+ ],
2969
+ },
2970
+ {
2971
+ zigbeeModel: ["lumi.light.rgbac1"],
2972
+ model: "ZNTGMK11LM",
2973
+ vendor: "Aqara",
2974
+ description: "Smart RGBW light controller",
2975
+ extend: [m.light({ colorTemp: { range: undefined }, color: { modes: ["xy", "hs"] } }), lumiZigbeeOTA()],
2976
+ },
2977
+ {
2978
+ zigbeeModel: ["lumi.light.cwacn1"],
2979
+ model: "ZNTGMK12LM",
2980
+ vendor: "Aqara",
2981
+ description: "Smart color temperature light controller",
2982
+ extend: [lumiLight({ colorTemp: true, powerOutageCount: true, deviceTemperature: true }), lumiZigbeeOTA()],
2983
+ },
2984
+ {
2985
+ zigbeeModel: ["lumi.light.cbacn1"],
2986
+ model: "HLQDQ01LM",
2987
+ vendor: "Aqara",
2988
+ description: "Smart LED controller",
2989
+ extend: [m.light(), lumiZigbeeOTA()],
2990
+ },
2991
+ {
2992
+ zigbeeModel: ["lumi.light.acn004"],
2993
+ model: "SSWQD02LM",
2994
+ vendor: "Aqara",
2995
+ description: "Smart dimmer controller T1 Pro",
2996
+ extend: [lumiZigbeeOTA(), lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
2997
+ },
2998
+ {
2999
+ zigbeeModel: ["lumi.dimmer.acn003"],
3000
+ model: "ZNDDQDQ11LM",
3001
+ vendor: "Aqara",
3002
+ description: "T1 light strip controller",
3003
+ extend: [lumiZigbeeOTA(), lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
3004
+ },
3005
+ {
3006
+ zigbeeModel: ["lumi.dimmer.acn004"],
3007
+ model: "ZNDDQDQ12LM",
3008
+ vendor: "Aqara",
3009
+ description: "T1 light strip controller",
3010
+ extend: [lumiZigbeeOTA(), lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
3011
+ },
3012
+ {
3013
+ zigbeeModel: ["lumi.light.acn026", "lumi.light.acn024", "lumi.light.acn025"],
3014
+ model: "SSWQD03LM",
3015
+ vendor: "Aqara",
3016
+ description: "Spotlight T2",
3017
+ extend: [lumiZigbeeOTA(), lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
3018
+ },
3019
+ {
3020
+ zigbeeModel: ["lumi.switch.n0agl1"],
3021
+ model: "SSM-U01",
3022
+ vendor: "Aqara",
3023
+ description: "Single switch module T1 (with neutral)",
3024
+ // Ignore energy metering reports, rely on aqara_opple: https://github.com/Koenkk/zigbee2mqtt/issues/10709
3025
+ fromZigbee: [
3026
+ fromZigbee_1.default.on_off,
3027
+ fromZigbee_1.default.device_temperature,
3028
+ lumi.fromZigbee.lumi_specific,
3029
+ fromZigbee_1.default.ignore_metering,
3030
+ fromZigbee_1.default.ignore_electrical_measurement,
3031
+ lumi.fromZigbee.lumi_power,
3032
+ ],
3033
+ exposes: [
3034
+ e.switch(),
3035
+ e.energy(),
3036
+ e.power(),
3037
+ e.device_temperature(),
3038
+ e.power_outage_memory(),
3039
+ e.power_outage_count(),
3040
+ e.switch_type(),
3041
+ e.voltage(),
3042
+ e.current(),
3043
+ ],
3044
+ toZigbee: [lumi.toZigbee.lumi_switch_type, toZigbee_1.default.on_off, lumi.toZigbee.lumi_switch_power_outage_memory, lumi.toZigbee.lumi_led_disabled_night],
3045
+ configure: async (device, coordinatorEndpoint) => {
3046
+ const endpoint = device.getEndpoint(1);
3047
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff", "genDeviceTempCfg"]);
3048
+ await reporting.onOff(endpoint);
3049
+ await reporting.deviceTemperature(endpoint);
3050
+ device.powerSource = "Mains (single phase)";
3051
+ device.type = "Router";
3052
+ device.save();
3053
+ },
3054
+ extend: [lumiZigbeeOTA()],
3055
+ },
3056
+ {
3057
+ zigbeeModel: ["lumi.switch.n0acn2"],
3058
+ model: "DLKZMK11LM",
3059
+ vendor: "Aqara",
3060
+ description: "Single switch module T1 (with neutral), CN",
3061
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_specific],
3062
+ toZigbee: [
3063
+ toZigbee_1.default.on_off,
3064
+ lumi.toZigbee.lumi_power,
3065
+ lumi.toZigbee.lumi_switch_type,
3066
+ lumi.toZigbee.lumi_switch_power_outage_memory,
3067
+ lumi.toZigbee.lumi_led_disabled_night,
3068
+ ],
3069
+ exposes: [
3070
+ e.switch(),
3071
+ e.power().withAccess(ea.STATE_GET),
3072
+ e.energy(),
3073
+ e.device_temperature().withAccess(ea.STATE),
3074
+ e.voltage(),
3075
+ e.current(),
3076
+ e.power_outage_memory(),
3077
+ e.led_disabled_night(),
3078
+ e.switch_type(),
3079
+ ],
3080
+ configure: async (device, coordinatorEndpoint) => {
3081
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
3082
+ device.powerSource = "Mains (single phase)";
3083
+ device.save();
3084
+ },
3085
+ extend: [lumiZigbeeOTA()],
3086
+ },
3087
+ {
3088
+ zigbeeModel: ["lumi.switch.l0agl1"],
3089
+ model: "SSM-U02",
3090
+ vendor: "Aqara",
3091
+ description: "Single switch module T1 (no neutral)",
3092
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_specific],
3093
+ exposes: [e.switch(), e.power_outage_memory(), e.switch_type(), e.power_outage_count(), e.device_temperature()],
3094
+ toZigbee: [lumi.toZigbee.lumi_switch_type, toZigbee_1.default.on_off, lumi.toZigbee.lumi_switch_power_outage_memory],
3095
+ configure: async (device, coordinatorEndpoint) => {
3096
+ const endpoint = device.getEndpoint(1);
3097
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff"]);
3098
+ await reporting.onOff(endpoint);
3099
+ device.powerSource = "Mains (single phase)";
3100
+ device.save();
3101
+ },
3102
+ },
3103
+ {
3104
+ zigbeeModel: ["lumi.switch.l0acn1"],
3105
+ model: "DLKZMK12LM",
3106
+ vendor: "Aqara",
3107
+ description: "Single switch module T1 (no neutral), CN",
3108
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_specific],
3109
+ exposes: [e.switch(), e.power_outage_memory(), e.switch_type()],
3110
+ toZigbee: [lumi.toZigbee.lumi_switch_type, toZigbee_1.default.on_off, lumi.toZigbee.lumi_switch_power_outage_memory],
3111
+ configure: async (device, coordinatorEndpoint) => {
3112
+ const endpoint = device.getEndpoint(1);
3113
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff"]);
3114
+ await reporting.onOff(endpoint);
3115
+ device.powerSource = "Mains (single phase)";
3116
+ device.save();
3117
+ },
3118
+ },
3119
+ {
3120
+ zigbeeModel: ["lumi.switch.n4acn4"],
3121
+ model: "ZNCJMB14LM",
3122
+ vendor: "Aqara",
3123
+ description: "Smart touch panel S1",
3124
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_smart_panel_ZNCJMB14LM],
3125
+ toZigbee: [toZigbee_1.default.on_off, lumi.toZigbee.lumi_smart_panel_ZNCJMB14LM],
3126
+ meta: { multiEndpoint: true },
3127
+ endpoint: (device) => {
3128
+ return { left: 1, center: 2, right: 3 };
3129
+ },
3130
+ exposes: [
3131
+ e.switch().withEndpoint("left"),
3132
+ e.switch().withEndpoint("center"),
3133
+ e.switch().withEndpoint("right"),
3134
+ e.binary("standby_enabled", ea.STATE_SET, true, false).withDescription("Enable standby"),
3135
+ e.enum("theme", ea.STATE_SET, ["classic", "concise"]).withDescription("Display theme"),
3136
+ e.enum("beep_volume", ea.STATE_SET, ["mute", "low", "medium", "high"]).withDescription("Beep volume"),
3137
+ e
3138
+ .numeric("lcd_brightness", ea.STATE_SET)
3139
+ .withValueMin(1)
3140
+ .withValueMax(100)
3141
+ .withUnit("%")
3142
+ .withDescription("LCD brightness (will not persist if auto-brightness is enabled)"),
3143
+ e.enum("language", ea.STATE_SET, ["chinese", "english"]).withDescription("Interface language"),
3144
+ e.enum("screen_saver_style", ea.STATE_SET, ["classic", "analog clock"]).withDescription("Screen saver style"),
3145
+ e.numeric("standby_time", ea.STATE_SET).withValueMin(0).withValueMax(65534).withUnit("s").withDescription("Display standby time"),
3146
+ e.enum("font_size", ea.STATE_SET, ["small", "medium", "large"]).withDescription("Display font size"),
3147
+ e.binary("lcd_auto_brightness_enabled", ea.STATE_SET, true, false).withDescription("Enable LCD auto brightness"),
3148
+ e.enum("homepage", ea.STATE_SET, ["scene", "feel", "thermostat", "switch"]).withDescription("Default display homepage"),
3149
+ e.binary("screen_saver_enabled", ea.STATE_SET, true, false).withDescription("Enable screen saver"),
3150
+ e
3151
+ .numeric("standby_lcd_brightness", ea.STATE_SET)
3152
+ .withValueMin(1)
3153
+ .withValueMax(100)
3154
+ .withUnit("%")
3155
+ .withDescription("Standby LCD brightness"),
3156
+ e
3157
+ .enum("available_switches", ea.STATE_SET, ["none", "1", "2", "3", "1 and 2", "1 and 3", "2 and 3", "all"])
3158
+ .withDescription("Control which switches are available in the switches screen (none disables switches screen)"),
3159
+ e
3160
+ .composite("switch_1_text_icon", "switch_1_text_icon", ea.STATE_SET)
3161
+ .withDescription("Switch 1 text and icon")
3162
+ .withFeature(e.enum("switch_1_icon", ea.STATE_SET, ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"]).withDescription("Icon"))
3163
+ .withFeature(e.text("switch_1_text", ea.STATE_SET).withDescription("Text")),
3164
+ e
3165
+ .composite("switch_2_text_icon", "switch_2_text_icon", ea.STATE_SET)
3166
+ .withDescription("Switch 2 text and icon")
3167
+ .withFeature(e.enum("switch_2_icon", ea.STATE_SET, ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"]).withDescription("Icon"))
3168
+ .withFeature(e.text("switch_2_text", ea.STATE_SET).withDescription("Text")),
3169
+ e
3170
+ .composite("switch_3_text_icon", "switch_3_text_icon", ea.STATE_SET)
3171
+ .withDescription("Switch 3 text and icon")
3172
+ .withFeature(e.enum("switch_3_icon", ea.STATE_SET, ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"]).withDescription("Icon"))
3173
+ .withFeature(e.text("switch_3_text", ea.STATE_SET).withDescription("Text")),
3174
+ ],
3175
+ configure: async (device, coordinatorEndpoint) => {
3176
+ await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ["genOnOff"]);
3177
+ await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ["genOnOff"]);
3178
+ await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ["genOnOff"]);
3179
+ await reporting.onOff(device.getEndpoint(1));
3180
+ // await reporting.onOff(device.getEndpoint(2)); ToDo: Currently fails
3181
+ // await reporting.onOff(device.getEndpoint(3)); ToDo: Currently fails
3182
+ },
3183
+ extend: [lumiZigbeeOTA()],
3184
+ },
3185
+ {
3186
+ zigbeeModel: ["lumi.remote.b186acn03"],
3187
+ model: "WXKG05LM",
3188
+ vendor: "Aqara",
3189
+ description: "Wireless remote switch T1 (single rocker)",
3190
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3191
+ extend: [m.quirkCheckinInterval("1_HOUR")],
3192
+ fromZigbee: [lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_action_multistate, fromZigbee_1.default.battery, lumi.fromZigbee.lumi_specific],
3193
+ toZigbee: [],
3194
+ exposes: [e.action(["single", "double", "hold"]), e.battery()],
3195
+ },
3196
+ {
3197
+ zigbeeModel: ["lumi.remote.b28ac1"],
3198
+ model: "WXKG15LM",
3199
+ vendor: "Aqara",
3200
+ whiteLabel: [{ vendor: "Aqara", model: "WRS-R02" }],
3201
+ description: "Wireless remote switch H1 (double rocker)",
3202
+ fromZigbee: [fromZigbee_1.default.battery, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.command_toggle],
3203
+ toZigbee: [lumi.toZigbee.lumi_switch_click_mode, lumi.toZigbee.lumi_operation_mode_opple],
3204
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } }, multiEndpoint: true },
3205
+ extend: [m.quirkCheckinInterval("1_HOUR")],
3206
+ exposes: [
3207
+ e.battery(),
3208
+ e.battery_voltage(),
3209
+ e.action([
3210
+ "single_left",
3211
+ "single_right",
3212
+ "single_both",
3213
+ "double_left",
3214
+ "double_right",
3215
+ "double_both",
3216
+ "triple_left",
3217
+ "triple_right",
3218
+ "triple_both",
3219
+ "hold_left",
3220
+ "hold_right",
3221
+ "hold_both",
3222
+ ]),
3223
+ e
3224
+ .enum("click_mode", ea.ALL, ["fast", "multi"])
3225
+ .withDescription("Click mode, fast: only supports single click which will be send immediately after clicking." +
3226
+ "multi: supports more events like double and hold"),
3227
+ e
3228
+ .enum("operation_mode", ea.ALL, ["command", "event"])
3229
+ .withDescription('Operation mode, select "command" to enable bindings (wake up the device before changing modes!)'),
3230
+ ],
3231
+ configure: async (device, coordinatorEndpoint) => {
3232
+ const endpoint1 = device.getEndpoint(1);
3233
+ const endpoint2 = device.getEndpoint(3);
3234
+ // set "event" mode
3235
+ await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode });
3236
+ // turn on the "multiple clicks" mode, otherwise the only "single click" events.
3237
+ // if value is 1 - there will be single clicks, 2 - multiple.
3238
+ await endpoint1.write("manuSpecificLumi", { 293: { value: 0x02, type: 0x20 } }, { manufacturerCode: manufacturerCode });
3239
+ await reporting.bind(endpoint1, coordinatorEndpoint, ["genOnOff", "genPowerCfg"]);
3240
+ await reporting.bind(endpoint2, coordinatorEndpoint, ["genOnOff"]);
3241
+ // TODO/BUG:
3242
+ // Did not understand how to separate the left and right keys in command mode -
3243
+ // the "toggleCommand" always arrives from the first endpoint
3244
+ },
3245
+ },
3246
+ {
3247
+ zigbeeModel: ["lumi.switch.b1lc04"],
3248
+ model: "QBKG38LM",
3249
+ vendor: "Aqara",
3250
+ description: "Smart wall switch E1 (no neutral, single rocker)",
3251
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
3252
+ toZigbee: [
3253
+ toZigbee_1.default.on_off,
3254
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
3255
+ lumi.toZigbee.lumi_switch_power_outage_memory,
3256
+ lumi.toZigbee.lumi_switch_mode_switch,
3257
+ lumi.toZigbee.lumi_flip_indicator_light,
3258
+ ],
3259
+ exposes: [
3260
+ e.switch(),
3261
+ e.power_outage_memory(),
3262
+ e.action(["single", "double"]),
3263
+ e.device_temperature(),
3264
+ e.flip_indicator_light(),
3265
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for button"),
3266
+ e
3267
+ .enum("mode_switch", ea.ALL, ["anti_flicker_mode", "quick_mode"])
3268
+ .withDescription("Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster."),
3269
+ ],
3270
+ configure: async (device, coordinatorEndpoint) => {
3271
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
3272
+ },
3273
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
3274
+ },
3275
+ {
3276
+ zigbeeModel: ["lumi.switch.b2lc04"],
3277
+ model: "QBKG39LM",
3278
+ vendor: "Aqara",
3279
+ description: "Smart wall switch E1 (no neutral, double rocker)",
3280
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
3281
+ toZigbee: [
3282
+ toZigbee_1.default.on_off,
3283
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
3284
+ lumi.toZigbee.lumi_switch_power_outage_memory,
3285
+ lumi.toZigbee.lumi_switch_mode_switch,
3286
+ lumi.toZigbee.lumi_flip_indicator_light,
3287
+ ],
3288
+ meta: { multiEndpoint: true },
3289
+ endpoint: (device) => {
3290
+ return { left: 1, right: 2 };
3291
+ },
3292
+ exposes: [
3293
+ e.switch().withEndpoint("left"),
3294
+ e.switch().withEndpoint("right"),
3295
+ e.device_temperature(),
3296
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for left button").withEndpoint("left"),
3297
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for right button").withEndpoint("right"),
3298
+ e
3299
+ .enum("mode_switch", ea.ALL, ["anti_flicker_mode", "quick_mode"])
3300
+ .withDescription("Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster."),
3301
+ e.action(["single_left", "double_left", "single_right", "double_right", "single_both", "double_both"]),
3302
+ e.power_outage_memory(),
3303
+ e.flip_indicator_light(),
3304
+ ],
3305
+ configure: async (device, coordinatorEndpoint) => {
3306
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
3307
+ },
3308
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
3309
+ },
3310
+ {
3311
+ zigbeeModel: ["lumi.airmonitor.acn01"],
3312
+ model: "VOCKQJK11LM",
3313
+ vendor: "Aqara",
3314
+ whiteLabel: [{ vendor: "Aqara", model: "AAQS-S01" }],
3315
+ description: "TVOC air quality monitor",
3316
+ fromZigbee: [fromZigbee_1.default.battery, lumi.fromZigbee.lumi_specific],
3317
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3318
+ exposes: [e.device_temperature(), e.battery(), e.battery_voltage()],
3319
+ extend: [
3320
+ m.quirkCheckinInterval("1_HOUR"),
3321
+ m.quirkAddEndpointCluster({
3322
+ endpointID: 1,
3323
+ inputClusters: ["msTemperatureMeasurement", "msRelativeHumidity", "genAnalogInput", "manuSpecificLumi"],
3324
+ }),
3325
+ lumiAirQuality(),
3326
+ lumiVoc(),
3327
+ m.temperature(),
3328
+ m.humidity(),
3329
+ lumiDisplayUnit(),
3330
+ lumiOutageCountRestoreBindReporting(),
3331
+ lumiZigbeeOTA(),
3332
+ ],
3333
+ configure: async (device, coordinatorEndpoint) => {
3334
+ const endpoint = device.getEndpoint(1);
3335
+ const binds = ["genPowerCfg"];
3336
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
3337
+ await reporting.batteryVoltage(endpoint);
3338
+ },
3339
+ },
3340
+ {
3341
+ zigbeeModel: ["lumi.switch.b2nc01"],
3342
+ model: "QBKG41LM",
3343
+ vendor: "Aqara",
3344
+ description: "Smart wall switch E1 (with neutral, double rocker)",
3345
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
3346
+ toZigbee: [
3347
+ toZigbee_1.default.on_off,
3348
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
3349
+ lumi.toZigbee.lumi_switch_power_outage_memory,
3350
+ lumi.toZigbee.lumi_flip_indicator_light,
3351
+ ],
3352
+ meta: { multiEndpoint: true },
3353
+ endpoint: (device) => {
3354
+ return { left: 1, right: 2 };
3355
+ },
3356
+ exposes: [
3357
+ e.switch().withEndpoint("left"),
3358
+ e.switch().withEndpoint("right"),
3359
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for left button").withEndpoint("left"),
3360
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for right button").withEndpoint("right"),
3361
+ e.action(["single_left", "double_left", "single_right", "double_right", "single_both", "double_both"]),
3362
+ e.power_outage_memory(),
3363
+ e.device_temperature(),
3364
+ e.flip_indicator_light(),
3365
+ ],
3366
+ configure: async (device, coordinatorEndpoint) => {
3367
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
3368
+ },
3369
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
3370
+ },
3371
+ {
3372
+ zigbeeModel: ["lumi.plug.macn01"],
3373
+ model: "ZNCZ15LM",
3374
+ vendor: "Aqara",
3375
+ description: "Smart plug T1, CN",
3376
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_specific],
3377
+ toZigbee: [
3378
+ toZigbee_1.default.on_off,
3379
+ lumi.toZigbee.lumi_switch_power_outage_memory,
3380
+ lumi.toZigbee.lumi_led_disabled_night,
3381
+ lumi.toZigbee.lumi_overload_protection,
3382
+ lumi.toZigbee.lumi_socket_button_lock,
3383
+ ],
3384
+ exposes: [
3385
+ e.switch(),
3386
+ e.power().withAccess(ea.STATE),
3387
+ e.energy(),
3388
+ e.device_temperature().withAccess(ea.STATE),
3389
+ e.voltage(),
3390
+ e.current(),
3391
+ e.consumer_connected().withAccess(ea.STATE),
3392
+ e.power_outage_memory(),
3393
+ e.led_disabled_night(),
3394
+ e.button_lock(),
3395
+ e.overload_protection(100, 2500),
3396
+ ],
3397
+ extend: [lumiZigbeeOTA()],
3398
+ },
3399
+ {
3400
+ zigbeeModel: ["lumi.switch.b1nc01"],
3401
+ model: "QBKG40LM",
3402
+ vendor: "Aqara",
3403
+ description: "Smart wall switch E1 (with neutral, single rocker)",
3404
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
3405
+ toZigbee: [
3406
+ toZigbee_1.default.on_off,
3407
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
3408
+ lumi.toZigbee.lumi_switch_power_outage_memory,
3409
+ lumi.toZigbee.lumi_flip_indicator_light,
3410
+ ],
3411
+ exposes: [
3412
+ e.switch(),
3413
+ e.action(["single", "double"]),
3414
+ e.power_outage_memory(),
3415
+ e.device_temperature(),
3416
+ e.flip_indicator_light(),
3417
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode"),
3418
+ ],
3419
+ configure: async (device, coordinatorEndpoint) => {
3420
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
3421
+ },
3422
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
3423
+ },
3424
+ {
3425
+ zigbeeModel: ["lumi.remote.b1acn02"],
3426
+ model: "WXKG13LM",
3427
+ vendor: "Aqara",
3428
+ description: "Wireless mini switch T1",
3429
+ whiteLabel: [
3430
+ { vendor: "Aqara", model: "WB-R02D" },
3431
+ { vendor: "Yandex", model: "YNDX-00524" },
3432
+ ],
3433
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3434
+ fromZigbee: [fromZigbee_1.default.battery, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
3435
+ toZigbee: [],
3436
+ exposes: [e.battery(), e.battery_voltage(), e.action(["single", "double", "triple", "quadruple", "quintuple", "hold", "release", "many"])],
3437
+ configure: async (device, coordinatorEndpoint) => {
3438
+ const endpoint1 = device.getEndpoint(1);
3439
+ await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
3440
+ },
3441
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
3442
+ },
3443
+ {
3444
+ zigbeeModel: ["lumi.sen_ill.agl01"],
3445
+ model: "GZCGQ11LM",
3446
+ vendor: "Aqara",
3447
+ description: "Light sensor T1",
3448
+ fromZigbee: [fromZigbee_1.default.battery, lumi.fromZigbee.lumi_specific],
3449
+ toZigbee: [lumi.toZigbee.lumi_detection_period],
3450
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3451
+ exposes: [
3452
+ e.battery(),
3453
+ e.battery_voltage(),
3454
+ e
3455
+ .numeric("detection_period", exposes.access.ALL)
3456
+ .withValueMin(1)
3457
+ .withValueMax(59)
3458
+ .withUnit("s")
3459
+ .withDescription("Time interval in seconds to report after light changes"),
3460
+ ],
3461
+ configure: async (device, coordinatorEndpoint) => {
3462
+ const endpoint = device.getEndpoint(1);
3463
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
3464
+ await endpoint.read("manuSpecificLumi", [0x0000], { manufacturerCode: manufacturerCode });
3465
+ },
3466
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA(), m.illuminance({ reporting: false })],
3467
+ },
3468
+ {
3469
+ zigbeeModel: ["lumi.plug.sacn03"],
3470
+ model: "QBCZ15LM",
3471
+ vendor: "Aqara",
3472
+ description: "Smart wall outlet H1 (USB)",
3473
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_specific],
3474
+ toZigbee: [
3475
+ toZigbee_1.default.on_off,
3476
+ lumi.toZigbee.lumi_switch_power_outage_memory,
3477
+ lumi.toZigbee.lumi_led_disabled_night,
3478
+ lumi.toZigbee.lumi_button_switch_mode,
3479
+ lumi.toZigbee.lumi_overload_protection,
3480
+ lumi.toZigbee.lumi_socket_button_lock,
3481
+ ],
3482
+ meta: { multiEndpoint: true, multiEndpointSkip: ["power", "energy"] },
3483
+ endpoint: () => {
3484
+ return { relay: 1, usb: 2 };
3485
+ },
3486
+ exposes: [
3487
+ e.switch().withEndpoint("relay"),
3488
+ e.switch().withEndpoint("usb"),
3489
+ e.power().withAccess(ea.STATE),
3490
+ e.energy(),
3491
+ e.device_temperature().withAccess(ea.STATE),
3492
+ e.voltage(),
3493
+ e.current(),
3494
+ e.power_outage_memory(),
3495
+ e.led_disabled_night(),
3496
+ e.button_lock(),
3497
+ e
3498
+ .enum("button_switch_mode", exposes.access.ALL, ["relay", "relay_and_usb"])
3499
+ .withDescription("Control both relay and usb or only the relay with the physical switch button"),
3500
+ e.overload_protection(100, 2500),
3501
+ ],
3502
+ extend: [lumiZigbeeOTA()],
3503
+ },
3504
+ {
3505
+ zigbeeModel: ["lumi.magnet.agl02"],
3506
+ model: "MCCGQ12LM",
3507
+ vendor: "Aqara",
3508
+ description: "Door and window sensor T1",
3509
+ whiteLabel: [
3510
+ { vendor: "Aqara", model: "DW-S03D" },
3511
+ { vendor: "Yandex", model: "YNDX-00520" },
3512
+ ],
3513
+ fromZigbee: [lumi.fromZigbee.lumi_contact, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.ias_contact_alarm_1],
3514
+ toZigbee: [],
3515
+ exposes: [e.contact(), e.battery(), e.battery_voltage()],
3516
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3517
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
3518
+ },
3519
+ {
3520
+ zigbeeModel: ["lumi.plug.sacn02"],
3521
+ model: "QBCZ14LM",
3522
+ vendor: "Aqara",
3523
+ description: "Smart wall outlet T1",
3524
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_specific],
3525
+ toZigbee: [
3526
+ toZigbee_1.default.on_off,
3527
+ lumi.toZigbee.lumi_switch_power_outage_memory,
3528
+ lumi.toZigbee.lumi_led_disabled_night,
3529
+ lumi.toZigbee.lumi_overload_protection,
3530
+ lumi.toZigbee.lumi_socket_button_lock,
3531
+ ],
3532
+ exposes: [
3533
+ e.switch(),
3534
+ e.power().withAccess(ea.STATE),
3535
+ e.energy(),
3536
+ e.device_temperature().withAccess(ea.STATE),
3537
+ e.voltage(),
3538
+ e.current(),
3539
+ e.power_outage_memory(),
3540
+ e.led_disabled_night(),
3541
+ e.button_lock(),
3542
+ e.overload_protection(100, 2500),
3543
+ ],
3544
+ extend: [lumiZigbeeOTA()],
3545
+ },
3546
+ {
3547
+ zigbeeModel: ["lumi.remote.rkba01"],
3548
+ model: "ZNXNKG02LM",
3549
+ vendor: "Aqara",
3550
+ description: "Smart rotary knob H1 (wireless)",
3551
+ extend: [
3552
+ m.quirkCheckinInterval("1_HOUR"),
3553
+ lumiPreventReset(),
3554
+ lumiCommandMode(),
3555
+ lumiAction({ actionLookup: { hold: 0, single: 1, double: 2, release: 255 } }),
3556
+ lumiBattery({ voltageToPercentage: { min: 2850, max: 3000 } }),
3557
+ lumiKnobRotation(),
3558
+ m.enumLookup({
3559
+ name: "sensitivity",
3560
+ lookup: { low: 720, medium: 360, high: 180 },
3561
+ cluster: "manuSpecificLumi",
3562
+ attribute: { ID: 0x0234, type: 0x21 },
3563
+ description: "Rotation sensitivity",
3564
+ zigbeeCommandOptions: { manufacturerCode },
3565
+ }),
3566
+ ],
3567
+ },
3568
+ {
3569
+ zigbeeModel: ["lumi.remote.acn003"],
3570
+ model: "WXKG16LM",
3571
+ vendor: "Aqara",
3572
+ description: "Wireless remote switch E1 (single rocker)",
3573
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3574
+ extend: [m.quirkCheckinInterval("1_HOUR")],
3575
+ fromZigbee: [lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
3576
+ toZigbee: [lumi.toZigbee.lumi_switch_click_mode],
3577
+ exposes: [
3578
+ e.battery(),
3579
+ e.battery_voltage(),
3580
+ e.action(["single", "double", "hold"]),
3581
+ e
3582
+ .enum("click_mode", ea.ALL, ["fast", "multi"])
3583
+ .withDescription("Click mode, fast: only supports single click which will be send immediately after clicking." +
3584
+ "multi: supports more events like double and hold"),
3585
+ ],
3586
+ configure: async (device, coordinatorEndpoint) => {
3587
+ await device.getEndpoint(1).write("manuSpecificLumi", { 293: { value: 0x02, type: 0x20 } }, { manufacturerCode: manufacturerCode });
3588
+ },
3589
+ },
3590
+ {
3591
+ zigbeeModel: ["lumi.remote.acn004"],
3592
+ model: "WXKG17LM",
3593
+ vendor: "Aqara",
3594
+ description: "Wireless remote switch E1 (double rocker)",
3595
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3596
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiPreventReset()],
3597
+ exposes: [
3598
+ e.battery(),
3599
+ e.battery_voltage(),
3600
+ e.action(["single_left", "single_right", "single_both", "double_left", "double_right", "hold_left", "hold_right"]),
3601
+ e
3602
+ .enum("click_mode", ea.ALL, ["fast", "multi"])
3603
+ .withDescription("Click mode, fast: only supports single click which will be send immediately after clicking, multi: supports more events like double and hold"),
3604
+ ],
3605
+ fromZigbee: [lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
3606
+ toZigbee: [lumi.toZigbee.lumi_switch_click_mode],
3607
+ configure: async (device, coordinatorEndpoint) => {
3608
+ const endpoint1 = device.getEndpoint(1);
3609
+ // set multiclick mode
3610
+ await endpoint1.write("manuSpecificLumi", { 293: { value: 0x02, type: 0x20 } }, { manufacturerCode: manufacturerCode });
3611
+ },
3612
+ },
3613
+ {
3614
+ zigbeeModel: ["lumi.remote.b18ac1"],
3615
+ model: "WXKG14LM",
3616
+ vendor: "Aqara",
3617
+ description: "Wireless remote switch H1 (single rocker)",
3618
+ fromZigbee: [lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.command_toggle],
3619
+ toZigbee: [lumi.toZigbee.lumi_switch_click_mode, lumi.toZigbee.lumi_operation_mode_opple],
3620
+ exposes: [
3621
+ e.battery(),
3622
+ e.battery_voltage(),
3623
+ e.action(["single", "double", "triple", "hold"]),
3624
+ e
3625
+ .enum("click_mode", ea.ALL, ["fast", "multi"])
3626
+ .withDescription("Click mode, fast: only supports single click which will be send immediately after clicking." +
3627
+ "multi: supports more events like double and hold"),
3628
+ e
3629
+ .enum("operation_mode", ea.ALL, ["command", "event"])
3630
+ .withDescription('Operation mode, select "command" to enable bindings (wake up the device before changing modes!)'),
3631
+ ],
3632
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3633
+ extend: [m.quirkCheckinInterval("1_HOUR")],
3634
+ configure: async (device, coordinatorEndpoint) => {
3635
+ const endpoint1 = device.getEndpoint(1);
3636
+ await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
3637
+ await endpoint1.read("manuSpecificLumi", [0x0125], { manufacturerCode: manufacturerCode });
3638
+ },
3639
+ },
3640
+ {
3641
+ zigbeeModel: ["lumi.airrtc.agl001"],
3642
+ model: "SRTS-A01",
3643
+ vendor: "Aqara",
3644
+ description: "Smart radiator thermostat E1",
3645
+ fromZigbee: [lumi.fromZigbee.lumi_trv, fromZigbee_1.default.thermostat, fromZigbee_1.default.battery],
3646
+ toZigbee: [lumi.toZigbee.lumi_trv, toZigbee_1.default.thermostat_occupied_heating_setpoint],
3647
+ exposes: [
3648
+ e.setup().withDescription("Indicates if the device is in setup mode (E11)"),
3649
+ e
3650
+ .climate()
3651
+ .withSetpoint("occupied_heating_setpoint", 5, 30, 0.5)
3652
+ .withLocalTemperature(ea.STATE, "Current temperature measured by the internal or external sensor")
3653
+ .withSystemMode(["off", "heat"], ea.ALL)
3654
+ .withPreset(["manual", "away", "auto"])
3655
+ .setAccess("preset", ea.ALL),
3656
+ e.temperature_sensor_select(["internal", "external"]).withAccess(ea.ALL),
3657
+ e.external_temperature_input().withDescription("Input for remote temperature sensor (when sensor is set to external)"),
3658
+ e.calibrated().withDescription("Indicates if this valve is calibrated, use the calibrate option to calibrate"),
3659
+ e.enum("calibrate", ea.ALL, ["calibrate"]).withDescription("Calibrates the valve").withCategory("config"),
3660
+ e.child_lock().withAccess(ea.ALL),
3661
+ e.window_detection_bool(),
3662
+ e.window_open(),
3663
+ e.valve_detection_bool(),
3664
+ e
3665
+ .valve_alarm()
3666
+ .withDescription("Notifies of a temperature control abnormality if valve detection is enabled " +
3667
+ "(e.g., thermostat not installed correctly, valve failure or incorrect calibration, " +
3668
+ "incorrect link to external temperature sensor)"),
3669
+ e.away_preset_temperature().withAccess(ea.ALL),
3670
+ e.battery_voltage(),
3671
+ e.battery(),
3672
+ e.power_outage_count(),
3673
+ e.device_temperature(),
3674
+ e.schedule(),
3675
+ e
3676
+ .schedule_settings()
3677
+ .withDescription("Smart schedule configuration (default: mon,tue,wed,thu,fri|8:00,24.0|18:00,17.0|23:00,22.0|8:00,22.0)"),
3678
+ ],
3679
+ configure: async (device, coordinatorEndpoint) => {
3680
+ const endpoint = device.getEndpoint(1);
3681
+ // Initialize battery percentage and voltage
3682
+ await endpoint.read("manuSpecificLumi", [0x040a], { manufacturerCode: manufacturerCode });
3683
+ await endpoint.read("genPowerCfg", ["batteryVoltage"]);
3684
+ },
3685
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
3686
+ },
3687
+ {
3688
+ zigbeeModel: ["aqara.feeder.acn001"],
3689
+ model: "ZNCWWSQ01LM",
3690
+ vendor: "Aqara",
3691
+ description: "Smart pet feeder C1",
3692
+ whiteLabel: [{ vendor: "Aqara", model: "PETC1-M01" }],
3693
+ fromZigbee: [lumi.fromZigbee.lumi_feeder],
3694
+ toZigbee: [lumi.toZigbee.lumi_feeder],
3695
+ exposes: [
3696
+ e.enum("feed", ea.STATE_SET, ["", "START"]).withDescription("Start feeding"),
3697
+ e.enum("feeding_source", ea.STATE, ["schedule", "manual", "remote"]).withDescription("Feeding source"),
3698
+ e.numeric("feeding_size", ea.STATE).withDescription("Feeding size").withUnit("portion"),
3699
+ e.numeric("portions_per_day", ea.STATE).withDescription("Portions per day"),
3700
+ e.numeric("weight_per_day", ea.STATE).withDescription("Weight per day").withUnit("g"),
3701
+ e.binary("error", ea.STATE, true, false).withDescription("Indicates whether there is an error with the feeder"),
3702
+ e
3703
+ .list("schedule", ea.STATE_SET, e
3704
+ .composite("dayTime", "dayTime", exposes.access.STATE_SET)
3705
+ .withFeature(e.enum("days", exposes.access.STATE_SET, [
3706
+ "everyday",
3707
+ "workdays",
3708
+ "weekend",
3709
+ "mon",
3710
+ "tue",
3711
+ "wed",
3712
+ "thu",
3713
+ "fri",
3714
+ "sat",
3715
+ "sun",
3716
+ "mon-wed-fri-sun",
3717
+ "tue-thu-sat",
3718
+ ]))
3719
+ .withFeature(e.numeric("hour", exposes.access.STATE_SET))
3720
+ .withFeature(e.numeric("minute", exposes.access.STATE_SET))
3721
+ .withFeature(e.numeric("size", exposes.access.STATE_SET)))
3722
+ .withDescription("Feeding schedule"),
3723
+ e
3724
+ .binary("led_indicator", ea.STATE_SET, "ON", "OFF")
3725
+ .withLabel("Disable LED at night")
3726
+ .withDescription("LED indicator will be disabled every day from 21:00 to 09:00")
3727
+ .withCategory("config"),
3728
+ e.child_lock(),
3729
+ e.enum("mode", ea.STATE_SET, ["schedule", "manual"]).withDescription("Feeding mode"),
3730
+ e
3731
+ .numeric("serving_size", ea.STATE_SET)
3732
+ .withValueMin(1)
3733
+ .withValueMax(10)
3734
+ .withDescription("One serving size")
3735
+ .withUnit("portion")
3736
+ .withCategory("config"),
3737
+ e
3738
+ .numeric("portion_weight", ea.STATE_SET)
3739
+ .withValueMin(1)
3740
+ .withValueMax(20)
3741
+ .withDescription("Portion weight")
3742
+ .withUnit("g")
3743
+ .withCategory("config"),
3744
+ ],
3745
+ extend: [lumiZigbeeOTA()],
3746
+ configure: async (device, coordinatorEndpoint) => {
3747
+ const endpoint = device.getEndpoint(1);
3748
+ await endpoint.read("manuSpecificLumi", [0xfff1], { manufacturerCode: manufacturerCode });
3749
+ device.powerSource = "Mains (single phase)";
3750
+ device.save();
3751
+ },
3752
+ },
3753
+ {
3754
+ zigbeeModel: ["lumi.remote.acn007"],
3755
+ model: "WXKG20LM",
3756
+ vendor: "Aqara",
3757
+ description: "Wireless mini switch E1",
3758
+ fromZigbee: [fromZigbee_1.default.battery, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
3759
+ toZigbee: [],
3760
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3761
+ extend: [m.quirkCheckinInterval("1_HOUR")],
3762
+ exposes: [
3763
+ e.battery(),
3764
+ e.battery_voltage(),
3765
+ e.action(["single", "double", "hold", "release"]),
3766
+ e.device_temperature(),
3767
+ e.power_outage_count(),
3768
+ ],
3769
+ },
3770
+ {
3771
+ zigbeeModel: ["lumi.remote.acn009"],
3772
+ model: "WXKG22LM",
3773
+ vendor: "Aqara",
3774
+ description: "Wireless remote switch H1M (double rocker)",
3775
+ fromZigbee: [fromZigbee_1.default.battery, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.command_toggle],
3776
+ toZigbee: [lumi.toZigbee.lumi_switch_click_mode, lumi.toZigbee.lumi_operation_mode_opple],
3777
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } }, multiEndpoint: true },
3778
+ extend: [m.quirkCheckinInterval("1_HOUR")],
3779
+ exposes: [
3780
+ e.battery(),
3781
+ e.battery_voltage(),
3782
+ e.action([
3783
+ "single_left",
3784
+ "single_right",
3785
+ "single_both",
3786
+ "double_left",
3787
+ "double_right",
3788
+ "double_both",
3789
+ "triple_left",
3790
+ "triple_right",
3791
+ "triple_both",
3792
+ "hold_left",
3793
+ "hold_right",
3794
+ "hold_both",
3795
+ ]),
3796
+ e
3797
+ .enum("click_mode", ea.ALL, ["fast", "multi"])
3798
+ .withDescription("Click mode, fast: only supports single click which will be send immediately after clicking." +
3799
+ "multi: supports more events like double and hold"),
3800
+ e
3801
+ .enum("operation_mode", ea.ALL, ["command", "event"])
3802
+ .withDescription('Operation mode, select "command" to enable bindings (wake up the device before changing modes!)'),
3803
+ ],
3804
+ configure: async (device, coordinatorEndpoint) => {
3805
+ const endpoint1 = device.getEndpoint(1);
3806
+ const endpoint2 = device.getEndpoint(3);
3807
+ // set "event" mode
3808
+ await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode });
3809
+ // turn on the "multiple clicks" mode, otherwise the only "single click" events.
3810
+ // if value is 1 - there will be single clicks, 2 - multiple.
3811
+ await endpoint1.write("manuSpecificLumi", { 293: { value: 0x02, type: 0x20 } }, { manufacturerCode: manufacturerCode });
3812
+ await reporting.bind(endpoint1, coordinatorEndpoint, ["genOnOff", "genPowerCfg"]);
3813
+ await reporting.bind(endpoint2, coordinatorEndpoint, ["genOnOff"]);
3814
+ // TODO/BUG:
3815
+ // Did not understand how to separate the left and right keys in command mode -
3816
+ // the "toggleCommand" always arrives from the first endpoint
3817
+ },
3818
+ },
3819
+ {
3820
+ zigbeeModel: ["lumi.remote.b286acn03"],
3821
+ model: "WXKG04LM",
3822
+ vendor: "Aqara",
3823
+ description: "Wireless remote switch T1 (double rocker)",
3824
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3825
+ fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
3826
+ toZigbee: [],
3827
+ endpoint: (device) => {
3828
+ return { left: 1, right: 2, both: 3 };
3829
+ },
3830
+ exposes: [
3831
+ e.battery(),
3832
+ e.battery_voltage(),
3833
+ e.action([
3834
+ "button_1_hold",
3835
+ "button_1_release",
3836
+ "button_1_single",
3837
+ "button_1_double",
3838
+ "button_1_triple",
3839
+ "button_2_hold",
3840
+ "button_2_release",
3841
+ "button_2_single",
3842
+ "button_2_double",
3843
+ "button_2_triple",
3844
+ "button_3_hold",
3845
+ "button_3_release",
3846
+ "button_3_single",
3847
+ "button_3_double",
3848
+ "button_3_triple",
3849
+ ]),
3850
+ ],
3851
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
3852
+ },
3853
+ {
3854
+ zigbeeModel: ["lumi.switch.acn048"],
3855
+ model: "ZNQBKG38LM",
3856
+ vendor: "Aqara",
3857
+ description: "Smart wall switch Z1 (single rocker)",
3858
+ extend: [
3859
+ lumiZigbeeOTA(),
3860
+ lumiPreventReset(),
3861
+ lumiOnOff({ operationMode: true, powerOutageMemory: "enum", lockRelay: true }),
3862
+ lumiAction(),
3863
+ lumiElectricityMeter(),
3864
+ lumiPower(),
3865
+ lumiLedDisabledNight(),
3866
+ lumiClickMode({ attribute: { ID: 0x0286, type: 0x20 } }),
3867
+ lumiSetEventMode(),
3868
+ ],
3869
+ },
3870
+ {
3871
+ zigbeeModel: ["lumi.switch.acn049"],
3872
+ model: "ZNQBKG39LM",
3873
+ vendor: "Aqara",
3874
+ description: "Smart wall switch Z1 (double rocker)",
3875
+ extend: [
3876
+ lumiZigbeeOTA(),
3877
+ lumiPreventReset(),
3878
+ m.deviceEndpoints({ endpoints: { top: 1, bottom: 2 } }),
3879
+ lumiOnOff({
3880
+ operationMode: true,
3881
+ powerOutageMemory: "enum",
3882
+ lockRelay: true,
3883
+ endpointNames: ["top", "bottom"],
3884
+ }),
3885
+ lumiAction({ endpointNames: ["top", "bottom"] }),
3886
+ lumiElectricityMeter(),
3887
+ lumiPower(),
3888
+ lumiLedDisabledNight(),
3889
+ lumiClickMode({ attribute: { ID: 0x0286, type: 0x20 } }),
3890
+ lumiSetEventMode(),
3891
+ ],
3892
+ },
3893
+ {
3894
+ zigbeeModel: ["lumi.switch.acn054"],
3895
+ model: "ZNQBKG40LM",
3896
+ vendor: "Aqara",
3897
+ description: "Smart wall switch Z1 (triple rocker)",
3898
+ extend: [
3899
+ lumiZigbeeOTA(),
3900
+ lumiPreventReset(),
3901
+ m.deviceEndpoints({ endpoints: { top: 1, center: 2, bottom: 3 } }),
3902
+ lumiOnOff({
3903
+ operationMode: true,
3904
+ powerOutageMemory: "enum",
3905
+ lockRelay: true,
3906
+ endpointNames: ["top", "center", "bottom"],
3907
+ }),
3908
+ lumiAction({ endpointNames: ["top", "center", "bottom"] }),
3909
+ lumiElectricityMeter(),
3910
+ lumiPower(),
3911
+ lumiLedDisabledNight(),
3912
+ lumiClickMode({ attribute: { ID: 0x0286, type: 0x20 } }),
3913
+ lumiSetEventMode(),
3914
+ ],
3915
+ },
3916
+ {
3917
+ zigbeeModel: ["lumi.switch.acn055"],
3918
+ model: "ZNQBKG41LM",
3919
+ vendor: "Aqara",
3920
+ description: "Smart wall switch Z1 (quadruple rocker)",
3921
+ extend: [
3922
+ lumiZigbeeOTA(),
3923
+ lumiPreventReset(),
3924
+ m.deviceEndpoints({ endpoints: { top: 1, center: 2, bottom: 3, wireless: 4 } }),
3925
+ lumiOnOff({
3926
+ operationMode: true,
3927
+ powerOutageMemory: "enum",
3928
+ lockRelay: true,
3929
+ endpointNames: ["top", "center", "bottom"],
3930
+ }),
3931
+ lumiAction({
3932
+ actionLookup: { hold: 0, single: 1, double: 2, release: 255 },
3933
+ endpointNames: ["top", "center", "bottom", "wireless"],
3934
+ }),
3935
+ lumiElectricityMeter(),
3936
+ lumiPower(),
3937
+ lumiLedDisabledNight(),
3938
+ lumiClickMode({ attribute: { ID: 0x0286, type: 0x20 } }),
3939
+ lumiSetEventMode(),
3940
+ ],
3941
+ },
3942
+ {
3943
+ zigbeeModel: ["lumi.switch.acn056"],
3944
+ model: "ZNQBKG42LM",
3945
+ vendor: "Aqara",
3946
+ description: "Smart wall switch Z1 Pro (single rocker)",
3947
+ extend: [
3948
+ lumiZigbeeOTA(),
3949
+ lumiPreventReset(),
3950
+ lumiOnOff({ operationMode: true, powerOutageMemory: "enum", lockRelay: true }),
3951
+ lumiAction({ extraActions: ["slider_single", "slider_double", "slider_hold", "slider_up", "slider_down"] }),
3952
+ lumiElectricityMeter(),
3953
+ lumiPower(),
3954
+ lumiClickMode({ attribute: { ID: 0x0286, type: 0x20 } }),
3955
+ lumiSlider(),
3956
+ lumiSwitchMode(),
3957
+ ],
3958
+ },
3959
+ {
3960
+ zigbeeModel: ["lumi.switch.acn057"],
3961
+ model: "ZNQBKG43LM",
3962
+ vendor: "Aqara",
3963
+ description: "Smart wall switch Z1 Pro (double rocker)",
3964
+ extend: [
3965
+ lumiZigbeeOTA(),
3966
+ lumiPreventReset(),
3967
+ m.deviceEndpoints({ endpoints: { top: 1, bottom: 2 } }),
3968
+ lumiOnOff({
3969
+ operationMode: true,
3970
+ powerOutageMemory: "enum",
3971
+ lockRelay: true,
3972
+ endpointNames: ["top", "bottom"],
3973
+ }),
3974
+ lumiAction({
3975
+ endpointNames: ["top", "bottom"],
3976
+ extraActions: ["slider_single", "slider_double", "slider_hold", "slider_up", "slider_down"],
3977
+ }),
3978
+ lumiElectricityMeter(),
3979
+ lumiPower(),
3980
+ lumiClickMode({ attribute: { ID: 0x0286, type: 0x20 } }),
3981
+ lumiSlider(),
3982
+ lumiSwitchMode(),
3983
+ ],
3984
+ },
3985
+ {
3986
+ zigbeeModel: ["lumi.switch.acn058"],
3987
+ model: "ZNQBKG44LM",
3988
+ vendor: "Aqara",
3989
+ description: "Smart wall switch Z1 Pro (triple rocker)",
3990
+ extend: [
3991
+ lumiZigbeeOTA(),
3992
+ lumiPreventReset(),
3993
+ m.deviceEndpoints({ endpoints: { top: 1, center: 2, bottom: 3 } }),
3994
+ lumiOnOff({
3995
+ operationMode: true,
3996
+ powerOutageMemory: "enum",
3997
+ lockRelay: true,
3998
+ endpointNames: ["top", "center", "bottom"],
3999
+ }),
4000
+ lumiAction({
4001
+ endpointNames: ["top", "center", "bottom"],
4002
+ extraActions: ["slider_single", "slider_double", "slider_hold", "slider_up", "slider_down"],
4003
+ }),
4004
+ lumiElectricityMeter(),
4005
+ lumiPower(),
4006
+ lumiClickMode({ attribute: { ID: 0x0286, type: 0x20 } }),
4007
+ lumiSlider(),
4008
+ lumiSwitchMode(),
4009
+ ],
4010
+ },
4011
+ {
4012
+ zigbeeModel: ["lumi.switch.acn059"],
4013
+ model: "ZNQBKG45LM",
4014
+ vendor: "Aqara",
4015
+ description: "Smart wall switch Z1 Pro (quadruple rocker)",
4016
+ extend: [
4017
+ lumiZigbeeOTA(),
4018
+ lumiPreventReset(),
4019
+ m.deviceEndpoints({ endpoints: { top: 1, center: 2, bottom: 3, wireless: 4 } }),
4020
+ lumiOnOff({
4021
+ operationMode: true,
4022
+ powerOutageMemory: "enum",
4023
+ lockRelay: true,
4024
+ endpointNames: ["top", "center", "bottom"],
4025
+ }),
4026
+ lumiAction({
4027
+ actionLookup: { hold: 0, single: 1, double: 2, release: 255 },
4028
+ endpointNames: ["top", "center", "bottom", "wireless"],
4029
+ extraActions: ["slider_single", "slider_double", "slider_hold", "slider_up", "slider_down"],
4030
+ }),
4031
+ lumiElectricityMeter(),
4032
+ lumiPower(),
4033
+ lumiClickMode({ attribute: { ID: 0x0286, type: 0x20 } }),
4034
+ lumiSlider(),
4035
+ lumiSwitchMode(),
4036
+ ],
4037
+ },
4038
+ {
4039
+ zigbeeModel: ["lumi.switch.acn061"],
4040
+ model: "WS-K01D",
4041
+ vendor: "Aqara",
4042
+ description: "Smart wall switch H1 20A (with neutral, single rocker)",
4043
+ extend: [
4044
+ lumiZigbeeOTA(),
4045
+ lumiPreventReset(),
4046
+ lumiOnOff({ operationMode: true, powerOutageMemory: "binary" }),
4047
+ lumiAction({ actionLookup: { single: 1, double: 2 } }),
4048
+ lumiElectricityMeter(),
4049
+ lumiPower(),
4050
+ lumiLedDisabledNight(),
4051
+ lumiSetEventMode(),
4052
+ lumiFlipIndicatorLight(),
4053
+ ],
4054
+ },
4055
+ {
4056
+ zigbeeModel: ["lumi.remote.cagl02"],
4057
+ model: "CTP-R01",
4058
+ vendor: "Aqara",
4059
+ whiteLabel: [{ vendor: "Aqara", model: "MFCZQ12LM" }],
4060
+ description: "Cube T1 Pro",
4061
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
4062
+ extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
4063
+ fromZigbee: [
4064
+ lumi.fromZigbee.lumi_specific,
4065
+ lumi.fromZigbee.lumi_action_multistate,
4066
+ lumi.fromZigbee.lumi_action_analog,
4067
+ fromZigbee_1.default.ignore_onoff_report,
4068
+ ],
4069
+ toZigbee: [lumi.toZigbee.lumi_cube_operation_mode],
4070
+ exposes: [
4071
+ e.battery(),
4072
+ e.battery_voltage(),
4073
+ e.power_outage_count(false),
4074
+ e
4075
+ .enum("operation_mode", ea.SET, ["action_mode", "scene_mode"])
4076
+ .withDescription("[Soft Switch]: There is a configuration window, opens once an hour on itself, " +
4077
+ "only during which the cube will respond to mode switch. " +
4078
+ "Mode switch will be scheduled to take effect when the window becomes available. " +
4079
+ "You can also give it a throw action (no backward motion) to force a respond! " +
4080
+ "Otherwise, you may open lid and click LINK once to make the cube respond immediately. " +
4081
+ "[Hard Switch]: Open lid and click LINK button 5 times."),
4082
+ e.cube_side("side"),
4083
+ e
4084
+ .action([
4085
+ "shake",
4086
+ "throw",
4087
+ "tap",
4088
+ "slide",
4089
+ "flip180",
4090
+ "flip90",
4091
+ "hold",
4092
+ "side_up",
4093
+ "rotate_left",
4094
+ "rotate_right",
4095
+ "1_min_inactivity",
4096
+ "flip_to_side",
4097
+ ])
4098
+ .withDescription("Triggered action"),
4099
+ e.cube_side("action_from_side"),
4100
+ e.angle("action_angle"),
4101
+ ],
4102
+ configure: async (device, coordinatorEndpoint) => {
4103
+ device.softwareBuildID = `0.0.0_00${device.applicationVersion}`;
4104
+ device.save();
4105
+ const endpoint = device.getEndpoint(1);
4106
+ await endpoint.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableDefaultResponse: true, disableResponse: true });
4107
+ await endpoint.read("manuSpecificLumi", [0x148], {
4108
+ manufacturerCode: manufacturerCode,
4109
+ disableDefaultResponse: true,
4110
+ disableResponse: true,
4111
+ });
4112
+ },
4113
+ },
4114
+ {
4115
+ zigbeeModel: ["lumi.switch.acn040"],
4116
+ model: "ZNQBKG31LM",
4117
+ vendor: "Aqara",
4118
+ description: "Smart wall switch E1 (with neutral, triple rocker)",
4119
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
4120
+ toZigbee: [
4121
+ toZigbee_1.default.on_off,
4122
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
4123
+ lumi.toZigbee.lumi_switch_power_outage_memory,
4124
+ lumi.toZigbee.lumi_switch_mode_switch,
4125
+ lumi.toZigbee.lumi_flip_indicator_light,
4126
+ ],
4127
+ endpoint: (device) => {
4128
+ return { left: 1, center: 2, right: 3 };
4129
+ },
4130
+ meta: { multiEndpoint: true },
4131
+ exposes: [
4132
+ e.switch().withEndpoint("left"),
4133
+ e.switch().withEndpoint("center"),
4134
+ e.switch().withEndpoint("right"),
4135
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for left button").withEndpoint("left"),
4136
+ e
4137
+ .enum("operation_mode", ea.ALL, ["control_relay", "decoupled"])
4138
+ .withDescription("Decoupled mode for center button")
4139
+ .withEndpoint("center"),
4140
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for right button").withEndpoint("right"),
4141
+ e.action([
4142
+ "single_left",
4143
+ "double_left",
4144
+ "single_center",
4145
+ "double_center",
4146
+ "single_right",
4147
+ "double_right",
4148
+ "single_left_center",
4149
+ "double_left_center",
4150
+ "single_left_right",
4151
+ "double_left_right",
4152
+ "single_center_right",
4153
+ "double_center_right",
4154
+ "single_all",
4155
+ "double_all",
4156
+ ]),
4157
+ e.power_outage_memory(),
4158
+ e.device_temperature(),
4159
+ e.flip_indicator_light(),
4160
+ ],
4161
+ configure: async (device, coordinatorEndpoint) => {
4162
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
4163
+ },
4164
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
4165
+ },
4166
+ {
4167
+ zigbeeModel: ["lumi.switch.acn029"],
4168
+ model: "ZNQBKG24LM",
4169
+ vendor: "Aqara",
4170
+ description: "Smart wall switch H1M (with neutral, single rocker)",
4171
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_power, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
4172
+ toZigbee: [
4173
+ toZigbee_1.default.on_off,
4174
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
4175
+ lumi.toZigbee.lumi_switch_power_outage_memory,
4176
+ lumi.toZigbee.lumi_led_disabled_night,
4177
+ lumi.toZigbee.lumi_flip_indicator_light,
4178
+ ],
4179
+ exposes: [
4180
+ e.switch(),
4181
+ e.power(),
4182
+ e.energy(),
4183
+ e.voltage(),
4184
+ e.device_temperature(),
4185
+ e.action(["single", "double"]),
4186
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode"),
4187
+ e.power_outage_memory(),
4188
+ e.led_disabled_night(),
4189
+ e.flip_indicator_light(),
4190
+ ],
4191
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
4192
+ },
4193
+ {
4194
+ zigbeeModel: ["lumi.switch.acn030"],
4195
+ model: "ZNQBKG25LM",
4196
+ vendor: "Aqara",
4197
+ description: "Smart wall switch H1M (with neutral, double rocker)",
4198
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific, lumi.fromZigbee.lumi_power],
4199
+ toZigbee: [
4200
+ toZigbee_1.default.on_off,
4201
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
4202
+ lumi.toZigbee.lumi_switch_power_outage_memory,
4203
+ lumi.toZigbee.lumi_led_disabled_night,
4204
+ lumi.toZigbee.lumi_flip_indicator_light,
4205
+ ],
4206
+ endpoint: (device) => {
4207
+ return { left: 1, right: 2 };
4208
+ },
4209
+ meta: { multiEndpoint: true, multiEndpointSkip: ["power", "energy"] },
4210
+ exposes: [
4211
+ e.power(),
4212
+ e.energy(),
4213
+ e.voltage(),
4214
+ e.switch().withEndpoint("left"),
4215
+ e.switch().withEndpoint("right"),
4216
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for left button").withEndpoint("left"),
4217
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for right button").withEndpoint("right"),
4218
+ e.action([
4219
+ "single_left",
4220
+ "double_left",
4221
+ "single_right",
4222
+ "double_right",
4223
+ "single_left_right",
4224
+ "double_left_right",
4225
+ "single_all",
4226
+ "double_all",
4227
+ ]),
4228
+ e.power_outage_memory(),
4229
+ e.led_disabled_night(),
4230
+ e.device_temperature(),
4231
+ e.flip_indicator_light(),
4232
+ ],
4233
+ configure: async (device, coordinatorEndpoint) => {
4234
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
4235
+ },
4236
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
4237
+ },
4238
+ {
4239
+ zigbeeModel: ["lumi.switch.acn031"],
4240
+ model: "ZNQBKG26LM",
4241
+ vendor: "Aqara",
4242
+ description: "Smart wall switch H1M (with neutral, triple rocker)",
4243
+ fromZigbee: [fromZigbee_1.default.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific, lumi.fromZigbee.lumi_power],
4244
+ toZigbee: [
4245
+ toZigbee_1.default.on_off,
4246
+ lumi.toZigbee.lumi_switch_operation_mode_opple,
4247
+ lumi.toZigbee.lumi_switch_power_outage_memory,
4248
+ lumi.toZigbee.lumi_led_disabled_night,
4249
+ lumi.toZigbee.lumi_flip_indicator_light,
4250
+ ],
4251
+ endpoint: (device) => {
4252
+ return { left: 1, center: 2, right: 3 };
4253
+ },
4254
+ meta: { multiEndpoint: true, multiEndpointSkip: ["power", "energy"] },
4255
+ exposes: [
4256
+ e.power(),
4257
+ e.energy(),
4258
+ e.voltage(),
4259
+ e.switch().withEndpoint("left"),
4260
+ e.switch().withEndpoint("center"),
4261
+ e.switch().withEndpoint("right"),
4262
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for left button").withEndpoint("left"),
4263
+ e
4264
+ .enum("operation_mode", ea.ALL, ["control_relay", "decoupled"])
4265
+ .withDescription("Decoupled mode for center button")
4266
+ .withEndpoint("center"),
4267
+ e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for right button").withEndpoint("right"),
4268
+ e.action([
4269
+ "single_left",
4270
+ "double_left",
4271
+ "single_center",
4272
+ "double_center",
4273
+ "single_right",
4274
+ "double_right",
4275
+ "single_left_center",
4276
+ "double_left_center",
4277
+ "single_left_right",
4278
+ "double_left_right",
4279
+ "single_center_right",
4280
+ "double_center_right",
4281
+ "single_all",
4282
+ "double_all",
4283
+ ]),
4284
+ e.power_outage_memory(),
4285
+ e.led_disabled_night(),
4286
+ e.device_temperature(),
4287
+ e.flip_indicator_light(),
4288
+ ],
4289
+ configure: async (device, coordinatorEndpoint) => {
4290
+ await device.getEndpoint(1).write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
4291
+ },
4292
+ extend: [lumiZigbeeOTA(), lumiPreventReset()],
4293
+ },
4294
+ {
4295
+ zigbeeModel: ["lumi.plug.aeu001"],
4296
+ model: "WP-P01D",
4297
+ vendor: "Aqara",
4298
+ description: "Smart wall outlet H2 EU",
4299
+ extend: [
4300
+ lumiZigbeeOTA(),
4301
+ lumiOnOff({ powerOutageMemory: "enum" }),
4302
+ lumiPower(),
4303
+ lumiElectricityMeter(),
4304
+ lumiOverloadProtection(),
4305
+ lumiLedIndicator(),
4306
+ lumiButtonLock(),
4307
+ m.binary({
4308
+ name: "charging_protection",
4309
+ cluster: "manuSpecificLumi",
4310
+ attribute: { ID: 0x0202, type: 0x10 },
4311
+ valueOn: ["ON", 1],
4312
+ valueOff: ["OFF", 0],
4313
+ description: "Turn off the outlet if the power is below the set limit for half an hour",
4314
+ access: "ALL",
4315
+ zigbeeCommandOptions: { manufacturerCode },
4316
+ }),
4317
+ m.numeric({
4318
+ name: "charging_limit",
4319
+ cluster: "manuSpecificLumi",
4320
+ attribute: { ID: 0x0206, type: 0x39 },
4321
+ valueMin: 0.1,
4322
+ valueMax: 2,
4323
+ valueStep: 0.1,
4324
+ unit: "W",
4325
+ description: "Charging protection power limit",
4326
+ access: "ALL",
4327
+ zigbeeCommandOptions: { manufacturerCode },
4328
+ }),
4329
+ ],
4330
+ },
4331
+ {
4332
+ zigbeeModel: ["lumi.light.acn031"],
4333
+ model: "HCXDD12LM",
4334
+ vendor: "Aqara",
4335
+ description: "Ceiling light T1",
4336
+ extend: [
4337
+ m.deviceEndpoints({ endpoints: { white: 1, rgb: 2 } }),
4338
+ lumiLight({ colorTemp: true, powerOutageMemory: "light", endpointNames: ["white"] }),
4339
+ lumiLight({ colorTemp: true, deviceTemperature: false, powerOutageCount: false, color: { modes: ["xy", "hs"] }, endpointNames: ["rgb"] }),
4340
+ lumiZigbeeOTA(),
4341
+ ],
4342
+ },
4343
+ {
4344
+ zigbeeModel: ["lumi.light.acn032"],
4345
+ model: "CL-L02D",
4346
+ vendor: "Aqara",
4347
+ description: "Ceiling light T1M",
4348
+ extend: [
4349
+ m.deviceEndpoints({ endpoints: { white: 1, rgb: 2 } }),
4350
+ lumiLight({ colorTemp: true, endpointNames: ["white"] }),
4351
+ lumiLight({ colorTemp: true, deviceTemperature: false, powerOutageCount: false, color: { modes: ["xy", "hs"] }, endpointNames: ["rgb"] }),
4352
+ lumiZigbeeOTA(),
4353
+ m.enumLookup({
4354
+ name: "power_on_behaviour",
4355
+ lookup: { on: 0, previous: 1, off: 2 },
4356
+ cluster: "manuSpecificLumi",
4357
+ attribute: { ID: 0x0517, type: 0x20 },
4358
+ description: "Controls the behavior when the device is powered on after power loss",
4359
+ zigbeeCommandOptions: { manufacturerCode },
4360
+ }),
4361
+ ],
4362
+ },
4363
+ {
4364
+ zigbeeModel: ["lumi.switch.rkna01"],
4365
+ model: "ZNXNKG01LM",
4366
+ vendor: "Aqara",
4367
+ description: "Smart rotary knob H1 (with neutral)",
4368
+ extend: [
4369
+ lumiPreventReset(),
4370
+ m.deviceEndpoints({ endpoints: { left: 1, center: 2, right: 3 } }),
4371
+ lumiOnOff({ powerOutageMemory: "binary", endpointNames: ["left", "center", "right"] }),
4372
+ lumiCommandMode(),
4373
+ lumiAction({ actionLookup: { hold: 0, single: 1, double: 2, release: 255 } }),
4374
+ lumiKnobRotation(),
4375
+ lumiElectricityMeter(),
4376
+ lumiPower(),
4377
+ lumiZigbeeOTA(),
4378
+ ],
4379
+ },
4380
+ {
4381
+ zigbeeModel: ["lumi.valve.agl001"],
4382
+ model: "VC-X01D",
4383
+ vendor: "Aqara",
4384
+ description: "Valve controller T1",
4385
+ extend: [lumiZigbeeOTA(), m.onOff({ powerOnBehavior: false }), m.battery()],
4386
+ },
4387
+ {
4388
+ zigbeeModel: ["lumi.switch.agl009"],
4389
+ model: "WS-K07E",
4390
+ vendor: "Aqara",
4391
+ description: "Light switch H2 EU (single rocker)",
4392
+ extend: [
4393
+ lumiZigbeeOTA(),
4394
+ lumiPreventLeave(),
4395
+ m.deviceEndpoints({ endpoints: { up: 1, down: 4 } }),
4396
+ m.bindCluster({ endpointNames: ["up", "down"], cluster: "manuSpecificLumi", clusterType: "input" }),
4397
+ m.bindCluster({ endpointNames: ["up"], cluster: "genOnOff", clusterType: "input" }),
4398
+ m.electricityMeter({ voltage: false }),
4399
+ lumiLedIndicator(),
4400
+ lumiFlipIndicatorLight(),
4401
+ lumiAction({ endpointNames: ["up", "down"], actionLookup: { hold: 0, single: 1, double: 2, release: 255 } }),
4402
+ lumiOnOff({ powerOutageMemory: "enum", endpointNames: ["up"] }),
4403
+ lumiOperationMode({ description: "Decoupled mode for switch", endpointName: "up" }),
4404
+ lumiLockRelay({ description: "Lock switch", endpointName: "up" }),
4405
+ lumiMultiClick({ description: "Multi-click mode for down button", endpointName: "down" }),
4406
+ ],
4407
+ },
4408
+ {
4409
+ zigbeeModel: ["lumi.switch.agl010"],
4410
+ model: "WS-K08E",
4411
+ vendor: "Aqara",
4412
+ description: "Light switch H2 EU (double rocker)",
4413
+ extend: [
4414
+ lumiZigbeeOTA(),
4415
+ lumiPreventLeave(),
4416
+ m.deviceEndpoints({ endpoints: { left: 1, right: 2, left_down: 4, right_down: 5 } }),
4417
+ m.bindCluster({ endpointNames: ["left", "left_down", "right", "right_down"], cluster: "manuSpecificLumi", clusterType: "input" }),
4418
+ m.bindCluster({ endpointNames: ["left", "right"], cluster: "genOnOff", clusterType: "input" }),
4419
+ m.electricityMeter({ voltage: false }),
4420
+ lumiLedIndicator(),
4421
+ lumiFlipIndicatorLight(),
4422
+ lumiAction({ endpointNames: ["left", "left_down", "right", "right_down"], actionLookup: { hold: 0, single: 1, double: 2, release: 255 } }),
4423
+ lumiOnOff({ powerOutageMemory: "enum", endpointNames: ["left", "right"] }),
4424
+ lumiOperationMode({ description: "Decoupled mode for left switch", endpointName: "left" }),
4425
+ lumiOperationMode({ description: "Decoupled mode for right switch", endpointName: "right" }),
4426
+ lumiLockRelay({ description: "Lock left switch", endpointName: "left" }),
4427
+ lumiLockRelay({ description: "Lock right switch", endpointName: "right" }),
4428
+ lumiMultiClick({ description: "Multi-click mode for left down button", endpointName: "left_down" }),
4429
+ lumiMultiClick({ description: "Multi-click mode for right down button", endpointName: "right_down" }),
4430
+ ],
4431
+ },
4432
+ ];
4433
+ //# sourceMappingURL=lumi.js.map