@willieee802/zigbee-herdsman-converters 19.44.0 → 19.44.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1609) hide show
  1. package/dist/converters/actions.d.ts +36 -0
  2. package/dist/converters/actions.d.ts.map +1 -0
  3. package/dist/converters/actions.js +137 -0
  4. package/dist/converters/actions.js.map +1 -0
  5. package/dist/converters/fromZigbee.d.ts +293 -0
  6. package/dist/converters/fromZigbee.d.ts.map +1 -0
  7. package/dist/converters/fromZigbee.js +5192 -0
  8. package/dist/converters/fromZigbee.js.map +1 -0
  9. package/dist/converters/toZigbee.d.ts +235 -0
  10. package/dist/converters/toZigbee.d.ts.map +1 -0
  11. package/dist/converters/toZigbee.js +4577 -0
  12. package/dist/converters/toZigbee.js.map +1 -0
  13. package/dist/devices/ITCommander.d.ts +3 -0
  14. package/dist/devices/ITCommander.d.ts.map +1 -0
  15. package/dist/devices/ITCommander.js +73 -0
  16. package/dist/devices/ITCommander.js.map +1 -0
  17. package/dist/devices/acova.d.ts +3 -0
  18. package/dist/devices/acova.d.ts.map +1 -0
  19. package/dist/devices/acova.js +124 -0
  20. package/dist/devices/acova.js.map +1 -0
  21. package/dist/devices/acuity_brands_lighting.d.ts +3 -0
  22. package/dist/devices/acuity_brands_lighting.d.ts.map +1 -0
  23. package/dist/devices/acuity_brands_lighting.js +61 -0
  24. package/dist/devices/acuity_brands_lighting.js.map +1 -0
  25. package/dist/devices/adeo.d.ts +3 -0
  26. package/dist/devices/adeo.d.ts.map +1 -0
  27. package/dist/devices/adeo.js +518 -0
  28. package/dist/devices/adeo.js.map +1 -0
  29. package/dist/devices/adurosmart.d.ts +3 -0
  30. package/dist/devices/adurosmart.d.ts.map +1 -0
  31. package/dist/devices/adurosmart.js +235 -0
  32. package/dist/devices/adurosmart.js.map +1 -0
  33. package/dist/devices/aeotec.d.ts +3 -0
  34. package/dist/devices/aeotec.d.ts.map +1 -0
  35. package/dist/devices/aeotec.js +95 -0
  36. package/dist/devices/aeotec.js.map +1 -0
  37. package/dist/devices/airam.d.ts +3 -0
  38. package/dist/devices/airam.d.ts.map +1 -0
  39. package/dist/devices/airam.js +102 -0
  40. package/dist/devices/airam.js.map +1 -0
  41. package/dist/devices/airzone_aidoo.d.ts +3 -0
  42. package/dist/devices/airzone_aidoo.d.ts.map +1 -0
  43. package/dist/devices/airzone_aidoo.js +77 -0
  44. package/dist/devices/airzone_aidoo.js.map +1 -0
  45. package/dist/devices/ajax_online.d.ts +3 -0
  46. package/dist/devices/ajax_online.d.ts.map +1 -0
  47. package/dist/devices/ajax_online.js +83 -0
  48. package/dist/devices/ajax_online.js.map +1 -0
  49. package/dist/devices/akuvox.d.ts +3 -0
  50. package/dist/devices/akuvox.d.ts.map +1 -0
  51. package/dist/devices/akuvox.js +65 -0
  52. package/dist/devices/akuvox.js.map +1 -0
  53. package/dist/devices/alchemy.d.ts +3 -0
  54. package/dist/devices/alchemy.d.ts.map +1 -0
  55. package/dist/devices/alchemy.js +54 -0
  56. package/dist/devices/alchemy.js.map +1 -0
  57. package/dist/devices/aldi.d.ts +3 -0
  58. package/dist/devices/aldi.d.ts.map +1 -0
  59. package/dist/devices/aldi.js +54 -0
  60. package/dist/devices/aldi.js.map +1 -0
  61. package/dist/devices/alecto.d.ts +3 -0
  62. package/dist/devices/alecto.d.ts.map +1 -0
  63. package/dist/devices/alecto.js +91 -0
  64. package/dist/devices/alecto.js.map +1 -0
  65. package/dist/devices/amina.d.ts +3 -0
  66. package/dist/devices/amina.d.ts.map +1 -0
  67. package/dist/devices/amina.js +360 -0
  68. package/dist/devices/amina.js.map +1 -0
  69. package/dist/devices/anchor.d.ts +3 -0
  70. package/dist/devices/anchor.d.ts.map +1 -0
  71. package/dist/devices/anchor.js +47 -0
  72. package/dist/devices/anchor.js.map +1 -0
  73. package/dist/devices/atlantic.d.ts +3 -0
  74. package/dist/devices/atlantic.d.ts.map +1 -0
  75. package/dist/devices/atlantic.js +147 -0
  76. package/dist/devices/atlantic.js.map +1 -0
  77. package/dist/devices/atsmart.d.ts +3 -0
  78. package/dist/devices/atsmart.d.ts.map +1 -0
  79. package/dist/devices/atsmart.js +47 -0
  80. package/dist/devices/atsmart.js.map +1 -0
  81. package/dist/devices/aubess.d.ts +3 -0
  82. package/dist/devices/aubess.d.ts.map +1 -0
  83. package/dist/devices/aubess.js +60 -0
  84. package/dist/devices/aubess.js.map +1 -0
  85. package/dist/devices/aurora_lighting.d.ts +3 -0
  86. package/dist/devices/aurora_lighting.d.ts.map +1 -0
  87. package/dist/devices/aurora_lighting.js +347 -0
  88. package/dist/devices/aurora_lighting.js.map +1 -0
  89. package/dist/devices/automaton.d.ts +3 -0
  90. package/dist/devices/automaton.d.ts.map +1 -0
  91. package/dist/devices/automaton.js +64 -0
  92. package/dist/devices/automaton.js.map +1 -0
  93. package/dist/devices/avatto.d.ts +3 -0
  94. package/dist/devices/avatto.d.ts.map +1 -0
  95. package/dist/devices/avatto.js +635 -0
  96. package/dist/devices/avatto.js.map +1 -0
  97. package/dist/devices/awox.d.ts +3 -0
  98. package/dist/devices/awox.d.ts.map +1 -0
  99. package/dist/devices/awox.js +352 -0
  100. package/dist/devices/awox.js.map +1 -0
  101. package/dist/devices/axis.d.ts +3 -0
  102. package/dist/devices/axis.d.ts.map +1 -0
  103. package/dist/devices/axis.js +59 -0
  104. package/dist/devices/axis.js.map +1 -0
  105. package/dist/devices/bacchus.d.ts +3 -0
  106. package/dist/devices/bacchus.d.ts.map +1 -0
  107. package/dist/devices/bacchus.js +902 -0
  108. package/dist/devices/bacchus.js.map +1 -0
  109. package/dist/devices/bankamp.d.ts +3 -0
  110. package/dist/devices/bankamp.d.ts.map +1 -0
  111. package/dist/devices/bankamp.js +47 -0
  112. package/dist/devices/bankamp.js.map +1 -0
  113. package/dist/devices/bega.d.ts +3 -0
  114. package/dist/devices/bega.d.ts.map +1 -0
  115. package/dist/devices/bega.js +68 -0
  116. package/dist/devices/bega.js.map +1 -0
  117. package/dist/devices/belkin.d.ts +3 -0
  118. package/dist/devices/belkin.d.ts.map +1 -0
  119. package/dist/devices/belkin.js +47 -0
  120. package/dist/devices/belkin.js.map +1 -0
  121. package/dist/devices/bitron.d.ts +3 -0
  122. package/dist/devices/bitron.d.ts.map +1 -0
  123. package/dist/devices/bitron.js +357 -0
  124. package/dist/devices/bitron.js.map +1 -0
  125. package/dist/devices/bituo_technik.d.ts +3 -0
  126. package/dist/devices/bituo_technik.d.ts.map +1 -0
  127. package/dist/devices/bituo_technik.js +487 -0
  128. package/dist/devices/bituo_technik.js.map +1 -0
  129. package/dist/devices/blaupunkt.d.ts +3 -0
  130. package/dist/devices/blaupunkt.d.ts.map +1 -0
  131. package/dist/devices/blaupunkt.js +64 -0
  132. package/dist/devices/blaupunkt.js.map +1 -0
  133. package/dist/devices/blitzwolf.d.ts +3 -0
  134. package/dist/devices/blitzwolf.d.ts.map +1 -0
  135. package/dist/devices/blitzwolf.js +77 -0
  136. package/dist/devices/blitzwolf.js.map +1 -0
  137. package/dist/devices/bosch.d.ts +3 -0
  138. package/dist/devices/bosch.d.ts.map +1 -0
  139. package/dist/devices/bosch.js +1381 -0
  140. package/dist/devices/bosch.js.map +1 -0
  141. package/dist/devices/bouffalo_lab.d.ts +3 -0
  142. package/dist/devices/bouffalo_lab.d.ts.map +1 -0
  143. package/dist/devices/bouffalo_lab.js +47 -0
  144. package/dist/devices/bouffalo_lab.js.map +1 -0
  145. package/dist/devices/box.d.ts +3 -0
  146. package/dist/devices/box.d.ts.map +1 -0
  147. package/dist/devices/box.js +370 -0
  148. package/dist/devices/box.js.map +1 -0
  149. package/dist/devices/brimate.d.ts +3 -0
  150. package/dist/devices/brimate.d.ts.map +1 -0
  151. package/dist/devices/brimate.js +51 -0
  152. package/dist/devices/brimate.js.map +1 -0
  153. package/dist/devices/brun_holding.d.ts +3 -0
  154. package/dist/devices/brun_holding.d.ts.map +1 -0
  155. package/dist/devices/brun_holding.js +59 -0
  156. package/dist/devices/brun_holding.js.map +1 -0
  157. package/dist/devices/bseed.d.ts +3 -0
  158. package/dist/devices/bseed.d.ts.map +1 -0
  159. package/dist/devices/bseed.js +53 -0
  160. package/dist/devices/bseed.js.map +1 -0
  161. package/dist/devices/bticino.d.ts +3 -0
  162. package/dist/devices/bticino.d.ts.map +1 -0
  163. package/dist/devices/bticino.js +111 -0
  164. package/dist/devices/bticino.js.map +1 -0
  165. package/dist/devices/bubendorff.d.ts +3 -0
  166. package/dist/devices/bubendorff.d.ts.map +1 -0
  167. package/dist/devices/bubendorff.js +47 -0
  168. package/dist/devices/bubendorff.js.map +1 -0
  169. package/dist/devices/busch_jaeger.d.ts +3 -0
  170. package/dist/devices/busch_jaeger.d.ts.map +1 -0
  171. package/dist/devices/busch_jaeger.js +163 -0
  172. package/dist/devices/busch_jaeger.js.map +1 -0
  173. package/dist/devices/byun.d.ts +3 -0
  174. package/dist/devices/byun.d.ts.map +1 -0
  175. package/dist/devices/byun.js +60 -0
  176. package/dist/devices/byun.js.map +1 -0
  177. package/dist/devices/calex.d.ts +3 -0
  178. package/dist/devices/calex.d.ts.map +1 -0
  179. package/dist/devices/calex.js +87 -0
  180. package/dist/devices/calex.js.map +1 -0
  181. package/dist/devices/candeo.d.ts +3 -0
  182. package/dist/devices/candeo.d.ts.map +1 -0
  183. package/dist/devices/candeo.js +887 -0
  184. package/dist/devices/candeo.js.map +1 -0
  185. package/dist/devices/casaia.d.ts +3 -0
  186. package/dist/devices/casaia.d.ts.map +1 -0
  187. package/dist/devices/casaia.js +95 -0
  188. package/dist/devices/casaia.js.map +1 -0
  189. package/dist/devices/cel.d.ts +3 -0
  190. package/dist/devices/cel.d.ts.map +1 -0
  191. package/dist/devices/cel.js +49 -0
  192. package/dist/devices/cel.js.map +1 -0
  193. package/dist/devices/centralite.d.ts +28 -0
  194. package/dist/devices/centralite.d.ts.map +1 -0
  195. package/dist/devices/centralite.js +440 -0
  196. package/dist/devices/centralite.js.map +1 -0
  197. package/dist/devices/chacon.d.ts +3 -0
  198. package/dist/devices/chacon.d.ts.map +1 -0
  199. package/dist/devices/chacon.js +57 -0
  200. package/dist/devices/chacon.js.map +1 -0
  201. package/dist/devices/cleode.d.ts +3 -0
  202. package/dist/devices/cleode.d.ts.map +1 -0
  203. package/dist/devices/cleode.js +47 -0
  204. package/dist/devices/cleode.js.map +1 -0
  205. package/dist/devices/cleverio.d.ts +3 -0
  206. package/dist/devices/cleverio.d.ts.map +1 -0
  207. package/dist/devices/cleverio.js +74 -0
  208. package/dist/devices/cleverio.js.map +1 -0
  209. package/dist/devices/climax.d.ts +3 -0
  210. package/dist/devices/climax.d.ts.map +1 -0
  211. package/dist/devices/climax.js +184 -0
  212. package/dist/devices/climax.js.map +1 -0
  213. package/dist/devices/commercial_electric.d.ts +3 -0
  214. package/dist/devices/commercial_electric.d.ts.map +1 -0
  215. package/dist/devices/commercial_electric.js +47 -0
  216. package/dist/devices/commercial_electric.js.map +1 -0
  217. package/dist/devices/cree.d.ts +3 -0
  218. package/dist/devices/cree.d.ts.map +1 -0
  219. package/dist/devices/cree.js +47 -0
  220. package/dist/devices/cree.js.map +1 -0
  221. package/dist/devices/ctm.d.ts +3 -0
  222. package/dist/devices/ctm.d.ts.map +1 -0
  223. package/dist/devices/ctm.js +1411 -0
  224. package/dist/devices/ctm.js.map +1 -0
  225. package/dist/devices/current_products_corp.d.ts +3 -0
  226. package/dist/devices/current_products_corp.d.ts.map +1 -0
  227. package/dist/devices/current_products_corp.js +60 -0
  228. package/dist/devices/current_products_corp.js.map +1 -0
  229. package/dist/devices/custom_devices_diy.d.ts +3 -0
  230. package/dist/devices/custom_devices_diy.d.ts.map +1 -0
  231. package/dist/devices/custom_devices_diy.js +1302 -0
  232. package/dist/devices/custom_devices_diy.js.map +1 -0
  233. package/dist/devices/cwd.d.ts +3 -0
  234. package/dist/devices/cwd.d.ts.map +1 -0
  235. package/dist/devices/cwd.js +47 -0
  236. package/dist/devices/cwd.js.map +1 -0
  237. package/dist/devices/cy_lighting.d.ts +3 -0
  238. package/dist/devices/cy_lighting.d.ts.map +1 -0
  239. package/dist/devices/cy_lighting.js +47 -0
  240. package/dist/devices/cy_lighting.js.map +1 -0
  241. package/dist/devices/danalock.d.ts +3 -0
  242. package/dist/devices/danalock.d.ts.map +1 -0
  243. package/dist/devices/danalock.js +61 -0
  244. package/dist/devices/danalock.js.map +1 -0
  245. package/dist/devices/danfoss.d.ts +3 -0
  246. package/dist/devices/danfoss.d.ts.map +1 -0
  247. package/dist/devices/danfoss.js +793 -0
  248. package/dist/devices/danfoss.js.map +1 -0
  249. package/dist/devices/databyte.d.ts +3 -0
  250. package/dist/devices/databyte.d.ts.map +1 -0
  251. package/dist/devices/databyte.js +90 -0
  252. package/dist/devices/databyte.js.map +1 -0
  253. package/dist/devices/datek.d.ts +3 -0
  254. package/dist/devices/datek.d.ts.map +1 -0
  255. package/dist/devices/datek.js +303 -0
  256. package/dist/devices/datek.js.map +1 -0
  257. package/dist/devices/dawon_dns.d.ts +3 -0
  258. package/dist/devices/dawon_dns.d.ts.map +1 -0
  259. package/dist/devices/dawon_dns.js +314 -0
  260. package/dist/devices/dawon_dns.js.map +1 -0
  261. package/dist/devices/develco.d.ts +3 -0
  262. package/dist/devices/develco.d.ts.map +1 -0
  263. package/dist/devices/develco.js +1113 -0
  264. package/dist/devices/develco.js.map +1 -0
  265. package/dist/devices/digi.d.ts +3 -0
  266. package/dist/devices/digi.d.ts.map +1 -0
  267. package/dist/devices/digi.js +24 -0
  268. package/dist/devices/digi.js.map +1 -0
  269. package/dist/devices/direct_signs.d.ts +3 -0
  270. package/dist/devices/direct_signs.d.ts.map +1 -0
  271. package/dist/devices/direct_signs.js +47 -0
  272. package/dist/devices/direct_signs.js.map +1 -0
  273. package/dist/devices/diyruz.d.ts +3 -0
  274. package/dist/devices/diyruz.d.ts.map +1 -0
  275. package/dist/devices/diyruz.js +397 -0
  276. package/dist/devices/diyruz.js.map +1 -0
  277. package/dist/devices/dlink.d.ts +3 -0
  278. package/dist/devices/dlink.d.ts.map +1 -0
  279. package/dist/devices/dlink.js +72 -0
  280. package/dist/devices/dlink.js.map +1 -0
  281. package/dist/devices/dnake.d.ts +3 -0
  282. package/dist/devices/dnake.d.ts.map +1 -0
  283. package/dist/devices/dnake.js +47 -0
  284. package/dist/devices/dnake.js.map +1 -0
  285. package/dist/devices/domraem.d.ts +3 -0
  286. package/dist/devices/domraem.d.ts.map +1 -0
  287. package/dist/devices/domraem.js +75 -0
  288. package/dist/devices/domraem.js.map +1 -0
  289. package/dist/devices/dowsing_reynolds.d.ts +3 -0
  290. package/dist/devices/dowsing_reynolds.d.ts.map +1 -0
  291. package/dist/devices/dowsing_reynolds.js +47 -0
  292. package/dist/devices/dowsing_reynolds.js.map +1 -0
  293. package/dist/devices/dqsmart.d.ts +3 -0
  294. package/dist/devices/dqsmart.d.ts.map +1 -0
  295. package/dist/devices/dqsmart.js +50 -0
  296. package/dist/devices/dqsmart.js.map +1 -0
  297. package/dist/devices/dresden_elektronik.d.ts +3 -0
  298. package/dist/devices/dresden_elektronik.d.ts.map +1 -0
  299. package/dist/devices/dresden_elektronik.js +167 -0
  300. package/dist/devices/dresden_elektronik.js.map +1 -0
  301. package/dist/devices/easyaccess.d.ts +3 -0
  302. package/dist/devices/easyaccess.d.ts.map +1 -0
  303. package/dist/devices/easyaccess.js +67 -0
  304. package/dist/devices/easyaccess.js.map +1 -0
  305. package/dist/devices/easyiot.d.ts +3 -0
  306. package/dist/devices/easyiot.d.ts.map +1 -0
  307. package/dist/devices/easyiot.js +359 -0
  308. package/dist/devices/easyiot.js.map +1 -0
  309. package/dist/devices/eatonhalo_led.d.ts +3 -0
  310. package/dist/devices/eatonhalo_led.d.ts.map +1 -0
  311. package/dist/devices/eatonhalo_led.js +47 -0
  312. package/dist/devices/eatonhalo_led.js.map +1 -0
  313. package/dist/devices/echostar.d.ts +3 -0
  314. package/dist/devices/echostar.d.ts.map +1 -0
  315. package/dist/devices/echostar.js +61 -0
  316. package/dist/devices/echostar.js.map +1 -0
  317. package/dist/devices/ecodim.d.ts +3 -0
  318. package/dist/devices/ecodim.d.ts.map +1 -0
  319. package/dist/devices/ecodim.js +274 -0
  320. package/dist/devices/ecodim.js.map +1 -0
  321. package/dist/devices/ecolink.d.ts +3 -0
  322. package/dist/devices/ecolink.d.ts.map +1 -0
  323. package/dist/devices/ecolink.js +57 -0
  324. package/dist/devices/ecolink.js.map +1 -0
  325. package/dist/devices/ecosmart.d.ts +3 -0
  326. package/dist/devices/ecosmart.d.ts.map +1 -0
  327. package/dist/devices/ecosmart.js +115 -0
  328. package/dist/devices/ecosmart.js.map +1 -0
  329. package/dist/devices/ecozy.d.ts +3 -0
  330. package/dist/devices/ecozy.d.ts.map +1 -0
  331. package/dist/devices/ecozy.js +85 -0
  332. package/dist/devices/ecozy.js.map +1 -0
  333. package/dist/devices/edp.d.ts +3 -0
  334. package/dist/devices/edp.d.ts.map +1 -0
  335. package/dist/devices/edp.js +70 -0
  336. package/dist/devices/edp.js.map +1 -0
  337. package/dist/devices/efekta.d.ts +3 -0
  338. package/dist/devices/efekta.d.ts.map +1 -0
  339. package/dist/devices/efekta.js +8230 -0
  340. package/dist/devices/efekta.js.map +1 -0
  341. package/dist/devices/eglo.d.ts +3 -0
  342. package/dist/devices/eglo.d.ts.map +1 -0
  343. package/dist/devices/eglo.js +142 -0
  344. package/dist/devices/eglo.js.map +1 -0
  345. package/dist/devices/elko.d.ts +27 -0
  346. package/dist/devices/elko.d.ts.map +1 -0
  347. package/dist/devices/elko.js +306 -0
  348. package/dist/devices/elko.js.map +1 -0
  349. package/dist/devices/enbrighten.d.ts +3 -0
  350. package/dist/devices/enbrighten.d.ts.map +1 -0
  351. package/dist/devices/enbrighten.js +152 -0
  352. package/dist/devices/enbrighten.js.map +1 -0
  353. package/dist/devices/engo.d.ts +3 -0
  354. package/dist/devices/engo.d.ts.map +1 -0
  355. package/dist/devices/engo.js +1041 -0
  356. package/dist/devices/engo.js.map +1 -0
  357. package/dist/devices/enkin.d.ts +3 -0
  358. package/dist/devices/enkin.d.ts.map +1 -0
  359. package/dist/devices/enkin.js +14 -0
  360. package/dist/devices/enkin.js.map +1 -0
  361. package/dist/devices/enocean.d.ts +3 -0
  362. package/dist/devices/enocean.d.ts.map +1 -0
  363. package/dist/devices/enocean.js +150 -0
  364. package/dist/devices/enocean.js.map +1 -0
  365. package/dist/devices/envilar.d.ts +3 -0
  366. package/dist/devices/envilar.d.ts.map +1 -0
  367. package/dist/devices/envilar.js +131 -0
  368. package/dist/devices/envilar.js.map +1 -0
  369. package/dist/devices/espressif.d.ts +3 -0
  370. package/dist/devices/espressif.d.ts.map +1 -0
  371. package/dist/devices/espressif.js +61 -0
  372. package/dist/devices/espressif.js.map +1 -0
  373. package/dist/devices/essentialb.d.ts +3 -0
  374. package/dist/devices/essentialb.d.ts.map +1 -0
  375. package/dist/devices/essentialb.js +133 -0
  376. package/dist/devices/essentialb.js.map +1 -0
  377. package/dist/devices/essentials.d.ts +3 -0
  378. package/dist/devices/essentials.d.ts.map +1 -0
  379. package/dist/devices/essentials.js +150 -0
  380. package/dist/devices/essentials.js.map +1 -0
  381. package/dist/devices/eucontrols.d.ts +3 -0
  382. package/dist/devices/eucontrols.d.ts.map +1 -0
  383. package/dist/devices/eucontrols.js +47 -0
  384. package/dist/devices/eucontrols.js.map +1 -0
  385. package/dist/devices/eurotronic.d.ts +3 -0
  386. package/dist/devices/eurotronic.d.ts.map +1 -0
  387. package/dist/devices/eurotronic.js +278 -0
  388. package/dist/devices/eurotronic.js.map +1 -0
  389. package/dist/devices/evanell.d.ts +3 -0
  390. package/dist/devices/evanell.d.ts.map +1 -0
  391. package/dist/devices/evanell.js +66 -0
  392. package/dist/devices/evanell.js.map +1 -0
  393. package/dist/devices/evn.d.ts +3 -0
  394. package/dist/devices/evn.d.ts.map +1 -0
  395. package/dist/devices/evn.js +97 -0
  396. package/dist/devices/evn.js.map +1 -0
  397. package/dist/devices/evology.d.ts +3 -0
  398. package/dist/devices/evology.d.ts.map +1 -0
  399. package/dist/devices/evology.js +60 -0
  400. package/dist/devices/evology.js.map +1 -0
  401. package/dist/devices/evvr.d.ts +3 -0
  402. package/dist/devices/evvr.d.ts.map +1 -0
  403. package/dist/devices/evvr.js +47 -0
  404. package/dist/devices/evvr.js.map +1 -0
  405. package/dist/devices/ewelink.d.ts +3 -0
  406. package/dist/devices/ewelink.d.ts.map +1 -0
  407. package/dist/devices/ewelink.js +326 -0
  408. package/dist/devices/ewelink.js.map +1 -0
  409. package/dist/devices/ezex.d.ts +3 -0
  410. package/dist/devices/ezex.d.ts.map +1 -0
  411. package/dist/devices/ezex.js +47 -0
  412. package/dist/devices/ezex.js.map +1 -0
  413. package/dist/devices/ezviz.d.ts +3 -0
  414. package/dist/devices/ezviz.d.ts.map +1 -0
  415. package/dist/devices/ezviz.js +47 -0
  416. package/dist/devices/ezviz.js.map +1 -0
  417. package/dist/devices/fantem.d.ts +3 -0
  418. package/dist/devices/fantem.d.ts.map +1 -0
  419. package/dist/devices/fantem.js +112 -0
  420. package/dist/devices/fantem.js.map +1 -0
  421. package/dist/devices/feibit.d.ts +3 -0
  422. package/dist/devices/feibit.d.ts.map +1 -0
  423. package/dist/devices/feibit.js +335 -0
  424. package/dist/devices/feibit.js.map +1 -0
  425. package/dist/devices/fireangel.d.ts +3 -0
  426. package/dist/devices/fireangel.d.ts.map +1 -0
  427. package/dist/devices/fireangel.js +96 -0
  428. package/dist/devices/fireangel.js.map +1 -0
  429. package/dist/devices/frankever.d.ts +3 -0
  430. package/dist/devices/frankever.d.ts.map +1 -0
  431. package/dist/devices/frankever.js +67 -0
  432. package/dist/devices/frankever.js.map +1 -0
  433. package/dist/devices/frient.d.ts +3 -0
  434. package/dist/devices/frient.d.ts.map +1 -0
  435. package/dist/devices/frient.js +84 -0
  436. package/dist/devices/frient.js.map +1 -0
  437. package/dist/devices/futurehome.d.ts +3 -0
  438. package/dist/devices/futurehome.d.ts.map +1 -0
  439. package/dist/devices/futurehome.js +137 -0
  440. package/dist/devices/futurehome.js.map +1 -0
  441. package/dist/devices/ge.d.ts +3 -0
  442. package/dist/devices/ge.d.ts.map +1 -0
  443. package/dist/devices/ge.js +130 -0
  444. package/dist/devices/ge.js.map +1 -0
  445. package/dist/devices/gewiss.d.ts +3 -0
  446. package/dist/devices/gewiss.d.ts.map +1 -0
  447. package/dist/devices/gewiss.js +148 -0
  448. package/dist/devices/gewiss.js.map +1 -0
  449. package/dist/devices/gidealed.d.ts +3 -0
  450. package/dist/devices/gidealed.d.ts.map +1 -0
  451. package/dist/devices/gidealed.js +47 -0
  452. package/dist/devices/gidealed.js.map +1 -0
  453. package/dist/devices/giderwel.d.ts +3 -0
  454. package/dist/devices/giderwel.d.ts.map +1 -0
  455. package/dist/devices/giderwel.js +47 -0
  456. package/dist/devices/giderwel.js.map +1 -0
  457. package/dist/devices/giex.d.ts +3 -0
  458. package/dist/devices/giex.d.ts.map +1 -0
  459. package/dist/devices/giex.js +114 -0
  460. package/dist/devices/giex.js.map +1 -0
  461. package/dist/devices/girier.d.ts +3 -0
  462. package/dist/devices/girier.d.ts.map +1 -0
  463. package/dist/devices/girier.js +51 -0
  464. package/dist/devices/girier.js.map +1 -0
  465. package/dist/devices/gledopto.d.ts +3 -0
  466. package/dist/devices/gledopto.d.ts.map +1 -0
  467. package/dist/devices/gledopto.js +1395 -0
  468. package/dist/devices/gledopto.js.map +1 -0
  469. package/dist/devices/gmmts.d.ts +3 -0
  470. package/dist/devices/gmmts.d.ts.map +1 -0
  471. package/dist/devices/gmmts.js +2267 -0
  472. package/dist/devices/gmmts.js.map +1 -0
  473. package/dist/devices/gmy.d.ts +3 -0
  474. package/dist/devices/gmy.d.ts.map +1 -0
  475. package/dist/devices/gmy.js +47 -0
  476. package/dist/devices/gmy.js.map +1 -0
  477. package/dist/devices/gs.d.ts +3 -0
  478. package/dist/devices/gs.d.ts.map +1 -0
  479. package/dist/devices/gs.js +121 -0
  480. package/dist/devices/gs.js.map +1 -0
  481. package/dist/devices/gumax.d.ts +3 -0
  482. package/dist/devices/gumax.d.ts.map +1 -0
  483. package/dist/devices/gumax.js +47 -0
  484. package/dist/devices/gumax.js.map +1 -0
  485. package/dist/devices/halemeier.d.ts +3 -0
  486. package/dist/devices/halemeier.d.ts.map +1 -0
  487. package/dist/devices/halemeier.js +142 -0
  488. package/dist/devices/halemeier.js.map +1 -0
  489. package/dist/devices/hampton_bay.d.ts +3 -0
  490. package/dist/devices/hampton_bay.d.ts.map +1 -0
  491. package/dist/devices/hampton_bay.js +68 -0
  492. package/dist/devices/hampton_bay.js.map +1 -0
  493. package/dist/devices/heatit.d.ts +3 -0
  494. package/dist/devices/heatit.d.ts.map +1 -0
  495. package/dist/devices/heatit.js +47 -0
  496. package/dist/devices/heatit.js.map +1 -0
  497. package/dist/devices/heiman.d.ts +3 -0
  498. package/dist/devices/heiman.d.ts.map +1 -0
  499. package/dist/devices/heiman.js +2092 -0
  500. package/dist/devices/heiman.js.map +1 -0
  501. package/dist/devices/heimgard_technologies.d.ts +3 -0
  502. package/dist/devices/heimgard_technologies.d.ts.map +1 -0
  503. package/dist/devices/heimgard_technologies.js +189 -0
  504. package/dist/devices/heimgard_technologies.js.map +1 -0
  505. package/dist/devices/hej.d.ts +3 -0
  506. package/dist/devices/hej.d.ts.map +1 -0
  507. package/dist/devices/hej.js +126 -0
  508. package/dist/devices/hej.js.map +1 -0
  509. package/dist/devices/hfh.d.ts +3 -0
  510. package/dist/devices/hfh.d.ts.map +1 -0
  511. package/dist/devices/hfh.js +47 -0
  512. package/dist/devices/hfh.js.map +1 -0
  513. package/dist/devices/hilux.d.ts +3 -0
  514. package/dist/devices/hilux.d.ts.map +1 -0
  515. package/dist/devices/hilux.js +54 -0
  516. package/dist/devices/hilux.js.map +1 -0
  517. package/dist/devices/hive.d.ts +3 -0
  518. package/dist/devices/hive.d.ts.map +1 -0
  519. package/dist/devices/hive.js +798 -0
  520. package/dist/devices/hive.js.map +1 -0
  521. package/dist/devices/hoftronic.d.ts +3 -0
  522. package/dist/devices/hoftronic.d.ts.map +1 -0
  523. package/dist/devices/hoftronic.js +56 -0
  524. package/dist/devices/hoftronic.js.map +1 -0
  525. package/dist/devices/homeseer.d.ts +3 -0
  526. package/dist/devices/homeseer.d.ts.map +1 -0
  527. package/dist/devices/homeseer.js +53 -0
  528. package/dist/devices/homeseer.js.map +1 -0
  529. package/dist/devices/hommyn.d.ts +3 -0
  530. package/dist/devices/hommyn.d.ts.map +1 -0
  531. package/dist/devices/hommyn.js +60 -0
  532. package/dist/devices/hommyn.js.map +1 -0
  533. package/dist/devices/honyar.d.ts +3 -0
  534. package/dist/devices/honyar.d.ts.map +1 -0
  535. package/dist/devices/honyar.js +167 -0
  536. package/dist/devices/honyar.js.map +1 -0
  537. package/dist/devices/hornbach.d.ts +3 -0
  538. package/dist/devices/hornbach.d.ts.map +1 -0
  539. package/dist/devices/hornbach.js +138 -0
  540. package/dist/devices/hornbach.js.map +1 -0
  541. package/dist/devices/hzc_electric.d.ts +3 -0
  542. package/dist/devices/hzc_electric.d.ts.map +1 -0
  543. package/dist/devices/hzc_electric.js +102 -0
  544. package/dist/devices/hzc_electric.js.map +1 -0
  545. package/dist/devices/icasa.d.ts +3 -0
  546. package/dist/devices/icasa.d.ts.map +1 -0
  547. package/dist/devices/icasa.js +174 -0
  548. package/dist/devices/icasa.js.map +1 -0
  549. package/dist/devices/idinio.d.ts +3 -0
  550. package/dist/devices/idinio.d.ts.map +1 -0
  551. package/dist/devices/idinio.js +47 -0
  552. package/dist/devices/idinio.js.map +1 -0
  553. package/dist/devices/ihorn.d.ts +3 -0
  554. package/dist/devices/ihorn.d.ts.map +1 -0
  555. package/dist/devices/ihorn.js +105 -0
  556. package/dist/devices/ihorn.js.map +1 -0
  557. package/dist/devices/ikea.d.ts +3 -0
  558. package/dist/devices/ikea.d.ts.map +1 -0
  559. package/dist/devices/ikea.js +1241 -0
  560. package/dist/devices/ikea.js.map +1 -0
  561. package/dist/devices/ilightsin.d.ts +3 -0
  562. package/dist/devices/ilightsin.d.ts.map +1 -0
  563. package/dist/devices/ilightsin.js +59 -0
  564. package/dist/devices/ilightsin.js.map +1 -0
  565. package/dist/devices/iluminize.d.ts +3 -0
  566. package/dist/devices/iluminize.d.ts.map +1 -0
  567. package/dist/devices/iluminize.js +385 -0
  568. package/dist/devices/iluminize.js.map +1 -0
  569. package/dist/devices/ilux.d.ts +3 -0
  570. package/dist/devices/ilux.d.ts.map +1 -0
  571. package/dist/devices/ilux.js +47 -0
  572. package/dist/devices/ilux.js.map +1 -0
  573. package/dist/devices/imhotepcreation.d.ts +3 -0
  574. package/dist/devices/imhotepcreation.d.ts.map +1 -0
  575. package/dist/devices/imhotepcreation.js +240 -0
  576. package/dist/devices/imhotepcreation.js.map +1 -0
  577. package/dist/devices/immax.d.ts +3 -0
  578. package/dist/devices/immax.d.ts.map +1 -0
  579. package/dist/devices/immax.js +471 -0
  580. package/dist/devices/immax.js.map +1 -0
  581. package/dist/devices/imou.d.ts +3 -0
  582. package/dist/devices/imou.d.ts.map +1 -0
  583. package/dist/devices/imou.js +109 -0
  584. package/dist/devices/imou.js.map +1 -0
  585. package/dist/devices/index.d.ts +4 -0
  586. package/dist/devices/index.d.ts.map +1 -0
  587. package/dist/devices/index.js +738 -0
  588. package/dist/devices/index.js.map +1 -0
  589. package/dist/devices/innr.d.ts +3 -0
  590. package/dist/devices/innr.d.ts.map +1 -0
  591. package/dist/devices/innr.js +1033 -0
  592. package/dist/devices/innr.js.map +1 -0
  593. package/dist/devices/inovelli.d.ts +3 -0
  594. package/dist/devices/inovelli.d.ts.map +1 -0
  595. package/dist/devices/inovelli.js +2474 -0
  596. package/dist/devices/inovelli.js.map +1 -0
  597. package/dist/devices/insta.d.ts +3 -0
  598. package/dist/devices/insta.d.ts.map +1 -0
  599. package/dist/devices/insta.js +182 -0
  600. package/dist/devices/insta.js.map +1 -0
  601. package/dist/devices/intuis.d.ts +3 -0
  602. package/dist/devices/intuis.d.ts.map +1 -0
  603. package/dist/devices/intuis.js +95 -0
  604. package/dist/devices/intuis.js.map +1 -0
  605. package/dist/devices/iolloi.d.ts +3 -0
  606. package/dist/devices/iolloi.d.ts.map +1 -0
  607. package/dist/devices/iolloi.js +48 -0
  608. package/dist/devices/iolloi.js.map +1 -0
  609. package/dist/devices/iotperfect.d.ts +3 -0
  610. package/dist/devices/iotperfect.d.ts.map +1 -0
  611. package/dist/devices/iotperfect.js +60 -0
  612. package/dist/devices/iotperfect.js.map +1 -0
  613. package/dist/devices/iris.d.ts +3 -0
  614. package/dist/devices/iris.d.ts.map +1 -0
  615. package/dist/devices/iris.js +208 -0
  616. package/dist/devices/iris.js.map +1 -0
  617. package/dist/devices/istar.d.ts +3 -0
  618. package/dist/devices/istar.d.ts.map +1 -0
  619. package/dist/devices/istar.js +61 -0
  620. package/dist/devices/istar.js.map +1 -0
  621. package/dist/devices/jasco.d.ts +3 -0
  622. package/dist/devices/jasco.d.ts.map +1 -0
  623. package/dist/devices/jasco.js +63 -0
  624. package/dist/devices/jasco.js.map +1 -0
  625. package/dist/devices/javis.d.ts +3 -0
  626. package/dist/devices/javis.d.ts.map +1 -0
  627. package/dist/devices/javis.js +77 -0
  628. package/dist/devices/javis.js.map +1 -0
  629. package/dist/devices/jethome.d.ts +3 -0
  630. package/dist/devices/jethome.d.ts.map +1 -0
  631. package/dist/devices/jethome.js +120 -0
  632. package/dist/devices/jethome.js.map +1 -0
  633. package/dist/devices/jiawen.d.ts +3 -0
  634. package/dist/devices/jiawen.d.ts.map +1 -0
  635. package/dist/devices/jiawen.js +54 -0
  636. package/dist/devices/jiawen.js.map +1 -0
  637. package/dist/devices/jumitech.d.ts +3 -0
  638. package/dist/devices/jumitech.d.ts.map +1 -0
  639. package/dist/devices/jumitech.js +47 -0
  640. package/dist/devices/jumitech.js.map +1 -0
  641. package/dist/devices/jxuan.d.ts +3 -0
  642. package/dist/devices/jxuan.d.ts.map +1 -0
  643. package/dist/devices/jxuan.js +85 -0
  644. package/dist/devices/jxuan.js.map +1 -0
  645. package/dist/devices/kami.d.ts +3 -0
  646. package/dist/devices/kami.d.ts.map +1 -0
  647. package/dist/devices/kami.js +51 -0
  648. package/dist/devices/kami.js.map +1 -0
  649. package/dist/devices/keen_home.d.ts +3 -0
  650. package/dist/devices/keen_home.d.ts.map +1 -0
  651. package/dist/devices/keen_home.js +155 -0
  652. package/dist/devices/keen_home.js.map +1 -0
  653. package/dist/devices/klikaanklikuit.d.ts +3 -0
  654. package/dist/devices/klikaanklikuit.d.ts.map +1 -0
  655. package/dist/devices/klikaanklikuit.js +54 -0
  656. package/dist/devices/klikaanklikuit.js.map +1 -0
  657. package/dist/devices/kmpcil.d.ts +3 -0
  658. package/dist/devices/kmpcil.d.ts.map +1 -0
  659. package/dist/devices/kmpcil.js +212 -0
  660. package/dist/devices/kmpcil.js.map +1 -0
  661. package/dist/devices/konke.d.ts +3 -0
  662. package/dist/devices/konke.d.ts.map +1 -0
  663. package/dist/devices/konke.js +207 -0
  664. package/dist/devices/konke.js.map +1 -0
  665. package/dist/devices/ksentry.d.ts +3 -0
  666. package/dist/devices/ksentry.d.ts.map +1 -0
  667. package/dist/devices/ksentry.js +47 -0
  668. package/dist/devices/ksentry.js.map +1 -0
  669. package/dist/devices/kurvia.d.ts +3 -0
  670. package/dist/devices/kurvia.d.ts.map +1 -0
  671. package/dist/devices/kurvia.js +49 -0
  672. package/dist/devices/kurvia.js.map +1 -0
  673. package/dist/devices/kwikset.d.ts +3 -0
  674. package/dist/devices/kwikset.d.ts.map +1 -0
  675. package/dist/devices/kwikset.js +153 -0
  676. package/dist/devices/kwikset.js.map +1 -0
  677. package/dist/devices/lanesto.d.ts +3 -0
  678. package/dist/devices/lanesto.d.ts.map +1 -0
  679. package/dist/devices/lanesto.js +47 -0
  680. package/dist/devices/lanesto.js.map +1 -0
  681. package/dist/devices/lds.d.ts +3 -0
  682. package/dist/devices/lds.d.ts.map +1 -0
  683. package/dist/devices/lds.js +54 -0
  684. package/dist/devices/lds.js.map +1 -0
  685. package/dist/devices/led_trading.d.ts +3 -0
  686. package/dist/devices/led_trading.d.ts.map +1 -0
  687. package/dist/devices/led_trading.js +108 -0
  688. package/dist/devices/led_trading.js.map +1 -0
  689. package/dist/devices/ledvance.d.ts +3 -0
  690. package/dist/devices/ledvance.d.ts.map +1 -0
  691. package/dist/devices/ledvance.js +407 -0
  692. package/dist/devices/ledvance.js.map +1 -0
  693. package/dist/devices/leedarson.d.ts +3 -0
  694. package/dist/devices/leedarson.d.ts.map +1 -0
  695. package/dist/devices/leedarson.js +180 -0
  696. package/dist/devices/leedarson.js.map +1 -0
  697. package/dist/devices/legrand.d.ts +3 -0
  698. package/dist/devices/legrand.d.ts.map +1 -0
  699. package/dist/devices/legrand.js +809 -0
  700. package/dist/devices/legrand.js.map +1 -0
  701. package/dist/devices/lellki.d.ts +3 -0
  702. package/dist/devices/lellki.d.ts.map +1 -0
  703. package/dist/devices/lellki.js +162 -0
  704. package/dist/devices/lellki.js.map +1 -0
  705. package/dist/devices/letsled.d.ts +3 -0
  706. package/dist/devices/letsled.d.ts.map +1 -0
  707. package/dist/devices/letsled.js +47 -0
  708. package/dist/devices/letsled.js.map +1 -0
  709. package/dist/devices/letv.d.ts +3 -0
  710. package/dist/devices/letv.d.ts.map +1 -0
  711. package/dist/devices/letv.js +86 -0
  712. package/dist/devices/letv.js.map +1 -0
  713. package/dist/devices/leviton.d.ts +3 -0
  714. package/dist/devices/leviton.d.ts.map +1 -0
  715. package/dist/devices/leviton.js +160 -0
  716. package/dist/devices/leviton.js.map +1 -0
  717. package/dist/devices/lg.d.ts +3 -0
  718. package/dist/devices/lg.d.ts.map +1 -0
  719. package/dist/devices/lg.js +61 -0
  720. package/dist/devices/lg.js.map +1 -0
  721. package/dist/devices/lidl.d.ts +3 -0
  722. package/dist/devices/lidl.d.ts.map +1 -0
  723. package/dist/devices/lidl.js +669 -0
  724. package/dist/devices/lidl.js.map +1 -0
  725. package/dist/devices/lifecontrol.d.ts +3 -0
  726. package/dist/devices/lifecontrol.d.ts.map +1 -0
  727. package/dist/devices/lifecontrol.js +141 -0
  728. package/dist/devices/lifecontrol.js.map +1 -0
  729. package/dist/devices/lightsolutions.d.ts +3 -0
  730. package/dist/devices/lightsolutions.d.ts.map +1 -0
  731. package/dist/devices/lightsolutions.js +90 -0
  732. package/dist/devices/lightsolutions.js.map +1 -0
  733. package/dist/devices/lincukoo.d.ts +3 -0
  734. package/dist/devices/lincukoo.d.ts.map +1 -0
  735. package/dist/devices/lincukoo.js +788 -0
  736. package/dist/devices/lincukoo.js.map +1 -0
  737. package/dist/devices/linkind.d.ts +3 -0
  738. package/dist/devices/linkind.d.ts.map +1 -0
  739. package/dist/devices/linkind.js +251 -0
  740. package/dist/devices/linkind.js.map +1 -0
  741. package/dist/devices/linptech.d.ts +3 -0
  742. package/dist/devices/linptech.d.ts.map +1 -0
  743. package/dist/devices/linptech.js +157 -0
  744. package/dist/devices/linptech.js.map +1 -0
  745. package/dist/devices/livingwise.d.ts +3 -0
  746. package/dist/devices/livingwise.d.ts.map +1 -0
  747. package/dist/devices/livingwise.js +115 -0
  748. package/dist/devices/livingwise.js.map +1 -0
  749. package/dist/devices/livolo.d.ts +3 -0
  750. package/dist/devices/livolo.d.ts.map +1 -0
  751. package/dist/devices/livolo.js +263 -0
  752. package/dist/devices/livolo.js.map +1 -0
  753. package/dist/devices/lixee.d.ts +3 -0
  754. package/dist/devices/lixee.d.ts.map +1 -0
  755. package/dist/devices/lixee.js +2038 -0
  756. package/dist/devices/lixee.js.map +1 -0
  757. package/dist/devices/lonsonho.d.ts +3 -0
  758. package/dist/devices/lonsonho.d.ts.map +1 -0
  759. package/dist/devices/lonsonho.js +310 -0
  760. package/dist/devices/lonsonho.js.map +1 -0
  761. package/dist/devices/ls.d.ts +3 -0
  762. package/dist/devices/ls.d.ts.map +1 -0
  763. package/dist/devices/ls.js +152 -0
  764. package/dist/devices/ls.js.map +1 -0
  765. package/dist/devices/lubeez.d.ts +3 -0
  766. package/dist/devices/lubeez.d.ts.map +1 -0
  767. package/dist/devices/lubeez.js +47 -0
  768. package/dist/devices/lubeez.js.map +1 -0
  769. package/dist/devices/lumi.d.ts +3 -0
  770. package/dist/devices/lumi.d.ts.map +1 -0
  771. package/dist/devices/lumi.js +5345 -0
  772. package/dist/devices/lumi.js.map +1 -0
  773. package/dist/devices/lupus.d.ts +3 -0
  774. package/dist/devices/lupus.d.ts.map +1 -0
  775. package/dist/devices/lupus.js +94 -0
  776. package/dist/devices/lupus.js.map +1 -0
  777. package/dist/devices/lutron.d.ts +3 -0
  778. package/dist/devices/lutron.d.ts.map +1 -0
  779. package/dist/devices/lutron.js +81 -0
  780. package/dist/devices/lutron.js.map +1 -0
  781. package/dist/devices/lux.d.ts +3 -0
  782. package/dist/devices/lux.d.ts.map +1 -0
  783. package/dist/devices/lux.js +87 -0
  784. package/dist/devices/lux.js.map +1 -0
  785. package/dist/devices/lytko.d.ts +3 -0
  786. package/dist/devices/lytko.d.ts.map +1 -0
  787. package/dist/devices/lytko.js +1809 -0
  788. package/dist/devices/lytko.js.map +1 -0
  789. package/dist/devices/m_elec.d.ts +3 -0
  790. package/dist/devices/m_elec.d.ts.map +1 -0
  791. package/dist/devices/m_elec.js +68 -0
  792. package/dist/devices/m_elec.js.map +1 -0
  793. package/dist/devices/makegood.d.ts +3 -0
  794. package/dist/devices/makegood.d.ts.map +1 -0
  795. package/dist/devices/makegood.js +117 -0
  796. package/dist/devices/makegood.js.map +1 -0
  797. package/dist/devices/matcall_bv.d.ts +3 -0
  798. package/dist/devices/matcall_bv.d.ts.map +1 -0
  799. package/dist/devices/matcall_bv.js +54 -0
  800. package/dist/devices/matcall_bv.js.map +1 -0
  801. package/dist/devices/mazda.d.ts +3 -0
  802. package/dist/devices/mazda.d.ts.map +1 -0
  803. package/dist/devices/mazda.js +146 -0
  804. package/dist/devices/mazda.js.map +1 -0
  805. package/dist/devices/meazon.d.ts +3 -0
  806. package/dist/devices/meazon.d.ts.map +1 -0
  807. package/dist/devices/meazon.js +95 -0
  808. package/dist/devices/meazon.js.map +1 -0
  809. package/dist/devices/mercator.d.ts +3 -0
  810. package/dist/devices/mercator.d.ts.map +1 -0
  811. package/dist/devices/mercator.js +242 -0
  812. package/dist/devices/mercator.js.map +1 -0
  813. package/dist/devices/miboxer.d.ts +3 -0
  814. package/dist/devices/miboxer.d.ts.map +1 -0
  815. package/dist/devices/miboxer.js +304 -0
  816. package/dist/devices/miboxer.js.map +1 -0
  817. package/dist/devices/micromatic.d.ts +3 -0
  818. package/dist/devices/micromatic.d.ts.map +1 -0
  819. package/dist/devices/micromatic.js +47 -0
  820. package/dist/devices/micromatic.js.map +1 -0
  821. package/dist/devices/mill.d.ts +3 -0
  822. package/dist/devices/mill.d.ts.map +1 -0
  823. package/dist/devices/mill.js +52 -0
  824. package/dist/devices/mill.js.map +1 -0
  825. package/dist/devices/mindy.d.ts +3 -0
  826. package/dist/devices/mindy.d.ts.map +1 -0
  827. package/dist/devices/mindy.js +379 -0
  828. package/dist/devices/mindy.js.map +1 -0
  829. package/dist/devices/modular.d.ts +3 -0
  830. package/dist/devices/modular.d.ts.map +1 -0
  831. package/dist/devices/modular.js +47 -0
  832. package/dist/devices/modular.js.map +1 -0
  833. package/dist/devices/moes.d.ts +3 -0
  834. package/dist/devices/moes.d.ts.map +1 -0
  835. package/dist/devices/moes.js +2368 -0
  836. package/dist/devices/moes.js.map +1 -0
  837. package/dist/devices/muller_licht.d.ts +3 -0
  838. package/dist/devices/muller_licht.d.ts.map +1 -0
  839. package/dist/devices/muller_licht.js +366 -0
  840. package/dist/devices/muller_licht.js.map +1 -0
  841. package/dist/devices/multir.d.ts +3 -0
  842. package/dist/devices/multir.d.ts.map +1 -0
  843. package/dist/devices/multir.js +152 -0
  844. package/dist/devices/multir.js.map +1 -0
  845. package/dist/devices/multiterm.d.ts +3 -0
  846. package/dist/devices/multiterm.d.ts.map +1 -0
  847. package/dist/devices/multiterm.js +119 -0
  848. package/dist/devices/multiterm.js.map +1 -0
  849. package/dist/devices/namron.d.ts +3 -0
  850. package/dist/devices/namron.d.ts.map +1 -0
  851. package/dist/devices/namron.js +2004 -0
  852. package/dist/devices/namron.js.map +1 -0
  853. package/dist/devices/nanoleaf.d.ts +3 -0
  854. package/dist/devices/nanoleaf.d.ts.map +1 -0
  855. package/dist/devices/nanoleaf.js +47 -0
  856. package/dist/devices/nanoleaf.js.map +1 -0
  857. package/dist/devices/nedis.d.ts +3 -0
  858. package/dist/devices/nedis.d.ts.map +1 -0
  859. package/dist/devices/nedis.js +87 -0
  860. package/dist/devices/nedis.js.map +1 -0
  861. package/dist/devices/neo.d.ts +3 -0
  862. package/dist/devices/neo.d.ts.map +1 -0
  863. package/dist/devices/neo.js +526 -0
  864. package/dist/devices/neo.js.map +1 -0
  865. package/dist/devices/net2grid.d.ts +3 -0
  866. package/dist/devices/net2grid.d.ts.map +1 -0
  867. package/dist/devices/net2grid.js +64 -0
  868. package/dist/devices/net2grid.js.map +1 -0
  869. package/dist/devices/netvox.d.ts +3 -0
  870. package/dist/devices/netvox.d.ts.map +1 -0
  871. package/dist/devices/netvox.js +71 -0
  872. package/dist/devices/netvox.js.map +1 -0
  873. package/dist/devices/nexelec.d.ts +3 -0
  874. package/dist/devices/nexelec.d.ts.map +1 -0
  875. package/dist/devices/nexelec.js +47 -0
  876. package/dist/devices/nexelec.js.map +1 -0
  877. package/dist/devices/niko.d.ts +3 -0
  878. package/dist/devices/niko.d.ts.map +1 -0
  879. package/dist/devices/niko.js +769 -0
  880. package/dist/devices/niko.js.map +1 -0
  881. package/dist/devices/ninja_blocks.d.ts +3 -0
  882. package/dist/devices/ninja_blocks.d.ts.map +1 -0
  883. package/dist/devices/ninja_blocks.js +60 -0
  884. package/dist/devices/ninja_blocks.js.map +1 -0
  885. package/dist/devices/niviss.d.ts +3 -0
  886. package/dist/devices/niviss.d.ts.map +1 -0
  887. package/dist/devices/niviss.js +47 -0
  888. package/dist/devices/niviss.js.map +1 -0
  889. package/dist/devices/nobo.d.ts +3 -0
  890. package/dist/devices/nobo.d.ts.map +1 -0
  891. package/dist/devices/nobo.js +88 -0
  892. package/dist/devices/nobo.js.map +1 -0
  893. package/dist/devices/nodon.d.ts +3 -0
  894. package/dist/devices/nodon.d.ts.map +1 -0
  895. package/dist/devices/nodon.js +483 -0
  896. package/dist/devices/nodon.js.map +1 -0
  897. package/dist/devices/nordtronic.d.ts +3 -0
  898. package/dist/devices/nordtronic.d.ts.map +1 -0
  899. package/dist/devices/nordtronic.js +95 -0
  900. package/dist/devices/nordtronic.js.map +1 -0
  901. package/dist/devices/nous.d.ts +3 -0
  902. package/dist/devices/nous.d.ts.map +1 -0
  903. package/dist/devices/nous.js +367 -0
  904. package/dist/devices/nous.js.map +1 -0
  905. package/dist/devices/novo.d.ts +3 -0
  906. package/dist/devices/novo.d.ts.map +1 -0
  907. package/dist/devices/novo.js +53 -0
  908. package/dist/devices/novo.js.map +1 -0
  909. package/dist/devices/nue_3a.d.ts +3 -0
  910. package/dist/devices/nue_3a.d.ts.map +1 -0
  911. package/dist/devices/nue_3a.js +359 -0
  912. package/dist/devices/nue_3a.js.map +1 -0
  913. package/dist/devices/nyce.d.ts +3 -0
  914. package/dist/devices/nyce.d.ts.map +1 -0
  915. package/dist/devices/nyce.js +124 -0
  916. package/dist/devices/nyce.js.map +1 -0
  917. package/dist/devices/onenuo.d.ts +3 -0
  918. package/dist/devices/onenuo.d.ts.map +1 -0
  919. package/dist/devices/onenuo.js +83 -0
  920. package/dist/devices/onenuo.js.map +1 -0
  921. package/dist/devices/onesti.d.ts +3 -0
  922. package/dist/devices/onesti.d.ts.map +1 -0
  923. package/dist/devices/onesti.js +265 -0
  924. package/dist/devices/onesti.js.map +1 -0
  925. package/dist/devices/onokom.d.ts +3 -0
  926. package/dist/devices/onokom.d.ts.map +1 -0
  927. package/dist/devices/onokom.js +2715 -0
  928. package/dist/devices/onokom.js.map +1 -0
  929. package/dist/devices/openlumi.d.ts +3 -0
  930. package/dist/devices/openlumi.d.ts.map +1 -0
  931. package/dist/devices/openlumi.js +47 -0
  932. package/dist/devices/openlumi.js.map +1 -0
  933. package/dist/devices/orvibo.d.ts +12 -0
  934. package/dist/devices/orvibo.d.ts.map +1 -0
  935. package/dist/devices/orvibo.js +715 -0
  936. package/dist/devices/orvibo.js.map +1 -0
  937. package/dist/devices/orztech.d.ts +3 -0
  938. package/dist/devices/orztech.d.ts.map +1 -0
  939. package/dist/devices/orztech.js +195 -0
  940. package/dist/devices/orztech.js.map +1 -0
  941. package/dist/devices/osram.d.ts +3 -0
  942. package/dist/devices/osram.d.ts.map +1 -0
  943. package/dist/devices/osram.js +513 -0
  944. package/dist/devices/osram.js.map +1 -0
  945. package/dist/devices/oujiabao.d.ts +3 -0
  946. package/dist/devices/oujiabao.d.ts.map +1 -0
  947. package/dist/devices/oujiabao.js +51 -0
  948. package/dist/devices/oujiabao.js.map +1 -0
  949. package/dist/devices/owon.d.ts +3 -0
  950. package/dist/devices/owon.d.ts.map +1 -0
  951. package/dist/devices/owon.js +888 -0
  952. package/dist/devices/owon.js.map +1 -0
  953. package/dist/devices/ozsmartthings.d.ts +3 -0
  954. package/dist/devices/ozsmartthings.d.ts.map +1 -0
  955. package/dist/devices/ozsmartthings.js +47 -0
  956. package/dist/devices/ozsmartthings.js.map +1 -0
  957. package/dist/devices/paul_neuhaus.d.ts +3 -0
  958. package/dist/devices/paul_neuhaus.d.ts.map +1 -0
  959. package/dist/devices/paul_neuhaus.js +190 -0
  960. package/dist/devices/paul_neuhaus.js.map +1 -0
  961. package/dist/devices/paulmann.d.ts +3 -0
  962. package/dist/devices/paulmann.d.ts.map +1 -0
  963. package/dist/devices/paulmann.js +426 -0
  964. package/dist/devices/paulmann.js.map +1 -0
  965. package/dist/devices/peq.d.ts +3 -0
  966. package/dist/devices/peq.d.ts.map +1 -0
  967. package/dist/devices/peq.js +60 -0
  968. package/dist/devices/peq.js.map +1 -0
  969. package/dist/devices/perenio.d.ts +3 -0
  970. package/dist/devices/perenio.d.ts.map +1 -0
  971. package/dist/devices/perenio.js +461 -0
  972. package/dist/devices/perenio.js.map +1 -0
  973. package/dist/devices/philio.d.ts +3 -0
  974. package/dist/devices/philio.d.ts.map +1 -0
  975. package/dist/devices/philio.js +48 -0
  976. package/dist/devices/philio.js.map +1 -0
  977. package/dist/devices/philips.d.ts +3 -0
  978. package/dist/devices/philips.d.ts.map +1 -0
  979. package/dist/devices/philips.js +4948 -0
  980. package/dist/devices/philips.js.map +1 -0
  981. package/dist/devices/plaid.d.ts +3 -0
  982. package/dist/devices/plaid.d.ts.map +1 -0
  983. package/dist/devices/plaid.js +61 -0
  984. package/dist/devices/plaid.js.map +1 -0
  985. package/dist/devices/plugwise.d.ts +3 -0
  986. package/dist/devices/plugwise.d.ts.map +1 -0
  987. package/dist/devices/plugwise.js +217 -0
  988. package/dist/devices/plugwise.js.map +1 -0
  989. package/dist/devices/profalux.d.ts +3 -0
  990. package/dist/devices/profalux.d.ts.map +1 -0
  991. package/dist/devices/profalux.js +215 -0
  992. package/dist/devices/profalux.js.map +1 -0
  993. package/dist/devices/prolight.d.ts +3 -0
  994. package/dist/devices/prolight.d.ts.map +1 -0
  995. package/dist/devices/prolight.js +111 -0
  996. package/dist/devices/prolight.js.map +1 -0
  997. package/dist/devices/purmo.d.ts +3 -0
  998. package/dist/devices/purmo.d.ts.map +1 -0
  999. package/dist/devices/purmo.js +91 -0
  1000. package/dist/devices/purmo.js.map +1 -0
  1001. package/dist/devices/pushok.d.ts +3 -0
  1002. package/dist/devices/pushok.d.ts.map +1 -0
  1003. package/dist/devices/pushok.js +736 -0
  1004. package/dist/devices/pushok.js.map +1 -0
  1005. package/dist/devices/qa.d.ts +3 -0
  1006. package/dist/devices/qa.d.ts.map +1 -0
  1007. package/dist/devices/qa.js +445 -0
  1008. package/dist/devices/qa.js.map +1 -0
  1009. package/dist/devices/qmotion.d.ts +3 -0
  1010. package/dist/devices/qmotion.d.ts.map +1 -0
  1011. package/dist/devices/qmotion.js +69 -0
  1012. package/dist/devices/qmotion.js.map +1 -0
  1013. package/dist/devices/qoto.d.ts +3 -0
  1014. package/dist/devices/qoto.d.ts.map +1 -0
  1015. package/dist/devices/qoto.js +83 -0
  1016. package/dist/devices/qoto.js.map +1 -0
  1017. package/dist/devices/quirky.d.ts +8 -0
  1018. package/dist/devices/quirky.d.ts.map +1 -0
  1019. package/dist/devices/quirky.js +47 -0
  1020. package/dist/devices/quirky.js.map +1 -0
  1021. package/dist/devices/quotra.d.ts +3 -0
  1022. package/dist/devices/quotra.d.ts.map +1 -0
  1023. package/dist/devices/quotra.js +54 -0
  1024. package/dist/devices/quotra.js.map +1 -0
  1025. package/dist/devices/rademacher.d.ts +3 -0
  1026. package/dist/devices/rademacher.d.ts.map +1 -0
  1027. package/dist/devices/rademacher.js +61 -0
  1028. package/dist/devices/rademacher.js.map +1 -0
  1029. package/dist/devices/radium.d.ts +3 -0
  1030. package/dist/devices/radium.d.ts.map +1 -0
  1031. package/dist/devices/radium.js +47 -0
  1032. package/dist/devices/radium.js.map +1 -0
  1033. package/dist/devices/raex.d.ts +3 -0
  1034. package/dist/devices/raex.d.ts.map +1 -0
  1035. package/dist/devices/raex.js +47 -0
  1036. package/dist/devices/raex.js.map +1 -0
  1037. package/dist/devices/rgb_genie.d.ts +3 -0
  1038. package/dist/devices/rgb_genie.d.ts.map +1 -0
  1039. package/dist/devices/rgb_genie.js +277 -0
  1040. package/dist/devices/rgb_genie.js.map +1 -0
  1041. package/dist/devices/robb.d.ts +3 -0
  1042. package/dist/devices/robb.d.ts.map +1 -0
  1043. package/dist/devices/robb.js +492 -0
  1044. package/dist/devices/robb.js.map +1 -0
  1045. package/dist/devices/roome.d.ts +3 -0
  1046. package/dist/devices/roome.d.ts.map +1 -0
  1047. package/dist/devices/roome.js +51 -0
  1048. package/dist/devices/roome.js.map +1 -0
  1049. package/dist/devices/rtx.d.ts +3 -0
  1050. package/dist/devices/rtx.d.ts.map +1 -0
  1051. package/dist/devices/rtx.js +143 -0
  1052. package/dist/devices/rtx.js.map +1 -0
  1053. package/dist/devices/salus_controls.d.ts +3 -0
  1054. package/dist/devices/salus_controls.d.ts.map +1 -0
  1055. package/dist/devices/salus_controls.js +222 -0
  1056. package/dist/devices/salus_controls.js.map +1 -0
  1057. package/dist/devices/samotech.d.ts +3 -0
  1058. package/dist/devices/samotech.d.ts.map +1 -0
  1059. package/dist/devices/samotech.js +123 -0
  1060. package/dist/devices/samotech.js.map +1 -0
  1061. package/dist/devices/saswell.d.ts +3 -0
  1062. package/dist/devices/saswell.d.ts.map +1 -0
  1063. package/dist/devices/saswell.js +120 -0
  1064. package/dist/devices/saswell.js.map +1 -0
  1065. package/dist/devices/sber.d.ts +3 -0
  1066. package/dist/devices/sber.d.ts.map +1 -0
  1067. package/dist/devices/sber.js +1921 -0
  1068. package/dist/devices/sber.js.map +1 -0
  1069. package/dist/devices/scanproducts.d.ts +3 -0
  1070. package/dist/devices/scanproducts.d.ts.map +1 -0
  1071. package/dist/devices/scanproducts.js +54 -0
  1072. package/dist/devices/scanproducts.js.map +1 -0
  1073. package/dist/devices/schlage.d.ts +3 -0
  1074. package/dist/devices/schlage.d.ts.map +1 -0
  1075. package/dist/devices/schlage.js +60 -0
  1076. package/dist/devices/schlage.js.map +1 -0
  1077. package/dist/devices/schneider_electric.d.ts +10 -0
  1078. package/dist/devices/schneider_electric.d.ts.map +1 -0
  1079. package/dist/devices/schneider_electric.js +2801 -0
  1080. package/dist/devices/schneider_electric.js.map +1 -0
  1081. package/dist/devices/schwaiger.d.ts +3 -0
  1082. package/dist/devices/schwaiger.d.ts.map +1 -0
  1083. package/dist/devices/schwaiger.js +105 -0
  1084. package/dist/devices/schwaiger.js.map +1 -0
  1085. package/dist/devices/seastar_intelligence.d.ts +3 -0
  1086. package/dist/devices/seastar_intelligence.d.ts.map +1 -0
  1087. package/dist/devices/seastar_intelligence.js +52 -0
  1088. package/dist/devices/seastar_intelligence.js.map +1 -0
  1089. package/dist/devices/securifi.d.ts +3 -0
  1090. package/dist/devices/securifi.d.ts.map +1 -0
  1091. package/dist/devices/securifi.js +79 -0
  1092. package/dist/devices/securifi.js.map +1 -0
  1093. package/dist/devices/sengled.d.ts +6 -0
  1094. package/dist/devices/sengled.d.ts.map +1 -0
  1095. package/dist/devices/sengled.js +395 -0
  1096. package/dist/devices/sengled.js.map +1 -0
  1097. package/dist/devices/senoro.d.ts +3 -0
  1098. package/dist/devices/senoro.d.ts.map +1 -0
  1099. package/dist/devices/senoro.js +64 -0
  1100. package/dist/devices/senoro.js.map +1 -0
  1101. package/dist/devices/sercomm.d.ts +3 -0
  1102. package/dist/devices/sercomm.d.ts.map +1 -0
  1103. package/dist/devices/sercomm.js +193 -0
  1104. package/dist/devices/sercomm.js.map +1 -0
  1105. package/dist/devices/shade_control.d.ts +3 -0
  1106. package/dist/devices/shade_control.d.ts.map +1 -0
  1107. package/dist/devices/shade_control.js +61 -0
  1108. package/dist/devices/shade_control.js.map +1 -0
  1109. package/dist/devices/shelly.d.ts +3 -0
  1110. package/dist/devices/shelly.d.ts.map +1 -0
  1111. package/dist/devices/shelly.js +1304 -0
  1112. package/dist/devices/shelly.js.map +1 -0
  1113. package/dist/devices/shenzhen_homa.d.ts +3 -0
  1114. package/dist/devices/shenzhen_homa.d.ts.map +1 -0
  1115. package/dist/devices/shenzhen_homa.js +143 -0
  1116. package/dist/devices/shenzhen_homa.js.map +1 -0
  1117. package/dist/devices/shinasystem.d.ts +3 -0
  1118. package/dist/devices/shinasystem.d.ts.map +1 -0
  1119. package/dist/devices/shinasystem.js +1322 -0
  1120. package/dist/devices/shinasystem.js.map +1 -0
  1121. package/dist/devices/shyugj.d.ts +3 -0
  1122. package/dist/devices/shyugj.d.ts.map +1 -0
  1123. package/dist/devices/shyugj.js +53 -0
  1124. package/dist/devices/shyugj.js.map +1 -0
  1125. package/dist/devices/siglis.d.ts +3 -0
  1126. package/dist/devices/siglis.d.ts.map +1 -0
  1127. package/dist/devices/siglis.js +440 -0
  1128. package/dist/devices/siglis.js.map +1 -0
  1129. package/dist/devices/sikom.d.ts +3 -0
  1130. package/dist/devices/sikom.d.ts.map +1 -0
  1131. package/dist/devices/sikom.js +64 -0
  1132. package/dist/devices/sikom.js.map +1 -0
  1133. package/dist/devices/silicon_labs.d.ts +3 -0
  1134. package/dist/devices/silicon_labs.d.ts.map +1 -0
  1135. package/dist/devices/silicon_labs.js +47 -0
  1136. package/dist/devices/silicon_labs.js.map +1 -0
  1137. package/dist/devices/simon.d.ts +3 -0
  1138. package/dist/devices/simon.d.ts.map +1 -0
  1139. package/dist/devices/simon.js +54 -0
  1140. package/dist/devices/simon.js.map +1 -0
  1141. package/dist/devices/simpla_home.d.ts +3 -0
  1142. package/dist/devices/simpla_home.d.ts.map +1 -0
  1143. package/dist/devices/simpla_home.js +97 -0
  1144. package/dist/devices/simpla_home.js.map +1 -0
  1145. package/dist/devices/sinope.d.ts +3 -0
  1146. package/dist/devices/sinope.d.ts.map +1 -0
  1147. package/dist/devices/sinope.js +2015 -0
  1148. package/dist/devices/sinope.js.map +1 -0
  1149. package/dist/devices/siterwell.d.ts +3 -0
  1150. package/dist/devices/siterwell.d.ts.map +1 -0
  1151. package/dist/devices/siterwell.js +107 -0
  1152. package/dist/devices/siterwell.js.map +1 -0
  1153. package/dist/devices/skydance.d.ts +3 -0
  1154. package/dist/devices/skydance.d.ts.map +1 -0
  1155. package/dist/devices/skydance.js +138 -0
  1156. package/dist/devices/skydance.js.map +1 -0
  1157. package/dist/devices/slacky_diy.d.ts +3 -0
  1158. package/dist/devices/slacky_diy.d.ts.map +1 -0
  1159. package/dist/devices/slacky_diy.js +3694 -0
  1160. package/dist/devices/slacky_diy.js.map +1 -0
  1161. package/dist/devices/slv.d.ts +3 -0
  1162. package/dist/devices/slv.d.ts.map +1 -0
  1163. package/dist/devices/slv.js +77 -0
  1164. package/dist/devices/slv.js.map +1 -0
  1165. package/dist/devices/smarli.d.ts +3 -0
  1166. package/dist/devices/smarli.d.ts.map +1 -0
  1167. package/dist/devices/smarli.js +99 -0
  1168. package/dist/devices/smarli.js.map +1 -0
  1169. package/dist/devices/smart9.d.ts +3 -0
  1170. package/dist/devices/smart9.d.ts.map +1 -0
  1171. package/dist/devices/smart9.js +58 -0
  1172. package/dist/devices/smart9.js.map +1 -0
  1173. package/dist/devices/smart_home_pty.d.ts +3 -0
  1174. package/dist/devices/smart_home_pty.d.ts.map +1 -0
  1175. package/dist/devices/smart_home_pty.js +54 -0
  1176. package/dist/devices/smart_home_pty.js.map +1 -0
  1177. package/dist/devices/smartenit.d.ts +3 -0
  1178. package/dist/devices/smartenit.d.ts.map +1 -0
  1179. package/dist/devices/smartenit.js +77 -0
  1180. package/dist/devices/smartenit.js.map +1 -0
  1181. package/dist/devices/smartthings.d.ts +26 -0
  1182. package/dist/devices/smartthings.d.ts.map +1 -0
  1183. package/dist/devices/smartthings.js +571 -0
  1184. package/dist/devices/smartthings.js.map +1 -0
  1185. package/dist/devices/smartwings.d.ts +3 -0
  1186. package/dist/devices/smartwings.d.ts.map +1 -0
  1187. package/dist/devices/smartwings.js +60 -0
  1188. package/dist/devices/smartwings.js.map +1 -0
  1189. package/dist/devices/smlight.d.ts +3 -0
  1190. package/dist/devices/smlight.d.ts.map +1 -0
  1191. package/dist/devices/smlight.js +73 -0
  1192. package/dist/devices/smlight.js.map +1 -0
  1193. package/dist/devices/soanalarm.d.ts +3 -0
  1194. package/dist/devices/soanalarm.d.ts.map +1 -0
  1195. package/dist/devices/soanalarm.js +58 -0
  1196. package/dist/devices/soanalarm.js.map +1 -0
  1197. package/dist/devices/sohan_electric.d.ts +3 -0
  1198. package/dist/devices/sohan_electric.d.ts.map +1 -0
  1199. package/dist/devices/sohan_electric.js +49 -0
  1200. package/dist/devices/sohan_electric.js.map +1 -0
  1201. package/dist/devices/solaredge.d.ts +3 -0
  1202. package/dist/devices/solaredge.d.ts.map +1 -0
  1203. package/dist/devices/solaredge.js +47 -0
  1204. package/dist/devices/solaredge.js.map +1 -0
  1205. package/dist/devices/soma.d.ts +3 -0
  1206. package/dist/devices/soma.d.ts.map +1 -0
  1207. package/dist/devices/soma.js +47 -0
  1208. package/dist/devices/soma.js.map +1 -0
  1209. package/dist/devices/somfy.d.ts +3 -0
  1210. package/dist/devices/somfy.d.ts.map +1 -0
  1211. package/dist/devices/somfy.js +173 -0
  1212. package/dist/devices/somfy.js.map +1 -0
  1213. package/dist/devices/somgoms.d.ts +3 -0
  1214. package/dist/devices/somgoms.d.ts.map +1 -0
  1215. package/dist/devices/somgoms.js +80 -0
  1216. package/dist/devices/somgoms.js.map +1 -0
  1217. package/dist/devices/sonoff.d.ts +42 -0
  1218. package/dist/devices/sonoff.d.ts.map +1 -0
  1219. package/dist/devices/sonoff.js +4921 -0
  1220. package/dist/devices/sonoff.js.map +1 -0
  1221. package/dist/devices/sowilo.d.ts +3 -0
  1222. package/dist/devices/sowilo.d.ts.map +1 -0
  1223. package/dist/devices/sowilo.js +47 -0
  1224. package/dist/devices/sowilo.js.map +1 -0
  1225. package/dist/devices/spacetronik.d.ts +3 -0
  1226. package/dist/devices/spacetronik.d.ts.map +1 -0
  1227. package/dist/devices/spacetronik.js +53 -0
  1228. package/dist/devices/spacetronik.js.map +1 -0
  1229. package/dist/devices/spotmau.d.ts +3 -0
  1230. package/dist/devices/spotmau.d.ts.map +1 -0
  1231. package/dist/devices/spotmau.js +74 -0
  1232. package/dist/devices/spotmau.js.map +1 -0
  1233. package/dist/devices/sprut.d.ts +3 -0
  1234. package/dist/devices/sprut.d.ts.map +1 -0
  1235. package/dist/devices/sprut.js +328 -0
  1236. package/dist/devices/sprut.js.map +1 -0
  1237. package/dist/devices/stello.d.ts +3 -0
  1238. package/dist/devices/stello.d.ts.map +1 -0
  1239. package/dist/devices/stello.js +142 -0
  1240. package/dist/devices/stello.js.map +1 -0
  1241. package/dist/devices/stelpro.d.ts +3 -0
  1242. package/dist/devices/stelpro.d.ts.map +1 -0
  1243. package/dist/devices/stelpro.js +376 -0
  1244. package/dist/devices/stelpro.js.map +1 -0
  1245. package/dist/devices/sunricher.d.ts +30 -0
  1246. package/dist/devices/sunricher.d.ts.map +1 -0
  1247. package/dist/devices/sunricher.js +2337 -0
  1248. package/dist/devices/sunricher.js.map +1 -0
  1249. package/dist/devices/superled.d.ts +3 -0
  1250. package/dist/devices/superled.d.ts.map +1 -0
  1251. package/dist/devices/superled.js +47 -0
  1252. package/dist/devices/superled.js.map +1 -0
  1253. package/dist/devices/swann.d.ts +3 -0
  1254. package/dist/devices/swann.d.ts.map +1 -0
  1255. package/dist/devices/swann.js +69 -0
  1256. package/dist/devices/swann.js.map +1 -0
  1257. package/dist/devices/sylvania.d.ts +3 -0
  1258. package/dist/devices/sylvania.d.ts.map +1 -0
  1259. package/dist/devices/sylvania.js +223 -0
  1260. package/dist/devices/sylvania.js.map +1 -0
  1261. package/dist/devices/tapestry.d.ts +3 -0
  1262. package/dist/devices/tapestry.d.ts.map +1 -0
  1263. package/dist/devices/tapestry.js +52 -0
  1264. package/dist/devices/tapestry.js.map +1 -0
  1265. package/dist/devices/task_lighting.d.ts +3 -0
  1266. package/dist/devices/task_lighting.d.ts.map +1 -0
  1267. package/dist/devices/task_lighting.js +47 -0
  1268. package/dist/devices/task_lighting.js.map +1 -0
  1269. package/dist/devices/tci.d.ts +3 -0
  1270. package/dist/devices/tci.d.ts.map +1 -0
  1271. package/dist/devices/tci.js +68 -0
  1272. package/dist/devices/tci.js.map +1 -0
  1273. package/dist/devices/tcl.d.ts +3 -0
  1274. package/dist/devices/tcl.d.ts.map +1 -0
  1275. package/dist/devices/tcl.js +47 -0
  1276. package/dist/devices/tcl.js.map +1 -0
  1277. package/dist/devices/tech.d.ts +3 -0
  1278. package/dist/devices/tech.d.ts.map +1 -0
  1279. package/dist/devices/tech.js +213 -0
  1280. package/dist/devices/tech.js.map +1 -0
  1281. package/dist/devices/technicolor.d.ts +3 -0
  1282. package/dist/devices/technicolor.d.ts.map +1 -0
  1283. package/dist/devices/technicolor.js +85 -0
  1284. package/dist/devices/technicolor.js.map +1 -0
  1285. package/dist/devices/terncy.d.ts +3 -0
  1286. package/dist/devices/terncy.d.ts.map +1 -0
  1287. package/dist/devices/terncy.js +192 -0
  1288. package/dist/devices/terncy.js.map +1 -0
  1289. package/dist/devices/the_light_group.d.ts +3 -0
  1290. package/dist/devices/the_light_group.d.ts.map +1 -0
  1291. package/dist/devices/the_light_group.js +145 -0
  1292. package/dist/devices/the_light_group.js.map +1 -0
  1293. package/dist/devices/third_reality.d.ts +3 -0
  1294. package/dist/devices/third_reality.d.ts.map +1 -0
  1295. package/dist/devices/third_reality.js +1067 -0
  1296. package/dist/devices/third_reality.js.map +1 -0
  1297. package/dist/devices/tis_control.d.ts +3 -0
  1298. package/dist/devices/tis_control.d.ts.map +1 -0
  1299. package/dist/devices/tis_control.js +47 -0
  1300. package/dist/devices/tis_control.js.map +1 -0
  1301. package/dist/devices/titan_products.d.ts +3 -0
  1302. package/dist/devices/titan_products.d.ts.map +1 -0
  1303. package/dist/devices/titan_products.js +58 -0
  1304. package/dist/devices/titan_products.js.map +1 -0
  1305. package/dist/devices/tlwglobal.d.ts +3 -0
  1306. package/dist/devices/tlwglobal.d.ts.map +1 -0
  1307. package/dist/devices/tlwglobal.js +64 -0
  1308. package/dist/devices/tlwglobal.js.map +1 -0
  1309. package/dist/devices/tnce.d.ts +3 -0
  1310. package/dist/devices/tnce.d.ts.map +1 -0
  1311. package/dist/devices/tnce.js +54 -0
  1312. package/dist/devices/tnce.js.map +1 -0
  1313. package/dist/devices/tplink.d.ts +3 -0
  1314. package/dist/devices/tplink.d.ts.map +1 -0
  1315. package/dist/devices/tplink.js +77 -0
  1316. package/dist/devices/tplink.js.map +1 -0
  1317. package/dist/devices/trust.d.ts +3 -0
  1318. package/dist/devices/trust.d.ts.map +1 -0
  1319. package/dist/devices/trust.js +180 -0
  1320. package/dist/devices/trust.js.map +1 -0
  1321. package/dist/devices/tubeszb.d.ts +3 -0
  1322. package/dist/devices/tubeszb.d.ts.map +1 -0
  1323. package/dist/devices/tubeszb.js +56 -0
  1324. package/dist/devices/tubeszb.js.map +1 -0
  1325. package/dist/devices/tuya.d.ts +3 -0
  1326. package/dist/devices/tuya.d.ts.map +1 -0
  1327. package/dist/devices/tuya.js +24771 -0
  1328. package/dist/devices/tuya.js.map +1 -0
  1329. package/dist/devices/ubisys.d.ts +3 -0
  1330. package/dist/devices/ubisys.d.ts.map +1 -0
  1331. package/dist/devices/ubisys.js +1295 -0
  1332. package/dist/devices/ubisys.js.map +1 -0
  1333. package/dist/devices/uhome.d.ts +3 -0
  1334. package/dist/devices/uhome.d.ts.map +1 -0
  1335. package/dist/devices/uhome.js +60 -0
  1336. package/dist/devices/uhome.js.map +1 -0
  1337. package/dist/devices/universal_electronics_inc.d.ts +3 -0
  1338. package/dist/devices/universal_electronics_inc.d.ts.map +1 -0
  1339. package/dist/devices/universal_electronics_inc.js +156 -0
  1340. package/dist/devices/universal_electronics_inc.js.map +1 -0
  1341. package/dist/devices/vav.d.ts +3 -0
  1342. package/dist/devices/vav.d.ts.map +1 -0
  1343. package/dist/devices/vav.js +57 -0
  1344. package/dist/devices/vav.js.map +1 -0
  1345. package/dist/devices/vbled.d.ts +3 -0
  1346. package/dist/devices/vbled.d.ts.map +1 -0
  1347. package/dist/devices/vbled.js +47 -0
  1348. package/dist/devices/vbled.js.map +1 -0
  1349. package/dist/devices/vesternet.d.ts +3 -0
  1350. package/dist/devices/vesternet.d.ts.map +1 -0
  1351. package/dist/devices/vesternet.js +355 -0
  1352. package/dist/devices/vesternet.js.map +1 -0
  1353. package/dist/devices/viessmann.d.ts +3 -0
  1354. package/dist/devices/viessmann.d.ts.map +1 -0
  1355. package/dist/devices/viessmann.js +120 -0
  1356. package/dist/devices/viessmann.js.map +1 -0
  1357. package/dist/devices/villeroy_boch.d.ts +3 -0
  1358. package/dist/devices/villeroy_boch.d.ts.map +1 -0
  1359. package/dist/devices/villeroy_boch.js +54 -0
  1360. package/dist/devices/villeroy_boch.js.map +1 -0
  1361. package/dist/devices/vimar.d.ts +3 -0
  1362. package/dist/devices/vimar.d.ts.map +1 -0
  1363. package/dist/devices/vimar.js +140 -0
  1364. package/dist/devices/vimar.js.map +1 -0
  1365. package/dist/devices/visonic.d.ts +3 -0
  1366. package/dist/devices/visonic.d.ts.map +1 -0
  1367. package/dist/devices/visonic.js +134 -0
  1368. package/dist/devices/visonic.js.map +1 -0
  1369. package/dist/devices/vrey.d.ts +3 -0
  1370. package/dist/devices/vrey.d.ts.map +1 -0
  1371. package/dist/devices/vrey.js +48 -0
  1372. package/dist/devices/vrey.js.map +1 -0
  1373. package/dist/devices/vsmart.d.ts +3 -0
  1374. package/dist/devices/vsmart.d.ts.map +1 -0
  1375. package/dist/devices/vsmart.js +442 -0
  1376. package/dist/devices/vsmart.js.map +1 -0
  1377. package/dist/devices/wally.d.ts +3 -0
  1378. package/dist/devices/wally.d.ts.map +1 -0
  1379. package/dist/devices/wally.js +60 -0
  1380. package/dist/devices/wally.js.map +1 -0
  1381. package/dist/devices/waxman.d.ts +3 -0
  1382. package/dist/devices/waxman.d.ts.map +1 -0
  1383. package/dist/devices/waxman.js +83 -0
  1384. package/dist/devices/waxman.js.map +1 -0
  1385. package/dist/devices/weiser.d.ts +3 -0
  1386. package/dist/devices/weiser.d.ts.map +1 -0
  1387. package/dist/devices/weiser.js +54 -0
  1388. package/dist/devices/weiser.js.map +1 -0
  1389. package/dist/devices/weten.d.ts +3 -0
  1390. package/dist/devices/weten.d.ts.map +1 -0
  1391. package/dist/devices/weten.js +83 -0
  1392. package/dist/devices/weten.js.map +1 -0
  1393. package/dist/devices/wirenboard.d.ts +3 -0
  1394. package/dist/devices/wirenboard.d.ts.map +1 -0
  1395. package/dist/devices/wirenboard.js +715 -0
  1396. package/dist/devices/wirenboard.js.map +1 -0
  1397. package/dist/devices/wisdom.d.ts +3 -0
  1398. package/dist/devices/wisdom.d.ts.map +1 -0
  1399. package/dist/devices/wisdom.js +47 -0
  1400. package/dist/devices/wisdom.js.map +1 -0
  1401. package/dist/devices/wmun.d.ts +3 -0
  1402. package/dist/devices/wmun.d.ts.map +1 -0
  1403. package/dist/devices/wmun.js +61 -0
  1404. package/dist/devices/wmun.js.map +1 -0
  1405. package/dist/devices/woolley.d.ts +3 -0
  1406. package/dist/devices/woolley.d.ts.map +1 -0
  1407. package/dist/devices/woolley.js +96 -0
  1408. package/dist/devices/woolley.js.map +1 -0
  1409. package/dist/devices/woox.d.ts +3 -0
  1410. package/dist/devices/woox.d.ts.map +1 -0
  1411. package/dist/devices/woox.js +194 -0
  1412. package/dist/devices/woox.js.map +1 -0
  1413. package/dist/devices/wyze.d.ts +3 -0
  1414. package/dist/devices/wyze.d.ts.map +1 -0
  1415. package/dist/devices/wyze.js +59 -0
  1416. package/dist/devices/wyze.js.map +1 -0
  1417. package/dist/devices/xal.d.ts +3 -0
  1418. package/dist/devices/xal.d.ts.map +1 -0
  1419. package/dist/devices/xal.js +61 -0
  1420. package/dist/devices/xal.js.map +1 -0
  1421. package/dist/devices/xenon.d.ts +4 -0
  1422. package/dist/devices/xenon.d.ts.map +1 -0
  1423. package/dist/devices/xenon.js +65 -0
  1424. package/dist/devices/xenon.js.map +1 -0
  1425. package/dist/devices/xinghuoyuan.d.ts +3 -0
  1426. package/dist/devices/xinghuoyuan.d.ts.map +1 -0
  1427. package/dist/devices/xinghuoyuan.js +47 -0
  1428. package/dist/devices/xinghuoyuan.js.map +1 -0
  1429. package/dist/devices/xyzroe.d.ts +3 -0
  1430. package/dist/devices/xyzroe.d.ts.map +1 -0
  1431. package/dist/devices/xyzroe.js +511 -0
  1432. package/dist/devices/xyzroe.js.map +1 -0
  1433. package/dist/devices/yale.d.ts +3 -0
  1434. package/dist/devices/yale.d.ts.map +1 -0
  1435. package/dist/devices/yale.js +686 -0
  1436. package/dist/devices/yale.js.map +1 -0
  1437. package/dist/devices/yandex.d.ts +3 -0
  1438. package/dist/devices/yandex.d.ts.map +1 -0
  1439. package/dist/devices/yandex.js +677 -0
  1440. package/dist/devices/yandex.js.map +1 -0
  1441. package/dist/devices/ynoa.d.ts +3 -0
  1442. package/dist/devices/ynoa.d.ts.map +1 -0
  1443. package/dist/devices/ynoa.js +116 -0
  1444. package/dist/devices/ynoa.js.map +1 -0
  1445. package/dist/devices/yokis.d.ts +3 -0
  1446. package/dist/devices/yokis.d.ts.map +1 -0
  1447. package/dist/devices/yokis.js +2972 -0
  1448. package/dist/devices/yokis.js.map +1 -0
  1449. package/dist/devices/yookee.d.ts +3 -0
  1450. package/dist/devices/yookee.d.ts.map +1 -0
  1451. package/dist/devices/yookee.js +59 -0
  1452. package/dist/devices/yookee.js.map +1 -0
  1453. package/dist/devices/ysrsai.d.ts +3 -0
  1454. package/dist/devices/ysrsai.d.ts.map +1 -0
  1455. package/dist/devices/ysrsai.js +68 -0
  1456. package/dist/devices/ysrsai.js.map +1 -0
  1457. package/dist/devices/zbeacon.d.ts +3 -0
  1458. package/dist/devices/zbeacon.d.ts.map +1 -0
  1459. package/dist/devices/zbeacon.js +54 -0
  1460. package/dist/devices/zbeacon.js.map +1 -0
  1461. package/dist/devices/zemismart.d.ts +3 -0
  1462. package/dist/devices/zemismart.d.ts.map +1 -0
  1463. package/dist/devices/zemismart.js +1061 -0
  1464. package/dist/devices/zemismart.js.map +1 -0
  1465. package/dist/devices/zen.d.ts +3 -0
  1466. package/dist/devices/zen.d.ts.map +1 -0
  1467. package/dist/devices/zen.js +93 -0
  1468. package/dist/devices/zen.js.map +1 -0
  1469. package/dist/devices/zigbeetlc.d.ts +3 -0
  1470. package/dist/devices/zigbeetlc.d.ts.map +1 -0
  1471. package/dist/devices/zigbeetlc.js +374 -0
  1472. package/dist/devices/zigbeetlc.js.map +1 -0
  1473. package/dist/devices/zipato.d.ts +3 -0
  1474. package/dist/devices/zipato.d.ts.map +1 -0
  1475. package/dist/devices/zipato.js +47 -0
  1476. package/dist/devices/zipato.js.map +1 -0
  1477. package/dist/devices/zunzunbee.d.ts +3 -0
  1478. package/dist/devices/zunzunbee.d.ts.map +1 -0
  1479. package/dist/devices/zunzunbee.js +97 -0
  1480. package/dist/devices/zunzunbee.js.map +1 -0
  1481. package/dist/index.d.ts +19 -0
  1482. package/dist/index.d.ts.map +1 -0
  1483. package/dist/index.js.map +1 -0
  1484. package/dist/indexer.d.ts +5 -0
  1485. package/dist/indexer.d.ts.map +1 -0
  1486. package/dist/indexer.js +135 -0
  1487. package/dist/indexer.js.map +1 -0
  1488. package/dist/lib/adurosmart.d.ts +15 -0
  1489. package/dist/lib/adurosmart.d.ts.map +1 -0
  1490. package/dist/lib/adurosmart.js +669 -0
  1491. package/dist/lib/adurosmart.js.map +1 -0
  1492. package/dist/lib/bosch.d.ts +353 -0
  1493. package/dist/lib/bosch.d.ts.map +1 -0
  1494. package/dist/lib/bosch.js +3163 -0
  1495. package/dist/lib/bosch.js.map +1 -0
  1496. package/dist/lib/color.d.ts +272 -0
  1497. package/dist/lib/color.d.ts.map +1 -0
  1498. package/dist/lib/color.js +766 -0
  1499. package/dist/lib/color.js.map +1 -0
  1500. package/dist/lib/constants.d.ts +78 -0
  1501. package/dist/lib/constants.d.ts.map +1 -0
  1502. package/dist/lib/constants.js +317 -0
  1503. package/dist/lib/constants.js.map +1 -0
  1504. package/dist/lib/develco.d.ts +50 -0
  1505. package/dist/lib/develco.d.ts.map +1 -0
  1506. package/dist/lib/develco.js +433 -0
  1507. package/dist/lib/develco.js.map +1 -0
  1508. package/dist/lib/ewelink.d.ts +30 -0
  1509. package/dist/lib/ewelink.d.ts.map +1 -0
  1510. package/dist/lib/ewelink.js +722 -0
  1511. package/dist/lib/ewelink.js.map +1 -0
  1512. package/dist/lib/exposes.d.ts +376 -0
  1513. package/dist/lib/exposes.d.ts.map +1 -0
  1514. package/dist/lib/exposes.js +1136 -0
  1515. package/dist/lib/exposes.js.map +1 -0
  1516. package/dist/lib/generateDefinition.d.ts +10 -0
  1517. package/dist/lib/generateDefinition.d.ts.map +1 -0
  1518. package/dist/lib/generateDefinition.js +773 -0
  1519. package/dist/lib/generateDefinition.js.map +1 -0
  1520. package/dist/lib/heiman.d.ts +92 -0
  1521. package/dist/lib/heiman.d.ts.map +1 -0
  1522. package/dist/lib/heiman.js +211 -0
  1523. package/dist/lib/heiman.js.map +1 -0
  1524. package/dist/lib/ikea.d.ts +106 -0
  1525. package/dist/lib/ikea.d.ts.map +1 -0
  1526. package/dist/lib/ikea.js +984 -0
  1527. package/dist/lib/ikea.js.map +1 -0
  1528. package/dist/lib/kelvinToXy.d.ts +8 -0
  1529. package/dist/lib/kelvinToXy.d.ts.map +1 -0
  1530. package/dist/lib/kelvinToXy.js +1913 -0
  1531. package/dist/lib/kelvinToXy.js.map +1 -0
  1532. package/dist/lib/ledvance.d.ts +20 -0
  1533. package/dist/lib/ledvance.d.ts.map +1 -0
  1534. package/dist/lib/ledvance.js +100 -0
  1535. package/dist/lib/ledvance.js.map +1 -0
  1536. package/dist/lib/legacy.d.ts +5197 -0
  1537. package/dist/lib/legacy.d.ts.map +1 -0
  1538. package/dist/lib/legacy.js +6865 -0
  1539. package/dist/lib/legacy.js.map +1 -0
  1540. package/dist/lib/legrand.d.ts +132 -0
  1541. package/dist/lib/legrand.d.ts.map +1 -0
  1542. package/dist/lib/legrand.js +404 -0
  1543. package/dist/lib/legrand.js.map +1 -0
  1544. package/dist/lib/light.d.ts +9 -0
  1545. package/dist/lib/light.d.ts.map +1 -0
  1546. package/dist/lib/light.js +144 -0
  1547. package/dist/lib/light.js.map +1 -0
  1548. package/dist/lib/logger.d.ts +4 -0
  1549. package/dist/lib/logger.d.ts.map +1 -0
  1550. package/dist/lib/logger.js +14 -0
  1551. package/dist/lib/logger.js.map +1 -0
  1552. package/dist/lib/lumi.d.ts +1093 -0
  1553. package/dist/lib/lumi.d.ts.map +1 -0
  1554. package/dist/lib/lumi.js +6479 -0
  1555. package/dist/lib/lumi.js.map +1 -0
  1556. package/dist/lib/modernExtend.d.ts +436 -0
  1557. package/dist/lib/modernExtend.d.ts.map +1 -0
  1558. package/dist/lib/modernExtend.js +2702 -0
  1559. package/dist/lib/modernExtend.js.map +1 -0
  1560. package/dist/lib/namron.d.ts +56 -0
  1561. package/dist/lib/namron.d.ts.map +1 -0
  1562. package/dist/lib/namron.js +433 -0
  1563. package/dist/lib/namron.js.map +1 -0
  1564. package/dist/lib/nodon.d.ts +3 -0
  1565. package/dist/lib/nodon.d.ts.map +1 -0
  1566. package/dist/lib/nodon.js +130 -0
  1567. package/dist/lib/nodon.js.map +1 -0
  1568. package/dist/lib/philips.d.ts +321 -0
  1569. package/dist/lib/philips.d.ts.map +1 -0
  1570. package/dist/lib/philips.js +876 -0
  1571. package/dist/lib/philips.js.map +1 -0
  1572. package/dist/lib/reporting.d.ts +57 -0
  1573. package/dist/lib/reporting.d.ts.map +1 -0
  1574. package/dist/lib/reporting.js +294 -0
  1575. package/dist/lib/reporting.js.map +1 -0
  1576. package/dist/lib/sonoff.d.ts +30 -0
  1577. package/dist/lib/sonoff.d.ts.map +1 -0
  1578. package/dist/lib/sonoff.js +91 -0
  1579. package/dist/lib/sonoff.js.map +1 -0
  1580. package/dist/lib/store.d.ts +7 -0
  1581. package/dist/lib/store.d.ts.map +1 -0
  1582. package/dist/lib/store.js +59 -0
  1583. package/dist/lib/store.js.map +1 -0
  1584. package/dist/lib/sunricher.d.ts +29 -0
  1585. package/dist/lib/sunricher.d.ts.map +1 -0
  1586. package/dist/lib/sunricher.js +838 -0
  1587. package/dist/lib/sunricher.js.map +1 -0
  1588. package/dist/lib/tuya.d.ts +998 -0
  1589. package/dist/lib/tuya.d.ts.map +1 -0
  1590. package/dist/lib/tuya.js +3043 -0
  1591. package/dist/lib/tuya.js.map +1 -0
  1592. package/dist/lib/types.d.ts +429 -0
  1593. package/dist/lib/types.d.ts.map +1 -0
  1594. package/dist/lib/types.js +3 -0
  1595. package/dist/lib/types.js.map +1 -0
  1596. package/dist/lib/ubisys.d.ts +107 -0
  1597. package/dist/lib/ubisys.d.ts.map +1 -0
  1598. package/dist/lib/ubisys.js +576 -0
  1599. package/dist/lib/ubisys.js.map +1 -0
  1600. package/dist/lib/utils.d.ts +95 -0
  1601. package/dist/lib/utils.d.ts.map +1 -0
  1602. package/dist/lib/utils.js +736 -0
  1603. package/dist/lib/utils.js.map +1 -0
  1604. package/dist/lib/zosung.d.ts +52 -0
  1605. package/dist/lib/zosung.d.ts.map +1 -0
  1606. package/dist/lib/zosung.js +264 -0
  1607. package/dist/lib/zosung.js.map +1 -0
  1608. package/dist/models-index.json +1 -0
  1609. package/package.json +2 -8
