@willieee802/zigbee-herdsman-converters 15.0.8-4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +7 -0
  3. package/converters/fromZigbee.js +8439 -0
  4. package/converters/toZigbee.js +7162 -0
  5. package/devices/ITCommander.js +37 -0
  6. package/devices/RMC002.js +20 -0
  7. package/devices/acova.js +101 -0
  8. package/devices/acuity_brands_lighting.js +11 -0
  9. package/devices/adeo.js +256 -0
  10. package/devices/adurosmart.js +130 -0
  11. package/devices/aeotec.js +13 -0
  12. package/devices/airam.js +59 -0
  13. package/devices/ajax_online.js +49 -0
  14. package/devices/akuvox.js +28 -0
  15. package/devices/alchemy.js +18 -0
  16. package/devices/aldi.js +53 -0
  17. package/devices/alecto.js +98 -0
  18. package/devices/anchor.js +17 -0
  19. package/devices/atlantic.js +110 -0
  20. package/devices/atsmart.js +28 -0
  21. package/devices/aubess.js +21 -0
  22. package/devices/aurora_lighting.js +292 -0
  23. package/devices/automaton.js +44 -0
  24. package/devices/awox.js +184 -0
  25. package/devices/axis.js +22 -0
  26. package/devices/bankamp.js +11 -0
  27. package/devices/bega.js +22 -0
  28. package/devices/belkin.js +11 -0
  29. package/devices/bitron.js +334 -0
  30. package/devices/blaupunkt.js +27 -0
  31. package/devices/blitzwolf.js +47 -0
  32. package/devices/bosch.js +702 -0
  33. package/devices/brimate.js +15 -0
  34. package/devices/bseed.js +17 -0
  35. package/devices/bticino.js +118 -0
  36. package/devices/busch-jaeger.js +140 -0
  37. package/devices/byun.js +24 -0
  38. package/devices/calex.js +37 -0
  39. package/devices/candeo.js +49 -0
  40. package/devices/casaia.js +52 -0
  41. package/devices/centralite.js +359 -0
  42. package/devices/cleode.js +20 -0
  43. package/devices/cleverio.js +36 -0
  44. package/devices/climax.js +138 -0
  45. package/devices/commercial_electric.js +16 -0
  46. package/devices/connecte.js +46 -0
  47. package/devices/cree.js +11 -0
  48. package/devices/ctm.js +999 -0
  49. package/devices/current_products_corp.js +24 -0
  50. package/devices/custom_devices_diy.js +850 -0
  51. package/devices/cy-lighting.js +11 -0
  52. package/devices/danalock.js +26 -0
  53. package/devices/danfoss.js +340 -0
  54. package/devices/databyte.ch.js +55 -0
  55. package/devices/datek.js +246 -0
  56. package/devices/dawon_dns.js +338 -0
  57. package/devices/develco.js +868 -0
  58. package/devices/digi.js +14 -0
  59. package/devices/diyruz.js +305 -0
  60. package/devices/dlink.js +37 -0
  61. package/devices/dnake.js +11 -0
  62. package/devices/dresden_elektronik.js +47 -0
  63. package/devices/easyaccess.js +27 -0
  64. package/devices/eatonhalo_led.js +11 -0
  65. package/devices/echostar.js +25 -0
  66. package/devices/ecodim.js +145 -0
  67. package/devices/ecolink.js +21 -0
  68. package/devices/ecosmart.js +64 -0
  69. package/devices/ecozy.js +31 -0
  70. package/devices/edp.js +39 -0
  71. package/devices/eglo.js +25 -0
  72. package/devices/elko.js +176 -0
  73. package/devices/enbrighten.js +163 -0
  74. package/devices/enocean.js +52 -0
  75. package/devices/envilar.js +73 -0
  76. package/devices/essentialb.js +87 -0
  77. package/devices/eurotronic.js +48 -0
  78. package/devices/evanell.js +29 -0
  79. package/devices/evn.js +31 -0
  80. package/devices/evology.js +24 -0
  81. package/devices/evvr.js +17 -0
  82. package/devices/ewelink.js +184 -0
  83. package/devices/ezex.js +24 -0
  84. package/devices/fantem.js +77 -0
  85. package/devices/feibit.js +172 -0
  86. package/devices/fireangel.js +15 -0
  87. package/devices/frankever.js +23 -0
  88. package/devices/garza.js +11 -0
  89. package/devices/ge.js +111 -0
  90. package/devices/gewiss.js +48 -0
  91. package/devices/gidealed.js +11 -0
  92. package/devices/giderwel.js +11 -0
  93. package/devices/giex.js +222 -0
  94. package/devices/girier.js +19 -0
  95. package/devices/gledopto.js +756 -0
  96. package/devices/gmy.js +11 -0
  97. package/devices/gs.js +29 -0
  98. package/devices/halemeier.js +18 -0
  99. package/devices/hampton_bay.js +37 -0
  100. package/devices/heiman.js +805 -0
  101. package/devices/hej.js +107 -0
  102. package/devices/hfh.js +11 -0
  103. package/devices/hgkg.js +54 -0
  104. package/devices/hilux.js +11 -0
  105. package/devices/hive.js +524 -0
  106. package/devices/home_control_as.js +27 -0
  107. package/devices/hommyn.js +24 -0
  108. package/devices/honyar.js +29 -0
  109. package/devices/hornbach.js +53 -0
  110. package/devices/hzc.js +21 -0
  111. package/devices/hzc_electric.js +42 -0
  112. package/devices/icasa.js +121 -0
  113. package/devices/idinio.js +19 -0
  114. package/devices/ihorn.js +61 -0
  115. package/devices/ikea.js +1168 -0
  116. package/devices/ilightsin.js +11 -0
  117. package/devices/iluminize.js +262 -0
  118. package/devices/ilux.js +11 -0
  119. package/devices/immax.js +203 -0
  120. package/devices/innr.js +705 -0
  121. package/devices/inovelli.js +1315 -0
  122. package/devices/insta.js +110 -0
  123. package/devices/iolloi.js +20 -0
  124. package/devices/iotperfect.js +20 -0
  125. package/devices/iris.js +180 -0
  126. package/devices/istar.js +20 -0
  127. package/devices/jasco.js +55 -0
  128. package/devices/javis.js +37 -0
  129. package/devices/jethome.js +48 -0
  130. package/devices/jiawen.js +18 -0
  131. package/devices/jumitech.js +18 -0
  132. package/devices/jxuan.js +49 -0
  133. package/devices/kami.js +15 -0
  134. package/devices/keen_home.js +80 -0
  135. package/devices/klikaanklikuit.js +17 -0
  136. package/devices/kmpcil.js +148 -0
  137. package/devices/konke.js +141 -0
  138. package/devices/ksentry.js +17 -0
  139. package/devices/kurvia.js +17 -0
  140. package/devices/kwikset.js +120 -0
  141. package/devices/lanesto.js +11 -0
  142. package/devices/lds.js +11 -0
  143. package/devices/led_trading.js +69 -0
  144. package/devices/ledvance.js +353 -0
  145. package/devices/leedarson.js +130 -0
  146. package/devices/legrand.js +554 -0
  147. package/devices/lellki.js +146 -0
  148. package/devices/letsled.js +11 -0
  149. package/devices/letv.js +18 -0
  150. package/devices/leviton.js +142 -0
  151. package/devices/lg.js +18 -0
  152. package/devices/lidl.js +1000 -0
  153. package/devices/lifecontrol.js +92 -0
  154. package/devices/lightsolutions.js +37 -0
  155. package/devices/linkind.js +205 -0
  156. package/devices/livingwise.js +59 -0
  157. package/devices/livolo.js +286 -0
  158. package/devices/lixee.js +779 -0
  159. package/devices/lonsonho.js +218 -0
  160. package/devices/lubeez.js +18 -0
  161. package/devices/lupus.js +74 -0
  162. package/devices/lutron.js +32 -0
  163. package/devices/lux.js +40 -0
  164. package/devices/m-elec.js +18 -0
  165. package/devices/makegood.js +51 -0
  166. package/devices/matcall_bv.js +18 -0
  167. package/devices/meazon.js +47 -0
  168. package/devices/mercator.js +225 -0
  169. package/devices/miboxer.js +72 -0
  170. package/devices/micromatic.js +29 -0
  171. package/devices/moes.js +400 -0
  172. package/devices/mycket.js +11 -0
  173. package/devices/m/303/274ller_licht.js +220 -0
  174. package/devices/namron.js +774 -0
  175. package/devices/nanoleaf.js +11 -0
  176. package/devices/neo.js +86 -0
  177. package/devices/net2grid.js +29 -0
  178. package/devices/netvox.js +35 -0
  179. package/devices/niko.js +314 -0
  180. package/devices/ninja_blocks.js +24 -0
  181. package/devices/niviss.js +11 -0
  182. package/devices/nodon.js +109 -0
  183. package/devices/nordtronic.js +30 -0
  184. package/devices/nous.js +88 -0
  185. package/devices/novo.js +17 -0
  186. package/devices/nue_3a.js +417 -0
  187. package/devices/nyce.js +67 -0
  188. package/devices/onesti.js +59 -0
  189. package/devices/openlumi.js +22 -0
  190. package/devices/orvibo.js +515 -0
  191. package/devices/osram.js +519 -0
  192. package/devices/oujiabao.js +15 -0
  193. package/devices/owon.js +352 -0
  194. package/devices/ozsmartthings.js +11 -0
  195. package/devices/paul_neuhaus.js +96 -0
  196. package/devices/paulmann.js +158 -0
  197. package/devices/peq.js +24 -0
  198. package/devices/perenio.js +413 -0
  199. package/devices/philips.js +3118 -0
  200. package/devices/plaid.js +25 -0
  201. package/devices/plugwise.js +173 -0
  202. package/devices/popp.js +10 -0
  203. package/devices/profalux.js +47 -0
  204. package/devices/prolight.js +54 -0
  205. package/devices/qmotion.js +33 -0
  206. package/devices/qoto.js +113 -0
  207. package/devices/quotra.js +18 -0
  208. package/devices/rademacher.js +18 -0
  209. package/devices/rgb_genie.js +119 -0
  210. package/devices/robb.js +335 -0
  211. package/devices/roome.js +15 -0
  212. package/devices/rtx.js +90 -0
  213. package/devices/salus_controls.js +137 -0
  214. package/devices/samotech.js +93 -0
  215. package/devices/saswell.js +58 -0
  216. package/devices/scanproducts.js +32 -0
  217. package/devices/schlage.js +24 -0
  218. package/devices/schneider_electric.js +1039 -0
  219. package/devices/schwaiger.js +62 -0
  220. package/devices/seastar_intelligence.js +16 -0
  221. package/devices/securifi.js +39 -0
  222. package/devices/sengled.js +332 -0
  223. package/devices/sercomm.js +140 -0
  224. package/devices/shenzhen_homa.js +53 -0
  225. package/devices/shinasystem.js +686 -0
  226. package/devices/siglis.js +440 -0
  227. package/devices/sinope.js +1257 -0
  228. package/devices/siterwell.js +46 -0
  229. package/devices/skydance.js +112 -0
  230. package/devices/slv.js +27 -0
  231. package/devices/smart9.js +27 -0
  232. package/devices/smart_home_pty.js +18 -0
  233. package/devices/smartenit.js +42 -0
  234. package/devices/smartthings.js +495 -0
  235. package/devices/smartwings.js +24 -0
  236. package/devices/sohan_electric.js +13 -0
  237. package/devices/solaredge.js +11 -0
  238. package/devices/somgoms.js +47 -0
  239. package/devices/sonoff.js +262 -0
  240. package/devices/spotmau.js +36 -0
  241. package/devices/sprut.js +317 -0
  242. package/devices/stelpro.js +216 -0
  243. package/devices/sunricher.js +625 -0
  244. package/devices/swann.js +33 -0
  245. package/devices/sylvania.js +200 -0
  246. package/devices/tci.js +25 -0
  247. package/devices/technicolor.js +47 -0
  248. package/devices/terncy.js +64 -0
  249. package/devices/the_light_group.js +70 -0
  250. package/devices/third_reality.js +195 -0
  251. package/devices/titan_products.js +22 -0
  252. package/devices/tplink.js +42 -0
  253. package/devices/trust.js +114 -0
  254. package/devices/tubeszb.js +20 -0
  255. package/devices/tuya.js +4215 -0
  256. package/devices/ubisys.js +938 -0
  257. package/devices/uhome.js +25 -0
  258. package/devices/universal_electronics_inc.js +119 -0
  259. package/devices/urlighting.js +12 -0
  260. package/devices/useelink.js +52 -0
  261. package/devices/vbled.js +18 -0
  262. package/devices/vesternet.js +188 -0
  263. package/devices/viessmann.js +51 -0
  264. package/devices/villeroy_boch.js +18 -0
  265. package/devices/vimar.js +78 -0
  266. package/devices/visonic.js +80 -0
  267. package/devices/vrey.js +18 -0
  268. package/devices/wally.js +25 -0
  269. package/devices/waxman.js +45 -0
  270. package/devices/weiser.js +67 -0
  271. package/devices/weten.js +13 -0
  272. package/devices/wisdom.js +11 -0
  273. package/devices/woox.js +177 -0
  274. package/devices/wyze.js +23 -0
  275. package/devices/xiaomi.js +3223 -0
  276. package/devices/xinghuoyuan.js +11 -0
  277. package/devices/yale.js +227 -0
  278. package/devices/ynoa.js +68 -0
  279. package/devices/yookee.js +23 -0
  280. package/devices/ysrsai.js +26 -0
  281. package/devices/zemismart.js +254 -0
  282. package/devices/zen.js +34 -0
  283. package/devices/zipato.js +11 -0
  284. package/index.js +242 -0
  285. package/lib/color.js +784 -0
  286. package/lib/configureKey.js +944 -0
  287. package/lib/constants.js +316 -0
  288. package/lib/exposes.js +677 -0
  289. package/lib/extend.js +180 -0
  290. package/lib/kelvinToXy.js +1912 -0
  291. package/lib/legacy.js +2223 -0
  292. package/lib/light.js +111 -0
  293. package/lib/ota/OTA_URLs.md +119 -0
  294. package/lib/ota/common.js +476 -0
  295. package/lib/ota/index.js +10 -0
  296. package/lib/ota/inovelli.js +72 -0
  297. package/lib/ota/ledvance.js +52 -0
  298. package/lib/ota/lixee.js +57 -0
  299. package/lib/ota/salus.js +82 -0
  300. package/lib/ota/securifi.js +25 -0
  301. package/lib/ota/tradfri.js +45 -0
  302. package/lib/ota/ubisys.js +61 -0
  303. package/lib/ota/zigbeeOTA.js +161 -0
  304. package/lib/philips.js +667 -0
  305. package/lib/reporting.js +234 -0
  306. package/lib/store.js +57 -0
  307. package/lib/tuya.js +2027 -0
  308. package/lib/utils.js +527 -0
  309. package/lib/xiaomi.d.ts +11 -0
  310. package/lib/xiaomi.js +1288 -0
  311. package/lib/zosung.js +243 -0
  312. package/package.json +39 -0
