@willieee802/zigbee-herdsman-converters 19.44.4 → 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 +3139 -814
  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
@@ -39,12 +39,15 @@ const fz = __importStar(require("../converters/fromZigbee"));
39
39
  const tz = __importStar(require("../converters/toZigbee"));
40
40
  const constants = __importStar(require("../lib/constants"));
41
41
  const exposes = __importStar(require("../lib/exposes"));
42
+ const logger_1 = require("../lib/logger");
42
43
  const m = __importStar(require("../lib/modernExtend"));
43
44
  const reporting = __importStar(require("../lib/reporting"));
45
+ const globalStore = __importStar(require("../lib/store"));
44
46
  const utils = __importStar(require("../lib/utils"));
45
47
  const utils_1 = require("../lib/utils");
46
48
  const e = exposes.presets;
47
49
  const ea = exposes.access;
50
+ const NS = "zhc:schneider_electric";
48
51
  function indicatorMode(endpoint) {
49
52
  let description = "Set Indicator Mode.";
50
53
  if (endpoint) {
@@ -150,20 +153,21 @@ function switchActions(endpoint) {
150
153
  }
151
154
  const schneiderElectricExtend = {
152
155
  addVisaConfigurationCluster: (enumDataType) => m.deviceAddCustomCluster("visaConfiguration", {
156
+ name: "visaConfiguration",
153
157
  ID: 0xfc04,
154
158
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
155
159
  attributes: {
156
- indicatorLuminanceLevel: { ID: 0x0000, type: enumDataType, write: true },
157
- indicatorColor: { ID: 0x0001, type: enumDataType, write: true },
158
- indicatorMode: { ID: 0x0002, type: enumDataType, write: true },
159
- motorTypeChannel1: { ID: 0x0003, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
160
- motorTypeChannel2: { ID: 0x0004, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
161
- curtainStatusChannel1: { ID: 0x0005, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
162
- curtainStatusChannel2: { ID: 0x0006, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
163
- key1EventNotification: { ID: 0x0020, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
164
- key2EventNotification: { ID: 0x0021, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
165
- key3EventNotification: { ID: 0x0022, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
166
- key4EventNotification: { ID: 0x0023, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
160
+ indicatorLuminanceLevel: { name: "indicatorLuminanceLevel", ID: 0x0000, type: enumDataType, write: true },
161
+ indicatorColor: { name: "indicatorColor", ID: 0x0001, type: enumDataType, write: true },
162
+ indicatorMode: { name: "indicatorMode", ID: 0x0002, type: enumDataType, write: true },
163
+ motorTypeChannel1: { name: "motorTypeChannel1", ID: 0x0003, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
164
+ motorTypeChannel2: { name: "motorTypeChannel2", ID: 0x0004, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
165
+ curtainStatusChannel1: { name: "curtainStatusChannel1", ID: 0x0005, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
166
+ curtainStatusChannel2: { name: "curtainStatusChannel2", ID: 0x0006, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
167
+ key1EventNotification: { name: "key1EventNotification", ID: 0x0020, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
168
+ key2EventNotification: { name: "key2EventNotification", ID: 0x0021, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
169
+ key3EventNotification: { name: "key3EventNotification", ID: 0x0022, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
170
+ key4EventNotification: { name: "key4EventNotification", ID: 0x0023, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
167
171
  },
168
172
  commands: {},
169
173
  commandsResponse: {},
@@ -338,13 +342,14 @@ const schneiderElectricExtend = {
338
342
  return extend;
339
343
  },
340
344
  addOccupancyConfigurationCluster: () => m.deviceAddCustomCluster("occupancyConfiguration", {
345
+ name: "occupancyConfiguration",
341
346
  ID: 0xff19,
342
347
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
343
348
  attributes: {
344
- ambienceLightThreshold: { ID: 0x0000, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 0xffff },
345
- occupancyActions: { ID: 0x0001, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true, max: 0xff },
346
- unoccupiedLevelDflt: { ID: 0x0002, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
347
- unoccupiedLevel: { ID: 0x0003, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
349
+ ambienceLightThreshold: { name: "ambienceLightThreshold", ID: 0x0000, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 0xffff },
350
+ occupancyActions: { name: "occupancyActions", ID: 0x0001, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true, max: 0xff },
351
+ unoccupiedLevelDflt: { name: "unoccupiedLevelDflt", ID: 0x0002, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
352
+ unoccupiedLevel: { name: "unoccupiedLevel", ID: 0x0003, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
348
353
  },
349
354
  commands: {},
350
355
  commandsResponse: {},
@@ -389,60 +394,56 @@ const schneiderElectricExtend = {
389
394
  extend.configure.push(m.setupConfigureForReading("occupancyConfiguration", ["ambienceLightThreshold"]));
390
395
  return extend;
391
396
  },
392
- thermostatWithPower: (options) => {
393
- const extend = m.thermostat(options);
394
- const climateExpose = extend.exposes.find((exp) => typeof exp !== "function" && "type" in exp && exp.type === "climate");
395
- if (climateExpose) {
396
- climateExpose.withRunningState(["idle", "heat"]);
397
- const runningStateFeature = climateExpose.features.find((f) => typeof f !== "function" && "name" in f && f.name === "running_state");
398
- if (runningStateFeature) {
399
- runningStateFeature.withDescription("Running state based on power draw (>10W)");
400
- }
401
- }
402
- extend.fromZigbee.push({
403
- cluster: "seMetering",
404
- type: ["attributeReport", "readResponse"],
405
- convert: (model, msg, publish, options, meta) => {
406
- if ("instantaneousDemand" in msg.data) {
407
- const w = Math.max(0, Number(msg.data.instantaneousDemand));
408
- return { running_state: w > 10 ? "heat" : "idle" };
409
- }
410
- },
411
- });
412
- return extend;
397
+ runningStateFromPower: () => {
398
+ return {
399
+ isModernExtend: true,
400
+ fromZigbee: [
401
+ {
402
+ cluster: "seMetering",
403
+ type: ["attributeReport", "readResponse"],
404
+ convert: (model, msg, publish, options, meta) => {
405
+ if ("instantaneousDemand" in msg.data) {
406
+ const w = Math.max(0, Number(msg.data.instantaneousDemand));
407
+ return { running_state: w > 10 ? "heat" : "idle" };
408
+ }
409
+ },
410
+ },
411
+ ],
412
+ };
413
413
  },
414
414
  addHeatingCoolingOutputClusterServer: () => m.deviceAddCustomCluster("heatingCoolingOutputClusterServer", {
415
+ name: "heatingCoolingOutputClusterServer",
415
416
  ID: 0xff23,
416
417
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
417
418
  attributes: {
418
- measuredTemperature: { ID: 0x0000, type: zigbee_herdsman_1.Zcl.DataType.INT16, max: 0x7fff },
419
- absMinHeatTemperatureLimit: { ID: 0x0003, type: zigbee_herdsman_1.Zcl.DataType.INT16, max: 0x7fff },
420
- absMaxHeatTemperatureLimit: { ID: 0x0004, type: zigbee_herdsman_1.Zcl.DataType.INT16, max: 0x7fff },
421
- absMinCoolTemperatureLimit: { ID: 0x0005, type: zigbee_herdsman_1.Zcl.DataType.INT16, max: 0x7fff },
422
- absMaxCoolTemperatureLimit: { ID: 0x0006, type: zigbee_herdsman_1.Zcl.DataType.INT16, max: 0x7fff },
423
- minHeatTemperatureLimit: { ID: 0x0015, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
424
- maxHeatTemperatureLimit: { ID: 0x0016, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
425
- minCoolTemperatureLimit: { ID: 0x0017, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
426
- maxCoolTemperatureLimit: { ID: 0x0018, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
427
- heatTemperatureHighLimit: { ID: 0x0020, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
428
- heatTemperatureLowLimit: { ID: 0x0021, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
429
- coolTemperatureHighLimit: { ID: 0x0022, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
430
- coolTemperatureLowLimit: { ID: 0x0023, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
431
- coolingOutputMode: { ID: 0x0030, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true },
432
- heatingOutputMode: { ID: 0x0031, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true },
433
- maximumIdleTime: { ID: 0x0041, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 8784 },
434
- antiIdleExerciseTime: { ID: 0x0042, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 3600 },
435
- preferredExerciseTime: { ID: 0x0043, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 1439 },
436
- minOffTime: { ID: 0x0044, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true },
437
- minOnTime: { ID: 0x0045, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true },
438
- maxOverallDutyCycle: { ID: 0xe207, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, min: 900, max: 3600 },
439
- overallDutyCyclePeriod: { ID: 0xe208, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 1440 },
440
- clusterRevision: { ID: 0xfffd, type: zigbee_herdsman_1.Zcl.DataType.UINT16, max: 0xfffe },
419
+ measuredTemperature: { name: "measuredTemperature", ID: 0x0000, type: zigbee_herdsman_1.Zcl.DataType.INT16, max: 0x7fff },
420
+ absMinHeatTemperatureLimit: { name: "absMinHeatTemperatureLimit", ID: 0x0003, type: zigbee_herdsman_1.Zcl.DataType.INT16, max: 0x7fff },
421
+ absMaxHeatTemperatureLimit: { name: "absMaxHeatTemperatureLimit", ID: 0x0004, type: zigbee_herdsman_1.Zcl.DataType.INT16, max: 0x7fff },
422
+ absMinCoolTemperatureLimit: { name: "absMinCoolTemperatureLimit", ID: 0x0005, type: zigbee_herdsman_1.Zcl.DataType.INT16, max: 0x7fff },
423
+ absMaxCoolTemperatureLimit: { name: "absMaxCoolTemperatureLimit", ID: 0x0006, type: zigbee_herdsman_1.Zcl.DataType.INT16, max: 0x7fff },
424
+ minHeatTemperatureLimit: { name: "minHeatTemperatureLimit", ID: 0x0015, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
425
+ maxHeatTemperatureLimit: { name: "maxHeatTemperatureLimit", ID: 0x0016, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
426
+ minCoolTemperatureLimit: { name: "minCoolTemperatureLimit", ID: 0x0017, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
427
+ maxCoolTemperatureLimit: { name: "maxCoolTemperatureLimit", ID: 0x0018, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
428
+ heatTemperatureHighLimit: { name: "heatTemperatureHighLimit", ID: 0x0020, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
429
+ heatTemperatureLowLimit: { name: "heatTemperatureLowLimit", ID: 0x0021, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
430
+ coolTemperatureHighLimit: { name: "coolTemperatureHighLimit", ID: 0x0022, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
431
+ coolTemperatureLowLimit: { name: "coolTemperatureLowLimit", ID: 0x0023, type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true, max: 0x7fff },
432
+ coolingOutputMode: { name: "coolingOutputMode", ID: 0x0030, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true },
433
+ heatingOutputMode: { name: "heatingOutputMode", ID: 0x0031, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true },
434
+ maximumIdleTime: { name: "maximumIdleTime", ID: 0x0041, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 8784 },
435
+ antiIdleExerciseTime: { name: "antiIdleExerciseTime", ID: 0x0042, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 3600 },
436
+ preferredExerciseTime: { name: "preferredExerciseTime", ID: 0x0043, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 1439 },
437
+ minOffTime: { name: "minOffTime", ID: 0x0044, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true },
438
+ minOnTime: { name: "minOnTime", ID: 0x0045, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true },
439
+ maxOverallDutyCycle: { name: "maxOverallDutyCycle", ID: 0xe207, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, min: 900, max: 3600 },
440
+ overallDutyCyclePeriod: { name: "overallDutyCyclePeriod", ID: 0xe208, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 1440 },
441
+ clusterRevision: { name: "clusterRevision", ID: 0xfffd, type: zigbee_herdsman_1.Zcl.DataType.UINT16, max: 0xfffe },
441
442
  },
442
443
  commands: {},
443
444
  commandsResponse: {},
444
445
  }),
445
- heatingOutputMode: () => m.enumLookup({
446
+ heatingOutputMode: (args) => m.enumLookup({
446
447
  name: "heating_output_mode",
447
448
  cluster: "heatingCoolingOutputClusterServer",
448
449
  attribute: "heatingOutputMode",
@@ -457,8 +458,9 @@ const schneiderElectricExtend = {
457
458
  "Relay NC": 4,
458
459
  },
459
460
  zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC },
461
+ ...args,
460
462
  }),
461
- pilotMode: () => m.enumLookup({
463
+ pilotMode: (args) => m.enumLookup({
462
464
  name: "schneider_pilot_mode",
463
465
  cluster: "heatingCoolingOutputClusterServer",
464
466
  attribute: "heatingOutputMode",
@@ -470,11 +472,14 @@ const schneiderElectricExtend = {
470
472
  pilot: 3,
471
473
  },
472
474
  zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC },
475
+ ...args,
473
476
  }),
474
477
  addHvacUserInterfaceCfgCustomAttributes: () => m.deviceAddCustomCluster("hvacUserInterfaceCfg", {
478
+ name: "hvacUserInterfaceCfg",
475
479
  ID: zigbee_herdsman_1.Zcl.Clusters.hvacUserInterfaceCfg.ID,
476
480
  attributes: {
477
481
  displayBrightnessActive: {
482
+ name: "displayBrightnessActive",
478
483
  ID: 0xe000,
479
484
  type: zigbee_herdsman_1.Zcl.DataType.UINT8,
480
485
  write: true,
@@ -483,6 +488,7 @@ const schneiderElectricExtend = {
483
488
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
484
489
  },
485
490
  displayBrightnessInactive: {
491
+ name: "displayBrightnessInactive",
486
492
  ID: 0xe001,
487
493
  type: zigbee_herdsman_1.Zcl.DataType.UINT8,
488
494
  write: true,
@@ -491,6 +497,7 @@ const schneiderElectricExtend = {
491
497
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
492
498
  },
493
499
  displayActiveTimeout: {
500
+ name: "displayActiveTimeout",
494
501
  ID: 0xe002,
495
502
  type: zigbee_herdsman_1.Zcl.DataType.UINT16,
496
503
  write: true,
@@ -502,7 +509,7 @@ const schneiderElectricExtend = {
502
509
  commands: {},
503
510
  commandsResponse: {},
504
511
  }),
505
- displayBrightnessActive: () => m.numeric({
512
+ displayBrightnessActive: (args) => m.numeric({
506
513
  name: "display_brightness_active",
507
514
  cluster: "hvacUserInterfaceCfg",
508
515
  attribute: "displayBrightnessActive",
@@ -513,8 +520,9 @@ const schneiderElectricExtend = {
513
520
  valueMax: 100,
514
521
  valueStep: 1,
515
522
  zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC },
523
+ ...args,
516
524
  }),
517
- displayBrightnessInactive: () => m.numeric({
525
+ displayBrightnessInactive: (args) => m.numeric({
518
526
  name: "display_brightness_inactive",
519
527
  cluster: "hvacUserInterfaceCfg",
520
528
  attribute: "displayBrightnessInactive",
@@ -525,8 +533,9 @@ const schneiderElectricExtend = {
525
533
  valueMax: 100,
526
534
  valueStep: 1,
527
535
  zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC },
536
+ ...args,
528
537
  }),
529
- displayActiveTimeout: () => m.numeric({
538
+ displayActiveTimeout: (args) => m.numeric({
530
539
  name: "display_active_timeout",
531
540
  cluster: "hvacUserInterfaceCfg",
532
541
  attribute: "displayActiveTimeout",
@@ -537,11 +546,14 @@ const schneiderElectricExtend = {
537
546
  valueMax: 600,
538
547
  valueStep: 5,
539
548
  zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC },
549
+ ...args,
540
550
  }),
541
551
  customTemperatureMeasurementCluster: () => m.deviceAddCustomCluster("msTemperatureMeasurement", {
552
+ name: "msTemperatureMeasurement",
542
553
  ID: zigbee_herdsman_1.Zcl.Clusters.msTemperatureMeasurement.ID,
543
554
  attributes: {
544
555
  sensorCorrection: {
556
+ name: "sensorCorrection",
545
557
  ID: 0xe020,
546
558
  type: zigbee_herdsman_1.Zcl.DataType.INT16,
547
559
  write: true,
@@ -550,6 +562,7 @@ const schneiderElectricExtend = {
550
562
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
551
563
  },
552
564
  temperatureSensorType: {
565
+ name: "temperatureSensorType",
553
566
  ID: 0xe021,
554
567
  type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
555
568
  write: true,
@@ -559,10 +572,46 @@ const schneiderElectricExtend = {
559
572
  commands: {},
560
573
  commandsResponse: {},
561
574
  }),
575
+ sensorCorrection: (args) => m.numeric({
576
+ name: "temperature_sensor_correction",
577
+ cluster: "msTemperatureMeasurement",
578
+ attribute: "sensorCorrection",
579
+ description: "This is a user correction, possibly negative, to be added to the temperature measured by the sensor.",
580
+ unit: "°C",
581
+ scale: 100,
582
+ valueMin: -9,
583
+ valueMax: 9,
584
+ valueStep: 0.01,
585
+ access: "ALL",
586
+ entityCategory: "config",
587
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC },
588
+ ...args,
589
+ }),
590
+ temperatureSensorType: (args) => m.enumLookup({
591
+ name: "temperature_sensor_type",
592
+ cluster: "msTemperatureMeasurement",
593
+ attribute: "temperatureSensorType",
594
+ description: "This is used to specify the type of temperature sensor connected to this input",
595
+ entityCategory: "config",
596
+ access: "ALL",
597
+ lookup: {
598
+ "2kΩ sensor from HRT/Alre": 1,
599
+ "10kΩ sensor from B+J": 2,
600
+ "12kΩ sensor from OJ": 3,
601
+ "15kΩ sensor from DEVI": 4,
602
+ "33kΩ sensor from EBERLE": 5,
603
+ "47kΩ sensor from CTM": 6,
604
+ "No sensor": 0xff,
605
+ },
606
+ zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC },
607
+ ...args,
608
+ }),
562
609
  customMeteringCluster: () => m.deviceAddCustomCluster("seMetering", {
610
+ name: "seMetering",
563
611
  ID: zigbee_herdsman_1.Zcl.Clusters.seMetering.ID,
564
612
  attributes: {
565
613
  fixedLoadDemand: {
614
+ name: "fixedLoadDemand",
566
615
  ID: 0x4510,
567
616
  type: zigbee_herdsman_1.Zcl.DataType.UINT24,
568
617
  write: true,
@@ -573,26 +622,38 @@ const schneiderElectricExtend = {
573
622
  commands: {},
574
623
  commandsResponse: {},
575
624
  }),
576
- fixedLoadDemand: () => m.numeric({
625
+ fixedLoadDemand: (args) => m.numeric({
577
626
  name: "fixed_load_demand",
578
627
  cluster: "seMetering",
579
628
  attribute: "fixedLoadDemand",
580
- description: "This attribute specifies the demand of a switched load when it is energised",
629
+ description: "Load in W when heating is on (between 0-3600 W). The thermostat reports this value as power (instantaneousDemand) when heating is on. The load has to be defined if the device should report running state ('heat' or 'idle').",
581
630
  entityCategory: "config",
582
631
  unit: "W",
583
632
  valueMin: 1,
584
633
  valueMax: 3600,
585
634
  valueStep: 1,
635
+ ...args,
586
636
  }),
587
637
  customThermostatCluster: () => m.deviceAddCustomCluster("hvacThermostat", {
638
+ name: "hvacThermostat",
588
639
  ID: zigbee_herdsman_1.Zcl.Clusters.hvacThermostat.ID,
589
640
  attributes: {
641
+ schneiderWiserSpecific: {
642
+ name: "schneiderWiserSpecific",
643
+ ID: 0xe110,
644
+ type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
645
+ write: true,
646
+ max: 0xff,
647
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
648
+ },
590
649
  controlStatus: {
650
+ name: "controlStatus",
591
651
  ID: 0xe211,
592
652
  type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
593
653
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
594
654
  },
595
655
  localTemperatureSourceSelect: {
656
+ name: "localTemperatureSourceSelect",
596
657
  ID: 0xe212,
597
658
  type: zigbee_herdsman_1.Zcl.DataType.UINT8,
598
659
  write: true,
@@ -600,40 +661,109 @@ const schneiderElectricExtend = {
600
661
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
601
662
  },
602
663
  controlType: {
664
+ name: "controlType",
603
665
  ID: 0xe213,
604
666
  type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
605
667
  write: true,
606
668
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
607
669
  },
608
670
  thermostatApplication: {
671
+ name: "thermostatApplication",
609
672
  ID: 0xe216,
610
673
  type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
611
674
  write: true,
612
675
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
613
676
  },
614
677
  heatingFuel: {
678
+ name: "heatingFuel",
615
679
  ID: 0xe217,
616
680
  type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
617
681
  write: true,
618
682
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
619
683
  },
620
684
  heatTransferMedium: {
685
+ name: "heatTransferMedium",
621
686
  ID: 0xe218,
622
687
  type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
623
688
  write: true,
624
689
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
625
690
  },
626
691
  heatingEmitter: {
692
+ name: "heatingEmitter",
627
693
  ID: 0xe21a,
628
694
  type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
629
695
  write: true,
630
696
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
631
697
  },
698
+ wiserSmartZoneMode: {
699
+ name: "wiserSmartZoneMode",
700
+ ID: 0xe010,
701
+ type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
702
+ write: true,
703
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
704
+ },
705
+ wiserSmartHactConfig: {
706
+ name: "wiserSmartHactConfig",
707
+ ID: 0xe011,
708
+ type: zigbee_herdsman_1.Zcl.DataType.BITMAP8,
709
+ write: true,
710
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
711
+ },
712
+ wiserSmartCurrentFilPiloteMode: {
713
+ name: "wiserSmartCurrentFilPiloteMode",
714
+ ID: 0xe020,
715
+ type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
716
+ write: true,
717
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
718
+ },
719
+ wiserSmartValvePosition: {
720
+ name: "wiserSmartValvePosition",
721
+ ID: 0xe030,
722
+ type: zigbee_herdsman_1.Zcl.DataType.UINT8,
723
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
724
+ },
725
+ wiserSmartValveCalibrationStatus: {
726
+ name: "wiserSmartValveCalibrationStatus",
727
+ ID: 0xe031,
728
+ type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
729
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
730
+ },
731
+ },
732
+ commands: {
733
+ schneiderWiserThermostatBoost: {
734
+ name: "schneiderWiserThermostatBoost",
735
+ ID: 0x80,
736
+ parameters: [
737
+ { name: "command", type: zigbee_herdsman_1.Zcl.DataType.ENUM8, max: 0xff },
738
+ { name: "enable", type: zigbee_herdsman_1.Zcl.DataType.ENUM8, max: 0xff },
739
+ { name: "temperature", type: zigbee_herdsman_1.Zcl.DataType.UINT16, max: 0xffff },
740
+ { name: "duration", type: zigbee_herdsman_1.Zcl.DataType.UINT16, max: 0xffff },
741
+ ],
742
+ },
743
+ wiserSmartSetSetpoint: {
744
+ name: "wiserSmartSetSetpoint",
745
+ ID: 0xe0,
746
+ parameters: [
747
+ { name: "operatingmode", type: zigbee_herdsman_1.Zcl.DataType.UINT8, max: 0xff },
748
+ { name: "zonemode", type: zigbee_herdsman_1.Zcl.DataType.UINT8, max: 0xff },
749
+ { name: "setpoint", type: zigbee_herdsman_1.Zcl.DataType.INT16, min: -32768, max: 32767 },
750
+ { name: "reserved", type: zigbee_herdsman_1.Zcl.DataType.UINT8, max: 0xff },
751
+ ],
752
+ },
753
+ wiserSmartSetFipMode: {
754
+ name: "wiserSmartSetFipMode",
755
+ ID: 0xe1,
756
+ parameters: [
757
+ { name: "zonemode", type: zigbee_herdsman_1.Zcl.DataType.UINT8, max: 0xff },
758
+ { name: "fipmode", type: zigbee_herdsman_1.Zcl.DataType.ENUM8, max: 0xff },
759
+ { name: "reserved", type: zigbee_herdsman_1.Zcl.DataType.UINT8, max: 0xff },
760
+ ],
761
+ },
762
+ wiserSmartCalibrateValve: { name: "wiserSmartCalibrateValve", ID: 0xe2, parameters: [] },
632
763
  },
633
- commands: {},
634
764
  commandsResponse: {},
635
765
  }),
636
- controlStatus: () => m.enumLookup({
766
+ controlStatus: (args) => m.enumLookup({
637
767
  name: "control_status",
638
768
  cluster: "hvacThermostat",
639
769
  attribute: "controlStatus",
@@ -651,6 +781,7 @@ const schneiderElectricExtend = {
651
781
  "Sensor Fault": 0x84,
652
782
  },
653
783
  zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC },
784
+ ...args,
654
785
  }),
655
786
  localTemperatureSourceSelect: () => m.enumLookup({
656
787
  name: "local_temperature_source_select",
@@ -716,33 +847,52 @@ const schneiderElectricExtend = {
716
847
  zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC },
717
848
  }),
718
849
  addWiserDeviceInfoCluster: () => m.deviceAddCustomCluster("wiserDeviceInfo", {
850
+ name: "wiserDeviceInfo",
719
851
  ID: 0xfe03,
720
852
  attributes: {
721
- deviceInfo: { ID: 0x0020, type: zigbee_herdsman_1.Zcl.DataType.CHAR_STR, write: true },
853
+ deviceInfo: { name: "deviceInfo", ID: 0x0020, type: zigbee_herdsman_1.Zcl.DataType.CHAR_STR, write: true },
722
854
  },
723
855
  commands: {},
724
856
  commandsResponse: {},
725
857
  }),
726
858
  addSchneiderLightSwitchConfigurationCluster: () => m.deviceAddCustomCluster("manuSpecificSchneiderLightSwitchConfiguration", {
859
+ name: "manuSpecificSchneiderLightSwitchConfiguration",
727
860
  ID: 0xff17,
728
861
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
729
862
  attributes: {
730
- ledIndication: { ID: 0x0000, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true, max: 0xff },
731
- upSceneID: { ID: 0x0010, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
732
- upGroupID: { ID: 0x0011, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 0xffff },
733
- downSceneID: { ID: 0x0020, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
734
- downGroupID: { ID: 0x0021, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 0xffff },
735
- switchActions: { ID: 0x0001, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true, max: 0xff },
863
+ ledIndication: { name: "ledIndication", ID: 0x0000, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true, max: 0xff },
864
+ upSceneID: { name: "upSceneID", ID: 0x0010, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
865
+ upGroupID: { name: "upGroupID", ID: 0x0011, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 0xffff },
866
+ downSceneID: { name: "downSceneID", ID: 0x0020, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
867
+ downGroupID: { name: "downGroupID", ID: 0x0021, type: zigbee_herdsman_1.Zcl.DataType.UINT16, write: true, max: 0xffff },
868
+ switchActions: { name: "switchActions", ID: 0x0001, type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true, max: 0xff },
736
869
  },
737
870
  commands: {},
738
871
  commandsResponse: {},
739
872
  }),
740
873
  addSchneiderFanSwitchConfigurationCluster: () => m.deviceAddCustomCluster("manuSpecificSchneiderFanSwitchConfiguration", {
874
+ name: "manuSpecificSchneiderFanSwitchConfiguration",
741
875
  ID: 0xfc04,
742
876
  manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
743
877
  attributes: {
744
- ledIndication: { ID: 0x0002, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
745
- ledOrientation: { ID: 0x0060, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
878
+ ledIndication: { name: "ledIndication", ID: 0x0002, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
879
+ ledOrientation: { name: "ledOrientation", ID: 0x0060, type: zigbee_herdsman_1.Zcl.DataType.UINT8, write: true, max: 0xff },
880
+ },
881
+ commands: {},
882
+ commandsResponse: {},
883
+ }),
884
+ addSchneiderLightingBallastCfgCluster: () => m.deviceAddCustomCluster("lightingBallastCfg", {
885
+ name: "lightingBallastCfg",
886
+ ID: zigbee_herdsman_1.Zcl.Clusters.lightingBallastCfg.ID,
887
+ attributes: {
888
+ wiserControlMode: {
889
+ name: "wiserControlMode",
890
+ ID: 0xe000,
891
+ type: zigbee_herdsman_1.Zcl.DataType.ENUM8,
892
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
893
+ write: true,
894
+ max: 0xff,
895
+ },
746
896
  },
747
897
  commands: {},
748
898
  commandsResponse: {},
@@ -765,8 +915,210 @@ const tzLocal = {
765
915
  return await tz.fan_mode.convertSet(entity, key, value, meta);
766
916
  },
767
917
  },
918
+ wiser_dimmer_mode: {
919
+ key: ["dimmer_mode"],
920
+ convertSet: async (entity, key, value, meta) => {
921
+ await entity.write("lightingBallastCfg", { wiserControlMode: utils.getKey(constants.wiserDimmerControlMode, value, value, Number) }, { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC });
922
+ return { state: { dimmer_mode: value } };
923
+ },
924
+ convertGet: async (entity, key, meta) => {
925
+ await entity.read("lightingBallastCfg", ["wiserControlMode"], {
926
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
927
+ });
928
+ },
929
+ },
930
+ wiser_fip_setting: {
931
+ key: ["fip_setting"],
932
+ convertSet: async (entity, key, value, meta) => {
933
+ utils.assertString(value, key);
934
+ const zoneLookup = { manual: 1, schedule: 2, energy_saver: 3, holiday: 6 };
935
+ const zonemodeNum = utils.getFromLookup(meta.state.zone_mode, zoneLookup);
936
+ const fipLookup = { comfort: 0, "comfort_-1": 1, "comfort_-2": 2, energy_saving: 3, frost_protection: 4, off: 5 };
937
+ value = value.toLowerCase();
938
+ utils.validateValue(value, Object.keys(fipLookup));
939
+ const fipmodeNum = utils.getFromLookup(value, fipLookup);
940
+ const payload = {
941
+ zonemode: zonemodeNum,
942
+ fipmode: fipmodeNum,
943
+ reserved: 0xff,
944
+ };
945
+ await entity.command("hvacThermostat", "wiserSmartSetFipMode", payload, { srcEndpoint: 11, disableDefaultResponse: true });
946
+ return { state: { fip_setting: value } };
947
+ },
948
+ convertGet: async (entity, key, meta) => {
949
+ await entity.read("hvacThermostat", ["wiserSmartCurrentFilPiloteMode"]);
950
+ },
951
+ },
952
+ wiser_hact_config: {
953
+ key: ["hact_config"],
954
+ convertSet: async (entity, key, value, meta) => {
955
+ utils.assertString(value, key);
956
+ const lookup = { unconfigured: 0x00, setpoint_switch: 0x80, setpoint_fip: 0x82, fip_fip: 0x83 };
957
+ value = value.toLowerCase();
958
+ const mode = utils.getFromLookup(value, lookup);
959
+ await entity.write("hvacThermostat", { 57361: { value: mode, type: 0x18 } });
960
+ return { state: { hact_config: value } };
961
+ },
962
+ convertGet: async (entity, key, meta) => {
963
+ await entity.read("hvacThermostat", ["wiserSmartHactConfig"]);
964
+ },
965
+ },
966
+ wiser_zone_mode: {
967
+ key: ["zone_mode"],
968
+ convertSet: async (entity, key, value, meta) => {
969
+ const lookup = { manual: 1, schedule: 2, energy_saver: 3, holiday: 6 };
970
+ const zonemodeNum = utils.getFromLookup(value, lookup);
971
+ await entity.write("hvacThermostat", { 57360: { value: zonemodeNum, type: 0x30 } });
972
+ return { state: { zone_mode: value } };
973
+ },
974
+ convertGet: async (entity, key, meta) => {
975
+ await entity.read("hvacThermostat", ["wiserSmartZoneMode"]);
976
+ },
977
+ },
978
+ wiser_vact_calibrate_valve: {
979
+ key: ["calibrate_valve"],
980
+ convertSet: async (entity, key, value, meta) => {
981
+ await entity.command("hvacThermostat", "wiserSmartCalibrateValve", {}, { srcEndpoint: 11, disableDefaultResponse: true });
982
+ return { state: { calibrate_valve: value } };
983
+ },
984
+ },
985
+ wiser_sed_zone_mode: {
986
+ key: ["zone_mode"],
987
+ convertSet: (entity, key, value, meta) => {
988
+ return { state: { zone_mode: value } };
989
+ },
990
+ },
991
+ wiser_sed_occupied_heating_setpoint: {
992
+ key: ["occupied_heating_setpoint"],
993
+ convertSet: (entity, key, value, meta) => {
994
+ utils.assertNumber(value, key);
995
+ utils.assertEndpoint(entity);
996
+ const occupiedHeatingSetpoint = Number((Math.round(Number((value * 2).toFixed(1))) / 2).toFixed(1)) * 100;
997
+ entity.saveClusterAttributeKeyValue("hvacThermostat", { occupiedHeatingSetpoint });
998
+ return { state: { occupied_heating_setpoint: value } };
999
+ },
1000
+ },
1001
+ wiser_sed_thermostat_local_temperature_calibration: {
1002
+ key: ["local_temperature_calibration"],
1003
+ convertSet: async (entity, key, value, meta) => {
1004
+ utils.assertNumber(value);
1005
+ await entity.write("hvacThermostat", { localTemperatureCalibration: Math.round(value * 10) }, { srcEndpoint: 11, disableDefaultResponse: true });
1006
+ return { state: { local_temperature_calibration: value } };
1007
+ },
1008
+ },
1009
+ wiser_sed_thermostat_keypad_lockout: {
1010
+ key: ["keypad_lockout"],
1011
+ convertSet: async (entity, key, value, meta) => {
1012
+ await entity.write("hvacUserInterfaceCfg", { keypadLockout: utils.getKey(constants.keypadLockoutMode, value, value, Number) }, { srcEndpoint: 11, disableDefaultResponse: true });
1013
+ return { state: { keypad_lockout: value } };
1014
+ },
1015
+ },
1016
+ cctfr6400_thermostat_system_mode: {
1017
+ key: ["system_mode"],
1018
+ convertSet: (entity, key, value, meta) => {
1019
+ utils.assertEndpoint(entity);
1020
+ const systemMode = utils.getKey(constants.thermostatSystemModes, value, undefined, Number);
1021
+ entity.saveClusterAttributeKeyValue("hvacThermostat", { systemMode: systemMode });
1022
+ return { state: { system_mode: value } };
1023
+ },
1024
+ },
1025
+ cctfr6400_thermostat_occupied_heating_setpoint: {
1026
+ key: ["occupied_heating_setpoint"],
1027
+ convertSet: (entity, key, value, meta) => {
1028
+ utils.assertNumber(value, key);
1029
+ utils.assertEndpoint(entity);
1030
+ const occupiedHeatingSetpoint = Number((Math.round(Number((value * 2).toFixed(1))) / 2).toFixed(1)) * 100;
1031
+ entity.saveClusterAttributeKeyValue("hvacThermostat", { occupiedHeatingSetpoint: occupiedHeatingSetpoint });
1032
+ return { state: { occupied_heating_setpoint: value } };
1033
+ },
1034
+ },
1035
+ cctfr6400_thermostat_control_sequence_of_operation: {
1036
+ key: ["control_sequence_of_operation"],
1037
+ convertSet: (entity, key, value, meta) => {
1038
+ utils.assertEndpoint(entity);
1039
+ const val = utils.getKey(constants.thermostatControlSequenceOfOperations, value, value, Number);
1040
+ entity.saveClusterAttributeKeyValue("hvacThermostat", { ctrlSeqeOfOper: val });
1041
+ return { state: { control_sequence_of_operation: value } };
1042
+ },
1043
+ },
1044
+ cctfr6400_thermostat_pi_heating_demand: {
1045
+ key: ["pi_heating_demand"],
1046
+ convertSet: (entity, key, value, meta) => {
1047
+ utils.assertEndpoint(entity);
1048
+ entity.saveClusterAttributeKeyValue("hvacThermostat", { pIHeatingDemand: value });
1049
+ return { state: { pi_heating_demand: value } };
1050
+ },
1051
+ },
1052
+ schneider_thermostat_keypad_lockout: {
1053
+ key: ["keypad_lockout"],
1054
+ convertSet: async (entity, key, value, meta) => {
1055
+ utils.assertEndpoint(entity);
1056
+ const keypadLockout = utils.getKey(constants.keypadLockoutMode, value, value, Number);
1057
+ await entity.write("hvacUserInterfaceCfg", { keypadLockout });
1058
+ entity.saveClusterAttributeKeyValue("hvacUserInterfaceCfg", { keypadLockout });
1059
+ return { state: { keypad_lockout: value } };
1060
+ },
1061
+ },
1062
+ schneider_dimmer_mode: {
1063
+ key: ["dimmer_mode"],
1064
+ convertSet: async (entity, key, value, meta) => {
1065
+ const lookup = { RC: 1, RL: 2 };
1066
+ const mode = utils.getFromLookup(value, lookup);
1067
+ await entity.write("lightingBallastCfg", { wiserControlMode: mode }, { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC });
1068
+ return { state: { dimmer_mode: value } };
1069
+ },
1070
+ convertGet: async (entity, key, meta) => {
1071
+ await entity.read("lightingBallastCfg", ["wiserControlMode"], {
1072
+ manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC,
1073
+ });
1074
+ },
1075
+ },
1076
+ cctfr6700_temperature_measured_value: {
1077
+ key: ["temperature_measured_value"],
1078
+ convertSet: async (entity, key, value, meta) => {
1079
+ utils.assertNumber(value);
1080
+ utils.assertEndpoint(entity);
1081
+ await entity.report("msTemperatureMeasurement", { measuredValue: Math.round(value * 100) });
1082
+ },
1083
+ },
768
1084
  };
769
1085
  const fzLocal = {
1086
+ schneider_ui_action: {
1087
+ cluster: "wiserDeviceInfo",
1088
+ type: "attributeReport",
1089
+ convert: (model, msg, publish, options, meta) => {
1090
+ if (utils.hasAlreadyProcessedMessage(msg, model))
1091
+ return;
1092
+ const data = msg.data.deviceInfo.split(",");
1093
+ if (data[0] === "UI" && data[1]) {
1094
+ const result = { action: utils.toSnakeCase(data[1]) };
1095
+ let screenAwake = globalStore.getValue(msg.endpoint, "screenAwake");
1096
+ screenAwake = screenAwake !== undefined ? screenAwake : false;
1097
+ const keypadLockedNumber = Number(msg.endpoint.getClusterAttributeValue("hvacUserInterfaceCfg", "keypadLockout"));
1098
+ const keypadLocked = keypadLockedNumber !== undefined ? keypadLockedNumber !== 0 : false;
1099
+ // Emulate UI temperature update
1100
+ if (data[1] === "ScreenWake") {
1101
+ globalStore.putValue(msg.endpoint, "screenAwake", true);
1102
+ }
1103
+ else if (data[1] === "ScreenSleep") {
1104
+ globalStore.putValue(msg.endpoint, "screenAwake", false);
1105
+ }
1106
+ else if (screenAwake && !keypadLocked) {
1107
+ let occupiedHeatingSetpoint = Number(msg.endpoint.getClusterAttributeValue("hvacThermostat", "occupiedHeatingSetpoint"));
1108
+ occupiedHeatingSetpoint = occupiedHeatingSetpoint != null ? occupiedHeatingSetpoint : 400;
1109
+ if (data[1] === "ButtonPressMinusDown") {
1110
+ occupiedHeatingSetpoint -= 50;
1111
+ }
1112
+ else if (data[1] === "ButtonPressPlusDown") {
1113
+ occupiedHeatingSetpoint += 50;
1114
+ }
1115
+ msg.endpoint.saveClusterAttributeKeyValue("hvacThermostat", { occupiedHeatingSetpoint: occupiedHeatingSetpoint });
1116
+ result.occupied_heating_setpoint = occupiedHeatingSetpoint / 100;
1117
+ }
1118
+ return result;
1119
+ }
1120
+ },
1121
+ },
770
1122
  schneider_powertag: {
771
1123
  cluster: "greenPower",
772
1124
  type: ["commandNotification", "commandCommissioningNotification"],
@@ -775,17 +1127,24 @@ const fzLocal = {
775
1127
  return;
776
1128
  }
777
1129
  const commandID = msg.data.commandID;
778
- if (utils.hasAlreadyProcessedMessage(msg, model, msg.data.frameCounter, `${msg.device.ieeeAddr}_${commandID}`))
1130
+ if (utils.hasAlreadyProcessedMessage(msg, model, msg.data.frameCounter, `${msg.device.ieeeAddr}_${commandID}`)) {
779
1131
  return;
1132
+ }
1133
+ if (commandID >= 0xe0)
1134
+ return; // Skip op commands
780
1135
  const rxAfterTx = msg.data.options & (1 << 11);
781
1136
  const ret = {};
782
1137
  switch (commandID) {
1138
+ case 0xa0: {
1139
+ // Should handle this cluster as well
1140
+ // const cmd = msg.data.commandFrame as GpdAttributeReport;
1141
+ break;
1142
+ }
783
1143
  case 0xa1: {
784
- const attr = msg.data.commandFrame.attributes;
785
- const clusterID = msg.data.commandFrame.clusterID;
786
- switch (clusterID) {
787
- case 2820: {
788
- // haElectricalMeasurement
1144
+ const cmd = msg.data.commandFrame;
1145
+ switch (cmd.clusterID) {
1146
+ case zigbee_herdsman_1.Zcl.Clusters.haElectricalMeasurement.ID: {
1147
+ const attr = cmd.attributes;
789
1148
  const acCurrentDivisor = attr.acCurrentDivisor;
790
1149
  const acVoltageDivisor = attr.acVoltageDivisor;
791
1150
  const acFrequencyDivisor = attr.acFrequencyDivisor;
@@ -837,24 +1196,21 @@ const fzLocal = {
837
1196
  }
838
1197
  break;
839
1198
  }
840
- case 1794: {
841
- // seMetering
1199
+ case zigbee_herdsman_1.Zcl.Clusters.seMetering.ID: {
1200
+ const attr = cmd.attributes;
842
1201
  const divisor = attr.divisor;
843
1202
  if (attr.currentSummDelivered !== undefined) {
844
1203
  const val = attr.currentSummDelivered;
845
1204
  ret.energy = val / divisor;
846
1205
  }
847
1206
  if (attr["16652"] !== undefined) {
848
- const val = attr["16652"];
849
- ret.energy_phase_a = val / divisor;
1207
+ ret.energy_phase_a = attr["16652"] / divisor;
850
1208
  }
851
1209
  if (attr["16908"] !== undefined) {
852
- const val = attr["16908"];
853
- ret.energy_phase_b = val / divisor;
1210
+ ret.energy_phase_b = attr["16908"] / divisor;
854
1211
  }
855
1212
  if (attr["17164"] !== undefined) {
856
- const val = attr["17164"];
857
- ret.energy_phase_c = val / divisor;
1213
+ ret.energy_phase_c = attr["17164"] / divisor;
858
1214
  }
859
1215
  if (attr.powerFactor !== undefined) {
860
1216
  ret.power_factor = attr.powerFactor;
@@ -864,9 +1220,11 @@ const fzLocal = {
864
1220
  }
865
1221
  break;
866
1222
  }
867
- case 0xa3:
1223
+ case 0xa3: {
868
1224
  // Should handle this cluster as well
1225
+ // const cmd = msg.data.commandFrame as GpdManufMultiClusterAttributeReport;
869
1226
  break;
1227
+ }
870
1228
  }
871
1229
  if (rxAfterTx) {
872
1230
  // Send Schneider specific ACK to make PowerTag happy
@@ -930,6 +1288,158 @@ const fzLocal = {
930
1288
  return result;
931
1289
  },
932
1290
  },
1291
+ wiser_lighting_ballast_configuration: {
1292
+ cluster: "lightingBallastCfg",
1293
+ type: ["attributeReport", "readResponse"],
1294
+ convert: (model, msg, publish, options, meta) => {
1295
+ const result = fz.lighting_ballast_configuration.convert(model, msg, publish, options, meta);
1296
+ if (result && msg.data.wiserControlMode !== undefined) {
1297
+ result.dimmer_mode = constants.wiserDimmerControlMode[msg.data.wiserControlMode];
1298
+ }
1299
+ return result;
1300
+ },
1301
+ },
1302
+ wiser_smart_setpoint_command_client: {
1303
+ cluster: "hvacThermostat",
1304
+ type: ["commandWiserSmartSetSetpoint"],
1305
+ convert: (model, msg, publish, options, meta) => {
1306
+ const attribute = {};
1307
+ const result = {};
1308
+ // The UI client on the thermostat also updates the server, so no need to readback/send again on next sync.
1309
+ // This also ensures the next client read of setpoint is in sync with the latest commanded value.
1310
+ attribute.occupiedHeatingSetpoint = msg.data.setpoint;
1311
+ msg.endpoint.saveClusterAttributeKeyValue("hvacThermostat", attribute);
1312
+ result.occupied_heating_setpoint = msg.data.setpoint / 100.0;
1313
+ logger_1.logger.debug(`received wiser setpoint command with value: '${msg.data.setpoint}'`, NS);
1314
+ return result;
1315
+ },
1316
+ },
1317
+ wiser_smart_thermostat: {
1318
+ cluster: "hvacThermostat",
1319
+ type: ["attributeReport", "readResponse"],
1320
+ convert: async (model, msg, publish, options, meta) => {
1321
+ const result = fz.thermostat.convert(model, msg, publish, options, meta);
1322
+ if (result) {
1323
+ if (msg.data.wiserSmartZoneMode !== undefined) {
1324
+ const lookup = { 1: "manual", 2: "schedule", 3: "energy_saver", 6: "holiday" };
1325
+ result.zone_mode = lookup[msg.data.wiserSmartZoneMode];
1326
+ }
1327
+ if (msg.data.wiserSmartHactConfig !== undefined) {
1328
+ const lookup = { 0: "unconfigured", 128: "setpoint_switch", 130: "setpoint_fip", 131: "fip_fip" };
1329
+ result.hact_config = lookup[msg.data.wiserSmartHactConfig];
1330
+ }
1331
+ if (msg.data.wiserSmartCurrentFilPiloteMode !== undefined) {
1332
+ const lookup = {
1333
+ 0: "comfort",
1334
+ 1: "comfort_-1",
1335
+ 2: "comfort_-2",
1336
+ 3: "energy_saving",
1337
+ 4: "frost_protection",
1338
+ 5: "off",
1339
+ };
1340
+ result.fip_setting = lookup[msg.data.wiserSmartCurrentFilPiloteMode];
1341
+ }
1342
+ if (msg.data.wiserSmartValvePosition !== undefined) {
1343
+ result.pi_heating_demand = msg.data.wiserSmartValvePosition;
1344
+ }
1345
+ if (msg.data.wiserSmartValveCalibrationStatus !== undefined) {
1346
+ const lookup = {
1347
+ 0: "ongoing",
1348
+ 1: "successful",
1349
+ 2: "uncalibrated",
1350
+ 3: "failed_e1",
1351
+ 4: "failed_e2",
1352
+ 5: "failed_e3",
1353
+ };
1354
+ result.valve_calibration_status = lookup[msg.data.wiserSmartValveCalibrationStatus];
1355
+ }
1356
+ // Radiator thermostats command changes from UI, but report value periodically for sync,
1357
+ // force an update of the value if it doesn't match the current existing value
1358
+ if (meta.device.modelID === "EH-ZB-VACT" &&
1359
+ msg.data.occupiedHeatingSetpoint !== undefined &&
1360
+ meta.state.occupied_heating_setpoint !== undefined) {
1361
+ if (result.occupied_heating_setpoint !== meta.state.occupied_heating_setpoint) {
1362
+ const lookup = { manual: 1, schedule: 2, energy_saver: 3, holiday: 6 };
1363
+ const zonemodeNum = lookup[Number(meta.state.zone_mode)];
1364
+ const setpoint = Number((Math.round(Number((Number(meta.state.occupied_heating_setpoint) * 2).toFixed(1))) / 2).toFixed(1)) * 100;
1365
+ const payload = {
1366
+ operatingmode: 0,
1367
+ zonemode: zonemodeNum,
1368
+ setpoint: setpoint,
1369
+ reserved: 0xff,
1370
+ };
1371
+ await msg.endpoint.command("hvacThermostat", "wiserSmartSetSetpoint", payload, {
1372
+ srcEndpoint: 11,
1373
+ disableDefaultResponse: true,
1374
+ });
1375
+ logger_1.logger.debug(`syncing vact setpoint was: '${result.occupied_heating_setpoint}' now: '${meta.state.occupied_heating_setpoint}'`, NS);
1376
+ }
1377
+ }
1378
+ else {
1379
+ publish(result);
1380
+ }
1381
+ }
1382
+ },
1383
+ },
1384
+ wiser_smart_thermostat_client: {
1385
+ cluster: "hvacThermostat",
1386
+ type: "read",
1387
+ convert: async (model, msg, publish, options, meta) => {
1388
+ const response = {};
1389
+ if (msg.data.includes("wiserSmartZoneMode") || msg.data.includes(0xe010)) {
1390
+ // Zone Mode
1391
+ const lookup = { manual: 1, schedule: 2, energy_saver: 3, holiday: 6 };
1392
+ const zonemodeNum = meta.state.zone_mode ? lookup[meta.state.zone_mode] : 1;
1393
+ response.wiserSmartZoneMode = { value: zonemodeNum };
1394
+ await msg.endpoint.readResponse(msg.cluster, msg.meta.zclTransactionSequenceNumber, response, { srcEndpoint: 11 });
1395
+ }
1396
+ },
1397
+ },
1398
+ thermostat_running_state_from_piheat: {
1399
+ cluster: "hvacThermostat",
1400
+ type: ["attributeReport", "readResponse"],
1401
+ convert: (model, msg, publish, options, meta) => {
1402
+ const result = fz.thermostat.convert(model, msg, publish, options, meta);
1403
+ if (result && msg.data.pIHeatingDemand !== undefined) {
1404
+ result.running_state = msg.data.pIHeatingDemand >= 10 ? "heat" : "idle";
1405
+ }
1406
+ return result;
1407
+ },
1408
+ },
1409
+ schneider_temperature: {
1410
+ cluster: "msTemperatureMeasurement",
1411
+ type: ["attributeReport", "readResponse"],
1412
+ convert: (model, msg, publish, options, meta) => {
1413
+ const temperature = msg.data.measuredValue / 100.0;
1414
+ const property = (0, utils_1.postfixWithEndpointName)("local_temperature", msg, model, meta);
1415
+ return { [property]: temperature };
1416
+ },
1417
+ },
1418
+ schneider_lighting_ballast_configuration: {
1419
+ cluster: "lightingBallastCfg",
1420
+ type: ["attributeReport", "readResponse"],
1421
+ convert: (model, msg, publish, options, meta) => {
1422
+ const result = fz.lighting_ballast_configuration.convert(model, msg, publish, options, meta);
1423
+ const lookup = { 1: "RC", 2: "RL" };
1424
+ if (result && msg.data.wiserControlMode !== undefined) {
1425
+ result.dimmer_mode = lookup[msg.data.wiserControlMode];
1426
+ }
1427
+ return result;
1428
+ },
1429
+ },
1430
+ // biome-ignore lint/style/useNamingConvention: ignored using `--suppress`
1431
+ EKO09738_metering: {
1432
+ // Elko EKO09738 and EKO09716 reports power in mW, scale to W
1433
+ cluster: "seMetering",
1434
+ type: ["attributeReport", "readResponse"],
1435
+ convert: (model, msg, publish, options, meta) => {
1436
+ const result = fz.metering.convert(model, msg, publish, options, meta);
1437
+ if (result && result.power !== undefined) {
1438
+ result.power /= 1000;
1439
+ }
1440
+ return result;
1441
+ },
1442
+ },
933
1443
  };
934
1444
  exports.definitions = [
935
1445
  {
@@ -989,10 +1499,10 @@ exports.definitions = [
989
1499
  model: "WV704R0A0902",
990
1500
  vendor: "Schneider Electric",
991
1501
  description: "Wiser radiator thermostat",
1502
+ extend: [schneiderElectricExtend.addWiserDeviceInfoCluster()],
992
1503
  fromZigbee: [fz.ignore_haDiagnostic, fz.thermostat, fz.battery, fz.hvac_user_interface, fzLocal.wiser_device_info],
993
1504
  toZigbee: [tz.thermostat_occupied_heating_setpoint, tz.thermostat_keypad_lockout],
994
1505
  meta: { battery: { voltageToPercentage: { min: 2500, max: 3200 } } },
995
- extend: [schneiderElectricExtend.addWiserDeviceInfoCluster()],
996
1506
  exposes: [
997
1507
  e
998
1508
  .climate()
@@ -1036,9 +1546,12 @@ exports.definitions = [
1036
1546
  vendor: "Schneider Electric",
1037
1547
  description: "Micro module dimmer",
1038
1548
  ota: true,
1039
- extend: [m.light({ powerOnBehavior: false, configureReporting: true, levelConfig: {} })],
1040
- fromZigbee: [fz.wiser_lighting_ballast_configuration],
1041
- toZigbee: [tz.ballast_config, tz.wiser_dimmer_mode],
1549
+ extend: [
1550
+ schneiderElectricExtend.addSchneiderLightingBallastCfgCluster(),
1551
+ m.light({ powerOnBehavior: false, configureReporting: true, levelConfig: {} }),
1552
+ ],
1553
+ fromZigbee: [fzLocal.wiser_lighting_ballast_configuration],
1554
+ toZigbee: [tz.ballast_config, tzLocal.wiser_dimmer_mode],
1042
1555
  exposes: [
1043
1556
  e
1044
1557
  .numeric("ballast_minimum_level", ea.ALL)
@@ -1074,9 +1587,9 @@ exports.definitions = [
1074
1587
  vendor: "Schneider Electric",
1075
1588
  description: "Micro module dimmer with neutral lead",
1076
1589
  ota: true,
1077
- extend: [m.light({ configureReporting: true, levelConfig: {} })],
1078
- fromZigbee: [fz.wiser_lighting_ballast_configuration],
1079
- toZigbee: [tz.ballast_config, tz.wiser_dimmer_mode],
1590
+ extend: [schneiderElectricExtend.addSchneiderLightingBallastCfgCluster(), m.light({ configureReporting: true, levelConfig: {} })],
1591
+ fromZigbee: [fzLocal.wiser_lighting_ballast_configuration],
1592
+ toZigbee: [tz.ballast_config, tzLocal.wiser_dimmer_mode],
1080
1593
  exposes: [
1081
1594
  e
1082
1595
  .numeric("ballast_minimum_level", ea.ALL)
@@ -1106,8 +1619,9 @@ exports.definitions = [
1106
1619
  model: "WDE002334",
1107
1620
  vendor: "Schneider Electric",
1108
1621
  description: "Rotary dimmer",
1109
- fromZigbee: [fz.on_off, fz.brightness, fz.level_config, fz.wiser_lighting_ballast_configuration],
1110
- toZigbee: [tz.light_onoff_brightness, tz.level_config, tz.ballast_config, tz.wiser_dimmer_mode],
1622
+ extend: [schneiderElectricExtend.addSchneiderLightingBallastCfgCluster()],
1623
+ fromZigbee: [fz.on_off, fz.brightness, fz.level_config, fzLocal.wiser_lighting_ballast_configuration],
1624
+ toZigbee: [tz.light_onoff_brightness, tz.level_config, tz.ballast_config, tzLocal.wiser_dimmer_mode],
1111
1625
  exposes: [
1112
1626
  e.light_brightness().withLevelConfig(),
1113
1627
  e
@@ -1163,8 +1677,9 @@ exports.definitions = [
1163
1677
  model: "WDE002960",
1164
1678
  vendor: "Schneider Electric",
1165
1679
  description: "Push button dimmer",
1166
- fromZigbee: [fz.on_off, fz.brightness, fz.level_config, fz.wiser_lighting_ballast_configuration],
1167
- toZigbee: [tz.light_onoff_brightness, tz.level_config, tz.ballast_config, tz.wiser_dimmer_mode],
1680
+ extend: [schneiderElectricExtend.addSchneiderLightingBallastCfgCluster()],
1681
+ fromZigbee: [fz.on_off, fz.brightness, fz.level_config, fzLocal.wiser_lighting_ballast_configuration],
1682
+ toZigbee: [tz.light_onoff_brightness, tz.level_config, tz.ballast_config, tzLocal.wiser_dimmer_mode],
1168
1683
  exposes: [
1169
1684
  e.light_brightness().withLevelConfig(),
1170
1685
  e
@@ -1319,24 +1834,16 @@ exports.definitions = [
1319
1834
  model: "CCT711119",
1320
1835
  vendor: "Schneider Electric",
1321
1836
  description: "Wiser smart plug",
1322
- fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, fz.power_on_behavior],
1323
- toZigbee: [tz.on_off, tz.power_on_behavior, tz.electrical_measurement_power],
1324
- exposes: [
1325
- e.switch(),
1326
- e.power().withAccess(ea.STATE_GET),
1327
- e.energy(),
1328
- e.enum("power_on_behavior", ea.ALL, ["off", "previous", "on"]).withDescription("Controls the behaviour when the device is powered on"),
1837
+ version: "0.0.1",
1838
+ extend: [
1839
+ m.onOff(),
1840
+ m.electricityMeter({
1841
+ power: { min: 5, change: 1 },
1842
+ energy: { min: "1_MINUTE", change: 1 },
1843
+ voltage: false,
1844
+ current: false,
1845
+ }),
1329
1846
  ],
1330
- configure: async (device, coordinatorEndpoint) => {
1331
- const endpoint = device.getEndpoint(1);
1332
- await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff", "haElectricalMeasurement", "seMetering"]);
1333
- await reporting.onOff(endpoint);
1334
- // only activePower seems to be support, although compliance document states otherwise
1335
- await endpoint.read("haElectricalMeasurement", ["acPowerMultiplier", "acPowerDivisor"]);
1336
- await reporting.activePower(endpoint);
1337
- await reporting.readMeteringMultiplierDivisor(endpoint);
1338
- await reporting.currentSummDelivered(endpoint, { min: 60, change: 1 });
1339
- },
1340
1847
  },
1341
1848
  {
1342
1849
  zigbeeModel: ["U201DST600ZB"],
@@ -1357,9 +1864,9 @@ exports.definitions = [
1357
1864
  model: "CCTFR6100Z3",
1358
1865
  vendor: "Schneider Electric",
1359
1866
  description: "Wiser radiator thermostat",
1867
+ extend: [schneiderElectricExtend.addWiserDeviceInfoCluster()],
1360
1868
  fromZigbee: [fz.ignore_haDiagnostic, fz.thermostat, fz.battery, fz.hvac_user_interface, fzLocal.wiser_device_info],
1361
1869
  toZigbee: [tz.thermostat_occupied_heating_setpoint, tz.thermostat_keypad_lockout],
1362
- extend: [schneiderElectricExtend.addWiserDeviceInfoCluster()],
1363
1870
  exposes: [
1364
1871
  e
1365
1872
  .climate()
@@ -1424,8 +1931,8 @@ exports.definitions = [
1424
1931
  model: "MEG5116-0300/MEG5171-0000",
1425
1932
  vendor: "Schneider Electric",
1426
1933
  description: "Merten MEG5171 PlusLink Dimmer insert with Merten Wiser System M Push Button (1fold)",
1427
- fromZigbee: [fz.on_off, fz.brightness, fz.level_config, fz.wiser_lighting_ballast_configuration],
1428
- toZigbee: [tz.light_onoff_brightness, tz.level_config, tz.ballast_config, tz.wiser_dimmer_mode],
1934
+ fromZigbee: [fz.on_off, fz.brightness, fz.level_config, fzLocal.wiser_lighting_ballast_configuration],
1935
+ toZigbee: [tz.light_onoff_brightness, tz.level_config, tz.ballast_config, tzLocal.wiser_dimmer_mode],
1429
1936
  exposes: [
1430
1937
  e.light_brightness().withLevelConfig(),
1431
1938
  e
@@ -1442,7 +1949,12 @@ exports.definitions = [
1442
1949
  .enum("dimmer_mode", ea.ALL, ["auto", "rc", "rl", "rl_led"])
1443
1950
  .withDescription("Sets dimming mode to autodetect or fixed RC/RL/RL_LED mode (max load is reduced in RL_LED)"),
1444
1951
  ],
1445
- extend: [schneiderElectricExtend.addSchneiderLightSwitchConfigurationCluster(), indicatorMode(), switchActions()],
1952
+ extend: [
1953
+ schneiderElectricExtend.addSchneiderLightingBallastCfgCluster(),
1954
+ schneiderElectricExtend.addSchneiderLightSwitchConfigurationCluster(),
1955
+ indicatorMode(),
1956
+ switchActions(),
1957
+ ],
1446
1958
  configure: async (device, coordinatorEndpoint) => {
1447
1959
  const endpoint = device.getEndpoint(3);
1448
1960
  await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff", "genLevelCtrl", "lightingBallastCfg"]);
@@ -1455,8 +1967,8 @@ exports.definitions = [
1455
1967
  model: "MEG5126-0300/MEG5171-0000",
1456
1968
  vendor: "Schneider Electric",
1457
1969
  description: "Merten MEG5171 PlusLink Dimmer insert with Merten Wiser System M Push Button (2fold)",
1458
- fromZigbee: [fz.on_off, fz.brightness, fz.level_config, fz.wiser_lighting_ballast_configuration],
1459
- toZigbee: [tz.light_onoff_brightness, tz.level_config, tz.ballast_config, tz.wiser_dimmer_mode],
1970
+ fromZigbee: [fz.on_off, fz.brightness, fz.level_config, fzLocal.wiser_lighting_ballast_configuration],
1971
+ toZigbee: [tz.light_onoff_brightness, tz.level_config, tz.ballast_config, tzLocal.wiser_dimmer_mode],
1460
1972
  exposes: [
1461
1973
  e.light_brightness().withLevelConfig(),
1462
1974
  e
@@ -1474,6 +1986,7 @@ exports.definitions = [
1474
1986
  .withDescription("Sets dimming mode to autodetect or fixed RC/RL/RL_LED mode (max load is reduced in RL_LED)"),
1475
1987
  ],
1476
1988
  extend: [
1989
+ schneiderElectricExtend.addSchneiderLightingBallastCfgCluster(),
1477
1990
  schneiderElectricExtend.addSchneiderLightSwitchConfigurationCluster(),
1478
1991
  indicatorMode("right"),
1479
1992
  indicatorMode("left"),
@@ -1496,8 +2009,8 @@ exports.definitions = [
1496
2009
  model: "MEG5126-0300/MEG5172-0000",
1497
2010
  vendor: "Schneider Electric",
1498
2011
  description: "Merten MEG5172 PlusLink Dimmer insert with Merten Wiser System M Push Button (2fold)",
1499
- fromZigbee: [fz.wiser_lighting_ballast_configuration],
1500
- toZigbee: [tz.ballast_config, tz.wiser_dimmer_mode],
2012
+ fromZigbee: [fzLocal.wiser_lighting_ballast_configuration],
2013
+ toZigbee: [tz.ballast_config, tzLocal.wiser_dimmer_mode],
1501
2014
  exposes: [
1502
2015
  e
1503
2016
  .numeric("ballast_minimum_level", ea.ALL)
@@ -1514,9 +2027,10 @@ exports.definitions = [
1514
2027
  .withDescription("Sets dimming mode to autodetect or fixed RC/RL/RL_LED mode (max load is reduced in RL_LED)"),
1515
2028
  ],
1516
2029
  extend: [
2030
+ schneiderElectricExtend.addSchneiderLightingBallastCfgCluster(),
2031
+ schneiderElectricExtend.addSchneiderLightSwitchConfigurationCluster(),
1517
2032
  m.deviceEndpoints({ endpoints: { left: 4, right: 3, left_btn: 22, right_btn: 21 } }),
1518
2033
  m.light({ endpointNames: ["left", "right"], configureReporting: true }),
1519
- schneiderElectricExtend.addSchneiderLightSwitchConfigurationCluster(),
1520
2034
  switchActions("left_btn"),
1521
2035
  switchActions("right_btn"),
1522
2036
  indicatorMode("left_btn"),
@@ -1568,8 +2082,15 @@ exports.definitions = [
1568
2082
  model: "545D6102",
1569
2083
  vendor: "Schneider Electric",
1570
2084
  description: "LK FUGA wiser wireless dimmer",
1571
- fromZigbee: [fz.schneider_lighting_ballast_configuration, fz.command_recall, fz.command_on, fz.command_off, fz.command_move, fz.command_stop],
1572
- toZigbee: [tz.ballast_config, tz.schneider_dimmer_mode],
2085
+ fromZigbee: [
2086
+ fzLocal.schneider_lighting_ballast_configuration,
2087
+ fz.command_recall,
2088
+ fz.command_on,
2089
+ fz.command_off,
2090
+ fz.command_move,
2091
+ fz.command_stop,
2092
+ ],
2093
+ toZigbee: [tz.ballast_config, tzLocal.schneider_dimmer_mode],
1573
2094
  endpoint: (device) => {
1574
2095
  return { l1: 3, s1: 21, s2: 22, s3: 23, s4: 24 };
1575
2096
  },
@@ -1577,6 +2098,7 @@ exports.definitions = [
1577
2098
  extend: [
1578
2099
  m.light({ endpointNames: ["l1"], configureReporting: true, levelConfig: {} }),
1579
2100
  schneiderElectricExtend.addSchneiderLightSwitchConfigurationCluster(),
2101
+ schneiderElectricExtend.addSchneiderLightingBallastCfgCluster(),
1580
2102
  indicatorMode("s1"),
1581
2103
  indicatorMode("s2"),
1582
2104
  indicatorMode("s3"),
@@ -1681,13 +2203,12 @@ exports.definitions = [
1681
2203
  whiteLabel: [{ model: "CCTFR6710", fingerprint: [{ modelID: "CCTFR6710" }] }],
1682
2204
  fromZigbee: [fz.thermostat, fz.metering],
1683
2205
  toZigbee: [
1684
- tz.schneider_temperature_measured_value,
2206
+ tzLocal.cctfr6700_temperature_measured_value,
1685
2207
  tz.thermostat_system_mode,
1686
2208
  tz.thermostat_running_state,
1687
2209
  tz.thermostat_local_temperature,
1688
2210
  tz.thermostat_occupied_heating_setpoint,
1689
2211
  tz.thermostat_control_sequence_of_operation,
1690
- tz.schneider_temperature_measured_value,
1691
2212
  ],
1692
2213
  extend: [schneiderElectricExtend.addHeatingCoolingOutputClusterServer(), schneiderElectricExtend.pilotMode()],
1693
2214
  exposes: [
@@ -1716,13 +2237,14 @@ exports.definitions = [
1716
2237
  model: "CCTFR6400",
1717
2238
  vendor: "Schneider Electric",
1718
2239
  description: "Temperature/Humidity measurement with thermostat interface",
1719
- fromZigbee: [fz.battery, fz.schneider_temperature, fz.humidity, fz.thermostat, fz.schneider_ui_action],
2240
+ extend: [schneiderElectricExtend.customThermostatCluster()],
2241
+ fromZigbee: [fz.battery, fzLocal.schneider_temperature, fz.humidity, fz.thermostat, fzLocal.schneider_ui_action],
1720
2242
  toZigbee: [
1721
- tz.schneider_thermostat_system_mode,
1722
- tz.schneider_thermostat_occupied_heating_setpoint,
1723
- tz.schneider_thermostat_control_sequence_of_operation,
1724
- tz.schneider_thermostat_pi_heating_demand,
1725
- tz.schneider_thermostat_keypad_lockout,
2243
+ tzLocal.cctfr6400_thermostat_system_mode,
2244
+ tzLocal.cctfr6400_thermostat_occupied_heating_setpoint,
2245
+ tzLocal.cctfr6400_thermostat_control_sequence_of_operation,
2246
+ tzLocal.cctfr6400_thermostat_pi_heating_demand,
2247
+ tzLocal.schneider_thermostat_keypad_lockout,
1726
2248
  ],
1727
2249
  exposes: [
1728
2250
  e.keypad_lockout().withAccess(ea.STATE_SET),
@@ -1790,19 +2312,20 @@ exports.definitions = [
1790
2312
  model: "EER53000",
1791
2313
  vendor: "Schneider Electric",
1792
2314
  description: "Wiser radiator thermostat (VACT)",
2315
+ extend: [schneiderElectricExtend.customThermostatCluster()],
1793
2316
  fromZigbee: [
1794
2317
  fz.battery,
1795
2318
  fz.hvac_user_interface,
1796
- fz.wiser_smart_thermostat,
1797
- fz.wiser_smart_thermostat_client,
1798
- fz.wiser_smart_setpoint_command_client,
2319
+ fzLocal.wiser_smart_thermostat,
2320
+ fzLocal.wiser_smart_thermostat_client,
2321
+ fzLocal.wiser_smart_setpoint_command_client,
1799
2322
  ],
1800
2323
  toZigbee: [
1801
- tz.wiser_sed_thermostat_local_temperature_calibration,
1802
- tz.wiser_sed_occupied_heating_setpoint,
1803
- tz.wiser_sed_thermostat_keypad_lockout,
1804
- tz.wiser_vact_calibrate_valve,
1805
- tz.wiser_sed_zone_mode,
2324
+ tzLocal.wiser_sed_thermostat_local_temperature_calibration,
2325
+ tzLocal.wiser_sed_occupied_heating_setpoint,
2326
+ tzLocal.wiser_sed_thermostat_keypad_lockout,
2327
+ tzLocal.wiser_vact_calibrate_valve,
2328
+ tzLocal.wiser_sed_zone_mode,
1806
2329
  ],
1807
2330
  exposes: [
1808
2331
  e.battery(),
@@ -1847,14 +2370,15 @@ exports.definitions = [
1847
2370
  model: "EER51000",
1848
2371
  vendor: "Schneider Electric",
1849
2372
  description: "Wiser thermostat (RTS)",
2373
+ extend: [schneiderElectricExtend.customThermostatCluster()],
1850
2374
  fromZigbee: [
1851
2375
  fz.battery,
1852
2376
  fz.hvac_user_interface,
1853
- fz.wiser_smart_thermostat_client,
1854
- fz.wiser_smart_setpoint_command_client,
1855
- fz.schneider_temperature,
2377
+ fzLocal.wiser_smart_thermostat_client,
2378
+ fzLocal.wiser_smart_setpoint_command_client,
2379
+ fzLocal.schneider_temperature,
1856
2380
  ],
1857
- toZigbee: [tz.wiser_sed_zone_mode, tz.wiser_sed_occupied_heating_setpoint],
2381
+ toZigbee: [tzLocal.wiser_sed_zone_mode, tzLocal.wiser_sed_occupied_heating_setpoint],
1858
2382
  exposes: [
1859
2383
  e.battery(),
1860
2384
  e.climate().withSetpoint("occupied_heating_setpoint", 7, 30, 0.5, ea.STATE_SET).withLocalTemperature(ea.STATE),
@@ -1898,13 +2422,14 @@ exports.definitions = [
1898
2422
  model: "EER50000",
1899
2423
  vendor: "Schneider Electric",
1900
2424
  description: "Wiser H-Relay (HACT)",
1901
- fromZigbee: [fz.wiser_smart_thermostat, fz.metering, fz.identify],
2425
+ extend: [schneiderElectricExtend.customThermostatCluster()],
2426
+ fromZigbee: [fzLocal.wiser_smart_thermostat, fz.metering, fz.identify],
1902
2427
  toZigbee: [
1903
2428
  tz.thermostat_local_temperature,
1904
2429
  tz.thermostat_occupied_heating_setpoint,
1905
- tz.wiser_fip_setting,
1906
- tz.wiser_hact_config,
1907
- tz.wiser_zone_mode,
2430
+ tzLocal.wiser_fip_setting,
2431
+ tzLocal.wiser_hact_config,
2432
+ tzLocal.wiser_zone_mode,
1908
2433
  tz.identify,
1909
2434
  ],
1910
2435
  exposes: [
@@ -1949,7 +2474,7 @@ exports.definitions = [
1949
2474
  model: "EKO09738",
1950
2475
  vendor: "Schneider Electric",
1951
2476
  description: "Zigbee smart socket with power meter",
1952
- fromZigbee: [fz.on_off, fz.electrical_measurement, fz.EKO09738_metering, fz.power_on_behavior],
2477
+ fromZigbee: [fz.on_off, fz.electrical_measurement, fzLocal.EKO09738_metering, fz.power_on_behavior],
1953
2478
  toZigbee: [tz.on_off, tz.power_on_behavior],
1954
2479
  exposes: [
1955
2480
  e.switch(),
@@ -1974,7 +2499,7 @@ exports.definitions = [
1974
2499
  model: "EKO09716",
1975
2500
  vendor: "Schneider Electric",
1976
2501
  description: "Zigbee smart socket with power meter",
1977
- fromZigbee: [fz.on_off, fz.electrical_measurement, fz.EKO09738_metering, fz.power_on_behavior],
2502
+ fromZigbee: [fz.on_off, fz.electrical_measurement, fzLocal.EKO09738_metering, fz.power_on_behavior],
1978
2503
  toZigbee: [tz.on_off, tz.power_on_behavior],
1979
2504
  exposes: [
1980
2505
  e.switch(),
@@ -1999,7 +2524,7 @@ exports.definitions = [
1999
2524
  model: "545D6115",
2000
2525
  vendor: "Schneider Electric",
2001
2526
  description: "LK FUGA wiser wireless socket outlet",
2002
- fromZigbee: [fz.on_off, fz.electrical_measurement, fz.EKO09738_metering, fz.power_on_behavior],
2527
+ fromZigbee: [fz.on_off, fz.electrical_measurement, fzLocal.EKO09738_metering, fz.power_on_behavior],
2003
2528
  toZigbee: [tz.on_off, tz.power_on_behavior],
2004
2529
  extend: [schneiderElectricExtend.addSchneiderFanSwitchConfigurationCluster(), socketIndicatorMode()],
2005
2530
  exposes: [
@@ -2067,16 +2592,20 @@ exports.definitions = [
2067
2592
  model: "CCT595011",
2068
2593
  vendor: "Schneider Electric",
2069
2594
  description: "Wiser motion sensor",
2070
- fromZigbee: [fz.battery, fz.ias_enroll, fz.ias_occupancy_only_alarm_2],
2071
- toZigbee: [],
2072
- configure: async (device, coordinatorEndpoint) => {
2073
- const endpoint = device.getEndpoint(1);
2074
- const binds = ["genPowerCfg"];
2075
- await reporting.bind(endpoint, coordinatorEndpoint, binds);
2076
- await reporting.batteryPercentageRemaining(endpoint);
2077
- },
2078
- exposes: [e.battery(), e.occupancy()],
2079
- extend: [m.illuminance()],
2595
+ version: "0.0.1",
2596
+ extend: [
2597
+ m.battery(),
2598
+ m.iasZoneAlarm({ zoneType: "occupancy", zoneAttributes: ["alarm_2", "battery_low"] }),
2599
+ m.illuminance(),
2600
+ m.enumLookup({
2601
+ name: "sensitivity_level",
2602
+ description: "Sensitivity level for the occupancy sensor",
2603
+ attribute: "currentZoneSensitivityLevel",
2604
+ cluster: "ssIasZone",
2605
+ lookup: { low: 0x00, medium: 0x01, high: 0x02 },
2606
+ entityCategory: "config",
2607
+ }),
2608
+ ],
2080
2609
  },
2081
2610
  {
2082
2611
  zigbeeModel: ["CH/Socket/2"],
@@ -2176,7 +2705,7 @@ exports.definitions = [
2176
2705
  vendor: "Schneider Electric",
2177
2706
  description: "Smart thermostat",
2178
2707
  extend: [
2179
- schneiderElectricExtend.thermostatWithPower({
2708
+ m.thermostat({
2180
2709
  localTemperature: {
2181
2710
  values: {
2182
2711
  description: "The temperature measured by the selected sensor (see 'Local temperature source select', Ambient or External).",
@@ -2187,10 +2716,16 @@ exports.definitions = [
2187
2716
  maxHeatSetpointLimit: { min: 4, max: 40, step: 0.5 },
2188
2717
  minHeatSetpointLimit: { min: 4, max: 40, step: 0.5 },
2189
2718
  },
2719
+ runningState: {
2720
+ values: ["idle", "heat"],
2721
+ toZigbee: { skip: true },
2722
+ configure: { skip: true },
2723
+ },
2190
2724
  systemMode: { values: ["off", "heat"] },
2191
- piHeatingDemand: { values: true },
2725
+ piHeatingDemand: { values: true, dontMapPIHeatingDemand: true },
2192
2726
  ctrlSeqeOfOper: { values: ["cooling_only", "heating_only"] },
2193
2727
  }),
2728
+ schneiderElectricExtend.runningStateFromPower(),
2194
2729
  m.electricityMeter({
2195
2730
  cluster: "metering",
2196
2731
  voltage: false,
@@ -2211,52 +2746,19 @@ exports.definitions = [
2211
2746
  schneiderElectricExtend.thermostatApplication(),
2212
2747
  schneiderElectricExtend.heatingEmitter(),
2213
2748
  schneiderElectricExtend.addHeatingCoolingOutputClusterServer(),
2214
- m.enumLookup({
2215
- name: "heating_output_mode",
2216
- cluster: "heatingCoolingOutputClusterServer",
2217
- attribute: "heatingOutputMode",
2749
+ schneiderElectricExtend.heatingOutputMode({
2218
2750
  description: "On devices with alternate heating output types, this selects which should be used to control the heating unit. This attribute is (mistakenly) also called pilot_mode on some devices.",
2219
- entityCategory: "config",
2220
- access: "ALL",
2221
2751
  lookup: { Disabled: 0, Relay: 1 },
2222
2752
  }),
2223
2753
  schneiderElectricExtend.customTemperatureMeasurementCluster(),
2224
2754
  m.deviceEndpoints({
2225
2755
  endpoints: { floor: 3 },
2226
2756
  }),
2227
- m.numeric({
2228
- name: "temperature_sensor_correction",
2229
- cluster: "msTemperatureMeasurement",
2230
- attribute: "sensorCorrection",
2231
- description: "This is a user correction, possibly negative, to be added to the temperature measured by the sensor.",
2232
- unit: "°C",
2233
- scale: 100,
2234
- valueMin: -9,
2235
- valueMax: 9,
2236
- valueStep: 0.01,
2757
+ schneiderElectricExtend.sensorCorrection({
2237
2758
  endpointNames: ["floor"],
2238
- access: "ALL",
2239
- entityCategory: "config",
2240
- zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC },
2241
2759
  }),
2242
- m.enumLookup({
2243
- name: "temperature_sensor_type",
2244
- cluster: "msTemperatureMeasurement",
2245
- attribute: "temperatureSensorType",
2246
- description: "This is used to specify the type of temperature sensor connected to this input",
2247
- entityCategory: "config",
2248
- access: "ALL",
2760
+ schneiderElectricExtend.temperatureSensorType({
2249
2761
  endpointName: "floor",
2250
- lookup: {
2251
- "2kΩ sensor from HRT/Alre": 1,
2252
- "10kΩ sensor from B+J": 2,
2253
- "12kΩ sensor from OJ": 3,
2254
- "15kΩ sensor from DEVI": 4,
2255
- "33kΩ sensor from EBERLE": 5,
2256
- "47kΩ sensor from CTM": 6,
2257
- "No sensor": 0xff,
2258
- },
2259
- zigbeeCommandOptions: { manufacturerCode: zigbee_herdsman_1.Zcl.ManufacturerCode.SCHNEIDER_ELECTRIC },
2260
2762
  }),
2261
2763
  m.enumLookup({
2262
2764
  name: "temperature_display_mode",
@@ -2284,59 +2786,96 @@ exports.definitions = [
2284
2786
  model: "WDE002497",
2285
2787
  vendor: "Schneider Electric",
2286
2788
  description: "Smart thermostat",
2287
- fromZigbee: [fz.stelpro_thermostat, fz.metering, fzLocal.wiser_device_info, fz.hvac_user_interface, fz.temperature],
2288
- toZigbee: [
2289
- tz.thermostat_occupied_heating_setpoint,
2290
- tz.thermostat_system_mode,
2291
- tz.thermostat_running_state,
2292
- tz.thermostat_local_temperature,
2293
- tz.thermostat_control_sequence_of_operation,
2294
- tz.schneider_thermostat_keypad_lockout,
2295
- tz.thermostat_temperature_display_mode,
2296
- ],
2297
2789
  extend: [
2298
- schneiderElectricExtend.addWiserDeviceInfoCluster(),
2790
+ m.thermostat({
2791
+ localTemperature: {
2792
+ values: {
2793
+ description: "The temperature measured by the selected sensor (see 'Local temperature source select', Ambient or External).",
2794
+ },
2795
+ },
2796
+ setpoints: { values: { occupiedHeatingSetpoint: { min: 4, max: 40, step: 0.5 } } },
2797
+ setpointsLimit: {
2798
+ maxHeatSetpointLimit: { min: 4, max: 40, step: 0.5 },
2799
+ minHeatSetpointLimit: { min: 4, max: 40, step: 0.5 },
2800
+ },
2801
+ runningState: {
2802
+ values: ["idle", "heat"],
2803
+ toZigbee: { skip: true },
2804
+ configure: { skip: true },
2805
+ },
2806
+ systemMode: { values: ["off", "heat"] },
2807
+ piHeatingDemand: { values: true },
2808
+ ctrlSeqeOfOper: { values: ["cooling_only", "heating_only"] },
2809
+ }),
2810
+ schneiderElectricExtend.runningStateFromPower(),
2811
+ m.electricityMeter({
2812
+ cluster: "metering",
2813
+ voltage: false,
2814
+ current: false,
2815
+ configureReporting: true,
2816
+ energy: { divisor: 1000, multiplier: 1 },
2817
+ }),
2818
+ schneiderElectricExtend.customMeteringCluster(),
2819
+ schneiderElectricExtend.fixedLoadDemand(),
2820
+ schneiderElectricExtend.addHvacUserInterfaceCfgCustomAttributes(),
2821
+ schneiderElectricExtend.displayBrightnessActive(),
2822
+ schneiderElectricExtend.displayBrightnessInactive(),
2823
+ schneiderElectricExtend.displayActiveTimeout(),
2824
+ schneiderElectricExtend.customThermostatCluster(),
2825
+ schneiderElectricExtend.localTemperatureSourceSelect(),
2826
+ schneiderElectricExtend.controlType(),
2827
+ schneiderElectricExtend.controlStatus(),
2828
+ schneiderElectricExtend.thermostatApplication(),
2829
+ schneiderElectricExtend.heatingEmitter(),
2299
2830
  schneiderElectricExtend.addHeatingCoolingOutputClusterServer(),
2300
- schneiderElectricExtend.pilotMode(),
2301
- ],
2302
- exposes: [
2303
- e.binary("keypad_lockout", ea.STATE_SET, "lock1", "unlock").withDescription("Enables/disables physical input on the device"),
2304
- e
2305
- .enum("temperature_display_mode", ea.ALL, ["celsius", "fahrenheit"])
2306
- .withDescription("The temperature format displayed on the thermostat screen"),
2307
- e
2308
- .climate()
2309
- .withSetpoint("occupied_heating_setpoint", 4, 30, 0.5)
2310
- .withLocalTemperature()
2311
- .withSystemMode(["off", "heat"])
2312
- .withRunningState(["idle", "heat"])
2313
- .withPiHeatingDemand(),
2314
- e.temperature(),
2831
+ schneiderElectricExtend.heatingOutputMode({
2832
+ description: "On devices with alternate heating output types, this selects which should be used to control the heating unit. This attribute is (mistakenly) also called pilot_mode on some devices.",
2833
+ lookup: { Disabled: 0, Relay: 1 },
2834
+ }),
2835
+ schneiderElectricExtend.customTemperatureMeasurementCluster(),
2836
+ m.deviceEndpoints({
2837
+ endpoints: { floor: 3 },
2838
+ }),
2839
+ schneiderElectricExtend.sensorCorrection({
2840
+ endpointNames: ["floor"],
2841
+ }),
2842
+ schneiderElectricExtend.temperatureSensorType({
2843
+ endpointName: "floor",
2844
+ }),
2845
+ m.enumLookup({
2846
+ name: "temperature_display_mode",
2847
+ lookup: { celsius: 0 },
2848
+ cluster: "hvacUserInterfaceCfg",
2849
+ attribute: "tempDisplayMode",
2850
+ description: "The unit of the temperature displayed on the device screen. Celsius is the only supported unit.",
2851
+ entityCategory: "config",
2852
+ }),
2853
+ m.binary({
2854
+ name: "child_lock",
2855
+ valueOn: ["LOCK", 1],
2856
+ valueOff: ["UNLOCK", 0],
2857
+ cluster: "hvacUserInterfaceCfg",
2858
+ attribute: "keypadLockout",
2859
+ description: "Enables/disables physical input on the device",
2860
+ access: "ALL",
2861
+ reporting: { min: 0, max: 3600, change: 0 },
2862
+ }),
2863
+ schneiderElectricExtend.addWiserDeviceInfoCluster(),
2315
2864
  ],
2316
- configure: async (device, coordinatorEndpoint) => {
2317
- const endpoint1 = device.getEndpoint(1);
2318
- const endpoint2 = device.getEndpoint(2);
2319
- await reporting.bind(endpoint1, coordinatorEndpoint, ["hvacThermostat"]);
2320
- await reporting.thermostatPIHeatingDemand(endpoint1);
2321
- await reporting.thermostatOccupiedHeatingSetpoint(endpoint1);
2322
- await reporting.bind(endpoint2, coordinatorEndpoint, ["msTemperatureMeasurement"]);
2323
- await reporting.temperature(endpoint2);
2324
- await endpoint1.read("hvacUserInterfaceCfg", ["keypadLockout", "tempDisplayMode"]);
2325
- },
2326
2865
  },
2327
2866
  {
2328
2867
  zigbeeModel: ["WDE011680"],
2329
2868
  model: "WDE011680",
2330
2869
  vendor: "Schneider Electric",
2331
2870
  description: "Smart thermostat",
2332
- fromZigbee: [fz.stelpro_thermostat, fz.metering, fzLocal.wiser_device_info, fz.hvac_user_interface, fz.temperature],
2871
+ fromZigbee: [fzLocal.thermostat_running_state_from_piheat, fz.metering, fzLocal.wiser_device_info, fz.hvac_user_interface, fz.temperature],
2333
2872
  toZigbee: [
2334
2873
  tz.thermostat_occupied_heating_setpoint,
2335
2874
  tz.thermostat_system_mode,
2336
2875
  tz.thermostat_running_state,
2337
2876
  tz.thermostat_local_temperature,
2338
2877
  tz.thermostat_control_sequence_of_operation,
2339
- tz.schneider_thermostat_keypad_lockout,
2878
+ tzLocal.schneider_thermostat_keypad_lockout,
2340
2879
  tz.thermostat_temperature_display_mode,
2341
2880
  ],
2342
2881
  extend: [
@@ -2688,14 +3227,21 @@ exports.definitions = [
2688
3227
  model: "S520619",
2689
3228
  vendor: "Schneider Electric",
2690
3229
  description: "Wiser Odace Smart thermostat",
2691
- fromZigbee: [fz.stelpro_thermostat, fz.metering, fzLocal.wiser_device_info, fz.hvac_user_interface, fz.temperature, fz.occupancy],
3230
+ fromZigbee: [
3231
+ fzLocal.thermostat_running_state_from_piheat,
3232
+ fz.metering,
3233
+ fzLocal.wiser_device_info,
3234
+ fz.hvac_user_interface,
3235
+ fz.temperature,
3236
+ fz.occupancy,
3237
+ ],
2692
3238
  toZigbee: [
2693
3239
  tz.thermostat_occupied_heating_setpoint,
2694
3240
  tz.thermostat_occupied_cooling_setpoint,
2695
3241
  tz.thermostat_system_mode,
2696
3242
  tz.thermostat_local_temperature,
2697
3243
  tz.thermostat_control_sequence_of_operation,
2698
- tz.schneider_thermostat_keypad_lockout,
3244
+ tzLocal.schneider_thermostat_keypad_lockout,
2699
3245
  tz.thermostat_temperature_display_mode,
2700
3246
  tz.thermostat_running_state,
2701
3247
  ],
@@ -2789,12 +3335,22 @@ exports.definitions = [
2789
3335
  e.power_factor(),
2790
3336
  e.energy(),
2791
3337
  e.ac_frequency(),
2792
- e.numeric("voltage_phase_l1_l2", ea.STATE).withUnit("V").withDescription("Measured electrical potential value between phase L1 and L2"),
2793
- e.numeric("voltage_phase_l2_l3", ea.STATE).withUnit("V").withDescription("Measured electrical potential value between phase L2 and L3"),
2794
- e.numeric("voltage_phase_l1_l3", ea.STATE).withUnit("V").withDescription("Measured electrical potential value between phase L1 and L3"),
2795
- e.numeric("current_phase_l1", ea.STATE).withUnit("A").withDescription("Instantaneous measured electrical current on phase L1"),
2796
- e.numeric("current_phase_l2", ea.STATE).withUnit("A").withDescription("Instantaneous measured electrical current on phase L2"),
2797
- e.numeric("current_phase_l3", ea.STATE).withUnit("A").withDescription("Instantaneous measured electrical current on phase L3"),
3338
+ e.numeric("voltage_phase_ab", ea.STATE).withUnit("V").withDescription("Measured electrical potential value between phase L1 and L2"),
3339
+ e.numeric("voltage_phase_bc", ea.STATE).withUnit("V").withDescription("Measured electrical potential value between phase L2 and L3"),
3340
+ e.numeric("voltage_phase_ca", ea.STATE).withUnit("V").withDescription("Measured electrical potential value between phase L1 and L3"),
3341
+ e.numeric("current_phase_a", ea.STATE).withUnit("A").withDescription("Instantaneous measured electrical current on phase L1"),
3342
+ e.numeric("current_phase_b", ea.STATE).withUnit("A").withDescription("Instantaneous measured electrical current on phase L2"),
3343
+ e.numeric("current_phase_c", ea.STATE).withUnit("A").withDescription("Instantaneous measured electrical current on phase L3"),
3344
+ ],
3345
+ },
3346
+ {
3347
+ zigbeeModel: ["UFH"],
3348
+ model: "CCTFR6000",
3349
+ vendor: "Schneider Electric",
3350
+ description: "6 Channel Boiler Actuator",
3351
+ extend: [
3352
+ m.deviceEndpoints({ endpoints: { "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8 } }),
3353
+ m.onOff({ powerOnBehavior: false, endpointNames: ["1", "2", "3", "4", "5", "6", "7", "8"] }),
2798
3354
  ],
2799
3355
  },
2800
3356
  ];