@@ -0,0 +1,2368 @@
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 legacy = __importStar(require("../lib/legacy"));
41
+ const m = __importStar(require("../lib/modernExtend"));
42
+ const reporting = __importStar(require("../lib/reporting"));
43
+ const tuya = __importStar(require("../lib/tuya"));
44
+ const zosung = __importStar(require("../lib/zosung"));
45
+ const e = exposes.presets;
46
+ const ea = exposes.access;
47
+ const fzZosung = zosung.fzZosung;
48
+ const tzZosung = zosung.tzZosung;
49
+ const ez = zosung.presetsZosung;
50
+ const exposesLocal = {
51
+ hour: (name) => e.numeric(name, ea.STATE_SET).withUnit("h").withValueMin(0).withValueMax(23),
52
+ minute: (name) => e.numeric(name, ea.STATE_SET).withUnit("m").withValueMin(0).withValueMax(59),
53
+ program_temperature: (name) => e.numeric(name, ea.STATE_SET).withUnit("°C").withValueMin(5).withValueMax(35).withValueStep(0.5),
54
+ };
55
+ exports.definitions = [
56
+ {
57
+ fingerprint: tuya.fingerprint("TS030F", ["_TZ3210_sxtfesc6"]),
58
+ model: "ADCBZI01",
59
+ vendor: "Moes",
60
+ description: "Curtain Robot",
61
+ fromZigbee: [fz.cover_position_tilt, tuya.fz.datapoints],
62
+ toZigbee: [tz.cover_position_tilt, tz.cover_state, tuya.tz.datapoints],
63
+ exposes: [
64
+ e.cover_position(),
65
+ e.position(),
66
+ e.battery(),
67
+ e.illuminance(),
68
+ e.enum("work_state", ea.STATE, ["standby", "opening", "closing"]).withDescription("Current work state"),
69
+ e.numeric("total_time", ea.STATE).withUnit("s").withDescription("Total operation time"),
70
+ e.enum("situation_set", ea.STATE_SET, ["fully_open", "fully_close"]).withDescription("Situation control"),
71
+ e.enum("fault", ea.STATE, ["none"]).withDescription("Fault status"),
72
+ e.enum("charging_status", ea.STATE, ["none", "uncharged", "charging", "charged"]).withDescription("Charging status"),
73
+ e.numeric("open_threshold", ea.STATE_SET).withValueMin(0).withValueMax(100).withDescription("Light threshold for opening"),
74
+ e.numeric("close_threshold", ea.STATE_SET).withValueMin(0).withValueMax(100).withDescription("Light threshold for closing"),
75
+ e.numeric("curtain_status", ea.STATE_SET).withValueMin(0).withValueMax(255).withDescription("Curtain status"),
76
+ e.numeric("total_distance", ea.STATE).withUnit("m").withDescription("Total distance traveled"),
77
+ e.numeric("factory_test", ea.STATE).withValueMin(0).withValueMax(100).withDescription("Factory test feedback"),
78
+ e.text("custom_week_prog_1", ea.STATE_SET).withDescription("Custom week program 1"),
79
+ e.text("custom_week_prog_2", ea.STATE_SET).withDescription("Custom week program 2"),
80
+ e.text("custom_week_prog_3", ea.STATE_SET).withDescription("Custom week program 3"),
81
+ e.text("custom_week_prog_4", ea.STATE_SET).withDescription("Custom week program 4"),
82
+ ],
83
+ meta: {
84
+ tuyaDatapoints: [
85
+ [1, "state", tuya.valueConverterBasic.lookup({ open: 0, stop: 1, close: 2 })], // Control - open/stop/close
86
+ [2, "position", tuya.valueConverter.coverPosition], // Percent control - set position (0-100)
87
+ [3, "position", tuya.valueConverter.coverPositionInverted], // Percent state - current position (0-100)
88
+ [7, "work_state", tuya.valueConverterBasic.lookup({ standby: 0, opening: 1, closing: 2 })], // Work state
89
+ [10, "total_time", tuya.valueConverter.raw], // Total time (0-120000)
90
+ [11, "situation_set", tuya.valueConverterBasic.lookup({ fully_open: 0, fully_close: 1 })], // Situation control
91
+ [12, "fault", tuya.valueConverterBasic.lookup({ none: 0 })], // Fault (only 'none' available)
92
+ [13, "battery", tuya.valueConverter.raw], // Battery percentage (0-100)
93
+ [
94
+ 101,
95
+ "charging_status",
96
+ tuya.valueConverterBasic.lookup({
97
+ none: 0,
98
+ uncharged: 1,
99
+ charging: 2,
100
+ charged: 3,
101
+ }),
102
+ ], // Charging status
103
+ [103, "custom_week_prog_1", tuya.valueConverter.raw], // Custom week program 1
104
+ [104, "custom_week_prog_2", tuya.valueConverter.raw], // Custom week program 2
105
+ [105, "custom_week_prog_3", tuya.valueConverter.raw], // Custom week program 3
106
+ [106, "custom_week_prog_4", tuya.valueConverter.raw], // Custom week program 4
107
+ [107, "illuminance", tuya.valueConverter.raw], // Light intensity (0-100)
108
+ [108, "open_threshold", tuya.valueConverter.raw], // Open window threshold (0-100)
109
+ [109, "close_threshold", tuya.valueConverter.raw], // Close window threshold (0-100)
110
+ [110, "curtain_status", tuya.valueConverter.raw], // Curtain status (0-255)
111
+ [111, "factory_test", tuya.valueConverter.raw], // Factory test (0-100)
112
+ [112, "total_distance", tuya.valueConverter.raw], // Total running distance in meters
113
+ ],
114
+ },
115
+ },
116
+ {
117
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE204_zxkwaztm"]),
118
+ model: "ZHT-S03",
119
+ vendor: "Moes",
120
+ description: "Zigbee wall thermostat",
121
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
122
+ exposes: [
123
+ e.child_lock(),
124
+ e
125
+ .climate()
126
+ .withSystemMode(["off", "heat"], ea.STATE)
127
+ .withSetpoint("current_heating_setpoint", 5, 35, 0.5, ea.STATE_SET)
128
+ .withRunningState(["idle", "heat"], ea.STATE)
129
+ .withPreset(["schedule", "manual"])
130
+ .withLocalTemperature(ea.STATE)
131
+ .withLocalTemperatureCalibration(-9.9, 9.9, 0.1, ea.STATE_SET),
132
+ e
133
+ .numeric("temperature_delta", ea.STATE_SET)
134
+ .withUnit("°C")
135
+ .withValueMax(10)
136
+ .withValueMin(0.1)
137
+ .withValueStep(0.1)
138
+ .withPreset("default", 1, "Default value")
139
+ .withDescription("The delta between local_temperature and current_heating_setpoint to trigger Heat"),
140
+ e.enum("working_day", ea.STATE_SET, ["mon_fri", "mon_sat", "mon_sun"]).withDescription("Workday setting"),
141
+ e.text("schedule_weekday", ea.STATE_SET).withDescription("Workdays (6 times `hh:mm/cc.c°C`)"),
142
+ e.text("schedule_holiday", ea.STATE_SET).withDescription("Holidays (2 times `hh:mm/cc.c°C)`"),
143
+ e.binary("frost_protection", ea.STATE_SET, "ON", "OFF").withDescription("Antifreeze function"),
144
+ ],
145
+ meta: {
146
+ tuyaDatapoints: [
147
+ [
148
+ 36,
149
+ "running_state",
150
+ tuya.valueConverterBasic.lookup({
151
+ cool: tuya.enum(2),
152
+ heat: tuya.enum(1),
153
+ idle: tuya.enum(0),
154
+ }),
155
+ ],
156
+ [1, "system_mode", tuya.valueConverterBasic.lookup({ heat: true, off: false })],
157
+ [
158
+ 2,
159
+ "preset",
160
+ tuya.valueConverterBasic.lookup({
161
+ schedule: tuya.enum(0),
162
+ manual: tuya.enum(1),
163
+ }),
164
+ ],
165
+ [10, "frost_protection", tuya.valueConverter.onOff],
166
+ [16, "current_heating_setpoint", tuya.valueConverter.divideBy10],
167
+ [24, "local_temperature", tuya.valueConverter.divideBy10],
168
+ [40, "child_lock", tuya.valueConverter.lockUnlock],
169
+ [109, "local_temperature_calibration", tuya.valueConverter.localTempCalibration3],
170
+ [112, "temperature_delta", tuya.valueConverter.divideBy10],
171
+ [
172
+ 31,
173
+ "working_day",
174
+ tuya.valueConverterBasic.lookup({
175
+ mon_fri: tuya.enum(0),
176
+ mon_sat: tuya.enum(1),
177
+ mon_sun: tuya.enum(2),
178
+ }),
179
+ ],
180
+ [67, null, tuya.valueConverter.ZWT198_schedule],
181
+ [67, "schedule_weekday", tuya.valueConverter.ZWT198_schedule],
182
+ [68, "schedule_holiday", tuya.valueConverter.ZWT198_schedule],
183
+ ],
184
+ },
185
+ },
186
+ {
187
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE284_a1ovdobn", "_TZE200_a1ovdobn"]),
188
+ model: "ZS-D1",
189
+ vendor: "Moes",
190
+ description: "Intelligent dimming switch - 1 gang",
191
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
192
+ exposes: (device, options) => {
193
+ return [
194
+ e.switch().withEndpoint("l1"),
195
+ e.numeric("brightness_1", ea.STATE_SET).withValueMin(10).withValueMax(1000).withValueStep(1).withDescription("Channel 1 brightness"),
196
+ e
197
+ .numeric("brightness_min_1", ea.STATE_SET)
198
+ .withValueMin(10)
199
+ .withValueMax(1000)
200
+ .withValueStep(1)
201
+ .withDescription("Channel 1 minimum brightness"),
202
+ e
203
+ .numeric("brightness_max_1", ea.STATE_SET)
204
+ .withValueMin(10)
205
+ .withValueMax(1000)
206
+ .withValueStep(1)
207
+ .withDescription("Channel 1 maximum brightness"),
208
+ e
209
+ .numeric("countdown_1", ea.STATE_SET)
210
+ .withValueMin(0)
211
+ .withValueMax(86400)
212
+ .withValueStep(1)
213
+ .withUnit("s")
214
+ .withDescription("Channel 1 countdown"),
215
+ e.enum("relay_status", ea.STATE_SET, ["off", "on", "memory"]).withDescription("Relay mode after power restoration"),
216
+ e.enum("light_mode", ea.STATE_SET, ["none", "relay", "pos"]).withDescription("Indicator light mode"),
217
+ e.binary("switch_backlight", ea.STATE_SET, "ON", "OFF").withDescription("Backlight switch"),
218
+ ];
219
+ },
220
+ meta: {
221
+ multiEndpoint: true,
222
+ tuyaDatapoints: [
223
+ [1, "state_l1", tuya.valueConverter.onOff],
224
+ [2, "brightness_1", tuya.valueConverter.raw],
225
+ [3, "brightness_min_1", tuya.valueConverter.raw],
226
+ [5, "brightness_max_1", tuya.valueConverter.raw],
227
+ [6, "countdown_1", tuya.valueConverter.raw],
228
+ [
229
+ 14,
230
+ "relay_status",
231
+ tuya.valueConverterBasic.lookup({
232
+ off: tuya.enum(0),
233
+ on: tuya.enum(1),
234
+ memory: tuya.enum(2),
235
+ }),
236
+ ],
237
+ [
238
+ 21,
239
+ "light_mode",
240
+ tuya.valueConverterBasic.lookup({
241
+ none: tuya.enum(0),
242
+ relay: tuya.enum(1),
243
+ pos: tuya.enum(2),
244
+ }),
245
+ ],
246
+ [26, "switch_backlight", tuya.valueConverter.onOff],
247
+ ],
248
+ },
249
+ endpoint: (device) => {
250
+ return {
251
+ l1: 1,
252
+ };
253
+ },
254
+ },
255
+ {
256
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_rlqamjhp"]),
257
+ model: "ZS-D2",
258
+ vendor: "Moes",
259
+ description: "Intelligent dimming switch - 2 gang",
260
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
261
+ exposes: (device, options) => {
262
+ return [
263
+ e.switch().withEndpoint("l1"),
264
+ e.numeric("brightness_1", ea.STATE_SET).withValueMin(10).withValueMax(1000).withValueStep(1).withDescription("Channel 1 brightness"),
265
+ e
266
+ .numeric("brightness_min_1", ea.STATE_SET)
267
+ .withValueMin(10)
268
+ .withValueMax(1000)
269
+ .withValueStep(1)
270
+ .withDescription("Channel 1 minimum brightness"),
271
+ e
272
+ .numeric("brightness_max_1", ea.STATE_SET)
273
+ .withValueMin(10)
274
+ .withValueMax(1000)
275
+ .withValueStep(1)
276
+ .withDescription("Channel 1 maximum brightness"),
277
+ e
278
+ .numeric("countdown_1", ea.STATE_SET)
279
+ .withValueMin(0)
280
+ .withValueMax(86400)
281
+ .withValueStep(1)
282
+ .withUnit("s")
283
+ .withDescription("Channel 1 countdown"),
284
+ e.switch().withEndpoint("l2"),
285
+ e.numeric("brightness_2", ea.STATE_SET).withValueMin(10).withValueMax(1000).withValueStep(1).withDescription("Channel 2 brightness"),
286
+ e
287
+ .numeric("brightness_min_2", ea.STATE_SET)
288
+ .withValueMin(10)
289
+ .withValueMax(1000)
290
+ .withValueStep(1)
291
+ .withDescription("Channel 2 minimum brightness"),
292
+ e
293
+ .numeric("brightness_max_2", ea.STATE_SET)
294
+ .withValueMin(10)
295
+ .withValueMax(1000)
296
+ .withValueStep(1)
297
+ .withDescription("Channel 2 maximum brightness"),
298
+ e
299
+ .numeric("countdown_2", ea.STATE_SET)
300
+ .withValueMin(0)
301
+ .withValueMax(86400)
302
+ .withValueStep(1)
303
+ .withUnit("s")
304
+ .withDescription("Channel 2 countdown"),
305
+ e.enum("relay_status", ea.STATE_SET, ["off", "on", "memory"]).withDescription("Relay mode after power restoration"),
306
+ e.enum("light_mode", ea.STATE_SET, ["none", "relay", "pos"]).withDescription("Indicator light mode"),
307
+ e.binary("switch_backlight", ea.STATE_SET, "ON", "OFF").withDescription("Backlight switch"),
308
+ ];
309
+ },
310
+ meta: {
311
+ multiEndpoint: true,
312
+ tuyaDatapoints: [
313
+ [1, "state_l1", tuya.valueConverter.onOff],
314
+ [2, "brightness_1", tuya.valueConverter.raw],
315
+ [3, "brightness_min_1", tuya.valueConverter.raw],
316
+ [5, "brightness_max_1", tuya.valueConverter.raw],
317
+ [6, "countdown_1", tuya.valueConverter.raw],
318
+ [7, "state_l2", tuya.valueConverter.onOff],
319
+ [8, "brightness_2", tuya.valueConverter.raw],
320
+ [9, "brightness_min_2", tuya.valueConverter.raw],
321
+ [11, "brightness_max_2", tuya.valueConverter.raw],
322
+ [12, "countdown_2", tuya.valueConverter.raw],
323
+ [
324
+ 14,
325
+ "relay_status",
326
+ tuya.valueConverterBasic.lookup({
327
+ off: tuya.enum(0),
328
+ on: tuya.enum(1),
329
+ memory: tuya.enum(2),
330
+ }),
331
+ ],
332
+ [
333
+ 21,
334
+ "light_mode",
335
+ tuya.valueConverterBasic.lookup({
336
+ none: tuya.enum(0),
337
+ relay: tuya.enum(1),
338
+ pos: tuya.enum(2),
339
+ }),
340
+ ],
341
+ [26, "switch_backlight", tuya.valueConverter.onOff],
342
+ ],
343
+ },
344
+ endpoint: (device) => {
345
+ return {
346
+ l1: 1,
347
+ l2: 1,
348
+ };
349
+ },
350
+ },
351
+ {
352
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE284_vizxbhco"]),
353
+ model: "ZS-D3",
354
+ vendor: "Moes",
355
+ description: "Intelligent dimming switch - 3 gang",
356
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
357
+ exposes: (device, options) => {
358
+ return [
359
+ e.switch().withEndpoint("l1"),
360
+ e.switch().withEndpoint("l2"),
361
+ e.switch().withEndpoint("l3"),
362
+ e.numeric("brightness_1", ea.STATE_SET).withValueMin(10).withValueMax(1000).withValueStep(1).withDescription("Channel 1 brightness"),
363
+ e
364
+ .numeric("brightness_min_1", ea.STATE_SET)
365
+ .withValueMin(10)
366
+ .withValueMax(1000)
367
+ .withValueStep(1)
368
+ .withDescription("Channel 1 minimum brightness"),
369
+ e
370
+ .numeric("brightness_max_1", ea.STATE_SET)
371
+ .withValueMin(10)
372
+ .withValueMax(1000)
373
+ .withValueStep(1)
374
+ .withDescription("Channel 1 maximum brightness"),
375
+ e
376
+ .numeric("countdown_1", ea.STATE_SET)
377
+ .withValueMin(0)
378
+ .withValueMax(86400)
379
+ .withValueStep(1)
380
+ .withUnit("s")
381
+ .withDescription("Channel 1 countdown"),
382
+ e.numeric("brightness_2", ea.STATE_SET).withValueMin(10).withValueMax(1000).withValueStep(1).withDescription("Channel 2 brightness"),
383
+ e
384
+ .numeric("brightness_min_2", ea.STATE_SET)
385
+ .withValueMin(10)
386
+ .withValueMax(1000)
387
+ .withValueStep(1)
388
+ .withDescription("Channel 2 minimum brightness"),
389
+ e
390
+ .numeric("brightness_max_2", ea.STATE_SET)
391
+ .withValueMin(10)
392
+ .withValueMax(1000)
393
+ .withValueStep(1)
394
+ .withDescription("Channel 2 maximum brightness"),
395
+ e
396
+ .numeric("countdown_2", ea.STATE_SET)
397
+ .withValueMin(0)
398
+ .withValueMax(86400)
399
+ .withValueStep(1)
400
+ .withUnit("s")
401
+ .withDescription("Channel 2 countdown"),
402
+ e.enum("relay_status", ea.STATE_SET, ["off", "on", "memory"]).withDescription("Relay mode after power restoration"),
403
+ e.numeric("brightness_3", ea.STATE_SET).withValueMin(10).withValueMax(1000).withValueStep(1).withDescription("Channel 3 brightness"),
404
+ e
405
+ .numeric("brightness_min_3", ea.STATE_SET)
406
+ .withValueMin(10)
407
+ .withValueMax(1000)
408
+ .withValueStep(1)
409
+ .withDescription("Channel 3 minimum brightness"),
410
+ e
411
+ .numeric("brightness_max_3", ea.STATE_SET)
412
+ .withValueMin(10)
413
+ .withValueMax(1000)
414
+ .withValueStep(1)
415
+ .withDescription("Channel 3 maximum brightness"),
416
+ e
417
+ .numeric("countdown_3", ea.STATE_SET)
418
+ .withValueMin(0)
419
+ .withValueMax(86400)
420
+ .withValueStep(1)
421
+ .withUnit("s")
422
+ .withDescription("Channel 3 countdown"),
423
+ e.enum("light_mode", ea.STATE_SET, ["none", "relay", "pos"]).withDescription("Indicator light mode"),
424
+ e.binary("switch_backlight", ea.STATE_SET, "ON", "OFF").withDescription("Backlight switch"),
425
+ ];
426
+ },
427
+ meta: {
428
+ multiEndpoint: true,
429
+ tuyaDatapoints: [
430
+ [1, "state_l1", tuya.valueConverter.onOff],
431
+ [2, "brightness_1", tuya.valueConverter.raw],
432
+ [3, "brightness_min_1", tuya.valueConverter.raw],
433
+ [5, "brightness_max_1", tuya.valueConverter.raw],
434
+ [6, "countdown_1", tuya.valueConverter.raw],
435
+ [7, "state_l2", tuya.valueConverter.onOff],
436
+ [8, "brightness_2", tuya.valueConverter.raw],
437
+ [9, "brightness_min_2", tuya.valueConverter.raw],
438
+ [11, "brightness_max_2", tuya.valueConverter.raw],
439
+ [12, "countdown_2", tuya.valueConverter.raw],
440
+ [
441
+ 14,
442
+ "relay_status",
443
+ tuya.valueConverterBasic.lookup({
444
+ off: tuya.enum(0),
445
+ on: tuya.enum(1),
446
+ memory: tuya.enum(2),
447
+ }),
448
+ ],
449
+ [15, "state_l3", tuya.valueConverter.onOff],
450
+ [16, "brightness_3", tuya.valueConverter.raw],
451
+ [17, "brightness_min_3", tuya.valueConverter.raw],
452
+ [19, "brightness_max_3", tuya.valueConverter.raw],
453
+ [20, "countdown_3", tuya.valueConverter.raw],
454
+ [
455
+ 21,
456
+ "light_mode",
457
+ tuya.valueConverterBasic.lookup({
458
+ none: tuya.enum(0),
459
+ relay: tuya.enum(1),
460
+ pos: tuya.enum(2),
461
+ }),
462
+ ],
463
+ [26, "switch_backlight", tuya.valueConverter.onOff],
464
+ ],
465
+ },
466
+ endpoint: (device) => {
467
+ return {
468
+ l1: 1,
469
+ l2: 1,
470
+ l3: 1,
471
+ };
472
+ },
473
+ },
474
+ {
475
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_stvgmdjz", "_TZE200_ydkqbmpt", "_TZE200_z3u99qxt"]),
476
+ model: "SFL02-Z-1",
477
+ vendor: "Moes",
478
+ description: "Star feather smart switch 1 gang",
479
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
480
+ whiteLabel: [tuya.whitelabel("Nova Digital", "TPZ-1", "Topazio smart switch 1 gang", ["_TZE200_ydkqbmpt"])],
481
+ exposes: [
482
+ tuya.exposes.backlightModeOffOn().withAccess(ea.STATE_SET),
483
+ e.switch().withEndpoint("l1").setAccess("state", ea.STATE_SET),
484
+ tuya.exposes.countdown().withEndpoint("l1"),
485
+ e
486
+ .numeric("momentary_1", ea.STATE_SET)
487
+ .withValueMin(0)
488
+ .withValueMax(3600)
489
+ .withValueStep(1)
490
+ .withUnit("s")
491
+ .withDescription("Momentary switch timer (0=disable)"),
492
+ e.power_on_behavior().withAccess(ea.STATE_SET),
493
+ exposes.enum("mode", ea.STATE_SET, ["switch_1", "scene_1"]).withEndpoint("l1").withDescription("Switch1 mode"),
494
+ e.action(["scene_1"]),
495
+ exposes.enum("indicator_status", ea.ALL, ["off", "relay", "invert"]).withDescription("Indicator status"),
496
+ exposes.enum("induction_mode", ea.ALL, ["ON", "OFF"]).withDescription("Induction mode"),
497
+ exposes.enum("vibration_mode", ea.ALL, ["Gear 0", "Gear 1", "Gear 2", "Gear 3"]).withDescription("Vibration"),
498
+ ],
499
+ endpoint: (device) => {
500
+ return {
501
+ l1: 1,
502
+ state: 1,
503
+ backlight: 1,
504
+ induction: 1,
505
+ };
506
+ },
507
+ meta: {
508
+ multiEndpoint: true,
509
+ tuyaDatapoints: [
510
+ [1, "action", tuya.valueConverter.static("scene_1")],
511
+ [18, "mode_l1", tuya.valueConverterBasic.lookup({ switch_1: tuya.enum(0), scene_1: tuya.enum(1) })],
512
+ [24, "state_l1", tuya.valueConverter.onOff],
513
+ [30, "countdown_l1", tuya.valueConverter.countdown],
514
+ [36, "backlight_mode", tuya.valueConverter.onOff],
515
+ [37, "indicator_status", tuya.valueConverterBasic.lookup({ off: tuya.enum(0), relay: tuya.enum(1), invert: tuya.enum(2) })],
516
+ [38, "power_on_behavior", tuya.valueConverter.powerOnBehaviorEnum],
517
+ [103, "induction_mode", tuya.valueConverter.onOff],
518
+ [
519
+ 104,
520
+ "vibration_mode",
521
+ tuya.valueConverterBasic.lookup({ "Gear 0": tuya.enum(0), "Gear 1": tuya.enum(1), "Gear 2": tuya.enum(2), "Gear 3": tuya.enum(3) }),
522
+ ],
523
+ [105, "momentary_1", tuya.valueConverter.countdown],
524
+ ],
525
+ },
526
+ },
527
+ {
528
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_uenof8jd", "_TZE200_tzyy0rtq", "_TZE200_hktk6hze"]),
529
+ model: "SFL02-Z-2",
530
+ vendor: "Moes",
531
+ description: "Star feather smart switch 2 gangs",
532
+ whiteLabel: [tuya.whitelabel("Nova Digital", "TPZ-2", "Topazio smart switch 2 gangs", ["_TZE200_hktk6hze"])],
533
+ exposes: [
534
+ tuya.exposes.backlightModeOffOn().withAccess(ea.STATE_SET),
535
+ e.switch().withEndpoint("l1").setAccess("state", ea.STATE_SET),
536
+ e.switch().withEndpoint("l2").setAccess("state", ea.STATE_SET),
537
+ tuya.exposes.countdown().withEndpoint("l1"),
538
+ tuya.exposes.countdown().withEndpoint("l2"),
539
+ e
540
+ .numeric("momentary_1", ea.STATE_SET)
541
+ .withValueMin(0)
542
+ .withValueMax(3600)
543
+ .withValueStep(1)
544
+ .withUnit("s")
545
+ .withDescription("Momentary switch timer (0=disable)"),
546
+ e
547
+ .numeric("momentary_2", ea.STATE_SET)
548
+ .withValueMin(0)
549
+ .withValueMax(3600)
550
+ .withValueStep(1)
551
+ .withUnit("s")
552
+ .withDescription("Momentary switch timer (0=disable)"),
553
+ e.power_on_behavior().withAccess(ea.STATE_SET),
554
+ exposes.enum("mode", ea.STATE_SET, ["switch_1", "scene_1"]).withEndpoint("l1").withDescription("Switch1 mode"),
555
+ exposes.enum("mode", ea.STATE_SET, ["switch_2", "scene_2"]).withEndpoint("l2").withDescription("Switch2 mode"),
556
+ e.action(["scene_1", "scene_2"]),
557
+ exposes.enum("indicator_status", ea.ALL, ["off", "relay", "invert"]).withDescription("Indicator status"),
558
+ exposes.enum("induction_mode", ea.ALL, ["ON", "OFF"]).withDescription("Induction mode"),
559
+ exposes.enum("vibration_mode", ea.ALL, ["Gear 0", "Gear 1", "Gear 2", "Gear 3"]).withDescription("Vibration"),
560
+ ],
561
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
562
+ endpoint: (device) => {
563
+ return { l1: 1, l2: 1, state: 1, backlight: 1 };
564
+ },
565
+ meta: {
566
+ multiEndpoint: true,
567
+ tuyaDatapoints: [
568
+ [1, "action", tuya.valueConverter.static("scene_1")],
569
+ [2, "action", tuya.valueConverter.static("scene_2")],
570
+ [18, "mode_l1", tuya.valueConverterBasic.lookup({ switch_1: tuya.enum(0), scene_1: tuya.enum(1) })],
571
+ [19, "mode_l2", tuya.valueConverterBasic.lookup({ switch_2: tuya.enum(0), scene_2: tuya.enum(1) })],
572
+ [24, "state_l1", tuya.valueConverter.onOff],
573
+ [25, "state_l2", tuya.valueConverter.onOff],
574
+ [30, "countdown_l1", tuya.valueConverter.countdown],
575
+ [31, "countdown_l2", tuya.valueConverter.countdown],
576
+ [37, "indicator_status", tuya.valueConverterBasic.lookup({ off: tuya.enum(0), relay: tuya.enum(1), invert: tuya.enum(2) })],
577
+ [36, "backlight_mode", tuya.valueConverter.onOff],
578
+ [38, "power_on_behavior", tuya.valueConverter.powerOnBehaviorEnum],
579
+ [103, "induction_mode", tuya.valueConverter.onOff],
580
+ [
581
+ 104,
582
+ "vibration_mode",
583
+ tuya.valueConverterBasic.lookup({ "Gear 0": tuya.enum(0), "Gear 1": tuya.enum(1), "Gear 2": tuya.enum(2), "Gear 3": tuya.enum(3) }),
584
+ ],
585
+ [105, "momentary_1", tuya.valueConverter.countdown],
586
+ [106, "momentary_2", tuya.valueConverter.countdown],
587
+ ],
588
+ },
589
+ },
590
+ {
591
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_rd8cdssd", "_TZE200_wv9ukqca", "_TZE200_zo0cfekv"]),
592
+ model: "SFL02-Z-3",
593
+ vendor: "Moes",
594
+ description: "Star feather smart switch 3 gangs",
595
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
596
+ whiteLabel: [tuya.whitelabel("Nova Digital", "TPZ-3", "Topazio smart switch 3 gangs", ["_TZE200_rd8cdssd"])],
597
+ exposes: [
598
+ e.switch().withEndpoint("l1").setAccess("state", ea.STATE_SET),
599
+ e.switch().withEndpoint("l2").setAccess("state", ea.STATE_SET),
600
+ e.switch().withEndpoint("l3").setAccess("state", ea.STATE_SET),
601
+ tuya.exposes.countdown().withEndpoint("l1"),
602
+ tuya.exposes.countdown().withEndpoint("l2"),
603
+ tuya.exposes.countdown().withEndpoint("l3"),
604
+ e
605
+ .numeric("momentary_1", ea.STATE_SET)
606
+ .withValueMin(0)
607
+ .withValueMax(3600)
608
+ .withValueStep(1)
609
+ .withUnit("s")
610
+ .withDescription("Momentary switch timer (0=disable)"),
611
+ e
612
+ .numeric("momentary_2", ea.STATE_SET)
613
+ .withValueMin(0)
614
+ .withValueMax(3600)
615
+ .withValueStep(1)
616
+ .withUnit("s")
617
+ .withDescription("Momentary switch timer (0=disable)"),
618
+ e
619
+ .numeric("momentary_3", ea.STATE_SET)
620
+ .withValueMin(0)
621
+ .withValueMax(3600)
622
+ .withValueStep(1)
623
+ .withUnit("s")
624
+ .withDescription("Momentary switch timer (0=disable)"),
625
+ exposes.enum("mode", ea.STATE_SET, ["switch_1", "scene_1"]).withEndpoint("l1").withDescription("Switch1 mode"),
626
+ exposes.enum("mode", ea.STATE_SET, ["switch_2", "scene_2"]).withEndpoint("l2").withDescription("Switch2 mode"),
627
+ exposes.enum("mode", ea.STATE_SET, ["switch_3", "scene_3"]).withEndpoint("l3").withDescription("Switch3 mode"),
628
+ e.action(["scene_1", "scene_2", "scene_3"]),
629
+ tuya.exposes.backlightModeOffOn().withAccess(ea.STATE_SET),
630
+ e.power_on_behavior().withAccess(ea.STATE_SET),
631
+ exposes.enum("indicator_status", ea.ALL, ["off", "relay", "invert"]).withDescription("Indicator status"),
632
+ exposes.enum("induction_mode", ea.ALL, ["ON", "OFF"]).withDescription("Induction mode"),
633
+ exposes.enum("vibration_mode", ea.ALL, ["Gear 0", "Gear 1", "Gear 2", "Gear 3"]).withDescription("Vibration"),
634
+ ],
635
+ endpoint: (device) => {
636
+ return {
637
+ l1: 1,
638
+ l2: 1,
639
+ l3: 1,
640
+ l4: 1,
641
+ state: 1,
642
+ backlight: 1,
643
+ induction: 1,
644
+ };
645
+ },
646
+ meta: {
647
+ multiEndpoint: true,
648
+ tuyaDatapoints: [
649
+ [1, "action", tuya.valueConverter.static("scene_1")],
650
+ [2, "action", tuya.valueConverter.static("scene_2")],
651
+ [3, "action", tuya.valueConverter.static("scene_3")],
652
+ [18, "mode_l1", tuya.valueConverterBasic.lookup({ switch_1: tuya.enum(0), scene_1: tuya.enum(1) })],
653
+ [19, "mode_l2", tuya.valueConverterBasic.lookup({ switch_2: tuya.enum(0), scene_2: tuya.enum(1) })],
654
+ [20, "mode_l3", tuya.valueConverterBasic.lookup({ switch_3: tuya.enum(0), scene_3: tuya.enum(1) })],
655
+ [24, "state_l1", tuya.valueConverter.onOff],
656
+ [25, "state_l2", tuya.valueConverter.onOff],
657
+ [26, "state_l3", tuya.valueConverter.onOff],
658
+ [30, "countdown_l1", tuya.valueConverter.countdown],
659
+ [31, "countdown_l2", tuya.valueConverter.countdown],
660
+ [32, "countdown_l3", tuya.valueConverter.countdown],
661
+ [36, "backlight_mode", tuya.valueConverter.onOff],
662
+ [37, "indicator_status", tuya.valueConverterBasic.lookup({ off: tuya.enum(0), relay: tuya.enum(1), invert: tuya.enum(2) })],
663
+ [38, "power_on_behavior", tuya.valueConverter.powerOnBehaviorEnum],
664
+ [103, "induction_mode", tuya.valueConverter.onOff],
665
+ [
666
+ 104,
667
+ "vibration_mode",
668
+ tuya.valueConverterBasic.lookup({ "Gear 0": tuya.enum(0), "Gear 1": tuya.enum(1), "Gear 2": tuya.enum(2), "Gear 3": tuya.enum(3) }),
669
+ ],
670
+ [105, "momentary_1", tuya.valueConverter.countdown],
671
+ [106, "momentary_2", tuya.valueConverter.countdown],
672
+ [107, "momentary_3", tuya.valueConverter.countdown],
673
+ ],
674
+ },
675
+ },
676
+ {
677
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_dq8bu0pt", "_TZE200_hmabvy81", "_TZE200_9dhenr94"]),
678
+ model: "SFL02-Z-4",
679
+ vendor: "Moes",
680
+ description: "Star feather smart switch 4 gangs",
681
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
682
+ whiteLabel: [tuya.whitelabel("Nova Digital", "TPZ-4", "Topazio smart switch 4 gangs", ["_TZE200_hmabvy81"])],
683
+ exposes: [
684
+ e.switch().withEndpoint("l1").setAccess("state", ea.STATE_SET),
685
+ e.switch().withEndpoint("l2").setAccess("state", ea.STATE_SET),
686
+ e.switch().withEndpoint("l3").setAccess("state", ea.STATE_SET),
687
+ e.switch().withEndpoint("l4").setAccess("state", ea.STATE_SET),
688
+ tuya.exposes.countdown().withEndpoint("l1"),
689
+ tuya.exposes.countdown().withEndpoint("l2"),
690
+ tuya.exposes.countdown().withEndpoint("l3"),
691
+ tuya.exposes.countdown().withEndpoint("l4"),
692
+ e
693
+ .numeric("momentary_1", ea.STATE_SET)
694
+ .withValueMin(0)
695
+ .withValueMax(3600)
696
+ .withValueStep(1)
697
+ .withUnit("s")
698
+ .withDescription("Momentary switch timer (0=disable)"),
699
+ e
700
+ .numeric("momentary_2", ea.STATE_SET)
701
+ .withValueMin(0)
702
+ .withValueMax(3600)
703
+ .withValueStep(1)
704
+ .withUnit("s")
705
+ .withDescription("Momentary switch timer (0=disable)"),
706
+ e
707
+ .numeric("momentary_3", ea.STATE_SET)
708
+ .withValueMin(0)
709
+ .withValueMax(3600)
710
+ .withValueStep(1)
711
+ .withUnit("s")
712
+ .withDescription("Momentary switch timer (0=disable)"),
713
+ e
714
+ .numeric("momentary_4", ea.STATE_SET)
715
+ .withValueMin(0)
716
+ .withValueMax(3600)
717
+ .withValueStep(1)
718
+ .withUnit("s")
719
+ .withDescription("Momentary switch timer (0=disable)"),
720
+ exposes.enum("mode", ea.STATE_SET, ["switch_1", "scene_1"]).withEndpoint("l1").withDescription("Switch1 mode"),
721
+ exposes.enum("mode", ea.STATE_SET, ["switch_2", "scene_2"]).withEndpoint("l2").withDescription("Switch2 mode"),
722
+ exposes.enum("mode", ea.STATE_SET, ["switch_3", "scene_3"]).withEndpoint("l3").withDescription("Switch3 mode"),
723
+ exposes.enum("mode", ea.STATE_SET, ["switch_4", "scene_4"]).withEndpoint("l4").withDescription("Switch4 mode"),
724
+ e.action(["scene_1", "scene_2", "scene_3", "scene_4"]),
725
+ tuya.exposes.backlightModeOffOn().withAccess(ea.STATE_SET),
726
+ e.power_on_behavior().withAccess(ea.STATE_SET),
727
+ exposes.enum("indicator_status", ea.ALL, ["off", "relay", "invert"]).withDescription("Indicator status"),
728
+ exposes.enum("induction_mode", ea.ALL, ["ON", "OFF"]).withDescription("Induction mode"),
729
+ exposes.enum("vibration_mode", ea.ALL, ["Gear 0", "Gear 1", "Gear 2", "Gear 3"]).withDescription("Vibration"),
730
+ ],
731
+ endpoint: (device) => {
732
+ return {
733
+ l1: 1,
734
+ l2: 1,
735
+ l3: 1,
736
+ l4: 1,
737
+ state: 1,
738
+ backlight: 1,
739
+ induction: 1,
740
+ };
741
+ },
742
+ meta: {
743
+ multiEndpoint: true,
744
+ tuyaDatapoints: [
745
+ [1, "action", tuya.valueConverter.static("scene_1")],
746
+ [2, "action", tuya.valueConverter.static("scene_2")],
747
+ [3, "action", tuya.valueConverter.static("scene_3")],
748
+ [4, "action", tuya.valueConverter.static("scene_4")],
749
+ [18, "mode_l1", tuya.valueConverterBasic.lookup({ switch_1: tuya.enum(0), scene_1: tuya.enum(1) })],
750
+ [19, "mode_l2", tuya.valueConverterBasic.lookup({ switch_2: tuya.enum(0), scene_2: tuya.enum(1) })],
751
+ [20, "mode_l3", tuya.valueConverterBasic.lookup({ switch_3: tuya.enum(0), scene_3: tuya.enum(1) })],
752
+ [21, "mode_l4", tuya.valueConverterBasic.lookup({ switch_4: tuya.enum(0), scene_4: tuya.enum(1) })],
753
+ [24, "state_l1", tuya.valueConverter.onOff],
754
+ [25, "state_l2", tuya.valueConverter.onOff],
755
+ [26, "state_l3", tuya.valueConverter.onOff],
756
+ [27, "state_l4", tuya.valueConverter.onOff],
757
+ [30, "countdown_l1", tuya.valueConverter.countdown],
758
+ [31, "countdown_l2", tuya.valueConverter.countdown],
759
+ [32, "countdown_l3", tuya.valueConverter.countdown],
760
+ [33, "countdown_l4", tuya.valueConverter.countdown],
761
+ [36, "backlight_mode", tuya.valueConverter.onOff],
762
+ [37, "indicator_status", tuya.valueConverterBasic.lookup({ off: tuya.enum(0), relay: tuya.enum(1), invert: tuya.enum(2) })],
763
+ [38, "power_on_behavior", tuya.valueConverter.powerOnBehaviorEnum],
764
+ [103, "induction_mode", tuya.valueConverter.onOff],
765
+ [
766
+ 104,
767
+ "vibration_mode",
768
+ tuya.valueConverterBasic.lookup({ "Gear 0": tuya.enum(0), "Gear 1": tuya.enum(1), "Gear 2": tuya.enum(2), "Gear 3": tuya.enum(3) }),
769
+ ],
770
+ [105, "momentary_1", tuya.valueConverter.countdown],
771
+ [106, "momentary_2", tuya.valueConverter.countdown],
772
+ [107, "momentary_3", tuya.valueConverter.countdown],
773
+ [108, "momentary_4", tuya.valueConverter.countdown],
774
+ ],
775
+ },
776
+ },
777
+ {
778
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_ivdc0kwl"]),
779
+ model: "ZTRV-S01",
780
+ vendor: "Moes",
781
+ description: "Zigbee temperature control valve",
782
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "2000" })],
783
+ exposes: [
784
+ e
785
+ .climate()
786
+ .withLocalTemperature(ea.STATE)
787
+ .withSetpoint("current_heating_setpoint", 5, 35, 0.5, ea.STATE_SET)
788
+ .withLocalTemperatureCalibration(-10, 10, 0.5, ea.STATE_SET)
789
+ .withPreset(["auto", "manual", "off", "on"])
790
+ .withRunningState(["idle", "heat"], ea.STATE),
791
+ e.window_detection_bool(),
792
+ e.child_lock(),
793
+ e.binary("frost_protection", ea.STATE_SET, "ON", "OFF"),
794
+ e.binary("eco", ea.STATE_SET, "ON", "OFF").withDescription("Eco mode"),
795
+ e.eco_temperature().withValueMin(5).withValueMax(35).withValueStep(0.5),
796
+ e.binary("window", ea.STATE, "OPENED", "CLOSED").withDescription("Window status closed or open "),
797
+ ...tuya.exposes.scheduleAllDays(ea.STATE_SET, "HH:MM/C HH:MM/C HH:MM/C HH:MM/C"),
798
+ e.min_temperature().withValueMin(5).withValueMax(15),
799
+ e.max_temperature().withValueMin(20).withValueMax(35),
800
+ e.position(),
801
+ e.battery(),
802
+ e.enum("screen_orientation", ea.STATE_SET, ["0", "1"]).withDescription("Screen orientation"),
803
+ ],
804
+ meta: {
805
+ tuyaDatapoints: [
806
+ [
807
+ 2,
808
+ "preset",
809
+ tuya.valueConverterBasic.lookup({
810
+ auto: tuya.enum(0),
811
+ manual: tuya.enum(1),
812
+ off: tuya.enum(2),
813
+ on: tuya.enum(3),
814
+ holiday: tuya.enum(4),
815
+ }),
816
+ ],
817
+ [3, "running_state", tuya.valueConverterBasic.lookup({ heat: 0, idle: 1 })],
818
+ [6, "battery", tuya.valueConverter.raw],
819
+ [
820
+ 7,
821
+ "child_lock",
822
+ tuya.valueConverterBasic.lookup({
823
+ LOCK: true,
824
+ UNLOCK: false,
825
+ }),
826
+ ],
827
+ [9, "max_temperature", tuya.valueConverter.divideBy10],
828
+ [10, "min_temperature", tuya.valueConverter.divideBy10],
829
+ [14, "window_detection", tuya.valueConverterBasic.raw()],
830
+ [
831
+ 15,
832
+ "window",
833
+ tuya.valueConverterBasic.lookup({
834
+ CLOSED: tuya.enum(0),
835
+ OPENED: tuya.enum(1),
836
+ }),
837
+ ],
838
+ [21, "holiday_temperature", tuya.valueConverter.divideBy10], //
839
+ [28, "schedule_monday", tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(1)],
840
+ [29, "schedule_tuesday", tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(2)],
841
+ [30, "schedule_wednesday", tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(3)],
842
+ [31, "schedule_thursday", tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(4)],
843
+ [32, "schedule_friday", tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(5)],
844
+ [33, "schedule_saturday", tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(6)],
845
+ [34, "schedule_sunday", tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(7)],
846
+ [
847
+ 36,
848
+ "frost_protection",
849
+ tuya.valueConverterBasic.lookup({
850
+ ON: true,
851
+ OFF: false,
852
+ }),
853
+ ],
854
+ [47, "local_temperature_calibration", tuya.valueConverter.localTempCalibration1],
855
+ [102, "position", tuya.valueConverter.raw],
856
+ [
857
+ 103,
858
+ "screen_orientation",
859
+ tuya.valueConverterBasic.lookup({
860
+ 0: tuya.enum(0),
861
+ 1: tuya.enum(1),
862
+ }),
863
+ ],
864
+ [105, "eco_temperature", tuya.valueConverter.divideBy10],
865
+ [106, "eco", tuya.valueConverter.onOff],
866
+ //[107, "holiday_start_stop", tuya.valueConverter.raw],(Invalid situations may occur)
867
+ [108, "current_heating_setpoint", tuya.valueConverter.divideBy10],
868
+ [109, "local_temperature", tuya.valueConverter.divideBy10],
869
+ ],
870
+ },
871
+ },
872
+ {
873
+ fingerprint: tuya.fingerprint("TS011F", ["_TZ3000_cymsnfvf", "_TZ3000_2xlvlnez", "_TZ3210_2uk4z8ce"]),
874
+ model: "ZP-LZ-FR2U",
875
+ vendor: "Moes",
876
+ description: "Zigbee 3.0 dual USB wireless socket plug",
877
+ extend: [
878
+ tuya.modernExtend.tuyaOnOff({
879
+ powerOutageMemory: true,
880
+ indicatorMode: true,
881
+ childLock: true,
882
+ endpoints: ["l1", "l2"],
883
+ }),
884
+ ],
885
+ endpoint: (device) => {
886
+ return { l1: 1, l2: 2 };
887
+ },
888
+ meta: { multiEndpoint: true },
889
+ configure: async (device, coordinatorEndpoint) => {
890
+ await tuya.configureMagicPacket(device, coordinatorEndpoint);
891
+ await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ["genOnOff"]);
892
+ await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ["genOnOff"]);
893
+ await reporting.onOff(device.getEndpoint(1));
894
+ await reporting.onOff(device.getEndpoint(2));
895
+ },
896
+ },
897
+ {
898
+ fingerprint: [...tuya.fingerprint("TS0121", ["_TYZB01_iuepbmpv"]), ...tuya.fingerprint("TS011F", ["_TZ3000_zmy1waw6", "_TZ3000_bkfe0bab"])],
899
+ model: "MS-104Z",
900
+ description: "Smart light switch module (1 gang)",
901
+ vendor: "Moes",
902
+ extend: [tuya.modernExtend.tuyaOnOff()],
903
+ configure: async (device, coordinatorEndpoint) => {
904
+ const endpoint = device.getEndpoint(1);
905
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff"]);
906
+ try {
907
+ // Fails for some devices.
908
+ // https://github.com/Koenkk/zigbee2mqtt/issues/4598
909
+ await reporting.onOff(endpoint);
910
+ }
911
+ catch {
912
+ /* empty */
913
+ }
914
+ },
915
+ },
916
+ {
917
+ fingerprint: tuya.fingerprint("TS011F", ["_TZ3000_pmz6mjyu", "_TZ3000_iv6ph5tr"]),
918
+ model: "MS-104BZ",
919
+ description: "Smart light switch module (2 gang)",
920
+ vendor: "Moes",
921
+ extend: [tuya.modernExtend.tuyaOnOff({ endpoints: ["l1", "l2"] })],
922
+ meta: { multiEndpoint: true },
923
+ endpoint: (device) => {
924
+ return { l1: 1, l2: 2 };
925
+ },
926
+ configure: async (device, coordinatorEndpoint) => {
927
+ const endpoint1 = device.getEndpoint(1);
928
+ await reporting.bind(endpoint1, coordinatorEndpoint, ["genOnOff"]);
929
+ await reporting.onOff(endpoint1);
930
+ const endpoint2 = device.getEndpoint(2);
931
+ await reporting.bind(endpoint2, coordinatorEndpoint, ["genOnOff"]);
932
+ await reporting.onOff(endpoint2);
933
+ },
934
+ whiteLabel: [tuya.whitelabel("KnockautX", "FMS2C017", "2 gang switch", ["_TZ3000_iv6ph5tr"])],
935
+ },
936
+ {
937
+ zigbeeModel: ["TS0112"],
938
+ model: "ZK-EU-2U",
939
+ vendor: "Moes",
940
+ description: "Zigbee 3.0 dual USB wireless socket plug",
941
+ extend: [m.onOff({ endpointNames: ["l1", "l2"] })],
942
+ meta: { multiEndpoint: true },
943
+ endpoint: (device) => {
944
+ const hasEndpoint2 = !!device.getEndpoint(2);
945
+ return { l1: 1, l2: hasEndpoint2 ? 2 : 7 };
946
+ },
947
+ },
948
+ {
949
+ fingerprint: tuya.fingerprint("TS0601", [
950
+ "_TZE200_aoclfnxz",
951
+ "_TZE200_ztvwu4nk",
952
+ "_TZE204_5toc8efa",
953
+ "_TZE200_5toc8efa",
954
+ "_TZE200_ye5jkfsb",
955
+ "_TZE284_ye5jkfsb",
956
+ "_TZE204_aoclfnxz",
957
+ "_TZE200_u9bfwha0",
958
+ "_TZE204_u9bfwha0",
959
+ ]),
960
+ model: "BHT-002",
961
+ vendor: "Moes",
962
+ description: "Moes BHT series Thermostat",
963
+ fromZigbee: [legacy.fz.moes_thermostat],
964
+ toZigbee: [
965
+ legacy.tz.moes_thermostat_child_lock,
966
+ legacy.tz.moes_thermostat_current_heating_setpoint,
967
+ legacy.tz.moes_thermostat_mode,
968
+ legacy.tz.moes_thermostat_standby,
969
+ legacy.tz.moes_thermostat_sensor,
970
+ legacy.tz.moes_thermostat_calibration,
971
+ legacy.tz.moes_thermostat_deadzone_temperature,
972
+ legacy.tz.moes_thermostat_max_temperature_limit,
973
+ legacy.tz.moes_thermostat_min_temperature_limit,
974
+ legacy.tz.moes_thermostat_program_schedule,
975
+ ],
976
+ whiteLabel: [tuya.whitelabel("Moes", "BHT-002/BHT-006", "Smart heating thermostat", ["_TZE204_aoclfnxz"])],
977
+ exposes: (device, options) => {
978
+ const heatingStepSize = device.manufacturerName === "_TZE204_5toc8efa" ? 0.5 : 1;
979
+ const runningStates = device.manufacturerName === "_TZE200_aoclfnxz" ? ["idle", "heat"] : ["idle", "heat", "cool"];
980
+ return [
981
+ e.child_lock(),
982
+ e.deadzone_temperature(),
983
+ e.max_temperature_limit().withValueMax(80),
984
+ e.min_temperature_limit(),
985
+ e
986
+ .climate()
987
+ .withSetpoint("current_heating_setpoint", 5, 45, heatingStepSize, ea.STATE_SET)
988
+ .withLocalTemperature(ea.STATE)
989
+ .withLocalTemperatureCalibration(-30, 30, ["_TZE204_aoclfnxz", "_TZE204_ltwbm23f"].includes(device.manufacturerName) ? 1 : 0.1, ea.STATE_SET)
990
+ .withSystemMode(["off", "heat"], ea.STATE_SET)
991
+ .withRunningState(runningStates, ea.STATE)
992
+ .withPreset(["hold", "program"]),
993
+ e.temperature_sensor_select(["IN", "AL", "OU"]),
994
+ e
995
+ .composite("program", "program", ea.STATE_SET)
996
+ .withDescription("Time of day and setpoint to use when in program mode")
997
+ .withFeature(exposesLocal.hour("weekdays_p1_hour"))
998
+ .withFeature(exposesLocal.minute("weekdays_p1_minute"))
999
+ .withFeature(exposesLocal.program_temperature("weekdays_p1_temperature"))
1000
+ .withFeature(exposesLocal.hour("weekdays_p2_hour"))
1001
+ .withFeature(exposesLocal.minute("weekdays_p2_minute"))
1002
+ .withFeature(exposesLocal.program_temperature("weekdays_p2_temperature"))
1003
+ .withFeature(exposesLocal.hour("weekdays_p3_hour"))
1004
+ .withFeature(exposesLocal.minute("weekdays_p3_minute"))
1005
+ .withFeature(exposesLocal.program_temperature("weekdays_p3_temperature"))
1006
+ .withFeature(exposesLocal.hour("weekdays_p4_hour"))
1007
+ .withFeature(exposesLocal.minute("weekdays_p4_minute"))
1008
+ .withFeature(exposesLocal.program_temperature("weekdays_p4_temperature"))
1009
+ .withFeature(exposesLocal.hour("saturday_p1_hour"))
1010
+ .withFeature(exposesLocal.minute("saturday_p1_minute"))
1011
+ .withFeature(exposesLocal.program_temperature("saturday_p1_temperature"))
1012
+ .withFeature(exposesLocal.hour("saturday_p2_hour"))
1013
+ .withFeature(exposesLocal.minute("saturday_p2_minute"))
1014
+ .withFeature(exposesLocal.program_temperature("saturday_p2_temperature"))
1015
+ .withFeature(exposesLocal.hour("saturday_p3_hour"))
1016
+ .withFeature(exposesLocal.minute("saturday_p3_minute"))
1017
+ .withFeature(exposesLocal.program_temperature("saturday_p3_temperature"))
1018
+ .withFeature(exposesLocal.hour("saturday_p4_hour"))
1019
+ .withFeature(exposesLocal.minute("saturday_p4_minute"))
1020
+ .withFeature(exposesLocal.program_temperature("saturday_p4_temperature"))
1021
+ .withFeature(exposesLocal.hour("sunday_p1_hour"))
1022
+ .withFeature(exposesLocal.minute("sunday_p1_minute"))
1023
+ .withFeature(exposesLocal.program_temperature("sunday_p1_temperature"))
1024
+ .withFeature(exposesLocal.hour("sunday_p2_hour"))
1025
+ .withFeature(exposesLocal.minute("sunday_p2_minute"))
1026
+ .withFeature(exposesLocal.program_temperature("sunday_p2_temperature"))
1027
+ .withFeature(exposesLocal.hour("sunday_p3_hour"))
1028
+ .withFeature(exposesLocal.minute("sunday_p3_minute"))
1029
+ .withFeature(exposesLocal.program_temperature("sunday_p3_temperature"))
1030
+ .withFeature(exposesLocal.hour("sunday_p4_hour"))
1031
+ .withFeature(exposesLocal.minute("sunday_p4_minute"))
1032
+ .withFeature(exposesLocal.program_temperature("sunday_p4_temperature")),
1033
+ ];
1034
+ },
1035
+ extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true, timeStart: "1970" })],
1036
+ },
1037
+ {
1038
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_amp6tsvy", "_TZE200_tviaymwx"]),
1039
+ model: "ZTS-EU_1gang",
1040
+ vendor: "Moes",
1041
+ description: "Wall touch light switch (1 gang)",
1042
+ exposes: [
1043
+ e.switch().setAccess("state", ea.STATE_SET),
1044
+ e.enum("indicate_light", ea.STATE_SET, Object.values(legacy.moesSwitch.indicateLight)).withDescription("Indicator light status"),
1045
+ e
1046
+ .enum("power_on_behavior", ea.STATE_SET, Object.values(legacy.moesSwitch.powerOnBehavior))
1047
+ .withDescription("Controls the behavior when the device is powered on"),
1048
+ ],
1049
+ fromZigbee: [legacy.fz.tuya_switch, legacy.fz.moes_switch],
1050
+ toZigbee: [legacy.tz.tuya_switch_state, legacy.tz.moes_switch],
1051
+ extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true })],
1052
+ configure: async (device, coordinatorEndpoint) => {
1053
+ await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ["genOnOff"]);
1054
+ // Reports itself as battery which is not correct: https://github.com/Koenkk/zigbee2mqtt/issues/6190
1055
+ device.powerSource = "Mains (single phase)";
1056
+ device.save();
1057
+ },
1058
+ },
1059
+ {
1060
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_g1ib5ldv"]),
1061
+ model: "ZTS-EU_2gang",
1062
+ vendor: "Moes",
1063
+ description: "Wall touch light switch (2 gang)",
1064
+ exposes: [
1065
+ e.switch().withEndpoint("l1").setAccess("state", ea.STATE_SET),
1066
+ e.switch().withEndpoint("l2").setAccess("state", ea.STATE_SET),
1067
+ e.enum("indicate_light", ea.STATE_SET, Object.values(legacy.moesSwitch.indicateLight)).withDescription("Indicator light status"),
1068
+ e
1069
+ .enum("power_on_behavior", ea.STATE_SET, Object.values(legacy.moesSwitch.powerOnBehavior))
1070
+ .withDescription("Controls the behavior when the device is powered on"),
1071
+ ],
1072
+ fromZigbee: [legacy.fz.tuya_switch, legacy.fz.moes_switch],
1073
+ toZigbee: [legacy.tz.tuya_switch_state, legacy.tz.moes_switch],
1074
+ extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true })],
1075
+ meta: { multiEndpoint: true },
1076
+ endpoint: (device) => {
1077
+ // Endpoint selection is made in tuya_switch_state
1078
+ return { l1: 1, l2: 1 };
1079
+ },
1080
+ configure: async (device, coordinatorEndpoint) => {
1081
+ await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ["genOnOff"]);
1082
+ if (device.getEndpoint(2))
1083
+ await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ["genOnOff"]);
1084
+ // Reports itself as battery which is not correct: https://github.com/Koenkk/zigbee2mqtt/issues/6190
1085
+ device.powerSource = "Mains (single phase)";
1086
+ device.save();
1087
+ },
1088
+ },
1089
+ {
1090
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_tz32mtza"]),
1091
+ model: "ZTS-EU_3gang",
1092
+ vendor: "Moes",
1093
+ description: "Wall touch light switch (3 gang)",
1094
+ exposes: [
1095
+ e.switch().withEndpoint("l1").setAccess("state", ea.STATE_SET),
1096
+ e.switch().withEndpoint("l2").setAccess("state", ea.STATE_SET),
1097
+ e.switch().withEndpoint("l3").setAccess("state", ea.STATE_SET),
1098
+ e.enum("indicate_light", ea.STATE_SET, Object.values(legacy.moesSwitch.indicateLight)).withDescription("Indicator light status"),
1099
+ e
1100
+ .enum("power_on_behavior", ea.STATE_SET, Object.values(legacy.moesSwitch.powerOnBehavior))
1101
+ .withDescription("Controls the behavior when the device is powered on"),
1102
+ ],
1103
+ fromZigbee: [legacy.fz.tuya_switch, legacy.fz.moes_switch],
1104
+ toZigbee: [legacy.tz.tuya_switch_state, legacy.tz.moes_switch],
1105
+ extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true })],
1106
+ meta: { multiEndpoint: true },
1107
+ endpoint: (device) => {
1108
+ // Endpoint selection is made in tuya_switch_state
1109
+ return { l1: 1, l2: 1, l3: 1 };
1110
+ },
1111
+ configure: async (device, coordinatorEndpoint) => {
1112
+ await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ["genOnOff"]);
1113
+ if (device.getEndpoint(2))
1114
+ await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ["genOnOff"]);
1115
+ if (device.getEndpoint(3))
1116
+ await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ["genOnOff"]);
1117
+ // Reports itself as battery which is not correct: https://github.com/Koenkk/zigbee2mqtt/issues/6190
1118
+ device.powerSource = "Mains (single phase)";
1119
+ device.save();
1120
+ },
1121
+ },
1122
+ {
1123
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_1ozguk6x"]),
1124
+ model: "ZTS-EU_4gang",
1125
+ vendor: "Moes",
1126
+ description: "Wall touch light switch (4 gang)",
1127
+ exposes: [
1128
+ e.switch().withEndpoint("l1").setAccess("state", ea.STATE_SET),
1129
+ e.switch().withEndpoint("l2").setAccess("state", ea.STATE_SET),
1130
+ e.switch().withEndpoint("l3").setAccess("state", ea.STATE_SET),
1131
+ e.switch().withEndpoint("l4").setAccess("state", ea.STATE_SET),
1132
+ e.enum("indicate_light", ea.STATE_SET, Object.values(legacy.moesSwitch.indicateLight)).withDescription("Indicator light status"),
1133
+ e
1134
+ .enum("power_on_behavior", ea.STATE_SET, Object.values(legacy.moesSwitch.powerOnBehavior))
1135
+ .withDescription("Controls the behavior when the device is powered on"),
1136
+ ],
1137
+ fromZigbee: [legacy.fz.tuya_switch, legacy.fz.moes_switch],
1138
+ toZigbee: [legacy.tz.tuya_switch_state, legacy.tz.moes_switch],
1139
+ extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true })],
1140
+ meta: { multiEndpoint: true },
1141
+ endpoint: (device) => {
1142
+ // Endpoint selection is made in tuya_switch_state
1143
+ return { l1: 1, l2: 1, l3: 1, l4: 1 };
1144
+ },
1145
+ configure: async (device, coordinatorEndpoint) => {
1146
+ await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ["genOnOff"]);
1147
+ if (device.getEndpoint(2))
1148
+ await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ["genOnOff"]);
1149
+ if (device.getEndpoint(3))
1150
+ await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ["genOnOff"]);
1151
+ if (device.getEndpoint(4))
1152
+ await reporting.bind(device.getEndpoint(4), coordinatorEndpoint, ["genOnOff"]);
1153
+ // Reports itself as battery which is not correct: https://github.com/Koenkk/zigbee2mqtt/issues/6190
1154
+ device.powerSource = "Mains (single phase)";
1155
+ device.save();
1156
+ },
1157
+ },
1158
+ {
1159
+ fingerprint: tuya.fingerprint("TS0222", ["_TYZB01_kvwjujy9", "_TYZB01_ftdkanlj"]),
1160
+ model: "ZSS-ZK-THL",
1161
+ vendor: "Moes",
1162
+ description: "Smart temperature and humidity meter with display",
1163
+ fromZigbee: [fz.battery, fz.humidity, fz.temperature],
1164
+ toZigbee: [],
1165
+ exposes: [e.battery(), e.humidity(), e.temperature()],
1166
+ extend: [m.illuminance()],
1167
+ },
1168
+ {
1169
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_fhn3negr"]),
1170
+ model: "SH4-ZB",
1171
+ vendor: "Moes",
1172
+ description: "Thermostatic radiator valve",
1173
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
1174
+ exposes: [
1175
+ e.battery(),
1176
+ e.child_lock(),
1177
+ e.window_detection_bool(),
1178
+ e.binary("boost_heating", ea.STATE_SET, "ON", "OFF"),
1179
+ e.numeric("boost_heating_countdown", ea.STATE).withUnit("s").withValueMin(0).withValueMax(900),
1180
+ e.numeric("auto_setpoint_override", ea.STATE_SET).withUnit("°C").withValueMin(0.5).withValueMax(30).withValueStep(0.5),
1181
+ e
1182
+ .climate()
1183
+ .withLocalTemperature(ea.STATE)
1184
+ .withSetpoint("current_heating_setpoint", 0, 30, 0.5, ea.STATE_SET)
1185
+ .withLocalTemperatureCalibration(-5, 5, 0.1, ea.STATE_SET)
1186
+ .withPreset(["auto", "manual", "holiday"])
1187
+ .withRunningState(["idle", "heat"], ea.STATE),
1188
+ e.numeric("comfort_temperature", ea.STATE_SET).withUnit("°C").withValueMin(5).withValueMax(30).withValueStep(0.5),
1189
+ e.numeric("eco_temperature", ea.STATE_SET).withUnit("°C").withValueMin(5).withValueMax(30).withValueStep(0.5),
1190
+ e.numeric("open_window_temperature", ea.STATE_SET).withUnit("°C").withValueMin(5).withValueMax(30).withValueStep(0.5),
1191
+ e.numeric("window_detection_time", ea.STATE_SET).withUnit("min").withValueMin(0).withValueMax(60),
1192
+ e.binary("online", ea.STATE_SET, "ON", "OFF"),
1193
+ tuya.exposes.errorStatus(),
1194
+ ],
1195
+ meta: {
1196
+ tuyaDatapoints: [
1197
+ [
1198
+ 2,
1199
+ "preset",
1200
+ tuya.valueConverterBasic.lookup({
1201
+ auto: tuya.enum(0),
1202
+ manual: tuya.enum(1),
1203
+ holiday: tuya.enum(2),
1204
+ }),
1205
+ ],
1206
+ [16, "current_heating_setpoint", tuya.valueConverter.divideBy2],
1207
+ [24, "local_temperature", tuya.valueConverter.divideBy10],
1208
+ [30, "child_lock", tuya.valueConverter.lockUnlock],
1209
+ [34, "battery", tuya.valueConverterBasic.scale(0, 100, 50, 150)],
1210
+ [45, "error_status", tuya.valueConverter.raw],
1211
+ [101, "comfort_temperature", tuya.valueConverter.divideBy2],
1212
+ [102, "eco_temperature", tuya.valueConverter.divideBy2],
1213
+ [104, "local_temperature_calibration", tuya.valueConverter.localTempCalibration1],
1214
+ [105, "auto_setpoint_override", tuya.valueConverter.divideBy2],
1215
+ [106, "boost_heating", tuya.valueConverter.onOff],
1216
+ [107, "window_detection", tuya.valueConverter.onOff],
1217
+ [116, "open_window_temperature", tuya.valueConverter.divideBy2],
1218
+ [117, "window_detection_time", tuya.valueConverter.raw],
1219
+ [118, "boost_heating_countdown", tuya.valueConverter.raw],
1220
+ [120, "online", tuya.valueConverter.onOffNotStrict],
1221
+ ],
1222
+ },
1223
+ },
1224
+ {
1225
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_b6wax7g0", "_TZE200_qsoecqlk", "_TZE200_6y7kyjga"]),
1226
+ model: "BRT-100-TRV",
1227
+ vendor: "Moes",
1228
+ description: "Thermostatic radiator valve",
1229
+ whiteLabel: [tuya.whitelabel("Sibling", "Powerswitch-ZK(W)", "Thermostatic radiator valve", ["_TZE200_qsoecqlk"])],
1230
+ // ota: true,
1231
+ // OTA available but bricks device https://github.com/Koenkk/zigbee2mqtt/issues/18840
1232
+ extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true, timeStart: "1970" })],
1233
+ fromZigbee: [fz.ignore_tuya_set_time, legacy.fz.moesS_thermostat],
1234
+ toZigbee: [
1235
+ legacy.tz.moesS_thermostat_current_heating_setpoint,
1236
+ legacy.tz.moesS_thermostat_child_lock,
1237
+ legacy.tz.moesS_thermostat_window_detection,
1238
+ legacy.tz.moesS_thermostat_temperature_calibration,
1239
+ legacy.tz.moesS_thermostat_boost_heating,
1240
+ legacy.tz.moesS_thermostat_boostHeatingCountdownTimeSet,
1241
+ legacy.tz.moesS_thermostat_eco_temperature,
1242
+ legacy.tz.moesS_thermostat_max_temperature,
1243
+ legacy.tz.moesS_thermostat_min_temperature,
1244
+ legacy.tz.moesS_thermostat_moesSecoMode,
1245
+ legacy.tz.moesS_thermostat_preset,
1246
+ legacy.tz.moesS_thermostat_schedule_programming,
1247
+ legacy.tz.moesS_thermostat_system_mode,
1248
+ ],
1249
+ exposes: [
1250
+ e.battery(),
1251
+ e.child_lock(),
1252
+ e.eco_mode(),
1253
+ e.eco_temperature().withValueMin(5),
1254
+ e.max_temperature().withValueMax(45),
1255
+ e.min_temperature().withValueMin(0),
1256
+ e.valve_state(),
1257
+ e.position(),
1258
+ e.window_detection(),
1259
+ e.binary("window", ea.STATE, "OPEN", "CLOSED").withDescription("Window status closed or open "),
1260
+ e
1261
+ .climate()
1262
+ .withLocalTemperature(ea.STATE)
1263
+ .withSetpoint("current_heating_setpoint", 0, 35, 1, ea.STATE_SET)
1264
+ .withLocalTemperatureCalibration(-9, 9, 1, ea.STATE_SET)
1265
+ .withSystemMode(["heat"], ea.STATE_SET)
1266
+ .withRunningState(["idle", "heat"], ea.STATE)
1267
+ .withPreset(["programming", "manual", "temporary_manual", "holiday"], "MANUAL MODE ☝ - In this mode, the device executes manual temperature setting. " +
1268
+ 'When the set temperature is lower than the "minimum temperature", the valve is closed (forced closed). ' +
1269
+ "PROGRAMMING MODE ⏱ - In this mode, the device executes a preset week programming temperature time and temperature. " +
1270
+ "HOLIDAY MODE ⛱ - In this mode, for example, the vacation mode is set for 10 days and the temperature is set" +
1271
+ "to 15 degrees Celsius. After 10 days, the device will automatically switch to programming mode. " +
1272
+ "TEMPORARY MANUAL MODE - In this mode, ☝ icon will flash. At this time, the device executes the manually set " +
1273
+ "temperature and returns to the weekly programming mode in the next time period. "),
1274
+ e
1275
+ .text("programming_mode", ea.STATE_SET)
1276
+ .withDescription("PROGRAMMING MODE ⏱ - In this mode, " +
1277
+ "the device executes a preset week programming temperature time and temperature. " +
1278
+ "You can set up to 4 stages of temperature every for WEEKDAY ➀➁➂➃➄, SATURDAY ➅ and SUNDAY ➆."),
1279
+ e
1280
+ .binary("boost_heating", ea.STATE_SET, "ON", "OFF")
1281
+ .withDescription('Boost Heating: press and hold "+" for 3 seconds, ' +
1282
+ "the device will enter the boost heating mode, and the ▷╵◁ will flash. The countdown will be displayed in the APP"),
1283
+ e.numeric("boost_heating_countdown", ea.STATE).withUnit("min").withDescription("Countdown in minutes").withValueMin(0).withValueMax(15),
1284
+ e
1285
+ .numeric("boost_heating_countdown_time_set", ea.STATE_SET)
1286
+ .withUnit("s")
1287
+ .withDescription("Boost Time Setting 0 sec - 900 sec, (default = 300 sec)")
1288
+ .withValueMin(0)
1289
+ .withValueMax(900)
1290
+ .withValueStep(1),
1291
+ ],
1292
+ },
1293
+ {
1294
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_nhyj64w2", "_TZE200_127x7wnl", "_TZE204_5slehgeo", "_TZE284_5slehgeo"]),
1295
+ model: "ZTS-EUR-C",
1296
+ vendor: "Moes",
1297
+ description: "Zigbee + RF curtain switch",
1298
+ extend: [tuya.modernExtend.tuyaBase({ forceTimeUpdates: true })],
1299
+ fromZigbee: [legacy.fz.moes_cover],
1300
+ toZigbee: [legacy.tz.moes_cover],
1301
+ exposes: [
1302
+ e.cover_position().setAccess("position", ea.STATE_SET),
1303
+ e.enum("backlight", ea.STATE_SET, ["OFF", "ON"]),
1304
+ e.enum("calibration", ea.STATE_SET, ["OFF", "ON"]),
1305
+ e.enum("motor_reversal", ea.STATE_SET, ["OFF", "ON"]),
1306
+ ],
1307
+ },
1308
+ {
1309
+ fingerprint: tuya.fingerprint("TS1201", [
1310
+ "_TZ3290_j37rooaxrcdcqo5n",
1311
+ "_TZ3290_ot6ewjvmejq5ekhl",
1312
+ "_TZ3290_xjpbcxn92aaxvmlz",
1313
+ "_TZ3290_gnl5a6a5xvql7c2a",
1314
+ "_TZ3290_yyax9ajf",
1315
+ "_TZ3290_nkpxapoz",
1316
+ "_TZ3290_785fbxik",
1317
+ ]),
1318
+ model: "UFO-R11",
1319
+ vendor: "Moes",
1320
+ description: "Universal smart IR remote control",
1321
+ fromZigbee: [
1322
+ fzZosung.zosung_send_ir_code_00,
1323
+ fzZosung.zosung_send_ir_code_01,
1324
+ fzZosung.zosung_send_ir_code_02,
1325
+ fzZosung.zosung_send_ir_code_03,
1326
+ fzZosung.zosung_send_ir_code_04,
1327
+ fzZosung.zosung_send_ir_code_05,
1328
+ fz.battery,
1329
+ ],
1330
+ toZigbee: [tzZosung.zosung_ir_code_to_send, tzZosung.zosung_learn_ir_code],
1331
+ exposes: (device, options) => {
1332
+ const exposes = [ez.learn_ir_code(), ez.learned_ir_code(), ez.ir_code_to_send()];
1333
+ if (device.manufacturerName !== "") {
1334
+ exposes.push(e.battery(), e.battery_voltage());
1335
+ }
1336
+ return exposes;
1337
+ },
1338
+ configure: async (device, coordinatorEndpoint) => {
1339
+ if (device.manufacturerName !== "_TZ3290_gnl5a6a5xvql7c2a") {
1340
+ const endpoint = device.getEndpoint(1);
1341
+ await endpoint.read("genPowerCfg", ["batteryVoltage", "batteryPercentageRemaining"]);
1342
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genPowerCfg"]);
1343
+ await reporting.batteryPercentageRemaining(endpoint);
1344
+ await reporting.batteryVoltage(endpoint);
1345
+ }
1346
+ },
1347
+ whiteLabel: [tuya.whitelabel("Tuya", "iH-F8260", "Universal smart IR remote control", ["_TZ3290_gnl5a6a5xvql7c2a", "_TZ3290_785fbxik"])],
1348
+ },
1349
+ {
1350
+ fingerprint: tuya.fingerprint("TS0049", ["_TZ3000_cjfmu5he", "_TZ3000_mq4wujmp", "_TZ3000_5af5r192", "_TZ3000_ogjpfoyn"]),
1351
+ model: "ZWV-YC",
1352
+ vendor: "Moes",
1353
+ description: "Water valve",
1354
+ extend: [m.battery(), m.onOff({ powerOnBehavior: false, configureReporting: true })],
1355
+ },
1356
+ {
1357
+ fingerprint: tuya.fingerprint("TS0011", ["_TZ3000_hhiodade"]),
1358
+ model: "ZS-EUB_1gang",
1359
+ vendor: "Moes",
1360
+ description: "Wall light switch (1 gang)",
1361
+ extend: [tuya.modernExtend.tuyaOnOff({ backlightModeOffNormalInverted: true })],
1362
+ configure: async (device, coordinatorEndpoint) => {
1363
+ await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ["genOnOff"]);
1364
+ device.powerSource = "Mains (single phase)";
1365
+ device.save();
1366
+ },
1367
+ },
1368
+ {
1369
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_hr0tdd47", "_TZE200_rjxqso4a", "_TZE284_rjxqso4a"]),
1370
+ model: "ZC-HM",
1371
+ vendor: "Moes",
1372
+ description: "Carbon monoxide alarm",
1373
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1374
+ exposes: [e.carbon_monoxide(), e.co(), tuya.exposes.selfTestResult(), e.battery(), tuya.exposes.silence()],
1375
+ meta: {
1376
+ tuyaDatapoints: [
1377
+ [1, "carbon_monoxide", tuya.valueConverter.trueFalse0],
1378
+ [2, "co", tuya.valueConverter.raw],
1379
+ [9, "self_test_result", tuya.valueConverter.selfTestResult],
1380
+ [15, "battery", tuya.valueConverter.raw],
1381
+ [16, "silence", tuya.valueConverter.raw],
1382
+ ],
1383
+ },
1384
+ whiteLabel: [tuya.whitelabel("Heiman", "HS-720ES", "Carbon monoxide alarm", ["_TZE200_hr0tdd47"])],
1385
+ },
1386
+ {
1387
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE204_vawy74yh", "_TZE284_vawy74yh"]),
1388
+ model: "ZSS-HM-SSD01",
1389
+ vendor: "Moes",
1390
+ description: "Smoke sensor",
1391
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1392
+ exposes: [
1393
+ e.smoke(),
1394
+ e.battery(),
1395
+ tuya.exposes.batteryState(),
1396
+ e.binary("silence", ea.STATE_SET, "ON", "OFF"),
1397
+ e.enum("self_test", ea.STATE, ["checking", "check_success", "check_failure"]),
1398
+ ],
1399
+ meta: {
1400
+ tuyaDatapoints: [
1401
+ [1, "smoke", tuya.valueConverter.trueFalse0],
1402
+ [
1403
+ 9,
1404
+ "self_test",
1405
+ tuya.valueConverterBasic.lookup({
1406
+ checking: 0,
1407
+ check_success: 1,
1408
+ check_failure: 2,
1409
+ }),
1410
+ ],
1411
+ [14, "battery_state", tuya.valueConverter.batteryState],
1412
+ [15, "battery", tuya.valueConverter.raw],
1413
+ [16, "silence", tuya.valueConverter.onOff],
1414
+ ],
1415
+ },
1416
+ },
1417
+ {
1418
+ zigbeeModel: ["ZG-101ZL"],
1419
+ fingerprint: tuya.fingerprint("TS004F", ["_TZ3000_ja5osu5g", "_TZ3000_kjfzuycl", "_TZ3000_egvb1p2g", "_TZ3000_kaflzta4", "_TZ3000_lrfvzq1e"]),
1420
+ model: "ERS-10TZBVB-AA",
1421
+ vendor: "Moes",
1422
+ description: "Smart button",
1423
+ whiteLabel: [tuya.whitelabel("Loginovo", "ZG-101ZL", "Smart button", ["_TZ3000_ja5osu5g", "_TZ3000_lrfvzq1e", "_TZ3000_kaflzta4"])],
1424
+ fromZigbee: [
1425
+ fz.command_step,
1426
+ fz.command_on,
1427
+ fz.command_off,
1428
+ fz.command_move_to_color_temp,
1429
+ fz.command_move_to_level,
1430
+ fz.tuya_multi_action,
1431
+ fz.tuya_operation_mode,
1432
+ fz.battery,
1433
+ ],
1434
+ toZigbee: [tz.tuya_operation_mode],
1435
+ exposes: [
1436
+ e.action([
1437
+ "single",
1438
+ "double",
1439
+ "hold",
1440
+ "brightness_move_to_level",
1441
+ "color_temperature_move",
1442
+ "brightness_step_up",
1443
+ "brightness_step_down",
1444
+ "on",
1445
+ "off",
1446
+ ]),
1447
+ e.battery(),
1448
+ e
1449
+ .enum("operation_mode", ea.ALL, ["command", "event"])
1450
+ .withDescription('Operation mode: "command" - for group control, "event" - for clicks'),
1451
+ ],
1452
+ configure: async (device, coordinatorEndpoint) => {
1453
+ const endpoint = device.getEndpoint(1);
1454
+ await tuya.configureMagicPacket(device, coordinatorEndpoint);
1455
+ await endpoint.write("genOnOff", { tuyaOperationMode: 1 });
1456
+ await endpoint.read("genOnOff", ["tuyaOperationMode"]);
1457
+ try {
1458
+ await endpoint.read(0xe001, [0xd011]);
1459
+ }
1460
+ catch {
1461
+ /* do nothing */
1462
+ }
1463
+ await endpoint.read("genPowerCfg", ["batteryVoltage", "batteryPercentageRemaining"]);
1464
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genPowerCfg"]);
1465
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff"]);
1466
+ await reporting.batteryPercentageRemaining(endpoint);
1467
+ },
1468
+ },
1469
+ {
1470
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE204_srmahpwl"]),
1471
+ model: "ZS-SR-EUC",
1472
+ vendor: "Moes",
1473
+ description: "Star ring - smart curtain switch",
1474
+ options: [exposes.options.invert_cover()],
1475
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1476
+ exposes: [
1477
+ e.cover_position().setAccess("position", ea.STATE_SET),
1478
+ e.enum("calibration", ea.STATE_SET, ["START", "END"]).withDescription("Calibration"),
1479
+ e.enum("motor_steering", ea.STATE_SET, ["FORWARD", "BACKWARD"]).withDescription("Motor Steering"),
1480
+ ],
1481
+ meta: {
1482
+ tuyaDatapoints: [
1483
+ [
1484
+ 1,
1485
+ "state",
1486
+ tuya.valueConverterBasic.lookup({
1487
+ OPEN: tuya.enum(0),
1488
+ STOP: tuya.enum(1),
1489
+ CLOSE: tuya.enum(2),
1490
+ }),
1491
+ ],
1492
+ [2, "position", tuya.valueConverter.coverPosition],
1493
+ [
1494
+ 3,
1495
+ "calibration",
1496
+ tuya.valueConverterBasic.lookup({
1497
+ START: tuya.enum(0),
1498
+ END: tuya.enum(1),
1499
+ }),
1500
+ ],
1501
+ [
1502
+ 8,
1503
+ "motor_steering",
1504
+ tuya.valueConverterBasic.lookup({
1505
+ FORWARD: tuya.enum(0),
1506
+ BACKWARD: tuya.enum(1),
1507
+ }),
1508
+ ],
1509
+ ],
1510
+ },
1511
+ },
1512
+ {
1513
+ fingerprint: tuya.fingerprint("TS0726", ["_TZ3002_vaq2bfcu"]),
1514
+ model: "SR-ZS",
1515
+ vendor: "Moes",
1516
+ description: "Smart switch (light + sence)",
1517
+ extend: [
1518
+ tuya.modernExtend.tuyaMagicPacket(),
1519
+ m.deviceEndpoints({ endpoints: { l1: 1, l2: 2, l3: 3 } }),
1520
+ tuya.modernExtend.tuyaOnOff({
1521
+ endpoints: ["l1", "l2", "l3"],
1522
+ powerOnBehavior2: true,
1523
+ switchMode: true,
1524
+ }),
1525
+ m.actionEnumLookup({
1526
+ cluster: "genOnOff",
1527
+ commands: ["commandTuyaAction"],
1528
+ attribute: "value",
1529
+ actionLookup: { button: 0 },
1530
+ buttonLookup: {
1531
+ "1_up": 4,
1532
+ "1_down": 1,
1533
+ "2_up": 5,
1534
+ "2_down": 2,
1535
+ "3_up": 6,
1536
+ "3_down": 3,
1537
+ },
1538
+ }),
1539
+ tuya.modernExtend.tuyaLedIndicator(),
1540
+ ],
1541
+ },
1542
+ {
1543
+ fingerprint: [{ modelID: "TS0601", manufacturerName: "_TZE204_lpedvtvr" }],
1544
+ model: "ZHT-SR",
1545
+ vendor: "Moes",
1546
+ description: "Smart ring thermostat",
1547
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "1970" })],
1548
+ exposes: [
1549
+ e
1550
+ .climate()
1551
+ .withSetpoint("current_heating_setpoint", 5, 45, 0.5, ea.STATE_SET)
1552
+ .withLocalTemperature(ea.STATE)
1553
+ .withLocalTemperatureCalibration(-10, 10, 1, ea.STATE_SET)
1554
+ .withSystemMode(["off", "heat"], ea.STATE_SET)
1555
+ .withRunningState(["idle", "heat"], ea.STATE)
1556
+ .withPreset(["Manual", "Temporary manual", "Program", "Eco"]),
1557
+ //eco_temperature,
1558
+ new exposes.Numeric("eco_temperature", exposes.access.STATE_SET)
1559
+ .withUnit("°C")
1560
+ .withDescription("Temperature for eco mode")
1561
+ .withValueMin(10)
1562
+ .withValueMax(30),
1563
+ e.child_lock(),
1564
+ e.deadzone_temperature().withValueMin(0.5).withValueMax(5).withValueStep(0.5),
1565
+ e.max_temperature_limit().withValueMin(35).withValueMax(45),
1566
+ e.min_temperature_limit().withValueMin(1).withValueMax(15),
1567
+ e
1568
+ .enum("sensor_mode", ea.STATE, ["IN", "OU", "AL"])
1569
+ .withDescription("IN - internal sensor, no heat protection. OU - external sensor, no heat protection. AL - internal sensor for room temperature, external for heat protection"),
1570
+ new exposes.Numeric("floor_temperature", exposes.access.STATE).withUnit("°C").withDescription("Floor temperature"),
1571
+ new exposes.Numeric("high_protect_temperature", exposes.access.STATE_SET)
1572
+ .withUnit("°C")
1573
+ .withDescription("High protect temperature")
1574
+ .withValueMin(10)
1575
+ .withValueMax(70),
1576
+ new exposes.Numeric("low_protect_temperature", exposes.access.STATE_SET)
1577
+ .withUnit("°C")
1578
+ .withDescription("Low protect temperature")
1579
+ .withValueMin(0)
1580
+ .withValueMax(10),
1581
+ //backlight_brightness
1582
+ new exposes.Numeric("backlight_brightness", exposes.access.STATE_SET)
1583
+ .withUnit("%")
1584
+ .withDescription("Backlight brightness")
1585
+ .withValueMin(0)
1586
+ .withValueMax(100),
1587
+ //Screen time
1588
+ new exposes.Enum("screen_time", exposes.access.STATE_SET, [10, 20, 30, 40, 50, 60].map((secs) => `${secs}_seconds`))
1589
+ .withDescription("Screen on time")
1590
+ .withCategory("config"),
1591
+ e.binary("rgb_light", exposes.access.STATE_SET, "ON", "OFF"),
1592
+ ],
1593
+ meta: {
1594
+ tuyaDatapoints: [
1595
+ [1, "system_mode", tuya.valueConverterBasic.lookup({ off: false, heat: true })],
1596
+ [
1597
+ 2,
1598
+ "preset",
1599
+ tuya.valueConverterBasic.lookup({
1600
+ Manual: 0,
1601
+ "Temporary manual": 1,
1602
+ Program: 2,
1603
+ Eco: 3,
1604
+ }),
1605
+ ],
1606
+ [16, "local_temperature", tuya.valueConverter.divideBy10],
1607
+ [18, "min_temperature_limit", tuya.valueConverter.divideBy10],
1608
+ [32, "sensor_mode", tuya.valueConverterBasic.lookup({ IN: 0, AL: 1, OU: 2 })],
1609
+ [34, "max_temperature_limit", tuya.valueConverter.divideBy10],
1610
+ [39, "child_lock", tuya.valueConverter.lockUnlock],
1611
+ [47, "running_state", tuya.valueConverterBasic.lookup({ heat: 0, idle: 1 })],
1612
+ [48, "backlight_brightness", tuya.valueConverter.raw],
1613
+ [50, "current_heating_setpoint", tuya.valueConverter.divideBy10],
1614
+ [101, "local_temperature_calibration", tuya.valueConverter.localTemperatureCalibration_256],
1615
+ [109, "floor_temperature", tuya.valueConverter.divideBy10],
1616
+ [110, "deadzone_temperature", tuya.valueConverter.divideBy10],
1617
+ [111, "high_protect_temperature", tuya.valueConverter.divideBy10],
1618
+ [112, "low_protect_temperature", tuya.valueConverter.divideBy10],
1619
+ [113, "eco_temperature", tuya.valueConverter.divideBy10],
1620
+ [
1621
+ 114,
1622
+ "screen_time",
1623
+ tuya.valueConverterBasic.lookup({
1624
+ "10_seconds": 0,
1625
+ "20_seconds": 1,
1626
+ "30_seconds": 2,
1627
+ "40_seconds": 3,
1628
+ "50_seconds": 4,
1629
+ "60_seconds": 5,
1630
+ }),
1631
+ ],
1632
+ [115, "rgb_light", tuya.valueConverterBasic.lookup({ ON: true, OFF: false })],
1633
+ ],
1634
+ },
1635
+ },
1636
+ {
1637
+ fingerprint: tuya.fingerprint("TS0601", ["_TZ3210_5rta89nj"]),
1638
+ model: "ZC-LP01",
1639
+ vendor: "Moes",
1640
+ description: "Smart sliding window pusher",
1641
+ options: [exposes.options.invert_cover()],
1642
+ extend: [tuya.modernExtend.tuyaBase({ dp: true }), tuya.modernExtend.dpBattery({ dp: 4 })],
1643
+ exposes: [
1644
+ e.cover_position(),
1645
+ e.binary("charging", ea.STATE, true, false).withDescription("Whether the device is being charged via USB-C"),
1646
+ e
1647
+ .binary("automatic_mode", ea.STATE_SET, "ON", "OFF")
1648
+ .withDescription("When set to `ON`, the device will start pushing in the same direction the window was pushed"),
1649
+ e
1650
+ .binary("slow_stop", ea.STATE_SET, "ON", "OFF")
1651
+ .withDescription("When set to `ON`, the device decelerates gradually for quieter operation"),
1652
+ e.enum("button_position", ea.STATE_SET, ["UP", "DOWN"]).withDescription("Swaps the behavior of the device's physical buttons"),
1653
+ ],
1654
+ meta: {
1655
+ tuyaSendCommand: "sendData",
1656
+ tuyaDatapoints: [
1657
+ [
1658
+ 102,
1659
+ "state",
1660
+ tuya.valueConverterBasic.lookup((options) =>
1661
+ // Some devices were shipped with a reversed firmware.
1662
+ options.invert_cover ? { OPEN: 1, STOP: 2, CLOSE: 0 } : { OPEN: 0, STOP: 2, CLOSE: 1 }),
1663
+ ],
1664
+ [104, "position", tuya.valueConverter.coverPosition],
1665
+ [105, "charging", tuya.valueConverter.trueFalse1],
1666
+ [106, "automatic_mode", tuya.valueConverterBasic.lookup({ ON: 1, OFF: 0 })],
1667
+ [110, "slow_stop", tuya.valueConverterBasic.lookup({ ON: 1, OFF: 0 })],
1668
+ [112, "button_position", tuya.valueConverterBasic.lookup({ UP: 1, DOWN: 0 })],
1669
+ ],
1670
+ },
1671
+ },
1672
+ {
1673
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE204_xtrnjaoz", "_TZE200_xtrnjaoz", "_TZE284_8whfphjv"]),
1674
+ model: "GM25TEQ-TYZ-2/25",
1675
+ vendor: "Moes",
1676
+ description: "Roller Shade Blinds Motor for 38mm Tube",
1677
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1678
+ whiteLabel: [tuya.whitelabel("Tuya", "GM35TEQ-TYZ-2/25", "Roller Shade Blinds Motor for 38mm Tube", ["_TZE284_8whfphjv"])],
1679
+ exposes: [
1680
+ e.cover_position().setAccess("position", ea.STATE_SET),
1681
+ e.enum("motor_direction", ea.STATE_SET, ["forward", "back"]).withDescription("Set the motor direction"),
1682
+ ],
1683
+ meta: {
1684
+ tuyaDatapoints: [
1685
+ [1, "state", tuya.valueConverterBasic.lookup({ OPEN: tuya.enum(0), STOP: tuya.enum(1), CLOSE: tuya.enum(2) })],
1686
+ [9, "position", tuya.valueConverter.coverPositionInverted],
1687
+ [8, "position", tuya.valueConverter.coverPositionInverted],
1688
+ [11, "motor_direction", tuya.valueConverterBasic.lookup({ forward: tuya.enum(0), back: tuya.enum(1) })],
1689
+ ],
1690
+ },
1691
+ },
1692
+ {
1693
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE204_x9usygq1"]),
1694
+ model: "ZHT-PT01-M-MS",
1695
+ vendor: "Moes",
1696
+ description: "Smart thermostat for pilot wire heating radiator",
1697
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "1970" })],
1698
+ exposes: [
1699
+ e
1700
+ .climate()
1701
+ .withSetpoint("current_heating_setpoint", 5, 30, 0.5, ea.STATE_SET)
1702
+ .withLocalTemperature(ea.STATE)
1703
+ .withPreset(["off", "comfort", "comfort_1", "comfort_2", "eco", "antifrost", "program", "thermostat"])
1704
+ .withSystemMode(["off", "heat", "auto"], ea.STATE)
1705
+ .withLocalTemperatureCalibration(-10, 10, 0.1, ea.STATE_SET),
1706
+ e
1707
+ .enum("mode", ea.STATE_SET, ["standby", "comfort", "comfort_1", "comfort_2", "eco", "antifrost", "program", "thermostat"])
1708
+ .withDescription("Working mode"),
1709
+ e.window_open(),
1710
+ e.binary("fault", ea.STATE, "DETECTED", "NOT_DETECTED").withDescription("Fault status"),
1711
+ e.window_detection(),
1712
+ e.child_lock(),
1713
+ e.enum("temp_unit_convert", ea.STATE_SET, ["c", "f"]).withDescription("Temperature unit"),
1714
+ e.numeric("lower_temp", ea.STATE_SET).withUnit("°C").withValueMin(5).withValueMax(30).withDescription("Set min temperature"),
1715
+ e.numeric("upper_temp", ea.STATE_SET).withUnit("°C").withValueMin(5).withValueMax(30).withDescription("Set max temperature"),
1716
+ e.numeric("electricity_statistics", ea.STATE).withUnit("kWh").withDescription("Electricity usage statistics"),
1717
+ e.numeric("boost_duration", ea.STATE_SET).withUnit("min").withValueMin(0).withValueMax(120).withDescription("Boost mode duration"),
1718
+ e.numeric("elec_statistics_day", ea.STATE).withDescription("Daily energy usage"),
1719
+ e.numeric("elec_statistics_month", ea.STATE).withDescription("Monthly energy usage"),
1720
+ e.numeric("elec_statistics_year", ea.STATE).withDescription("Annual energy usage"),
1721
+ e
1722
+ .numeric("window_keep_time", ea.STATE_SET)
1723
+ .withUnit("min")
1724
+ .withValueMin(0)
1725
+ .withValueMax(120)
1726
+ .withDescription("Time window should be kept open"),
1727
+ e.enum("fault_alarm", ea.STATE, ["e1", "e2"]).withDescription("Fault alarm (e1, e2)"),
1728
+ e
1729
+ .enum("running_mode", ea.STATE, ["standby", "comfort", "comfort_1", "comfort_2", "eco", "antifrost"])
1730
+ .withDescription("Current running mode"),
1731
+ ],
1732
+ meta: {
1733
+ tuyaDatapoints: [
1734
+ [
1735
+ 2,
1736
+ "mode",
1737
+ tuya.valueConverterBasic.lookup({
1738
+ standby: tuya.enum(0),
1739
+ comfort: tuya.enum(1),
1740
+ comfort_1: tuya.enum(2),
1741
+ comfort_2: tuya.enum(3),
1742
+ eco: tuya.enum(4),
1743
+ antifrost: tuya.enum(5),
1744
+ program: tuya.enum(6),
1745
+ thermostat: tuya.enum(7),
1746
+ }),
1747
+ ],
1748
+ [
1749
+ 2,
1750
+ "system_mode",
1751
+ tuya.valueConverterBasic.lookup({
1752
+ off: tuya.enum(0),
1753
+ auto: tuya.enum(6),
1754
+ heat: tuya.enum(7),
1755
+ }),
1756
+ ],
1757
+ [
1758
+ 2,
1759
+ "preset",
1760
+ tuya.valueConverterBasic.lookup({
1761
+ off: tuya.enum(0),
1762
+ comfort: tuya.enum(1),
1763
+ comfort_1: tuya.enum(2),
1764
+ comfort_2: tuya.enum(3),
1765
+ eco: tuya.enum(4),
1766
+ antifrost: tuya.enum(5),
1767
+ program: tuya.enum(6),
1768
+ thermostat: tuya.enum(7),
1769
+ }),
1770
+ ],
1771
+ [16, "local_temperature", tuya.valueConverter.divideBy10],
1772
+ [
1773
+ 17,
1774
+ "window_open",
1775
+ tuya.valueConverterBasic.lookup({
1776
+ close: tuya.enum(0),
1777
+ open: tuya.enum(1),
1778
+ }),
1779
+ ],
1780
+ [18, "lower_temp", tuya.valueConverter.divideBy10],
1781
+ [19, "temp_correction", tuya.valueConverter.divideBy10],
1782
+ [19, "local_temperature_calibration", tuya.valueConverter.divideBy10],
1783
+ [20, "fault", tuya.valueConverter.raw],
1784
+ [29, "window_detection", tuya.valueConverter.onOff],
1785
+ [34, "upper_temp", tuya.valueConverter.divideBy10],
1786
+ [39, "child_lock", tuya.valueConverter.lockUnlock],
1787
+ [
1788
+ 46,
1789
+ "temp_unit_convert",
1790
+ tuya.valueConverterBasic.lookup({
1791
+ c: tuya.enum(0),
1792
+ f: tuya.enum(1),
1793
+ }),
1794
+ ],
1795
+ [50, "current_heating_setpoint", tuya.valueConverter.divideBy10],
1796
+ [65, "week_program_1", tuya.valueConverter.raw],
1797
+ [66, "week_program_2", tuya.valueConverter.raw],
1798
+ [67, "week_program_3", tuya.valueConverter.raw],
1799
+ [68, "week_program_4", tuya.valueConverter.raw],
1800
+ [69, "week_program_5", tuya.valueConverter.raw],
1801
+ [70, "week_program_6", tuya.valueConverter.raw],
1802
+ [71, "week_program_7", tuya.valueConverter.raw],
1803
+ [101, "vacation_duration", tuya.valueConverter.raw],
1804
+ [102, "boost_duration", tuya.valueConverter.raw],
1805
+ [103, "electricity_statistics", tuya.valueConverter.raw],
1806
+ [104, "elec_statistics_day", tuya.valueConverter.raw],
1807
+ [105, "elec_statistics_month", tuya.valueConverter.raw],
1808
+ [106, "elec_statistics_year", tuya.valueConverter.raw],
1809
+ [107, "average_power", tuya.valueConverter.raw],
1810
+ [108, "air_pressure_index", tuya.valueConverter.raw],
1811
+ [109, "support_features", tuya.valueConverter.raw],
1812
+ [110, "window_keep_time", tuya.valueConverter.raw],
1813
+ [111, "app_features", tuya.valueConverter.raw],
1814
+ [112, "switch_diff", tuya.valueConverter.raw],
1815
+ [
1816
+ 113,
1817
+ "running_mode",
1818
+ tuya.valueConverterBasic.lookup({
1819
+ standby: tuya.enum(0),
1820
+ comfort: tuya.enum(1),
1821
+ comfort_1: tuya.enum(2),
1822
+ comfort_2: tuya.enum(3),
1823
+ eco: tuya.enum(4),
1824
+ antifrost: tuya.enum(5),
1825
+ }),
1826
+ ],
1827
+ ],
1828
+ },
1829
+ },
1830
+ {
1831
+ fingerprint: tuya.fingerprint("TS0041", ["_TZ3000_axpdxqgu"]),
1832
+ model: "ZT-B-EU1",
1833
+ vendor: "Moes",
1834
+ description: "Scene remote with 1 key",
1835
+ fromZigbee: [tuya.fz.on_off_action, fz.battery, tuya.fz.datapoints],
1836
+ toZigbee: [],
1837
+ configure: tuya.configureMagicPacket,
1838
+ exposes: [e.battery(), e.action(["single", "double", "hold"])],
1839
+ meta: {
1840
+ tuyaDatapoints: [
1841
+ [
1842
+ 1,
1843
+ "action",
1844
+ tuya.valueConverterBasic.lookup({
1845
+ single: 0,
1846
+ double: 1,
1847
+ hold: 2,
1848
+ }),
1849
+ ],
1850
+ ],
1851
+ },
1852
+ endpoint: () => ({}),
1853
+ },
1854
+ {
1855
+ fingerprint: tuya.fingerprint("TS0042", ["_TZ3000_5e235jpa"]),
1856
+ model: "ZT-B-EU2",
1857
+ vendor: "Moes",
1858
+ description: "Scene remote with 2 keys",
1859
+ fromZigbee: [tuya.fz.on_off_action, fz.battery, tuya.fz.datapoints],
1860
+ toZigbee: [],
1861
+ configure: tuya.configureMagicPacket,
1862
+ exposes: [e.battery(), e.action(["1_single", "1_double", "1_hold", "2_single", "2_double", "2_hold"])],
1863
+ meta: {
1864
+ tuyaDatapoints: [
1865
+ [
1866
+ 1,
1867
+ "action",
1868
+ tuya.valueConverterBasic.lookup({
1869
+ "1_single": 0,
1870
+ "1_double": 1,
1871
+ "1_hold": 2,
1872
+ }),
1873
+ ],
1874
+ [
1875
+ 2,
1876
+ "action",
1877
+ tuya.valueConverterBasic.lookup({
1878
+ "2_single": 0,
1879
+ "2_double": 1,
1880
+ "2_hold": 2,
1881
+ }),
1882
+ ],
1883
+ ],
1884
+ },
1885
+ endpoint: () => ({}),
1886
+ },
1887
+ {
1888
+ fingerprint: tuya.fingerprint("TS0043", ["_TZ3000_gbm10jnj"]),
1889
+ model: "ZT-B-EU3",
1890
+ vendor: "Moes",
1891
+ description: "Scene remote with 3 keys",
1892
+ fromZigbee: [tuya.fz.on_off_action, fz.battery, tuya.fz.datapoints],
1893
+ toZigbee: [],
1894
+ configure: tuya.configureMagicPacket,
1895
+ exposes: [e.battery(), e.action(["1_single", "1_double", "1_hold", "2_single", "2_double", "2_hold", "3_single", "3_double", "3_hold"])],
1896
+ meta: {
1897
+ tuyaDatapoints: [
1898
+ [
1899
+ 1,
1900
+ "action",
1901
+ tuya.valueConverterBasic.lookup({
1902
+ "1_single": 0,
1903
+ "1_double": 1,
1904
+ "1_hold": 2,
1905
+ }),
1906
+ ],
1907
+ [
1908
+ 2,
1909
+ "action",
1910
+ tuya.valueConverterBasic.lookup({
1911
+ "2_single": 0,
1912
+ "2_double": 1,
1913
+ "2_hold": 2,
1914
+ }),
1915
+ ],
1916
+ [
1917
+ 3,
1918
+ "action",
1919
+ tuya.valueConverterBasic.lookup({
1920
+ "3_single": 0,
1921
+ "3_double": 1,
1922
+ "3_hold": 2,
1923
+ }),
1924
+ ],
1925
+ ],
1926
+ },
1927
+ },
1928
+ {
1929
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE284_qoi1aqxg"]),
1930
+ model: "FWJZCEH18A001",
1931
+ vendor: "Moes",
1932
+ description: "Roller blind motor 17mm/25mm/28mm",
1933
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1934
+ exposes: [
1935
+ e.cover_position().setAccess("position", ea.STATE_SET),
1936
+ e.enum("motor_direction", ea.STATE_SET, ["forward", "back"]).withDescription("Motor direction"),
1937
+ e.enum("border", ea.STATE_SET, ["up", "down", "up_delete", "down_delete", "remove_top_bottom"]).withDescription("Limit setting"),
1938
+ e.battery(),
1939
+ ],
1940
+ meta: {
1941
+ tuyaDatapoints: [
1942
+ [1, "state", tuya.valueConverterBasic.lookup({ OPEN: tuya.enum(0), STOP: tuya.enum(1), CLOSE: tuya.enum(2) })],
1943
+ [9, "position", tuya.valueConverter.coverPosition],
1944
+ [8, "position", tuya.valueConverter.coverPosition],
1945
+ [11, "motor_direction", tuya.valueConverterBasic.lookup({ forward: tuya.enum(0), back: tuya.enum(1) })],
1946
+ [13, "battery", { from: (v) => Buffer.from(v, "base64").readUInt32BE(0) }],
1947
+ [
1948
+ 16,
1949
+ "border",
1950
+ tuya.valueConverterBasic.lookup({
1951
+ up: tuya.enum(0),
1952
+ down: tuya.enum(1),
1953
+ up_delete: tuya.enum(2),
1954
+ down_delete: tuya.enum(3),
1955
+ remove_top_bottom: tuya.enum(4),
1956
+ }),
1957
+ ],
1958
+ ],
1959
+ },
1960
+ },
1961
+ {
1962
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE284_rlytpmij"]),
1963
+ model: "ZHT-S01",
1964
+ vendor: "Moes",
1965
+ description: "Zigbee wall thermostat (air/internal temperature priority)",
1966
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true, timeStart: "1970" })],
1967
+ exposes: (device, options) => {
1968
+ const WEEKDAY_PERIODS = [
1969
+ { id: 1, desc: "get_up_in_the_morning" },
1970
+ { id: 2, desc: "go_out_in_the_morning" },
1971
+ { id: 3, desc: "back_home_in_the_noon" },
1972
+ { id: 4, desc: "go_out_in_the_noon" },
1973
+ { id: 5, desc: "back_home_in_the_evening" },
1974
+ { id: 6, desc: "sleep_at_night" },
1975
+ ];
1976
+ const WEEKEND_PERIODS = [
1977
+ { id: 1, desc: "get_up" },
1978
+ { id: 2, desc: "sleep" },
1979
+ ];
1980
+ const SCHEDULE_DEFAULTS = {
1981
+ weekday: [
1982
+ { hour: 6, minute: 0, temp: 20 },
1983
+ { hour: 8, minute: 0, temp: 16 },
1984
+ { hour: 11, minute: 30, temp: 20 },
1985
+ { hour: 12, minute: 30, temp: 16 },
1986
+ { hour: 17, minute: 0, temp: 20 },
1987
+ { hour: 22, minute: 0, temp: 16 },
1988
+ ],
1989
+ weekend: [
1990
+ { hour: 8, minute: 0, temp: 20 },
1991
+ { hour: 23, minute: 0, temp: 16 },
1992
+ ],
1993
+ };
1994
+ // Generate schedule exposes
1995
+ const scheduleExposes = [];
1996
+ for (let i = 0; i < 6; i++) {
1997
+ const num = i + 1;
1998
+ const period = WEEKDAY_PERIODS[i];
1999
+ const def = SCHEDULE_DEFAULTS.weekday[i];
2000
+ scheduleExposes.push(e
2001
+ .numeric(`weekday_${num}_hour`, ea.STATE_SET)
2002
+ .withValueMin(0)
2003
+ .withValueMax(23)
2004
+ .withValueStep(1)
2005
+ .withPreset("default", def.hour, "Default value")
2006
+ .withDescription(`Weekday P${num} ${period.desc} - Hour`), e
2007
+ .numeric(`weekday_${num}_minute`, ea.STATE_SET)
2008
+ .withValueMin(0)
2009
+ .withValueMax(59)
2010
+ .withValueStep(1)
2011
+ .withPreset("default", def.minute, "Default value")
2012
+ .withDescription(`Weekday P${num} ${period.desc} - Minute`), e
2013
+ .numeric(`weekday_${num}_temp`, ea.STATE_SET)
2014
+ .withUnit("°C")
2015
+ .withValueMin(5)
2016
+ .withValueMax(35)
2017
+ .withValueStep(0.5)
2018
+ .withPreset("default", def.temp, "Default value")
2019
+ .withDescription(`Weekday P${num} ${period.desc} - Temperature`));
2020
+ }
2021
+ for (let i = 0; i < 2; i++) {
2022
+ const num = i + 1;
2023
+ const period = WEEKEND_PERIODS[i];
2024
+ const def = SCHEDULE_DEFAULTS.weekend[i];
2025
+ scheduleExposes.push(e
2026
+ .numeric(`weekend_${num}_hour`, ea.STATE_SET)
2027
+ .withValueMin(0)
2028
+ .withValueMax(23)
2029
+ .withValueStep(1)
2030
+ .withPreset("default", def.hour, "Default value")
2031
+ .withDescription(`Weekend P${num} ${period.desc} - Hour`), e
2032
+ .numeric(`weekend_${num}_minute`, ea.STATE_SET)
2033
+ .withValueMin(0)
2034
+ .withValueMax(59)
2035
+ .withValueStep(1)
2036
+ .withPreset("default", def.minute, "Default value")
2037
+ .withDescription(`Weekend P${num} ${period.desc} - Minute`), e
2038
+ .numeric(`weekend_${num}_temp`, ea.STATE_SET)
2039
+ .withUnit("°C")
2040
+ .withValueMin(5)
2041
+ .withValueMax(35)
2042
+ .withValueStep(0.5)
2043
+ .withPreset("default", def.temp, "Default value")
2044
+ .withDescription(`Weekend P${num} ${period.desc} - Temperature`));
2045
+ }
2046
+ return [
2047
+ // Child lock
2048
+ e.child_lock(),
2049
+ // System mode separate expose (clearer in UI)
2050
+ e.enum("system_mode", ea.STATE_SET, ["off", "heat"]).withDescription("Thermostat system mode (device enabled/disabled)"),
2051
+ // Main climate control
2052
+ e
2053
+ .climate()
2054
+ .withPreset(["manual", "auto", "eco"])
2055
+ .withRunningState(["idle", "heat"], ea.STATE)
2056
+ .withSystemMode(["off", "heat"], ea.STATE)
2057
+ .withSetpoint("current_heating_setpoint", 5, 35, 0.5, ea.STATE_SET)
2058
+ .withLocalTemperature(ea.STATE) // DP 117 (Air/Internal sensor)
2059
+ .withLocalTemperatureCalibration(-9, 9, 1, ea.STATE_SET),
2060
+ // Floor temperature (secondary sensor)
2061
+ e.numeric("floor_temperature", ea.STATE).withUnit("°C").withDescription("Temperature from floor sensor (secondary)"),
2062
+ // Valve state
2063
+ e.binary("valve_state", ea.STATE, "OPEN", "CLOSED").withDescription("Valve state"),
2064
+ // Fault alarm
2065
+ e
2066
+ .enum("fault_alarm", ea.STATE, ["none", "e1", "e2", "e3", "e1_e2", "e1_e3", "e2_e3", "e1_e2_e3"])
2067
+ .withDescription("Fault alarm status"),
2068
+ // Sensor selection
2069
+ e.enum("sensor", ea.STATE_SET, ["internal", "external", "both"]).withDescription("Temperature sensor selection"),
2070
+ // Temperature scale
2071
+ e
2072
+ .enum("temperature_scale", ea.STATE_SET, ["celsius", "fahrenheit"])
2073
+ .withDescription("Temperature scale (WARNING: converter only supports Celsius datapoints)"),
2074
+ // Backlight brightness
2075
+ e.enum("backlight_brightness", ea.STATE_SET, ["off", "low", "medium", "high"]).withDescription("Backlight brightness"),
2076
+ // Antifreeze
2077
+ e.binary("antifreeze", ea.STATE_SET, "ON", "OFF").withDescription("Antifreeze mode"),
2078
+ // Temperature limits
2079
+ e
2080
+ .numeric("min_temperature_limit", ea.STATE_SET)
2081
+ .withValueMin(5)
2082
+ .withValueMax(20)
2083
+ .withValueStep(1)
2084
+ .withUnit("°C")
2085
+ .withDescription("Minimum temperature limit"),
2086
+ e
2087
+ .numeric("max_temperature_limit", ea.STATE_SET)
2088
+ .withValueMin(30)
2089
+ .withValueMax(70)
2090
+ .withValueStep(1)
2091
+ .withUnit("°C")
2092
+ .withDescription("Maximum temperature limit"),
2093
+ // Temperature hysteresis/deadzone
2094
+ e
2095
+ .numeric("deadzone_temperature", ea.STATE_SET)
2096
+ .withUnit("°C")
2097
+ .withValueMin(0.5)
2098
+ .withValueMax(3.0)
2099
+ .withValueStep(0.5)
2100
+ .withDescription("Temperature hysteresis/deadzone"),
2101
+ // ECO mode temperature
2102
+ e
2103
+ .numeric("eco_temperature", ea.STATE_SET)
2104
+ .withUnit("°C")
2105
+ .withValueMin(5)
2106
+ .withValueMax(35)
2107
+ .withValueStep(1)
2108
+ .withDescription("ECO mode temperature setting"),
2109
+ // Program mode
2110
+ e
2111
+ .enum("program_mode", ea.STATE_SET, ["off", "weekend", "single_break", "no_day_off"])
2112
+ .withDescription("Weekly programming mode type"),
2113
+ // Factory reset
2114
+ e.binary("factory_reset", ea.SET, "ON", "OFF").withDescription("Factory reset (use with caution)"),
2115
+ // Schedule exposes - individual fields for each period
2116
+ ...scheduleExposes,
2117
+ ];
2118
+ },
2119
+ meta: {
2120
+ tuyaDatapoints: [
2121
+ [
2122
+ 1,
2123
+ "system_mode",
2124
+ {
2125
+ from: (value) => (value === true ? "heat" : "off"),
2126
+ to: (value) => value === "heat",
2127
+ },
2128
+ ],
2129
+ [
2130
+ 2,
2131
+ "preset",
2132
+ tuya.valueConverterBasic.lookup({
2133
+ auto: tuya.enum(0),
2134
+ manual: tuya.enum(1),
2135
+ eco: tuya.enum(2),
2136
+ }),
2137
+ ],
2138
+ [
2139
+ 3,
2140
+ "backlight_brightness",
2141
+ tuya.valueConverterBasic.lookup({
2142
+ off: tuya.enum(0),
2143
+ low: tuya.enum(1),
2144
+ medium: tuya.enum(2),
2145
+ high: tuya.enum(3),
2146
+ }),
2147
+ ],
2148
+ [19, "local_temperature_calibration", tuya.valueConverter.raw],
2149
+ [
2150
+ 20,
2151
+ "fault_alarm",
2152
+ {
2153
+ from: (v) => {
2154
+ if (v === 0)
2155
+ return "none";
2156
+ const faults = [];
2157
+ if (v & 1)
2158
+ faults.push("e1");
2159
+ if (v & 2)
2160
+ faults.push("e2");
2161
+ if (v & 4)
2162
+ faults.push("e3");
2163
+ return faults.join("_") || "none";
2164
+ },
2165
+ },
2166
+ ],
2167
+ [28, "factory_reset", tuya.valueConverter.onOff],
2168
+ [
2169
+ 32,
2170
+ "sensor",
2171
+ tuya.valueConverterBasic.lookup({
2172
+ internal: tuya.enum(0),
2173
+ external: tuya.enum(1),
2174
+ both: tuya.enum(2),
2175
+ }),
2176
+ ],
2177
+ [39, "child_lock", tuya.valueConverter.lockUnlock],
2178
+ [
2179
+ 46,
2180
+ "temperature_scale",
2181
+ tuya.valueConverterBasic.lookup({
2182
+ celsius: tuya.enum(0),
2183
+ fahrenheit: tuya.enum(1),
2184
+ }),
2185
+ ],
2186
+ [
2187
+ 47,
2188
+ "running_state",
2189
+ tuya.valueConverterBasic.lookup({
2190
+ heat: tuya.enum(0),
2191
+ idle: tuya.enum(1),
2192
+ }),
2193
+ ],
2194
+ [
2195
+ 47,
2196
+ "valve_state",
2197
+ tuya.valueConverterBasic.lookup({
2198
+ OPEN: tuya.enum(0),
2199
+ CLOSED: tuya.enum(1),
2200
+ }),
2201
+ ],
2202
+ // === STANDARD SENSOR MAPPING (AIR/INTERNAL PRIORITY) ===
2203
+ [117, "local_temperature", tuya.valueConverter.divideBy10],
2204
+ [101, "floor_temperature", tuya.valueConverter.divideBy10],
2205
+ // ========================================================
2206
+ [
2207
+ 103,
2208
+ "antifreeze",
2209
+ {
2210
+ from: (value) => (value === true ? "ON" : "OFF"),
2211
+ to: (value) => value === "ON",
2212
+ },
2213
+ ],
2214
+ [
2215
+ 104,
2216
+ "program_mode",
2217
+ tuya.valueConverterBasic.lookup({
2218
+ off: tuya.enum(0),
2219
+ weekend: tuya.enum(1),
2220
+ single_break: tuya.enum(2),
2221
+ no_day_off: tuya.enum(3),
2222
+ }),
2223
+ ],
2224
+ [106, "deadzone_temperature", tuya.valueConverter.divideBy10],
2225
+ [107, "eco_temperature", tuya.valueConverter.raw],
2226
+ [111, "current_heating_setpoint", tuya.valueConverter.divideBy10],
2227
+ [114, "max_temperature_limit", tuya.valueConverter.divideBy10],
2228
+ [116, "min_temperature_limit", tuya.valueConverter.divideBy10],
2229
+ // Weekly programming DP 108 - read converter
2230
+ [
2231
+ 108,
2232
+ null,
2233
+ {
2234
+ from: (value) => {
2235
+ const arr = Array.isArray(value) ? value : Array.from(value);
2236
+ if (!arr || arr.length < 24)
2237
+ return null;
2238
+ // Initialize cache if not exists
2239
+ // @ts-expect-error global cache
2240
+ if (!globalThis.zhtS01ScheduleCache) {
2241
+ // @ts-expect-error global cache
2242
+ globalThis.zhtS01ScheduleCache = {
2243
+ weekday_1_hour: 6,
2244
+ weekday_1_minute: 0,
2245
+ weekday_1_temp: 20,
2246
+ weekday_2_hour: 8,
2247
+ weekday_2_minute: 0,
2248
+ weekday_2_temp: 16,
2249
+ weekday_3_hour: 11,
2250
+ weekday_3_minute: 30,
2251
+ weekday_3_temp: 20,
2252
+ weekday_4_hour: 12,
2253
+ weekday_4_minute: 30,
2254
+ weekday_4_temp: 16,
2255
+ weekday_5_hour: 17,
2256
+ weekday_5_minute: 0,
2257
+ weekday_5_temp: 20,
2258
+ weekday_6_hour: 22,
2259
+ weekday_6_minute: 0,
2260
+ weekday_6_temp: 16,
2261
+ weekend_1_hour: 8,
2262
+ weekend_1_minute: 0,
2263
+ weekend_1_temp: 20,
2264
+ weekend_2_hour: 23,
2265
+ weekend_2_minute: 0,
2266
+ weekend_2_temp: 16,
2267
+ };
2268
+ }
2269
+ // @ts-expect-error global cache
2270
+ const cache = globalThis.zhtS01ScheduleCache;
2271
+ const result = {};
2272
+ // 6 weekday periods (18 bytes)
2273
+ for (let i = 0; i < 6; i++) {
2274
+ const num = i + 1;
2275
+ result[`weekday_${num}_hour`] = arr[i * 3];
2276
+ result[`weekday_${num}_minute`] = arr[i * 3 + 1];
2277
+ result[`weekday_${num}_temp`] = arr[i * 3 + 2];
2278
+ cache[`weekday_${num}_hour`] = arr[i * 3];
2279
+ cache[`weekday_${num}_minute`] = arr[i * 3 + 1];
2280
+ cache[`weekday_${num}_temp`] = arr[i * 3 + 2];
2281
+ }
2282
+ // 2 weekend periods (6 bytes)
2283
+ for (let i = 0; i < 2; i++) {
2284
+ const num = i + 1;
2285
+ result[`weekend_${num}_hour`] = arr[18 + i * 3];
2286
+ result[`weekend_${num}_minute`] = arr[18 + i * 3 + 1];
2287
+ result[`weekend_${num}_temp`] = arr[18 + i * 3 + 2];
2288
+ cache[`weekend_${num}_hour`] = arr[18 + i * 3];
2289
+ cache[`weekend_${num}_minute`] = arr[18 + i * 3 + 1];
2290
+ cache[`weekend_${num}_temp`] = arr[18 + i * 3 + 2];
2291
+ }
2292
+ return result;
2293
+ },
2294
+ },
2295
+ ],
2296
+ // Individual schedule field converters for DP 108
2297
+ ...(() => {
2298
+ const getCache = () => {
2299
+ // @ts-expect-error global cache
2300
+ if (!globalThis.zhtS01ScheduleCache) {
2301
+ // @ts-expect-error global cache
2302
+ globalThis.zhtS01ScheduleCache = {
2303
+ weekday_1_hour: 6,
2304
+ weekday_1_minute: 0,
2305
+ weekday_1_temp: 20,
2306
+ weekday_2_hour: 8,
2307
+ weekday_2_minute: 0,
2308
+ weekday_2_temp: 16,
2309
+ weekday_3_hour: 11,
2310
+ weekday_3_minute: 30,
2311
+ weekday_3_temp: 20,
2312
+ weekday_4_hour: 12,
2313
+ weekday_4_minute: 30,
2314
+ weekday_4_temp: 16,
2315
+ weekday_5_hour: 17,
2316
+ weekday_5_minute: 0,
2317
+ weekday_5_temp: 20,
2318
+ weekday_6_hour: 22,
2319
+ weekday_6_minute: 0,
2320
+ weekday_6_temp: 16,
2321
+ weekend_1_hour: 8,
2322
+ weekend_1_minute: 0,
2323
+ weekend_1_temp: 20,
2324
+ weekend_2_hour: 23,
2325
+ weekend_2_minute: 0,
2326
+ weekend_2_temp: 16,
2327
+ };
2328
+ }
2329
+ // @ts-expect-error global cache
2330
+ return globalThis.zhtS01ScheduleCache;
2331
+ };
2332
+ const createScheduleFieldConverter = (field) => ({
2333
+ to: (value) => {
2334
+ const cache = getCache();
2335
+ cache[field] = value;
2336
+ // Build buffer from cache
2337
+ const buffer = [];
2338
+ for (let i = 1; i <= 6; i++) {
2339
+ buffer.push(cache[`weekday_${i}_hour`] || 0);
2340
+ buffer.push(cache[`weekday_${i}_minute`] || 0);
2341
+ buffer.push(cache[`weekday_${i}_temp`] || 20);
2342
+ }
2343
+ for (let i = 1; i <= 2; i++) {
2344
+ buffer.push(cache[`weekend_${i}_hour`] || 0);
2345
+ buffer.push(cache[`weekend_${i}_minute`] || 0);
2346
+ buffer.push(cache[`weekend_${i}_temp`] || 20);
2347
+ }
2348
+ return buffer;
2349
+ },
2350
+ });
2351
+ const fields = [];
2352
+ for (let i = 1; i <= 6; i++) {
2353
+ fields.push([108, `weekday_${i}_hour`, createScheduleFieldConverter(`weekday_${i}_hour`)]);
2354
+ fields.push([108, `weekday_${i}_minute`, createScheduleFieldConverter(`weekday_${i}_minute`)]);
2355
+ fields.push([108, `weekday_${i}_temp`, createScheduleFieldConverter(`weekday_${i}_temp`)]);
2356
+ }
2357
+ for (let i = 1; i <= 2; i++) {
2358
+ fields.push([108, `weekend_${i}_hour`, createScheduleFieldConverter(`weekend_${i}_hour`)]);
2359
+ fields.push([108, `weekend_${i}_minute`, createScheduleFieldConverter(`weekend_${i}_minute`)]);
2360
+ fields.push([108, `weekend_${i}_temp`, createScheduleFieldConverter(`weekend_${i}_temp`)]);
2361
+ }
2362
+ return fields;
2363
+ })(),
2364
+ ],
2365
+ },
2366
+ },
2367
+ ];
2368
+ //# sourceMappingURL=moes.js.map