@willieee802/zigbee-herdsman-converters 19.44.3 → 19.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (591) hide show
  1. package/CHANGELOG.md +1101 -0
  2. package/dist/converters/actions.d.ts.map +1 -1
  3. package/dist/converters/actions.js +2 -0
  4. package/dist/converters/actions.js.map +1 -1
  5. package/dist/converters/fromZigbee.d.ts +1 -150
  6. package/dist/converters/fromZigbee.d.ts.map +1 -1
  7. package/dist/converters/fromZigbee.js +183 -3044
  8. package/dist/converters/fromZigbee.js.map +1 -1
  9. package/dist/converters/toZigbee.d.ts +0 -121
  10. package/dist/converters/toZigbee.d.ts.map +1 -1
  11. package/dist/converters/toZigbee.js +289 -2386
  12. package/dist/converters/toZigbee.js.map +1 -1
  13. package/dist/devices/ITCommander.d.ts.map +1 -1
  14. package/dist/devices/ITCommander.js +2 -1
  15. package/dist/devices/ITCommander.js.map +1 -1
  16. package/dist/devices/acova.d.ts.map +1 -1
  17. package/dist/devices/acova.js +69 -2
  18. package/dist/devices/acova.js.map +1 -1
  19. package/dist/devices/adeo.d.ts.map +1 -1
  20. package/dist/devices/adeo.js +35 -3
  21. package/dist/devices/adeo.js.map +1 -1
  22. package/dist/devices/adurosmart.js +1 -1
  23. package/dist/devices/adurosmart.js.map +1 -1
  24. package/dist/devices/amina.d.ts.map +1 -1
  25. package/dist/devices/amina.js +47 -10
  26. package/dist/devices/amina.js.map +1 -1
  27. package/dist/devices/aurora_lighting.d.ts.map +1 -1
  28. package/dist/devices/aurora_lighting.js +15 -0
  29. package/dist/devices/aurora_lighting.js.map +1 -1
  30. package/dist/devices/automaton.d.ts.map +1 -1
  31. package/dist/devices/automaton.js +1 -0
  32. package/dist/devices/automaton.js.map +1 -1
  33. package/dist/devices/avatto.d.ts.map +1 -1
  34. package/dist/devices/avatto.js +29 -24
  35. package/dist/devices/avatto.js.map +1 -1
  36. package/dist/devices/awox.d.ts.map +1 -1
  37. package/dist/devices/awox.js +41 -3
  38. package/dist/devices/awox.js.map +1 -1
  39. package/dist/devices/bacchus.d.ts.map +1 -1
  40. package/dist/devices/bacchus.js +75 -0
  41. package/dist/devices/bacchus.js.map +1 -1
  42. package/dist/devices/bitron.d.ts.map +1 -1
  43. package/dist/devices/bitron.js +29 -2
  44. package/dist/devices/bitron.js.map +1 -1
  45. package/dist/devices/bosch.d.ts.map +1 -1
  46. package/dist/devices/bosch.js +70 -50
  47. package/dist/devices/bosch.js.map +1 -1
  48. package/dist/devices/bticino.d.ts.map +1 -1
  49. package/dist/devices/bticino.js +11 -1
  50. package/dist/devices/bticino.js.map +1 -1
  51. package/dist/devices/byun.d.ts.map +1 -1
  52. package/dist/devices/byun.js +40 -3
  53. package/dist/devices/byun.js.map +1 -1
  54. package/dist/devices/candeo.d.ts.map +1 -1
  55. package/dist/devices/candeo.js +262 -9
  56. package/dist/devices/candeo.js.map +1 -1
  57. package/dist/devices/centralite.d.ts +9 -0
  58. package/dist/devices/centralite.d.ts.map +1 -1
  59. package/dist/devices/centralite.js +44 -5
  60. package/dist/devices/centralite.js.map +1 -1
  61. package/dist/devices/{aubess.d.ts → cigol.d.ts} +1 -1
  62. package/dist/devices/cigol.d.ts.map +1 -0
  63. package/dist/devices/cigol.js +260 -0
  64. package/dist/devices/cigol.js.map +1 -0
  65. package/dist/devices/cleverio.js +2 -2
  66. package/dist/devices/cleverio.js.map +1 -1
  67. package/dist/devices/climax.d.ts.map +1 -1
  68. package/dist/devices/climax.js +15 -1
  69. package/dist/devices/climax.js.map +1 -1
  70. package/dist/devices/ctm.d.ts.map +1 -1
  71. package/dist/devices/ctm.js +845 -496
  72. package/dist/devices/ctm.js.map +1 -1
  73. package/dist/devices/custom_devices_diy.d.ts +183 -1
  74. package/dist/devices/custom_devices_diy.d.ts.map +1 -1
  75. package/dist/devices/custom_devices_diy.js +390 -33
  76. package/dist/devices/custom_devices_diy.js.map +1 -1
  77. package/dist/devices/daewoo.d.ts +3 -0
  78. package/dist/devices/daewoo.d.ts.map +1 -0
  79. package/dist/devices/daewoo.js +198 -0
  80. package/dist/devices/daewoo.js.map +1 -0
  81. package/dist/devices/danfoss.d.ts.map +1 -1
  82. package/dist/devices/danfoss.js +1270 -296
  83. package/dist/devices/danfoss.js.map +1 -1
  84. package/dist/devices/databyte.d.ts.map +1 -1
  85. package/dist/devices/databyte.js +47 -3
  86. package/dist/devices/databyte.js.map +1 -1
  87. package/dist/devices/datek.d.ts.map +1 -1
  88. package/dist/devices/datek.js +202 -41
  89. package/dist/devices/datek.js.map +1 -1
  90. package/dist/devices/dawon_dns.d.ts.map +1 -1
  91. package/dist/devices/dawon_dns.js +14 -1
  92. package/dist/devices/dawon_dns.js.map +1 -1
  93. package/dist/devices/develco.d.ts.map +1 -1
  94. package/dist/devices/develco.js +145 -64
  95. package/dist/devices/develco.js.map +1 -1
  96. package/dist/devices/diyruz.d.ts.map +1 -1
  97. package/dist/devices/diyruz.js +444 -20
  98. package/dist/devices/diyruz.js.map +1 -1
  99. package/dist/devices/domraem.d.ts.map +1 -1
  100. package/dist/devices/domraem.js +7 -0
  101. package/dist/devices/domraem.js.map +1 -1
  102. package/dist/devices/easyaccess.d.ts.map +1 -1
  103. package/dist/devices/easyaccess.js +22 -2
  104. package/dist/devices/easyaccess.js.map +1 -1
  105. package/dist/devices/easyiot.d.ts.map +1 -1
  106. package/dist/devices/easyiot.js +767 -5
  107. package/dist/devices/easyiot.js.map +1 -1
  108. package/dist/devices/echostar.d.ts.map +1 -1
  109. package/dist/devices/echostar.js +25 -1
  110. package/dist/devices/echostar.js.map +1 -1
  111. package/dist/devices/ecodim.d.ts.map +1 -1
  112. package/dist/devices/ecodim.js +8 -0
  113. package/dist/devices/ecodim.js.map +1 -1
  114. package/dist/devices/ecolink.d.ts.map +1 -1
  115. package/dist/devices/ecolink.js +12 -0
  116. package/dist/devices/ecolink.js.map +1 -1
  117. package/dist/devices/efekta.d.ts.map +1 -1
  118. package/dist/devices/efekta.js +1615 -60
  119. package/dist/devices/efekta.js.map +1 -1
  120. package/dist/devices/eglo.d.ts.map +1 -1
  121. package/dist/devices/eglo.js +203 -17
  122. package/dist/devices/eglo.js.map +1 -1
  123. package/dist/devices/elko.d.ts.map +1 -1
  124. package/dist/devices/elko.js +20 -22
  125. package/dist/devices/elko.js.map +1 -1
  126. package/dist/devices/engo.d.ts.map +1 -1
  127. package/dist/devices/engo.js +201 -0
  128. package/dist/devices/engo.js.map +1 -1
  129. package/dist/devices/enocean.d.ts.map +1 -1
  130. package/dist/devices/enocean.js +132 -4
  131. package/dist/devices/enocean.js.map +1 -1
  132. package/dist/devices/ensystec.d.ts +3 -0
  133. package/dist/devices/ensystec.d.ts.map +1 -0
  134. package/dist/devices/ensystec.js +1200 -0
  135. package/dist/devices/ensystec.js.map +1 -0
  136. package/dist/devices/eurotronic.d.ts +78 -1
  137. package/dist/devices/eurotronic.d.ts.map +1 -1
  138. package/dist/devices/eurotronic.js +244 -40
  139. package/dist/devices/eurotronic.js.map +1 -1
  140. package/dist/devices/ewelink.d.ts.map +1 -1
  141. package/dist/devices/ewelink.js +154 -2
  142. package/dist/devices/ewelink.js.map +1 -1
  143. package/dist/devices/fantem.js +1 -1
  144. package/dist/devices/fantem.js.map +1 -1
  145. package/dist/devices/fireangel.d.ts.map +1 -1
  146. package/dist/devices/fireangel.js +12 -1
  147. package/dist/devices/fireangel.js.map +1 -1
  148. package/dist/devices/frankever.d.ts.map +1 -1
  149. package/dist/devices/frankever.js +96 -0
  150. package/dist/devices/frankever.js.map +1 -1
  151. package/dist/devices/frient.d.ts.map +1 -1
  152. package/dist/devices/frient.js +15 -0
  153. package/dist/devices/frient.js.map +1 -1
  154. package/dist/devices/girier.js +1 -1
  155. package/dist/devices/girier.js.map +1 -1
  156. package/dist/devices/gledopto.js +1 -1
  157. package/dist/devices/gledopto.js.map +1 -1
  158. package/dist/devices/gmmts.d.ts.map +1 -1
  159. package/dist/devices/gmmts.js +59 -55
  160. package/dist/devices/gmmts.js.map +1 -1
  161. package/dist/devices/halo_smart_labs.d.ts +3 -0
  162. package/dist/devices/halo_smart_labs.d.ts.map +1 -0
  163. package/dist/devices/halo_smart_labs.js +918 -0
  164. package/dist/devices/halo_smart_labs.js.map +1 -0
  165. package/dist/devices/handshake_finland.d.ts +3 -0
  166. package/dist/devices/handshake_finland.d.ts.map +1 -0
  167. package/dist/devices/handshake_finland.js +15 -0
  168. package/dist/devices/handshake_finland.js.map +1 -0
  169. package/dist/devices/heiman.d.ts.map +1 -1
  170. package/dist/devices/heiman.js +1361 -147
  171. package/dist/devices/heiman.js.map +1 -1
  172. package/dist/devices/heimgard_technologies.d.ts.map +1 -1
  173. package/dist/devices/heimgard_technologies.js +13 -0
  174. package/dist/devices/heimgard_technologies.js.map +1 -1
  175. package/dist/devices/hive.d.ts.map +1 -1
  176. package/dist/devices/hive.js +11 -0
  177. package/dist/devices/hive.js.map +1 -1
  178. package/dist/devices/ikea.d.ts.map +1 -1
  179. package/dist/devices/ikea.js +185 -135
  180. package/dist/devices/ikea.js.map +1 -1
  181. package/dist/devices/iluminize.d.ts.map +1 -1
  182. package/dist/devices/iluminize.js +8 -7
  183. package/dist/devices/iluminize.js.map +1 -1
  184. package/dist/devices/immax.d.ts.map +1 -1
  185. package/dist/devices/immax.js +3 -1
  186. package/dist/devices/immax.js.map +1 -1
  187. package/dist/devices/index.d.ts.map +1 -1
  188. package/dist/devices/index.js +20 -2
  189. package/dist/devices/index.js.map +1 -1
  190. package/dist/devices/innr.d.ts.map +1 -1
  191. package/dist/devices/innr.js +34 -2
  192. package/dist/devices/innr.js.map +1 -1
  193. package/dist/devices/inovelli.d.ts.map +1 -1
  194. package/dist/devices/inovelli.js +41 -2348
  195. package/dist/devices/inovelli.js.map +1 -1
  196. package/dist/devices/iris.d.ts.map +1 -1
  197. package/dist/devices/iris.js +13 -1
  198. package/dist/devices/iris.js.map +1 -1
  199. package/dist/devices/javis.d.ts.map +1 -1
  200. package/dist/devices/javis.js +39 -1
  201. package/dist/devices/javis.js.map +1 -1
  202. package/dist/devices/jxuan.d.ts.map +1 -1
  203. package/dist/devices/jxuan.js +37 -2
  204. package/dist/devices/jxuan.js.map +1 -1
  205. package/dist/devices/kami.d.ts.map +1 -1
  206. package/dist/devices/kami.js +21 -2
  207. package/dist/devices/kami.js.map +1 -1
  208. package/dist/devices/keen_home.d.ts.map +1 -1
  209. package/dist/devices/keen_home.js +13 -3
  210. package/dist/devices/keen_home.js.map +1 -1
  211. package/dist/devices/klikaanklikuit.d.ts.map +1 -1
  212. package/dist/devices/klikaanklikuit.js +7 -0
  213. package/dist/devices/klikaanklikuit.js.map +1 -1
  214. package/dist/devices/kmpcil.d.ts.map +1 -1
  215. package/dist/devices/kmpcil.js +44 -5
  216. package/dist/devices/kmpcil.js.map +1 -1
  217. package/dist/devices/konke.d.ts.map +1 -1
  218. package/dist/devices/konke.js +10 -1
  219. package/dist/devices/konke.js.map +1 -1
  220. package/dist/devices/lds.d.ts.map +1 -1
  221. package/dist/devices/lds.js +7 -0
  222. package/dist/devices/lds.js.map +1 -1
  223. package/dist/devices/led_trading.d.ts.map +1 -1
  224. package/dist/devices/led_trading.js +13 -13
  225. package/dist/devices/led_trading.js.map +1 -1
  226. package/dist/devices/leedarson.d.ts.map +1 -1
  227. package/dist/devices/leedarson.js +140 -1
  228. package/dist/devices/leedarson.js.map +1 -1
  229. package/dist/devices/legrand.d.ts.map +1 -1
  230. package/dist/devices/legrand.js +73 -42
  231. package/dist/devices/legrand.js.map +1 -1
  232. package/dist/devices/lellki.d.ts.map +1 -1
  233. package/dist/devices/lellki.js +3 -1
  234. package/dist/devices/lellki.js.map +1 -1
  235. package/dist/devices/letv.d.ts.map +1 -1
  236. package/dist/devices/letv.js +16 -2
  237. package/dist/devices/letv.js.map +1 -1
  238. package/dist/devices/lidl.d.ts.map +1 -1
  239. package/dist/devices/lidl.js +26 -6
  240. package/dist/devices/lidl.js.map +1 -1
  241. package/dist/devices/lincukoo.d.ts.map +1 -1
  242. package/dist/devices/lincukoo.js +92 -31
  243. package/dist/devices/lincukoo.js.map +1 -1
  244. package/dist/devices/linkind.d.ts.map +1 -1
  245. package/dist/devices/linkind.js +14 -1
  246. package/dist/devices/linkind.js.map +1 -1
  247. package/dist/devices/linptech.d.ts.map +1 -1
  248. package/dist/devices/linptech.js +3 -1
  249. package/dist/devices/linptech.js.map +1 -1
  250. package/dist/devices/livingwise.d.ts.map +1 -1
  251. package/dist/devices/livingwise.js +2 -1
  252. package/dist/devices/livingwise.js.map +1 -1
  253. package/dist/devices/livolo.d.ts.map +1 -1
  254. package/dist/devices/livolo.js +612 -20
  255. package/dist/devices/livolo.js.map +1 -1
  256. package/dist/devices/lixee.d.ts.map +1 -1
  257. package/dist/devices/lixee.js +46 -44
  258. package/dist/devices/lixee.js.map +1 -1
  259. package/dist/devices/lonsonho.d.ts.map +1 -1
  260. package/dist/devices/lonsonho.js +18 -11
  261. package/dist/devices/lonsonho.js.map +1 -1
  262. package/dist/devices/lumi.d.ts.map +1 -1
  263. package/dist/devices/lumi.js +877 -155
  264. package/dist/devices/lumi.js.map +1 -1
  265. package/dist/devices/lytko.d.ts.map +1 -1
  266. package/dist/devices/lytko.js +205 -556
  267. package/dist/devices/lytko.js.map +1 -1
  268. package/dist/devices/makegood.d.ts.map +1 -1
  269. package/dist/devices/makegood.js +5 -1
  270. package/dist/devices/makegood.js.map +1 -1
  271. package/dist/devices/mazda.js +7 -7
  272. package/dist/devices/mazda.js.map +1 -1
  273. package/dist/devices/meazon.d.ts.map +1 -1
  274. package/dist/devices/meazon.js +82 -20
  275. package/dist/devices/meazon.js.map +1 -1
  276. package/dist/devices/megaman.d.ts +4 -0
  277. package/dist/devices/megaman.d.ts.map +1 -0
  278. package/dist/devices/megaman.js +48 -0
  279. package/dist/devices/megaman.js.map +1 -0
  280. package/dist/devices/mercator.d.ts.map +1 -1
  281. package/dist/devices/mercator.js +20 -5
  282. package/dist/devices/mercator.js.map +1 -1
  283. package/dist/devices/miboxer.d.ts.map +1 -1
  284. package/dist/devices/miboxer.js +3 -1
  285. package/dist/devices/miboxer.js.map +1 -1
  286. package/dist/devices/mill.d.ts.map +1 -1
  287. package/dist/devices/mill.js +33 -7
  288. package/dist/devices/mill.js.map +1 -1
  289. package/dist/devices/moes.d.ts.map +1 -1
  290. package/dist/devices/moes.js +89 -15
  291. package/dist/devices/moes.js.map +1 -1
  292. package/dist/devices/msh.d.ts +3 -0
  293. package/dist/devices/msh.d.ts.map +1 -0
  294. package/dist/devices/msh.js +93 -0
  295. package/dist/devices/msh.js.map +1 -0
  296. package/dist/devices/muller_licht.d.ts.map +1 -1
  297. package/dist/devices/muller_licht.js +11 -0
  298. package/dist/devices/muller_licht.js.map +1 -1
  299. package/dist/devices/multir.d.ts.map +1 -1
  300. package/dist/devices/multir.js +12 -1
  301. package/dist/devices/multir.js.map +1 -1
  302. package/dist/devices/multiterm.js +2 -2
  303. package/dist/devices/multiterm.js.map +1 -1
  304. package/dist/devices/namron.d.ts.map +1 -1
  305. package/dist/devices/namron.js +488 -128
  306. package/dist/devices/namron.js.map +1 -1
  307. package/dist/devices/neo.d.ts.map +1 -1
  308. package/dist/devices/neo.js +151 -192
  309. package/dist/devices/neo.js.map +1 -1
  310. package/dist/devices/netica.d.ts +3 -0
  311. package/dist/devices/netica.d.ts.map +1 -0
  312. package/dist/devices/netica.js +153 -0
  313. package/dist/devices/netica.js.map +1 -0
  314. package/dist/devices/niko.d.ts.map +1 -1
  315. package/dist/devices/niko.js +10 -8
  316. package/dist/devices/niko.js.map +1 -1
  317. package/dist/devices/nodon.d.ts.map +1 -1
  318. package/dist/devices/nodon.js +6 -4
  319. package/dist/devices/nodon.js.map +1 -1
  320. package/dist/devices/nous.d.ts.map +1 -1
  321. package/dist/devices/nous.js +160 -61
  322. package/dist/devices/nous.js.map +1 -1
  323. package/dist/devices/nue_3a.d.ts.map +1 -1
  324. package/dist/devices/nue_3a.js +2 -0
  325. package/dist/devices/nue_3a.js.map +1 -1
  326. package/dist/devices/onesti.d.ts +11 -1
  327. package/dist/devices/onesti.d.ts.map +1 -1
  328. package/dist/devices/onesti.js +30 -6
  329. package/dist/devices/onesti.js.map +1 -1
  330. package/dist/devices/onokom.d.ts.map +1 -1
  331. package/dist/devices/onokom.js +1152 -2309
  332. package/dist/devices/onokom.js.map +1 -1
  333. package/dist/devices/orvibo.d.ts +17 -1
  334. package/dist/devices/orvibo.d.ts.map +1 -1
  335. package/dist/devices/orvibo.js +71 -4
  336. package/dist/devices/orvibo.js.map +1 -1
  337. package/dist/devices/owon.d.ts.map +1 -1
  338. package/dist/devices/owon.js +382 -62
  339. package/dist/devices/owon.js.map +1 -1
  340. package/dist/devices/paul_neuhaus.d.ts.map +1 -1
  341. package/dist/devices/paul_neuhaus.js +9 -0
  342. package/dist/devices/paul_neuhaus.js.map +1 -1
  343. package/dist/devices/paulmann.js +2 -2
  344. package/dist/devices/paulmann.js.map +1 -1
  345. package/dist/devices/perenio.d.ts.map +1 -1
  346. package/dist/devices/perenio.js +57 -39
  347. package/dist/devices/perenio.js.map +1 -1
  348. package/dist/devices/philips.d.ts.map +1 -1
  349. package/dist/devices/philips.js +194 -53
  350. package/dist/devices/philips.js.map +1 -1
  351. package/dist/devices/plaid.d.ts.map +1 -1
  352. package/dist/devices/plaid.js +18 -1
  353. package/dist/devices/plaid.js.map +1 -1
  354. package/dist/devices/plugwise.d.ts.map +1 -1
  355. package/dist/devices/plugwise.js +307 -26
  356. package/dist/devices/plugwise.js.map +1 -1
  357. package/dist/devices/profalux.d.ts.map +1 -1
  358. package/dist/devices/profalux.js +25 -1
  359. package/dist/devices/profalux.js.map +1 -1
  360. package/dist/devices/pushok.d.ts.map +1 -1
  361. package/dist/devices/pushok.js +44 -0
  362. package/dist/devices/pushok.js.map +1 -1
  363. package/dist/devices/qa.d.ts.map +1 -1
  364. package/dist/devices/qa.js +80 -32
  365. package/dist/devices/qa.js.map +1 -1
  366. package/dist/devices/repenic_ltd.d.ts +3 -0
  367. package/dist/devices/repenic_ltd.d.ts.map +1 -0
  368. package/dist/devices/repenic_ltd.js +97 -0
  369. package/dist/devices/repenic_ltd.js.map +1 -0
  370. package/dist/devices/robb.d.ts.map +1 -1
  371. package/dist/devices/robb.js +13 -1
  372. package/dist/devices/robb.js.map +1 -1
  373. package/dist/devices/rtx.js +1 -1
  374. package/dist/devices/rtx.js.map +1 -1
  375. package/dist/devices/salus_controls.d.ts.map +1 -1
  376. package/dist/devices/salus_controls.js +44 -17
  377. package/dist/devices/salus_controls.js.map +1 -1
  378. package/dist/devices/samotech.js +2 -2
  379. package/dist/devices/samotech.js.map +1 -1
  380. package/dist/devices/sber.d.ts.map +1 -1
  381. package/dist/devices/sber.js +435 -26
  382. package/dist/devices/sber.js.map +1 -1
  383. package/dist/devices/schneider_electric.d.ts.map +1 -1
  384. package/dist/devices/schneider_electric.js +808 -252
  385. package/dist/devices/schneider_electric.js.map +1 -1
  386. package/dist/devices/securifi.d.ts.map +1 -1
  387. package/dist/devices/securifi.js +24 -1
  388. package/dist/devices/securifi.js.map +1 -1
  389. package/dist/devices/sengled.d.ts.map +1 -1
  390. package/dist/devices/sengled.js +5 -4
  391. package/dist/devices/sengled.js.map +1 -1
  392. package/dist/devices/shada.d.ts +3 -0
  393. package/dist/devices/shada.d.ts.map +1 -0
  394. package/dist/devices/{aubess.js → shada.js} +7 -20
  395. package/dist/devices/shada.js.map +1 -0
  396. package/dist/devices/shelly.d.ts.map +1 -1
  397. package/dist/devices/shelly.js +646 -61
  398. package/dist/devices/shelly.js.map +1 -1
  399. package/dist/devices/shinasystem.d.ts.map +1 -1
  400. package/dist/devices/shinasystem.js +75 -16
  401. package/dist/devices/shinasystem.js.map +1 -1
  402. package/dist/devices/siglis.d.ts.map +1 -1
  403. package/dist/devices/siglis.js +26 -0
  404. package/dist/devices/siglis.js.map +1 -1
  405. package/dist/devices/sinope.d.ts.map +1 -1
  406. package/dist/devices/sinope.js +163 -83
  407. package/dist/devices/sinope.js.map +1 -1
  408. package/dist/devices/slacky_diy.d.ts.map +1 -1
  409. package/dist/devices/slacky_diy.js +3007 -69
  410. package/dist/devices/slacky_diy.js.map +1 -1
  411. package/dist/devices/smarli.d.ts.map +1 -1
  412. package/dist/devices/smarli.js +4 -5
  413. package/dist/devices/smarli.js.map +1 -1
  414. package/dist/devices/smartthings.d.ts +25 -0
  415. package/dist/devices/smartthings.d.ts.map +1 -1
  416. package/dist/devices/smartthings.js +62 -11
  417. package/dist/devices/smartthings.js.map +1 -1
  418. package/dist/devices/somfy.d.ts.map +1 -1
  419. package/dist/devices/somfy.js +14 -1
  420. package/dist/devices/somfy.js.map +1 -1
  421. package/dist/devices/sonoff.d.ts +42 -1
  422. package/dist/devices/sonoff.d.ts.map +1 -1
  423. package/dist/devices/sonoff.js +5161 -2007
  424. package/dist/devices/sonoff.js.map +1 -1
  425. package/dist/devices/sprut.d.ts.map +1 -1
  426. package/dist/devices/sprut.js +5 -4
  427. package/dist/devices/sprut.js.map +1 -1
  428. package/dist/devices/stello.d.ts.map +1 -1
  429. package/dist/devices/stello.js +6 -24
  430. package/dist/devices/stello.js.map +1 -1
  431. package/dist/devices/stelpro.d.ts +51 -1
  432. package/dist/devices/stelpro.d.ts.map +1 -1
  433. package/dist/devices/stelpro.js +86 -23
  434. package/dist/devices/stelpro.js.map +1 -1
  435. package/dist/devices/sunricher.d.ts.map +1 -1
  436. package/dist/devices/sunricher.js +215 -29
  437. package/dist/devices/sunricher.js.map +1 -1
  438. package/dist/devices/tech.d.ts.map +1 -1
  439. package/dist/devices/tech.js +35 -35
  440. package/dist/devices/tech.js.map +1 -1
  441. package/dist/devices/terncy.d.ts.map +1 -1
  442. package/dist/devices/terncy.js +398 -2
  443. package/dist/devices/terncy.js.map +1 -1
  444. package/dist/devices/third_reality.d.ts +42 -1
  445. package/dist/devices/third_reality.d.ts.map +1 -1
  446. package/dist/devices/third_reality.js +521 -110
  447. package/dist/devices/third_reality.js.map +1 -1
  448. package/dist/devices/tuya.d.ts.map +1 -1
  449. package/dist/devices/tuya.js +3143 -815
  450. package/dist/devices/tuya.js.map +1 -1
  451. package/dist/devices/ubisys.d.ts.map +1 -1
  452. package/dist/devices/ubisys.js +11 -8
  453. package/dist/devices/ubisys.js.map +1 -1
  454. package/dist/devices/vesternet.d.ts.map +1 -1
  455. package/dist/devices/vesternet.js +7 -0
  456. package/dist/devices/vesternet.js.map +1 -1
  457. package/dist/devices/viessmann.d.ts.map +1 -1
  458. package/dist/devices/viessmann.js +107 -4
  459. package/dist/devices/viessmann.js.map +1 -1
  460. package/dist/devices/vsmart.d.ts.map +1 -1
  461. package/dist/devices/vsmart.js +11 -0
  462. package/dist/devices/vsmart.js.map +1 -1
  463. package/dist/devices/weiser.d.ts.map +1 -1
  464. package/dist/devices/weiser.js +6 -0
  465. package/dist/devices/weiser.js.map +1 -1
  466. package/dist/devices/wirenboard.d.ts.map +1 -1
  467. package/dist/devices/wirenboard.js +124 -21
  468. package/dist/devices/wirenboard.js.map +1 -1
  469. package/dist/devices/wmun.d.ts.map +1 -1
  470. package/dist/devices/wmun.js +3 -2
  471. package/dist/devices/wmun.js.map +1 -1
  472. package/dist/devices/woolley.d.ts.map +1 -1
  473. package/dist/devices/woolley.js +6 -9
  474. package/dist/devices/woolley.js.map +1 -1
  475. package/dist/devices/woox.js +2 -2
  476. package/dist/devices/woox.js.map +1 -1
  477. package/dist/devices/xyzroe.d.ts.map +1 -1
  478. package/dist/devices/xyzroe.js +16 -4
  479. package/dist/devices/xyzroe.js.map +1 -1
  480. package/dist/devices/yale.d.ts.map +1 -1
  481. package/dist/devices/yale.js +138 -40
  482. package/dist/devices/yale.js.map +1 -1
  483. package/dist/devices/yandex.d.ts.map +1 -1
  484. package/dist/devices/yandex.js +93 -11
  485. package/dist/devices/yandex.js.map +1 -1
  486. package/dist/devices/yokis.d.ts.map +1 -1
  487. package/dist/devices/yokis.js +122 -85
  488. package/dist/devices/yokis.js.map +1 -1
  489. package/dist/devices/zbeacon.d.ts.map +1 -1
  490. package/dist/devices/zbeacon.js +0 -7
  491. package/dist/devices/zbeacon.js.map +1 -1
  492. package/dist/devices/zemismart.d.ts.map +1 -1
  493. package/dist/devices/zemismart.js +148 -11
  494. package/dist/devices/zemismart.js.map +1 -1
  495. package/dist/devices/zigbeetlc.js +1 -1
  496. package/dist/devices/zigbeetlc.js.map +1 -1
  497. package/dist/index.d.ts +1 -1
  498. package/dist/index.d.ts.map +1 -1
  499. package/dist/index.js +40 -35
  500. package/dist/index.js.map +1 -1
  501. package/dist/lib/bosch.d.ts.map +1 -1
  502. package/dist/lib/bosch.js +212 -42
  503. package/dist/lib/bosch.js.map +1 -1
  504. package/dist/lib/constants.d.ts +99 -17
  505. package/dist/lib/constants.d.ts.map +1 -1
  506. package/dist/lib/constants.js +15 -2
  507. package/dist/lib/constants.js.map +1 -1
  508. package/dist/lib/develco.d.ts +11 -0
  509. package/dist/lib/develco.d.ts.map +1 -1
  510. package/dist/lib/develco.js +78 -9
  511. package/dist/lib/develco.js.map +1 -1
  512. package/dist/lib/exposes.d.ts +11 -10
  513. package/dist/lib/exposes.d.ts.map +1 -1
  514. package/dist/lib/exposes.js +7 -48
  515. package/dist/lib/exposes.js.map +1 -1
  516. package/dist/lib/heiman.d.ts.map +1 -1
  517. package/dist/lib/heiman.js +34 -14
  518. package/dist/lib/heiman.js.map +1 -1
  519. package/dist/lib/ikea.d.ts +17 -0
  520. package/dist/lib/ikea.d.ts.map +1 -1
  521. package/dist/lib/ikea.js +46 -20
  522. package/dist/lib/ikea.js.map +1 -1
  523. package/dist/lib/inovelli.d.ts +86 -0
  524. package/dist/lib/inovelli.d.ts.map +1 -0
  525. package/dist/lib/inovelli.js +2580 -0
  526. package/dist/lib/inovelli.js.map +1 -0
  527. package/dist/lib/ledvance.d.ts +4 -4
  528. package/dist/lib/ledvance.d.ts.map +1 -1
  529. package/dist/lib/ledvance.js +23 -7
  530. package/dist/lib/ledvance.js.map +1 -1
  531. package/dist/lib/legacy.d.ts +21 -2
  532. package/dist/lib/legacy.d.ts.map +1 -1
  533. package/dist/lib/legacy.js +29 -2
  534. package/dist/lib/legacy.js.map +1 -1
  535. package/dist/lib/legrand.d.ts +65 -6
  536. package/dist/lib/legrand.d.ts.map +1 -1
  537. package/dist/lib/legrand.js +188 -9
  538. package/dist/lib/legrand.js.map +1 -1
  539. package/dist/lib/light.d.ts +1 -1
  540. package/dist/lib/light.d.ts.map +1 -1
  541. package/dist/lib/light.js +2 -2
  542. package/dist/lib/light.js.map +1 -1
  543. package/dist/lib/lumi.d.ts +88 -44
  544. package/dist/lib/lumi.d.ts.map +1 -1
  545. package/dist/lib/lumi.js +1813 -59
  546. package/dist/lib/lumi.js.map +1 -1
  547. package/dist/lib/modernExtend.d.ts +19 -14
  548. package/dist/lib/modernExtend.d.ts.map +1 -1
  549. package/dist/lib/modernExtend.js +37 -35
  550. package/dist/lib/modernExtend.js.map +1 -1
  551. package/dist/lib/namron.d.ts +131 -28
  552. package/dist/lib/namron.d.ts.map +1 -1
  553. package/dist/lib/namron.js +723 -42
  554. package/dist/lib/namron.js.map +1 -1
  555. package/dist/lib/nodon.d.ts.map +1 -1
  556. package/dist/lib/nodon.js +3 -1
  557. package/dist/lib/nodon.js.map +1 -1
  558. package/dist/lib/philips.d.ts +106 -2
  559. package/dist/lib/philips.d.ts.map +1 -1
  560. package/dist/lib/philips.js +945 -44
  561. package/dist/lib/philips.js.map +1 -1
  562. package/dist/lib/sonoff.d.ts +77 -10
  563. package/dist/lib/sonoff.d.ts.map +1 -1
  564. package/dist/lib/sonoff.js +165 -34
  565. package/dist/lib/sonoff.js.map +1 -1
  566. package/dist/lib/sunricher.d.ts +1 -1
  567. package/dist/lib/sunricher.d.ts.map +1 -1
  568. package/dist/lib/sunricher.js +6 -8
  569. package/dist/lib/sunricher.js.map +1 -1
  570. package/dist/lib/tuya.d.ts +558 -13
  571. package/dist/lib/tuya.d.ts.map +1 -1
  572. package/dist/lib/tuya.js +1518 -10
  573. package/dist/lib/tuya.js.map +1 -1
  574. package/dist/lib/types.d.ts +9 -6
  575. package/dist/lib/types.d.ts.map +1 -1
  576. package/dist/lib/ubisys.d.ts +1 -1
  577. package/dist/lib/ubisys.d.ts.map +1 -1
  578. package/dist/lib/ubisys.js +60 -5
  579. package/dist/lib/ubisys.js.map +1 -1
  580. package/dist/lib/utils.d.ts +5 -8
  581. package/dist/lib/utils.d.ts.map +1 -1
  582. package/dist/lib/utils.js +30 -17
  583. package/dist/lib/utils.js.map +1 -1
  584. package/dist/lib/zosung.d.ts +69 -6
  585. package/dist/lib/zosung.d.ts.map +1 -1
  586. package/dist/lib/zosung.js +113 -1
  587. package/dist/lib/zosung.js.map +1 -1
  588. package/dist/models-index.json +1 -1
  589. package/package.json +2 -2
  590. package/dist/devices/aubess.d.ts.map +0 -1
  591. package/dist/devices/aubess.js.map +0 -1