@@ -0,0 +1,200 @@
1
+ const exposes = require('../lib/exposes');
2
+ const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
3
+ const ota = require('../lib/ota');
4
+ const reporting = require('../lib/reporting');
5
+ const extend = require('../lib/extend');
6
+ const e = exposes.presets;
7
+
8
+ module.exports = [
9
+ {
10
+ zigbeeModel: ['Contact Sensor-A'],
11
+ model: '74388',
12
+ vendor: 'Sylvania',
13
+ description: 'Smart+ contact and temperature sensor',
14
+ fromZigbee: [fz.ias_contact_alarm_1, fz.temperature, fz.battery],
15
+ toZigbee: [],
16
+ meta: {battery: {voltageToPercentage: '3V_2100'}},
17
+ configure: async (device, coordinatorEndpoint, logger) => {
18
+ const endpoint = device.getEndpoint(1);
19
+ await reporting.bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
20
+ await reporting.batteryVoltage(endpoint);
21
+ await reporting.temperature(endpoint);
22
+ },
23
+ exposes: [e.contact(), e.battery(), e.battery_low(), e.tamper(), e.temperature()],
24
+ },
25
+ {
26
+ zigbeeModel: ['LIGHTIFY Dimming Switch'],
27
+ model: '73743',
28
+ vendor: 'Sylvania',
29
+ description: 'Lightify Smart Dimming Switch',
30
+ fromZigbee: [fz.legacy.osram_lightify_switch_cmdOn, fz.legacy.osram_lightify_switch_cmdMoveWithOnOff,
31
+ fz.legacy.osram_lightify_switch_cmdOff, fz.legacy.osram_lightify_switch_cmdMove,
32
+ fz.legacy.osram_lightify_switch_73743_cmdStop, fz.battery],
33
+ exposes: [e.battery(), e.action(['up', 'up_hold', 'down', 'down_hold', 'up_release', 'down_release'])],
34
+ toZigbee: [],
35
+ meta: {battery: {voltageToPercentage: '3V_2500'}},
36
+ ota: ota.ledvance,
37
+ configure: async (device, coordinatorEndpoint, logger) => {
38
+ const endpoint = device.getEndpoint(1);
39
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl', 'genPowerCfg']);
40
+ await reporting.batteryVoltage(endpoint);
41
+ },
42
+ },
43
+ {
44
+ zigbeeModel: ['LIGHTIFY RT Tunable White', 'RT TW'],
45
+ model: '73742',
46
+ vendor: 'Sylvania',
47
+ description: 'LIGHTIFY LED adjustable white RT 5/6',
48
+ extend: extend.ledvance.light_onoff_brightness_colortemp(),
49
+ ota: ota.ledvance,
50
+ },
51
+ {
52
+ zigbeeModel: ['RT RGBW'],
53
+ model: '73741',
54
+ vendor: 'Sylvania',
55
+ description: 'LIGHTIFY LED adjustable color RT 5/6',
56
+ extend: extend.ledvance.light_onoff_brightness_colortemp_color(),
57
+ ota: ota.ledvance,
58
+ },
59
+ {
60
+ zigbeeModel: ['LIGHTIFY BR Tunable White', 'BR30 TW'],
61
+ model: '73740',
62
+ vendor: 'Sylvania',
63
+ description: 'LIGHTIFY LED adjustable white BR30',
64
+ extend: extend.ledvance.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
65
+ ota: ota.ledvance,
66
+ },
67
+ {
68
+ zigbeeModel: ['LIGHTIFY BR RGBW', 'BR30 RGBW'],
69
+ model: '73739',
70
+ vendor: 'Sylvania',
71
+ description: 'LIGHTIFY LED RGBW BR30',
72
+ extend: extend.ledvance.light_onoff_brightness_colortemp_color(),
73
+ ota: ota.ledvance,
74
+ },
75
+ {
76
+ zigbeeModel: ['LIGHTIFY A19 RGBW', 'A19 RGBW'],
77
+ model: '73693',
78
+ vendor: 'Sylvania',
79
+ description: 'LIGHTIFY LED RGBW A19',
80
+ extend: extend.ledvance.light_onoff_brightness_colortemp_color(),
81
+ ota: ota.ledvance,
82
+ },
83
+ {
84
+ zigbeeModel: ['Flex XL RGBW', 'Flex RGBW Pro'],
85
+ model: '73773',
86
+ vendor: 'Sylvania',
87
+ description: 'SMART+ Flex XL RGBW strip',
88
+ extend: extend.ledvance.light_onoff_brightness_colortemp_color(),
89
+ ota: ota.ledvance,
90
+ },
91
+ {
92
+ zigbeeModel: ['LIGHTIFY A19 ON/OFF/DIM', 'LIGHTIFY A19 ON/OFF/DIM 10 Year'],
93
+ model: '74283',
94
+ vendor: 'Sylvania',
95
+ description: 'LIGHTIFY LED soft white dimmable A19',
96
+ extend: extend.ledvance.light_onoff_brightness(),
97
+ ota: ota.ledvance,
98
+ },
99
+ {
100
+ zigbeeModel: ['LIGHTIFY BR ON/OFF/DIM'],
101
+ model: '73807',
102
+ vendor: 'Sylvania',
103
+ description: 'LIGHTIFY LED soft white dimmable BR30',
104
+ extend: extend.ledvance.light_onoff_brightness(),
105
+ ota: ota.ledvance,
106
+ },
107
+ {
108
+ zigbeeModel: ['A19 W 10 year'],
109
+ model: '74696',
110
+ vendor: 'Sylvania',
111
+ description: 'LIGHTIFY LED soft white dimmable A19',
112
+ extend: extend.ledvance.light_onoff_brightness(),
113
+ ota: ota.ledvance,
114
+ },
115
+ {
116
+ zigbeeModel: ['PLUG'],
117
+ model: '72922-A',
118
+ vendor: 'Sylvania',
119
+ description: 'SMART+ Smart Plug',
120
+ extend: extend.switch(),
121
+ configure: async (device, coordinatorEndpoint, logger) => {
122
+ const endpoint = device.getEndpoint(1);
123
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
124
+ await reporting.onOff(endpoint);
125
+ },
126
+ ota: ota.ledvance,
127
+ },
128
+ {
129
+ zigbeeModel: ['A19 TW 10 year'],
130
+ model: '71831',
131
+ vendor: 'Sylvania',
132
+ description: 'Smart Home adjustable white A19 LED bulb',
133
+ extend: extend.ledvance.light_onoff_brightness_colortemp(),
134
+ ota: ota.ledvance,
135
+ },
136
+ {
137
+ zigbeeModel: ['MR16 TW'],
138
+ model: '74282',
139
+ vendor: 'Sylvania',
140
+ description: 'Smart Home adjustable white MR16 LED bulb',
141
+ extend: extend.ledvance.light_onoff_brightness_colortemp(),
142
+ ota: ota.ledvance,
143
+ },
144
+ {
145
+ zigbeeModel: ['LIGHTIFY Gardenspot RGB'],
146
+ model: 'LTFY004',
147
+ vendor: 'Sylvania',
148
+ description: 'LIGHTIFY LED gardenspot mini RGB',
149
+ extend: extend.ledvance.light_onoff_brightness_color(),
150
+ ota: ota.ledvance,
151
+ },
152
+ {
153
+ zigbeeModel: ['PAR38 W 10 year'],
154
+ model: '74580',
155
+ vendor: 'Sylvania',
156
+ description: 'Smart Home soft white PAR38 outdoor bulb',
157
+ extend: extend.ledvance.light_onoff_brightness(),
158
+ ota: ota.ledvance,
159
+ },
160
+ {
161
+ zigbeeModel: ['Edge-lit Under Cabinet TW'],
162
+ model: '72569',
163
+ vendor: 'Sylvania',
164
+ description: 'SMART+ Zigbee adjustable white edge-lit under cabinet light',
165
+ extend: extend.ledvance.light_onoff_brightness_colortemp(),
166
+ ota: ota.ledvance,
167
+ },
168
+ {
169
+ zigbeeModel: ['Flushmount TW'],
170
+ model: '72567',
171
+ vendor: 'Sylvania',
172
+ description: 'SMART+ Zigbee adjustable white edge-lit flush mount light',
173
+ extend: extend.ledvance.light_onoff_brightness_colortemp(),
174
+ ota: ota.ledvance,
175
+ },
176
+ {
177
+ zigbeeModel: ['Outdoor Accent RGB', 'Outdoor Accent Light RGB'],
178
+ model: '75541',
179
+ vendor: 'Sylvania',
180
+ description: 'SMART+ Outdoor Accent RGB lighting kit',
181
+ extend: extend.ledvance.light_onoff_brightness_colortemp_color(),
182
+ ota: ota.ledvance,
183
+ },
184
+ {
185
+ zigbeeModel: ['iQBR30'],
186
+ model: '484719',
187
+ vendor: 'Sylvania',
188
+ description: 'Dimmable soft white BR30 LED flood light bulb',
189
+ extend: extend.ledvance.light_onoff_brightness(),
190
+ ota: ota.ledvance,
191
+ },
192
+ {
193
+ zigbeeModel: ['A19 G2 RGBW'],
194
+ model: '75564',
195
+ vendor: 'Sylvania',
196
+ description: 'Smart+ adjustable white and full color bulb A19',
197
+ extend: extend.ledvance.light_onoff_brightness_colortemp_color({colorTempRange: [142, 555]}),
198
+ ota: ota.ledvance,
199
+ },
200
+ ];
package/devices/tci.js ADDED
@@ -0,0 +1,25 @@
1
+ const extend = require('../lib/extend');
2
+
3
+ module.exports = [
4
+ {
5
+ zigbeeModel: ['VOLARE ZB3\u0000\u0000\u0000\u0000\u0000\u0000\u0000'],
6
+ model: '676-00301024955Z',
7
+ vendor: 'TCI',
8
+ description: 'Dash L DC Volare',
9
+ extend: extend.light_onoff_brightness(),
10
+ },
11
+ {
12
+ zigbeeModel: ['MAXI JOLLY ZB3'],
13
+ model: '151570',
14
+ vendor: 'TCI',
15
+ description: 'LED driver for wireless control (60 watt)',
16
+ extend: extend.light_onoff_brightness(),
17
+ },
18
+ {
19
+ zigbeeModel: ['PROFESSIONALE ZB3'],
20
+ model: '122576',
21
+ vendor: 'TCI',
22
+ description: 'Direct current wireless dimmable electronic drivers with DIP-SWITCH',
23
+ extend: extend.light_onoff_brightness(),
24
+ },
25
+ ];
@@ -0,0 +1,47 @@
1
+ const exposes = require('../lib/exposes');
2
+ const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
3
+ const tz = require('../converters/toZigbee');
4
+ const globalStore = require('../lib/store');
5
+ const reporting = require('../lib/reporting');
6
+ const e = exposes.presets;
7
+ const ea = exposes.access;
8
+
9
+ module.exports = [
10
+ {
11
+ zigbeeModel: ['TKA105'],
12
+ model: 'XHK1-TC',
13
+ vendor: 'Technicolor',
14
+ description: 'Xfinity security keypad',
15
+ meta: {battery: {voltageToPercentage: '3V_2100'}},
16
+ fromZigbee: [fz.command_arm_with_transaction, fz.temperature, fz.battery, fz.ias_occupancy_alarm_1, fz.identify,
17
+ fz.ias_contact_alarm_1, fz.ias_ace_occupancy_with_timeout],
18
+ toZigbee: [tz.arm_mode],
19
+ exposes: [e.battery(), e.battery_voltage(), e.occupancy(), e.battery_low(), e.tamper(), e.presence(),
20
+ e.contact(), e.temperature(),
21
+ exposes.numeric('action_code', ea.STATE).withDescription('Pin code introduced.'),
22
+ exposes.numeric('action_transaction', ea.STATE).withDescription('Last action transaction number.'),
23
+ exposes.text('action_zone', ea.STATE).withDescription('Alarm zone. Default value 0'),
24
+ e.action([
25
+ 'disarm', 'arm_day_zones', 'identify', 'arm_night_zones', 'arm_all_zones', 'exit_delay', 'emergency',
26
+ ])],
27
+ configure: async (device, coordinatorEndpoint) => {
28
+ const endpoint = device.getEndpoint(1);
29
+ const clusters = ['msTemperatureMeasurement', 'genPowerCfg', 'ssIasZone', 'ssIasAce', 'genBasic', 'genIdentify'];
30
+ await reporting.bind(endpoint, coordinatorEndpoint, clusters);
31
+ await reporting.temperature(endpoint);
32
+ await reporting.batteryVoltage(endpoint);
33
+ },
34
+ onEvent: async (type, data, device) => {
35
+ if (type === 'message' && data.type === 'commandGetPanelStatus' && data.cluster === 'ssIasAce' &&
36
+ globalStore.hasValue(device.getEndpoint(1), 'panelStatus')) {
37
+ const payload = {
38
+ panelstatus: globalStore.getValue(device.getEndpoint(1), 'panelStatus'),
39
+ secondsremain: 0x00, audiblenotif: 0x00, alarmstatus: 0x00,
40
+ };
41
+ await device.getEndpoint(1).commandResponse(
42
+ 'ssIasAce', 'getPanelStatusRsp', payload, {}, data.meta.zclTransactionSequenceNumber,
43
+ );
44
+ }
45
+ },
46
+ },
47
+ ];
@@ -0,0 +1,64 @@
1
+ const exposes = require('../lib/exposes');
2
+ const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
3
+ const tz = require('../converters/toZigbee');
4
+ const ota = require('../lib/ota');
5
+ const reporting = require('../lib/reporting');
6
+ const extend = require('../lib/extend');
7
+ const e = exposes.presets;
8
+ const ea = exposes.access;
9
+
10
+ module.exports = [
11
+ {
12
+ zigbeeModel: ['DL001'],
13
+ model: 'DL001',
14
+ vendor: 'TERNCY',
15
+ description: 'Two color temperature intelligent downlight',
16
+ extend: extend.light_onoff_brightness_colortemp({colorTempRange: [156, 476]}),
17
+ },
18
+ {
19
+ zigbeeModel: ['TERNCY-DC01'],
20
+ model: 'TERNCY-DC01',
21
+ vendor: 'TERNCY',
22
+ description: 'Temperature & contact sensor ',
23
+ fromZigbee: [fz.terncy_temperature, fz.terncy_contact, fz.battery],
24
+ toZigbee: [],
25
+ exposes: [e.temperature(), e.contact(), e.battery()],
26
+ meta: {battery: {dontDividePercentage: true}},
27
+ },
28
+ {
29
+ zigbeeModel: ['TERNCY-PP01'],
30
+ model: 'TERNCY-PP01',
31
+ vendor: 'TERNCY',
32
+ description: 'Awareness switch',
33
+ fromZigbee: [fz.terncy_temperature, fz.occupancy_with_timeout, fz.illuminance, fz.terncy_raw, fz.legacy.terncy_raw, fz.battery],
34
+ exposes: [e.temperature(), e.occupancy(), e.illuminance_lux(), e.illuminance(),
35
+ e.action(['single', 'double', 'triple', 'quadruple'])],
36
+ toZigbee: [],
37
+ meta: {battery: {dontDividePercentage: true}},
38
+ },
39
+ {
40
+ zigbeeModel: ['TERNCY-SD01'],
41
+ model: 'TERNCY-SD01',
42
+ vendor: 'TERNCY',
43
+ description: 'Knob smart dimmer',
44
+ fromZigbee: [fz.terncy_raw, fz.legacy.terncy_raw, fz.legacy.terncy_knob, fz.battery],
45
+ toZigbee: [],
46
+ ota: ota.zigbeeOTA,
47
+ meta: {battery: {dontDividePercentage: true}},
48
+ exposes: [e.battery(), e.action(['single', 'double', 'triple', 'quadruple', 'rotate']),
49
+ exposes.text('direction', ea.STATE)],
50
+ },
51
+ {
52
+ zigbeeModel: ['TERNCY-LS01'],
53
+ model: 'TERNCY-LS01',
54
+ vendor: 'TERNCY',
55
+ description: 'Smart light socket',
56
+ exposes: [e.switch(), e.action(['single'])],
57
+ fromZigbee: [fz.on_off, fz.terncy_raw, fz.ignore_basic_report],
58
+ toZigbee: [tz.on_off],
59
+ configure: async (device, coordinatorEndpoint, logger) => {
60
+ const endpoint = device.getEndpoint(1);
61
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
62
+ },
63
+ },
64
+ ];
@@ -0,0 +1,70 @@
1
+ const exposes = require('../lib/exposes');
2
+ const fz = require('../converters/fromZigbee');
3
+ const tz = require('../converters/toZigbee');
4
+ const reporting = require('../lib/reporting');
5
+ const extend = require('../lib/extend');
6
+ const e = exposes.presets;
7
+
8
+ module.exports = [
9
+ {
10
+ zigbeeModel: ['S24019'],
11
+ model: 'S24019',
12
+ vendor: 'The Light Group',
13
+ description: 'SLC SmartOne led dimmer',
14
+ fromZigbee: [fz.on_off, fz.brightness, fz.metering, fz.electrical_measurement],
15
+ toZigbee: [tz.light_onoff_brightness, tz.level_config],
16
+ exposes: [e.light_brightness().withLevelConfig()],
17
+ configure: async (device, coordinatorEndpoint, logger) => {
18
+ // Endpoint 1
19
+ const endpoint1 = device.getEndpoint(1);
20
+ const binds1 = ['genOnOff', 'genLevelCtrl', 'haElectricalMeasurement', 'seMetering'];
21
+ await reporting.bind(endpoint1, coordinatorEndpoint, binds1);
22
+ await reporting.onOff(endpoint1);
23
+ await reporting.brightness(endpoint1);
24
+ await reporting.readEletricalMeasurementMultiplierDivisors(endpoint1);
25
+ await reporting.activePower(endpoint1, {min: 5, max: 3600, change: 1000});
26
+ await reporting.rmsCurrent(endpoint1, {min: 5, max: 3600, change: 100});
27
+ await reporting.rmsVoltage(endpoint1, {min: 5, max: 3600, change: 100});
28
+ // read switch state
29
+ await endpoint1.read('genOnOff', ['onOff']);
30
+ },
31
+ },
32
+ {
33
+ zigbeeModel: ['S57003'],
34
+ model: 'S57003',
35
+ vendor: 'The Light Group',
36
+ description: 'SLC SmartOne Zigbee wall remote 4-channels',
37
+ fromZigbee: [fz.command_on, fz.command_off, fz.battery, fz.command_move, fz.command_stop],
38
+ exposes: [e.battery(), e.action([
39
+ 'on_l1', 'off_l1', 'brightness_move_up_l1', 'brightness_move_down_l1', 'brightness_stop_l1',
40
+ 'on_l2', 'off_l2', 'brightness_move_up_l2', 'brightness_move_down_l2', 'brightness_stop_l2',
41
+ 'on_l3', 'off_l3', 'brightness_move_up_l3', 'brightness_move_down_l3', 'brightness_stop_l3',
42
+ 'on_l4', 'off_l4', 'brightness_move_up_l4', 'brightness_move_down_l4', 'brightness_stop_l4',
43
+ ])],
44
+ toZigbee: [],
45
+ meta: {multiEndpoint: true},
46
+ endpoint: (device) => {
47
+ return {l1: 1, l2: 2, l3: 3, l4: 4};
48
+ },
49
+ },
50
+ {
51
+ zigbeeModel: ['S24013'],
52
+ model: 'S24013',
53
+ vendor: 'The Light Group',
54
+ description: 'SLC SmartOne AC dimmer mini 200W Zigbee LN',
55
+ extend: extend.light_onoff_brightness({noConfigure: true}),
56
+ configure: async (device, coordinatorEndpoint, logger) => {
57
+ await extend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
58
+ const endpoint = device.getEndpoint(1);
59
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
60
+ await reporting.onOff(endpoint);
61
+ },
62
+ },
63
+ {
64
+ zigbeeModel: ['S32053'],
65
+ model: 'S32053',
66
+ vendor: 'The Light Group',
67
+ description: 'SLC SmartOne CV led dimmable driver',
68
+ extend: extend.light_onoff_brightness(),
69
+ },
70
+ ];
@@ -0,0 +1,195 @@
1
+ const exposes = require('../lib/exposes');
2
+ const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
3
+ const tz = require('../converters/toZigbee');
4
+ const reporting = require('../lib/reporting');
5
+ const extend = require('../lib/extend');
6
+ const ota = require('../lib/ota');
7
+ const e = exposes.presets;
8
+
9
+ module.exports = [
10
+ {
11
+ zigbeeModel: ['3RSS009Z'],
12
+ model: '3RSS009Z',
13
+ vendor: 'Third Reality',
14
+ description: 'Smart switch Gen3',
15
+ ota: ota.zigbeeOTA,
16
+ fromZigbee: [fz.on_off, fz.battery],
17
+ toZigbee: [tz.on_off, tz.ignore_transition],
18
+ exposes: [e.switch(), e.battery(), e.battery_voltage()],
19
+ configure: async (device, coordinatorEndpoint, logger) => {
20
+ const endpoint = device.getEndpoint(1);
21
+ await endpoint.read('genPowerCfg', ['batteryPercentageRemaining']);
22
+ device.powerSource = 'Battery';
23
+ device.save();
24
+ },
25
+ },
26
+ {
27
+ zigbeeModel: ['3RSS008Z'],
28
+ model: '3RSS008Z',
29
+ vendor: 'Third Reality',
30
+ description: 'RealitySwitch Plus',
31
+ fromZigbee: [fz.on_off, fz.battery],
32
+ toZigbee: [tz.on_off, tz.ignore_transition],
33
+ meta: {battery: {voltageToPercentage: '3V_2100'}},
34
+ exposes: [e.switch(), e.battery(), e.battery_voltage()],
35
+ },
36
+ {
37
+ zigbeeModel: ['3RSS007Z'],
38
+ model: '3RSS007Z',
39
+ vendor: 'Third Reality',
40
+ description: 'Smart light switch',
41
+ extend: extend.switch(),
42
+ meta: {disableDefaultResponse: true},
43
+ configure: async (device, coordinatorEndpoint, logger) => {
44
+ const endpoint = device.getEndpoint(1);
45
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
46
+ await reporting.onOff(endpoint);
47
+ },
48
+ },
49
+ {
50
+ zigbeeModel: ['3RSL011Z'],
51
+ model: '3RSL011Z',
52
+ vendor: 'Third Reality',
53
+ description: 'Smart light A19',
54
+ extend: extend.light_onoff_brightness_colortemp(),
55
+ },
56
+ {
57
+ zigbeeModel: ['3RSL012Z'],
58
+ model: '3RSL012Z',
59
+ vendor: 'Third Reality',
60
+ description: 'Smart light BR30',
61
+ extend: extend.light_onoff_brightness_colortemp(),
62
+ },
63
+ {
64
+ zigbeeModel: ['3RWS18BZ'],
65
+ model: '3RWS18BZ',
66
+ vendor: 'Third Reality',
67
+ description: 'Water sensor',
68
+ fromZigbee: [fz.ias_water_leak_alarm_1, fz.battery],
69
+ toZigbee: [],
70
+ ota: ota.zigbeeOTA,
71
+ exposes: [e.water_leak(), e.battery_low(), e.battery(), e.battery_voltage()],
72
+ configure: async (device, coordinatorEndpoint, logger) => {
73
+ const endpoint = device.getEndpoint(1);
74
+ await endpoint.read('genPowerCfg', ['batteryPercentageRemaining']);
75
+ device.powerSource = 'Battery';
76
+ device.save();
77
+ },
78
+ },
79
+ {
80
+ zigbeeModel: ['3RMS16BZ'],
81
+ model: '3RMS16BZ',
82
+ vendor: 'Third Reality',
83
+ description: 'Wireless motion sensor',
84
+ fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery],
85
+ toZigbee: [],
86
+ ota: ota.zigbeeOTA,
87
+ exposes: [e.occupancy(), e.battery_low(), e.battery(), e.battery_voltage()],
88
+ configure: async (device, coordinatorEndpoint, logger) => {
89
+ const endpoint = device.getEndpoint(1);
90
+ await endpoint.read('genPowerCfg', ['batteryPercentageRemaining']);
91
+ device.powerSource = 'Battery';
92
+ device.save();
93
+ },
94
+ },
95
+ {
96
+ zigbeeModel: ['3RDS17BZ'],
97
+ model: '3RDS17BZ',
98
+ vendor: 'Third Reality',
99
+ description: 'Door sensor',
100
+ fromZigbee: [fz.ias_contact_alarm_1, fz.battery],
101
+ toZigbee: [],
102
+ ota: ota.zigbeeOTA,
103
+ exposes: [e.contact(), e.battery_low(), e.battery(), e.battery_voltage()],
104
+ configure: async (device, coordinatorEndpoint, logger) => {
105
+ const endpoint = device.getEndpoint(1);
106
+ await endpoint.read('genPowerCfg', ['batteryPercentageRemaining']);
107
+ device.powerSource = 'Battery';
108
+ device.save();
109
+ },
110
+ },
111
+ {
112
+ zigbeeModel: ['3RSP019BZ'],
113
+ model: '3RSP019BZ',
114
+ vendor: 'Third Reality',
115
+ description: 'Zigbee / BLE smart plug',
116
+ extend: extend.switch(),
117
+ ota: ota.zigbeeOTA,
118
+ configure: async (device, coordinatorEndpoint, logger) => {
119
+ const endpoint = device.getEndpoint(1);
120
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
121
+ await reporting.onOff(endpoint);
122
+ },
123
+ },
124
+ {
125
+ zigbeeModel: ['3RSB015BZ'],
126
+ model: '3RSB015BZ',
127
+ vendor: 'Third Reality',
128
+ description: 'Roller shade',
129
+ fromZigbee: [fz.cover_position_tilt, fz.battery],
130
+ toZigbee: [tz.cover_state, tz.cover_position_tilt],
131
+ meta: {battery: {dontDividePercentage: false}},
132
+ ota: ota.zigbeeOTA,
133
+ configure: async (device, coordinatorEndpoint, logger) => {
134
+ const endpoint = device.getEndpoint(1);
135
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'closuresWindowCovering']);
136
+ await reporting.currentPositionLiftPercentage(endpoint);
137
+ try {
138
+ await reporting.batteryPercentageRemaining(endpoint);
139
+ } catch (error) {/* Fails for some*/}
140
+ },
141
+ exposes: [e.cover_position(), e.battery()],
142
+ },
143
+ {
144
+ zigbeeModel: ['3RSB22BZ'],
145
+ model: '3RSB22BZ',
146
+ vendor: 'Third Reality',
147
+ description: 'Smart button',
148
+ fromZigbee: [fz.battery, fz.itcmdr_clicks],
149
+ toZigbee: [],
150
+ ota: ota.zigbeeOTA,
151
+ exposes: [e.battery(), e.battery_low(), e.battery_voltage(), e.action(['single', 'double', 'long'])],
152
+ configure: async (device, coordinatorEndpoint, logger) => {
153
+ const endpoint = device.getEndpoint(1);
154
+ await endpoint.read('genPowerCfg', ['batteryPercentageRemaining']);
155
+ device.powerSource = 'Battery';
156
+ device.save();
157
+ },
158
+ },
159
+ {
160
+ zigbeeModel: ['3RTHS24BZ'],
161
+ model: '3RTHS24BZ',
162
+ vendor: 'Third Reality',
163
+ description: 'Temperature and humidity sensor',
164
+ fromZigbee: [fz.battery, fz.temperature, fz.humidity],
165
+ toZigbee: [],
166
+ exposes: [e.battery(), e.temperature(), e.humidity(), e.battery_voltage()],
167
+ ota: ota.zigbeeOTA,
168
+ },
169
+ {
170
+ zigbeeModel: ['3RSP02028BZ'],
171
+ model: '3RSP02028BZ',
172
+ vendor: 'Third Reality',
173
+ description: 'Zigbee / BLE smart plug with power',
174
+ fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering],
175
+ toZigbee: [tz.on_off],
176
+ ota: ota.zigbeeOTA,
177
+ exposes: [e.switch(), e.ac_frequency(), e.power(), e.power_factor(), e.energy(), e.current(), e.voltage()],
178
+ configure: async (device, coordinatorEndpoint, logger) => {
179
+ const endpoint = device.getEndpoint(1);
180
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering']);
181
+ await endpoint.read('haElectricalMeasurement', ['acPowerMultiplier', 'acPowerDivisor']);
182
+ await reporting.onOff(endpoint);
183
+ await reporting.activePower(endpoint, {change: 10});
184
+ await reporting.rmsCurrent(endpoint, {change: 50});
185
+ await reporting.rmsVoltage(endpoint, {change: 5});
186
+ await reporting.readMeteringMultiplierDivisor(endpoint);
187
+ endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 3600000, multiplier: 1});
188
+ endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {
189
+ acVoltageMultiplier: 1, acVoltageDivisor: 10, acCurrentMultiplier: 1, acCurrentDivisor: 1000, acPowerMultiplier: 1,
190
+ acPowerDivisor: 10,
191
+ });
192
+ device.save();
193
+ },
194
+ },
195
+ ];
@@ -0,0 +1,22 @@
1
+ const exposes = require('../lib/exposes');
2
+ const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
3
+ const reporting = require('../lib/reporting');
4
+ const e = exposes.presets;
5
+
6
+ module.exports = [
7
+ {
8
+ zigbeeModel: ['TPZRCO2HT-Z3', 'TPZRCO2HT-Z3/L'],
9
+ model: 'TPZRCO2HT-Z3',
10
+ vendor: 'Titan Products',
11
+ description: 'Room CO2, humidity & temperature sensor',
12
+ fromZigbee: [fz.battery, fz.humidity, fz.temperature, fz.co2],
13
+ exposes: [e.battery_voltage(), e.battery_low(), e.humidity(), e.temperature(), e.co2()],
14
+ toZigbee: [],
15
+ configure: async (device, coordinatorEndpoint, logger) => {
16
+ const endpoint = device.getEndpoint(1);
17
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'msTemperatureMeasurement', 'msCO2']);
18
+ await endpoint.read('genPowerCfg', ['batteryVoltage']);
19
+ await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['msRelativeHumidity']);
20
+ },
21
+ },
22
+ ];
@@ -0,0 +1,42 @@
1
+ const exposes = require('../lib/exposes');
2
+ const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
3
+ const reporting = require('../lib/reporting');
4
+ const e = exposes.presets;
5
+
6
+ module.exports = [
7
+ {
8
+ zigbeeModel: ['MS100'],
9
+ model: 'MS100',
10
+ vendor: 'TP-Link',
11
+ description: 'Smart motion sensor',
12
+ fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery, fz.illuminance],
13
+ toZigbee: [],
14
+ exposes: [e.occupancy(), e.battery_low(), e.tamper(), e.battery(), e.illuminance(), e.illuminance_lux()],
15
+ configure: async (device, coordinatorEndpoint, logger) => {
16
+ const endpoint = device.getEndpoint(1);
17
+ const endpoint2 = device.getEndpoint(2);
18
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
19
+ await reporting.batteryPercentageRemaining(endpoint);
20
+ await reporting.bind(endpoint2, coordinatorEndpoint, ['msIlluminanceMeasurement']);
21
+ await reporting.illuminance(endpoint2);
22
+ device.powerSource = 'Battery';
23
+ device.save();
24
+ },
25
+ },
26
+ {
27
+ zigbeeModel: ['CS100'],
28
+ model: 'CS100',
29
+ vendor: 'TP-Link',
30
+ description: 'Contact sensor',
31
+ fromZigbee: [fz.ias_contact_alarm_1, fz.battery],
32
+ toZigbee: [],
33
+ exposes: [e.contact(), e.battery_low(), e.battery()],
34
+ configure: async (device, coordinatorEndpoint, logger) => {
35
+ const endpoint = device.getEndpoint(1);
36
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
37
+ await reporting.batteryPercentageRemaining(endpoint);
38
+ device.powerSource = 'Battery';
39
+ device.save();
40
+ },
41
+ },
42
+ ];