zigbee-herdsman-converters 21.9.0 → 21.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1394) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/converters/fromZigbee.d.ts +2036 -0
  3. package/converters/fromZigbee.d.ts.map +1 -0
  4. package/converters/fromZigbee.js +5343 -0
  5. package/converters/fromZigbee.js.map +1 -0
  6. package/converters/toZigbee.d.ts +1578 -0
  7. package/converters/toZigbee.d.ts.map +1 -0
  8. package/converters/toZigbee.js +4422 -0
  9. package/converters/toZigbee.js.map +1 -0
  10. package/devices/ITCommander.d.ts +4 -0
  11. package/devices/ITCommander.d.ts.map +1 -0
  12. package/devices/ITCommander.js +77 -0
  13. package/devices/ITCommander.js.map +1 -0
  14. package/devices/acova.d.ts +4 -0
  15. package/devices/acova.d.ts.map +1 -0
  16. package/devices/acova.js +127 -0
  17. package/devices/acova.js.map +1 -0
  18. package/devices/acuity_brands_lighting.d.ts +4 -0
  19. package/devices/acuity_brands_lighting.d.ts.map +1 -0
  20. package/devices/acuity_brands_lighting.js +29 -0
  21. package/devices/acuity_brands_lighting.js.map +1 -0
  22. package/devices/adeo.d.ts +4 -0
  23. package/devices/adeo.d.ts.map +1 -0
  24. package/devices/adeo.js +486 -0
  25. package/devices/adeo.js.map +1 -0
  26. package/devices/adurosmart.d.ts +4 -0
  27. package/devices/adurosmart.d.ts.map +1 -0
  28. package/devices/adurosmart.js +183 -0
  29. package/devices/adurosmart.js.map +1 -0
  30. package/devices/aeotec.d.ts +4 -0
  31. package/devices/aeotec.d.ts.map +1 -0
  32. package/devices/aeotec.js +66 -0
  33. package/devices/aeotec.js.map +1 -0
  34. package/devices/airam.d.ts +4 -0
  35. package/devices/airam.d.ts.map +1 -0
  36. package/devices/airam.js +106 -0
  37. package/devices/airam.js.map +1 -0
  38. package/devices/airzone_aidoo.d.ts +4 -0
  39. package/devices/airzone_aidoo.d.ts.map +1 -0
  40. package/devices/airzone_aidoo.js +81 -0
  41. package/devices/airzone_aidoo.js.map +1 -0
  42. package/devices/ajax_online.d.ts +4 -0
  43. package/devices/ajax_online.d.ts.map +1 -0
  44. package/devices/ajax_online.js +84 -0
  45. package/devices/ajax_online.js.map +1 -0
  46. package/devices/akuvox.d.ts +4 -0
  47. package/devices/akuvox.d.ts.map +1 -0
  48. package/devices/akuvox.js +68 -0
  49. package/devices/akuvox.js.map +1 -0
  50. package/devices/alchemy.d.ts +4 -0
  51. package/devices/alchemy.d.ts.map +1 -0
  52. package/devices/alchemy.js +22 -0
  53. package/devices/alchemy.js.map +1 -0
  54. package/devices/aldi.d.ts +4 -0
  55. package/devices/aldi.d.ts.map +1 -0
  56. package/devices/aldi.js +57 -0
  57. package/devices/aldi.js.map +1 -0
  58. package/devices/alecto.d.ts +4 -0
  59. package/devices/alecto.d.ts.map +1 -0
  60. package/devices/alecto.js +101 -0
  61. package/devices/alecto.js.map +1 -0
  62. package/devices/amina.d.ts +4 -0
  63. package/devices/amina.d.ts.map +1 -0
  64. package/devices/amina.js +370 -0
  65. package/devices/amina.js.map +1 -0
  66. package/devices/anchor.d.ts +4 -0
  67. package/devices/anchor.d.ts.map +1 -0
  68. package/devices/anchor.js +15 -0
  69. package/devices/anchor.js.map +1 -0
  70. package/devices/atlantic.d.ts +4 -0
  71. package/devices/atlantic.d.ts.map +1 -0
  72. package/devices/atlantic.js +146 -0
  73. package/devices/atlantic.js.map +1 -0
  74. package/devices/atsmart.d.ts +4 -0
  75. package/devices/atsmart.d.ts.map +1 -0
  76. package/devices/atsmart.js +15 -0
  77. package/devices/atsmart.js.map +1 -0
  78. package/devices/aubess.d.ts +4 -0
  79. package/devices/aubess.d.ts.map +1 -0
  80. package/devices/aubess.js +60 -0
  81. package/devices/aubess.js.map +1 -0
  82. package/devices/aurora_lighting.d.ts +4 -0
  83. package/devices/aurora_lighting.d.ts.map +1 -0
  84. package/devices/aurora_lighting.js +338 -0
  85. package/devices/aurora_lighting.js.map +1 -0
  86. package/devices/automaton.d.ts +4 -0
  87. package/devices/automaton.d.ts.map +1 -0
  88. package/devices/automaton.js +65 -0
  89. package/devices/automaton.js.map +1 -0
  90. package/devices/avatto.d.ts +4 -0
  91. package/devices/avatto.d.ts.map +1 -0
  92. package/devices/avatto.js +67 -0
  93. package/devices/avatto.js.map +1 -0
  94. package/devices/awox.d.ts +4 -0
  95. package/devices/awox.d.ts.map +1 -0
  96. package/devices/awox.js +240 -0
  97. package/devices/awox.js.map +1 -0
  98. package/devices/axis.d.ts +4 -0
  99. package/devices/axis.d.ts.map +1 -0
  100. package/devices/axis.js +63 -0
  101. package/devices/axis.js.map +1 -0
  102. package/devices/bankamp.d.ts +4 -0
  103. package/devices/bankamp.d.ts.map +1 -0
  104. package/devices/bankamp.js +15 -0
  105. package/devices/bankamp.js.map +1 -0
  106. package/devices/bega.d.ts +4 -0
  107. package/devices/bega.d.ts.map +1 -0
  108. package/devices/bega.js +29 -0
  109. package/devices/bega.js.map +1 -0
  110. package/devices/belkin.d.ts +4 -0
  111. package/devices/belkin.d.ts.map +1 -0
  112. package/devices/belkin.js +15 -0
  113. package/devices/belkin.js.map +1 -0
  114. package/devices/bitron.d.ts +4 -0
  115. package/devices/bitron.d.ts.map +1 -0
  116. package/devices/bitron.js +359 -0
  117. package/devices/bitron.js.map +1 -0
  118. package/devices/bituo_technik.d.ts +4 -0
  119. package/devices/bituo_technik.d.ts.map +1 -0
  120. package/devices/bituo_technik.js +121 -0
  121. package/devices/bituo_technik.js.map +1 -0
  122. package/devices/blaupunkt.d.ts +4 -0
  123. package/devices/blaupunkt.d.ts.map +1 -0
  124. package/devices/blaupunkt.js +68 -0
  125. package/devices/blaupunkt.js.map +1 -0
  126. package/devices/blitzwolf.d.ts +4 -0
  127. package/devices/blitzwolf.d.ts.map +1 -0
  128. package/devices/blitzwolf.js +73 -0
  129. package/devices/blitzwolf.js.map +1 -0
  130. package/devices/bosch.d.ts +4 -0
  131. package/devices/bosch.d.ts.map +1 -0
  132. package/devices/bosch.js +2048 -0
  133. package/devices/bosch.js.map +1 -0
  134. package/devices/bouffalo_lab.d.ts +4 -0
  135. package/devices/bouffalo_lab.d.ts.map +1 -0
  136. package/devices/bouffalo_lab.js +15 -0
  137. package/devices/bouffalo_lab.js.map +1 -0
  138. package/devices/brimate.d.ts +4 -0
  139. package/devices/brimate.d.ts.map +1 -0
  140. package/devices/brimate.js +55 -0
  141. package/devices/brimate.js.map +1 -0
  142. package/devices/bseed.d.ts +4 -0
  143. package/devices/bseed.d.ts.map +1 -0
  144. package/devices/bseed.js +57 -0
  145. package/devices/bseed.js.map +1 -0
  146. package/devices/bticino.d.ts +4 -0
  147. package/devices/bticino.d.ts.map +1 -0
  148. package/devices/bticino.js +113 -0
  149. package/devices/bticino.js.map +1 -0
  150. package/devices/busch_jaeger.d.ts +4 -0
  151. package/devices/busch_jaeger.d.ts.map +1 -0
  152. package/devices/busch_jaeger.js +186 -0
  153. package/devices/busch_jaeger.js.map +1 -0
  154. package/devices/byun.d.ts +4 -0
  155. package/devices/byun.d.ts.map +1 -0
  156. package/devices/byun.js +64 -0
  157. package/devices/byun.js.map +1 -0
  158. package/devices/calex.d.ts +4 -0
  159. package/devices/calex.d.ts.map +1 -0
  160. package/devices/calex.js +91 -0
  161. package/devices/calex.js.map +1 -0
  162. package/devices/candeo.d.ts +4 -0
  163. package/devices/candeo.d.ts.map +1 -0
  164. package/devices/candeo.js +185 -0
  165. package/devices/candeo.js.map +1 -0
  166. package/devices/casaia.d.ts +4 -0
  167. package/devices/casaia.d.ts.map +1 -0
  168. package/devices/casaia.js +99 -0
  169. package/devices/casaia.js.map +1 -0
  170. package/devices/cel.d.ts +4 -0
  171. package/devices/cel.d.ts.map +1 -0
  172. package/devices/cel.js +20 -0
  173. package/devices/cel.js.map +1 -0
  174. package/devices/centralite.d.ts +4 -0
  175. package/devices/centralite.d.ts.map +1 -0
  176. package/devices/centralite.js +444 -0
  177. package/devices/centralite.js.map +1 -0
  178. package/devices/chacon.d.ts +4 -0
  179. package/devices/chacon.d.ts.map +1 -0
  180. package/devices/chacon.js +18 -0
  181. package/devices/chacon.js.map +1 -0
  182. package/devices/cleode.d.ts +4 -0
  183. package/devices/cleode.d.ts.map +1 -0
  184. package/devices/cleode.js +15 -0
  185. package/devices/cleode.js.map +1 -0
  186. package/devices/cleverio.d.ts +4 -0
  187. package/devices/cleverio.d.ts.map +1 -0
  188. package/devices/cleverio.js +77 -0
  189. package/devices/cleverio.js.map +1 -0
  190. package/devices/climax.d.ts +4 -0
  191. package/devices/climax.d.ts.map +1 -0
  192. package/devices/climax.js +181 -0
  193. package/devices/climax.js.map +1 -0
  194. package/devices/commercial_electric.d.ts +4 -0
  195. package/devices/commercial_electric.d.ts.map +1 -0
  196. package/devices/commercial_electric.js +15 -0
  197. package/devices/commercial_electric.js.map +1 -0
  198. package/devices/cree.d.ts +4 -0
  199. package/devices/cree.d.ts.map +1 -0
  200. package/devices/cree.js +15 -0
  201. package/devices/cree.js.map +1 -0
  202. package/devices/ctm.d.ts +4 -0
  203. package/devices/ctm.d.ts.map +1 -0
  204. package/devices/ctm.js +1383 -0
  205. package/devices/ctm.js.map +1 -0
  206. package/devices/current_products_corp.d.ts +4 -0
  207. package/devices/current_products_corp.d.ts.map +1 -0
  208. package/devices/current_products_corp.js +64 -0
  209. package/devices/current_products_corp.js.map +1 -0
  210. package/devices/custom_devices_diy.d.ts +4 -0
  211. package/devices/custom_devices_diy.d.ts.map +1 -0
  212. package/devices/custom_devices_diy.js +1206 -0
  213. package/devices/custom_devices_diy.js.map +1 -0
  214. package/devices/cy_lighting.d.ts +4 -0
  215. package/devices/cy_lighting.d.ts.map +1 -0
  216. package/devices/cy_lighting.js +15 -0
  217. package/devices/cy_lighting.js.map +1 -0
  218. package/devices/danalock.d.ts +4 -0
  219. package/devices/danalock.d.ts.map +1 -0
  220. package/devices/danalock.js +65 -0
  221. package/devices/danalock.js.map +1 -0
  222. package/devices/danfoss.d.ts +4 -0
  223. package/devices/danfoss.d.ts.map +1 -0
  224. package/devices/danfoss.js +743 -0
  225. package/devices/danfoss.js.map +1 -0
  226. package/devices/databyte.d.ts +4 -0
  227. package/devices/databyte.d.ts.map +1 -0
  228. package/devices/databyte.js +95 -0
  229. package/devices/databyte.js.map +1 -0
  230. package/devices/datek.d.ts +4 -0
  231. package/devices/datek.d.ts.map +1 -0
  232. package/devices/datek.js +298 -0
  233. package/devices/datek.js.map +1 -0
  234. package/devices/dawon_dns.d.ts +4 -0
  235. package/devices/dawon_dns.d.ts.map +1 -0
  236. package/devices/dawon_dns.js +318 -0
  237. package/devices/dawon_dns.js.map +1 -0
  238. package/devices/develco.d.ts +4 -0
  239. package/devices/develco.d.ts.map +1 -0
  240. package/devices/develco.js +1037 -0
  241. package/devices/develco.js.map +1 -0
  242. package/devices/digi.d.ts +4 -0
  243. package/devices/digi.d.ts.map +1 -0
  244. package/devices/digi.js +25 -0
  245. package/devices/digi.js.map +1 -0
  246. package/devices/diyruz.d.ts +4 -0
  247. package/devices/diyruz.d.ts.map +1 -0
  248. package/devices/diyruz.js +403 -0
  249. package/devices/diyruz.js.map +1 -0
  250. package/devices/dlink.d.ts +4 -0
  251. package/devices/dlink.d.ts.map +1 -0
  252. package/devices/dlink.js +76 -0
  253. package/devices/dlink.js.map +1 -0
  254. package/devices/dnake.d.ts +4 -0
  255. package/devices/dnake.d.ts.map +1 -0
  256. package/devices/dnake.js +15 -0
  257. package/devices/dnake.js.map +1 -0
  258. package/devices/dowsing_reynolds.d.ts +4 -0
  259. package/devices/dowsing_reynolds.d.ts.map +1 -0
  260. package/devices/dowsing_reynolds.js +15 -0
  261. package/devices/dowsing_reynolds.js.map +1 -0
  262. package/devices/dresden_elektronik.d.ts +4 -0
  263. package/devices/dresden_elektronik.d.ts.map +1 -0
  264. package/devices/dresden_elektronik.js +50 -0
  265. package/devices/dresden_elektronik.js.map +1 -0
  266. package/devices/easyaccess.d.ts +4 -0
  267. package/devices/easyaccess.d.ts.map +1 -0
  268. package/devices/easyaccess.js +71 -0
  269. package/devices/easyaccess.js.map +1 -0
  270. package/devices/easyiot.d.ts +4 -0
  271. package/devices/easyiot.d.ts.map +1 -0
  272. package/devices/easyiot.js +358 -0
  273. package/devices/easyiot.js.map +1 -0
  274. package/devices/eatonhalo_led.d.ts +4 -0
  275. package/devices/eatonhalo_led.d.ts.map +1 -0
  276. package/devices/eatonhalo_led.js +15 -0
  277. package/devices/eatonhalo_led.js.map +1 -0
  278. package/devices/echostar.d.ts +4 -0
  279. package/devices/echostar.d.ts.map +1 -0
  280. package/devices/echostar.js +65 -0
  281. package/devices/echostar.js.map +1 -0
  282. package/devices/ecodim.d.ts +4 -0
  283. package/devices/ecodim.d.ts.map +1 -0
  284. package/devices/ecodim.js +270 -0
  285. package/devices/ecodim.js.map +1 -0
  286. package/devices/ecolink.d.ts +4 -0
  287. package/devices/ecolink.d.ts.map +1 -0
  288. package/devices/ecolink.js +61 -0
  289. package/devices/ecolink.js.map +1 -0
  290. package/devices/ecosmart.d.ts +4 -0
  291. package/devices/ecosmart.d.ts.map +1 -0
  292. package/devices/ecosmart.js +83 -0
  293. package/devices/ecosmart.js.map +1 -0
  294. package/devices/ecozy.d.ts +4 -0
  295. package/devices/ecozy.d.ts.map +1 -0
  296. package/devices/ecozy.js +89 -0
  297. package/devices/ecozy.js.map +1 -0
  298. package/devices/edp.d.ts +4 -0
  299. package/devices/edp.d.ts.map +1 -0
  300. package/devices/edp.js +74 -0
  301. package/devices/edp.js.map +1 -0
  302. package/devices/efekta.d.ts +4 -0
  303. package/devices/efekta.d.ts.map +1 -0
  304. package/devices/efekta.js +754 -0
  305. package/devices/efekta.js.map +1 -0
  306. package/devices/eglo.d.ts +4 -0
  307. package/devices/eglo.d.ts.map +1 -0
  308. package/devices/eglo.js +132 -0
  309. package/devices/eglo.js.map +1 -0
  310. package/devices/elko.d.ts +4 -0
  311. package/devices/elko.d.ts.map +1 -0
  312. package/devices/elko.js +240 -0
  313. package/devices/elko.js.map +1 -0
  314. package/devices/enbrighten.d.ts +4 -0
  315. package/devices/enbrighten.d.ts.map +1 -0
  316. package/devices/enbrighten.js +97 -0
  317. package/devices/enbrighten.js.map +1 -0
  318. package/devices/enocean.d.ts +4 -0
  319. package/devices/enocean.d.ts.map +1 -0
  320. package/devices/enocean.js +153 -0
  321. package/devices/enocean.js.map +1 -0
  322. package/devices/envilar.d.ts +4 -0
  323. package/devices/envilar.d.ts.map +1 -0
  324. package/devices/envilar.js +100 -0
  325. package/devices/envilar.js.map +1 -0
  326. package/devices/essentialb.d.ts +4 -0
  327. package/devices/essentialb.d.ts.map +1 -0
  328. package/devices/essentialb.js +137 -0
  329. package/devices/essentialb.js.map +1 -0
  330. package/devices/essentials.d.ts +4 -0
  331. package/devices/essentials.d.ts.map +1 -0
  332. package/devices/essentials.js +151 -0
  333. package/devices/essentials.js.map +1 -0
  334. package/devices/eucontrols.d.ts +4 -0
  335. package/devices/eucontrols.d.ts.map +1 -0
  336. package/devices/eucontrols.js +15 -0
  337. package/devices/eucontrols.js.map +1 -0
  338. package/devices/eurotronic.d.ts +4 -0
  339. package/devices/eurotronic.d.ts.map +1 -0
  340. package/devices/eurotronic.js +128 -0
  341. package/devices/eurotronic.js.map +1 -0
  342. package/devices/evanell.d.ts +4 -0
  343. package/devices/evanell.d.ts.map +1 -0
  344. package/devices/evanell.js +75 -0
  345. package/devices/evanell.js.map +1 -0
  346. package/devices/evn.d.ts +4 -0
  347. package/devices/evn.d.ts.map +1 -0
  348. package/devices/evn.js +94 -0
  349. package/devices/evn.js.map +1 -0
  350. package/devices/evology.d.ts +4 -0
  351. package/devices/evology.d.ts.map +1 -0
  352. package/devices/evology.js +64 -0
  353. package/devices/evology.js.map +1 -0
  354. package/devices/evvr.d.ts +4 -0
  355. package/devices/evvr.d.ts.map +1 -0
  356. package/devices/evvr.js +15 -0
  357. package/devices/evvr.js.map +1 -0
  358. package/devices/ewelink.d.ts +4 -0
  359. package/devices/ewelink.d.ts.map +1 -0
  360. package/devices/ewelink.js +343 -0
  361. package/devices/ewelink.js.map +1 -0
  362. package/devices/ezex.d.ts +4 -0
  363. package/devices/ezex.d.ts.map +1 -0
  364. package/devices/ezex.js +15 -0
  365. package/devices/ezex.js.map +1 -0
  366. package/devices/fantem.d.ts +4 -0
  367. package/devices/fantem.d.ts.map +1 -0
  368. package/devices/fantem.js +118 -0
  369. package/devices/fantem.js.map +1 -0
  370. package/devices/feibit.d.ts +4 -0
  371. package/devices/feibit.d.ts.map +1 -0
  372. package/devices/feibit.js +334 -0
  373. package/devices/feibit.js.map +1 -0
  374. package/devices/fireangel.d.ts +4 -0
  375. package/devices/fireangel.d.ts.map +1 -0
  376. package/devices/fireangel.js +55 -0
  377. package/devices/fireangel.js.map +1 -0
  378. package/devices/frankever.d.ts +4 -0
  379. package/devices/frankever.d.ts.map +1 -0
  380. package/devices/frankever.js +71 -0
  381. package/devices/frankever.js.map +1 -0
  382. package/devices/frient.d.ts +4 -0
  383. package/devices/frient.d.ts.map +1 -0
  384. package/devices/frient.js +42 -0
  385. package/devices/frient.js.map +1 -0
  386. package/devices/futurehome.d.ts +4 -0
  387. package/devices/futurehome.d.ts.map +1 -0
  388. package/devices/futurehome.js +124 -0
  389. package/devices/futurehome.js.map +1 -0
  390. package/devices/ge.d.ts +4 -0
  391. package/devices/ge.d.ts.map +1 -0
  392. package/devices/ge.js +134 -0
  393. package/devices/ge.js.map +1 -0
  394. package/devices/gewiss.d.ts +4 -0
  395. package/devices/gewiss.d.ts.map +1 -0
  396. package/devices/gewiss.js +78 -0
  397. package/devices/gewiss.js.map +1 -0
  398. package/devices/gidealed.d.ts +4 -0
  399. package/devices/gidealed.d.ts.map +1 -0
  400. package/devices/gidealed.js +15 -0
  401. package/devices/gidealed.js.map +1 -0
  402. package/devices/giderwel.d.ts +4 -0
  403. package/devices/giderwel.d.ts.map +1 -0
  404. package/devices/giderwel.js +15 -0
  405. package/devices/giderwel.js.map +1 -0
  406. package/devices/giex.d.ts +4 -0
  407. package/devices/giex.d.ts.map +1 -0
  408. package/devices/giex.js +121 -0
  409. package/devices/giex.js.map +1 -0
  410. package/devices/girier.d.ts +4 -0
  411. package/devices/girier.d.ts.map +1 -0
  412. package/devices/girier.js +56 -0
  413. package/devices/girier.js.map +1 -0
  414. package/devices/gledopto.d.ts +4 -0
  415. package/devices/gledopto.d.ts.map +1 -0
  416. package/devices/gledopto.js +1046 -0
  417. package/devices/gledopto.js.map +1 -0
  418. package/devices/gmmts.d.ts +4 -0
  419. package/devices/gmmts.d.ts.map +1 -0
  420. package/devices/gmmts.js +2287 -0
  421. package/devices/gmmts.js.map +1 -0
  422. package/devices/gmy.d.ts +4 -0
  423. package/devices/gmy.d.ts.map +1 -0
  424. package/devices/gmy.js +15 -0
  425. package/devices/gmy.js.map +1 -0
  426. package/devices/gs.d.ts +4 -0
  427. package/devices/gs.d.ts.map +1 -0
  428. package/devices/gs.js +89 -0
  429. package/devices/gs.js.map +1 -0
  430. package/devices/gumax.d.ts +4 -0
  431. package/devices/gumax.d.ts.map +1 -0
  432. package/devices/gumax.js +15 -0
  433. package/devices/gumax.js.map +1 -0
  434. package/devices/halemeier.d.ts +4 -0
  435. package/devices/halemeier.d.ts.map +1 -0
  436. package/devices/halemeier.js +129 -0
  437. package/devices/halemeier.js.map +1 -0
  438. package/devices/hampton_bay.d.ts +4 -0
  439. package/devices/hampton_bay.d.ts.map +1 -0
  440. package/devices/hampton_bay.js +72 -0
  441. package/devices/hampton_bay.js.map +1 -0
  442. package/devices/heatit.d.ts +4 -0
  443. package/devices/heatit.d.ts.map +1 -0
  444. package/devices/heatit.js +15 -0
  445. package/devices/heatit.js.map +1 -0
  446. package/devices/heiman.d.ts +4 -0
  447. package/devices/heiman.d.ts.map +1 -0
  448. package/devices/heiman.js +807 -0
  449. package/devices/heiman.js.map +1 -0
  450. package/devices/heimgard_technologies.d.ts +4 -0
  451. package/devices/heimgard_technologies.d.ts.map +1 -0
  452. package/devices/heimgard_technologies.js +193 -0
  453. package/devices/heimgard_technologies.js.map +1 -0
  454. package/devices/hej.d.ts +4 -0
  455. package/devices/hej.d.ts.map +1 -0
  456. package/devices/hej.js +73 -0
  457. package/devices/hej.js.map +1 -0
  458. package/devices/hfh.d.ts +4 -0
  459. package/devices/hfh.d.ts.map +1 -0
  460. package/devices/hfh.js +15 -0
  461. package/devices/hfh.js.map +1 -0
  462. package/devices/hilux.d.ts +4 -0
  463. package/devices/hilux.d.ts.map +1 -0
  464. package/devices/hilux.js +22 -0
  465. package/devices/hilux.js.map +1 -0
  466. package/devices/hive.d.ts +4 -0
  467. package/devices/hive.d.ts.map +1 -0
  468. package/devices/hive.js +766 -0
  469. package/devices/hive.js.map +1 -0
  470. package/devices/hommyn.d.ts +4 -0
  471. package/devices/hommyn.d.ts.map +1 -0
  472. package/devices/hommyn.js +64 -0
  473. package/devices/hommyn.js.map +1 -0
  474. package/devices/honyar.d.ts +4 -0
  475. package/devices/honyar.d.ts.map +1 -0
  476. package/devices/honyar.js +171 -0
  477. package/devices/honyar.js.map +1 -0
  478. package/devices/hornbach.d.ts +4 -0
  479. package/devices/hornbach.d.ts.map +1 -0
  480. package/devices/hornbach.js +99 -0
  481. package/devices/hornbach.js.map +1 -0
  482. package/devices/hzc_electric.d.ts +4 -0
  483. package/devices/hzc_electric.d.ts.map +1 -0
  484. package/devices/hzc_electric.js +94 -0
  485. package/devices/hzc_electric.js.map +1 -0
  486. package/devices/icasa.d.ts +4 -0
  487. package/devices/icasa.d.ts.map +1 -0
  488. package/devices/icasa.js +167 -0
  489. package/devices/icasa.js.map +1 -0
  490. package/devices/idinio.d.ts +4 -0
  491. package/devices/idinio.d.ts.map +1 -0
  492. package/devices/idinio.js +15 -0
  493. package/devices/idinio.js.map +1 -0
  494. package/devices/ihorn.d.ts +4 -0
  495. package/devices/ihorn.d.ts.map +1 -0
  496. package/devices/ihorn.js +109 -0
  497. package/devices/ihorn.js.map +1 -0
  498. package/devices/ikea.d.ts +4 -0
  499. package/devices/ikea.d.ts.map +1 -0
  500. package/devices/ikea.js +927 -0
  501. package/devices/ikea.js.map +1 -0
  502. package/devices/ilightsin.d.ts +4 -0
  503. package/devices/ilightsin.d.ts.map +1 -0
  504. package/devices/ilightsin.js +15 -0
  505. package/devices/ilightsin.js.map +1 -0
  506. package/devices/iluminize.d.ts +4 -0
  507. package/devices/iluminize.d.ts.map +1 -0
  508. package/devices/iluminize.js +376 -0
  509. package/devices/iluminize.js.map +1 -0
  510. package/devices/ilux.d.ts +4 -0
  511. package/devices/ilux.d.ts.map +1 -0
  512. package/devices/ilux.js +15 -0
  513. package/devices/ilux.js.map +1 -0
  514. package/devices/imhotepcreation.d.ts +4 -0
  515. package/devices/imhotepcreation.d.ts.map +1 -0
  516. package/devices/imhotepcreation.js +251 -0
  517. package/devices/imhotepcreation.js.map +1 -0
  518. package/devices/immax.d.ts +4 -0
  519. package/devices/immax.d.ts.map +1 -0
  520. package/devices/immax.js +304 -0
  521. package/devices/immax.js.map +1 -0
  522. package/devices/imou.d.ts +4 -0
  523. package/devices/imou.d.ts.map +1 -0
  524. package/devices/imou.js +28 -0
  525. package/devices/imou.js.map +1 -0
  526. package/devices/index.d.ts +13 -0
  527. package/devices/index.d.ts.map +1 -0
  528. package/devices/index.js +642 -0
  529. package/devices/index.js.map +1 -0
  530. package/devices/innr.d.ts +4 -0
  531. package/devices/innr.d.ts.map +1 -0
  532. package/devices/innr.js +878 -0
  533. package/devices/innr.js.map +1 -0
  534. package/devices/inovelli.d.ts +4 -0
  535. package/devices/inovelli.d.ts.map +1 -0
  536. package/devices/inovelli.js +1977 -0
  537. package/devices/inovelli.js.map +1 -0
  538. package/devices/insta.d.ts +4 -0
  539. package/devices/insta.d.ts.map +1 -0
  540. package/devices/insta.js +186 -0
  541. package/devices/insta.js.map +1 -0
  542. package/devices/iolloi.d.ts +4 -0
  543. package/devices/iolloi.d.ts.map +1 -0
  544. package/devices/iolloi.js +16 -0
  545. package/devices/iolloi.js.map +1 -0
  546. package/devices/iotperfect.d.ts +4 -0
  547. package/devices/iotperfect.d.ts.map +1 -0
  548. package/devices/iotperfect.js +62 -0
  549. package/devices/iotperfect.js.map +1 -0
  550. package/devices/iris.d.ts +4 -0
  551. package/devices/iris.d.ts.map +1 -0
  552. package/devices/iris.js +211 -0
  553. package/devices/iris.js.map +1 -0
  554. package/devices/istar.d.ts +4 -0
  555. package/devices/istar.d.ts.map +1 -0
  556. package/devices/istar.js +22 -0
  557. package/devices/istar.js.map +1 -0
  558. package/devices/jasco.d.ts +4 -0
  559. package/devices/jasco.d.ts.map +1 -0
  560. package/devices/jasco.js +34 -0
  561. package/devices/jasco.js.map +1 -0
  562. package/devices/javis.d.ts +4 -0
  563. package/devices/javis.d.ts.map +1 -0
  564. package/devices/javis.js +84 -0
  565. package/devices/javis.js.map +1 -0
  566. package/devices/jethome.d.ts +4 -0
  567. package/devices/jethome.d.ts.map +1 -0
  568. package/devices/jethome.js +124 -0
  569. package/devices/jethome.js.map +1 -0
  570. package/devices/jiawen.d.ts +4 -0
  571. package/devices/jiawen.d.ts.map +1 -0
  572. package/devices/jiawen.js +22 -0
  573. package/devices/jiawen.js.map +1 -0
  574. package/devices/jumitech.d.ts +4 -0
  575. package/devices/jumitech.d.ts.map +1 -0
  576. package/devices/jumitech.js +15 -0
  577. package/devices/jumitech.js.map +1 -0
  578. package/devices/jxuan.d.ts +4 -0
  579. package/devices/jxuan.d.ts.map +1 -0
  580. package/devices/jxuan.js +89 -0
  581. package/devices/jxuan.js.map +1 -0
  582. package/devices/kami.d.ts +4 -0
  583. package/devices/kami.d.ts.map +1 -0
  584. package/devices/kami.js +55 -0
  585. package/devices/kami.js.map +1 -0
  586. package/devices/keen_home.d.ts +4 -0
  587. package/devices/keen_home.d.ts.map +1 -0
  588. package/devices/keen_home.js +160 -0
  589. package/devices/keen_home.js.map +1 -0
  590. package/devices/klikaanklikuit.d.ts +4 -0
  591. package/devices/klikaanklikuit.d.ts.map +1 -0
  592. package/devices/klikaanklikuit.js +22 -0
  593. package/devices/klikaanklikuit.js.map +1 -0
  594. package/devices/kmpcil.d.ts +4 -0
  595. package/devices/kmpcil.d.ts.map +1 -0
  596. package/devices/kmpcil.js +219 -0
  597. package/devices/kmpcil.js.map +1 -0
  598. package/devices/konke.d.ts +4 -0
  599. package/devices/konke.d.ts.map +1 -0
  600. package/devices/konke.js +210 -0
  601. package/devices/konke.js.map +1 -0
  602. package/devices/ksentry.d.ts +4 -0
  603. package/devices/ksentry.d.ts.map +1 -0
  604. package/devices/ksentry.js +15 -0
  605. package/devices/ksentry.js.map +1 -0
  606. package/devices/kurvia.d.ts +4 -0
  607. package/devices/kurvia.d.ts.map +1 -0
  608. package/devices/kurvia.js +20 -0
  609. package/devices/kurvia.js.map +1 -0
  610. package/devices/kwikset.d.ts +4 -0
  611. package/devices/kwikset.d.ts.map +1 -0
  612. package/devices/kwikset.js +157 -0
  613. package/devices/kwikset.js.map +1 -0
  614. package/devices/lanesto.d.ts +4 -0
  615. package/devices/lanesto.d.ts.map +1 -0
  616. package/devices/lanesto.js +15 -0
  617. package/devices/lanesto.js.map +1 -0
  618. package/devices/lds.d.ts +4 -0
  619. package/devices/lds.d.ts.map +1 -0
  620. package/devices/lds.js +15 -0
  621. package/devices/lds.js.map +1 -0
  622. package/devices/led_trading.d.ts +4 -0
  623. package/devices/led_trading.d.ts.map +1 -0
  624. package/devices/led_trading.js +112 -0
  625. package/devices/led_trading.js.map +1 -0
  626. package/devices/ledvance.d.ts +4 -0
  627. package/devices/ledvance.d.ts.map +1 -0
  628. package/devices/ledvance.js +337 -0
  629. package/devices/ledvance.js.map +1 -0
  630. package/devices/leedarson.d.ts +4 -0
  631. package/devices/leedarson.d.ts.map +1 -0
  632. package/devices/leedarson.js +182 -0
  633. package/devices/leedarson.js.map +1 -0
  634. package/devices/legrand.d.ts +4 -0
  635. package/devices/legrand.d.ts.map +1 -0
  636. package/devices/legrand.js +740 -0
  637. package/devices/legrand.js.map +1 -0
  638. package/devices/lellki.d.ts +4 -0
  639. package/devices/lellki.d.ts.map +1 -0
  640. package/devices/lellki.js +169 -0
  641. package/devices/lellki.js.map +1 -0
  642. package/devices/letsled.d.ts +4 -0
  643. package/devices/letsled.d.ts.map +1 -0
  644. package/devices/letsled.js +15 -0
  645. package/devices/letsled.js.map +1 -0
  646. package/devices/letv.d.ts +4 -0
  647. package/devices/letv.d.ts.map +1 -0
  648. package/devices/letv.js +90 -0
  649. package/devices/letv.js.map +1 -0
  650. package/devices/leviton.d.ts +4 -0
  651. package/devices/leviton.d.ts.map +1 -0
  652. package/devices/leviton.js +164 -0
  653. package/devices/leviton.js.map +1 -0
  654. package/devices/lg.d.ts +4 -0
  655. package/devices/lg.d.ts.map +1 -0
  656. package/devices/lg.js +29 -0
  657. package/devices/lg.js.map +1 -0
  658. package/devices/lidl.d.ts +4 -0
  659. package/devices/lidl.d.ts.map +1 -0
  660. package/devices/lidl.js +674 -0
  661. package/devices/lidl.js.map +1 -0
  662. package/devices/lifecontrol.d.ts +4 -0
  663. package/devices/lifecontrol.d.ts.map +1 -0
  664. package/devices/lifecontrol.js +149 -0
  665. package/devices/lifecontrol.js.map +1 -0
  666. package/devices/lightsolutions.d.ts +4 -0
  667. package/devices/lightsolutions.d.ts.map +1 -0
  668. package/devices/lightsolutions.js +36 -0
  669. package/devices/lightsolutions.js.map +1 -0
  670. package/devices/linkind.d.ts +4 -0
  671. package/devices/linkind.d.ts.map +1 -0
  672. package/devices/linkind.js +275 -0
  673. package/devices/linkind.js.map +1 -0
  674. package/devices/linptech.d.ts +4 -0
  675. package/devices/linptech.d.ts.map +1 -0
  676. package/devices/linptech.js +159 -0
  677. package/devices/linptech.js.map +1 -0
  678. package/devices/livingwise.d.ts +4 -0
  679. package/devices/livingwise.d.ts.map +1 -0
  680. package/devices/livingwise.js +119 -0
  681. package/devices/livingwise.js.map +1 -0
  682. package/devices/livolo.d.ts +4 -0
  683. package/devices/livolo.d.ts.map +1 -0
  684. package/devices/livolo.js +422 -0
  685. package/devices/livolo.js.map +1 -0
  686. package/devices/lixee.d.ts +4 -0
  687. package/devices/lixee.d.ts.map +1 -0
  688. package/devices/lixee.js +1926 -0
  689. package/devices/lixee.js.map +1 -0
  690. package/devices/lonsonho.d.ts +4 -0
  691. package/devices/lonsonho.d.ts.map +1 -0
  692. package/devices/lonsonho.js +303 -0
  693. package/devices/lonsonho.js.map +1 -0
  694. package/devices/ls.d.ts +4 -0
  695. package/devices/ls.d.ts.map +1 -0
  696. package/devices/ls.js +68 -0
  697. package/devices/ls.js.map +1 -0
  698. package/devices/lubeez.d.ts +4 -0
  699. package/devices/lubeez.d.ts.map +1 -0
  700. package/devices/lubeez.js +15 -0
  701. package/devices/lubeez.js.map +1 -0
  702. package/devices/lumi.d.ts +4 -0
  703. package/devices/lumi.d.ts.map +1 -0
  704. package/devices/lumi.js +4387 -0
  705. package/devices/lumi.js.map +1 -0
  706. package/devices/lupus.d.ts +4 -0
  707. package/devices/lupus.d.ts.map +1 -0
  708. package/devices/lupus.js +98 -0
  709. package/devices/lupus.js.map +1 -0
  710. package/devices/lutron.d.ts +4 -0
  711. package/devices/lutron.d.ts.map +1 -0
  712. package/devices/lutron.js +71 -0
  713. package/devices/lutron.js.map +1 -0
  714. package/devices/lux.d.ts +4 -0
  715. package/devices/lux.d.ts.map +1 -0
  716. package/devices/lux.js +91 -0
  717. package/devices/lux.js.map +1 -0
  718. package/devices/lytko.d.ts +4 -0
  719. package/devices/lytko.d.ts.map +1 -0
  720. package/devices/lytko.js +788 -0
  721. package/devices/lytko.js.map +1 -0
  722. package/devices/m_elec.d.ts +4 -0
  723. package/devices/m_elec.d.ts.map +1 -0
  724. package/devices/m_elec.js +36 -0
  725. package/devices/m_elec.js.map +1 -0
  726. package/devices/makegood.d.ts +4 -0
  727. package/devices/makegood.d.ts.map +1 -0
  728. package/devices/makegood.js +66 -0
  729. package/devices/makegood.js.map +1 -0
  730. package/devices/matcall_bv.d.ts +4 -0
  731. package/devices/matcall_bv.d.ts.map +1 -0
  732. package/devices/matcall_bv.js +22 -0
  733. package/devices/matcall_bv.js.map +1 -0
  734. package/devices/mazda.d.ts +4 -0
  735. package/devices/mazda.d.ts.map +1 -0
  736. package/devices/mazda.js +174 -0
  737. package/devices/mazda.js.map +1 -0
  738. package/devices/meazon.d.ts +4 -0
  739. package/devices/meazon.d.ts.map +1 -0
  740. package/devices/meazon.js +99 -0
  741. package/devices/meazon.js.map +1 -0
  742. package/devices/mercator.d.ts +4 -0
  743. package/devices/mercator.d.ts.map +1 -0
  744. package/devices/mercator.js +256 -0
  745. package/devices/mercator.js.map +1 -0
  746. package/devices/miboxer.d.ts +4 -0
  747. package/devices/miboxer.d.ts.map +1 -0
  748. package/devices/miboxer.js +93 -0
  749. package/devices/miboxer.js.map +1 -0
  750. package/devices/micromatic.d.ts +4 -0
  751. package/devices/micromatic.d.ts.map +1 -0
  752. package/devices/micromatic.js +15 -0
  753. package/devices/micromatic.js.map +1 -0
  754. package/devices/modular.d.ts +4 -0
  755. package/devices/modular.d.ts.map +1 -0
  756. package/devices/modular.js +15 -0
  757. package/devices/modular.js.map +1 -0
  758. package/devices/moes.d.ts +4 -0
  759. package/devices/moes.d.ts.map +1 -0
  760. package/devices/moes.js +654 -0
  761. package/devices/moes.js.map +1 -0
  762. package/devices/muller_licht.d.ts +4 -0
  763. package/devices/muller_licht.d.ts.map +1 -0
  764. package/devices/muller_licht.js +341 -0
  765. package/devices/muller_licht.js.map +1 -0
  766. package/devices/multiterm.d.ts +4 -0
  767. package/devices/multiterm.d.ts.map +1 -0
  768. package/devices/multiterm.js +123 -0
  769. package/devices/multiterm.js.map +1 -0
  770. package/devices/namron.d.ts +4 -0
  771. package/devices/namron.d.ts.map +1 -0
  772. package/devices/namron.js +1464 -0
  773. package/devices/namron.js.map +1 -0
  774. package/devices/nanoleaf.d.ts +4 -0
  775. package/devices/nanoleaf.d.ts.map +1 -0
  776. package/devices/nanoleaf.js +15 -0
  777. package/devices/nanoleaf.js.map +1 -0
  778. package/devices/nedis.d.ts +4 -0
  779. package/devices/nedis.d.ts.map +1 -0
  780. package/devices/nedis.js +88 -0
  781. package/devices/nedis.js.map +1 -0
  782. package/devices/neo.d.ts +4 -0
  783. package/devices/neo.d.ts.map +1 -0
  784. package/devices/neo.js +558 -0
  785. package/devices/neo.js.map +1 -0
  786. package/devices/net2grid.d.ts +4 -0
  787. package/devices/net2grid.d.ts.map +1 -0
  788. package/devices/net2grid.js +68 -0
  789. package/devices/net2grid.js.map +1 -0
  790. package/devices/netvox.d.ts +4 -0
  791. package/devices/netvox.d.ts.map +1 -0
  792. package/devices/netvox.js +75 -0
  793. package/devices/netvox.js.map +1 -0
  794. package/devices/nexelec.d.ts +4 -0
  795. package/devices/nexelec.d.ts.map +1 -0
  796. package/devices/nexelec.js +15 -0
  797. package/devices/nexelec.js.map +1 -0
  798. package/devices/niko.d.ts +4 -0
  799. package/devices/niko.d.ts.map +1 -0
  800. package/devices/niko.js +495 -0
  801. package/devices/niko.js.map +1 -0
  802. package/devices/ninja_blocks.d.ts +4 -0
  803. package/devices/ninja_blocks.d.ts.map +1 -0
  804. package/devices/ninja_blocks.js +64 -0
  805. package/devices/ninja_blocks.js.map +1 -0
  806. package/devices/niviss.d.ts +4 -0
  807. package/devices/niviss.d.ts.map +1 -0
  808. package/devices/niviss.js +15 -0
  809. package/devices/niviss.js.map +1 -0
  810. package/devices/nodon.d.ts +4 -0
  811. package/devices/nodon.d.ts.map +1 -0
  812. package/devices/nodon.js +386 -0
  813. package/devices/nodon.js.map +1 -0
  814. package/devices/nordtronic.d.ts +4 -0
  815. package/devices/nordtronic.d.ts.map +1 -0
  816. package/devices/nordtronic.js +41 -0
  817. package/devices/nordtronic.js.map +1 -0
  818. package/devices/nous.d.ts +4 -0
  819. package/devices/nous.d.ts.map +1 -0
  820. package/devices/nous.js +151 -0
  821. package/devices/nous.js.map +1 -0
  822. package/devices/novo.d.ts +4 -0
  823. package/devices/novo.d.ts.map +1 -0
  824. package/devices/novo.js +57 -0
  825. package/devices/novo.js.map +1 -0
  826. package/devices/nue_3a.d.ts +4 -0
  827. package/devices/nue_3a.d.ts.map +1 -0
  828. package/devices/nue_3a.js +361 -0
  829. package/devices/nue_3a.js.map +1 -0
  830. package/devices/nyce.d.ts +4 -0
  831. package/devices/nyce.d.ts.map +1 -0
  832. package/devices/nyce.js +134 -0
  833. package/devices/nyce.js.map +1 -0
  834. package/devices/onenuo.d.ts +4 -0
  835. package/devices/onenuo.d.ts.map +1 -0
  836. package/devices/onenuo.js +86 -0
  837. package/devices/onenuo.js.map +1 -0
  838. package/devices/onesti.d.ts +4 -0
  839. package/devices/onesti.d.ts.map +1 -0
  840. package/devices/onesti.js +208 -0
  841. package/devices/onesti.js.map +1 -0
  842. package/devices/openlumi.d.ts +4 -0
  843. package/devices/openlumi.d.ts.map +1 -0
  844. package/devices/openlumi.js +62 -0
  845. package/devices/openlumi.js.map +1 -0
  846. package/devices/orvibo.d.ts +4 -0
  847. package/devices/orvibo.d.ts.map +1 -0
  848. package/devices/orvibo.js +391 -0
  849. package/devices/orvibo.js.map +1 -0
  850. package/devices/osram.d.ts +4 -0
  851. package/devices/osram.d.ts.map +1 -0
  852. package/devices/osram.js +516 -0
  853. package/devices/osram.js.map +1 -0
  854. package/devices/oujiabao.d.ts +4 -0
  855. package/devices/oujiabao.d.ts.map +1 -0
  856. package/devices/oujiabao.js +55 -0
  857. package/devices/oujiabao.js.map +1 -0
  858. package/devices/owon.d.ts +4 -0
  859. package/devices/owon.d.ts.map +1 -0
  860. package/devices/owon.js +478 -0
  861. package/devices/owon.js.map +1 -0
  862. package/devices/ozsmartthings.d.ts +4 -0
  863. package/devices/ozsmartthings.d.ts.map +1 -0
  864. package/devices/ozsmartthings.js +48 -0
  865. package/devices/ozsmartthings.js.map +1 -0
  866. package/devices/paul_neuhaus.d.ts +4 -0
  867. package/devices/paul_neuhaus.d.ts.map +1 -0
  868. package/devices/paul_neuhaus.js +194 -0
  869. package/devices/paul_neuhaus.js.map +1 -0
  870. package/devices/paulmann.d.ts +4 -0
  871. package/devices/paulmann.d.ts.map +1 -0
  872. package/devices/paulmann.js +330 -0
  873. package/devices/paulmann.js.map +1 -0
  874. package/devices/peq.d.ts +4 -0
  875. package/devices/peq.d.ts.map +1 -0
  876. package/devices/peq.js +64 -0
  877. package/devices/peq.js.map +1 -0
  878. package/devices/perenio.d.ts +4 -0
  879. package/devices/perenio.d.ts.map +1 -0
  880. package/devices/perenio.js +468 -0
  881. package/devices/perenio.js.map +1 -0
  882. package/devices/philio.d.ts +4 -0
  883. package/devices/philio.d.ts.map +1 -0
  884. package/devices/philio.js +16 -0
  885. package/devices/philio.js.map +1 -0
  886. package/devices/philips.d.ts +4 -0
  887. package/devices/philips.d.ts.map +1 -0
  888. package/devices/philips.js +4051 -0
  889. package/devices/philips.js.map +1 -0
  890. package/devices/plaid.d.ts +4 -0
  891. package/devices/plaid.d.ts.map +1 -0
  892. package/devices/plaid.js +65 -0
  893. package/devices/plaid.js.map +1 -0
  894. package/devices/plugwise.d.ts +4 -0
  895. package/devices/plugwise.d.ts.map +1 -0
  896. package/devices/plugwise.js +210 -0
  897. package/devices/plugwise.js.map +1 -0
  898. package/devices/profalux.d.ts +4 -0
  899. package/devices/profalux.d.ts.map +1 -0
  900. package/devices/profalux.js +191 -0
  901. package/devices/profalux.js.map +1 -0
  902. package/devices/prolight.d.ts +4 -0
  903. package/devices/prolight.d.ts.map +1 -0
  904. package/devices/prolight.js +115 -0
  905. package/devices/prolight.js.map +1 -0
  906. package/devices/pushok.d.ts +4 -0
  907. package/devices/pushok.d.ts.map +1 -0
  908. package/devices/pushok.js +300 -0
  909. package/devices/pushok.js.map +1 -0
  910. package/devices/qa.d.ts +4 -0
  911. package/devices/qa.d.ts.map +1 -0
  912. package/devices/qa.js +295 -0
  913. package/devices/qa.js.map +1 -0
  914. package/devices/qmotion.d.ts +4 -0
  915. package/devices/qmotion.d.ts.map +1 -0
  916. package/devices/qmotion.js +73 -0
  917. package/devices/qmotion.js.map +1 -0
  918. package/devices/qoto.d.ts +4 -0
  919. package/devices/qoto.d.ts.map +1 -0
  920. package/devices/qoto.js +87 -0
  921. package/devices/qoto.js.map +1 -0
  922. package/devices/quotra.d.ts +4 -0
  923. package/devices/quotra.d.ts.map +1 -0
  924. package/devices/quotra.js +22 -0
  925. package/devices/quotra.js.map +1 -0
  926. package/devices/rademacher.d.ts +4 -0
  927. package/devices/rademacher.d.ts.map +1 -0
  928. package/devices/rademacher.js +29 -0
  929. package/devices/rademacher.js.map +1 -0
  930. package/devices/radium.d.ts +4 -0
  931. package/devices/radium.d.ts.map +1 -0
  932. package/devices/radium.js +15 -0
  933. package/devices/radium.js.map +1 -0
  934. package/devices/raex.d.ts +4 -0
  935. package/devices/raex.d.ts.map +1 -0
  936. package/devices/raex.js +15 -0
  937. package/devices/raex.js.map +1 -0
  938. package/devices/rgb_genie.d.ts +4 -0
  939. package/devices/rgb_genie.d.ts.map +1 -0
  940. package/devices/rgb_genie.js +279 -0
  941. package/devices/rgb_genie.js.map +1 -0
  942. package/devices/robb.d.ts +4 -0
  943. package/devices/robb.d.ts.map +1 -0
  944. package/devices/robb.js +449 -0
  945. package/devices/robb.js.map +1 -0
  946. package/devices/roome.d.ts +4 -0
  947. package/devices/roome.d.ts.map +1 -0
  948. package/devices/roome.js +55 -0
  949. package/devices/roome.js.map +1 -0
  950. package/devices/rtx.d.ts +4 -0
  951. package/devices/rtx.d.ts.map +1 -0
  952. package/devices/rtx.js +151 -0
  953. package/devices/rtx.js.map +1 -0
  954. package/devices/salus_controls.d.ts +4 -0
  955. package/devices/salus_controls.d.ts.map +1 -0
  956. package/devices/salus_controls.js +136 -0
  957. package/devices/salus_controls.js.map +1 -0
  958. package/devices/samotech.d.ts +4 -0
  959. package/devices/samotech.d.ts.map +1 -0
  960. package/devices/samotech.js +75 -0
  961. package/devices/samotech.js.map +1 -0
  962. package/devices/saswell.d.ts +4 -0
  963. package/devices/saswell.d.ts.map +1 -0
  964. package/devices/saswell.js +125 -0
  965. package/devices/saswell.js.map +1 -0
  966. package/devices/sber.d.ts +4 -0
  967. package/devices/sber.d.ts.map +1 -0
  968. package/devices/sber.js +66 -0
  969. package/devices/sber.js.map +1 -0
  970. package/devices/scanproducts.d.ts +4 -0
  971. package/devices/scanproducts.d.ts.map +1 -0
  972. package/devices/scanproducts.js +22 -0
  973. package/devices/scanproducts.js.map +1 -0
  974. package/devices/schlage.d.ts +4 -0
  975. package/devices/schlage.d.ts.map +1 -0
  976. package/devices/schlage.js +64 -0
  977. package/devices/schlage.js.map +1 -0
  978. package/devices/schneider_electric.d.ts +4 -0
  979. package/devices/schneider_electric.d.ts.map +1 -0
  980. package/devices/schneider_electric.js +2187 -0
  981. package/devices/schneider_electric.js.map +1 -0
  982. package/devices/schwaiger.d.ts +4 -0
  983. package/devices/schwaiger.d.ts.map +1 -0
  984. package/devices/schwaiger.js +109 -0
  985. package/devices/schwaiger.js.map +1 -0
  986. package/devices/seastar_intelligence.d.ts +4 -0
  987. package/devices/seastar_intelligence.d.ts.map +1 -0
  988. package/devices/seastar_intelligence.js +20 -0
  989. package/devices/seastar_intelligence.js.map +1 -0
  990. package/devices/securifi.d.ts +4 -0
  991. package/devices/securifi.d.ts.map +1 -0
  992. package/devices/securifi.js +83 -0
  993. package/devices/securifi.js.map +1 -0
  994. package/devices/sengled.d.ts +7 -0
  995. package/devices/sengled.d.ts.map +1 -0
  996. package/devices/sengled.js +358 -0
  997. package/devices/sengled.js.map +1 -0
  998. package/devices/sercomm.d.ts +4 -0
  999. package/devices/sercomm.d.ts.map +1 -0
  1000. package/devices/sercomm.js +189 -0
  1001. package/devices/sercomm.js.map +1 -0
  1002. package/devices/shade_control.d.ts +4 -0
  1003. package/devices/shade_control.d.ts.map +1 -0
  1004. package/devices/shade_control.js +65 -0
  1005. package/devices/shade_control.js.map +1 -0
  1006. package/devices/shenzhen_homa.d.ts +4 -0
  1007. package/devices/shenzhen_homa.d.ts.map +1 -0
  1008. package/devices/shenzhen_homa.js +111 -0
  1009. package/devices/shenzhen_homa.js.map +1 -0
  1010. package/devices/shinasystem.d.ts +4 -0
  1011. package/devices/shinasystem.d.ts.map +1 -0
  1012. package/devices/shinasystem.js +961 -0
  1013. package/devices/shinasystem.js.map +1 -0
  1014. package/devices/shyugj.d.ts +4 -0
  1015. package/devices/shyugj.d.ts.map +1 -0
  1016. package/devices/shyugj.js +21 -0
  1017. package/devices/shyugj.js.map +1 -0
  1018. package/devices/siglis.d.ts +4 -0
  1019. package/devices/siglis.d.ts.map +1 -0
  1020. package/devices/siglis.js +457 -0
  1021. package/devices/siglis.js.map +1 -0
  1022. package/devices/sikom.d.ts +4 -0
  1023. package/devices/sikom.d.ts.map +1 -0
  1024. package/devices/sikom.js +68 -0
  1025. package/devices/sikom.js.map +1 -0
  1026. package/devices/sinope.d.ts +4 -0
  1027. package/devices/sinope.d.ts.map +1 -0
  1028. package/devices/sinope.js +1755 -0
  1029. package/devices/sinope.js.map +1 -0
  1030. package/devices/siterwell.d.ts +4 -0
  1031. package/devices/siterwell.d.ts.map +1 -0
  1032. package/devices/siterwell.js +111 -0
  1033. package/devices/siterwell.js.map +1 -0
  1034. package/devices/skydance.d.ts +4 -0
  1035. package/devices/skydance.d.ts.map +1 -0
  1036. package/devices/skydance.js +156 -0
  1037. package/devices/skydance.js.map +1 -0
  1038. package/devices/slv.d.ts +4 -0
  1039. package/devices/slv.d.ts.map +1 -0
  1040. package/devices/slv.js +38 -0
  1041. package/devices/slv.js.map +1 -0
  1042. package/devices/smart9.d.ts +4 -0
  1043. package/devices/smart9.d.ts.map +1 -0
  1044. package/devices/smart9.js +67 -0
  1045. package/devices/smart9.js.map +1 -0
  1046. package/devices/smart_home_pty.d.ts +4 -0
  1047. package/devices/smart_home_pty.d.ts.map +1 -0
  1048. package/devices/smart_home_pty.js +22 -0
  1049. package/devices/smart_home_pty.js.map +1 -0
  1050. package/devices/smartenit.d.ts +4 -0
  1051. package/devices/smartenit.d.ts.map +1 -0
  1052. package/devices/smartenit.js +81 -0
  1053. package/devices/smartenit.js.map +1 -0
  1054. package/devices/smartthings.d.ts +4 -0
  1055. package/devices/smartthings.d.ts.map +1 -0
  1056. package/devices/smartthings.js +527 -0
  1057. package/devices/smartthings.js.map +1 -0
  1058. package/devices/smartwings.d.ts +4 -0
  1059. package/devices/smartwings.d.ts.map +1 -0
  1060. package/devices/smartwings.js +64 -0
  1061. package/devices/smartwings.js.map +1 -0
  1062. package/devices/smlight.d.ts +4 -0
  1063. package/devices/smlight.d.ts.map +1 -0
  1064. package/devices/smlight.js +22 -0
  1065. package/devices/smlight.js.map +1 -0
  1066. package/devices/sohan_electric.d.ts +4 -0
  1067. package/devices/sohan_electric.d.ts.map +1 -0
  1068. package/devices/sohan_electric.js +20 -0
  1069. package/devices/sohan_electric.js.map +1 -0
  1070. package/devices/solaredge.d.ts +4 -0
  1071. package/devices/solaredge.d.ts.map +1 -0
  1072. package/devices/solaredge.js +15 -0
  1073. package/devices/solaredge.js.map +1 -0
  1074. package/devices/soma.d.ts +4 -0
  1075. package/devices/soma.d.ts.map +1 -0
  1076. package/devices/soma.js +15 -0
  1077. package/devices/soma.js.map +1 -0
  1078. package/devices/somfy.d.ts +4 -0
  1079. package/devices/somfy.d.ts.map +1 -0
  1080. package/devices/somfy.js +88 -0
  1081. package/devices/somfy.js.map +1 -0
  1082. package/devices/somgoms.d.ts +4 -0
  1083. package/devices/somgoms.d.ts.map +1 -0
  1084. package/devices/somgoms.js +84 -0
  1085. package/devices/somgoms.js.map +1 -0
  1086. package/devices/sonoff.d.ts +4 -0
  1087. package/devices/sonoff.d.ts.map +1 -0
  1088. package/devices/sonoff.js +1452 -0
  1089. package/devices/sonoff.js.map +1 -0
  1090. package/devices/sowilo.d.ts +4 -0
  1091. package/devices/sowilo.d.ts.map +1 -0
  1092. package/devices/sowilo.js +15 -0
  1093. package/devices/sowilo.js.map +1 -0
  1094. package/devices/spotmau.d.ts +4 -0
  1095. package/devices/spotmau.d.ts.map +1 -0
  1096. package/devices/spotmau.js +42 -0
  1097. package/devices/spotmau.js.map +1 -0
  1098. package/devices/stelpro.d.ts +4 -0
  1099. package/devices/stelpro.d.ts.map +1 -0
  1100. package/devices/stelpro.js +366 -0
  1101. package/devices/stelpro.js.map +1 -0
  1102. package/devices/sunricher.d.ts +4 -0
  1103. package/devices/sunricher.d.ts.map +1 -0
  1104. package/devices/sunricher.js +1308 -0
  1105. package/devices/sunricher.js.map +1 -0
  1106. package/devices/swann.d.ts +4 -0
  1107. package/devices/swann.d.ts.map +1 -0
  1108. package/devices/swann.js +73 -0
  1109. package/devices/swann.js.map +1 -0
  1110. package/devices/sylvania.d.ts +4 -0
  1111. package/devices/sylvania.d.ts.map +1 -0
  1112. package/devices/sylvania.js +226 -0
  1113. package/devices/sylvania.js.map +1 -0
  1114. package/devices/tapestry.d.ts +4 -0
  1115. package/devices/tapestry.d.ts.map +1 -0
  1116. package/devices/tapestry.js +56 -0
  1117. package/devices/tapestry.js.map +1 -0
  1118. package/devices/tci.d.ts +4 -0
  1119. package/devices/tci.d.ts.map +1 -0
  1120. package/devices/tci.js +29 -0
  1121. package/devices/tci.js.map +1 -0
  1122. package/devices/tech.d.ts +4 -0
  1123. package/devices/tech.d.ts.map +1 -0
  1124. package/devices/tech.js +131 -0
  1125. package/devices/tech.js.map +1 -0
  1126. package/devices/technicolor.d.ts +4 -0
  1127. package/devices/technicolor.d.ts.map +1 -0
  1128. package/devices/technicolor.js +102 -0
  1129. package/devices/technicolor.js.map +1 -0
  1130. package/devices/terncy.d.ts +4 -0
  1131. package/devices/terncy.d.ts.map +1 -0
  1132. package/devices/terncy.js +116 -0
  1133. package/devices/terncy.js.map +1 -0
  1134. package/devices/the_light_group.d.ts +4 -0
  1135. package/devices/the_light_group.d.ts.map +1 -0
  1136. package/devices/the_light_group.js +130 -0
  1137. package/devices/the_light_group.js.map +1 -0
  1138. package/devices/third_reality.d.ts +4 -0
  1139. package/devices/third_reality.d.ts.map +1 -0
  1140. package/devices/third_reality.js +569 -0
  1141. package/devices/third_reality.js.map +1 -0
  1142. package/devices/titan_products.d.ts +4 -0
  1143. package/devices/titan_products.d.ts.map +1 -0
  1144. package/devices/titan_products.js +62 -0
  1145. package/devices/titan_products.js.map +1 -0
  1146. package/devices/tlwglobal.d.ts +4 -0
  1147. package/devices/tlwglobal.d.ts.map +1 -0
  1148. package/devices/tlwglobal.js +32 -0
  1149. package/devices/tlwglobal.js.map +1 -0
  1150. package/devices/tplink.d.ts +4 -0
  1151. package/devices/tplink.d.ts.map +1 -0
  1152. package/devices/tplink.js +82 -0
  1153. package/devices/tplink.js.map +1 -0
  1154. package/devices/trust.d.ts +4 -0
  1155. package/devices/trust.d.ts.map +1 -0
  1156. package/devices/trust.js +183 -0
  1157. package/devices/trust.js.map +1 -0
  1158. package/devices/tubeszb.d.ts +4 -0
  1159. package/devices/tubeszb.d.ts.map +1 -0
  1160. package/devices/tubeszb.js +60 -0
  1161. package/devices/tubeszb.js.map +1 -0
  1162. package/devices/tuya.d.ts +4 -0
  1163. package/devices/tuya.d.ts.map +1 -0
  1164. package/devices/tuya.js +13607 -0
  1165. package/devices/tuya.js.map +1 -0
  1166. package/devices/ubisys.d.ts +4 -0
  1167. package/devices/ubisys.d.ts.map +1 -0
  1168. package/devices/ubisys.js +1300 -0
  1169. package/devices/ubisys.js.map +1 -0
  1170. package/devices/uhome.d.ts +4 -0
  1171. package/devices/uhome.d.ts.map +1 -0
  1172. package/devices/uhome.js +64 -0
  1173. package/devices/uhome.js.map +1 -0
  1174. package/devices/universal_electronics_inc.d.ts +4 -0
  1175. package/devices/universal_electronics_inc.d.ts.map +1 -0
  1176. package/devices/universal_electronics_inc.js +186 -0
  1177. package/devices/universal_electronics_inc.js.map +1 -0
  1178. package/devices/vbled.d.ts +4 -0
  1179. package/devices/vbled.d.ts.map +1 -0
  1180. package/devices/vbled.js +15 -0
  1181. package/devices/vbled.js.map +1 -0
  1182. package/devices/vesternet.d.ts +4 -0
  1183. package/devices/vesternet.d.ts.map +1 -0
  1184. package/devices/vesternet.js +330 -0
  1185. package/devices/vesternet.js.map +1 -0
  1186. package/devices/viessmann.d.ts +4 -0
  1187. package/devices/viessmann.d.ts.map +1 -0
  1188. package/devices/viessmann.js +115 -0
  1189. package/devices/viessmann.js.map +1 -0
  1190. package/devices/villeroy_boch.d.ts +4 -0
  1191. package/devices/villeroy_boch.d.ts.map +1 -0
  1192. package/devices/villeroy_boch.js +22 -0
  1193. package/devices/villeroy_boch.js.map +1 -0
  1194. package/devices/vimar.d.ts +4 -0
  1195. package/devices/vimar.d.ts.map +1 -0
  1196. package/devices/vimar.js +137 -0
  1197. package/devices/vimar.js.map +1 -0
  1198. package/devices/visonic.d.ts +4 -0
  1199. package/devices/visonic.d.ts.map +1 -0
  1200. package/devices/visonic.js +138 -0
  1201. package/devices/visonic.js.map +1 -0
  1202. package/devices/vrey.d.ts +4 -0
  1203. package/devices/vrey.d.ts.map +1 -0
  1204. package/devices/vrey.js +18 -0
  1205. package/devices/vrey.js.map +1 -0
  1206. package/devices/wally.d.ts +4 -0
  1207. package/devices/wally.d.ts.map +1 -0
  1208. package/devices/wally.js +64 -0
  1209. package/devices/wally.js.map +1 -0
  1210. package/devices/waxman.d.ts +4 -0
  1211. package/devices/waxman.d.ts.map +1 -0
  1212. package/devices/waxman.js +85 -0
  1213. package/devices/waxman.js.map +1 -0
  1214. package/devices/weiser.d.ts +4 -0
  1215. package/devices/weiser.d.ts.map +1 -0
  1216. package/devices/weiser.js +103 -0
  1217. package/devices/weiser.js.map +1 -0
  1218. package/devices/weten.d.ts +4 -0
  1219. package/devices/weten.d.ts.map +1 -0
  1220. package/devices/weten.js +89 -0
  1221. package/devices/weten.js.map +1 -0
  1222. package/devices/wirenboard.d.ts +4 -0
  1223. package/devices/wirenboard.d.ts.map +1 -0
  1224. package/devices/wirenboard.js +626 -0
  1225. package/devices/wirenboard.js.map +1 -0
  1226. package/devices/wisdom.d.ts +4 -0
  1227. package/devices/wisdom.d.ts.map +1 -0
  1228. package/devices/wisdom.js +15 -0
  1229. package/devices/wisdom.js.map +1 -0
  1230. package/devices/woolley.d.ts +4 -0
  1231. package/devices/woolley.d.ts.map +1 -0
  1232. package/devices/woolley.js +88 -0
  1233. package/devices/woolley.js.map +1 -0
  1234. package/devices/woox.d.ts +4 -0
  1235. package/devices/woox.d.ts.map +1 -0
  1236. package/devices/woox.js +137 -0
  1237. package/devices/woox.js.map +1 -0
  1238. package/devices/wyze.d.ts +4 -0
  1239. package/devices/wyze.d.ts.map +1 -0
  1240. package/devices/wyze.js +63 -0
  1241. package/devices/wyze.js.map +1 -0
  1242. package/devices/xinghuoyuan.d.ts +4 -0
  1243. package/devices/xinghuoyuan.d.ts.map +1 -0
  1244. package/devices/xinghuoyuan.js +15 -0
  1245. package/devices/xinghuoyuan.js.map +1 -0
  1246. package/devices/xyzroe.d.ts +4 -0
  1247. package/devices/xyzroe.d.ts.map +1 -0
  1248. package/devices/xyzroe.js +519 -0
  1249. package/devices/xyzroe.js.map +1 -0
  1250. package/devices/yale.d.ts +4 -0
  1251. package/devices/yale.d.ts.map +1 -0
  1252. package/devices/yale.js +503 -0
  1253. package/devices/yale.js.map +1 -0
  1254. package/devices/yandex.d.ts +4 -0
  1255. package/devices/yandex.d.ts.map +1 -0
  1256. package/devices/yandex.js +410 -0
  1257. package/devices/yandex.js.map +1 -0
  1258. package/devices/ynoa.d.ts +4 -0
  1259. package/devices/ynoa.d.ts.map +1 -0
  1260. package/devices/ynoa.js +113 -0
  1261. package/devices/ynoa.js.map +1 -0
  1262. package/devices/yookee.d.ts +4 -0
  1263. package/devices/yookee.d.ts.map +1 -0
  1264. package/devices/yookee.js +63 -0
  1265. package/devices/yookee.js.map +1 -0
  1266. package/devices/ysrsai.d.ts +4 -0
  1267. package/devices/ysrsai.d.ts.map +1 -0
  1268. package/devices/ysrsai.js +66 -0
  1269. package/devices/ysrsai.js.map +1 -0
  1270. package/devices/zemismart.d.ts +4 -0
  1271. package/devices/zemismart.d.ts.map +1 -0
  1272. package/devices/zemismart.js +405 -0
  1273. package/devices/zemismart.js.map +1 -0
  1274. package/devices/zen.d.ts +4 -0
  1275. package/devices/zen.d.ts.map +1 -0
  1276. package/devices/zen.js +96 -0
  1277. package/devices/zen.js.map +1 -0
  1278. package/devices/zigbeetlc.d.ts +13 -0
  1279. package/devices/zigbeetlc.d.ts.map +1 -0
  1280. package/devices/zigbeetlc.js +201 -0
  1281. package/devices/zigbeetlc.js.map +1 -0
  1282. package/devices/zipato.d.ts +4 -0
  1283. package/devices/zipato.d.ts.map +1 -0
  1284. package/devices/zipato.js +15 -0
  1285. package/devices/zipato.js.map +1 -0
  1286. package/index.d.ts +21 -0
  1287. package/index.d.ts.map +1 -0
  1288. package/index.js +488 -0
  1289. package/index.js.map +1 -0
  1290. package/lib/color.d.ts +272 -0
  1291. package/lib/color.d.ts.map +1 -0
  1292. package/lib/color.js +765 -0
  1293. package/lib/color.js.map +1 -0
  1294. package/lib/configureKey.d.ts +3 -0
  1295. package/lib/configureKey.d.ts.map +1 -0
  1296. package/lib/configureKey.js +939 -0
  1297. package/lib/configureKey.js.map +1 -0
  1298. package/lib/constants.d.ts +68 -0
  1299. package/lib/constants.d.ts.map +1 -0
  1300. package/lib/constants.js +293 -0
  1301. package/lib/constants.js.map +1 -0
  1302. package/lib/develco.d.ts +15 -0
  1303. package/lib/develco.d.ts.map +1 -0
  1304. package/lib/develco.js +183 -0
  1305. package/lib/develco.js.map +1 -0
  1306. package/lib/ewelink.d.ts +30 -0
  1307. package/lib/ewelink.d.ts.map +1 -0
  1308. package/lib/ewelink.js +718 -0
  1309. package/lib/ewelink.js.map +1 -0
  1310. package/lib/exposes.d.ts +344 -0
  1311. package/lib/exposes.d.ts.map +1 -0
  1312. package/lib/exposes.js +1065 -0
  1313. package/lib/exposes.js.map +1 -0
  1314. package/lib/generateDefinition.d.ts +6 -0
  1315. package/lib/generateDefinition.d.ts.map +1 -0
  1316. package/lib/generateDefinition.js +356 -0
  1317. package/lib/generateDefinition.js.map +1 -0
  1318. package/lib/ikea.d.ts +39 -0
  1319. package/lib/ikea.d.ts.map +1 -0
  1320. package/lib/ikea.js +776 -0
  1321. package/lib/ikea.js.map +1 -0
  1322. package/lib/kelvinToXy.d.ts +8 -0
  1323. package/lib/kelvinToXy.d.ts.map +1 -0
  1324. package/lib/kelvinToXy.js +1914 -0
  1325. package/lib/kelvinToXy.js.map +1 -0
  1326. package/lib/ledvance.d.ts +20 -0
  1327. package/lib/ledvance.d.ts.map +1 -0
  1328. package/lib/ledvance.js +103 -0
  1329. package/lib/ledvance.js.map +1 -0
  1330. package/lib/legacy.d.ts +5128 -0
  1331. package/lib/legacy.d.ts.map +1 -0
  1332. package/lib/legacy.js +6603 -0
  1333. package/lib/legacy.js.map +1 -0
  1334. package/lib/legrand.d.ts +69 -0
  1335. package/lib/legrand.d.ts.map +1 -0
  1336. package/lib/legrand.js +282 -0
  1337. package/lib/legrand.js.map +1 -0
  1338. package/lib/light.d.ts +6 -0
  1339. package/lib/light.d.ts.map +1 -0
  1340. package/lib/light.js +146 -0
  1341. package/lib/light.js.map +1 -0
  1342. package/lib/logger.d.ts +4 -0
  1343. package/lib/logger.d.ts.map +1 -0
  1344. package/lib/logger.js +14 -0
  1345. package/lib/logger.js.map +1 -0
  1346. package/lib/lumi.d.ts +953 -0
  1347. package/lib/lumi.d.ts.map +1 -0
  1348. package/lib/lumi.js +4973 -0
  1349. package/lib/lumi.js.map +1 -0
  1350. package/lib/modernExtend.d.ts +325 -0
  1351. package/lib/modernExtend.d.ts.map +1 -0
  1352. package/lib/modernExtend.js +1995 -0
  1353. package/lib/modernExtend.js.map +1 -0
  1354. package/lib/ota.d.ts +71 -0
  1355. package/lib/ota.d.ts.map +1 -0
  1356. package/lib/ota.js +663 -0
  1357. package/lib/ota.js.map +1 -0
  1358. package/lib/philips.d.ts +84 -0
  1359. package/lib/philips.d.ts.map +1 -0
  1360. package/lib/philips.js +657 -0
  1361. package/lib/philips.js.map +1 -0
  1362. package/lib/reporting.d.ts +58 -0
  1363. package/lib/reporting.d.ts.map +1 -0
  1364. package/lib/reporting.js +336 -0
  1365. package/lib/reporting.js.map +1 -0
  1366. package/lib/store.d.ts +7 -0
  1367. package/lib/store.d.ts.map +1 -0
  1368. package/lib/store.js +56 -0
  1369. package/lib/store.js.map +1 -0
  1370. package/lib/sunricher.d.ts +13 -0
  1371. package/lib/sunricher.d.ts.map +1 -0
  1372. package/lib/sunricher.js +14 -0
  1373. package/lib/sunricher.js.map +1 -0
  1374. package/lib/tuya.d.ts +764 -0
  1375. package/lib/tuya.d.ts.map +1 -0
  1376. package/lib/tuya.js +2425 -0
  1377. package/lib/tuya.js.map +1 -0
  1378. package/lib/types.d.ts +433 -0
  1379. package/lib/types.d.ts.map +1 -0
  1380. package/lib/types.js +4 -0
  1381. package/lib/types.js.map +1 -0
  1382. package/lib/ubisys.d.ts +19 -0
  1383. package/lib/ubisys.d.ts.map +1 -0
  1384. package/lib/ubisys.js +293 -0
  1385. package/lib/ubisys.js.map +1 -0
  1386. package/lib/utils.d.ts +93 -0
  1387. package/lib/utils.d.ts.map +1 -0
  1388. package/lib/utils.js +790 -0
  1389. package/lib/utils.js.map +1 -0
  1390. package/lib/zosung.d.ts +52 -0
  1391. package/lib/zosung.d.ts.map +1 -0
  1392. package/lib/zosung.js +256 -0
  1393. package/lib/zosung.js.map +1 -0
  1394. package/package.json +2 -2
