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