@@ -44,6 +44,710 @@ const reporting = __importStar(require("../lib/reporting"));
44
44
  const utils = __importStar(require("../lib/utils"));
45
45
  const e = exposes.presets;
46
46
  const ea = exposes.access;
47
+ const cluster = {
48
+ addCtmGroupConfigCluster: () => m.deviceAddCustomCluster("ctmGroupConfig", {
49
+ name: "ctmGroupConfig",
50
+ ID: 0xfea7,
51
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
52
+ attributes: {
53
+ groupId: { name: "groupId", ID: 0x0000, type: zigbee_herdsman_1.Zcl.DataType.UINT16, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
54
+ },
55
+ commands: {},
56
+ commandsResponse: {},
57
+ }),
58
+ addCtmStoveGuardCluster: () => m.deviceAddCustomCluster("ctmStoveGuard", {
59
+ name: "ctmStoveGuard",
60
+ ID: 0xffc9, // 65481
61
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
62
+ attributes: {
63
+ alarmStatus: { name: "alarmStatus", ID: 0x0001, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS }, // .UINT8
64
+ batteryLow: { name: "batteryLow", ID: 0x0002, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
65
+ stoveTemperature: {
66
+ name: "stoveTemperature",
67
+ ID: 0x0003,
68
+ type: zigbee_herdsman_1.Zcl.DataType.UINT16,
69
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
70
+ },
71
+ ambientTemperature: {
72
+ name: "ambientTemperature",
73
+ ID: 0x0004,
74
+ type: zigbee_herdsman_1.Zcl.DataType.UINT16,
75
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
76
+ },
77
+ active: { name: "active", ID: 0x0005, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
78
+ runtime: { name: "runtime", ID: 0x0006, type: zigbee_herdsman_1.Zcl.DataType.UINT16, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
79
+ runtimeTimeout: {
80
+ name: "runtimeTimeout",
81
+ ID: 0x0007,
82
+ type: zigbee_herdsman_1.Zcl.DataType.UINT16,
83
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
84
+ },
85
+ resetReason: { name: "resetReason", ID: 0x0008, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
86
+ dipSwitch: { name: "dipSwitch", ID: 0x0009, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
87
+ swVersion: { name: "swVersion", ID: 0x000a, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
88
+ hwVersion: { name: "hwVersion", ID: 0x000b, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
89
+ bootloaderVersion: {
90
+ name: "bootloaderVersion",
91
+ ID: 0x000c,
92
+ type: zigbee_herdsman_1.Zcl.DataType.UINT8,
93
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
94
+ },
95
+ model: { name: "model", ID: 0x000d, type: zigbee_herdsman_1.Zcl.DataType.UINT16, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
96
+ // Use type IEEE_ADDR for EmberEUI64
97
+ relayAddress: {
98
+ name: "relayAddress",
99
+ ID: 0x0010,
100
+ type: zigbee_herdsman_1.Zcl.DataType.IEEE_ADDR,
101
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
102
+ },
103
+ currentFlag: { name: "currentFlag", ID: 0x0100, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
104
+ relayCurrent: { name: "relayCurrent", ID: 0x0101, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
105
+ relayStatus: { name: "relayStatus", ID: 0x0102, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
106
+ externalButton: {
107
+ name: "externalButton",
108
+ ID: 0x0103,
109
+ type: zigbee_herdsman_1.Zcl.DataType.UINT8,
110
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
111
+ },
112
+ relayAlarm: { name: "relayAlarm", ID: 0x0104, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
113
+ relayAlarmStatus: {
114
+ name: "relayAlarmStatus",
115
+ ID: 0x0105,
116
+ type: zigbee_herdsman_1.Zcl.DataType.UINT8,
117
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
118
+ },
119
+ },
120
+ commands: {},
121
+ commandsResponse: {},
122
+ }),
123
+ addCtmGenOnOffCluster: () => m.deviceAddCustomCluster("genOnOff", {
124
+ name: "genOnOff",
125
+ ID: zigbee_herdsman_1.Zcl.Clusters.genOnOff.ID,
126
+ attributes: {
127
+ deviceMode: { name: "deviceMode", ID: 0x2200, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
128
+ deviceEnabled: { name: "deviceEnabled", ID: 0x2201, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
129
+ childLock: { name: "childLock", ID: 0x2202, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
130
+ currentFlag: { name: "currentFlag", ID: 0x5000, type: zigbee_herdsman_1.Zcl.DataType.UINT8, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
131
+ relayState: { name: "relayState", ID: 0x5001, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
132
+ },
133
+ commands: {},
134
+ commandsResponse: {},
135
+ }),
136
+ addCtmToHvacThermostatCluster: () => m.deviceAddCustomCluster("hvacThermostat", {
137
+ name: "hvacThermostat",
138
+ ID: zigbee_herdsman_1.Zcl.Clusters.hvacThermostat.ID,
139
+ attributes: {
140
+ ctmLoad: { name: "ctmLoad", ID: 0x0401, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 0xffff },
141
+ ctmDisplayText: { name: "ctmDisplayText", ID: 0x0402, type: zigbee_herdsman_1.Zcl.DataType.CHAR_STR, write: true },
142
+ ctmSensor: { name: "ctmSensor", ID: 0x0403, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true, max: 0xff },
143
+ ctmRegulatorMode: { name: "ctmRegulatorMode", ID: 0x0405, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, write: true },
144
+ ctmPowerStatus: { name: "ctmPowerStatus", ID: 0x0406, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, write: true },
145
+ ctmMeanPower: { name: "ctmMeanPower", ID: 0x0408, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
146
+ ctmFloorTemp: { name: "ctmFloorTemp", ID: 0x0409, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
147
+ ctmNightSwitching: { name: "ctmNightSwitching", ID: 0x0411, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, write: true },
148
+ ctmFrostGuard: { name: "ctmFrostGuard", ID: 0x0412, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, write: true },
149
+ ctmChildLock: { name: "ctmChildLock", ID: 0x0413, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, write: true },
150
+ ctmMaxFloorTemp: { name: "ctmMaxFloorTemp", ID: 0x0414, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
151
+ ctmRelayState: { name: "ctmRelayState", ID: 0x0415, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
152
+ ctmRegulatorSetpoint: { name: "ctmRegulatorSetpoint", ID: 0x0420, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true },
153
+ ctmRegulationMode: { name: "ctmRegulationMode", ID: 0x0421, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true },
154
+ ctmOperationMode: { name: "ctmOperationMode", ID: 0x0422, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true },
155
+ ctmMaxFloorGuard: { name: "ctmMaxFloorGuard", ID: 0x0423, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, write: true },
156
+ ctmWeeklyTimer: { name: "ctmWeeklyTimer", ID: 0x0424, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN, write: true },
157
+ ctmFrostGuardSetpoint: { name: "ctmFrostGuardSetpoint", ID: 0x0425, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true },
158
+ ctmExternalTemp: { name: "ctmExternalTemp", ID: 0x0426, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
159
+ ctmExternalSensorSource: { name: "ctmExternalSensorSource", ID: 0x0428, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true },
160
+ ctmAirTemp: { name: "ctmAirTemp", ID: 0x0429, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
161
+ ctmFloorSensorError: { name: "ctmFloorSensorError", ID: 0x042b, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
162
+ ctmAirSensorError: { name: "ctmAirSensorError", ID: 0x042c, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
163
+ },
164
+ commands: {},
165
+ commandsResponse: {},
166
+ }),
167
+ };
168
+ const _ctmExtend = {
169
+ groupId: (args) => m.numeric({
170
+ name: "group_id",
171
+ cluster: "ctmGroupConfig",
172
+ attribute: "groupId",
173
+ description: "The device sends commands with this group ID. Put devices in this group to control them.",
174
+ access: "STATE",
175
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
176
+ }),
177
+ alarmStatus: (args) => m.enumLookup({
178
+ name: "alarm_status",
179
+ cluster: "ctmStoveGuard",
180
+ attribute: "alarmStatus",
181
+ description: "Alarm status.",
182
+ access: "STATE",
183
+ lookup: {
184
+ OK: 0x00,
185
+ Tamper: 0x01,
186
+ "High Temperature": 0x02,
187
+ Timer: 0x03,
188
+ "Battery alarm": 0x07,
189
+ Error: 0x08,
190
+ },
191
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
192
+ ...args,
193
+ }),
194
+ batteryLow: (args) => m.enumLookup({
195
+ name: "battery_low",
196
+ cluster: "ctmStoveGuard",
197
+ attribute: "batteryLow",
198
+ description: "Indicates the status of the battery ('OK' or 'Change')",
199
+ access: "STATE",
200
+ lookup: {
201
+ "Battery OK": 0x00,
202
+ "Change battery": 0x01,
203
+ },
204
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
205
+ ...args,
206
+ }),
207
+ stoveTemperature: (args) => m.numeric({
208
+ name: "stove_temperature",
209
+ cluster: "ctmStoveGuard",
210
+ attribute: "stoveTemperature",
211
+ description: "Stove temperature",
212
+ access: "STATE",
213
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
214
+ ...args,
215
+ }),
216
+ ambientTemperature: (args) => m.numeric({
217
+ name: "ambient_temperature",
218
+ cluster: "ctmStoveGuard",
219
+ attribute: "ambientTemperature",
220
+ description: "X",
221
+ access: "STATE",
222
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
223
+ ...args,
224
+ }),
225
+ active: (args) => m.enumLookup({
226
+ name: "active",
227
+ cluster: "ctmStoveGuard",
228
+ attribute: "active",
229
+ description: "Stove guard active/inactive (Stove in use)",
230
+ access: "STATE",
231
+ lookup: {
232
+ Inactive: 0x00,
233
+ Active: 0x01,
234
+ },
235
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
236
+ ...args,
237
+ }),
238
+ runtime: (args) => m.numeric({
239
+ name: "runtime",
240
+ cluster: "ctmStoveGuard",
241
+ attribute: "runtime",
242
+ description: "",
243
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
244
+ ...args,
245
+ }),
246
+ runtimeTimeout: (args) => m.numeric({
247
+ name: "runtime_timeout",
248
+ cluster: "ctmStoveGuard",
249
+ attribute: "runtimeTimeout",
250
+ description: "",
251
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
252
+ ...args,
253
+ }),
254
+ resetReason: (args) => m.enumLookup({
255
+ name: "reset_reason",
256
+ cluster: "ctmStoveGuard",
257
+ attribute: "resetReason",
258
+ description: "Reset reason.",
259
+ access: "STATE",
260
+ lookup: {
261
+ Unknown: 0x00,
262
+ "Power-on Reset": 0x01,
263
+ "External Reset": 0x02,
264
+ "Brown-Out Reset": 0x03,
265
+ "Watchdog Reset": 0x04,
266
+ "Program and debug interface reset": 0x05,
267
+ "Software reset": 0x06,
268
+ },
269
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
270
+ ...args,
271
+ }),
272
+ dipSwitch: (args) => m.numeric({
273
+ name: "dip_switch",
274
+ cluster: "ctmStoveGuard",
275
+ attribute: "dipSwitch",
276
+ description: "Dip switch",
277
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
278
+ ...args,
279
+ }),
280
+ swVersion: (args) => m.numeric({
281
+ name: "sw_version",
282
+ cluster: "ctmStoveGuard",
283
+ attribute: "swVersion",
284
+ description: "Software version",
285
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
286
+ ...args,
287
+ }),
288
+ hwVersion: (args) => m.numeric({
289
+ name: "hw_version",
290
+ cluster: "ctmStoveGuard",
291
+ attribute: "hwVersion",
292
+ description: "Hardware version",
293
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
294
+ ...args,
295
+ }),
296
+ bootloaderVersion: (args) => m.numeric({
297
+ name: "bootloader_version",
298
+ cluster: "ctmStoveGuard",
299
+ attribute: "bootloaderVersion",
300
+ description: "Bootloader version",
301
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
302
+ ...args,
303
+ }),
304
+ model: (args) => m.enumLookup({
305
+ name: "model",
306
+ cluster: "ctmStoveGuard",
307
+ attribute: "model",
308
+ description: "Stove guard model.",
309
+ access: "STATE",
310
+ lookup: {
311
+ "mKomfy 1.8": 0x0001,
312
+ "mKomfy Infinity": 0x0002,
313
+ "mKomfy Hybrid": 0x0003,
314
+ "mKomfy Tak": 0x0004,
315
+ },
316
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
317
+ ...args,
318
+ }),
319
+ relayAddress: (args) => m.numeric({
320
+ name: "relay_address",
321
+ cluster: "ctmStoveGuard",
322
+ attribute: "relayAddress",
323
+ description: "",
324
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
325
+ ...args,
326
+ }),
327
+ currentFlagStove: (args) => m.enumLookup({
328
+ name: "current_flag",
329
+ cluster: "ctmStoveGuard",
330
+ attribute: "currentFlag",
331
+ description: ")",
332
+ access: "STATE",
333
+ lookup: {
334
+ False: 0x00,
335
+ True: 0x01,
336
+ Unknown: 0xff,
337
+ },
338
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
339
+ ...args,
340
+ }),
341
+ relayCurrent: (args) => m.numeric({
342
+ name: "relay_current",
343
+ cluster: "ctmStoveGuard",
344
+ attribute: "relayCurrent",
345
+ description: "Relay current.",
346
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
347
+ ...args,
348
+ }),
349
+ relayStatus: (args) => m.enumLookup({
350
+ name: "relay_status",
351
+ cluster: "ctmStoveGuard",
352
+ attribute: "relayStatus",
353
+ description: "Relay status.",
354
+ access: "STATE",
355
+ lookup: {
356
+ OFF: 0x00,
357
+ ON: 0x01,
358
+ "Not present": 0x02,
359
+ Unknown: 0xff,
360
+ },
361
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
362
+ ...args,
363
+ }),
364
+ externalButton: (args) => m.enumLookup({
365
+ name: "external_button",
366
+ cluster: "ctmStoveGuard",
367
+ attribute: "externalButton",
368
+ description: "External button.",
369
+ access: "STATE",
370
+ lookup: {
371
+ "Not clicked": 0x00,
372
+ "Button clicked": 0x01,
373
+ Unknown: 0xff,
374
+ },
375
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
376
+ ...args,
377
+ }),
378
+ relayAlarm: (args) => m.enumLookup({
379
+ name: "relay_alarm",
380
+ cluster: "ctmStoveGuard",
381
+ attribute: "relayAlarm",
382
+ description: "Relay alarm.",
383
+ access: "STATE",
384
+ lookup: {
385
+ OK: 0x00,
386
+ "No communication": 0x01,
387
+ "Over Current": 0x02,
388
+ "Over Temperature": 0x03,
389
+ },
390
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
391
+ ...args,
392
+ }),
393
+ relayAlarmStatus: (args) => m.enumLookup({
394
+ name: "relay_alarm_status",
395
+ cluster: "ctmStoveGuard",
396
+ attribute: "relayAlarmStatus",
397
+ description: "Relay alarm status.",
398
+ access: "STATE",
399
+ lookup: {
400
+ OK: 0x00,
401
+ Tamper: 0x01,
402
+ "High Temperature": 0x02,
403
+ Timer: 0x03,
404
+ "Battery alarm": 0x07,
405
+ Error: 0x08,
406
+ },
407
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
408
+ ...args,
409
+ }),
410
+ deviceMode: (args) => m.enumLookup({
411
+ name: "device_mode",
412
+ cluster: "genOnOff",
413
+ attribute: "deviceMode",
414
+ description: "ZZZ",
415
+ access: "STATE",
416
+ lookup: {
417
+ "AU: Astro clock": 0x00,
418
+ "TM: Timer": 0x01,
419
+ "DU: Daily timer": 0x02,
420
+ "UU: Weekly Timer": 0x03,
421
+ },
422
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
423
+ ...args,
424
+ }),
425
+ deviceEnabled: (args) => m.binary({
426
+ name: "device_enabled",
427
+ cluster: "genOnOff",
428
+ attribute: "deviceEnabled",
429
+ description: "Turn the device on or off",
430
+ access: "ALL",
431
+ valueOn: ["On", 0],
432
+ valueOff: ["Off", 0],
433
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
434
+ ...args,
435
+ }),
436
+ childLock: (args) => m.binary({
437
+ name: "child_lock",
438
+ cluster: "genOnOff",
439
+ attribute: "childLock",
440
+ description: "Enables/disables physical input on the device.",
441
+ access: "STATE_SET",
442
+ valueOn: ["LOCK", 1],
443
+ valueOff: ["UNLOCK", 0],
444
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
445
+ ...args,
446
+ }),
447
+ currentFlag: (args) => m.numeric({
448
+ name: "current_flag",
449
+ cluster: "genOnOff",
450
+ attribute: "currentFlag",
451
+ description: "Current flag.",
452
+ access: "STATE_SET",
453
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
454
+ ...args,
455
+ }),
456
+ relayState: (args) => m.binary({
457
+ name: "state",
458
+ cluster: "genOnOff",
459
+ attribute: "relayState",
460
+ description: "Relay state.",
461
+ access: "STATE_SET",
462
+ valueOn: ["ON", 1],
463
+ valueOff: ["OFF", 0],
464
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
465
+ ...args,
466
+ }),
467
+ ctmLoad: (args) => m.numeric({
468
+ name: "load",
469
+ cluster: "hvacThermostat",
470
+ attribute: "ctmLoad",
471
+ description: "Load in W when heating is on (between 0-3600 W). The thermostat uses the value as input to the mean_power calculation.",
472
+ unit: "W",
473
+ valueMin: 0,
474
+ valueMax: 3600,
475
+ access: "ALL",
476
+ entityCategory: "config",
477
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
478
+ ...args,
479
+ }),
480
+ ctmDisplayText: (args) => m.text({
481
+ name: "display_text",
482
+ cluster: "hvacThermostat",
483
+ attribute: "ctmDisplayText",
484
+ description: "Displayed text on thermostat display (zone). Max 19 characters",
485
+ access: "ALL",
486
+ entityCategory: "config",
487
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
488
+ ...args,
489
+ }),
490
+ ctmSensor: (args) => m.enumLookup({
491
+ name: "sensor",
492
+ cluster: "hvacThermostat",
493
+ attribute: "ctmSensor",
494
+ description: "Select temperature sensor to use",
495
+ lookup: {
496
+ "Air sensor": 0x00,
497
+ "Floor sensor": 0x01,
498
+ "External sensor": 0x02,
499
+ Regulator: 0x03,
500
+ "MV Air": 0x04,
501
+ "MV External Air": 0x05,
502
+ "MV Regulator": 0x06,
503
+ },
504
+ access: "ALL",
505
+ entityCategory: "config",
506
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
507
+ ...args,
508
+ }),
509
+ ctmRegulatorMode: (args) => m.binary({
510
+ name: "regulator_mode",
511
+ cluster: "hvacThermostat",
512
+ attribute: "ctmRegulatorMode",
513
+ description: "Device in regulator or thermostat mode.",
514
+ access: "ALL",
515
+ reporting: { min: "1_SECOND", max: "MAX", change: null },
516
+ valueOn: ["regulator", 1],
517
+ valueOff: ["thermostat", 0],
518
+ entityCategory: "config",
519
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
520
+ ...args,
521
+ }),
522
+ ctmPowerStatus: (args) => m.binary({
523
+ name: "power_status",
524
+ cluster: "hvacThermostat",
525
+ attribute: "ctmPowerStatus",
526
+ description: "Relay state.",
527
+ access: "STATE_GET",
528
+ valueOn: ["ON", 1],
529
+ valueOff: ["OFF", 0],
530
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
531
+ ...args,
532
+ }),
533
+ ctmMeanPower: (args) => m.numeric({
534
+ name: "mean_power",
535
+ cluster: "hvacThermostat",
536
+ attribute: "ctmMeanPower",
537
+ description: "Reports average power usage last 10 minutes.",
538
+ unit: "W",
539
+ access: "STATE_GET",
540
+ entityCategory: "diagnostic",
541
+ reporting: { min: "MIN", max: "1_HOUR", change: 5 },
542
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
543
+ ...args,
544
+ }),
545
+ ctmFloorTemp: (args) => m.numeric({
546
+ name: "floor_temp",
547
+ cluster: "hvacThermostat",
548
+ attribute: "ctmFloorTemp",
549
+ scale: 100,
550
+ description: "Current temperature measured from the floor sensor",
551
+ unit: "°C",
552
+ access: "STATE_GET",
553
+ reporting: { min: "MIN", max: "1_HOUR", change: 10 },
554
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
555
+ ...args,
556
+ }),
557
+ ctmNightSwitching: (args) => m.binary({
558
+ name: "night_switching",
559
+ cluster: "hvacThermostat",
560
+ attribute: "ctmNightSwitching",
561
+ description: "Relay state.",
562
+ access: "STATE_SET",
563
+ valueOn: ["ON", 1],
564
+ valueOff: ["OFF", 0],
565
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
566
+ ...args,
567
+ }),
568
+ ctmFrostGuard: (args) => m.binary({
569
+ name: "frost_guard",
570
+ cluster: "hvacThermostat",
571
+ attribute: "ctmFrostGuard",
572
+ description: "When frost guard is ON, it is activated when the thermostat is switched OFF with the ON/OFF button." +
573
+ 'At the same time, the display will fade and the text "Frostsikring x °C" appears in the display and remains until the ' +
574
+ "thermostat is switched on again. ",
575
+ access: "ALL",
576
+ entityCategory: "config",
577
+ reporting: { min: "MIN", max: "MAX", change: null },
578
+ valueOn: ["ON", 1],
579
+ valueOff: ["OFF", 0],
580
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
581
+ ...args,
582
+ }),
583
+ ctmChildLockThermostat: (args) => m.binary({
584
+ name: "child_lock",
585
+ cluster: "hvacThermostat",
586
+ attribute: "ctmChildLock",
587
+ description: "Enables/disables physical input on the device.",
588
+ access: "ALL",
589
+ reporting: { min: "MIN", max: "MAX", change: null },
590
+ valueOn: ["LOCK", 1],
591
+ valueOff: ["UNLOCK", 0],
592
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
593
+ ...args,
594
+ }),
595
+ ctmMaxFloorTemp: (args) => m.numeric({
596
+ name: "max_floor_temp",
597
+ cluster: "hvacThermostat",
598
+ attribute: "ctmMaxFloorTemp",
599
+ description: "Maximum allowed floor temperature.",
600
+ valueMin: 15,
601
+ valueMax: 40,
602
+ unit: "°C",
603
+ access: "ALL",
604
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
605
+ ...args,
606
+ }),
607
+ ctmRelayState: (args) => m.binary({
608
+ name: "relay_state",
609
+ cluster: "hvacThermostat",
610
+ attribute: "ctmRelayState",
611
+ description: "Is heating ON or OFF.",
612
+ access: "STATE",
613
+ valueOn: ["ON", 1],
614
+ valueOff: ["OFF", 0],
615
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
616
+ ...args,
617
+ }),
618
+ ctmRegulatorSetpoint: (args) => m.numeric({
619
+ name: "regulator_setpoint",
620
+ cluster: "hvacThermostat",
621
+ attribute: "ctmRegulatorSetpoint",
622
+ description: "Setpoint in %, use only when the thermostat is in regulator mode.",
623
+ valueMin: 1,
624
+ valueMax: 99,
625
+ unit: "%",
626
+ access: "ALL",
627
+ reporting: { min: "MIN", max: "1_HOUR", change: 1 },
628
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
629
+ ...args,
630
+ }),
631
+ ctmRegulationMode: (args) => m.enumLookup({
632
+ name: "ctm_regulaton_mode",
633
+ cluster: "hvacThermostat",
634
+ attribute: "ctmRegulationMode",
635
+ description: "Regulation mode",
636
+ lookup: {
637
+ Thermostat: 0x00,
638
+ Regulator: 0x01,
639
+ Zzilent: 0x02,
640
+ },
641
+ access: "ALL",
642
+ entityCategory: "config",
643
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
644
+ ...args,
645
+ }),
646
+ ctmOperationMode: (args) =>
647
+ // const presetLookup = {0: "off", 1: "away", 2: "sleep", 3: "home"};
648
+ m.enumLookup({
649
+ name: "ctm_operation_mode",
650
+ cluster: "hvacThermostat",
651
+ attribute: "ctmOperationMode",
652
+ description: "Regulation mode",
653
+ lookup: {
654
+ OFF: 0x00,
655
+ "Anti-Freeze": "0x01",
656
+ "Night Saving": 0x02,
657
+ "Comfort/ON": 0x03,
658
+ },
659
+ access: "ALL",
660
+ reporting: { min: "MIN", max: "1_HOUR", change: 1 },
661
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
662
+ ...args,
663
+ }),
664
+ ctmMaxFloorGuard: (args) => m.binary({
665
+ name: "max_floor_guard",
666
+ cluster: "hvacThermostat",
667
+ attribute: "ctmMaxFloorGuard",
668
+ description: "If 'Max floor guard' is ON the thermostat will stop heating if the floor temperature becomes higher than 'Max floor temp'.",
669
+ access: "ALL",
670
+ valueOn: ["ON", 1],
671
+ valueOff: ["OFF", 0],
672
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
673
+ ...args,
674
+ }),
675
+ ctmWeeklyTimer: (args) => m.binary({
676
+ name: "weekly_timer",
677
+ cluster: "hvacThermostat",
678
+ attribute: "ctmWeeklyTimer",
679
+ description: "Weekly timer enabled/disabled.",
680
+ access: "ALL",
681
+ valueOn: ["ON", 1],
682
+ valueOff: ["OFF", 0],
683
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
684
+ ...args,
685
+ }),
686
+ ctmFrostGuardSetpoint: (args) => m.numeric({
687
+ name: "frost_guard_setpoint",
688
+ cluster: "hvacThermostat",
689
+ attribute: "ctmFrostGuardSetpoint",
690
+ description: "Temperature setpoint used when frost guard is active.",
691
+ access: "ALL",
692
+ unit: "°C",
693
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
694
+ ...args,
695
+ }),
696
+ ctmExternalTemp: (args) => m.numeric({
697
+ name: "external_temp",
698
+ cluster: "hvacThermostat",
699
+ attribute: "ctmExternalTemp",
700
+ scale: 100,
701
+ description: "Current temperature measured from the external sensor.",
702
+ access: "STATE_GET",
703
+ unit: "°C",
704
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
705
+ ...args,
706
+ }),
707
+ ctmExternalSensorSource: (args) => m.numeric({
708
+ name: "external_sensor_source",
709
+ cluster: "hvacThermostat",
710
+ attribute: "ctmExternalSensorSource",
711
+ description: "External sensor source.",
712
+ access: "ALL",
713
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
714
+ ...args,
715
+ }),
716
+ ctmAirTemp: (args) => m.numeric({
717
+ name: "air_temp",
718
+ cluster: "hvacThermostat",
719
+ attribute: "ctmAirTemp",
720
+ scale: 100,
721
+ description: "Current temperature measured from the air sensor.",
722
+ access: "STATE_GET",
723
+ reporting: { min: "MIN", max: "1_HOUR", change: 0.1 },
724
+ unit: "°C",
725
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
726
+ ...args,
727
+ }),
728
+ ctmFloorSensorError: (args) => m.binary({
729
+ name: "floor_sensor_error",
730
+ cluster: "hvacThermostat",
731
+ attribute: "ctmFloorSensorError",
732
+ description: "Indicates a floor sensor error.",
733
+ access: "STATE_GET",
734
+ valueOn: ["ON", 1],
735
+ valueOff: ["OFF", 0],
736
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
737
+ ...args,
738
+ }),
739
+ ctmAirSensorError: (args) => m.binary({
740
+ name: "air_sensor_error",
741
+ cluster: "hvacThermostat",
742
+ attribute: "ctmAirSensorError",
743
+ description: "Indicates an air temperature sensor error.",
744
+ access: "STATE_GET",
745
+ valueOn: ["ON", 1],
746
+ valueOff: ["OFF", 0],
747
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS },
748
+ ...args,
749
+ }),
750
+ };
47
751
  const fzLocal = {
48
752
  ctm_mbd_device_enabled: {
49
753
  cluster: "genOnOff",
@@ -63,9 +767,9 @@ const fzLocal = {
63
767
  convert: (model, msg, publish, options, meta) => {
64
768
  const result = {};
65
769
  const data = msg.data;
66
- if (data[0x2200] !== undefined) {
770
+ if (data.deviceMode !== undefined) {
67
771
  const deviceModeLookup = { 0: "astro_clock", 1: "timer", 2: "daily_timer", 3: "weekly_timer" };
68
- result.device_mode = utils.getFromLookup(data[0x2200], deviceModeLookup);
772
+ result.device_mode = utils.getFromLookup(data.deviceMode, deviceModeLookup);
69
773
  }
70
774
  return result;
71
775
  },
@@ -76,8 +780,8 @@ const fzLocal = {
76
780
  convert: (model, msg, publish, options, meta) => {
77
781
  const result = {};
78
782
  const data = msg.data;
79
- if (data[0x2201] !== undefined) {
80
- result.device_enabled = data[0x2201] ? "ON" : "OFF";
783
+ if (data.deviceEnabled !== undefined) {
784
+ result.device_enabled = data.deviceEnabled ? "ON" : "OFF";
81
785
  }
82
786
  return result;
83
787
  },
@@ -88,20 +792,8 @@ const fzLocal = {
88
792
  convert: (model, msg, publish, options, meta) => {
89
793
  const result = {};
90
794
  const data = msg.data;
91
- if (data[0x2202] !== undefined) {
92
- result.child_lock = data[0x2202] ? "locked" : "unlocked";
93
- }
94
- return result;
95
- },
96
- },
97
- ctm_current_flag: {
98
- cluster: "genOnOff",
99
- type: ["attributeReport", "readResponse"],
100
- convert: (model, msg, publish, options, meta) => {
101
- const result = {};
102
- const data = msg.data;
103
- if (data[0x5000] !== undefined) {
104
- result.current_flag = data[0x5000];
795
+ if (data.childLock !== undefined) {
796
+ result.child_lock = data.childLock ? "locked" : "unlocked";
105
797
  }
106
798
  return result;
107
799
  },
@@ -112,8 +804,8 @@ const fzLocal = {
112
804
  convert: (model, msg, publish, options, meta) => {
113
805
  const result = {};
114
806
  const data = msg.data;
115
- if (data[0x5001] !== undefined) {
116
- result.state = data[0x5001] ? "ON" : "OFF";
807
+ if (data.relayState !== undefined) {
808
+ result.state = data.relayState ? "ON" : "OFF";
117
809
  }
118
810
  return result;
119
811
  },
@@ -124,190 +816,74 @@ const fzLocal = {
124
816
  convert: (model, msg, publish, options, meta) => {
125
817
  const result = {};
126
818
  const data = msg.data;
127
- if (data[0x0401] !== undefined) {
128
- // Load
129
- result.load = data[0x0401];
819
+ if (data.ctmLoad !== undefined) {
820
+ result.load = data.ctmLoad;
130
821
  }
131
- if (data.elkoLoad !== undefined) {
132
- // Load
133
- result.load = data.elkoLoad;
822
+ if (data.ctmDisplayText !== undefined) {
823
+ result.display_text = data.ctmDisplayText;
134
824
  }
135
- if (data[0x0402] !== undefined) {
136
- // Display text
137
- result.display_text = data[0x0402];
825
+ if (data.ctmRegulatorMode !== undefined) {
826
+ result.regulator_mode = data.ctmRegulatorMode ? "regulator" : "thermostat";
138
827
  }
139
- if (data.elkoDisplayText !== undefined) {
140
- // Display text
141
- result.display_text = data.elkoDisplayText;
828
+ if (data.ctmPowerStatus !== undefined) {
829
+ result.power_status = data.ctmPowerStatus ? "ON" : "OFF";
142
830
  }
143
- if (data[0x0403] !== undefined) {
144
- // Sensor
145
- const sensorModeLookup = {
146
- 0: "air",
147
- 1: "floor",
148
- 2: "external",
149
- 3: "regulator",
150
- 4: "mv_air",
151
- 5: "mv_external",
152
- 6: "mv_regulator",
153
- };
154
- result.sensor = utils.getFromLookup(data[0x0403], sensorModeLookup);
831
+ if (data.ctmMeanPower !== undefined) {
832
+ result.mean_power = data.ctmMeanPower;
155
833
  }
156
- if (data.elkoSensor !== undefined) {
157
- // Sensor
158
- const sensorModeLookup = {
159
- 0: "air",
160
- 1: "floor",
161
- 2: "external",
162
- 3: "regulator",
163
- 4: "mv_air",
164
- 5: "mv_external",
165
- 6: "mv_regulator",
166
- };
167
- result.sensor = utils.getFromLookup(data.elkoSensor, sensorModeLookup);
834
+ if (data.ctmFloorTemp !== undefined) {
835
+ result.floor_temp = utils.precisionRound(data.ctmFloorTemp, 2) / 100;
168
836
  }
169
- if (data[0x0405] !== undefined) {
170
- // Regulator mode
171
- result.regulator_mode = data[0x0405] ? "regulator" : "thermostat";
837
+ if (data.ctmFrostGuard !== undefined) {
838
+ result.frost_guard = data.ctmFrostGuard ? "ON" : "OFF";
172
839
  }
173
- if (data.elkoRegulatorMode !== undefined) {
174
- // Regulator mode
175
- result.regulator_mode = data.elkoRegulatorMode ? "regulator" : "thermostat";
840
+ if (data.ctmChildLock !== undefined) {
841
+ result.child_lock = data.ctmChildLock ? "LOCK" : "UNLOCK";
176
842
  }
177
- if (data[0x0406] !== undefined) {
178
- // Power status
179
- result.power_status = data[0x0406] ? "ON" : "OFF";
843
+ if (data.ctmRelayState !== undefined) {
844
+ result.running_state = data.ctmRelayState ? "heat" : "idle";
180
845
  }
181
- if (data.elkoPowerStatus !== undefined) {
182
- // Power status
183
- result.power_status = data.elkoPowerStatus ? "ON" : "OFF";
846
+ if (data.ctmRegulatorSetpoint !== undefined) {
847
+ result.regulator_setpoint = data.ctmRegulatorSetpoint;
184
848
  }
185
- if (data[0x0408] !== undefined) {
186
- // Mean power
187
- result.mean_power = data[0x0408];
188
- }
189
- if (data.elkoMeanPower !== undefined) {
190
- // Mean power
191
- result.mean_power = data.elkoMeanPower;
192
- }
193
- if (data[0x0409] !== undefined) {
194
- // Floor temp
195
- result.floor_temp = utils.precisionRound(data[0x0409], 2) / 100;
196
- }
197
- if (data.elkoExternalTemp !== undefined) {
198
- // External temp (floor)
199
- result.floor_temp = utils.precisionRound(data.elkoExternalTemp, 2) / 100;
200
- }
201
- if (data[0x0411] !== undefined) {
202
- // Night switching
203
- result.night_switching = data[0x0411] ? "ON" : "OFF";
204
- }
205
- if (data.elkoNightSwitching !== undefined) {
206
- // Night switching
207
- result.night_switching = data.elkoNightSwitching ? "ON" : "OFF";
208
- }
209
- if (data[0x0412] !== undefined) {
210
- // Frost guard
211
- result.frost_guard = data[0x0412] ? "ON" : "OFF";
212
- }
213
- if (data.elkoFrostGuard !== undefined) {
214
- // Frost guard
215
- result.frost_guard = data.elkoFrostGuard ? "ON" : "OFF";
216
- }
217
- if (data[0x0413] !== undefined) {
218
- // Child lock
219
- result.child_lock = data[0x0413] ? "LOCK" : "UNLOCK";
220
- }
221
- if (data.elkoChildLock !== undefined) {
222
- // Child lock
223
- result.child_lock = data.elkoChildLock ? "LOCK" : "UNLOCK";
224
- }
225
- if (data[0x0414] !== undefined) {
226
- // Max floor temp
227
- result.max_floor_temp = data[0x0414];
228
- }
229
- if (data.elkoMaxFloorTemp !== undefined) {
230
- // Max floor temp
231
- result.max_floor_temp = data.elkoMaxFloorTemp;
232
- }
233
- if (data[0x0415] !== undefined) {
234
- // Running_state
235
- result.running_state = data[0x0415] ? "heat" : "idle";
236
- }
237
- if (data.elkoRelayState !== undefined) {
238
- // Running_state
239
- result.running_state = data.elkoRelayState ? "heat" : "idle";
240
- }
241
- if (data[0x0420] !== undefined) {
242
- // Regulator setpoint
243
- result.regulator_setpoint = data[0x0420];
244
- }
245
- if (data[0x0421] !== undefined) {
246
- // Regulation mode
849
+ if (data.ctmRegulationMode !== undefined) {
247
850
  const regulationModeLookup = { 0: "thermostat", 1: "regulator", 2: "zzilent" };
248
- result.regulation_mode = utils.getFromLookup(data[0x0421], regulationModeLookup);
851
+ result.regulation_mode = utils.getFromLookup(data.ctmRegulationMode, regulationModeLookup);
249
852
  }
250
- if (data[0x0422] !== undefined) {
251
- // Operation mode
853
+ if (data.ctmOperationMode !== undefined) {
252
854
  const presetLookup = { 0: "off", 1: "away", 2: "sleep", 3: "home" };
253
855
  const systemModeLookup = { 0: "off", 1: "off", 2: "off", 3: "heat" };
254
- result.preset = utils.getFromLookup(data[0x0422], presetLookup);
255
- result.system_mode = utils.getFromLookup(data[0x0422], systemModeLookup);
256
- }
257
- if (data[0x0423] !== undefined) {
258
- // Maximum floor temp guard
259
- result.max_floor_guard = data[0x0423] ? "ON" : "OFF";
260
- }
261
- if (data[0x0424] !== undefined) {
262
- // Weekly timer enabled
263
- result.weekly_timer = data[0x0424] ? "ON" : "OFF";
264
- }
265
- if (data[0x0425] !== undefined) {
266
- // Frost guard setpoint
267
- result.frost_guard_setpoint = data[0x0425];
268
- }
269
- if (data[0x0426] !== undefined) {
270
- // External temperature
271
- result.external_temp = utils.precisionRound(data[0x0426], 2) / 100;
856
+ result.preset = utils.getFromLookup(data.ctmOperationMode, presetLookup);
857
+ result.system_mode = utils.getFromLookup(data.ctmOperationMode, systemModeLookup);
272
858
  }
273
- if (data[0x0428] !== undefined) {
274
- // External sensor source
275
- result.exteral_sensor_source = data[0x0428];
859
+ if (data.ctmExternalTemp !== undefined) {
860
+ result.external_temp = utils.precisionRound(data.ctmExternalTemp, 2) / 100;
276
861
  }
277
- if (data[0x0429] !== undefined) {
278
- // Current air temperature
279
- result.air_temp = utils.precisionRound(data[0x0429], 2) / 100;
280
- }
281
- if (data[0x0424] !== undefined) {
282
- // Floor Sensor Error
283
- result.floor_sensor_error = data[0x042b] ? "error" : "ok";
284
- }
285
- if (data[0x0424] !== undefined) {
286
- // External Air Sensor Error
287
- result.exteral_sensor_error = data[0x042c] ? "error" : "ok";
862
+ if (data.ctmAirTemp !== undefined) {
863
+ result.air_temp = utils.precisionRound(data.ctmAirTemp, 2) / 100;
288
864
  }
289
865
  return result;
290
866
  },
291
867
  },
292
868
  ctm_group_config: {
293
- cluster: "65191", // 0xFEA7 ctmGroupConfig
869
+ cluster: "ctmGroupConfig",
294
870
  type: ["attributeReport", "readResponse"],
295
871
  convert: (model, msg, publish, options, meta) => {
296
872
  const result = {};
297
873
  const data = msg.data;
298
- if (data[0x0000] !== undefined) {
299
- result.group_id = data[0x0000];
874
+ if (data.groupId !== undefined) {
875
+ result.group_id = data.groupId;
300
876
  }
301
877
  return result;
302
878
  },
303
879
  },
304
- ctm_sove_guard: {
305
- cluster: "65481", // 0xFFC9 ctmSoveGuard
880
+ ctm_stove_guard: {
881
+ cluster: "ctmStoveGuard",
306
882
  type: ["attributeReport", "readResponse"],
307
883
  convert: (model, msg, publish, options, meta) => {
308
884
  const result = {};
309
885
  const data = msg.data;
310
- if (data[0x0001] !== undefined) {
886
+ if (data.alarmStatus !== undefined) {
311
887
  // Alarm status
312
888
  const alarmStatusLookup = {
313
889
  0: "ok",
@@ -318,107 +894,14 @@ const fzLocal = {
318
894
  5: "error",
319
895
  255: "unknown",
320
896
  };
321
- result.alarm_status = utils.getFromLookup(data[0x0001], alarmStatusLookup);
897
+ result.alarm_status = utils.getFromLookup(data.alarmStatus, alarmStatusLookup);
322
898
  }
323
- if (data[0x0002] !== undefined) {
899
+ if (data.batteryLow !== undefined) {
324
900
  // Change battery
325
- result.battery_low = !!data[0x0002];
326
- }
327
- if (data[0x0003] !== undefined) {
328
- // Stove temperature
329
- result.stove_temperature = data[0x0003];
330
- }
331
- if (data[0x0004] !== undefined) {
332
- // Ambient temperature
333
- result.ambient_temperature = data[0x0004];
334
- }
335
- if (data[0x0005] !== undefined) {
336
- // Active
337
- result.active = !!data[0x0005];
338
- }
339
- if (data[0x0006] !== undefined) {
340
- // Runtime
341
- result.runtime = data[0x0006];
342
- }
343
- if (data[0x0007] !== undefined) {
344
- // Runtime timeout
345
- result.runtime_timeout = data[0x0007];
346
- }
347
- if (data[0x0008] !== undefined) {
348
- // Reset reason
349
- const resetReasonLookup = {
350
- 0: "unknown",
351
- 1: "power_on",
352
- 2: "external",
353
- 3: "brown_out",
354
- 4: "watchdog",
355
- 5: "program_interface",
356
- 6: "software",
357
- 255: "unknown",
358
- };
359
- result.reset_reason = utils.getFromLookup(data[0x0008], resetReasonLookup);
360
- }
361
- if (data[0x0009] !== undefined) {
362
- // Dip switch
363
- result.dip_switch = data[0x0009];
364
- }
365
- if (data[0x000a] !== undefined) {
366
- // Software version
367
- result.sw_version = data[0x000a];
368
- }
369
- if (data[0x000b] !== undefined) {
370
- // Hardware version
371
- result.hw_version = data[0x000b];
372
- }
373
- if (data[0x000c] !== undefined) {
374
- // Bootloader version
375
- result.bootloader_version = data[0x000c];
376
- }
377
- if (data[0x000d] !== undefined) {
378
- // Model
379
- const modelLookup = { 0: "unknown", 1: "1_8", 2: "infinity", 3: "hybrid", 4: "tak", 255: "unknown" };
380
- result.model = utils.getFromLookup(data[0x000d], modelLookup);
381
- }
382
- if (data[0x0010] !== undefined) {
383
- // Relay address
384
- result.relay_address = data[0x0010];
385
- }
386
- if (data[0x0100] !== undefined) {
387
- // Relay current flag
388
- const currentFlagLookup = { 0: "false", 1: "true", 255: "unknown" };
389
- result.current_flag = utils.getFromLookup(data[0x0100], currentFlagLookup);
390
- }
391
- if (data[0x0101] !== undefined) {
392
- // Relay current
393
- result.relay_current = data[0x0101];
394
- }
395
- if (data[0x0102] !== undefined) {
396
- // Relay status
397
- const relayStatusLookup = { 0: "off", 1: "on", 2: "not_present", 255: "unknown" };
398
- result.relay_status = utils.getFromLookup(data[0x0102], relayStatusLookup);
399
- }
400
- if (data[0x0103] !== undefined) {
401
- // Relay external button
402
- const relayStatusLookup = { 0: "not_clicked", 1: "clicked", 255: "unknown" };
403
- result.external_button = utils.getFromLookup(data[0x0103], relayStatusLookup);
901
+ result.battery_low = !!data.batteryLow;
404
902
  }
405
- if (data[0x0104] !== undefined) {
406
- // Relay alarm
407
- const relayAlarmLookup = { 0: "ok", 1: "no_communication", 2: "over_current", 3: "over_temperature", 255: "unknown" };
408
- result.relay_alarm = utils.getFromLookup(data[0x0104], relayAlarmLookup);
409
- }
410
- if (data[0x0105] !== undefined) {
411
- // Alarm status (from relay)
412
- const relayAlarmStatusLookup = {
413
- 0: "ok",
414
- 1: "tamper",
415
- 2: "high_temperatur",
416
- 3: "timer",
417
- 4: "battery_alarm",
418
- 5: "error",
419
- 255: "unknown",
420
- };
421
- result.relay_alarm_status = utils.getFromLookup(data[0x0105], relayAlarmStatusLookup);
903
+ if (data.active !== undefined) {
904
+ result.active = !!data.active;
422
905
  }
423
906
  return result;
424
907
  },
@@ -459,7 +942,7 @@ const tzLocal = {
459
942
  ctm_device_mode: {
460
943
  key: ["device_mode"],
461
944
  convertGet: async (entity, key, meta) => {
462
- await entity.read("genOnOff", [0x2200]);
945
+ await entity.read("genOnOff", ["deviceMode"]);
463
946
  },
464
947
  },
465
948
  ctm_device_enabled: {
@@ -468,19 +951,13 @@ const tzLocal = {
468
951
  await entity.write("genOnOff", { 8705: { value: utils.getFromLookup(value, { OFF: 0, ON: 1 }), type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN } });
469
952
  },
470
953
  convertGet: async (entity, key, meta) => {
471
- await entity.read("genOnOff", [0x2201]);
954
+ await entity.read("genOnOff", ["deviceEnabled"]);
472
955
  },
473
956
  },
474
957
  ctm_child_lock: {
475
958
  key: ["child_lock"],
476
959
  convertGet: async (entity, key, meta) => {
477
- await entity.read("genOnOff", [0x2202]);
478
- },
479
- },
480
- ctm_current_flag: {
481
- key: ["current_flag"],
482
- convertGet: async (entity, key, meta) => {
483
- await entity.read("genOnOff", [0x5000], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
960
+ await entity.read("genOnOff", ["childLock"]);
484
961
  },
485
962
  },
486
963
  ctm_relay_state: {
@@ -489,25 +966,20 @@ const tzLocal = {
489
966
  await entity.write("genOnOff", { 20481: { value: utils.getFromLookup(value, { OFF: 0, ON: 1 }), type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN } }, { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
490
967
  },
491
968
  convertGet: async (entity, key, meta) => {
492
- await entity.read("genOnOff", [0x5001], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
969
+ await entity.read("genOnOff", ["relayState"], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
493
970
  },
494
971
  },
495
972
  ctm_thermostat: {
496
973
  key: [
497
974
  "load",
498
975
  "display_text",
499
- "sensor",
500
976
  "regulator_mode",
501
977
  "power_status",
502
978
  "system_mode",
503
- "night_switching",
504
979
  "frost_guard",
505
- "max_floor_temp",
506
980
  "regulator_setpoint",
507
981
  "regulation_mode",
508
- "max_floor_guard",
509
982
  "weekly_timer",
510
- "exteral_sensor_source",
511
983
  ],
512
984
  convertSet: async (entity, key, value, meta) => {
513
985
  switch (key) {
@@ -517,22 +989,6 @@ const tzLocal = {
517
989
  case "display_text":
518
990
  await entity.write("hvacThermostat", { 1026: { value: value, type: zigbee_herdsman_1.Zcl.DataType.CHAR_STR } });
519
991
  break;
520
- case "sensor":
521
- await entity.write("hvacThermostat", {
522
- 1027: {
523
- value: utils.getFromLookup(value, {
524
- air: 0,
525
- floor: 1,
526
- external: 2,
527
- regulator: 3,
528
- mv_air: 4,
529
- mv_external: 5,
530
- mv_regulator: 6,
531
- }),
532
- type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
533
- },
534
- });
535
- break;
536
992
  case "regulator_mode":
537
993
  await entity.write("hvacThermostat", {
538
994
  1029: { value: utils.getFromLookup(value, { thermostat: 0, regulator: 1 }), type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
@@ -549,15 +1005,9 @@ const tzLocal = {
549
1005
  await entity.write("hvacThermostat", { 1058: { value: 3, type: zigbee_herdsman_1.Zcl.DataType.UINT8 } });
550
1006
  }
551
1007
  break;
552
- case "night_switching":
553
- await entity.write("hvacThermostat", { 1041: { value: utils.getFromLookup(value, { OFF: 0, ON: 1 }), type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN } });
554
- break;
555
1008
  case "frost_guard":
556
1009
  await entity.write("hvacThermostat", { 1042: { value: utils.getFromLookup(value, { OFF: 0, ON: 1 }), type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN } });
557
1010
  break;
558
- case "max_floor_temp":
559
- await entity.write("hvacThermostat", { 1044: { value: value, type: zigbee_herdsman_1.Zcl.DataType.UINT8 } });
560
- break;
561
1011
  case "regulator_setpoint":
562
1012
  await entity.write("hvacThermostat", { 1056: { value: value, type: zigbee_herdsman_1.Zcl.DataType.UINT8 } });
563
1013
  break;
@@ -569,15 +1019,9 @@ const tzLocal = {
569
1019
  },
570
1020
  });
571
1021
  break;
572
- case "max_floor_guard":
573
- await entity.write("hvacThermostat", { 1059: { value: utils.getFromLookup(value, { OFF: 0, ON: 1 }), type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN } });
574
- break;
575
1022
  case "weekly_timer":
576
1023
  await entity.write("hvacThermostat", { 1060: { value: utils.getFromLookup(value, { OFF: 0, ON: 1 }), type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN } });
577
1024
  break;
578
- case "exteral_sensor_source":
579
- await entity.write("hvacThermostat", { 1064: { value: value, type: zigbee_herdsman_1.Zcl.DataType.UINT16 } });
580
- break;
581
1025
  default: // Unknown key
582
1026
  throw new Error(`Unhandled key tzLocal.ctm_thermostat.convertSet ${key}`);
583
1027
  }
@@ -585,46 +1029,28 @@ const tzLocal = {
585
1029
  convertGet: async (entity, key, meta) => {
586
1030
  switch (key) {
587
1031
  case "load":
588
- await entity.read("hvacThermostat", [0x0401]);
1032
+ await entity.read("hvacThermostat", ["ctmLoad"]);
589
1033
  break;
590
1034
  case "display_text":
591
- await entity.read("hvacThermostat", [0x0402]);
592
- break;
593
- case "sensor":
594
- await entity.read("hvacThermostat", [0x0403]);
1035
+ await entity.read("hvacThermostat", ["ctmDisplayText"]);
595
1036
  break;
596
1037
  case "regulator_mode":
597
- await entity.read("hvacThermostat", [0x0405]);
1038
+ await entity.read("hvacThermostat", ["ctmRegulatorMode"]);
598
1039
  break;
599
1040
  case "power_status":
600
- await entity.read("hvacThermostat", [0x0406]);
601
- break;
602
- case "night_switching":
603
- await entity.read("hvacThermostat", [0x0411]);
1041
+ await entity.read("hvacThermostat", ["ctmPowerStatus"]);
604
1042
  break;
605
1043
  case "frost_guard":
606
- await entity.read("hvacThermostat", [0x0412]);
607
- break;
608
- case "max_floor_temp":
609
- await entity.read("hvacThermostat", [0x0414]);
1044
+ await entity.read("hvacThermostat", ["ctmFrostGuard"]);
610
1045
  break;
611
1046
  case "regulator_setpoint":
612
- await entity.read("hvacThermostat", [0x0420]);
1047
+ await entity.read("hvacThermostat", ["ctmRegulatorSetpoint"]);
613
1048
  break;
614
1049
  case "regulation_mode":
615
- await entity.read("hvacThermostat", [0x0421]);
1050
+ await entity.read("hvacThermostat", ["ctmRegulationMode"]);
616
1051
  break;
617
1052
  case "system_mode":
618
- await entity.read("hvacThermostat", [0x0422]);
619
- break;
620
- case "max_floor_guard":
621
- await entity.read("hvacThermostat", [0x0423]);
622
- break;
623
- case "weekly_timer":
624
- await entity.read("hvacThermostat", [0x0424]);
625
- break;
626
- case "exteral_sensor_source":
627
- await entity.read("hvacThermostat", [0x0428]);
1053
+ await entity.read("hvacThermostat", ["ctmOperationMode"]);
628
1054
  break;
629
1055
  default: // Unknown key
630
1056
  throw new Error(`Unhandled key tzLocal.ctm_thermostat.convertGet ${key}`);
@@ -645,41 +1071,23 @@ const tzLocal = {
645
1071
  },
646
1072
  },
647
1073
  ctm_thermostat_gets: {
648
- key: [
649
- "mean_power",
650
- "floor_temp",
651
- "running_state",
652
- "frost_guard_setpoint",
653
- "external_temp",
654
- "air_temp",
655
- "floor_sensor_error",
656
- "exteral_sensor_error",
657
- ],
1074
+ key: ["mean_power", "floor_temp", "running_state", "external_temp", "air_temp"],
658
1075
  convertGet: async (entity, key, meta) => {
659
1076
  switch (key) {
660
1077
  case "mean_power":
661
- await entity.read("hvacThermostat", [0x0408]);
1078
+ await entity.read("hvacThermostat", ["ctmMeanPower"]);
662
1079
  break;
663
1080
  case "floor_temp":
664
- await entity.read("hvacThermostat", [0x0409]);
1081
+ await entity.read("hvacThermostat", ["ctmFloorTemp"]);
665
1082
  break;
666
1083
  case "running_state":
667
- await entity.read("hvacThermostat", [0x0415]);
668
- break;
669
- case "frost_guard_setpoint":
670
- await entity.read("hvacThermostat", [0x0425]);
1084
+ await entity.read("hvacThermostat", ["ctmRelayState"]);
671
1085
  break;
672
1086
  case "external_temp":
673
- await entity.read("hvacThermostat", [0x0426]);
1087
+ await entity.read("hvacThermostat", ["ctmExternalTemp"]);
674
1088
  break;
675
1089
  case "air_temp":
676
- await entity.read("hvacThermostat", [0x0429]);
677
- break;
678
- case "floor_sensor_error":
679
- await entity.read("hvacThermostat", [0x042b]);
680
- break;
681
- case "exteral_sensor_error":
682
- await entity.read("hvacThermostat", [0x042c]);
1090
+ await entity.read("hvacThermostat", ["ctmAirTemp"]);
683
1091
  break;
684
1092
  default: // Unknown key
685
1093
  throw new Error(`Unhandled key tzLocal.ctm_thermostat.convertGet ${key}`);
@@ -689,96 +1097,32 @@ const tzLocal = {
689
1097
  ctm_group_config: {
690
1098
  key: ["group_id"],
691
1099
  convertGet: async (entity, key, meta) => {
692
- await entity.read(0xfea7, [0x0000], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
1100
+ await entity.read("ctmGroupConfig", ["groupId"], {
1101
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
1102
+ });
693
1103
  },
694
1104
  },
695
- ctm_sove_guard: {
696
- key: [
697
- "alarm_status",
698
- "change_battery",
699
- "stove_temperature",
700
- "ambient_temperature",
701
- "active",
702
- "runtime",
703
- "runtime_timeout",
704
- "reset_reason",
705
- "dip_switch",
706
- "sw_version",
707
- "hw_version",
708
- "bootloader_version",
709
- "model",
710
- "relay_address",
711
- "current_flag",
712
- "relay_current",
713
- "relay_status",
714
- "external_button",
715
- "relay_alarm",
716
- "relay_alarm_status",
717
- ],
1105
+ ctm_stove_guard: {
1106
+ key: ["alarm_status", "change_battery", "active"],
718
1107
  convertGet: async (entity, key, meta) => {
719
1108
  switch (key) {
720
1109
  case "alarm_status":
721
- await entity.read(0xffc9, [0x0001], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
1110
+ await entity.read("ctmStoveGuard", ["alarmStatus"], {
1111
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
1112
+ });
722
1113
  break;
723
1114
  case "battery_low":
724
- await entity.read(0xffc9, [0x0002], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
725
- break;
726
- case "stove_temperature":
727
- await entity.read(0xffc9, [0x0003], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
728
- break;
729
- case "ambient_temperature":
730
- await entity.read(0xffc9, [0x0004], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
1115
+ await entity.read("ctmStoveGuard", ["batteryLow"], {
1116
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
1117
+ });
731
1118
  break;
732
1119
  case "active":
733
- await entity.read(0xffc9, [0x0005], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
734
- break;
735
- case "runtime":
736
- await entity.read(0xffc9, [0x0006], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
737
- break;
738
- case "runtime_timeout":
739
- await entity.read(0xffc9, [0x0007], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
740
- break;
741
- case "reset_reason":
742
- await entity.read(0xffc9, [0x0008], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
743
- break;
744
- case "dip_switch":
745
- await entity.read(0xffc9, [0x0009], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
746
- break;
747
- case "sw_version":
748
- await entity.read(0xffc9, [0x000a], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
749
- break;
750
- case "hw_version":
751
- await entity.read(0xffc9, [0x000b], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
752
- break;
753
- case "bootloader_version":
754
- await entity.read(0xffc9, [0x000c], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
755
- break;
756
- case "model":
757
- await entity.read(0xffc9, [0x000d], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
758
- break;
759
- case "relay_address":
760
- await entity.read(0xffc9, [0x0010], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
761
- break;
762
- case "current_flag":
763
- await entity.read(0xffc9, [0x0100], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
764
- break;
765
- case "relay_current":
766
- await entity.read(0xffc9, [0x0101], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
767
- break;
768
- case "relay_status":
769
- await entity.read(0xffc9, [0x0102], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
770
- break;
771
- case "external_button":
772
- await entity.read(0xffc9, [0x0103], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
773
- break;
774
- case "relay_alarm":
775
- await entity.read(0xffc9, [0x0104], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
776
- break;
777
- case "relay_alarm_status":
778
- await entity.read(0xffc9, [0x0105], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
1120
+ await entity.read("ctmStoveGuard", ["active"], {
1121
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
1122
+ });
779
1123
  break;
780
1124
  default: // Unknown key
781
- throw new Error(`Unhandled key tzLocal.ctm_sove_guard.convertGet ${key}`);
1125
+ throw new Error(`Unhandled key tzLocal.ctm_stove_guard.convertGet ${key}`);
782
1126
  }
783
1127
  },
784
1128
  },
@@ -843,6 +1187,7 @@ exports.definitions = [
843
1187
  model: "mTouch_Bryter",
844
1188
  vendor: "CTM Lyng",
845
1189
  description: "mTouch Bryter OP, 3 channel switch",
1190
+ extend: [cluster.addCtmGroupConfigCluster()],
846
1191
  fromZigbee: [
847
1192
  fz.temperature,
848
1193
  fz.battery,
@@ -862,7 +1207,9 @@ exports.definitions = [
862
1207
  await reporting.batteryVoltage(endpoint);
863
1208
  await endpoint.read("msTemperatureMeasurement", ["measuredValue"]);
864
1209
  await reporting.temperature(endpoint, { min: constants.repInterval.MINUTES_10, max: constants.repInterval.HOUR, change: 100 });
865
- await endpoint.read(0xfea7, [0x0000], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
1210
+ await endpoint.read("ctmGroupConfig", ["groupId"], {
1211
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
1212
+ });
866
1213
  },
867
1214
  exposes: [
868
1215
  e.battery(),
@@ -878,6 +1225,7 @@ exports.definitions = [
878
1225
  model: "mTouch_One",
879
1226
  vendor: "CTM Lyng",
880
1227
  description: "mTouch One OP, touch thermostat",
1228
+ extend: [cluster.addCtmToHvacThermostatCluster()],
881
1229
  fromZigbee: [fz.thermostat, fzLocal.ctm_thermostat],
882
1230
  toZigbee: [
883
1231
  tz.thermostat_occupied_heating_setpoint,
@@ -892,85 +1240,81 @@ exports.definitions = [
892
1240
  const endpoint = device.getEndpoint(1);
893
1241
  await reporting.bind(endpoint, coordinatorEndpoint, ["hvacThermostat"]);
894
1242
  await endpoint.read("hvacThermostat", ["localTemp", "occupiedHeatingSetpoint"]);
1243
+ await endpoint.read("hvacThermostat", [
1244
+ "ctmLoad",
1245
+ "ctmDisplayText",
1246
+ "ctmRegulatorMode",
1247
+ "ctmMeanPower",
1248
+ "ctmFloorTemp",
1249
+ ]);
1250
+ await endpoint.read("hvacThermostat", [
1251
+ "ctmFrostGuard",
1252
+ "ctmChildLock",
1253
+ "ctmRegulatorSetpoint",
1254
+ "ctmOperationMode",
1255
+ "ctmAirTemp",
1256
+ ]);
895
1257
  await reporting.thermostatTemperature(endpoint);
896
1258
  await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
897
- await endpoint.read("hvacThermostat", [0x0401]);
898
- await endpoint.read("hvacThermostat", [0x0402]);
899
- // Regulator mode
900
- await endpoint.read("hvacThermostat", [0x0405]);
901
1259
  await endpoint.configureReporting("hvacThermostat", [
902
1260
  {
903
- attribute: { ID: 0x0405, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
1261
+ attribute: "ctmRegulatorMode",
904
1262
  minimumReportInterval: 1,
905
1263
  maximumReportInterval: constants.repInterval.MAX,
906
1264
  reportableChange: null,
907
1265
  },
908
1266
  ]);
909
- // Power consumption
910
- await endpoint.read("hvacThermostat", [0x0408]);
911
1267
  await endpoint.configureReporting("hvacThermostat", [
912
1268
  {
913
- attribute: { ID: 0x0408, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
1269
+ attribute: "ctmMeanPower",
914
1270
  minimumReportInterval: 0,
915
1271
  maximumReportInterval: constants.repInterval.HOUR,
916
1272
  reportableChange: 5,
917
1273
  },
918
1274
  ]);
919
- // Floor temp sensor
920
- await endpoint.read("hvacThermostat", [0x0409]);
921
1275
  await endpoint.configureReporting("hvacThermostat", [
922
1276
  {
923
- attribute: { ID: 0x0409, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
1277
+ attribute: "ctmFloorTemp",
924
1278
  minimumReportInterval: 0,
925
1279
  maximumReportInterval: constants.repInterval.HOUR,
926
1280
  reportableChange: 10,
927
1281
  },
928
1282
  ]);
929
- // Frost guard
930
- await endpoint.read("hvacThermostat", [0x0412]);
931
1283
  await endpoint.configureReporting("hvacThermostat", [
932
1284
  {
933
- attribute: { ID: 0x0412, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
1285
+ attribute: "ctmFrostGuard",
934
1286
  minimumReportInterval: 0,
935
1287
  maximumReportInterval: constants.repInterval.MAX,
936
1288
  reportableChange: null,
937
1289
  },
938
1290
  ]);
939
- // Child lock active/inactive
940
- await endpoint.read("hvacThermostat", [0x0413]);
941
1291
  await endpoint.configureReporting("hvacThermostat", [
942
1292
  {
943
- attribute: { ID: 0x0413, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
1293
+ attribute: "ctmChildLock",
944
1294
  minimumReportInterval: 0,
945
1295
  maximumReportInterval: constants.repInterval.MAX,
946
1296
  reportableChange: null,
947
1297
  },
948
1298
  ]);
949
- // Regulator setpoint
950
- await endpoint.read("hvacThermostat", [0x0420]);
951
1299
  await endpoint.configureReporting("hvacThermostat", [
952
1300
  {
953
- attribute: { ID: 0x0420, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
1301
+ attribute: "ctmRegulatorSetpoint",
954
1302
  minimumReportInterval: 0,
955
1303
  maximumReportInterval: constants.repInterval.HOUR,
956
1304
  reportableChange: 1,
957
1305
  },
958
1306
  ]);
959
- // Operation mode
960
- await endpoint.read("hvacThermostat", [0x0422]);
961
1307
  await endpoint.configureReporting("hvacThermostat", [
962
1308
  {
963
- attribute: { ID: 0x0422, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
1309
+ attribute: "ctmOperationMode",
964
1310
  minimumReportInterval: 0,
965
1311
  maximumReportInterval: constants.repInterval.HOUR,
966
1312
  reportableChange: 1,
967
1313
  },
968
1314
  ]);
969
- // Air temp sensor
970
- await endpoint.read("hvacThermostat", [0x0429]);
971
1315
  await endpoint.configureReporting("hvacThermostat", [
972
1316
  {
973
- attribute: { ID: 0x0429, type: zigbee_herdsman_1.Zcl.DataType.INT16 },
1317
+ attribute: "ctmAirTemp",
974
1318
  minimumReportInterval: 0,
975
1319
  maximumReportInterval: constants.repInterval.HOUR,
976
1320
  reportableChange: 10,
@@ -1099,39 +1443,36 @@ exports.definitions = [
1099
1443
  model: "mKomfy_Sensor",
1100
1444
  vendor: "CTM Lyng",
1101
1445
  description: "mKomfy, stove guard",
1102
- fromZigbee: [fz.temperature, fz.battery, fzLocal.ctm_sove_guard],
1446
+ extend: [cluster.addCtmStoveGuardCluster()],
1447
+ fromZigbee: [fz.temperature, fz.battery, fzLocal.ctm_stove_guard],
1103
1448
  toZigbee: [],
1104
1449
  configure: async (device, coordinatorEndpoint) => {
1105
1450
  const endpoint = device.getEndpoint(1);
1106
- await reporting.bind(endpoint, coordinatorEndpoint, ["genPowerCfg", "msTemperatureMeasurement", 0xffc9]);
1451
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genPowerCfg", "msTemperatureMeasurement", "ctmStoveGuard"]);
1107
1452
  await reporting.batteryPercentageRemaining(endpoint);
1108
- // await endpoint.read('msTemperatureMeasurement', ['measuredValue']);
1109
1453
  await reporting.temperature(endpoint, { min: constants.repInterval.MINUTES_10, max: constants.repInterval.HOUR, change: 100 });
1110
1454
  // Alarm status
1111
- // await endpoint.read(0xFFC9, [0x0001], {manufacturerCode: Zcl.ManufacturerCode.DATEK_WIRELESS_AS});
1112
- await endpoint.configureReporting(0xffc9, [
1455
+ await endpoint.configureReporting("ctmStoveGuard", [
1113
1456
  {
1114
- attribute: { ID: 0x0001, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
1457
+ attribute: "alarmStatus",
1115
1458
  minimumReportInterval: 0,
1116
1459
  maximumReportInterval: constants.repInterval.HOUR,
1117
1460
  reportableChange: 0,
1118
1461
  },
1119
1462
  ], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
1120
1463
  // Change battery
1121
- // await endpoint.read(0xFFC9, [0x0002], {manufacturerCode: Zcl.ManufacturerCode.DATEK_WIRELESS_AS});
1122
- await endpoint.configureReporting(0xffc9, [
1464
+ await endpoint.configureReporting("ctmStoveGuard", [
1123
1465
  {
1124
- attribute: { ID: 0x0002, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
1466
+ attribute: "batteryLow",
1125
1467
  minimumReportInterval: 0,
1126
1468
  maximumReportInterval: constants.repInterval.MAX,
1127
1469
  reportableChange: 0,
1128
1470
  },
1129
1471
  ], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
1130
1472
  // Active
1131
- // await endpoint.read(0xFFC9, [0x0005], {manufacturerCode: Zcl.ManufacturerCode.DATEK_WIRELESS_AS});
1132
- await endpoint.configureReporting(0xffc9, [
1473
+ await endpoint.configureReporting("ctmStoveGuard", [
1133
1474
  {
1134
- attribute: { ID: 0x0005, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
1475
+ attribute: "active",
1135
1476
  minimumReportInterval: 0,
1136
1477
  maximumReportInterval: constants.repInterval.HOUR,
1137
1478
  reportableChange: 0,
@@ -1153,6 +1494,7 @@ exports.definitions = [
1153
1494
  model: "mTouch_Astro",
1154
1495
  vendor: "CTM Lyng",
1155
1496
  description: "mTouch Astro OP, astro clock",
1497
+ extend: [cluster.addCtmGroupConfigCluster(), cluster.addCtmGenOnOffCluster()],
1156
1498
  fromZigbee: [
1157
1499
  fz.on_off,
1158
1500
  fz.command_on,
@@ -1169,35 +1511,36 @@ exports.definitions = [
1169
1511
  await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff"]);
1170
1512
  await endpoint.read("genOnOff", ["onOff"]);
1171
1513
  await reporting.onOff(endpoint);
1172
- // Device mode
1173
- await endpoint.read("genOnOff", [0x2200]);
1514
+ await endpoint.read("genOnOff", ["deviceMode"]);
1174
1515
  await endpoint.configureReporting("genOnOff", [
1175
1516
  {
1176
- attribute: { ID: 0x2200, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
1517
+ attribute: "deviceMode",
1177
1518
  minimumReportInterval: 0,
1178
1519
  maximumReportInterval: constants.repInterval.HOUR,
1179
1520
  reportableChange: 0,
1180
1521
  },
1181
1522
  ]);
1182
- await endpoint.read("genOnOff", [0x2201]);
1523
+ await endpoint.read("genOnOff", ["deviceEnabled"]);
1183
1524
  await endpoint.configureReporting("genOnOff", [
1184
1525
  {
1185
- attribute: { ID: 0x2201, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
1526
+ attribute: "deviceEnabled",
1186
1527
  minimumReportInterval: 0,
1187
1528
  maximumReportInterval: constants.repInterval.HOUR,
1188
1529
  reportableChange: null,
1189
1530
  },
1190
1531
  ]);
1191
- await endpoint.read("genOnOff", [0x2202]);
1532
+ await endpoint.read("genOnOff", ["childLock"]);
1192
1533
  await endpoint.configureReporting("genOnOff", [
1193
1534
  {
1194
- attribute: { ID: 0x2202, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
1535
+ attribute: "childLock",
1195
1536
  minimumReportInterval: 0,
1196
1537
  maximumReportInterval: constants.repInterval.HOUR,
1197
1538
  reportableChange: null,
1198
1539
  },
1199
1540
  ]);
1200
- await endpoint.read(0xfea7, [0x0000], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
1541
+ await endpoint.read("ctmGroupConfig", ["groupId"], {
1542
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
1543
+ });
1201
1544
  },
1202
1545
  exposes: [
1203
1546
  e.switch(),
@@ -1259,6 +1602,7 @@ exports.definitions = [
1259
1602
  model: "mSwitch_Mic",
1260
1603
  vendor: "CTM Lyng",
1261
1604
  description: "Mikrofon, alarm detection microphone",
1605
+ extend: [cluster.addCtmGroupConfigCluster()],
1262
1606
  fromZigbee: [fz.temperature, fz.battery, fz.command_on, fz.command_off, fz.ias_enroll, fz.ias_smoke_alarm_1, fzLocal.ctm_group_config],
1263
1607
  toZigbee: [],
1264
1608
  meta: { battery: { voltageToPercentage: { min: 2500, max: 3200 } } },
@@ -1269,7 +1613,9 @@ exports.definitions = [
1269
1613
  await endpoint.read("ssIasZone", ["iasCieAddr", "zoneState", "zoneId"]);
1270
1614
  await endpoint.read("msTemperatureMeasurement", ["measuredValue"]);
1271
1615
  await reporting.temperature(endpoint, { min: constants.repInterval.MINUTES_10, max: constants.repInterval.HOUR, change: 100 });
1272
- await endpoint.read(0xfea7, [0x0000], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
1616
+ await endpoint.read("ctmGroupConfig", ["groupId"], {
1617
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
1618
+ });
1273
1619
  },
1274
1620
  exposes: [
1275
1621
  e.temperature(),
@@ -1317,11 +1663,12 @@ exports.definitions = [
1317
1663
  await reporting.onOff(endpoint);
1318
1664
  await endpoint.read("msOccupancySensing", ["occupancy"]);
1319
1665
  await reporting.occupancy(endpoint);
1320
- // Relay State
1321
- await endpoint.read("genOnOff", [0x5001], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
1666
+ await endpoint.read("genOnOff", ["relayState"], {
1667
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
1668
+ });
1322
1669
  await endpoint.configureReporting("genOnOff", [
1323
1670
  {
1324
- attribute: { ID: 0x5001, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
1671
+ attribute: "relayState",
1325
1672
  minimumReportInterval: 1,
1326
1673
  maximumReportInterval: constants.repInterval.HOUR,
1327
1674
  reportableChange: 0,
@@ -1329,7 +1676,7 @@ exports.definitions = [
1329
1676
  ], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
1330
1677
  },
1331
1678
  exposes: [e.switch(), e.occupancy(), e.binary("device_enabled", ea.ALL, "ON", "OFF").withDescription("Turn the device on or off")],
1332
- extend: [m.illuminance()],
1679
+ extend: [cluster.addCtmGenOnOffCluster(), m.illuminance()],
1333
1680
  },
1334
1681
  {
1335
1682
  zigbeeModel: ["MBD Dim"],
@@ -1374,10 +1721,12 @@ exports.definitions = [
1374
1721
  await endpoint.read("msOccupancySensing", ["occupancy"]);
1375
1722
  await reporting.occupancy(endpoint);
1376
1723
  // Relay State
1377
- await endpoint.read("genOnOff", [0x5001], { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS });
1724
+ await endpoint.read("genOnOff", ["relayState"], {
1725
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.DATEK_WIRELESS_AS,
1726
+ });
1378
1727
  await endpoint.configureReporting("genOnOff", [
1379
1728
  {
1380
- attribute: { ID: 0x5001, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
1729
+ attribute: "relayState",
1381
1730
  minimumReportInterval: 1,
1382
1731
  maximumReportInterval: constants.repInterval.HOUR,
1383
1732
  reportableChange: 0,
@@ -1396,7 +1745,7 @@ exports.definitions = [
1396
1745
  .withValueMax(97)
1397
1746
  .withDescription('Specifies the initialisation light level. Can not be set lower than "ballast_minimum_level"'),
1398
1747
  ],
1399
- extend: [m.illuminance()],
1748
+ extend: [cluster.addCtmGenOnOffCluster(), m.illuminance()],
1400
1749
  },
1401
1750
  {
1402
1751
  fingerprint: [{ modelID: "DIMMER", manufacturerName: "NorLum Dim OP" }],