@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,62 @@
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 e = exposes.presets;
7
+
8
+ module.exports = [
9
+ {
10
+ zigbeeModel: ['SPW35Z-D0'],
11
+ model: 'ZHS-15',
12
+ vendor: 'Schwaiger',
13
+ description: 'Power socket on/off with power consumption monitoring',
14
+ fromZigbee: [fz.on_off, fz.electrical_measurement],
15
+ toZigbee: [tz.on_off],
16
+ configure: async (device, coordinatorEndpoint, logger) => {
17
+ const endpoint = device.getEndpoint(1);
18
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement']);
19
+ await reporting.onOff(endpoint);
20
+ await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
21
+ await reporting.rmsVoltage(endpoint);
22
+ await reporting.rmsCurrent(endpoint);
23
+ await reporting.activePower(endpoint);
24
+ },
25
+ exposes: [e.switch(), e.power(), e.current(), e.voltage()],
26
+ },
27
+ {
28
+ zigbeeModel: ['ZBT-RGBWLight-GLS0844', 'HAL300'],
29
+ model: 'HAL300',
30
+ vendor: 'Schwaiger',
31
+ description: 'Tint LED bulb E27 806 lumen, dimmable, color, white 1800-6500K',
32
+ extend: extend.light_onoff_brightness_colortemp_color(),
33
+ },
34
+ {
35
+ zigbeeModel: ['ZBT-DIMLight-Candle0800'],
36
+ model: 'HAL600',
37
+ vendor: 'Schwaiger',
38
+ description: 'LED candle bulb E14 470 lumen, dimmable, color, white 2700K',
39
+ extend: extend.light_onoff_brightness(),
40
+ },
41
+ {
42
+ fingerprint: [{modelID: 'ZBT-CCTLight-GU100904', manufacturerName: 'LDS'}],
43
+ model: 'HAL500',
44
+ vendor: 'Schwaiger',
45
+ description: 'LED bulb GU10 350 lumen, dimmable, color, white 2700-6500K',
46
+ extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
47
+ },
48
+ {
49
+ zigbeeModel: ['ZBT-DIMLight-GU100800'],
50
+ model: 'HAL400',
51
+ vendor: 'Schwaiger',
52
+ description: 'LED Schwaiger HAL400 GU10 dimmable, warm white',
53
+ extend: extend.light_onoff_brightness(),
54
+ },
55
+ {
56
+ zigbeeModel: ['ZBT-RGBWLight-C4700114'],
57
+ model: 'HAL800',
58
+ vendor: 'Schwaiger',
59
+ description: 'LED candle bulb E14 470 lumen, dimmable, color, white 1800-6500K',
60
+ extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 555]}),
61
+ },
62
+ ];
@@ -0,0 +1,16 @@
1
+ const extend = require('../lib/extend');
2
+
3
+ module.exports = [
4
+ {
5
+ zigbeeModel: ['020B0B'],
6
+ model: '020B0B',
7
+ vendor: 'Fischer & Honsel',
8
+ description: 'LED Tischleuchte Beta Zig',
9
+ extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 370]}),
10
+ endpoint: (device) => {
11
+ // https://github.com/Koenkk/zigbee-herdsman-converters/issues/5463
12
+ const endpoint = device.endpoints.find((e) => e.inputClusters.includes(6)).ID;
13
+ return {'default': endpoint};
14
+ },
15
+ },
16
+ ];
@@ -0,0 +1,39 @@
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 e = exposes.presets;
7
+
8
+ module.exports = [
9
+ {
10
+ zigbeeModel: ['PP-WHT-US'],
11
+ model: 'PP-WHT-US',
12
+ vendor: 'Securifi',
13
+ description: 'Peanut Smart Plug',
14
+ fromZigbee: [fz.on_off, fz.electrical_measurement],
15
+ toZigbee: [tz.on_off],
16
+ ota: ota.securifi,
17
+ configure: async (device, coordinatorEndpoint, logger) => {
18
+ const endpoint = device.getEndpoint(1);
19
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement']);
20
+ endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {
21
+ acVoltageMultiplier: 180, acVoltageDivisor: 39321, acCurrentMultiplier: 72,
22
+ acCurrentDivisor: 39321, acPowerMultiplier: 10255, acPowerDivisor: 39321});
23
+ await reporting.onOff(endpoint);
24
+ await reporting.rmsVoltage(endpoint, {change: 110}); // Voltage reports in 0.00458V
25
+ await reporting.rmsCurrent(endpoint, {change: 55}); // Current reports in 0.00183A
26
+ await reporting.activePower(endpoint, {change: 2}); // Power reports in 0.261W
27
+ },
28
+ exposes: [e.switch(), e.power(), e.current(), e.voltage()],
29
+ },
30
+ {
31
+ zigbeeModel: ['ZB2-BU01'],
32
+ model: 'B01M7Y8BP9',
33
+ vendor: 'Securifi',
34
+ description: 'Almond Click multi-function button',
35
+ fromZigbee: [fz.almond_click],
36
+ exposes: [e.action(['single', 'double', 'long'])],
37
+ toZigbee: [],
38
+ },
39
+ ];
@@ -0,0 +1,332 @@
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 e = exposes.presets;
7
+
8
+ // Make sure extend.ldight_* is not used (sengledExtend should be used instead)
9
+ const extendDontUse = require('../lib/extend');
10
+ const extend = {switch: extendDontUse.switch};
11
+ const sengledExtend = {
12
+ light_onoff_brightness: (options={}) => extendDontUse.light_onoff_brightness(
13
+ {disableEffect: true, disablePowerOnBehavior: true, ...options}),
14
+ light_onoff_brightness_colortemp: (options={}) => extendDontUse.light_onoff_brightness_colortemp(
15
+ {disableEffect: true, disablePowerOnBehavior: true, ...options}),
16
+ light_onoff_brightness_colortemp_color: (options={}) =>
17
+ extendDontUse.light_onoff_brightness_colortemp_color({disableEffect: true, disablePowerOnBehavior: true, ...options}),
18
+ };
19
+
20
+ module.exports = [
21
+ {
22
+ zigbeeModel: ['E13-N11'],
23
+ model: 'E13-N11',
24
+ vendor: 'Sengled',
25
+ description: 'Flood light with motion sensor light outdoor',
26
+ fromZigbee: sengledExtend.light_onoff_brightness().fromZigbee.concat([fz.ias_occupancy_alarm_1]),
27
+ toZigbee: sengledExtend.light_onoff_brightness().toZigbee,
28
+ exposes: sengledExtend.light_onoff_brightness().exposes.concat([e.occupancy()]),
29
+ ota: ota.zigbeeOTA,
30
+ },
31
+ {
32
+ zigbeeModel: ['E21-N13A'],
33
+ model: 'E21-N13A',
34
+ vendor: 'Sengled',
35
+ description: 'Smart LED (A19)',
36
+ extend: sengledExtend.light_onoff_brightness(),
37
+ ota: ota.zigbeeOTA,
38
+ },
39
+ {
40
+ zigbeeModel: ['E21-N1EA'],
41
+ model: 'E21-N1EA',
42
+ vendor: 'Sengled',
43
+ description: 'Smart LED multicolor A19 bulb',
44
+ fromZigbee: sengledExtend.light_onoff_brightness_colortemp_color({colorTempRange: [154, 500]}).fromZigbee.concat([fz.metering]),
45
+ toZigbee: sengledExtend.light_onoff_brightness_colortemp_color({colorTempRange: [154, 500]}).toZigbee,
46
+ exposes: sengledExtend.light_onoff_brightness_colortemp_color({colorTempRange: [154, 500]}).exposes.concat([e.power(), e.energy()]),
47
+ ota: ota.zigbeeOTA,
48
+ configure: async (device, coordinatorEndpoint, logger) => {
49
+ await sengledExtend.light_onoff_brightness_colortemp_color({colorTempRange: [154, 500]})
50
+ .configure(device, coordinatorEndpoint, logger);
51
+ device.powerSource = 'Mains (single phase)';
52
+ device.save();
53
+
54
+ const endpoint = device.getEndpoint(1);
55
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
56
+ await reporting.readMeteringMultiplierDivisor(endpoint);
57
+ await reporting.currentSummDelivered(endpoint);
58
+ await reporting.instantaneousDemand(endpoint);
59
+ },
60
+ },
61
+ {
62
+ zigbeeModel: ['E12-N1E'],
63
+ model: 'E12-N1E',
64
+ vendor: 'Sengled',
65
+ description: 'Smart LED multicolor (BR30)',
66
+ fromZigbee: sengledExtend.light_onoff_brightness_colortemp_color({colorTempRange: [154, 500]}).fromZigbee.concat([fz.metering]),
67
+ toZigbee: sengledExtend.light_onoff_brightness_colortemp_color({colorTempRange: [154, 500]}).toZigbee,
68
+ exposes: sengledExtend.light_onoff_brightness_colortemp_color({colorTempRange: [154, 500]}).exposes.concat([e.power(), e.energy()]),
69
+ ota: ota.zigbeeOTA,
70
+ configure: async (device, coordinatorEndpoint, logger) => {
71
+ await sengledExtend.light_onoff_brightness_colortemp_color({colorTempRange: [154, 500]})
72
+ .configure(device, coordinatorEndpoint, logger);
73
+ device.powerSource = 'Mains (single phase)';
74
+ device.save();
75
+
76
+ const endpoint = device.getEndpoint(1);
77
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
78
+ await reporting.readMeteringMultiplierDivisor(endpoint);
79
+ await reporting.currentSummDelivered(endpoint);
80
+ await reporting.instantaneousDemand(endpoint);
81
+ },
82
+ },
83
+ {
84
+ zigbeeModel: ['E1G-G8E'],
85
+ model: 'E1G-G8E',
86
+ vendor: 'Sengled',
87
+ description: 'Multicolor light strip (2M)',
88
+ extend: sengledExtend.light_onoff_brightness_colortemp_color(),
89
+ ota: ota.zigbeeOTA,
90
+ },
91
+ {
92
+ zigbeeModel: ['E11-U21U31'],
93
+ model: 'E11-U21U31',
94
+ vendor: 'Sengled',
95
+ description: 'Element touch (A19)',
96
+ extend: sengledExtend.light_onoff_brightness(),
97
+ ota: ota.zigbeeOTA,
98
+ },
99
+ {
100
+ zigbeeModel: ['E11-G13'],
101
+ model: 'E11-G13',
102
+ vendor: 'Sengled',
103
+ description: 'Element classic (A19)',
104
+ fromZigbee: sengledExtend.light_onoff_brightness().fromZigbee.concat([fz.metering]),
105
+ toZigbee: sengledExtend.light_onoff_brightness().toZigbee,
106
+ ota: ota.zigbeeOTA,
107
+ configure: async (device, coordinatorEndpoint, logger) => {
108
+ await sengledExtend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
109
+ device.powerSource = 'Mains (single phase)';
110
+ device.save();
111
+
112
+ const endpoint = device.getEndpoint(1);
113
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
114
+ await reporting.readMeteringMultiplierDivisor(endpoint);
115
+ await reporting.currentSummDelivered(endpoint);
116
+ await reporting.instantaneousDemand(endpoint);
117
+ },
118
+ exposes: sengledExtend.light_onoff_brightness().exposes.concat([e.power(), e.energy()]),
119
+ },
120
+ {
121
+ zigbeeModel: ['E11-G23', 'E11-G33'],
122
+ model: 'E11-G23/E11-G33',
123
+ vendor: 'Sengled',
124
+ description: 'Element classic (A60)',
125
+ extend: sengledExtend.light_onoff_brightness(),
126
+ ota: ota.zigbeeOTA,
127
+ },
128
+ {
129
+ zigbeeModel: ['E11-N13', 'E11-N13A', 'E11-N14', 'E11-N14A'],
130
+ model: 'E11-N13/E11-N13A/E11-N14/E11-N14A',
131
+ vendor: 'Sengled',
132
+ description: 'Element extra bright (A19)',
133
+ extend: sengledExtend.light_onoff_brightness(),
134
+ ota: ota.zigbeeOTA,
135
+ },
136
+ {
137
+ zigbeeModel: ['Z01-CIA19NAE26'],
138
+ model: 'Z01-CIA19NAE26',
139
+ vendor: 'Sengled',
140
+ description: 'Element touch (A19)',
141
+ extend: sengledExtend.light_onoff_brightness(),
142
+ ota: ota.zigbeeOTA,
143
+ },
144
+ {
145
+ zigbeeModel: ['Z01-A19NAE26'],
146
+ model: 'Z01-A19NAE26',
147
+ vendor: 'Sengled',
148
+ description: 'Element plus (A19)',
149
+ fromZigbee: sengledExtend.light_onoff_brightness_colortemp_color().fromZigbee.concat([fz.metering]),
150
+ toZigbee: sengledExtend.light_onoff_brightness_colortemp_color().toZigbee,
151
+ ota: ota.zigbeeOTA,
152
+ configure: async (device, coordinatorEndpoint, logger) => {
153
+ await sengledExtend.light_onoff_brightness_colortemp_color().configure(device, coordinatorEndpoint, logger);
154
+ const endpoint = device.getEndpoint(1);
155
+ await reporting.bind(endpoint, coordinatorEndpoint, ['seMetering']);
156
+ await reporting.readMeteringMultiplierDivisor(endpoint);
157
+ await reporting.currentSummDelivered(endpoint);
158
+ await reporting.instantaneousDemand(endpoint);
159
+ },
160
+ exposes: sengledExtend.light_onoff_brightness_colortemp_color().exposes.concat([e.power(), e.energy()]),
161
+ },
162
+ {
163
+ zigbeeModel: ['Z01-A60EAE27'],
164
+ model: 'Z01-A60EAE27',
165
+ vendor: 'Sengled',
166
+ description: 'Element Plus (A60)',
167
+ extend: sengledExtend.light_onoff_brightness_colortemp(),
168
+ ota: ota.zigbeeOTA,
169
+ },
170
+ {
171
+ zigbeeModel: ['E11-N1EA'],
172
+ model: 'E11-N1EA',
173
+ vendor: 'Sengled',
174
+ description: 'Element plus color (A19)',
175
+ fromZigbee: sengledExtend.light_onoff_brightness_colortemp_color().fromZigbee.concat([fz.metering]),
176
+ toZigbee: sengledExtend.light_onoff_brightness_colortemp_color().toZigbee,
177
+ ota: ota.zigbeeOTA,
178
+ configure: async (device, coordinatorEndpoint, logger) => {
179
+ await sengledExtend.light_onoff_brightness_colortemp_color().configure(device, coordinatorEndpoint, logger);
180
+ device.powerSource = 'Mains (single phase)';
181
+ device.save();
182
+
183
+ const endpoint = device.getEndpoint(1);
184
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
185
+ await reporting.readMeteringMultiplierDivisor(endpoint);
186
+ await reporting.currentSummDelivered(endpoint);
187
+ await reporting.instantaneousDemand(endpoint);
188
+ },
189
+ exposes: sengledExtend.light_onoff_brightness_colortemp_color().exposes.concat([e.power(), e.energy()]),
190
+ },
191
+ {
192
+ zigbeeModel: ['E11-U2E'],
193
+ model: 'E11-U2E',
194
+ vendor: 'Sengled',
195
+ description: 'Element color plus E27',
196
+ extend: sengledExtend.light_onoff_brightness_colortemp_color(),
197
+ ota: ota.zigbeeOTA,
198
+ },
199
+ {
200
+ zigbeeModel: ['E11-U3E'],
201
+ model: 'E11-U3E',
202
+ vendor: 'Sengled',
203
+ description: 'Element color plus B22',
204
+ extend: sengledExtend.light_onoff_brightness_colortemp_color(),
205
+ ota: ota.zigbeeOTA,
206
+ },
207
+ {
208
+ zigbeeModel: ['E1F-N5E'],
209
+ model: 'E1F-N5E',
210
+ vendor: 'Sengled',
211
+ description: 'Element color plus E12',
212
+ fromZigbee: sengledExtend.light_onoff_brightness_colortemp_color({colorTempRange: [154, 500]}).fromZigbee.concat([fz.metering]),
213
+ toZigbee: sengledExtend.light_onoff_brightness_colortemp_color({colorTempRange: [154, 500]}).toZigbee,
214
+ exposes: sengledExtend.light_onoff_brightness_colortemp_color({colorTempRange: [154, 500]}).exposes.concat([e.power(), e.energy()]),
215
+ ota: ota.zigbeeOTA,
216
+ configure: async (device, coordinatorEndpoint, logger) => {
217
+ await sengledExtend.light_onoff_brightness_colortemp_color({colorTempRange: [154, 500]})
218
+ .configure(device, coordinatorEndpoint, logger);
219
+ device.powerSource = 'Mains (single phase)';
220
+ device.save();
221
+
222
+ const endpoint = device.getEndpoint(1);
223
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
224
+ await reporting.readMeteringMultiplierDivisor(endpoint);
225
+ await reporting.currentSummDelivered(endpoint);
226
+ await reporting.instantaneousDemand(endpoint);
227
+ },
228
+ },
229
+ {
230
+ zigbeeModel: ['E12-N14'],
231
+ model: 'E12-N14',
232
+ vendor: 'Sengled',
233
+ description: 'Element Classic (BR30)',
234
+ extend: sengledExtend.light_onoff_brightness(),
235
+ ota: ota.zigbeeOTA,
236
+ },
237
+ {
238
+ zigbeeModel: ['E1A-AC2'],
239
+ model: 'E1ACA4ABE38A',
240
+ vendor: 'Sengled',
241
+ description: 'Element downlight smart LED bulb',
242
+ extend: sengledExtend.light_onoff_brightness(),
243
+ ota: ota.zigbeeOTA,
244
+ },
245
+ {
246
+ zigbeeModel: ['E1D-G73'],
247
+ model: 'E1D-G73WNA',
248
+ vendor: 'Sengled',
249
+ description: 'Smart window and door sensor',
250
+ fromZigbee: [fz.ias_contact_alarm_1, fz.battery],
251
+ toZigbee: [],
252
+ ota: ota.zigbeeOTA,
253
+ exposes: [e.contact(), e.battery_low(), e.battery(), e.battery_voltage(), e.tamper()],
254
+ configure: async (device, coordinatorEndpoint, logger) => {
255
+ const endpoint = device.getEndpoint(1);
256
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
257
+ await reporting.batteryVoltage(endpoint);
258
+ await reporting.batteryPercentageRemaining(endpoint);
259
+ },
260
+ },
261
+ {
262
+ zigbeeModel: ['E2D-G73'],
263
+ model: 'E2D-G73',
264
+ vendor: 'Sengled',
265
+ description: 'Smart window and door sensor G2',
266
+ fromZigbee: [fz.ias_contact_alarm_1, fz.battery],
267
+ toZigbee: [],
268
+ ota: ota.zigbeeOTA,
269
+ exposes: [e.contact(), e.battery_low(), e.battery(), e.battery_voltage(), e.tamper()],
270
+ configure: async (device, coordinatorEndpoint, logger) => {
271
+ const endpoint = device.getEndpoint(1);
272
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
273
+ await reporting.batteryVoltage(endpoint);
274
+ await reporting.batteryPercentageRemaining(endpoint);
275
+ },
276
+ },
277
+ {
278
+ zigbeeModel: ['E1C-NB6'],
279
+ model: 'E1C-NB6',
280
+ vendor: 'Sengled',
281
+ description: 'Smart plug',
282
+ extend: extend.switch(),
283
+ configure: async (device, coordinatorEndpoint, logger) => {
284
+ const endpoint = device.getEndpoint(1);
285
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
286
+ await reporting.onOff(endpoint);
287
+ },
288
+ ota: ota.zigbeeOTA,
289
+ },
290
+ {
291
+ zigbeeModel: ['E1C-NB7'],
292
+ model: 'E1C-NB7',
293
+ vendor: 'Sengled',
294
+ description: 'Smart plug with energy tracker',
295
+ fromZigbee: [fz.on_off, fz.metering],
296
+ toZigbee: [tz.on_off],
297
+ configure: async (device, coordinatorEndpoint, logger) => {
298
+ const endpoint = device.getEndpoint(1);
299
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
300
+ await reporting.onOff(endpoint);
301
+ await reporting.readMeteringMultiplierDivisor(endpoint);
302
+ await reporting.instantaneousDemand(endpoint);
303
+ },
304
+ exposes: [e.switch(), e.power(), e.energy()],
305
+ },
306
+ {
307
+ zigbeeModel: ['E1E-G7F'],
308
+ model: 'E1E-G7F',
309
+ vendor: 'Sengled',
310
+ description: 'Smart switch',
311
+ fromZigbee: [fz.E1E_G7F_action],
312
+ exposes: [e.action(['on', 'up', 'down', 'off', 'on_double', 'on_long', 'off_double', 'off_long'])],
313
+ toZigbee: [],
314
+ ota: ota.zigbeeOTA,
315
+ },
316
+ {
317
+ zigbeeModel: ['E11-N1G'],
318
+ model: 'E11-N1G',
319
+ vendor: 'Sengled',
320
+ description: 'Vintage LED edison bulb (ST19)',
321
+ extend: sengledExtend.light_onoff_brightness(),
322
+ ota: ota.zigbeeOTA,
323
+ },
324
+ {
325
+ zigbeeModel: ['E1F-N9G'],
326
+ model: 'E1F-N9G',
327
+ vendor: 'Sengled',
328
+ description: 'Smart LED filament candle (E12)',
329
+ extend: sengledExtend.light_onoff_brightness(),
330
+ ota: ota.zigbeeOTA,
331
+ },
332
+ ];
@@ -0,0 +1,140 @@
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 e = exposes.presets;
6
+
7
+ module.exports = [
8
+ {
9
+ zigbeeModel: ['SZ-ESW01'],
10
+ model: 'SZ-ESW01',
11
+ vendor: 'Sercomm',
12
+ description: 'Telstra smart plug',
13
+ fromZigbee: [fz.on_off, fz.metering],
14
+ exposes: [e.switch(), e.power()],
15
+ toZigbee: [tz.on_off],
16
+ configure: async (device, coordinatorEndpoint, logger) => {
17
+ const endpoint = device.getEndpoint(1);
18
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
19
+ await reporting.onOff(endpoint);
20
+ await reporting.instantaneousDemand(endpoint);
21
+ endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 1000000, multiplier: 1});
22
+ },
23
+ },
24
+ {
25
+ zigbeeModel: ['SZ-ESW01-AU'],
26
+ model: 'SZ-ESW01-AU',
27
+ vendor: 'Sercomm',
28
+ description: 'Telstra smart plug',
29
+ exposes: [e.switch(), e.power(), e.energy(), e.current(), e.voltage()],
30
+ fromZigbee: [fz.on_off, fz.metering, fz.electrical_measurement],
31
+ toZigbee: [tz.on_off],
32
+ configure: async (device, coordinatorEndpoint, logger) => {
33
+ const endpoint = device.getEndpoint(1);
34
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering', 'haElectricalMeasurement']);
35
+ await reporting.onOff(endpoint);
36
+ await reporting.instantaneousDemand(endpoint);
37
+ await reporting.currentSummDelivered(endpoint);
38
+ endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 1000000, multiplier: 1});
39
+ await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
40
+ await reporting.rmsVoltage(endpoint);
41
+ await reporting.rmsCurrent(endpoint);
42
+ },
43
+ },
44
+ {
45
+ zigbeeModel: ['SZ-ESW02'],
46
+ model: 'SZ-ESW02',
47
+ vendor: 'Sercomm',
48
+ description: 'Telstra smart plug 2',
49
+ fromZigbee: [fz.on_off, fz.metering],
50
+ exposes: [e.switch(), e.power()],
51
+ toZigbee: [tz.on_off],
52
+ configure: async (device, coordinatorEndpoint, logger) => {
53
+ const endpoint = device.getEndpoint(1);
54
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
55
+ await reporting.onOff(endpoint);
56
+ await reporting.instantaneousDemand(endpoint);
57
+ endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 1000000, multiplier: 1});
58
+ },
59
+ },
60
+ {
61
+ zigbeeModel: ['XHS2-SE'],
62
+ model: 'XHS2-SE',
63
+ vendor: 'Sercomm',
64
+ description: 'Magnetic door & window contact sensor',
65
+ fromZigbee: [fz.ias_contact_alarm_1, fz.temperature, fz.battery],
66
+ toZigbee: [],
67
+ meta: {battery: {voltageToPercentage: '3V_2100'}},
68
+ configure: async (device, coordinatorEndpoint, logger) => {
69
+ const endpoint = device.getEndpoint(1);
70
+ await reporting.bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
71
+ await reporting.temperature(endpoint);
72
+ await reporting.batteryVoltage(endpoint);
73
+ },
74
+ exposes: [e.contact(), e.battery_low(), e.tamper(), e.temperature(), e.battery()],
75
+ },
76
+ {
77
+ zigbeeModel: ['SZ-DWS04', 'SZ-DWS04N_SF'],
78
+ model: 'SZ-DWS04',
79
+ vendor: 'Sercomm',
80
+ description: 'Magnetic door & window contact sensor',
81
+ fromZigbee: [fz.ias_contact_alarm_1, fz.temperature, fz.battery],
82
+ toZigbee: [],
83
+ meta: {battery: {voltageToPercentage: '3V_2100'}},
84
+ configure: async (device, coordinatorEndpoint, logger) => {
85
+ const endpoint = device.getEndpoint(1);
86
+ await reporting.bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
87
+ await reporting.temperature(endpoint);
88
+ await reporting.batteryVoltage(endpoint);
89
+ },
90
+ exposes: [e.contact(), e.battery_low(), e.tamper(), e.temperature(), e.battery()],
91
+ },
92
+ {
93
+ zigbeeModel: ['SZ-DWS08N', 'SZ-DWS08', 'SZ-DWS08N-CZ3'],
94
+ model: 'SZ-DWS08',
95
+ vendor: 'Sercomm',
96
+ description: 'Magnetic door & window contact sensor',
97
+ fromZigbee: [fz.ias_contact_alarm_1, fz.temperature, fz.battery],
98
+ toZigbee: [],
99
+ meta: {battery: {voltageToPercentage: '3V_2100'}},
100
+ configure: async (device, coordinatorEndpoint, logger) => {
101
+ const endpoint = device.getEndpoint(1);
102
+ await reporting.bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
103
+ await reporting.temperature(endpoint);
104
+ await reporting.batteryVoltage(endpoint);
105
+ },
106
+ exposes: [e.contact(), e.battery_low(), e.tamper(), e.temperature(), e.battery()],
107
+ },
108
+ {
109
+ zigbeeModel: ['SZ-PIR02_SF', 'SZ-PIR02'],
110
+ model: 'AL-PIR02',
111
+ vendor: 'Sercomm',
112
+ description: 'PIR motion sensor',
113
+ fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery],
114
+ toZigbee: [],
115
+ meta: {battery: {voltageToPercentage: '3V_2100'}},
116
+ configure: async (device, coordinatorEndpoint, logger) => {
117
+ const endpoint = device.getEndpoint(1);
118
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
119
+ await reporting.batteryPercentageRemaining(endpoint);
120
+ },
121
+ exposes: [e.occupancy(), e.battery_low(), e.tamper(), e.battery()],
122
+ },
123
+ {
124
+ zigbeeModel: ['SZ-PIR04N', 'SZ-PIR04N_EU'],
125
+ model: 'SZ-PIR04N',
126
+ vendor: 'Sercomm',
127
+ description: 'PIR motion & temperature sensor',
128
+ fromZigbee: [fz.ias_occupancy_alarm_1, fz.illuminance, fz.temperature, fz.battery],
129
+ toZigbee: [],
130
+ meta: {battery: {voltageToPercent: '3V_2500_3200'}},
131
+ configure: async (device, coordinatorEndpoint, logger) => {
132
+ const endpoint = device.getEndpoint(1);
133
+ await reporting.bind(endpoint, coordinatorEndpoint, ['msIlluminanceMeasurement', 'msTemperatureMeasurement', 'genPowerCfg']);
134
+ await reporting.illuminance(endpoint);
135
+ await reporting.temperature(endpoint);
136
+ await reporting.batteryVoltage(endpoint);
137
+ },
138
+ exposes: [e.occupancy(), e.tamper(), e.illuminance(), e.temperature(), e.battery(), e.battery_voltage()],
139
+ },
140
+ ];
@@ -0,0 +1,53 @@
1
+ const exposes = require('../lib/exposes');
2
+ const extend = require('../lib/extend');
3
+ const e = exposes.presets;
4
+
5
+ module.exports = [
6
+ {
7
+ zigbeeModel: ['HOMA1008', '00A'],
8
+ model: 'HLD812-Z-SC',
9
+ vendor: 'Shenzhen Homa',
10
+ description: 'Smart LED driver',
11
+ extend: extend.light_onoff_brightness(),
12
+ },
13
+ {
14
+ zigbeeModel: ['HOMA1009'],
15
+ model: 'HLD503-Z-CT',
16
+ vendor: 'Shenzhen Homa',
17
+ description: 'Smart LED driver',
18
+ extend: extend.light_onoff_brightness_colortemp(),
19
+ },
20
+ {
21
+ zigbeeModel: ['HOMA1002', 'HOMA0019', 'HOMA0006', 'HOMA000F', '019'],
22
+ model: 'HLC610-Z',
23
+ vendor: 'Shenzhen Homa',
24
+ description: 'Wireless dimmable controller',
25
+ extend: extend.light_onoff_brightness(),
26
+ },
27
+ {
28
+ zigbeeModel: ['HOMA1031'],
29
+ model: 'HLC821-Z-SC',
30
+ vendor: 'Shenzhen Homa',
31
+ description: 'ZigBee AC phase-cut dimmer',
32
+ extend: extend.light_onoff_brightness(),
33
+ },
34
+ {
35
+ zigbeeModel: ['HOMA1005'],
36
+ model: 'HLC614-ZLL',
37
+ vendor: 'Shenzhen Homa',
38
+ description: '3 channel relay module',
39
+ extend: extend.switch(),
40
+ exposes: [e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2'), e.switch().withEndpoint('l3')],
41
+ meta: {multiEndpoint: true},
42
+ endpoint: (device) => {
43
+ return {l1: 1, l2: 2, l3: 3};
44
+ },
45
+ },
46
+ {
47
+ zigbeeModel: ['HOMA1064', '012'],
48
+ model: 'HLC833-Z-SC',
49
+ vendor: 'Shenzhen Homa',
50
+ description: 'Wireless dimmable controller',
51
+ extend: extend.light_onoff_brightness(),
52
+ },
53
+ ];