@@ -0,0 +1,1755 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const zigbee_herdsman_1 = require("zigbee-herdsman");
40
+ const fromZigbee_1 = __importDefault(require("../converters/fromZigbee"));
41
+ const toZigbee_1 = __importDefault(require("../converters/toZigbee"));
42
+ const constants = __importStar(require("../lib/constants"));
43
+ const exposes = __importStar(require("../lib/exposes"));
44
+ const modernExtend_1 = require("../lib/modernExtend");
45
+ const reporting = __importStar(require("../lib/reporting"));
46
+ const utils = __importStar(require("../lib/utils"));
47
+ const utils_1 = require("../lib/utils");
48
+ const e = exposes.presets;
49
+ const ea = exposes.access;
50
+ const manuSinope = { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SINOPE_TECHNOLOGIES };
51
+ const fzLocal = {
52
+ ias_water_leak_alarm: {
53
+ // RM3500ZB specific
54
+ cluster: 'ssIasZone',
55
+ type: ['commandStatusChangeNotification', 'attributeReport', 'readResponse'],
56
+ convert: (model, msg, publish, options, meta) => {
57
+ const zoneStatus = msg.data.zoneStatus;
58
+ return {
59
+ water_leak: (zoneStatus & 1) > 0,
60
+ tamper: (zoneStatus & (1 << 2)) > 0,
61
+ };
62
+ },
63
+ },
64
+ thermostat: {
65
+ cluster: 'hvacThermostat',
66
+ type: ['attributeReport', 'readResponse'],
67
+ convert: (model, msg, publish, options, meta) => {
68
+ // @ts-expect-error ignore
69
+ delete msg['running_state'];
70
+ const result = {};
71
+ const occupancyLookup = { 0: 'unoccupied', 1: 'occupied' };
72
+ const cycleOutputLookup = { 15: '15_sec', 300: '5_min', 600: '10_min', 900: '15_min', 1200: '20_min', 1800: '30_min', 65535: 'off' };
73
+ if (msg.data['1024'] !== undefined) {
74
+ result.thermostat_occupancy = utils.getFromLookup(msg.data['1024'], occupancyLookup);
75
+ }
76
+ if (msg.data.SinopeOccupancy !== undefined) {
77
+ result.thermostat_occupancy = utils.getFromLookup(msg.data['SinopeOccupancy'], occupancyLookup);
78
+ }
79
+ if (msg.data['1025'] !== undefined) {
80
+ result.main_cycle_output = utils.getFromLookup(msg.data['1025'], cycleOutputLookup);
81
+ }
82
+ if (msg.data.SinopeMainCycleOutput !== undefined) {
83
+ result.main_cycle_output = utils.getFromLookup(msg.data['SinopeMainCycleOutput'], cycleOutputLookup);
84
+ }
85
+ if (msg.data['1026'] !== undefined) {
86
+ const lookup = { 0: 'on_demand', 1: 'sensing' };
87
+ result.backlight_auto_dim = utils.getFromLookup(msg.data['1026'], lookup);
88
+ }
89
+ if (msg.data.SinopeBacklight !== undefined) {
90
+ const lookup = { 0: 'on_demand', 1: 'sensing' };
91
+ result.backlight_auto_dim = utils.getFromLookup(msg.data['SinopeBacklight'], lookup);
92
+ }
93
+ if (msg.data['1028'] !== undefined) {
94
+ result.aux_cycle_output = utils.getFromLookup(msg.data['1028'], cycleOutputLookup);
95
+ }
96
+ if (msg.data.localTemp !== undefined) {
97
+ result.local_temperature = (0, utils_1.precisionRound)(msg.data['localTemp'], 2) / 100;
98
+ }
99
+ if (msg.data.localTemperatureCalibration !== undefined) {
100
+ result.local_temperature_calibration = (0, utils_1.precisionRound)(msg.data['localTemperatureCalibration'], 2) / 10;
101
+ }
102
+ if (msg.data.outdoorTemp !== undefined) {
103
+ result.outdoor_temperature = (0, utils_1.precisionRound)(msg.data['outdoorTemp'], 2) / 100;
104
+ }
105
+ if (msg.data.occupiedHeatingSetpoint !== undefined) {
106
+ result.occupied_heating_setpoint = (0, utils_1.precisionRound)(msg.data['occupiedHeatingSetpoint'], 2) / 100;
107
+ }
108
+ if (msg.data.unoccupiedHeatingSetpoint !== undefined) {
109
+ result.unoccupied_heating_setpoint = (0, utils_1.precisionRound)(msg.data['unoccupiedHeatingSetpoint'], 2) / 100;
110
+ }
111
+ if (msg.data.occupiedCoolingSetpoint !== undefined) {
112
+ result.occupied_cooling_setpoint = (0, utils_1.precisionRound)(msg.data['occupiedCoolingSetpoint'], 2) / 100;
113
+ }
114
+ if (msg.data.unoccupiedCoolingSetpoint !== undefined) {
115
+ result.unoccupied_cooling_setpoint = (0, utils_1.precisionRound)(msg.data['unoccupiedCoolingSetpoint'], 2) / 100;
116
+ }
117
+ if (msg.data.ctrlSeqeOfOper !== undefined) {
118
+ result.control_sequence_of_operation = constants.thermostatControlSequenceOfOperations[msg.data['ctrlSeqeOfOper']];
119
+ }
120
+ if (msg.data.systemMode !== undefined) {
121
+ result.system_mode = constants.thermostatSystemModes[msg.data['systemMode']];
122
+ }
123
+ if (msg.data.pIHeatingDemand !== undefined) {
124
+ result.pi_heating_demand = (0, utils_1.precisionRound)(msg.data['pIHeatingDemand'], 0);
125
+ }
126
+ if (msg.data.minHeatSetpointLimit !== undefined) {
127
+ result.min_heat_setpoint_limit = (0, utils_1.precisionRound)(msg.data['minHeatSetpointLimit'], 2) / 100;
128
+ }
129
+ if (msg.data.maxHeatSetpointLimit !== undefined) {
130
+ result.max_heat_setpoint_limit = (0, utils_1.precisionRound)(msg.data['maxHeatSetpointLimit'], 2) / 100;
131
+ }
132
+ if (msg.data.absMinHeatSetpointLimit !== undefined) {
133
+ result.abs_min_heat_setpoint_limit = (0, utils_1.precisionRound)(msg.data['absMinHeatSetpointLimit'], 2) / 100;
134
+ }
135
+ if (msg.data.absMaxHeatSetpointLimit !== undefined) {
136
+ result.abs_max_heat_setpoint_limit = (0, utils_1.precisionRound)(msg.data['absMaxHeatSetpointLimit'], 2) / 100;
137
+ }
138
+ if (msg.data.pIHeatingDemand !== undefined) {
139
+ result.running_state = msg.data['pIHeatingDemand'] >= 10 ? 'heat' : 'idle';
140
+ }
141
+ return result;
142
+ },
143
+ },
144
+ tank_level: {
145
+ cluster: 'genAnalogInput',
146
+ type: ['attributeReport', 'readResponse'],
147
+ convert: (model, msg, publish, options, meta) => {
148
+ const result = {};
149
+ if (msg.data.presentValue !== undefined) {
150
+ let x = msg.data['presentValue'];
151
+ if (x == -1) {
152
+ result.tank_level = 0;
153
+ }
154
+ else {
155
+ const xMin = 110;
156
+ const xMax = 406;
157
+ const delta = 46;
158
+ if (delta <= x && x <= 70) {
159
+ x = delta;
160
+ }
161
+ if (0 <= x && x <= delta) {
162
+ x = x + 360;
163
+ }
164
+ const y = (x - xMin) / (xMax - xMin);
165
+ const lowerLimit = 10;
166
+ const upperLimit = 80;
167
+ const valueRange = upperLimit - lowerLimit;
168
+ const pct = y * valueRange + lowerLimit;
169
+ result.tank_level = utils.precisionRound(pct, 2);
170
+ }
171
+ }
172
+ return result;
173
+ },
174
+ },
175
+ sinope: {
176
+ cluster: 'manuSpecificSinope',
177
+ type: ['attributeReport', 'readResponse'],
178
+ convert: (model, msg, publish, options, meta) => {
179
+ const result = {};
180
+ if (msg.data.GFCiStatus !== undefined) {
181
+ const lookup = { 0: 'off', 1: 'on' };
182
+ result.gfci_status = utils.getFromLookup(msg.data['GFCiStatus'], lookup);
183
+ }
184
+ if (msg.data.floorLimitStatus !== undefined) {
185
+ const lookup = { 0: 'off', 1: 'on' };
186
+ result.floor_limit_status = utils.getFromLookup(msg.data['floorLimitStatus'], lookup);
187
+ }
188
+ if (msg.data.secondScreenBehavior !== undefined) {
189
+ const lookup = { 0: 'auto', 1: 'setpoint', 2: 'outdoor temp' };
190
+ result.second_display_mode = utils.getFromLookup(msg.data['secondScreenBehavior'], lookup);
191
+ }
192
+ if (msg.data.outdoorTempToDisplayTimeout !== undefined) {
193
+ result.outdoor_temperature_timeout = msg.data['outdoorTempToDisplayTimeout'];
194
+ // DEPRECATED: Use Second Display Mode or control via set outdoorTempToDisplayTimeout
195
+ result.enable_outdoor_temperature = msg.data['outdoorTempToDisplayTimeout'] === 12 ? 'OFF' : 'ON';
196
+ }
197
+ if (msg.data.outdoorTempToDisplay !== undefined) {
198
+ result.thermostat_outdoor_temperature = (0, utils_1.precisionRound)(msg.data['outdoorTempToDisplay'], 2) / 100;
199
+ }
200
+ if (msg.data.currentTimeToDisplay !== undefined) {
201
+ result.current_time_to_display = msg.data['currentTimeToDisplay'];
202
+ }
203
+ if (msg.data.floorControlMode !== undefined) {
204
+ const lookup = { 1: 'ambiant', 2: 'floor' };
205
+ result.floor_control_mode = utils.getFromLookup(msg.data['floorControlMode'], lookup);
206
+ }
207
+ if (msg.data.ambiantMaxHeatSetpointLimit !== undefined) {
208
+ result.ambiant_max_heat_setpoint = msg.data['ambiantMaxHeatSetpointLimit'] / 100.0;
209
+ if (result.ambiant_max_heat_setpoint === -327.68) {
210
+ result.ambiant_max_heat_setpoint = 'off';
211
+ }
212
+ }
213
+ if (msg.data.floorMinHeatSetpointLimit !== undefined) {
214
+ result.floor_min_heat_setpoint = msg.data['floorMinHeatSetpointLimit'] / 100.0;
215
+ if (result.floor_min_heat_setpoint === -327.68) {
216
+ result.floor_min_heat_setpoint = 'off';
217
+ }
218
+ }
219
+ if (msg.data.floorMaxHeatSetpointLimit !== undefined) {
220
+ result.floor_max_heat_setpoint = msg.data['floorMaxHeatSetpointLimit'] / 100.0;
221
+ if (result.floor_max_heat_setpoint === -327.68) {
222
+ result.floor_max_heat_setpoint = 'off';
223
+ }
224
+ }
225
+ if (msg.data.temperatureSensor !== undefined) {
226
+ const lookup = { 0: '10k', 1: '12k' };
227
+ result.floor_temperature_sensor = utils.getFromLookup(msg.data['temperatureSensor'], lookup);
228
+ }
229
+ if (msg.data.timeFormatToDisplay !== undefined) {
230
+ const lookup = { 0: '24h', 1: '12h' };
231
+ result.time_format = utils.getFromLookup(msg.data['timeFormatToDisplay'], lookup);
232
+ }
233
+ if (msg.data.connectedLoad !== undefined) {
234
+ result.connected_load = msg.data['connectedLoad'];
235
+ }
236
+ if (msg.data.auxConnectedLoad !== undefined) {
237
+ result.aux_connected_load = msg.data['auxConnectedLoad'];
238
+ if (result.aux_connected_load == 65535) {
239
+ result.aux_connected_load = 'disabled';
240
+ }
241
+ }
242
+ if (msg.data.pumpProtection !== undefined) {
243
+ result.pump_protection = msg.data['pumpProtection'] == 1 ? 'ON' : 'OFF';
244
+ }
245
+ if (msg.data.dimmerTimmer !== undefined) {
246
+ result.timer_seconds = msg.data['dimmerTimmer'];
247
+ }
248
+ if (msg.data.ledIntensityOn !== undefined) {
249
+ result.led_intensity_on = msg.data['ledIntensityOn'];
250
+ }
251
+ if (msg.data.ledIntensityOff !== undefined) {
252
+ result.led_intensity_off = msg.data['ledIntensityOff'];
253
+ }
254
+ if (msg.data.minimumBrightness !== undefined) {
255
+ result.minimum_brightness = msg.data['minimumBrightness'];
256
+ }
257
+ if (msg.data.actionReport !== undefined) {
258
+ const lookup = {
259
+ 1: 'up_clickdown',
260
+ 2: 'up_single',
261
+ 3: 'up_hold',
262
+ 4: 'up_double',
263
+ 17: 'down_clickdown',
264
+ 18: 'down_single',
265
+ 19: 'down_hold',
266
+ 20: 'down_double',
267
+ };
268
+ result.action = utils.getFromLookup(msg.data['actionReport'], lookup);
269
+ }
270
+ if (msg.data.keypadLockout !== undefined) {
271
+ const lookup = { 0: 'unlock', 1: 'lock' };
272
+ result.keypad_lockout = utils.getFromLookup(msg.data['keypadLockout'], lookup);
273
+ }
274
+ if (msg.data.drConfigWaterTempMin !== undefined) {
275
+ result.low_water_temp_protection = msg.data['drConfigWaterTempMin'];
276
+ }
277
+ return result;
278
+ },
279
+ },
280
+ };
281
+ const tzLocal = {
282
+ thermostat_occupancy: {
283
+ key: ['thermostat_occupancy'],
284
+ convertSet: async (entity, key, value, meta) => {
285
+ const sinopeOccupancy = { 0: 'unoccupied', 1: 'occupied' };
286
+ const SinopeOccupancy = utils.getKey(sinopeOccupancy, value, value, Number);
287
+ await entity.write('hvacThermostat', { SinopeOccupancy }, manuSinope);
288
+ return { state: { thermostat_occupancy: value } };
289
+ },
290
+ convertGet: async (entity, key, meta) => {
291
+ await entity.read('hvacThermostat', ['SinopeOccupancy'], manuSinope);
292
+ },
293
+ },
294
+ backlight_autodim: {
295
+ key: ['backlight_auto_dim'],
296
+ convertSet: async (entity, key, value, meta) => {
297
+ const sinopeBacklightParam = { 0: 'on_demand', 1: 'sensing' };
298
+ const SinopeBacklight = utils.getKey(sinopeBacklightParam, value, value, Number);
299
+ await entity.write('hvacThermostat', { SinopeBacklight }, manuSinope);
300
+ return { state: { backlight_auto_dim: value } };
301
+ },
302
+ convertGet: async (entity, key, meta) => {
303
+ await entity.read('hvacThermostat', ['SinopeBacklight'], manuSinope);
304
+ },
305
+ },
306
+ main_cycle_output: {
307
+ key: ['main_cycle_output'],
308
+ convertSet: async (entity, key, value, meta) => {
309
+ const lookup = { '15_sec': 15, '5_min': 300, '10_min': 600, '15_min': 900, '20_min': 1200, '30_min': 1800 };
310
+ await entity.write('hvacThermostat', { SinopeMainCycleOutput: utils.getFromLookup(value, lookup) }, manuSinope);
311
+ return { state: { main_cycle_output: value } };
312
+ },
313
+ convertGet: async (entity, key, meta) => {
314
+ await entity.read('hvacThermostat', ['SinopeMainCycleOutput'], manuSinope);
315
+ },
316
+ },
317
+ aux_cycle_output: {
318
+ // TH1400ZB specific
319
+ key: ['aux_cycle_output'],
320
+ convertSet: async (entity, key, value, meta) => {
321
+ const lookup = { off: 65535, '15_sec': 15, '5_min': 300, '10_min': 600, '15_min': 900, '20_min': 1200, '30_min': 1800 };
322
+ await entity.write('hvacThermostat', { SinopeAuxCycleOutput: utils.getFromLookup(value, lookup) });
323
+ return { state: { aux_cycle_output: value } };
324
+ },
325
+ convertGet: async (entity, key, meta) => {
326
+ await entity.read('hvacThermostat', ['SinopeAuxCycleOutput']);
327
+ },
328
+ },
329
+ enable_outdoor_temperature: {
330
+ // DEPRECATED: Use Second Display Mode or control via the timeout
331
+ key: ['enable_outdoor_temperature'],
332
+ convertSet: async (entity, key, value, meta) => {
333
+ utils.assertString(value);
334
+ if (value.toLowerCase() == 'on') {
335
+ await entity.write('manuSpecificSinope', { outdoorTempToDisplayTimeout: 10800 }, manuSinope);
336
+ }
337
+ else if (value.toLowerCase() == 'off') {
338
+ // set timer to 12 sec in order to disable outdoor temperature
339
+ await entity.write('manuSpecificSinope', { outdoorTempToDisplayTimeout: 12 }, manuSinope);
340
+ }
341
+ return { state: { enable_outdoor_temperature: value } };
342
+ },
343
+ convertGet: async (entity, key, meta) => {
344
+ await entity.read('manuSpecificSinope', ['outdoorTempToDisplayTimeout'], manuSinope);
345
+ },
346
+ },
347
+ second_display_mode: {
348
+ key: ['second_display_mode'],
349
+ convertSet: async (entity, key, value, meta) => {
350
+ const lookup = { auto: 0, setpoint: 1, 'outdoor temp': 2 };
351
+ await entity.write('manuSpecificSinope', { secondScreenBehavior: utils.getFromLookup(value, lookup) });
352
+ return { state: { second_display_mode: value } };
353
+ },
354
+ convertGet: async (entity, key, meta) => {
355
+ await entity.read('manuSpecificSinope', ['secondScreenBehavior']);
356
+ },
357
+ },
358
+ thermostat_outdoor_temperature: {
359
+ key: ['thermostat_outdoor_temperature'],
360
+ convertSet: async (entity, key, value, meta) => {
361
+ const number = utils.toNumber(value);
362
+ if (number >= -99.5 && number <= 99.5) {
363
+ await entity.write('manuSpecificSinope', { outdoorTempToDisplay: number * 100 }, manuSinope);
364
+ }
365
+ return { state: { thermostat_outdoor_temperature: number } };
366
+ },
367
+ convertGet: async (entity, key, meta) => {
368
+ await entity.read('manuSpecificSinope', ['outdoorTempToDisplay'], manuSinope);
369
+ },
370
+ },
371
+ outdoor_temperature_timeout: {
372
+ key: ['outdoor_temperature_timeout'],
373
+ convertSet: async (entity, key, value, meta) => {
374
+ const number = utils.toNumber(value);
375
+ if (number >= 30 && number <= 64800) {
376
+ await entity.write('manuSpecificSinope', { outdoorTempToDisplayTimeout: number });
377
+ return { state: { outdoor_temperature_timeout: number } };
378
+ }
379
+ },
380
+ convertGet: async (entity, key, meta) => {
381
+ await entity.read('manuSpecificSinope', ['outdoorTempToDisplayTimeout']);
382
+ },
383
+ },
384
+ thermostat_time: {
385
+ key: ['thermostat_time'],
386
+ convertSet: async (entity, key, value, meta) => {
387
+ if (value === '') {
388
+ const thermostatDate = new Date();
389
+ const thermostatTimeSec = thermostatDate.getTime() / 1000;
390
+ const thermostatTimezoneOffsetSec = thermostatDate.getTimezoneOffset() * 60;
391
+ const currentTimeToDisplay = Math.round(thermostatTimeSec - thermostatTimezoneOffsetSec - 946684800);
392
+ await entity.write('manuSpecificSinope', { currentTimeToDisplay }, manuSinope);
393
+ }
394
+ else if (value !== '') {
395
+ await entity.write('manuSpecificSinope', { currentTimeToDisplay: value }, manuSinope);
396
+ }
397
+ },
398
+ },
399
+ floor_control_mode: {
400
+ // TH1300ZB and TH1400ZB specific
401
+ key: ['floor_control_mode'],
402
+ convertSet: async (entity, key, value, meta) => {
403
+ if (typeof value !== 'string') {
404
+ return;
405
+ }
406
+ const lookup = { ambiant: 1, floor: 2 };
407
+ value = value.toLowerCase();
408
+ // @ts-expect-error ignore
409
+ if (lookup[value] !== undefined) {
410
+ await entity.write('manuSpecificSinope', { floorControlMode: utils.getFromLookup(value, lookup) });
411
+ }
412
+ return { state: { floor_control_mode: value } };
413
+ },
414
+ convertGet: async (entity, key, meta) => {
415
+ await entity.read('manuSpecificSinope', ['floorControlMode']);
416
+ },
417
+ },
418
+ ambiant_max_heat_setpoint: {
419
+ // TH1300ZB and TH1400ZB specific
420
+ key: ['ambiant_max_heat_setpoint'],
421
+ convertSet: async (entity, key, value, meta) => {
422
+ // @ts-expect-error ignore
423
+ if ((value >= 5 && value <= 36) || value == 'off') {
424
+ // @ts-expect-error ignore
425
+ await entity.write('manuSpecificSinope', { ambiantMaxHeatSetpointLimit: value == 'off' ? -32768 : value * 100 });
426
+ return { state: { ambiant_max_heat_setpoint: value } };
427
+ }
428
+ },
429
+ convertGet: async (entity, key, meta) => {
430
+ await entity.read('manuSpecificSinope', ['ambiantMaxHeatSetpointLimit']);
431
+ },
432
+ },
433
+ floor_min_heat_setpoint: {
434
+ // TH1300ZB and TH1400ZB specific
435
+ key: ['floor_min_heat_setpoint'],
436
+ convertSet: async (entity, key, value, meta) => {
437
+ // @ts-expect-error ignore
438
+ if ((value >= 5 && value <= 34) || value == 'off') {
439
+ // @ts-expect-error ignore
440
+ await entity.write('manuSpecificSinope', { floorMinHeatSetpointLimit: value == 'off' ? -32768 : value * 100 });
441
+ return { state: { floor_min_heat_setpoint: value } };
442
+ }
443
+ },
444
+ convertGet: async (entity, key, meta) => {
445
+ await entity.read('manuSpecificSinope', ['floorMinHeatSetpointLimit']);
446
+ },
447
+ },
448
+ floor_max_heat_setpoint: {
449
+ // TH1300ZB and TH1400ZB specific
450
+ key: ['floor_max_heat_setpoint'],
451
+ convertSet: async (entity, key, value, meta) => {
452
+ // @ts-expect-error ignore
453
+ if ((value >= 7 && value <= 36) || value == 'off') {
454
+ // @ts-expect-error ignore
455
+ await entity.write('manuSpecificSinope', { floorMaxHeatSetpointLimit: value == 'off' ? -32768 : value * 100 });
456
+ return { state: { floor_max_heat_setpoint: value } };
457
+ }
458
+ },
459
+ convertGet: async (entity, key, meta) => {
460
+ await entity.read('manuSpecificSinope', ['floorMaxHeatSetpointLimit']);
461
+ },
462
+ },
463
+ temperature_sensor: {
464
+ // TH1300ZB and TH1400ZB specific
465
+ key: ['floor_temperature_sensor'],
466
+ convertSet: async (entity, key, value, meta) => {
467
+ if (typeof value !== 'string') {
468
+ return;
469
+ }
470
+ const lookup = { '10k': 0, '12k': 1 };
471
+ value = value.toLowerCase();
472
+ // @ts-expect-error ignore
473
+ if (lookup[value] !== undefined) {
474
+ await entity.write('manuSpecificSinope', { temperatureSensor: utils.getFromLookup(value, lookup) });
475
+ }
476
+ return { state: { floor_temperature_sensor: value } };
477
+ },
478
+ convertGet: async (entity, key, meta) => {
479
+ await entity.read('manuSpecificSinope', ['temperatureSensor']);
480
+ },
481
+ },
482
+ time_format: {
483
+ key: ['time_format'],
484
+ convertSet: async (entity, key, value, meta) => {
485
+ await entity.write('manuSpecificSinope', { timeFormatToDisplay: utils.getFromLookup(value, { '24h': 0, '12h': 1 }) }, manuSinope);
486
+ return { state: { time_format: value } };
487
+ },
488
+ convertGet: async (entity, key, meta) => {
489
+ await entity.read('manuSpecificSinope', ['timeFormatToDisplay'], manuSinope);
490
+ },
491
+ },
492
+ connected_load: {
493
+ // TH1400ZB and SW2500ZB
494
+ key: ['connected_load'],
495
+ convertSet: async (entity, key, value, meta) => {
496
+ await entity.write('manuSpecificSinope', { connectedLoad: value });
497
+ return { state: { connected_load: value } };
498
+ },
499
+ convertGet: async (entity, key, meta) => {
500
+ await entity.read('manuSpecificSinope', ['connectedLoad']);
501
+ },
502
+ },
503
+ aux_connected_load: {
504
+ // TH1400ZB specific
505
+ key: ['aux_connected_load'],
506
+ convertSet: async (entity, key, value, meta) => {
507
+ await entity.write('manuSpecificSinope', { auxConnectedLoad: value });
508
+ return { state: { aux_connected_load: value } };
509
+ },
510
+ convertGet: async (entity, key, meta) => {
511
+ await entity.read('manuSpecificSinope', ['auxConnectedLoad']);
512
+ },
513
+ },
514
+ pump_protection: {
515
+ // TH1400ZB specific
516
+ key: ['pump_protection'],
517
+ convertSet: async (entity, key, value, meta) => {
518
+ utils.assertString(value);
519
+ if (value.toLowerCase() == 'on') {
520
+ await entity.write('manuSpecificSinope', { pumpProtection: 1 });
521
+ }
522
+ else if (value.toLowerCase() == 'off') {
523
+ await entity.write('manuSpecificSinope', { pumpProtection: 255 });
524
+ }
525
+ return { state: { pump_protection: value } };
526
+ },
527
+ convertGet: async (entity, key, meta) => {
528
+ await entity.read('manuSpecificSinope', ['pumpProtection']);
529
+ },
530
+ },
531
+ led_intensity_on: {
532
+ // DM25x0ZB and SW2500ZB
533
+ key: ['led_intensity_on'],
534
+ convertSet: async (entity, key, value, meta) => {
535
+ const number = utils.toNumber(value);
536
+ if (number >= 0 && number <= 100) {
537
+ await entity.write('manuSpecificSinope', { ledIntensityOn: number });
538
+ }
539
+ return { state: { led_intensity_on: number } };
540
+ },
541
+ convertGet: async (entity, key, meta) => {
542
+ await entity.read('manuSpecificSinope', ['ledIntensityOn']);
543
+ },
544
+ },
545
+ led_intensity_off: {
546
+ // DM25x0ZB and SW2500ZB
547
+ key: ['led_intensity_off'],
548
+ convertSet: async (entity, key, value, meta) => {
549
+ const number = utils.toNumber(value);
550
+ if (number >= 0 && number <= 100) {
551
+ await entity.write('manuSpecificSinope', { ledIntensityOff: number });
552
+ }
553
+ return { state: { led_intensity_off: number } };
554
+ },
555
+ convertGet: async (entity, key, meta) => {
556
+ await entity.read('manuSpecificSinope', ['ledIntensityOff']);
557
+ },
558
+ },
559
+ led_color_on: {
560
+ // DM25x0ZB and SW2500ZB
561
+ key: ['led_color_on'],
562
+ convertSet: async (entity, key, value, meta) => {
563
+ const r = value.r >= 0 && value.r <= 255 ? value.r : 0;
564
+ const g = value.g >= 0 && value.g <= 255 ? value.g : 0;
565
+ const b = value.b >= 0 && value.b <= 255 ? value.b : 0;
566
+ const valueHex = r + g * 256 + b * 256 ** 2;
567
+ await entity.write('manuSpecificSinope', { ledColorOn: valueHex });
568
+ },
569
+ },
570
+ led_color_off: {
571
+ // DM25x0ZB and SW2500ZB
572
+ key: ['led_color_off'],
573
+ convertSet: async (entity, key, value, meta) => {
574
+ const r = value.r >= 0 && value.r <= 255 ? value.r : 0;
575
+ const g = value.g >= 0 && value.g <= 255 ? value.g : 0;
576
+ const b = value.b >= 0 && value.b <= 255 ? value.b : 0;
577
+ const valueHex = r + g * 256 + b * 256 ** 2;
578
+ await entity.write('manuSpecificSinope', { ledColorOff: valueHex });
579
+ },
580
+ },
581
+ minimum_brightness: {
582
+ // DM25x0ZB
583
+ key: ['minimum_brightness'],
584
+ convertSet: async (entity, key, value, meta) => {
585
+ const number = utils.toNumber(value);
586
+ if (number >= 0 && number <= 3000) {
587
+ await entity.write('manuSpecificSinope', { minimumBrightness: number });
588
+ }
589
+ return { state: { minimumBrightness: number } };
590
+ },
591
+ convertGet: async (entity, key, meta) => {
592
+ await entity.read('manuSpecificSinope', ['minimumBrightness']);
593
+ },
594
+ },
595
+ timer_seconds: {
596
+ // DM25x0ZB and SW2500ZB
597
+ key: ['timer_seconds'],
598
+ convertSet: async (entity, key, value, meta) => {
599
+ const number = utils.toNumber(value);
600
+ if (number >= 0 && number <= 65535) {
601
+ await entity.write('manuSpecificSinope', { dimmerTimmer: number });
602
+ }
603
+ return { state: { timer_seconds: number } };
604
+ },
605
+ convertGet: async (entity, key, meta) => {
606
+ await entity.read('manuSpecificSinope', ['dimmerTimmer']);
607
+ },
608
+ },
609
+ keypad_lockout: {
610
+ // SW2500ZB
611
+ key: ['keypad_lockout'],
612
+ convertSet: async (entity, key, value, meta) => {
613
+ const lookup = { unlock: 0, lock: 1 };
614
+ await entity.write('manuSpecificSinope', { keypadLockout: utils.getFromLookup(value, lookup) });
615
+ return { state: { keypad_lockout: value } };
616
+ },
617
+ convertGet: async (entity, key, meta) => {
618
+ await entity.read('manuSpecificSinope', ['keypadLockout']);
619
+ },
620
+ },
621
+ low_water_temp_protection: {
622
+ // RM3500ZB specific
623
+ key: ['low_water_temp_protection'],
624
+ convertSet: async (entity, key, value, meta) => {
625
+ await entity.write('manuSpecificSinope', { drConfigWaterTempMin: value });
626
+ return { state: { low_water_temp_protection: value } };
627
+ },
628
+ convertGet: async (entity, key, meta) => {
629
+ await entity.read('manuSpecificSinope', ['drConfigWaterTempMin']);
630
+ },
631
+ },
632
+ };
633
+ const definitions = [
634
+ {
635
+ zigbeeModel: ['TH1123ZB'],
636
+ model: 'TH1123ZB',
637
+ vendor: 'Sinopé',
638
+ description: 'Zigbee line volt thermostat',
639
+ extend: [(0, modernExtend_1.electricityMeter)()],
640
+ fromZigbee: [fzLocal.thermostat, fzLocal.sinope, fromZigbee_1.default.hvac_user_interface, fromZigbee_1.default.ignore_temperature_report],
641
+ toZigbee: [
642
+ toZigbee_1.default.thermostat_local_temperature,
643
+ toZigbee_1.default.thermostat_occupied_heating_setpoint,
644
+ toZigbee_1.default.thermostat_unoccupied_heating_setpoint,
645
+ toZigbee_1.default.thermostat_temperature_display_mode,
646
+ toZigbee_1.default.thermostat_keypad_lockout,
647
+ toZigbee_1.default.thermostat_system_mode,
648
+ tzLocal.backlight_autodim,
649
+ tzLocal.thermostat_time,
650
+ tzLocal.time_format,
651
+ tzLocal.enable_outdoor_temperature,
652
+ tzLocal.second_display_mode,
653
+ tzLocal.thermostat_outdoor_temperature,
654
+ tzLocal.outdoor_temperature_timeout,
655
+ tzLocal.thermostat_occupancy,
656
+ tzLocal.main_cycle_output,
657
+ ],
658
+ exposes: [
659
+ e
660
+ .climate()
661
+ .withSetpoint('occupied_heating_setpoint', 5, 30, 0.5)
662
+ .withSetpoint('unoccupied_heating_setpoint', 5, 30, 0.5)
663
+ .withLocalTemperature()
664
+ .withSystemMode(['off', 'heat'], ea.ALL, 'Mode of the thermostat')
665
+ .withPiHeatingDemand()
666
+ .withRunningState(['idle', 'heat'], ea.STATE),
667
+ e.enum('thermostat_occupancy', ea.ALL, ['unoccupied', 'occupied']).withDescription('Occupancy state of the thermostat'),
668
+ e
669
+ .enum('second_display_mode', ea.ALL, ['auto', 'setpoint', 'outdoor temp'])
670
+ .withDescription('Displays the outdoor temperature and then returns to the set point in "auto" mode, or clears ' +
671
+ 'in "outdoor temp" mode when expired.'),
672
+ e
673
+ .numeric('thermostat_outdoor_temperature', ea.ALL)
674
+ .withUnit('°C')
675
+ .withValueMin(-99.5)
676
+ .withValueMax(99.5)
677
+ .withValueStep(0.5)
678
+ .withDescription('Outdoor temperature for the secondary display'),
679
+ e
680
+ .numeric('outdoor_temperature_timeout', ea.ALL)
681
+ .withUnit('s')
682
+ .withValueMin(30)
683
+ .withValueMax(64800)
684
+ .withPreset('15 min', 900, '15 minutes')
685
+ .withPreset('30 min', 1800, '30 minutes')
686
+ .withPreset('1 hour', 3600, '1 hour')
687
+ .withDescription('Time in seconds after which the outdoor temperature is considered to have expired'),
688
+ e
689
+ .binary('enable_outdoor_temperature', ea.ALL, 'ON', 'OFF')
690
+ .withDescription('DEPRECATED: Use second_display_mode or control via outdoor_temperature_timeout'),
691
+ e
692
+ .enum('temperature_display_mode', ea.ALL, ['celsius', 'fahrenheit'])
693
+ .withDescription('The temperature format displayed on the thermostat screen'),
694
+ e.enum('time_format', ea.ALL, ['24h', '12h']).withDescription('The time format featured on the thermostat display'),
695
+ e.enum('backlight_auto_dim', ea.ALL, ['on_demand', 'sensing']).withDescription('Control backlight dimming behavior'),
696
+ e.enum('keypad_lockout', ea.ALL, ['unlock', 'lock1']).withDescription('Enables or disables the device’s buttons'),
697
+ e.enum('main_cycle_output', ea.ALL, ['15_sec', '15_min']).withDescription('The length of the control cycle: 15_sec=normal 15_min=fan'),
698
+ ],
699
+ configure: async (device, coordinatorEndpoint) => {
700
+ const endpoint = device.getEndpoint(1);
701
+ const binds = [
702
+ 'genBasic',
703
+ 'genIdentify',
704
+ 'genGroups',
705
+ 'hvacThermostat',
706
+ 'hvacUserInterfaceCfg',
707
+ 'msTemperatureMeasurement',
708
+ 'manuSpecificSinope',
709
+ ];
710
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
711
+ await reporting.thermostatTemperature(endpoint);
712
+ await reporting.thermostatPIHeatingDemand(endpoint);
713
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
714
+ await reporting.temperature(endpoint, { min: 1, max: 0xffff }); // Disable default reporting
715
+ await endpoint.configureReporting('msTemperatureMeasurement', [
716
+ {
717
+ attribute: 'tolerance',
718
+ minimumReportInterval: 1,
719
+ maximumReportInterval: 0xffff,
720
+ reportableChange: 1,
721
+ },
722
+ ]);
723
+ try {
724
+ await reporting.thermostatSystemMode(endpoint);
725
+ }
726
+ catch {
727
+ /* Not all support this */
728
+ }
729
+ },
730
+ },
731
+ {
732
+ zigbeeModel: ['TH1124ZB'],
733
+ model: 'TH1124ZB',
734
+ vendor: 'Sinopé',
735
+ description: 'Zigbee line volt thermostat',
736
+ extend: [(0, modernExtend_1.electricityMeter)()],
737
+ fromZigbee: [fzLocal.thermostat, fzLocal.sinope, fromZigbee_1.default.hvac_user_interface, fromZigbee_1.default.ignore_temperature_report],
738
+ toZigbee: [
739
+ toZigbee_1.default.thermostat_local_temperature,
740
+ toZigbee_1.default.thermostat_occupied_heating_setpoint,
741
+ toZigbee_1.default.thermostat_unoccupied_heating_setpoint,
742
+ toZigbee_1.default.thermostat_temperature_display_mode,
743
+ toZigbee_1.default.thermostat_keypad_lockout,
744
+ toZigbee_1.default.thermostat_system_mode,
745
+ tzLocal.backlight_autodim,
746
+ tzLocal.thermostat_time,
747
+ tzLocal.time_format,
748
+ tzLocal.enable_outdoor_temperature,
749
+ tzLocal.second_display_mode,
750
+ tzLocal.thermostat_outdoor_temperature,
751
+ tzLocal.outdoor_temperature_timeout,
752
+ tzLocal.thermostat_occupancy,
753
+ tzLocal.main_cycle_output,
754
+ ],
755
+ exposes: [
756
+ e
757
+ .climate()
758
+ .withSetpoint('occupied_heating_setpoint', 5, 30, 0.5)
759
+ .withSetpoint('unoccupied_heating_setpoint', 5, 30, 0.5)
760
+ .withLocalTemperature()
761
+ .withSystemMode(['off', 'heat'], ea.ALL, 'Mode of the thermostat')
762
+ .withPiHeatingDemand()
763
+ .withRunningState(['idle', 'heat'], ea.STATE),
764
+ e.enum('thermostat_occupancy', ea.ALL, ['unoccupied', 'occupied']).withDescription('Occupancy state of the thermostat'),
765
+ e
766
+ .enum('second_display_mode', ea.ALL, ['auto', 'setpoint', 'outdoor temp'])
767
+ .withDescription('Displays the outdoor temperature and then returns to the set point in "auto" mode, or clears ' +
768
+ 'in "outdoor temp" mode when expired.'),
769
+ e
770
+ .numeric('thermostat_outdoor_temperature', ea.ALL)
771
+ .withUnit('°C')
772
+ .withValueMin(-99.5)
773
+ .withValueMax(99.5)
774
+ .withValueStep(0.5)
775
+ .withDescription('Outdoor temperature for the secondary display'),
776
+ e
777
+ .numeric('outdoor_temperature_timeout', ea.ALL)
778
+ .withUnit('s')
779
+ .withValueMin(30)
780
+ .withValueMax(64800)
781
+ .withPreset('15 min', 900, '15 minutes')
782
+ .withPreset('30 min', 1800, '30 minutes')
783
+ .withPreset('1 hour', 3600, '1 hour')
784
+ .withDescription('Time in seconds after which the outdoor temperature is considered to have expired'),
785
+ e
786
+ .binary('enable_outdoor_temperature', ea.ALL, 'ON', 'OFF')
787
+ .withDescription('DEPRECATED: Use second_display_mode or control via outdoor_temperature_timeout'),
788
+ e
789
+ .enum('temperature_display_mode', ea.ALL, ['celsius', 'fahrenheit'])
790
+ .withDescription('The temperature format displayed on the thermostat screen'),
791
+ e.enum('time_format', ea.ALL, ['24h', '12h']).withDescription('The time format featured on the thermostat display'),
792
+ e.enum('backlight_auto_dim', ea.ALL, ['on_demand', 'sensing']).withDescription('Control backlight dimming behavior'),
793
+ e.enum('keypad_lockout', ea.ALL, ['unlock', 'lock1']).withDescription('Enables or disables the device’s buttons'),
794
+ e.enum('main_cycle_output', ea.ALL, ['15_sec', '15_min']).withDescription('The length of the control cycle: 15_sec=normal 15_min=fan'),
795
+ ],
796
+ configure: async (device, coordinatorEndpoint) => {
797
+ const endpoint = device.getEndpoint(1);
798
+ const binds = [
799
+ 'genBasic',
800
+ 'genIdentify',
801
+ 'genGroups',
802
+ 'hvacThermostat',
803
+ 'hvacUserInterfaceCfg',
804
+ 'msTemperatureMeasurement',
805
+ 'manuSpecificSinope',
806
+ ];
807
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
808
+ await reporting.thermostatTemperature(endpoint);
809
+ await reporting.thermostatPIHeatingDemand(endpoint);
810
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
811
+ await reporting.temperature(endpoint, { min: 1, max: 0xffff }); // Disable default reporting
812
+ await endpoint.configureReporting('msTemperatureMeasurement', [
813
+ {
814
+ attribute: 'tolerance',
815
+ minimumReportInterval: 1,
816
+ maximumReportInterval: 0xffff,
817
+ reportableChange: 1,
818
+ },
819
+ ]);
820
+ try {
821
+ await reporting.thermostatSystemMode(endpoint);
822
+ }
823
+ catch {
824
+ /* Not all support this */
825
+ }
826
+ },
827
+ },
828
+ {
829
+ zigbeeModel: ['TH1123ZB-G2'],
830
+ model: 'TH1123ZB-G2',
831
+ vendor: 'Sinopé',
832
+ description: 'Zigbee line volt thermostat',
833
+ extend: [(0, modernExtend_1.electricityMeter)()],
834
+ fromZigbee: [fzLocal.thermostat, fzLocal.sinope, fromZigbee_1.default.hvac_user_interface, fromZigbee_1.default.ignore_temperature_report],
835
+ toZigbee: [
836
+ toZigbee_1.default.thermostat_local_temperature,
837
+ toZigbee_1.default.thermostat_occupied_heating_setpoint,
838
+ toZigbee_1.default.thermostat_unoccupied_heating_setpoint,
839
+ toZigbee_1.default.thermostat_temperature_display_mode,
840
+ toZigbee_1.default.thermostat_keypad_lockout,
841
+ toZigbee_1.default.thermostat_system_mode,
842
+ tzLocal.backlight_autodim,
843
+ tzLocal.thermostat_time,
844
+ tzLocal.time_format,
845
+ tzLocal.enable_outdoor_temperature,
846
+ tzLocal.second_display_mode,
847
+ tzLocal.thermostat_outdoor_temperature,
848
+ tzLocal.outdoor_temperature_timeout,
849
+ tzLocal.thermostat_occupancy,
850
+ tzLocal.main_cycle_output,
851
+ ],
852
+ exposes: [
853
+ e
854
+ .climate()
855
+ .withSetpoint('occupied_heating_setpoint', 5, 30, 0.5)
856
+ .withSetpoint('unoccupied_heating_setpoint', 5, 30, 0.5)
857
+ .withLocalTemperature()
858
+ .withSystemMode(['off', 'heat'], ea.ALL, 'Mode of the thermostat')
859
+ .withPiHeatingDemand()
860
+ .withRunningState(['idle', 'heat'], ea.STATE),
861
+ e.enum('thermostat_occupancy', ea.ALL, ['unoccupied', 'occupied']).withDescription('Occupancy state of the thermostat'),
862
+ e
863
+ .enum('second_display_mode', ea.ALL, ['auto', 'setpoint', 'outdoor temp'])
864
+ .withDescription('Displays the outdoor temperature and then returns to the set point in "auto" mode, or clears ' +
865
+ 'in "outdoor temp" mode when expired.'),
866
+ e
867
+ .numeric('thermostat_outdoor_temperature', ea.ALL)
868
+ .withUnit('°C')
869
+ .withValueMin(-99.5)
870
+ .withValueMax(99.5)
871
+ .withValueStep(0.5)
872
+ .withDescription('Outdoor temperature for the secondary display'),
873
+ e
874
+ .numeric('outdoor_temperature_timeout', ea.ALL)
875
+ .withUnit('s')
876
+ .withValueMin(30)
877
+ .withValueMax(64800)
878
+ .withPreset('15 min', 900, '15 minutes')
879
+ .withPreset('30 min', 1800, '30 minutes')
880
+ .withPreset('1 hour', 3600, '1 hour')
881
+ .withDescription('Time in seconds after which the outdoor temperature is considered to have expired'),
882
+ e
883
+ .binary('enable_outdoor_temperature', ea.ALL, 'ON', 'OFF')
884
+ .withDescription('DEPRECATED: Use second_display_mode or control via outdoor_temperature_timeout'),
885
+ e
886
+ .enum('temperature_display_mode', ea.ALL, ['celsius', 'fahrenheit'])
887
+ .withDescription('The temperature format displayed on the thermostat screen'),
888
+ e.enum('time_format', ea.ALL, ['24h', '12h']).withDescription('The time format featured on the thermostat display'),
889
+ e.enum('backlight_auto_dim', ea.ALL, ['on_demand', 'sensing']).withDescription('Control backlight dimming behavior'),
890
+ e.enum('keypad_lockout', ea.ALL, ['unlock', 'lock1']).withDescription('Enables or disables the device’s buttons'),
891
+ e.enum('main_cycle_output', ea.ALL, ['15_sec', '15_min']).withDescription('The length of the control cycle: 15_sec=normal 15_min=fan'),
892
+ ],
893
+ configure: async (device, coordinatorEndpoint) => {
894
+ const endpoint = device.getEndpoint(1);
895
+ const binds = [
896
+ 'genBasic',
897
+ 'genIdentify',
898
+ 'genGroups',
899
+ 'hvacThermostat',
900
+ 'hvacUserInterfaceCfg',
901
+ 'msTemperatureMeasurement',
902
+ 'manuSpecificSinope',
903
+ ];
904
+ await reporting.bind(endpoint, coordinatorEndpoint, binds); // This G2 version has limited memory space
905
+ const thermostatDate = new Date();
906
+ const thermostatTimeSec = thermostatDate.getTime() / 1000;
907
+ const thermostatTimezoneOffsetSec = thermostatDate.getTimezoneOffset() * 60;
908
+ const currentTimeToDisplay = Math.round(thermostatTimeSec - thermostatTimezoneOffsetSec - 946684800);
909
+ await endpoint.write('manuSpecificSinope', { currentTimeToDisplay }, manuSinope);
910
+ await endpoint.write('manuSpecificSinope', { secondScreenBehavior: 0 }, manuSinope); // Mode auto
911
+ await reporting.thermostatTemperature(endpoint);
912
+ await reporting.thermostatPIHeatingDemand(endpoint);
913
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
914
+ await reporting.thermostatSystemMode(endpoint);
915
+ await reporting.temperature(endpoint, { min: 1, max: 0xffff }); // Disable default reporting
916
+ await endpoint.configureReporting('msTemperatureMeasurement', [
917
+ {
918
+ attribute: 'tolerance',
919
+ minimumReportInterval: 1,
920
+ maximumReportInterval: 0xffff,
921
+ reportableChange: 1,
922
+ },
923
+ ]);
924
+ // Disable default reporting (not used by Sinope)
925
+ await reporting.thermostatRunningState(endpoint, { min: 1, max: 0xffff });
926
+ try {
927
+ await reporting.thermostatUnoccupiedHeatingSetpoint(endpoint);
928
+ }
929
+ catch {
930
+ /* Do nothing */
931
+ }
932
+ },
933
+ },
934
+ {
935
+ zigbeeModel: ['TH1124ZB-G2'],
936
+ model: 'TH1124ZB-G2',
937
+ vendor: 'Sinopé',
938
+ description: 'Zigbee line volt thermostat',
939
+ extend: [(0, modernExtend_1.electricityMeter)()],
940
+ fromZigbee: [fzLocal.thermostat, fzLocal.sinope, fromZigbee_1.default.hvac_user_interface, fromZigbee_1.default.ignore_temperature_report],
941
+ toZigbee: [
942
+ toZigbee_1.default.thermostat_local_temperature,
943
+ toZigbee_1.default.thermostat_occupied_heating_setpoint,
944
+ toZigbee_1.default.thermostat_unoccupied_heating_setpoint,
945
+ toZigbee_1.default.thermostat_temperature_display_mode,
946
+ toZigbee_1.default.thermostat_keypad_lockout,
947
+ toZigbee_1.default.thermostat_system_mode,
948
+ tzLocal.backlight_autodim,
949
+ tzLocal.thermostat_time,
950
+ tzLocal.time_format,
951
+ tzLocal.enable_outdoor_temperature,
952
+ tzLocal.second_display_mode,
953
+ tzLocal.thermostat_outdoor_temperature,
954
+ tzLocal.outdoor_temperature_timeout,
955
+ tzLocal.thermostat_occupancy,
956
+ tzLocal.main_cycle_output,
957
+ ],
958
+ exposes: [
959
+ e
960
+ .climate()
961
+ .withSetpoint('occupied_heating_setpoint', 5, 30, 0.5)
962
+ .withSetpoint('unoccupied_heating_setpoint', 5, 30, 0.5)
963
+ .withLocalTemperature()
964
+ .withSystemMode(['off', 'heat'], ea.ALL, 'Mode of the thermostat')
965
+ .withPiHeatingDemand()
966
+ .withRunningState(['idle', 'heat'], ea.STATE),
967
+ e.enum('thermostat_occupancy', ea.ALL, ['unoccupied', 'occupied']).withDescription('Occupancy state of the thermostat'),
968
+ e
969
+ .enum('second_display_mode', ea.ALL, ['auto', 'setpoint', 'outdoor temp'])
970
+ .withDescription('Displays the outdoor temperature and then returns to the set point in "auto" mode, or clears ' +
971
+ 'in "outdoor temp" mode when expired.'),
972
+ e
973
+ .numeric('thermostat_outdoor_temperature', ea.ALL)
974
+ .withUnit('°C')
975
+ .withValueMin(-99.5)
976
+ .withValueMax(99.5)
977
+ .withValueStep(0.5)
978
+ .withDescription('Outdoor temperature for the secondary display'),
979
+ e
980
+ .numeric('outdoor_temperature_timeout', ea.ALL)
981
+ .withUnit('s')
982
+ .withValueMin(30)
983
+ .withValueMax(64800)
984
+ .withPreset('15 min', 900, '15 minutes')
985
+ .withPreset('30 min', 1800, '30 minutes')
986
+ .withPreset('1 hour', 3600, '1 hour')
987
+ .withDescription('Time in seconds after which the outdoor temperature is considered to have expired'),
988
+ e
989
+ .binary('enable_outdoor_temperature', ea.ALL, 'ON', 'OFF')
990
+ .withDescription('DEPRECATED: Use second_display_mode or control via outdoor_temperature_timeout'),
991
+ e
992
+ .enum('temperature_display_mode', ea.ALL, ['celsius', 'fahrenheit'])
993
+ .withDescription('The temperature format displayed on the thermostat screen'),
994
+ e.enum('time_format', ea.ALL, ['24h', '12h']).withDescription('The time format featured on the thermostat display'),
995
+ e.enum('backlight_auto_dim', ea.ALL, ['on_demand', 'sensing']).withDescription('Control backlight dimming behavior'),
996
+ e.enum('keypad_lockout', ea.ALL, ['unlock', 'lock1']).withDescription('Enables or disables the device’s buttons'),
997
+ e.enum('main_cycle_output', ea.ALL, ['15_sec', '15_min']).withDescription('The length of the control cycle: 15_sec=normal 15_min=fan'),
998
+ ],
999
+ configure: async (device, coordinatorEndpoint) => {
1000
+ const endpoint = device.getEndpoint(1);
1001
+ const binds = [
1002
+ 'genBasic',
1003
+ 'genIdentify',
1004
+ 'genGroups',
1005
+ 'hvacThermostat',
1006
+ 'hvacUserInterfaceCfg',
1007
+ 'msTemperatureMeasurement',
1008
+ 'manuSpecificSinope',
1009
+ ];
1010
+ await reporting.bind(endpoint, coordinatorEndpoint, binds); // This G2 version has limited memory space
1011
+ const thermostatDate = new Date();
1012
+ const thermostatTimeSec = thermostatDate.getTime() / 1000;
1013
+ const thermostatTimezoneOffsetSec = thermostatDate.getTimezoneOffset() * 60;
1014
+ const currentTimeToDisplay = Math.round(thermostatTimeSec - thermostatTimezoneOffsetSec - 946684800);
1015
+ await endpoint.write('manuSpecificSinope', { currentTimeToDisplay }, manuSinope);
1016
+ await endpoint.write('manuSpecificSinope', { secondScreenBehavior: 0 }, manuSinope); // Mode auto
1017
+ await reporting.thermostatTemperature(endpoint);
1018
+ await reporting.thermostatPIHeatingDemand(endpoint);
1019
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
1020
+ await reporting.thermostatSystemMode(endpoint);
1021
+ await reporting.temperature(endpoint, { min: 1, max: 0xffff }); // Disable default reporting
1022
+ await endpoint.configureReporting('msTemperatureMeasurement', [
1023
+ {
1024
+ attribute: 'tolerance',
1025
+ minimumReportInterval: 1,
1026
+ maximumReportInterval: 0xffff,
1027
+ reportableChange: 1,
1028
+ },
1029
+ ]);
1030
+ // Disable default reporting (not used by Sinope)
1031
+ await reporting.thermostatRunningState(endpoint, { min: 1, max: 0xffff });
1032
+ try {
1033
+ await reporting.thermostatUnoccupiedHeatingSetpoint(endpoint);
1034
+ }
1035
+ catch {
1036
+ /* Do nothing */
1037
+ }
1038
+ },
1039
+ },
1040
+ {
1041
+ zigbeeModel: ['TH1300ZB', 'TH1320ZB-04'],
1042
+ model: 'TH1300ZB',
1043
+ vendor: 'Sinopé',
1044
+ description: 'Zigbee smart floor heating thermostat',
1045
+ whiteLabel: [
1046
+ { model: 'TH1320ZB-04', vendor: 'Sinopé', description: 'Zigbee smart floor heating thermostat', fingerprint: [{ modelID: 'TH1320ZB-04' }] },
1047
+ ],
1048
+ extend: [(0, modernExtend_1.electricityMeter)()],
1049
+ fromZigbee: [fzLocal.thermostat, fzLocal.sinope, fromZigbee_1.default.hvac_user_interface, fromZigbee_1.default.ignore_temperature_report],
1050
+ toZigbee: [
1051
+ toZigbee_1.default.thermostat_local_temperature,
1052
+ toZigbee_1.default.thermostat_occupied_heating_setpoint,
1053
+ toZigbee_1.default.thermostat_unoccupied_heating_setpoint,
1054
+ toZigbee_1.default.thermostat_temperature_display_mode,
1055
+ toZigbee_1.default.thermostat_keypad_lockout,
1056
+ toZigbee_1.default.thermostat_system_mode,
1057
+ tzLocal.backlight_autodim,
1058
+ tzLocal.thermostat_time,
1059
+ tzLocal.time_format,
1060
+ tzLocal.enable_outdoor_temperature,
1061
+ tzLocal.second_display_mode,
1062
+ tzLocal.thermostat_outdoor_temperature,
1063
+ tzLocal.outdoor_temperature_timeout,
1064
+ tzLocal.thermostat_occupancy,
1065
+ tzLocal.floor_control_mode,
1066
+ tzLocal.ambiant_max_heat_setpoint,
1067
+ tzLocal.floor_min_heat_setpoint,
1068
+ tzLocal.floor_max_heat_setpoint,
1069
+ tzLocal.temperature_sensor,
1070
+ ],
1071
+ exposes: [
1072
+ e
1073
+ .climate()
1074
+ .withSetpoint('occupied_heating_setpoint', 5, 36, 0.5)
1075
+ .withSetpoint('unoccupied_heating_setpoint', 5, 36, 0.5)
1076
+ .withLocalTemperature()
1077
+ .withSystemMode(['off', 'heat'], ea.ALL, 'Mode of the thermostat')
1078
+ .withPiHeatingDemand()
1079
+ .withRunningState(['idle', 'heat'], ea.STATE),
1080
+ e.enum('thermostat_occupancy', ea.ALL, ['unoccupied', 'occupied']).withDescription('Occupancy state of the thermostat'),
1081
+ e
1082
+ .enum('second_display_mode', ea.ALL, ['auto', 'setpoint', 'outdoor temp'])
1083
+ .withDescription('Displays the outdoor temperature and then returns to the set point in "auto" mode, or clears ' +
1084
+ 'in "outdoor temp" mode when expired.'),
1085
+ e
1086
+ .numeric('thermostat_outdoor_temperature', ea.ALL)
1087
+ .withUnit('°C')
1088
+ .withValueMin(-99.5)
1089
+ .withValueMax(99.5)
1090
+ .withValueStep(0.5)
1091
+ .withDescription('Outdoor temperature for the secondary display'),
1092
+ e
1093
+ .numeric('outdoor_temperature_timeout', ea.ALL)
1094
+ .withUnit('s')
1095
+ .withValueMin(30)
1096
+ .withValueMax(64800)
1097
+ .withPreset('15 min', 900, '15 minutes')
1098
+ .withPreset('30 min', 1800, '30 minutes')
1099
+ .withPreset('1 hour', 3600, '1 hour')
1100
+ .withDescription('Time in seconds after which the outdoor temperature is considered to have expired'),
1101
+ e
1102
+ .binary('enable_outdoor_temperature', ea.ALL, 'ON', 'OFF')
1103
+ .withDescription('DEPRECATED: Use second_display_mode or control via outdoor_temperature_timeout'),
1104
+ e
1105
+ .enum('temperature_display_mode', ea.ALL, ['celsius', 'fahrenheit'])
1106
+ .withDescription('The temperature format displayed on the thermostat screen'),
1107
+ e.enum('time_format', ea.ALL, ['24h', '12h']).withDescription('The time format featured on the thermostat display'),
1108
+ e.enum('backlight_auto_dim', ea.ALL, ['on_demand', 'sensing']).withDescription('Control backlight dimming behavior'),
1109
+ e.enum('keypad_lockout', ea.ALL, ['unlock', 'lock1']).withDescription('Enables or disables the device’s buttons'),
1110
+ ],
1111
+ configure: async (device, coordinatorEndpoint) => {
1112
+ const endpoint = device.getEndpoint(1);
1113
+ const binds = [
1114
+ 'genBasic',
1115
+ 'genIdentify',
1116
+ 'genGroups',
1117
+ 'hvacThermostat',
1118
+ 'hvacUserInterfaceCfg',
1119
+ 'msTemperatureMeasurement',
1120
+ 'manuSpecificSinope',
1121
+ ];
1122
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
1123
+ await reporting.thermostatTemperature(endpoint);
1124
+ await reporting.thermostatPIHeatingDemand(endpoint);
1125
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
1126
+ try {
1127
+ await reporting.thermostatKeypadLockMode(endpoint);
1128
+ }
1129
+ catch {
1130
+ // Not all support this: https://github.com/Koenkk/zigbee2mqtt/issues/3760
1131
+ }
1132
+ await endpoint.configureReporting('manuSpecificSinope', [
1133
+ { attribute: 'GFCiStatus', minimumReportInterval: 1, maximumReportInterval: constants.repInterval.HOUR, reportableChange: 1 },
1134
+ ]);
1135
+ await endpoint.configureReporting('manuSpecificSinope', [
1136
+ { attribute: 'floorLimitStatus', minimumReportInterval: 1, maximumReportInterval: constants.repInterval.HOUR, reportableChange: 1 },
1137
+ ]);
1138
+ await reporting.temperature(endpoint, { min: 1, max: 0xffff }); // disable reporting
1139
+ },
1140
+ },
1141
+ {
1142
+ zigbeeModel: ['TH1400ZB'],
1143
+ model: 'TH1400ZB',
1144
+ vendor: 'Sinopé',
1145
+ description: 'Zigbee low volt thermostat',
1146
+ fromZigbee: [
1147
+ fzLocal.thermostat,
1148
+ fzLocal.sinope,
1149
+ fromZigbee_1.default.hvac_user_interface,
1150
+ fromZigbee_1.default.electrical_measurement,
1151
+ fromZigbee_1.default.metering,
1152
+ fromZigbee_1.default.ignore_temperature_report,
1153
+ ],
1154
+ toZigbee: [
1155
+ toZigbee_1.default.thermostat_local_temperature,
1156
+ toZigbee_1.default.thermostat_occupied_heating_setpoint,
1157
+ toZigbee_1.default.thermostat_unoccupied_heating_setpoint,
1158
+ toZigbee_1.default.thermostat_temperature_display_mode,
1159
+ toZigbee_1.default.thermostat_keypad_lockout,
1160
+ toZigbee_1.default.thermostat_system_mode,
1161
+ tzLocal.backlight_autodim,
1162
+ tzLocal.thermostat_time,
1163
+ tzLocal.time_format,
1164
+ tzLocal.enable_outdoor_temperature,
1165
+ tzLocal.second_display_mode,
1166
+ tzLocal.thermostat_outdoor_temperature,
1167
+ tzLocal.outdoor_temperature_timeout,
1168
+ tzLocal.thermostat_occupancy,
1169
+ tzLocal.floor_control_mode,
1170
+ tzLocal.ambiant_max_heat_setpoint,
1171
+ tzLocal.floor_min_heat_setpoint,
1172
+ tzLocal.floor_max_heat_setpoint,
1173
+ tzLocal.temperature_sensor,
1174
+ toZigbee_1.default.thermostat_min_heat_setpoint_limit,
1175
+ toZigbee_1.default.thermostat_max_heat_setpoint_limit,
1176
+ tzLocal.connected_load,
1177
+ tzLocal.aux_connected_load,
1178
+ tzLocal.main_cycle_output,
1179
+ tzLocal.aux_cycle_output,
1180
+ tzLocal.pump_protection,
1181
+ ],
1182
+ exposes: [
1183
+ e
1184
+ .climate()
1185
+ .withSetpoint('occupied_heating_setpoint', 5, 36, 0.5)
1186
+ .withSetpoint('unoccupied_heating_setpoint', 5, 36, 0.5)
1187
+ .withLocalTemperature()
1188
+ .withSystemMode(['off', 'heat'])
1189
+ .withPiHeatingDemand()
1190
+ .withRunningState(['idle', 'heat'], ea.STATE),
1191
+ e.max_heat_setpoint_limit(5, 36, 0.5),
1192
+ e.min_heat_setpoint_limit(5, 36, 0.5),
1193
+ e.enum('thermostat_occupancy', ea.ALL, ['unoccupied', 'occupied']).withDescription('Occupancy state of the thermostat'),
1194
+ e
1195
+ .enum('second_display_mode', ea.ALL, ['auto', 'setpoint', 'outdoor temp'])
1196
+ .withDescription('Displays the outdoor temperature and then returns to the set point in "auto" mode, or clears ' +
1197
+ 'in "outdoor temp" mode when expired.'),
1198
+ e
1199
+ .numeric('thermostat_outdoor_temperature', ea.ALL)
1200
+ .withUnit('°C')
1201
+ .withValueMin(-99.5)
1202
+ .withValueMax(99.5)
1203
+ .withValueStep(0.5)
1204
+ .withDescription('Outdoor temperature for the secondary display'),
1205
+ e
1206
+ .numeric('outdoor_temperature_timeout', ea.ALL)
1207
+ .withUnit('s')
1208
+ .withValueMin(30)
1209
+ .withValueMax(64800)
1210
+ .withPreset('15 min', 900, '15 minutes')
1211
+ .withPreset('30 min', 1800, '30 minutes')
1212
+ .withPreset('1 hour', 3600, '1 hour')
1213
+ .withDescription('Time in seconds after which the outdoor temperature is considered to have expired'),
1214
+ e
1215
+ .binary('enable_outdoor_temperature', ea.ALL, 'ON', 'OFF')
1216
+ .withDescription('DEPRECATED: Use second_display_mode or control via outdoor_temperature_timeout'),
1217
+ e
1218
+ .enum('temperature_display_mode', ea.ALL, ['celsius', 'fahrenheit'])
1219
+ .withDescription('The temperature format displayed on the thermostat screen'),
1220
+ e.enum('time_format', ea.ALL, ['24h', '12h']).withDescription('The time format featured on the thermostat display'),
1221
+ e.enum('backlight_auto_dim', ea.ALL, ['on_demand', 'sensing']).withDescription('The display backlight behavior'),
1222
+ e.enum('keypad_lockout', ea.ALL, ['unlock', 'lock1']).withDescription('Enables or disables the device’s buttons'),
1223
+ e
1224
+ .numeric('connected_load', ea.ALL)
1225
+ .withUnit('W')
1226
+ .withValueMin(1)
1227
+ .withValueMax(20000)
1228
+ .withDescription('The power in watts of the electrical load connected to the device'),
1229
+ e.enum('floor_control_mode', ea.ALL, ['ambiant', 'floor']).withDescription('Control mode using floor or ambient temperature'),
1230
+ e
1231
+ .numeric('floor_max_heat_setpoint', ea.ALL)
1232
+ .withUnit('°C')
1233
+ .withValueMin(7)
1234
+ .withValueMax(36)
1235
+ .withValueStep(0.5)
1236
+ .withPreset('off', 'off', 'Use minimum permitted value')
1237
+ .withDescription('The maximum floor temperature limit of the floor when in ambient control mode'),
1238
+ e
1239
+ .numeric('floor_min_heat_setpoint', ea.ALL)
1240
+ .withUnit('°C')
1241
+ .withValueMin(5)
1242
+ .withValueMax(34)
1243
+ .withValueStep(0.5)
1244
+ .withPreset('off', 'off', 'Use minimum permitted value')
1245
+ .withDescription('The minimum floor temperature limit of the floor when in ambient control mode'),
1246
+ e
1247
+ .numeric('ambiant_max_heat_setpoint', ea.ALL)
1248
+ .withUnit('°C')
1249
+ .withValueMin(5)
1250
+ .withValueMax(36)
1251
+ .withValueStep(0.5)
1252
+ .withPreset('off', 'off', 'Use minimum permitted value')
1253
+ .withDescription('The maximum ambient temperature limit when in floor control mode'),
1254
+ e.enum('floor_temperature_sensor', ea.ALL, ['10k', '12k']).withDescription('The floor sensor'),
1255
+ e
1256
+ .enum('main_cycle_output', ea.ALL, ['15_sec', '5_min', '10_min', '15_min', '20_min', '30_min'])
1257
+ .withDescription('The length of the control cycle according to the type of load connected to the thermostats'),
1258
+ e
1259
+ .enum('aux_cycle_output', ea.ALL, ['off', '15_sec', '5_min', '10_min', '15_min', '20_min', '30_min'])
1260
+ .withDescription('The length of the control cycle according to the type of auxiliary load connected to the thermostats'),
1261
+ e.binary('pump_protection', ea.ALL, 'ON', 'OFF').withDescription('This function prevents the seizure of the pump'),
1262
+ e
1263
+ .numeric('aux_connected_load', ea.ALL)
1264
+ .withUnit('W')
1265
+ .withValueMin(0)
1266
+ .withValueMax(20000)
1267
+ .withDescription('The power in watts of the heater connected to the auxiliary output of the thermostat'),
1268
+ ],
1269
+ configure: async (device, coordinatorEndpoint) => {
1270
+ const endpoint = device.getEndpoint(1);
1271
+ const binds = [
1272
+ 'genBasic',
1273
+ 'genIdentify',
1274
+ 'genGroups',
1275
+ 'hvacThermostat',
1276
+ 'hvacUserInterfaceCfg',
1277
+ 'msTemperatureMeasurement',
1278
+ 'manuSpecificSinope',
1279
+ ];
1280
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
1281
+ await reporting.thermostatTemperature(endpoint);
1282
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
1283
+ await reporting.thermostatPIHeatingDemand(endpoint);
1284
+ try {
1285
+ await reporting.thermostatSystemMode(endpoint);
1286
+ }
1287
+ catch {
1288
+ /* Not all support this */
1289
+ }
1290
+ await endpoint.read('hvacThermostat', [
1291
+ 'occupiedHeatingSetpoint',
1292
+ 'localTemp',
1293
+ 'systemMode',
1294
+ 'pIHeatingDemand',
1295
+ 'SinopeBacklight',
1296
+ 'maxHeatSetpointLimit',
1297
+ 'minHeatSetpointLimit',
1298
+ 'SinopeMainCycleOutput',
1299
+ 'SinopeAuxCycleOutput',
1300
+ ]);
1301
+ await endpoint.read('hvacUserInterfaceCfg', ['keypadLockout', 'tempDisplayMode']);
1302
+ await endpoint.read('manuSpecificSinope', [
1303
+ 'timeFormatToDisplay',
1304
+ 'connectedLoad',
1305
+ 'auxConnectedLoad',
1306
+ 'floorControlMode',
1307
+ 'floorMinHeatSetpointLimit',
1308
+ 'floorMaxHeatSetpointLimit',
1309
+ 'ambiantMaxHeatSetpointLimit',
1310
+ 'outdoorTempToDisplayTimeout',
1311
+ 'temperatureSensor',
1312
+ 'pumpProtection',
1313
+ ]);
1314
+ await reporting.temperature(endpoint, { min: 1, max: 0xffff }); // disable reporting
1315
+ },
1316
+ },
1317
+ {
1318
+ zigbeeModel: ['TH1500ZB'],
1319
+ model: 'TH1500ZB',
1320
+ vendor: 'Sinopé',
1321
+ description: 'Zigbee dual pole line volt thermostat',
1322
+ fromZigbee: [
1323
+ fzLocal.thermostat,
1324
+ fzLocal.sinope,
1325
+ fromZigbee_1.default.hvac_user_interface,
1326
+ fromZigbee_1.default.electrical_measurement,
1327
+ fromZigbee_1.default.metering,
1328
+ fromZigbee_1.default.ignore_temperature_report,
1329
+ ],
1330
+ toZigbee: [
1331
+ toZigbee_1.default.thermostat_local_temperature,
1332
+ toZigbee_1.default.thermostat_occupied_heating_setpoint,
1333
+ toZigbee_1.default.thermostat_unoccupied_heating_setpoint,
1334
+ toZigbee_1.default.thermostat_temperature_display_mode,
1335
+ toZigbee_1.default.thermostat_keypad_lockout,
1336
+ toZigbee_1.default.thermostat_system_mode,
1337
+ tzLocal.backlight_autodim,
1338
+ tzLocal.thermostat_time,
1339
+ tzLocal.time_format,
1340
+ tzLocal.enable_outdoor_temperature,
1341
+ tzLocal.second_display_mode,
1342
+ tzLocal.thermostat_outdoor_temperature,
1343
+ tzLocal.outdoor_temperature_timeout,
1344
+ tzLocal.thermostat_occupancy,
1345
+ ],
1346
+ exposes: [
1347
+ e
1348
+ .climate()
1349
+ .withSetpoint('occupied_heating_setpoint', 5, 30, 0.5)
1350
+ .withSetpoint('unoccupied_heating_setpoint', 5, 30, 0.5)
1351
+ .withLocalTemperature()
1352
+ .withSystemMode(['off', 'heat'], ea.ALL, 'Mode of the thermostat')
1353
+ .withPiHeatingDemand()
1354
+ .withRunningState(['idle', 'heat'], ea.STATE),
1355
+ e.enum('thermostat_occupancy', ea.ALL, ['unoccupied', 'occupied']).withDescription('Occupancy state of the thermostat'),
1356
+ e
1357
+ .enum('second_display_mode', ea.ALL, ['auto', 'setpoint', 'outdoor temp'])
1358
+ .withDescription('Displays the outdoor temperature and then returns to the set point in "auto" mode, or clears ' +
1359
+ 'in "outdoor temp" mode when expired.'),
1360
+ e
1361
+ .numeric('thermostat_outdoor_temperature', ea.ALL)
1362
+ .withUnit('°C')
1363
+ .withValueMin(-99.5)
1364
+ .withValueMax(99.5)
1365
+ .withValueStep(0.5)
1366
+ .withDescription('Outdoor temperature for the secondary display'),
1367
+ e
1368
+ .numeric('outdoor_temperature_timeout', ea.ALL)
1369
+ .withUnit('s')
1370
+ .withValueMin(30)
1371
+ .withValueMax(64800)
1372
+ .withPreset('15 min', 900, '15 minutes')
1373
+ .withPreset('30 min', 1800, '30 minutes')
1374
+ .withPreset('1 hour', 3600, '1 hour')
1375
+ .withDescription('Time in seconds after which the outdoor temperature is considered to have expired'),
1376
+ e
1377
+ .binary('enable_outdoor_temperature', ea.ALL, 'ON', 'OFF')
1378
+ .withDescription('DEPRECATED: Use second_display_mode or control via outdoor_temperature_timeout'),
1379
+ e
1380
+ .enum('temperature_display_mode', ea.ALL, ['celsius', 'fahrenheit'])
1381
+ .withDescription('The temperature format displayed on the thermostat screen'),
1382
+ e.enum('time_format', ea.ALL, ['24h', '12h']).withDescription('The time format featured on the thermostat display'),
1383
+ e.enum('backlight_auto_dim', ea.ALL, ['on_demand', 'sensing']).withDescription('Control backlight dimming behavior'),
1384
+ e.enum('keypad_lockout', ea.ALL, ['unlock', 'lock1']).withDescription('Enables or disables the device’s buttons'),
1385
+ ],
1386
+ configure: async (device, coordinatorEndpoint) => {
1387
+ const endpoint = device.getEndpoint(1);
1388
+ const binds = ['genBasic', 'genIdentify', 'genGroups', 'hvacThermostat', 'hvacUserInterfaceCfg', 'msTemperatureMeasurement'];
1389
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
1390
+ await reporting.thermostatTemperature(endpoint);
1391
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
1392
+ await reporting.thermostatPIHeatingDemand(endpoint);
1393
+ },
1394
+ },
1395
+ {
1396
+ zigbeeModel: ['SW2500ZB'],
1397
+ model: 'SW2500ZB',
1398
+ vendor: 'Sinopé',
1399
+ description: 'Zigbee smart light switch',
1400
+ extend: [(0, modernExtend_1.onOff)(), (0, modernExtend_1.electricityMeter)({ cluster: 'metering' })],
1401
+ fromZigbee: [fzLocal.sinope],
1402
+ toZigbee: [
1403
+ tzLocal.timer_seconds,
1404
+ tzLocal.led_intensity_on,
1405
+ tzLocal.led_intensity_off,
1406
+ tzLocal.led_color_on,
1407
+ tzLocal.led_color_off,
1408
+ tzLocal.keypad_lockout,
1409
+ tzLocal.connected_load,
1410
+ ],
1411
+ exposes: [
1412
+ e.action(['up_single', 'up_double', 'up_hold', 'down_single', 'down_double', 'down_hold']),
1413
+ e
1414
+ .numeric('timer_seconds', ea.ALL)
1415
+ .withUnit('s')
1416
+ .withValueMin(0)
1417
+ .withValueMax(65535)
1418
+ .withPreset('Disabled', 0, 'disabled')
1419
+ .withDescription('Automatically turn off load after x seconds'),
1420
+ e
1421
+ .numeric('led_intensity_on', ea.ALL)
1422
+ .withUnit('%')
1423
+ .withValueMin(0)
1424
+ .withValueMax(100)
1425
+ .withDescription('Control status LED intensity when load ON'),
1426
+ e
1427
+ .numeric('led_intensity_off', ea.ALL)
1428
+ .withUnit('%')
1429
+ .withValueMin(0)
1430
+ .withValueMax(100)
1431
+ .withDescription('Control status LED intensity when load OFF'),
1432
+ e
1433
+ .composite('led_color_on', 'led_color_on', ea.SET)
1434
+ .withFeature(e.numeric('r', ea.SET))
1435
+ .withFeature(e.numeric('g', ea.SET))
1436
+ .withFeature(e.numeric('b', ea.SET))
1437
+ .withDescription('Control status LED color when load ON'),
1438
+ e
1439
+ .composite('led_color_off', 'led_color_off', ea.SET)
1440
+ .withFeature(e.numeric('r', ea.SET))
1441
+ .withFeature(e.numeric('g', ea.SET))
1442
+ .withFeature(e.numeric('b', ea.SET))
1443
+ .withDescription('Control status LED color when load OFF'),
1444
+ e.enum('keypad_lockout', ea.ALL, ['unlock', 'lock']).withDescription('Enables or disables the device’s buttons'),
1445
+ e.numeric('connected_load', ea.ALL).withUnit('W').withValueMin(0).withValueMax(1800).withDescription('Load connected in watt'),
1446
+ ],
1447
+ configure: async (device, coordinatorEndpoint) => {
1448
+ const endpoint = device.getEndpoint(1);
1449
+ const binds = ['manuSpecificSinope'];
1450
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
1451
+ const payload = [
1452
+ {
1453
+ attribute: 'actionReport',
1454
+ minimumReportInterval: 0,
1455
+ maximumReportInterval: 0,
1456
+ reportableChange: 0,
1457
+ },
1458
+ ];
1459
+ await endpoint.configureReporting('manuSpecificSinope', payload);
1460
+ },
1461
+ },
1462
+ {
1463
+ zigbeeModel: ['DM2500ZB'],
1464
+ model: 'DM2500ZB',
1465
+ vendor: 'Sinopé',
1466
+ description: 'Zigbee smart dimmer',
1467
+ extend: [(0, modernExtend_1.light)({ configureReporting: true })],
1468
+ fromZigbee: [fzLocal.sinope],
1469
+ toZigbee: [
1470
+ tzLocal.timer_seconds,
1471
+ tzLocal.led_intensity_on,
1472
+ tzLocal.led_intensity_off,
1473
+ tzLocal.minimum_brightness,
1474
+ tzLocal.led_color_on,
1475
+ tzLocal.led_color_off,
1476
+ ],
1477
+ exposes: [
1478
+ e
1479
+ .numeric('timer_seconds', ea.ALL)
1480
+ .withUnit('s')
1481
+ .withValueMin(0)
1482
+ .withValueMax(65535)
1483
+ .withPreset('Disabled', 0, 'disabled')
1484
+ .withDescription('Automatically turn off load after x seconds'),
1485
+ e
1486
+ .numeric('led_intensity_on', ea.ALL)
1487
+ .withUnit('%')
1488
+ .withValueMin(0)
1489
+ .withValueMax(100)
1490
+ .withDescription('Control status LED intensity when load ON'),
1491
+ e
1492
+ .numeric('led_intensity_off', ea.ALL)
1493
+ .withUnit('%')
1494
+ .withValueMin(0)
1495
+ .withValueMax(100)
1496
+ .withDescription('Control status LED when load OFF'),
1497
+ e.numeric('minimum_brightness', ea.ALL).withValueMin(0).withValueMax(3000).withDescription('Control minimum dimmer brightness'),
1498
+ e
1499
+ .composite('led_color_on', 'led_color_on', ea.SET)
1500
+ .withFeature(e.numeric('r', ea.SET))
1501
+ .withFeature(e.numeric('g', ea.SET))
1502
+ .withFeature(e.numeric('b', ea.SET))
1503
+ .withDescription('Control status LED color when load ON'),
1504
+ e
1505
+ .composite('led_color_off', 'led_color_off', ea.SET)
1506
+ .withFeature(e.numeric('r', ea.SET))
1507
+ .withFeature(e.numeric('g', ea.SET))
1508
+ .withFeature(e.numeric('b', ea.SET))
1509
+ .withDescription('Control status LED color when load OFF'),
1510
+ ],
1511
+ },
1512
+ {
1513
+ zigbeeModel: ['DM2550ZB'],
1514
+ model: 'DM2550ZB',
1515
+ vendor: 'Sinopé',
1516
+ description: 'Zigbee Adaptive phase smart dimmer',
1517
+ extend: [(0, modernExtend_1.light)({ configureReporting: true })],
1518
+ fromZigbee: [fzLocal.sinope],
1519
+ toZigbee: [
1520
+ tzLocal.timer_seconds,
1521
+ tzLocal.led_intensity_on,
1522
+ tzLocal.led_intensity_off,
1523
+ tzLocal.minimum_brightness,
1524
+ tzLocal.led_color_on,
1525
+ tzLocal.led_color_off,
1526
+ ],
1527
+ exposes: [
1528
+ e
1529
+ .numeric('timer_seconds', ea.ALL)
1530
+ .withUnit('s')
1531
+ .withValueMin(0)
1532
+ .withValueMax(65535)
1533
+ .withPreset('Disabled', 0, 'disabled')
1534
+ .withDescription('Automatically turn off load after x seconds'),
1535
+ e
1536
+ .numeric('led_intensity_on', ea.ALL)
1537
+ .withUnit('%')
1538
+ .withValueMin(0)
1539
+ .withValueMax(100)
1540
+ .withDescription('Control status LED intensity when load ON'),
1541
+ e
1542
+ .numeric('led_intensity_off', ea.ALL)
1543
+ .withUnit('%')
1544
+ .withValueMin(0)
1545
+ .withValueMax(100)
1546
+ .withDescription('Control status LED when load OFF'),
1547
+ e.numeric('minimum_brightness', ea.ALL).withValueMin(0).withValueMax(3000).withDescription('Control minimum dimmer brightness'),
1548
+ e
1549
+ .composite('led_color_on', 'led_color_on', ea.SET)
1550
+ .withFeature(e.numeric('r', ea.SET))
1551
+ .withFeature(e.numeric('g', ea.SET))
1552
+ .withFeature(e.numeric('b', ea.SET))
1553
+ .withDescription('Control status LED color when load ON'),
1554
+ e
1555
+ .composite('led_color_off', 'led_color_off', ea.SET)
1556
+ .withFeature(e.numeric('r', ea.SET))
1557
+ .withFeature(e.numeric('g', ea.SET))
1558
+ .withFeature(e.numeric('b', ea.SET))
1559
+ .withDescription('Control status LED color when load OFF'),
1560
+ ],
1561
+ },
1562
+ {
1563
+ zigbeeModel: ['SP2600ZB'],
1564
+ model: 'SP2600ZB',
1565
+ vendor: 'Sinopé',
1566
+ description: 'Zigbee smart plug',
1567
+ extend: [(0, modernExtend_1.onOff)(), (0, modernExtend_1.electricityMeter)()],
1568
+ },
1569
+ {
1570
+ zigbeeModel: ['SP2610ZB'],
1571
+ model: 'SP2610ZB',
1572
+ vendor: 'Sinopé',
1573
+ description: 'Zigbee smart plug',
1574
+ extend: [(0, modernExtend_1.onOff)(), (0, modernExtend_1.electricityMeter)()],
1575
+ },
1576
+ {
1577
+ zigbeeModel: ['RM3250ZB'],
1578
+ model: 'RM3250ZB',
1579
+ vendor: 'Sinopé',
1580
+ description: '50A Smart electrical load controller',
1581
+ extend: [(0, modernExtend_1.onOff)(), (0, modernExtend_1.electricityMeter)()],
1582
+ },
1583
+ {
1584
+ zigbeeModel: ['WL4200'],
1585
+ model: 'WL4200',
1586
+ vendor: 'Sinopé',
1587
+ description: 'Zigbee smart water leak detector',
1588
+ fromZigbee: [fromZigbee_1.default.ias_water_leak_alarm_1, fromZigbee_1.default.temperature, fromZigbee_1.default.battery],
1589
+ exposes: [e.water_leak(), e.battery_low(), e.temperature(), e.battery()],
1590
+ toZigbee: [],
1591
+ configure: async (device, coordinatorEndpoint) => {
1592
+ const endpoint = device.getEndpoint(1);
1593
+ const binds = ['genPowerCfg', 'msTemperatureMeasurement'];
1594
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
1595
+ await reporting.temperature(endpoint, { min: 600, max: constants.repInterval.MAX, change: 100 });
1596
+ await reporting.batteryPercentageRemaining(endpoint);
1597
+ await reporting.batteryAlarmState(endpoint);
1598
+ },
1599
+ },
1600
+ {
1601
+ zigbeeModel: ['WL4200S'],
1602
+ model: 'WL4200S',
1603
+ vendor: 'Sinopé',
1604
+ description: 'Zigbee smart water leak detector with external sensor',
1605
+ fromZigbee: [fromZigbee_1.default.ias_water_leak_alarm_1, fromZigbee_1.default.temperature, fromZigbee_1.default.battery],
1606
+ toZigbee: [],
1607
+ exposes: [e.water_leak(), e.battery_low(), e.temperature(), e.battery()],
1608
+ configure: async (device, coordinatorEndpoint) => {
1609
+ const endpoint = device.getEndpoint(1);
1610
+ const binds = ['genPowerCfg', 'msTemperatureMeasurement'];
1611
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
1612
+ await reporting.temperature(endpoint, { min: 600, max: constants.repInterval.MAX, change: 100 });
1613
+ await reporting.batteryPercentageRemaining(endpoint);
1614
+ await reporting.batteryAlarmState(endpoint);
1615
+ },
1616
+ },
1617
+ {
1618
+ zigbeeModel: ['WL4210'],
1619
+ model: 'WL4210',
1620
+ vendor: 'Sinopé',
1621
+ description: 'Zigbee smart water leak detector with external sensor',
1622
+ fromZigbee: [fromZigbee_1.default.ias_water_leak_alarm_1, fromZigbee_1.default.temperature, fromZigbee_1.default.battery],
1623
+ toZigbee: [],
1624
+ exposes: [e.water_leak(), e.battery_low(), e.temperature(), e.battery()],
1625
+ configure: async (device, coordinatorEndpoint) => {
1626
+ const endpoint = device.getEndpoint(1);
1627
+ const binds = ['genPowerCfg', 'msTemperatureMeasurement'];
1628
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
1629
+ await reporting.temperature(endpoint, { min: 600, max: constants.repInterval.MAX, change: 100 });
1630
+ await reporting.batteryPercentageRemaining(endpoint);
1631
+ await reporting.batteryAlarmState(endpoint);
1632
+ },
1633
+ },
1634
+ {
1635
+ zigbeeModel: ['VA4200WZ'],
1636
+ model: 'VA4200WZ',
1637
+ vendor: 'Sinopé',
1638
+ description: 'Zigbee smart water valve (3/4")',
1639
+ fromZigbee: [fromZigbee_1.default.cover_position_via_brightness, fromZigbee_1.default.cover_state_via_onoff, fromZigbee_1.default.battery],
1640
+ toZigbee: [toZigbee_1.default.cover_via_brightness],
1641
+ exposes: [e.valve_switch(), e.valve_position(), e.battery_low(), e.battery()],
1642
+ configure: async (device, coordinatorEndpoint) => {
1643
+ const endpoint = device.getEndpoint(1);
1644
+ const binds = ['genOnOff', 'genLevelCtrl', 'genPowerCfg'];
1645
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
1646
+ await reporting.batteryPercentageRemaining(endpoint);
1647
+ await reporting.onOff(endpoint);
1648
+ await reporting.brightness(endpoint); // valve position
1649
+ },
1650
+ },
1651
+ {
1652
+ zigbeeModel: ['VA4201WZ'],
1653
+ model: 'VA4201WZ',
1654
+ vendor: 'Sinopé',
1655
+ description: 'Zigbee smart water valve (1")',
1656
+ fromZigbee: [fromZigbee_1.default.cover_position_via_brightness, fromZigbee_1.default.cover_state_via_onoff, fromZigbee_1.default.battery],
1657
+ toZigbee: [toZigbee_1.default.cover_via_brightness],
1658
+ exposes: [e.valve_switch(), e.valve_position(), e.battery_low(), e.battery()],
1659
+ configure: async (device, coordinatorEndpoint) => {
1660
+ const endpoint = device.getEndpoint(1);
1661
+ const binds = ['genOnOff', 'genLevelCtrl', 'genPowerCfg'];
1662
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
1663
+ await reporting.batteryPercentageRemaining(endpoint);
1664
+ await reporting.onOff(endpoint);
1665
+ await reporting.brightness(endpoint); // valve position
1666
+ },
1667
+ },
1668
+ {
1669
+ zigbeeModel: ['VA4220ZB'],
1670
+ model: 'VA4220ZB',
1671
+ vendor: 'Sinopé',
1672
+ description: 'Sedna smart water valve',
1673
+ fromZigbee: [fromZigbee_1.default.ignore_iaszone_statuschange, fromZigbee_1.default.cover_position_via_brightness, fromZigbee_1.default.cover_state_via_onoff, fromZigbee_1.default.battery, fromZigbee_1.default.metering],
1674
+ toZigbee: [toZigbee_1.default.cover_via_brightness],
1675
+ meta: { battery: { voltageToPercentage: { min: 5400, max: 6800 } } },
1676
+ exposes: [e.valve_switch(), e.valve_position(), e.battery_low(), e.battery(), e.battery_voltage()],
1677
+ configure: async (device, coordinatorEndpoint) => {
1678
+ const endpoint = device.getEndpoint(1);
1679
+ const binds = ['genBasic', 'genGroups', 'genOnOff', 'ssIasZone', 'genLevelCtrl', 'genPowerCfg', 'seMetering', 'manuSpecificSinope'];
1680
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
1681
+ await reporting.batteryPercentageRemaining(endpoint);
1682
+ await reporting.onOff(endpoint);
1683
+ await reporting.brightness(endpoint); // valve position
1684
+ try {
1685
+ await reporting.batteryVoltage(endpoint);
1686
+ }
1687
+ catch {
1688
+ /* Do Nothing */
1689
+ }
1690
+ try {
1691
+ await reporting.batteryAlarmState(endpoint);
1692
+ }
1693
+ catch {
1694
+ /* Do Nothing */
1695
+ }
1696
+ },
1697
+ },
1698
+ {
1699
+ zigbeeModel: ['RM3500ZB'],
1700
+ model: 'RM3500ZB',
1701
+ vendor: 'Sinopé',
1702
+ description: 'Calypso smart water heater controller',
1703
+ extend: [(0, modernExtend_1.onOff)({ powerOnBehavior: false }), (0, modernExtend_1.electricityMeter)()],
1704
+ fromZigbee: [fzLocal.ias_water_leak_alarm, fzLocal.sinope, fromZigbee_1.default.temperature],
1705
+ toZigbee: [tzLocal.low_water_temp_protection],
1706
+ exposes: [
1707
+ e
1708
+ .numeric('low_water_temp_protection', ea.ALL)
1709
+ .withUnit('°C')
1710
+ .withValueMin(0)
1711
+ .withValueMax(65)
1712
+ .withValueStep(1)
1713
+ .withDescription('Temperature at which water heating will resume automatically (default: 45°C)'),
1714
+ e.water_leak(),
1715
+ e.temperature(),
1716
+ ],
1717
+ configure: async (device, coordinatorEndpoint) => {
1718
+ const endpoint = device.getEndpoint(1);
1719
+ const binds = ['msTemperatureMeasurement', 'ssIasZone', 'manuSpecificSinope'];
1720
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
1721
+ await reporting.temperature(endpoint, { min: 60, max: 60, change: 0 }); // divider 100: 0.1C
1722
+ await endpoint.configureReporting('ssIasZone', [
1723
+ { attribute: 'zoneStatus', minimumReportInterval: 1, maximumReportInterval: constants.repInterval.HOUR, reportableChange: 1 },
1724
+ ]);
1725
+ },
1726
+ },
1727
+ {
1728
+ zigbeeModel: ['LM4110-ZB'],
1729
+ model: 'LM4110ZB',
1730
+ vendor: 'Sinopé',
1731
+ description: 'Tank level monitor',
1732
+ fromZigbee: [fromZigbee_1.default.battery, fromZigbee_1.default.temperature, fzLocal.tank_level],
1733
+ toZigbee: [],
1734
+ exposes: [
1735
+ e.battery_low(),
1736
+ e.battery(),
1737
+ e.temperature(),
1738
+ e.numeric('tank_level', ea.STATE).withUnit('%').withValueMin(0).withValueMax(100).withDescription('Percent volume remaining in tank'),
1739
+ ],
1740
+ configure: async (device, coordinatorEndpoint) => {
1741
+ const endpoint = device.getEndpoint(1);
1742
+ const binds = ['genPowerCfg', 'msTemperatureMeasurement', 'genAnalogInput'];
1743
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
1744
+ await reporting.batteryPercentageRemaining(endpoint);
1745
+ await reporting.batteryAlarmState(endpoint);
1746
+ await reporting.temperature(endpoint);
1747
+ const payload = reporting.payload('presentValue', 10, constants.repInterval.HOUR, 1);
1748
+ await endpoint.configureReporting('genAnalogInput', payload);
1749
+ await endpoint.read('genAnalogInput', ['presentValue']);
1750
+ },
1751
+ },
1752
+ ];
1753
+ exports.default = definitions;
1754
+ module.exports = definitions;
1755
+ //# sourceMappingURL=sinope.js.map