Advertisement
frozenwave11

Untitled

Jan 23rd, 2019
428
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 81.01 KB | None | 0 0
  1. 'use strict';
  2.  
  3. const debug = require('debug')('zigbee-shepherd-converters:devices');
  4. const fz = require('./converters/fromZigbee');
  5. const tz = require('./converters/toZigbee');
  6.  
  7. const repInterval = {
  8. MAX: 65535,
  9. };
  10.  
  11. const generic = {
  12. light_onoff_brightness: {
  13. supports: 'on/off, brightness',
  14. fromZigbee: [fz.light_brightness, fz.light_state],
  15. toZigbee: [tz.on_off, tz.light_brightness, tz.ignore_transition, tz.light_alert],
  16. },
  17. light_onoff_brightness_colortemp: {
  18. supports: 'on/off, brightness, color temperature',
  19. fromZigbee: [fz.light_brightness, fz.light_color_colortemp, fz.light_state],
  20. toZigbee: [tz.on_off, tz.light_brightness, tz.light_colortemp, tz.ignore_transition, tz.light_alert],
  21. },
  22. light_onoff_brightness_colorxy: {
  23. supports: 'on/off, brightness, color xy',
  24. fromZigbee: [fz.light_brightness, fz.light_color_colortemp, fz.light_state],
  25. toZigbee: [tz.on_off, tz.light_brightness, tz.light_color, tz.ignore_transition, tz.light_alert],
  26. },
  27. light_onoff_brightness_colortemp_colorxy: {
  28. supports: 'on/off, brightness, color temperature, color xy',
  29. fromZigbee: [fz.light_brightness, fz.light_color_colortemp, fz.light_state],
  30. toZigbee: [
  31. tz.on_off, tz.light_brightness, tz.light_colortemp, tz.light_color, tz.ignore_transition,
  32. tz.light_alert,
  33. ],
  34. },
  35. };
  36.  
  37. const tzHuePowerOnBehavior = [tz.hue_power_on_behavior, tz.hue_power_on_brightness, tz.hue_power_on_color_temperature];
  38. const hue = {
  39. light_onoff_brightness: {
  40. supports: generic.light_onoff_brightness.supports + ', power-on behavior',
  41. fromZigbee: generic.light_onoff_brightness.fromZigbee,
  42. toZigbee: generic.light_onoff_brightness.toZigbee.concat(tzHuePowerOnBehavior),
  43. },
  44. light_onoff_brightness_colortemp: {
  45. supports: generic.light_onoff_brightness_colortemp.supports + ', power-on behavior',
  46. fromZigbee: generic.light_onoff_brightness_colortemp.fromZigbee,
  47. toZigbee: generic.light_onoff_brightness_colortemp.toZigbee.concat(tzHuePowerOnBehavior),
  48. },
  49. light_onoff_brightness_colorxy: {
  50. supports: generic.light_onoff_brightness_colorxy.supports + ', power-on behavior',
  51. fromZigbee: generic.light_onoff_brightness_colorxy.fromZigbee,
  52. toZigbee: generic.light_onoff_brightness_colorxy.toZigbee.concat(tzHuePowerOnBehavior),
  53. },
  54. light_onoff_brightness_colortemp_colorxy: {
  55. supports: generic.light_onoff_brightness_colortemp_colorxy.supports + ', power-on behavior',
  56. fromZigbee: generic.light_onoff_brightness_colortemp_colorxy.fromZigbee,
  57. toZigbee: generic.light_onoff_brightness_colortemp_colorxy.toZigbee.concat(tzHuePowerOnBehavior),
  58. },
  59. };
  60.  
  61. const foundationCfg = {manufSpec: 0, disDefaultRsp: 0};
  62.  
  63. const execute = (device, actions, callback, delay) => {
  64. if (!device) {
  65. callback(false, 'No device');
  66. return;
  67. }
  68. delay || (delay = 300);
  69. const len = actions.length;
  70. let nextActionIndex = 0;
  71.  
  72. const next = () => {
  73. if (nextActionIndex === len) {
  74. callback(true, '');
  75. return;
  76. }
  77.  
  78. const nextAction = actions[nextActionIndex++];
  79.  
  80. setTimeout(nextAction,
  81. delay,
  82. (error) => {
  83. debug(`Configured '${nextAction.toString()}' with result '${error ? error : 'OK'}'`);
  84. if (error) {
  85. callback(false, error);
  86. return;
  87. }
  88. next();
  89. }
  90. );
  91. };
  92.  
  93. next();
  94. };
  95.  
  96. const devices = [
  97. // Xiaomi
  98. {
  99. zigbeeModel: ['lumi.light.aqcn02'],
  100. model: 'ZNLDP12LM',
  101. vendor: 'Xiaomi',
  102. description: 'Aqara smart LED bulb',
  103. extend: generic.light_onoff_brightness_colortemp,
  104. fromZigbee: [
  105. fz.light_brightness, fz.light_color_colortemp, fz.generic_state, fz.xiaomi_bulb_interval,
  106. fz.ignore_light_brightness_report, fz.ignore_light_color_colortemp_report, fz.ignore_onoff_change,
  107. fz.ignore_basic_change,
  108. ],
  109. },
  110. {
  111. zigbeeModel: ['lumi.sensor_switch'],
  112. model: 'WXKG01LM',
  113. vendor: 'Xiaomi',
  114. description: 'MiJia wireless switch',
  115. supports: 'single, double, triple, quadruple, many, long, long_release click',
  116. fromZigbee: [fz.xiaomi_battery_3v, fz.WXKG01LM_click, fz.ignore_onoff_change, fz.ignore_basic_change],
  117. toZigbee: [],
  118. },
  119. {
  120. zigbeeModel: ['lumi.sensor_switch.aq2', 'lumi.remote.b1acn01\u0000\u0000\u0000\u0000\u0000\u0000'],
  121. model: 'WXKG11LM',
  122. vendor: 'Xiaomi',
  123. description: 'Aqara wireless switch',
  124. supports: 'single, double click (and triple, quadruple, hold, release depending on model)',
  125. fromZigbee: [
  126. fz.xiaomi_battery_3v, fz.WXKG11LM_click, fz.ignore_onoff_change, fz.ignore_basic_change,
  127. fz.xiaomi_action_click_multistate, fz.ignore_multistate_change,
  128. ],
  129. toZigbee: [],
  130. },
  131. {
  132. zigbeeModel: ['lumi.sensor_switch.aq3', 'lumi.sensor_swit'],
  133. model: 'WXKG12LM',
  134. vendor: 'Xiaomi',
  135. description: 'Aqara wireless switch (with gyroscope)',
  136. supports: 'single, double, shake, hold, release',
  137. fromZigbee: [
  138. fz.xiaomi_battery_3v, fz.WXKG12LM_action_click_multistate, fz.ignore_onoff_change,
  139. fz.ignore_basic_change, fz.ignore_multistate_change,
  140. ],
  141. toZigbee: [],
  142. },
  143. {
  144. zigbeeModel: ['lumi.sensor_86sw1\u0000lu', 'lumi.remote.b186acn01\u0000\u0000\u0000'],
  145. model: 'WXKG03LM',
  146. vendor: 'Xiaomi',
  147. description: 'Aqara single key wireless wall switch',
  148. supports: 'single, double, hold, release and long click',
  149. fromZigbee: [
  150. fz.xiaomi_battery_3v, fz.WXKG03LM_click, fz.ignore_basic_change,
  151. fz.xiaomi_action_click_multistate, fz.ignore_multistate_change,
  152. ],
  153. toZigbee: [],
  154. },
  155. {
  156. zigbeeModel: ['lumi.sensor_86sw2\u0000Un', 'lumi.sensor_86sw2.es1', 'lumi.remote.b286acn01\u0000\u0000\u0000'],
  157. model: 'WXKG02LM',
  158. vendor: 'Xiaomi',
  159. description: 'Aqara double key wireless wall switch',
  160. supports: 'left, right, both click (and double, long click for left, right and both depending on model)',
  161. fromZigbee: [
  162. fz.xiaomi_battery_3v, fz.WXKG02LM_click, fz.ignore_basic_change,
  163. fz.WXKG02LM_click_multistate, fz.ignore_multistate_change,
  164. ],
  165. toZigbee: [],
  166. ep: (device) => {
  167. return {'left': 1, 'right': 2, 'both': 3};
  168. },
  169. },
  170. {
  171. zigbeeModel: ['lumi.ctrl_neutral1'],
  172. model: 'QBKG04LM',
  173. vendor: 'Xiaomi',
  174. description: 'Aqara single key wired wall switch',
  175. supports: 'on/off',
  176. fromZigbee: [
  177. fz.QBKG04LM_QBKG11LM_state, fz.ignore_onoff_change, fz.ignore_basic_change, fz.ignore_basic_report,
  178. ],
  179. toZigbee: [tz.on_off],
  180. ep: (device) => {
  181. return {'': 2};
  182. },
  183. },
  184. {
  185. zigbeeModel: ['lumi.ctrl_ln1.aq1', 'lumi.ctrl_ln1'],
  186. model: 'QBKG11LM',
  187. vendor: 'Xiaomi',
  188. description: 'Aqara single key wired wall switch',
  189. supports: 'on/off, power measurement',
  190. fromZigbee: [
  191. fz.QBKG04LM_QBKG11LM_state, fz.QBKG11LM_power, fz.ignore_onoff_change, fz.ignore_basic_change,
  192. fz.ignore_multistate_report, fz.ignore_multistate_change, fz.ignore_analog_change, fz.xiaomi_power,
  193. ],
  194. toZigbee: [tz.on_off],
  195. },
  196. {
  197. zigbeeModel: ['lumi.ctrl_neutral2'],
  198. model: 'QBKG03LM',
  199. vendor: 'Xiaomi',
  200. description: 'Aqara double key wired wall switch',
  201. supports: 'release/hold, on/off',
  202. fromZigbee: [
  203. fz.QBKG03LM_QBKG12LM_state, fz.QBKG03LM_buttons, fz.ignore_basic_change, fz.ignore_basic_report,
  204. ],
  205. toZigbee: [tz.on_off],
  206. ep: (device) => {
  207. return {'left': 2, 'right': 3};
  208. },
  209. },
  210. {
  211. zigbeeModel: ['lumi.ctrl_ln2.aq1'],
  212. model: 'QBKG12LM',
  213. vendor: 'Xiaomi',
  214. description: 'Aqara double key wired wall switch',
  215. supports: 'on/off, power measurement',
  216. fromZigbee: [
  217. fz.QBKG03LM_QBKG12LM_state, fz.QBKG12LM_power, fz.ignore_analog_change, fz.ignore_basic_change,
  218. fz.ignore_multistate_report, fz.ignore_multistate_change, fz.ignore_onoff_change, fz.xiaomi_power,
  219. ],
  220. toZigbee: [tz.on_off],
  221. ep: (device) => {
  222. return {'left': 1, 'right': 2};
  223. },
  224. },
  225. {
  226. zigbeeModel: ['lumi.sens'],
  227. model: 'WSDCGQ01LM',
  228. vendor: 'Xiaomi',
  229. description: 'MiJia temperature & humidity sensor ',
  230. supports: 'temperature and humidity',
  231. fromZigbee: [
  232. fz.xiaomi_battery_3v, fz.WSDCGQ01LM_WSDCGQ11LM_interval, fz.xiaomi_temperature, fz.xiaomi_humidity,
  233. fz.ignore_basic_change,
  234. ],
  235. toZigbee: [],
  236. },
  237. {
  238. zigbeeModel: ['lumi.weather'],
  239. model: 'WSDCGQ11LM',
  240. vendor: 'Xiaomi',
  241. description: 'Aqara temperature, humidity and pressure sensor',
  242. supports: 'temperature, humidity and pressure',
  243. fromZigbee: [
  244. fz.xiaomi_battery_3v, fz.xiaomi_temperature, fz.xiaomi_humidity, fz.xiaomi_pressure,
  245. fz.ignore_basic_change, fz.ignore_temperature_change, fz.ignore_humidity_change,
  246. fz.ignore_pressure_change, fz.WSDCGQ01LM_WSDCGQ11LM_interval,
  247. ],
  248. toZigbee: [],
  249. },
  250. {
  251. zigbeeModel: ['lumi.sensor_motion'],
  252. model: 'RTCGQ01LM',
  253. vendor: 'Xiaomi',
  254. description: 'MiJia human body movement sensor',
  255. supports: 'occupancy',
  256. fromZigbee: [fz.xiaomi_battery_3v, fz.generic_occupancy_no_off_msg, fz.ignore_basic_change],
  257. toZigbee: [],
  258. },
  259. {
  260. zigbeeModel: ['lumi.sensor_motion.aq2'],
  261. model: 'RTCGQ11LM',
  262. vendor: 'Xiaomi',
  263. description: 'Aqara human body movement and illuminance sensor',
  264. supports: 'occupancy and illuminance',
  265. fromZigbee: [
  266. fz.xiaomi_battery_3v, fz.generic_occupancy_no_off_msg, fz.generic_illuminance, fz.ignore_basic_change,
  267. fz.ignore_illuminance_change, fz.ignore_occupancy_change, fz.RTCGQ11LM_interval,
  268. ],
  269. toZigbee: [],
  270. },
  271. {
  272. zigbeeModel: ['lumi.sensor_magnet'],
  273. model: 'MCCGQ01LM',
  274. vendor: 'Xiaomi',
  275. description: 'MiJia door & window contact sensor',
  276. supports: 'contact',
  277. fromZigbee: [
  278. fz.xiaomi_battery_3v, fz.xiaomi_contact, fz.ignore_onoff_change,
  279. fz.ignore_basic_change,
  280. ],
  281. toZigbee: [],
  282. },
  283. {
  284. zigbeeModel: ['lumi.sensor_magnet.aq2'],
  285. model: 'MCCGQ11LM',
  286. vendor: 'Xiaomi',
  287. description: 'Aqara door & window contact sensor',
  288. supports: 'contact',
  289. fromZigbee: [
  290. fz.xiaomi_battery_3v, fz.xiaomi_contact, fz.xiaomi_contact_interval, fz.ignore_onoff_change,
  291. fz.ignore_basic_change,
  292. ],
  293. toZigbee: [],
  294. },
  295. {
  296. zigbeeModel: ['lumi.sensor_wleak.aq1'],
  297. model: 'SJCGQ11LM',
  298. vendor: 'Xiaomi',
  299. description: 'Aqara water leak sensor',
  300. supports: 'water leak true/false',
  301. fromZigbee: [fz.xiaomi_battery_3v, fz.SJCGQ11LM_water_leak_iaszone, fz.ignore_basic_change],
  302. toZigbee: [],
  303. },
  304. {
  305. zigbeeModel: ['lumi.sensor_cube', 'lumi.sensor_cube.aqgl01'],
  306. model: 'MFKZQ01LM',
  307. vendor: 'Xiaomi',
  308. description: 'Mi/Aqara smart home cube',
  309. supports: 'shake, wakeup, fall, tap, slide, flip180, flip90, rotate_left and rotate_right',
  310. fromZigbee: [
  311. fz.xiaomi_battery_3v, fz.MFKZQ01LM_action_multistate, fz.MFKZQ01LM_action_analog,
  312. fz.ignore_analog_change, fz.ignore_multistate_change, fz.ignore_basic_change,
  313. ],
  314. toZigbee: [],
  315. },
  316. {
  317. zigbeeModel: ['lumi.plug'],
  318. model: 'ZNCZ02LM',
  319. description: 'Mi power plug ZigBee',
  320. supports: 'on/off, power measurement',
  321. vendor: 'Xiaomi',
  322. fromZigbee: [
  323. fz.generic_state, fz.xiaomi_power, fz.xiaomi_plug_state, fz.ignore_onoff_change,
  324. fz.ignore_basic_change, fz.ignore_analog_change,
  325. ],
  326. toZigbee: [tz.on_off],
  327. },
  328. {
  329. zigbeeModel: ['lumi.ctrl_86plug', 'lumi.ctrl_86plug.aq1'],
  330. model: 'QBCZ11LM',
  331. description: 'Aqara socket Zigbee',
  332. supports: 'on/off, power measurement',
  333. vendor: 'Xiaomi',
  334. fromZigbee: [
  335. fz.generic_state, fz.xiaomi_power, fz.xiaomi_plug_state, fz.ignore_onoff_change,
  336. fz.ignore_basic_change, fz.ignore_analog_change,
  337. ],
  338. toZigbee: [tz.on_off],
  339. },
  340. {
  341. zigbeeModel: ['lumi.sensor_smoke'],
  342. model: 'JTYJ-GD-01LM/BW',
  343. description: 'MiJia Honeywell smoke detector',
  344. supports: 'smoke',
  345. vendor: 'Xiaomi',
  346. fromZigbee: [fz.xiaomi_battery_3v, fz.JTYJGD01LMBW_smoke, fz.ignore_basic_change],
  347. toZigbee: [],
  348. },
  349. {
  350. zigbeeModel: ['lumi.sensor_natgas'],
  351. model: 'JTQJ-BF-01LM/BW',
  352. vendor: 'Xiaomi',
  353. description: 'MiJia gas leak detector ',
  354. supports: 'gas',
  355. fromZigbee: [
  356. fz.JTQJBF01LMBW_gas,
  357. fz.JTQJBF01LMBW_sensitivity,
  358. fz.JTQJBF01LMBW_gas_density,
  359. fz.ignore_basic_change,
  360. ],
  361. toZigbee: [tz.JTQJBF01LMBW_sensitivity, tz.JTQJBF01LMBW_selfest],
  362. },
  363. {
  364. zigbeeModel: ['lumi.lock.v1'],
  365. model: 'A6121',
  366. vendor: 'Xiaomi',
  367. description: 'Vima Smart Lock',
  368. supports: 'inserted, forgotten, key error',
  369. fromZigbee: [fz.xiaomi_lock_report, fz.ignore_basic_change],
  370. toZigbee: [],
  371. },
  372. {
  373. zigbeeModel: ['lumi.vibration.aq1'],
  374. model: 'DJT11LM',
  375. vendor: 'Xiaomi',
  376. description: 'Aqara vibration sensor',
  377. supports: 'drop, tilt and touch',
  378. fromZigbee: [
  379. fz.xiaomi_battery_3v, fz.DJT11LM_vibration, fz.ignore_basic_change, fz.ignore_doorlock_change,
  380. ],
  381. toZigbee: [tz.DJT11LM_vibration_sensitivity],
  382. },
  383. {
  384. zigbeeModel: ['lumi.curtain'],
  385. model: 'ZNCLDJ11LM',
  386. description: 'Aqara curtain motor',
  387. supports: 'open, close, stop, position',
  388. vendor: 'Xiaomi',
  389. fromZigbee: [
  390. fz.ZNCLDJ11LM_curtain_genAnalogOutput_change, fz.ZNCLDJ11LM_curtain_genAnalogOutput_report,
  391. fz.ignore_closuresWindowCovering_change, fz.ignore_closuresWindowCovering_report,
  392. fz.ignore_basic_change, fz.ignore_basic_report,
  393. ],
  394. toZigbee: [tz.ZNCLDJ11LM_control, tz.ZNCLDJ11LM_control_position],
  395. },
  396.  
  397. // IKEA
  398. {
  399. zigbeeModel: [
  400. 'TRADFRI bulb E27 WS opal 980lm', 'TRADFRI bulb E26 WS opal 980lm',
  401. 'TRADFRI bulb E27 WS\uFFFDopal 980lm',
  402. ],
  403. model: 'LED1545G12',
  404. vendor: 'IKEA',
  405. description: 'TRADFRI LED bulb E26/E27 980 lumen, dimmable, white spectrum, opal white',
  406. extend: generic.light_onoff_brightness_colortemp,
  407. },
  408. {
  409. zigbeeModel: ['TRADFRI bulb E27 WS clear 950lm', 'TRADFRI bulb E26 WS clear 950lm'],
  410. model: 'LED1546G12',
  411. vendor: 'IKEA',
  412. description: 'TRADFRI LED bulb E26/E27 950 lumen, dimmable, white spectrum, clear',
  413. extend: generic.light_onoff_brightness_colortemp,
  414. },
  415. {
  416. zigbeeModel: ['TRADFRI bulb E27 opal 1000lm', 'TRADFRI bulb E27 W opal 1000lm'],
  417. model: 'LED1623G12',
  418. vendor: 'IKEA',
  419. description: 'TRADFRI LED bulb E27 1000 lumen, dimmable, opal white',
  420. extend: generic.light_onoff_brightness,
  421. },
  422. {
  423. zigbeeModel: ['TRADFRI bulb GU10 WS 400lm'],
  424. model: 'LED1537R6',
  425. vendor: 'IKEA',
  426. description: 'TRADFRI LED bulb GU10 400 lumen, dimmable, white spectrum',
  427. extend: generic.light_onoff_brightness_colortemp,
  428. },
  429. {
  430. zigbeeModel: ['TRADFRI bulb GU10 W 400lm'],
  431. model: 'LED1650R5',
  432. vendor: 'IKEA',
  433. description: 'TRADFRI LED bulb GU10 400 lumen, dimmable',
  434. extend: generic.light_onoff_brightness,
  435. },
  436. {
  437. zigbeeModel: ['TRADFRI bulb E14 WS opal 400lm', 'TRADFRI bulb E12 WS opal 400lm'],
  438. model: 'LED1536G5',
  439. vendor: 'IKEA',
  440. description: 'TRADFRI LED bulb E12/E14 400 lumen, dimmable, white spectrum, opal white',
  441. extend: generic.light_onoff_brightness_colortemp,
  442. },
  443. {
  444. zigbeeModel: ['TRADFRI bulb E26 opal 1000lm', 'TRADFRI bulb E26 W opal 1000lm'],
  445. model: 'LED1622G12',
  446. vendor: 'IKEA',
  447. description: 'TRADFRI LED bulb E26 1000 lumen, dimmable, opal white',
  448. extend: generic.light_onoff_brightness,
  449. },
  450. {
  451. zigbeeModel: ['TRADFRI bulb E27 CWS opal 600lm', 'TRADFRI bulb E26 CWS opal 600lm'],
  452. model: 'LED1624G9',
  453. vendor: 'IKEA',
  454. description: 'TRADFRI LED bulb E27/E26 600 lumen, dimmable, color, opal white',
  455. extend: generic.light_onoff_brightness_colortemp_colorxy,
  456. },
  457. {
  458. zigbeeModel: [
  459. 'TRADFRI bulb E14 W op/ch 400lm', 'TRADFRI bulb E12 W op/ch 400lm',
  460. 'TRADFRI bulb E17 W op/ch 400lm',
  461. ],
  462. model: 'LED1649C5',
  463. vendor: 'IKEA',
  464. description: 'TRADFRI LED bulb E12/E14/E17 400 lumen, dimmable warm white, chandelier opal',
  465. extend: generic.light_onoff_brightness,
  466. },
  467. {
  468. zigbeeModel: ['TRADFRI wireless dimmer'],
  469. model: 'ICTC-G-1',
  470. vendor: 'IKEA',
  471. description: 'TRADFRI wireless dimmer',
  472. supports: 'brightness [0-255], quick rotate for instant 0/255',
  473. fromZigbee: [
  474. fz.cmd_move, fz.cmd_move_with_onoff, fz.cmd_stop, fz.cmd_stop_with_onoff,
  475. fz.cmd_move_to_level_with_onoff, fz.generic_battery, fz.ignore_power_change,
  476. ],
  477. toZigbee: [],
  478. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  479. const device = shepherd.find(ieeeAddr, 1);
  480. const cfg = {
  481. direction: 0, attrId: 33, dataType: 32, minRepIntval: 0, maxRepIntval: repInterval.MAX, repChange: 0,
  482. };
  483.  
  484. const actions = [
  485. (cb) => device.bind('genLevelCtrl', coordinator, cb),
  486. (cb) => device.bind('genPowerCfg', coordinator, cb),
  487. (cb) => device.foundation('genPowerCfg', 'configReport', [cfg], foundationCfg, cb),
  488. ];
  489. execute(device, actions, callback);
  490. },
  491. },
  492. {
  493. zigbeeModel: ['TRADFRI transformer 10W', 'TRADFRI Driver 10W'],
  494. model: 'ICPSHC24-10EU-IL-1',
  495. vendor: 'IKEA',
  496. description: 'TRADFRI driver for wireless control (10 watt)',
  497. extend: generic.light_onoff_brightness,
  498. },
  499. {
  500. zigbeeModel: ['TRADFRI transformer 30W'],
  501. model: 'ICPSHC24-30EU-IL-1',
  502. vendor: 'IKEA',
  503. description: 'TRADFRI driver for wireless control (30 watt)',
  504. extend: generic.light_onoff_brightness,
  505. },
  506. {
  507. zigbeeModel: ['FLOALT panel WS 30x30'],
  508. model: 'L1527',
  509. vendor: 'IKEA',
  510. description: 'FLOALT LED light panel, dimmable, white spectrum (30x30 cm)',
  511. extend: generic.light_onoff_brightness_colortemp,
  512. },
  513. {
  514. zigbeeModel: ['FLOALT panel WS 60x60'],
  515. model: 'L1529',
  516. vendor: 'IKEA',
  517. description: 'FLOALT LED light panel, dimmable, white spectrum (60x60 cm)',
  518. extend: generic.light_onoff_brightness_colortemp,
  519. },
  520. {
  521. zigbeeModel: ['FLOALT panel WS 30x90'],
  522. model: 'L1528',
  523. vendor: 'IKEA',
  524. description: 'FLOALT LED light panel, dimmable, white spectrum (30x90 cm)',
  525. extend: generic.light_onoff_brightness_colortemp,
  526. },
  527. {
  528. zigbeeModel: ['SURTE door WS 38x64'],
  529. model: 'L1531',
  530. vendor: 'IKEA',
  531. description: 'SURTE door light panel, dimmable, white spectrum (38x64 cm)',
  532. extend: generic.light_onoff_brightness_colortemp,
  533. },
  534. {
  535. zigbeeModel: ['TRADFRI control outlet'],
  536. model: 'E1603',
  537. description: 'TRADFRI control outlet',
  538. supports: 'on/off',
  539. vendor: 'IKEA',
  540. fromZigbee: [fz.ignore_onoff_change, fz.generic_state],
  541. toZigbee: [tz.on_off],
  542. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  543. const device = shepherd.find(ieeeAddr, 1);
  544. const cfg = {direction: 0, attrId: 0, dataType: 16, minRepIntval: 0, maxRepIntval: 1000, repChange: 0};
  545. const actions = [
  546. (cb) => device.bind('genOnOff', coordinator, cb),
  547. (cb) => device.foundation('genOnOff', 'configReport', [cfg], foundationCfg, cb),
  548. ];
  549.  
  550. execute(device, actions, callback);
  551. },
  552. },
  553. {
  554. zigbeeModel: ['TRADFRI remote control'],
  555. model: 'E1524',
  556. description: 'TRADFRI remote control',
  557. supports:
  558. 'toggle, arrow left/right click/hold/release, brightness up/down click/hold/release ' +
  559. '(**[requires additional setup!]' +
  560. '(https://github.com/Koenkk/zigbee2mqtt/blob/dev/docs/getting_started/pairing_devices.md)**)',
  561. vendor: 'IKEA',
  562. fromZigbee: [
  563. fz.E1524_toggle, fz.E1524_arrow_click, fz.E1524_arrow_hold, fz.E1524_arrow_release,
  564. fz.E1524_brightness_up_click, fz.E1524_brightness_down_click, fz.E1524_brightness_up_hold,
  565. fz.E1524_brightness_up_release, fz.E1524_brightness_down_hold, fz.E1524_brightness_down_release,
  566. ],
  567. toZigbee: [],
  568. },
  569.  
  570. // Philips
  571. {
  572. zigbeeModel: ['LLC012', 'LLC011'],
  573. model: '7299760PH',
  574. vendor: 'Philips',
  575. description: 'Hue Bloom',
  576. extend: hue.light_onoff_brightness_colorxy,
  577. },
  578. {
  579. zigbeeModel: ['LLC020'],
  580. model: '7146060PH',
  581. vendor: 'Philips',
  582. description: 'Hue Go',
  583. extend: hue.light_onoff_brightness_colortemp_colorxy,
  584. },
  585. {
  586. zigbeeModel: ['LWB004'],
  587. model: '433714',
  588. vendor: 'Philips',
  589. description: 'Hue Lux A19 bulb E27',
  590. extend: hue.light_onoff_brightness,
  591. },
  592. {
  593. zigbeeModel: ['LWB006', 'LWB014'],
  594. model: '9290011370',
  595. vendor: 'Philips',
  596. description: 'Hue white A60 bulb E27',
  597. extend: hue.light_onoff_brightness,
  598. },
  599. {
  600. zigbeeModel: ['LWB010'],
  601. model: '8718696449691',
  602. vendor: 'Philips',
  603. description: 'Hue White Single bulb B22',
  604. extend: hue.light_onoff_brightness,
  605. },
  606. {
  607. zigbeeModel: ['LST001'],
  608. model: '7299355PH',
  609. vendor: 'Philips',
  610. description: 'Hue white and color ambiance LightStrip',
  611. extend: hue.light_onoff_brightness_colorxy,
  612. },
  613. {
  614. zigbeeModel: ['LST002'],
  615. model: '915005106701',
  616. vendor: 'Philips',
  617. description: 'Hue white and color ambiance LightStrip plus',
  618. extend: hue.light_onoff_brightness_colortemp_colorxy,
  619. },
  620. {
  621. zigbeeModel: ['LCT001', 'LCT007', 'LCT010', 'LCT012', 'LCT014', 'LCT015', 'LCT016'],
  622. model: '9290012573A',
  623. vendor: 'Philips',
  624. description: 'Hue white and color ambiance E26/E27/E14',
  625. extend: hue.light_onoff_brightness_colortemp_colorxy,
  626. },
  627. {
  628. zigbeeModel: ['LCT002'],
  629. model: '9290002579A',
  630. vendor: 'Philips',
  631. description: 'Hue white and color ambiance BR30',
  632. extend: hue.light_onoff_brightness_colortemp_colorxy,
  633. },
  634. {
  635. zigbeeModel: ['LCT003'],
  636. model: '8718696485880',
  637. vendor: 'Philips',
  638. description: 'Hue white and color ambiance GU10',
  639. extend: hue.light_onoff_brightness_colortemp_colorxy,
  640. },
  641. {
  642. zigbeeModel: ['LCT024'],
  643. model: '915005733701',
  644. vendor: 'Philips',
  645. description: 'Hue White and color ambiance Play Lightbar',
  646. extend: hue.light_onoff_brightness_colortemp_colorxy,
  647. },
  648. {
  649. zigbeeModel: ['LTW011'],
  650. model: '464800',
  651. vendor: 'Philips',
  652. description: 'Hue white ambiance BR30 flood light',
  653. extend: hue.light_onoff_brightness_colortemp,
  654. },
  655. {
  656. zigbeeModel: ['LTW012'],
  657. model: '8718696695203',
  658. vendor: 'Philips',
  659. description: 'Hue white ambiance E14',
  660. extend: hue.light_onoff_brightness_colortemp,
  661. },
  662. {
  663. zigbeeModel: ['LTW013'],
  664. model: '8718696598283',
  665. vendor: 'Philips',
  666. description: 'Hue white ambiance GU10',
  667. extend: hue.light_onoff_brightness_colortemp,
  668. },
  669. {
  670. zigbeeModel: ['LTW010', 'LTW001', 'LTW004'],
  671. model: '8718696548738',
  672. vendor: 'Philips',
  673. description: 'Hue white ambiance E26/E27',
  674. extend: hue.light_onoff_brightness_colortemp,
  675. },
  676. {
  677. zigbeeModel: ['LTC001'],
  678. model: '3261030P7',
  679. vendor: 'Philips',
  680. description: 'Hue Being',
  681. extend: hue.light_onoff_brightness_colortemp,
  682. },
  683. {
  684. zigbeeModel: ['LTC003'],
  685. model: '3261331P7',
  686. vendor: 'Philips',
  687. description: 'Hue white ambiance Still',
  688. extend: hue.light_onoff_brightness_colortemp,
  689. },
  690. {
  691. zigbeeModel: ['LTC015'],
  692. model: '3216331P5',
  693. vendor: 'Philips',
  694. description: 'Hue white ambiance Aurelle rectangle panel light',
  695. extend: hue.light_onoff_brightness_colortemp,
  696. },
  697. {
  698. zigbeeModel: ['LTC016'],
  699. model: '3216431P5',
  700. vendor: 'Philips',
  701. description: 'Hue white ambiance Aurelle round panel light',
  702. extend: hue.light_onoff_brightness_colortemp,
  703. },
  704. {
  705. zigbeeModel: ['LLC010'],
  706. model: '7199960PH',
  707. vendor: 'Philips',
  708. description: 'Hue Iris',
  709. extend: hue.light_onoff_brightness_colorxy,
  710. },
  711. {
  712. zigbeeModel: ['RWL020', 'RWL021'],
  713. model: '324131092621',
  714. vendor: 'Philips',
  715. description: 'Hue dimmer switch',
  716. supports: 'on/off',
  717. fromZigbee: [
  718. fz._324131092621_on, fz._324131092621_off, fz._324131092621_step, fz._324131092621_stop,
  719. fz.ignore_power_change, fz.hue_battery,
  720. ],
  721. toZigbee: [],
  722. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  723. const ep1 = shepherd.find(ieeeAddr, 1);
  724. const actions = [
  725. (cb) => ep1.bind('genOnOff', coordinator, cb),
  726. (cb) => ep1.bind('genLevelCtrl', coordinator, cb),
  727. ];
  728.  
  729. execute(ep1, actions, (result) => {
  730. if (result) {
  731. const ep2 = shepherd.find(ieeeAddr, 2);
  732. const actions = [
  733. (cb) => ep2.bind('genPowerCfg', coordinator, cb),
  734. (cb) => ep2.report('genPowerCfg', 'batteryPercentageRemaining', 0, 1000, 0, cb),
  735. ];
  736.  
  737. execute(ep2, actions, callback);
  738. } else {
  739. callback(result);
  740. }
  741. });
  742. },
  743. },
  744. {
  745. zigbeeModel: ['SML001'],
  746. model: '9290012607',
  747. vendor: 'Philips',
  748. description: 'Hue motion sensor',
  749. supports: 'occupancy, temperature, illuminance',
  750. fromZigbee: [
  751. fz.hue_battery, fz.generic_occupancy, fz.generic_temperature,
  752. fz.ignore_occupancy_change, fz.generic_illuminance, fz.ignore_illuminance_change,
  753. fz.ignore_temperature_change,
  754. ],
  755. toZigbee: [tz.generic_occupancy_timeout],
  756. ep: (device) => {
  757. return {
  758. '': 2, // default
  759. 'ep1': 1,
  760. 'ep2': 2, // e.g. for write to msOccupancySensing
  761. };
  762. },
  763. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  764. const device = shepherd.find(ieeeAddr, 2);
  765.  
  766. const actions = [
  767. (cb) => device.bind('genPowerCfg', coordinator, cb),
  768. (cb) => device.bind('msIlluminanceMeasurement', coordinator, cb),
  769. (cb) => device.bind('msTemperatureMeasurement', coordinator, cb),
  770. (cb) => device.bind('msOccupancySensing', coordinator, cb),
  771. (cb) => device.report('genPowerCfg', 'batteryPercentageRemaining', 0, 1000, 0, cb),
  772. (cb) => device.report('msOccupancySensing', 'occupancy', 0, 600, null, cb),
  773. (cb) => device.report('msTemperatureMeasurement', 'measuredValue', 30, 600, 1, cb),
  774. (cb) => device.report('msIlluminanceMeasurement', 'measuredValue', 0, 600, null, cb),
  775. ];
  776.  
  777. execute(device, actions, callback);
  778. },
  779. },
  780.  
  781. // Belkin
  782. {
  783. zigbeeModel: ['MZ100'],
  784. model: 'F7C033',
  785. vendor: 'Belkin',
  786. description: 'WeMo smart LED bulb',
  787. extend: generic.light_onoff_brightness,
  788. },
  789.  
  790. // EDP
  791. {
  792. zigbeeModel: ['ZB-SmartPlug-1.0.0'],
  793. model: 'PLUG EDP RE:DY',
  794. vendor: 'EDP',
  795. description: 're:dy plug',
  796. supports: 'on/off, power measurement',
  797. fromZigbee: [fz.ignore_onoff_change, fz.EDP_power, fz.ignore_metering_change],
  798. toZigbee: [tz.on_off],
  799. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  800. const device = shepherd.find(ieeeAddr, 85);
  801. execute(device, [(cb) => device.report('seMetering', 'instantaneousDemand', 10, 60, 1, cb)], callback);
  802. },
  803. },
  804.  
  805. // Custom devices (DiY)
  806. {
  807. zigbeeModel: ['lumi.router'],
  808. model: 'CC2530.ROUTER',
  809. vendor: 'Custom devices (DiY)',
  810. description: '[CC2530 router](http://ptvo.info/cc2530-based-zigbee-coordinator-and-router-112/)',
  811. supports: 'state, description, type, rssi',
  812. fromZigbee: [fz.CC2530ROUTER_state, fz.CC2530ROUTER_meta, fz.ignore_onoff_change],
  813. toZigbee: [],
  814. },
  815. {
  816. zigbeeModel: ['DNCKAT_S001'],
  817. model: 'DNCKATSW001',
  818. vendor: 'Custom devices (DiY)',
  819. description: '[DNCKAT single key wired wall light switch](https://github.com/dzungpv/dnckatsw00x/)',
  820. supports: 'on/off',
  821. fromZigbee: [fz.generic_state, fz.ignore_onoff_change],
  822. toZigbee: [tz.on_off],
  823. },
  824. {
  825. zigbeeModel: ['DNCKAT_S002'],
  826. model: 'DNCKATSW002',
  827. vendor: 'Custom devices (DiY)',
  828. description: '[DNCKAT double key wired wall light switch](https://github.com/dzungpv/dnckatsw00x/)',
  829. supports: 'hold/release, on/off',
  830. fromZigbee: [fz.DNCKAT_S00X_state, fz.DNCKAT_S00X_buttons],
  831. toZigbee: [tz.on_off],
  832. ep: (device) => {
  833. return {'left': 1, 'right': 2};
  834. },
  835. },
  836. {
  837. zigbeeModel: ['DNCKAT_S003'],
  838. model: 'DNCKATSW003',
  839. vendor: 'Custom devices (DiY)',
  840. description: '[DNCKAT triple key wired wall light switch](https://github.com/dzungpv/dnckatsw00x/)',
  841. supports: 'hold/release, on/off',
  842. fromZigbee: [fz.DNCKAT_S00X_state, fz.DNCKAT_S00X_buttons],
  843. toZigbee: [tz.on_off],
  844. ep: (device) => {
  845. return {'left': 1, 'center': 2, 'right': 3};
  846. },
  847. },
  848. {
  849. zigbeeModel: ['DNCKAT_S004'],
  850. model: 'DNCKATSW004',
  851. vendor: 'Custom devices (DiY)',
  852. description: '[DNCKAT quadruple key wired wall light switch](https://github.com/dzungpv/dnckatsw00x/)',
  853. supports: 'hold/release, on/off',
  854. fromZigbee: [fz.DNCKAT_S00X_state, fz.DNCKAT_S00X_buttons],
  855. toZigbee: [tz.on_off],
  856. ep: (device) => {
  857. return {'bottom_left': 1, 'bottom_right': 2, 'top_left': 3, 'top_right': 4};
  858. },
  859. },
  860.  
  861. // eCozy
  862. {
  863. zigbeeModel: ['Thermostat'],
  864. model: '1TST-EU',
  865. vendor: 'eCozy',
  866. description: 'Smart heating thermostat',
  867. supports: 'temperature, occupancy, un-/occupied heating, schedule',
  868. fromZigbee: [
  869. fz.ignore_basic_change, fz.generic_battery_voltage,
  870. fz.thermostat_att_report, fz.thermostat_dev_change,
  871. ],
  872. toZigbee: [
  873. tz.factory_reset, tz.thermostat_local_temperature, tz.thermostat_local_temperature_calibration,
  874. tz.thermostat_occupancy, tz.thermostat_occupied_heating_setpoint,
  875. tz.thermostat_unoccupied_heating_setpoint, tz.thermostat_setpoint_raise_lower,
  876. tz.thermostat_remote_sensing, tz.thermostat_control_sequence_of_operation, tz.thermostat_system_mode,
  877. tz.thermostat_weekly_schedule, tz.thermostat_clear_weekly_schedule, tz.thermostat_weekly_schedule_rsp,
  878. tz.thermostat_relay_status_log, tz.thermostat_relay_status_log_rsp,
  879. ],
  880. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  881. const device = shepherd.find(ieeeAddr, 3);
  882. const actions = [
  883. // from https://github.com/ckpt-martin/Hubitat/blob/master/eCozy/eCozy-ZigBee-Thermostat-Driver.groovy
  884. (cb) => device.bind('genBasic', coordinator, cb),
  885. (cb) => device.bind('genPowerCfg', coordinator, cb),
  886. (cb) => device.bind('genIdentify', coordinator, cb),
  887. (cb) => device.bind('genTime', coordinator, cb),
  888. (cb) => device.bind('genPollCtrl', coordinator, cb),
  889. (cb) => device.bind('hvacThermostat', coordinator, cb),
  890. (cb) => device.bind('hvacUserInterfaceCfg', coordinator, cb),
  891. (cb) => device.report('hvacThermostat', 'localTemp', 5, 30, 0, cb),
  892. ];
  893.  
  894. execute(device, actions, callback);
  895. },
  896. },
  897.  
  898. // OSRAM
  899. {
  900. zigbeeModel: ['Outdoor Lantern W RGBW OSRAM'],
  901. model: '4058075816718',
  902. vendor: 'OSRAM',
  903. description: 'SMART+ outdoor wall lantern RGBW',
  904. extend: generic.light_onoff_brightness_colortemp_colorxy,
  905. },
  906. {
  907. zigbeeModel: ['Classic A60 RGBW'],
  908. model: 'AA69697',
  909. vendor: 'OSRAM',
  910. description: 'Classic A60 RGBW',
  911. extend: generic.light_onoff_brightness_colortemp_colorxy,
  912. },
  913. {
  914. zigbeeModel: ['CLA60 RGBW OSRAM'],
  915. model: 'AC03645',
  916. vendor: 'OSRAM',
  917. description: 'LIGHTIFY LED CLA60 E27 RGBW',
  918. extend: generic.light_onoff_brightness_colortemp_colorxy,
  919. },
  920. {
  921. zigbeeModel: ['CLA60 TW OSRAM'],
  922. model: 'AC03642',
  923. vendor: 'OSRAM',
  924. description: 'SMART+ CLASSIC A 60 TW',
  925. extend: generic.light_onoff_brightness_colortemp,
  926. },
  927. {
  928. // AA70155 is model number of both bulbs.
  929. zigbeeModel: ['LIGHTIFY A19 Tunable White', 'Classic A60 TW'],
  930. model: 'AA70155',
  931. vendor: 'OSRAM',
  932. description: 'LIGHTIFY LED A19 tunable white / Classic A60 TW',
  933. extend: generic.light_onoff_brightness_colortemp,
  934. },
  935. {
  936. zigbeeModel: ['PAR16 50 TW'],
  937. model: 'AA68199',
  938. vendor: 'OSRAM',
  939. description: 'LIGHTIFY LED PAR16 50 GU10 tunable white',
  940. extend: generic.light_onoff_brightness_colortemp,
  941. },
  942. {
  943. zigbeeModel: ['Classic B40 TW - LIGHTIFY'],
  944. model: 'AB32840',
  945. vendor: 'OSRAM',
  946. description: 'LIGHTIFY LED Classic B40 tunable white',
  947. extend: generic.light_onoff_brightness_colortemp,
  948. },
  949. {
  950. zigbeeModel: ['Ceiling TW OSRAM'],
  951. model: '4058075816794',
  952. vendor: 'OSRAM',
  953. description: 'Smart+ Ceiling TW',
  954. extend: generic.light_onoff_brightness_colortemp,
  955. },
  956. {
  957. zigbeeModel: ['Classic A60 W clear - LIGHTIFY'],
  958. model: 'AC03641',
  959. vendor: 'OSRAM',
  960. description: 'LIGHTIFY LED Classic A60 clear',
  961. extend: generic.light_onoff_brightness,
  962. },
  963. {
  964. zigbeeModel: ['Surface Light W �C LIGHTIFY'],
  965. model: '4052899926158',
  966. vendor: 'OSRAM',
  967. description: 'LIGHTIFY Surface Light TW',
  968. extend: generic.light_onoff_brightness,
  969. },
  970. {
  971. zigbeeModel: ['Surface Light TW'],
  972. model: 'AB401130055',
  973. vendor: 'OSRAM',
  974. description: 'LIGHTIFY Surface Light LED Tunable White',
  975. extend: generic.light_onoff_brightness_colortemp,
  976. },
  977. {
  978. zigbeeModel: ['Plug 01'],
  979. model: 'AB3257001NJ',
  980. description: 'Smart+ plug',
  981. supports: 'on/off',
  982. vendor: 'OSRAM',
  983. fromZigbee: [fz.ignore_onoff_change, fz.generic_state],
  984. toZigbee: [tz.on_off],
  985. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  986. const device = shepherd.find(ieeeAddr, 3);
  987. const cfg = {direction: 0, attrId: 0, dataType: 16, minRepIntval: 0, maxRepIntval: 1000, repChange: 0};
  988. const actions = [
  989. (cb) => device.bind('genOnOff', coordinator, cb),
  990. (cb) => device.foundation('genOnOff', 'configReport', [cfg], foundationCfg, cb),
  991. ];
  992.  
  993. execute(device, actions, callback);
  994. },
  995. },
  996. {
  997. zigbeeModel: ['Flex RGBW', 'LIGHTIFY Indoor Flex RGBW'],
  998. model: '4052899926110',
  999. vendor: 'OSRAM',
  1000. description: 'Flex RGBW',
  1001. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1002. },
  1003. {
  1004. zigbeeModel: ['LIGHTIFY Outdoor Flex RGBW'],
  1005. model: '4058075036185',
  1006. vendor: 'OSRAM',
  1007. description: 'Outdoor Flex RGBW',
  1008. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1009. },
  1010. {
  1011. zigbeeModel: ['Gardenpole RGBW-Lightify'],
  1012. model: '4058075036147',
  1013. vendor: 'OSRAM',
  1014. description: 'Smart+ Gardenpole RGBW',
  1015. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1016. },
  1017. {
  1018. zigbeeModel: ['PAR 16 50 RGBW - LIGHTIFY'],
  1019. model: 'AB35996',
  1020. vendor: 'OSRAM',
  1021. description: 'Smart+ Spot GU10 Multicolor',
  1022. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1023. },
  1024. {
  1025. zigbeeModel: ['B40 DIM Z3'],
  1026. model: 'AC08562',
  1027. vendor: 'OSRAM',
  1028. description: 'SMART+ Candle E14 Dimmable White',
  1029. extend: generic.light_onoff_brightness,
  1030. },
  1031. {
  1032. zigbeeModel: ['Motion Sensor-A'],
  1033. model: 'AC01353010G',
  1034. vendor: 'OSRAM',
  1035. description: 'SMART+ Motion Sensor',
  1036. supports: 'occupancy and temperature',
  1037. fromZigbee: [
  1038. fz.generic_temperature, fz.ignore_temperature_change, fz.ias_zone_motion_dev_change,
  1039. fz.ias_zone_motion_status_change,
  1040. ],
  1041. toZigbee: [],
  1042. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1043. const device = shepherd.find(ieeeAddr, 1);
  1044. const actions = [
  1045. (cb) => device.write('ssIasZone', 'iasCieAddr', coordinator.device.getIeeeAddr(), cb),
  1046. (cb) => device.functional('ssIasZone', 'enrollRsp', {enrollrspcode: 0, zoneid: 23}, cb),
  1047. (cb) => device.bind('msTemperatureMeasurement', coordinator, cb),
  1048. (cb) => device.report('msTemperatureMeasurement', 'measuredValue', 30, 600, 1, cb),
  1049. (cb) => device.bind('genPowerCfg', coordinator, cb),
  1050. (cb) => device.report('genPowerCfg', 'batteryPercentageRemaining', 0, 1000, 0, cb),
  1051. ];
  1052. execute(device, actions, callback);
  1053. },
  1054. },
  1055. {
  1056. zigbeeModel: ['MR16 TW OSRAM'],
  1057. model: 'AC03648',
  1058. vendor: 'OSRAM',
  1059. description: 'SMART+ spot GU5.3 tunable white',
  1060. extend: generic.light_onoff_brightness_colortemp,
  1061. },
  1062. {
  1063. zigbeeModel: ['Lightify Switch Mini', 'Lightify Switch Mini\u0000'],
  1064. model: 'AC0251100NJ',
  1065. vendor: 'OSRAM',
  1066. description: 'Smart+ switch mini',
  1067. supports: 'on/off, brightness',
  1068. fromZigbee: [
  1069. fz.AC0251100NJ_on, fz.AC0251100NJ_off, fz.AC0251100NJ_long_middle,
  1070. fz.cmd_stop, fz.cmd_move, fz.cmd_move_with_onoff,
  1071. fz.cmd_move_to_level_with_onoff, fz.generic_batteryvoltage_3000_2500,
  1072. ],
  1073. toZigbee: [],
  1074. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1075. const device = shepherd.find(ieeeAddr, 1);
  1076. const actions = [
  1077. (cb) => device.bind('genOnOff', coordinator, cb),
  1078. (cb) => device.bind('lightingColorCtrl', coordinator, cb),
  1079. (cb) => device.bind('genLevelCtrl', coordinator, cb),
  1080. (cb) => device.bind('genPowerCfg', coordinator, cb),
  1081. (cb) => device.report('genPowerCfg', 'batteryVoltage', 900, 3600, 0, cb),
  1082. ];
  1083. execute(device, actions, callback);
  1084. },
  1085.  
  1086. },
  1087.  
  1088. // Hive
  1089. {
  1090. zigbeeModel: ['FWBulb01'],
  1091. model: 'HALIGHTDIMWWE27',
  1092. vendor: 'Hive',
  1093. description: 'Active smart bulb white LED (E27)',
  1094. extend: generic.light_onoff_brightness,
  1095. },
  1096. {
  1097. zigbeeModel: ['FWBulb02UK'],
  1098. model: 'HALIGHTDIMWWB22',
  1099. vendor: 'Hive',
  1100. description: 'Active smart bulb white LED (B22)',
  1101. extend: generic.light_onoff_brightness,
  1102. },
  1103.  
  1104. // Innr
  1105. {
  1106. zigbeeModel: ['RB 185 C'],
  1107. model: 'RB 185 C',
  1108. vendor: 'Innr',
  1109. description: 'E27 Bulb RGBW',
  1110. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1111. },
  1112. {
  1113. zigbeeModel: ['BY 185 C'],
  1114. model: 'BY 185 C',
  1115. vendor: 'Innr',
  1116. description: 'B22 Bulb RGBW',
  1117. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1118. },
  1119. {
  1120. zigbeeModel: ['RB 285 C'],
  1121. model: 'RB 285 C',
  1122. vendor: 'Innr',
  1123. description: 'E27 Bulb RGBW',
  1124. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1125. },
  1126. {
  1127. zigbeeModel: ['RB 165'],
  1128. model: 'RB 165',
  1129. vendor: 'Innr',
  1130. description: 'E27 Bulb',
  1131. extend: generic.light_onoff_brightness,
  1132. },
  1133. {
  1134. zigbeeModel: ['RB 175 W'],
  1135. model: 'RB 175 W',
  1136. vendor: 'Innr',
  1137. description: 'E27 Bulb warm dimming',
  1138. extend: generic.light_onoff_brightness,
  1139. },
  1140. {
  1141. zigbeeModel: ['RB 178 T'],
  1142. model: 'RB 178 T',
  1143. vendor: 'Innr',
  1144. description: 'Smart bulb tunable white E27',
  1145. extend: generic.light_onoff_brightness_colortemp,
  1146. },
  1147. {
  1148. zigbeeModel: ['RS 125'],
  1149. model: 'RS 125',
  1150. vendor: 'Innr',
  1151. description: 'GU10 Spot',
  1152. extend: generic.light_onoff_brightness,
  1153. },
  1154. {
  1155. zigbeeModel: ['RS 128 T'],
  1156. model: 'RS 128 T',
  1157. vendor: 'Innr',
  1158. description: 'GU10 Spot 350 lm, dimmable, white spectrum',
  1159. extend: generic.light_onoff_brightness_colortemp,
  1160. },
  1161. {
  1162. zigbeeModel: ['RB 145'],
  1163. model: 'RB 145',
  1164. vendor: 'Innr',
  1165. description: 'E14 Candle',
  1166. extend: generic.light_onoff_brightness,
  1167. },
  1168. {
  1169. zigbeeModel: ['RB 248 T'],
  1170. model: 'RB 248 T',
  1171. vendor: 'Innr',
  1172. description: 'E14 Candle with white spectrum',
  1173. extend: generic.light_onoff_brightness_colortemp,
  1174. },
  1175. {
  1176. zigbeeModel: ['BY 165', 'BY 265'],
  1177. model: 'BY 165',
  1178. vendor: 'Innr',
  1179. description: 'B22 Bulb dimmable',
  1180. extend: generic.light_onoff_brightness,
  1181. },
  1182. {
  1183. zigbeeModel: ['PL 110'],
  1184. model: 'PL 110',
  1185. vendor: 'Innr',
  1186. description: 'Puck Light',
  1187. extend: generic.light_onoff_brightness,
  1188. },
  1189. {
  1190. zigbeeModel: ['ST 110'],
  1191. model: 'ST 110',
  1192. vendor: 'Innr',
  1193. description: 'Strip Light',
  1194. extend: generic.light_onoff_brightness,
  1195. },
  1196. {
  1197. zigbeeModel: ['UC 110'],
  1198. model: 'UC 110',
  1199. vendor: 'Innr',
  1200. description: 'Under Cabinet Light',
  1201. extend: generic.light_onoff_brightness,
  1202. },
  1203. {
  1204. zigbeeModel: ['DL 110 N'],
  1205. model: 'DL 110 N',
  1206. vendor: 'Innr',
  1207. description: 'Spot narrow',
  1208. extend: generic.light_onoff_brightness,
  1209. },
  1210. {
  1211. zigbeeModel: ['DL 110 W'],
  1212. model: 'DL 110 W',
  1213. vendor: 'Innr',
  1214. description: 'Spot wide',
  1215. extend: generic.light_onoff_brightness,
  1216. },
  1217. {
  1218. zigbeeModel: ['SL 110 N'],
  1219. model: 'SL 110 N',
  1220. vendor: 'Innr',
  1221. description: 'Spot Flex narrow',
  1222. extend: generic.light_onoff_brightness,
  1223. },
  1224. {
  1225. zigbeeModel: ['SL 110 M'],
  1226. model: 'SL 110 M',
  1227. vendor: 'Innr',
  1228. description: 'Spot Flex medium',
  1229. extend: generic.light_onoff_brightness,
  1230. },
  1231. {
  1232. zigbeeModel: ['SL 110 W'],
  1233. model: 'SL 110 W',
  1234. vendor: 'Innr',
  1235. description: 'Spot Flex wide',
  1236. extend: generic.light_onoff_brightness,
  1237. },
  1238. {
  1239. zigbeeModel: ['SP 120'],
  1240. model: 'SP 120',
  1241. vendor: 'Innr',
  1242. description: 'Smart plug',
  1243. supports: 'on/off, power measurement',
  1244. fromZigbee: [fz.ignore_electrical_change, fz.SP120_power, fz.generic_state, fz.ignore_onoff_change],
  1245. toZigbee: [tz.on_off],
  1246. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1247. const device = shepherd.find(ieeeAddr, 1);
  1248. const onOff = {direction: 0, attrId: 0, dataType: 16, minRepIntval: 0, maxRepIntval: 1000, repChange: 0};
  1249. const activePower = {
  1250. direction: 0, attrId: 1291, dataType: 41, minRepIntval: 1, maxRepIntval: 300, repChange: 1,
  1251. };
  1252.  
  1253. const rmsCurrent = {
  1254. direction: 0, attrId: 1288, dataType: 33, minRepIntval: 1, maxRepIntval: 300, repChange: 100,
  1255. };
  1256.  
  1257. const rmsVoltage = {
  1258. direction: 0, attrId: 1285, dataType: 33, minRepIntval: 1, maxRepIntval: 300, repChange: 1,
  1259. };
  1260.  
  1261. const electricalCfg = [rmsCurrent, rmsVoltage, activePower];
  1262. const actions = [
  1263. (cb) => device.foundation('genOnOff', 'configReport', [onOff], foundationCfg, cb),
  1264. (cb) => device.bind('genOnOff', coordinator, cb),
  1265. (cb) => device.foundation('haElectricalMeasurement', 'configReport', electricalCfg, foundationCfg, cb),
  1266. (cb) => device.bind('haElectricalMeasurement', coordinator, cb),
  1267. ];
  1268.  
  1269. execute(device, actions, callback);
  1270. },
  1271. },
  1272.  
  1273. // Sylvania
  1274. {
  1275. zigbeeModel: ['LIGHTIFY RT Tunable White'],
  1276. model: '73742',
  1277. vendor: 'Sylvania',
  1278. description: 'LIGHTIFY LED adjustable white RT 5/6',
  1279. extend: generic.light_onoff_brightness_colortemp,
  1280. },
  1281. {
  1282. zigbeeModel: ['LIGHTIFY BR Tunable White'],
  1283. model: '73740',
  1284. vendor: 'Sylvania',
  1285. description: 'LIGHTIFY LED adjustable white BR30',
  1286. extend: generic.light_onoff_brightness_colortemp,
  1287. },
  1288. {
  1289. zigbeeModel: ['LIGHTIFY A19 RGBW'],
  1290. model: '73693',
  1291. vendor: 'Sylvania',
  1292. description: 'LIGHTIFY LED RGBW A19',
  1293. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1294. },
  1295. {
  1296. zigbeeModel: ['LIGHTIFY A19 ON/OFF/DIM', 'LIGHTIFY A19 ON/OFF/DIM 10 Year'],
  1297. model: '74283',
  1298. vendor: 'Sylvania',
  1299. description: 'LIGHTIFY LED soft white dimmable A19',
  1300. extend: generic.light_onoff_brightness,
  1301. },
  1302. {
  1303. zigbeeModel: ['A19 W 10 year'],
  1304. model: '74696',
  1305. vendor: 'Sylvania',
  1306. description: 'LIGHTIFY LED soft white dimmable A19',
  1307. extend: generic.light_onoff_brightness,
  1308. },
  1309. {
  1310. zigbeeModel: ['PLUG'],
  1311. model: '72922-A',
  1312. vendor: 'Sylvania',
  1313. description: 'SMART+ Smart Plug',
  1314. supports: 'on/off',
  1315. fromZigbee: [fz.ignore_onoff_change, fz.generic_state],
  1316. toZigbee: [tz.on_off],
  1317. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1318. const device = shepherd.find(ieeeAddr, 1);
  1319. const cfg = {direction: 0, attrId: 0, dataType: 16, minRepIntval: 0, maxRepIntval: 1000, repChange: 0};
  1320. const actions = [
  1321. (cb) => device.bind('genOnOff', coordinator, cb),
  1322. (cb) => device.foundation('genOnOff', 'configReport', [cfg], foundationCfg, cb),
  1323. ];
  1324.  
  1325. execute(device, actions, callback);
  1326. },
  1327. },
  1328. {
  1329. zigbeeModel: ['A19 TW 10 year'],
  1330. model: '71831',
  1331. vendor: 'Sylvania',
  1332. description: 'Smart Home adjustable white A19 LED bulb',
  1333. extend: generic.light_onoff_brightness_colortemp,
  1334. },
  1335. {
  1336. zigbeeModel: ['MR16 TW'],
  1337. model: '74282',
  1338. vendor: 'Sylvania',
  1339. description: 'Smart Home adjustable white MR16 LED bulb',
  1340. extend: generic.light_onoff_brightness_colortemp,
  1341. },
  1342. {
  1343. zigbeeModel: ['LIGHTIFY Gardenspot RGB'],
  1344. model: 'LTFY004',
  1345. vendor: 'Sylvania',
  1346. description: 'LIGHTIFY LED gardenspot mini RGB',
  1347. extend: generic.light_onoff_brightness_colorxy,
  1348. },
  1349.  
  1350. // GE
  1351. {
  1352. zigbeeModel: ['ZLL Light'],
  1353. model: '22670',
  1354. vendor: 'GE',
  1355. description: 'Link smart LED light bulb, BR30 soft white (2700K)',
  1356. extend: generic.light_onoff_brightness,
  1357. },
  1358. {
  1359. zigbeeModel: ['45852'],
  1360. model: '45852GE',
  1361. vendor: 'GE',
  1362. description: 'ZigBee plug-in smart dimmer',
  1363. supports: 'on/off, brightness',
  1364. fromZigbee: [fz.light_brightness, fz.ignore_onoff_change, fz.generic_state],
  1365. toZigbee: [tz.on_off, tz.light_brightness, tz.ignore_transition],
  1366. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1367. const cfg = {direction: 0, attrId: 0, dataType: 16, minRepIntval: 0, maxRepIntval: 1000, repChange: 0};
  1368. const device = shepherd.find(ieeeAddr, 1);
  1369. const actions = [
  1370. (cb) => device.bind('genOnOff', coordinator, cb),
  1371. (cb) => device.foundation('genOnOff', 'configReport', [cfg], foundationCfg, cb),
  1372. ];
  1373.  
  1374. execute(device, actions, callback);
  1375. },
  1376. },
  1377. {
  1378. zigbeeModel: ['45856'],
  1379. model: '45856GE',
  1380. vendor: 'GE',
  1381. description: 'In-wall smart switch',
  1382. supports: 'on/off',
  1383. fromZigbee: [fz.ignore_onoff_change, fz.generic_state],
  1384. toZigbee: [tz.on_off, tz.ignore_transition],
  1385. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1386. const cfg = {direction: 0, attrId: 0, dataType: 16, minRepIntval: 0, maxRepIntval: 1000, repChange: 0};
  1387. const device = shepherd.find(ieeeAddr, 1);
  1388. const actions = [
  1389. (cb) => device.bind('genOnOff', coordinator, cb),
  1390. (cb) => device.foundation('genOnOff', 'configReport', [cfg], foundationCfg, cb),
  1391. ];
  1392.  
  1393. execute(device, actions, callback);
  1394. },
  1395. },
  1396. {
  1397. zigbeeModel: ['45857'],
  1398. model: '45857GE',
  1399. vendor: 'GE',
  1400. description: 'ZigBee in-wall smart dimmer',
  1401. supports: 'on/off, brightness',
  1402. fromZigbee: [fz.light_brightness, fz.ignore_onoff_change, fz.generic_state],
  1403. toZigbee: [tz.on_off, tz.light_brightness, tz.ignore_transition],
  1404. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1405. const cfg = {direction: 0, attrId: 0, dataType: 16, minRepIntval: 0, maxRepIntval: 1000, repChange: 0};
  1406. const device = shepherd.find(ieeeAddr, 1);
  1407. const actions = [
  1408. (cb) => device.bind('genOnOff', coordinator, cb),
  1409. (cb) => device.foundation('genOnOff', 'configReport', [cfg], foundationCfg, cb),
  1410. ];
  1411.  
  1412. execute(device, actions, callback);
  1413. },
  1414. },
  1415.  
  1416. // Sengled
  1417. {
  1418. zigbeeModel: ['E11-G13'],
  1419. model: 'E11-G13',
  1420. vendor: 'Sengled',
  1421. description: 'Element Classic (A19)',
  1422. extend: generic.light_onoff_brightness,
  1423. },
  1424. {
  1425. zigbeeModel: ['E11-G23', 'E11-G33'],
  1426. model: 'E11-G23/E11-G33',
  1427. vendor: 'Sengled',
  1428. description: 'Element Classic (A60)',
  1429. extend: generic.light_onoff_brightness,
  1430. },
  1431. {
  1432. zigbeeModel: ['Z01-CIA19NAE26'],
  1433. model: 'Z01-CIA19NAE26',
  1434. vendor: 'Sengled',
  1435. description: 'Element Touch (A19)',
  1436. extend: generic.light_onoff_brightness,
  1437. },
  1438. {
  1439. zigbeeModel: ['Z01-A19NAE26'],
  1440. model: 'Z01-A19NAE26',
  1441. vendor: 'Sengled',
  1442. description: 'Element Plus (A19)',
  1443. extend: generic.light_onoff_brightness_colortemp,
  1444. },
  1445. {
  1446. zigbeeModel: ['E11-N1EA'],
  1447. model: 'E11-N1EA',
  1448. vendor: 'Sengled',
  1449. description: 'Element Plus Color (A19)',
  1450. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1451. },
  1452. {
  1453. zigbeeModel: ['E12-N14'],
  1454. model: 'E12-N14',
  1455. vendor: 'Sengled',
  1456. description: 'Element Classic (BR30)',
  1457. extend: generic.light_onoff_brightness,
  1458. },
  1459. {
  1460. zigbeeModel: ['E1A-AC2'],
  1461. model: 'E1ACA4ABE38A',
  1462. vendor: 'Sengled',
  1463. description: 'Element downlight smart LED bulb',
  1464. extend: generic.light_onoff_brightness,
  1465. },
  1466.  
  1467. // JIAWEN
  1468. {
  1469. zigbeeModel: ['FB56-ZCW08KU1.1'],
  1470. model: 'K2RGBW01',
  1471. vendor: 'JIAWEN',
  1472. description: 'Wireless Bulb E27 9W RGBW',
  1473. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1474. },
  1475.  
  1476. // Netvox
  1477. {
  1478. zigbeeModel: ['Z809AE3R'],
  1479. model: 'Z809A',
  1480. vendor: 'Netvox',
  1481. description: 'Power socket with power consumption monitoring',
  1482. supports: 'on/off, power measurement',
  1483. fromZigbee: [fz.generic_state, fz.ignore_onoff_change, fz.ignore_electrical_change, fz.Z809A_power],
  1484. toZigbee: [tz.on_off],
  1485. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1486. const device = shepherd.find(ieeeAddr, 1);
  1487. const actions = [
  1488. (cb) => device.report('haElectricalMeasurement', 'rmsVoltage', 10, 1000, 1, cb),
  1489. (cb) => device.report('haElectricalMeasurement', 'rmsCurrent', 10, 1000, 1, cb),
  1490. (cb) => device.report('haElectricalMeasurement', 'activePower', 10, 1000, 1, cb),
  1491. (cb) => device.report('haElectricalMeasurement', 'powerFactor', 10, 1000, 1, cb),
  1492. ];
  1493.  
  1494. execute(device, actions, callback);
  1495. },
  1496. },
  1497.  
  1498. // Nanoleaf
  1499. {
  1500. zigbeeModel: ['NL08-0800'],
  1501. model: 'NL08-0800',
  1502. vendor: 'Nanoleaf',
  1503. description: 'Smart Ivy Bulb E27',
  1504. extend: generic.light_onoff_brightness,
  1505. },
  1506.  
  1507. // Nue
  1508. {
  1509. zigbeeModel: ['FB56+ZSW05HG1.2'],
  1510. model: 'FB56+ZSW05HG1.2',
  1511. vendor: 'Nue',
  1512. description: 'ZigBee one gang smart switch',
  1513. supports: 'on/off',
  1514. fromZigbee: [fz.generic_state],
  1515. toZigbee: [tz.on_off],
  1516. },
  1517. {
  1518. zigbeeModel: ['FNB56-SKT1DHG1.4'],
  1519. model: 'MG-AUWS01',
  1520. vendor: 'Nue',
  1521. description: 'ZigBee Double GPO',
  1522. supports: 'on/off',
  1523. fromZigbee: [fz.nue_power_state, fz.ignore_onoff_change],
  1524. toZigbee: [tz.on_off],
  1525. ep: (device) => {
  1526. return {'left': 12, 'right': 11};
  1527. },
  1528. },
  1529. {
  1530. zigbeeModel: ['FNB56-ZSW23HG1.1'],
  1531. model: 'HGZB-01A',
  1532. vendor: 'Nue',
  1533. description: 'ZigBee smart light controller',
  1534. extend: generic.light_onoff_brightness,
  1535. },
  1536.  
  1537. // Gledopto
  1538. {
  1539. zigbeeModel: ['GLEDOPTO', 'GL-C-008', 'GL-C-007'],
  1540. model: 'GL-C-008',
  1541. vendor: 'Gledopto',
  1542. description: 'Zigbee LED controller RGB + CCT / RGBW / WWCW / Dimmer',
  1543. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1544. ep: (device) => {
  1545. if (device.epList.toString() === '11,12,13') {
  1546. return {'': 12};
  1547. } else if (device.epList.toString() === '10,11,13' || device.epList.toString() === '11,13') {
  1548. return {'': 11};
  1549. } else {
  1550. return {};
  1551. }
  1552. },
  1553. },
  1554. {
  1555. zigbeeModel: ['GL-C-006'],
  1556. model: 'GL-C-006',
  1557. vendor: 'Gledopto',
  1558. description: 'Zigbee LED controller WW/CW Dimmer',
  1559. extend: generic.light_onoff_brightness_colortemp,
  1560. ep: (device) => {
  1561. if (device.epList.toString() === '11,12,13') {
  1562. return {'': 12};
  1563. } else if (device.epList.toString() === '10,11,13' || device.epList.toString() === '11,13') {
  1564. return {'': 11};
  1565. } else {
  1566. return {};
  1567. }
  1568. },
  1569. },
  1570. {
  1571. zigbeeModel: ['GL-S-007Z'],
  1572. model: 'GL-S-007Z',
  1573. vendor: 'Gledopto',
  1574. description: 'Smart RGBW GU10',
  1575. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1576. ep: (device) => {
  1577. if (device.epList.toString() === '11,12,13') {
  1578. return {'': 12};
  1579. } else if (device.epList.toString() === '10,11,13' || device.epList.toString() === '11,13') {
  1580. return {'': 11};
  1581. } else {
  1582. return {};
  1583. }
  1584. },
  1585. },
  1586. {
  1587. zigbeeModel: ['GL-B-008Z'],
  1588. model: 'GL-B-008Z',
  1589. vendor: 'Gledopto',
  1590. description: 'Smart 12W E27 RGB / CW LED bulb',
  1591. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1592. ep: (device) => {
  1593. if (device.epList.toString() === '11,12,13') {
  1594. return {'': 12};
  1595. } else if (device.epList.toString() === '10,11,13' || device.epList.toString() === '11,13') {
  1596. return {'': 11};
  1597. } else {
  1598. return {};
  1599. }
  1600. },
  1601. },
  1602. {
  1603. zigbeeModel: ['GL-D-003Z'],
  1604. model: 'GL-D-003Z',
  1605. vendor: 'Gledopto',
  1606. description: 'LED RGB + CCT downlight ',
  1607. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1608. ep: (device) => {
  1609. if (device.epList.toString() === '11,12,13') {
  1610. return {'': 12};
  1611. } else if (device.epList.toString() === '10,11,13') {
  1612. return {'': 11};
  1613. } else {
  1614. return {};
  1615. }
  1616. },
  1617. },
  1618. {
  1619. zigbeeModel: ['HOMA2023'],
  1620. model: 'GD-CZ-006',
  1621. vendor: 'Gledopto',
  1622. description: 'Zigbee LED Driver',
  1623. extend: generic.light_onoff_brightness,
  1624. },
  1625.  
  1626. // SmartThings
  1627. {
  1628. zigbeeModel: ['PGC313'],
  1629. model: 'STSS-MULT-001',
  1630. vendor: 'SmartThings',
  1631. description: 'Multipurpose sensor',
  1632. supports: 'contact',
  1633. fromZigbee: [fz.smartthings_contact],
  1634. toZigbee: [],
  1635. },
  1636. {
  1637. zigbeeModel: ['tagv4'],
  1638. model: 'STS-PRS-251',
  1639. vendor: 'SmartThings',
  1640. description: 'Arrival sensor',
  1641. supports: 'presence',
  1642. fromZigbee: [
  1643. fz.STS_PRS_251_presence, fz.generic_batteryvoltage_3000_2500, fz.ignore_power_change,
  1644. fz.STS_PRS_251_beeping,
  1645. ],
  1646. toZigbee: [tz.STS_PRS_251_beep],
  1647. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1648. const device = shepherd.find(ieeeAddr, 1);
  1649. const actions = [
  1650. (cb) => device.report('genBinaryInput', 'presentValue', 10, 30, 1, cb),
  1651. (cb) => device.report('genPowerCfg', 'batteryVoltage', 1800, 3600, cb),
  1652. ];
  1653.  
  1654. execute(device, actions, callback);
  1655. },
  1656. },
  1657. {
  1658. zigbeeModel: ['3325-S'],
  1659. model: '3325-S',
  1660. vendor: 'SmartThings',
  1661. description: 'Motion sensor (2015 model)',
  1662. supports: 'occupancy and temperature',
  1663. fromZigbee: [
  1664. fz.generic_temperature, fz.ignore_temperature_change, fz.ias_zone_motion_dev_change,
  1665. fz.ias_zone_motion_status_change,
  1666. ],
  1667. toZigbee: [],
  1668. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1669. const device = shepherd.find(ieeeAddr, 1);
  1670. const actions = [
  1671. (cb) => device.write('ssIasZone', 'iasCieAddr', coordinator.device.getIeeeAddr(), cb),
  1672. (cb) => device.functional('ssIasZone', 'enrollRsp', {enrollrspcode: 0, zoneid: 23}, cb),
  1673. (cb) => device.bind('msTemperatureMeasurement', coordinator, cb),
  1674. (cb) => device.report('msTemperatureMeasurement', 'measuredValue', 30, 600, 1, cb),
  1675. (cb) => device.bind('genPowerCfg', coordinator, cb),
  1676. (cb) => device.report('genPowerCfg', 'batteryPercentageRemaining', 0, 1000, 0, cb),
  1677. ];
  1678. execute(device, actions, callback);
  1679. },
  1680. },
  1681. {
  1682. zigbeeModel: ['3321-S'],
  1683. model: '3321-S',
  1684. vendor: 'SmartThings',
  1685. description: 'Multi Sensor (2015 model)',
  1686. supports: 'contact and temperature',
  1687. fromZigbee: [
  1688. fz.generic_temperature, fz.ignore_temperature_change, fz.smartsense_multi,
  1689. ],
  1690. toZigbee: [],
  1691. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1692. const device = shepherd.find(ieeeAddr, 1);
  1693. const actions = [
  1694. (cb) => device.bind('msTemperatureMeasurement', coordinator, cb),
  1695. (cb) => device.report('msTemperatureMeasurement', 'measuredValue', 300, 600, 1, cb),
  1696. (cb) => device.write('ssIasZone', 'iasCieAddr', coordinator.device.getIeeeAddr(), cb),
  1697. (cb) => device.report('ssIasZone', 'zoneStatus', 0, 1000, null, cb),
  1698. (cb) => device.functional('ssIasZone', 'enrollRsp', {
  1699. enrollrspcode: 1,
  1700. zoneid: 23,
  1701. }, cb),
  1702. ];
  1703. execute(device, actions, callback);
  1704. },
  1705. },
  1706.  
  1707. // Trust
  1708. {
  1709. zigbeeModel: ['ZLL-DimmableLigh'],
  1710. model: 'ZLED-2709',
  1711. vendor: 'Trust',
  1712. description: 'Smart Dimmable LED Bulb',
  1713. extend: generic.light_onoff_brightness,
  1714. },
  1715. {
  1716. zigbeeModel: ['VMS_ADUROLIGHT'],
  1717. model: 'ZPIR-8000',
  1718. vendor: 'Trust',
  1719. description: 'Motion Sensor',
  1720. supports: 'occupancy',
  1721. fromZigbee: [fz.ias_zone_motion_dev_change, fz.ias_zone_motion_status_change],
  1722. toZigbee: [],
  1723. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1724. const device = shepherd.find(ieeeAddr, 1);
  1725. const actions = [
  1726. (cb) => device.write('ssIasZone', 'iasCieAddr', coordinator.device.getIeeeAddr(), cb),
  1727. (cb) => device.functional('ssIasZone', 'enrollRsp', {enrollrspcode: 0, zoneid: 23}, cb),
  1728. ];
  1729.  
  1730. execute(device, actions, callback);
  1731. },
  1732. },
  1733. {
  1734. zigbeeModel: ['CSW_ADUROLIGHT'],
  1735. model: 'ZCTS-808',
  1736. vendor: 'Trust',
  1737. description: 'Wireless contact sensor',
  1738. supports: 'contact',
  1739. fromZigbee: [fz.ias_contact_dev_change, fz.ias_contact_status_change],
  1740. toZigbee: [],
  1741. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1742. const device = shepherd.find(ieeeAddr, 1);
  1743. const actions = [
  1744. (cb) => device.write('ssIasZone', 'iasCieAddr', coordinator.device.getIeeeAddr(), cb),
  1745. (cb) => device.functional('ssIasZone', 'enrollRsp', {enrollrspcode: 0, zoneid: 23}, cb),
  1746. ];
  1747.  
  1748. execute(device, actions, callback);
  1749. },
  1750. },
  1751.  
  1752. // Paulmann
  1753. {
  1754. zigbeeModel: ['Dimmablelight '],
  1755. model: '50045',
  1756. vendor: 'Paulmann',
  1757. description: 'SmartHome Zigbee LED-stripe',
  1758. extend: generic.light_onoff_brightness,
  1759. },
  1760. {
  1761. zigbeeModel: ['RGBW light'],
  1762. model: '50049',
  1763. vendor: 'Paulmann',
  1764. description: 'SmartHome Yourled RGB Controller',
  1765. extend: generic.light_onoff_brightness_colorxy,
  1766. },
  1767.  
  1768. // Bitron
  1769. {
  1770. zigbeeModel: ['902010/22'],
  1771. model: 'AV2010/22',
  1772. vendor: 'Bitron',
  1773. description: 'Wireless motion detector',
  1774. supports: 'occupancy',
  1775. fromZigbee: [fz.bitron_occupancy],
  1776. toZigbee: [],
  1777. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1778. const device = shepherd.find(ieeeAddr, 1);
  1779. const actions = [
  1780. (cb) => device.write('ssIasZone', 'iasCieAddr', coordinator.device.getIeeeAddr(), cb),
  1781. (cb) => device.report('ssIasZone', 'zoneStatus', 0, 30, null, cb),
  1782. (cb) => device.functional('ssIasZone', 'enrollRsp', {enrollrspcode: 1, zoneid: 23}, cb),
  1783. ];
  1784.  
  1785. execute(device, actions, callback);
  1786. },
  1787. },
  1788. {
  1789. zigbeeModel: ['902010/25'],
  1790. model: 'AV2010/25',
  1791. vendor: 'Bitron',
  1792. description: 'Video wireless socket',
  1793. supports: 'on/off, power measurement',
  1794. fromZigbee: [fz.generic_state, fz.ignore_onoff_change, fz.ignore_metering_change, fz.bitron_power],
  1795. toZigbee: [tz.on_off],
  1796. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1797. const device = shepherd.find(ieeeAddr, 1);
  1798. const actions = [
  1799. (cb) => device.report('seMetering', 'instantaneousDemand', 10, 60, 1, cb),
  1800. (cb) => device.bind('genOnOff', coordinator, cb),
  1801. ];
  1802. execute(device, actions, callback);
  1803. },
  1804. },
  1805. {
  1806. zigbeeModel: ['902010/32'],
  1807. model: 'AV2010/32',
  1808. vendor: 'Bitron',
  1809. description: 'Wireless wall thermostat with relay',
  1810. supports: 'temperature, heating/cooling system control',
  1811. fromZigbee: [
  1812. fz.ignore_basic_change, fz.bitron_thermostat_att_report,
  1813. fz.bitron_thermostat_dev_change, fz.bitron_battery,
  1814. ],
  1815. toZigbee: [
  1816. tz.thermostat_occupied_heating_setpoint, tz.thermostat_local_temperature_calibration,
  1817. tz.thermostat_local_temperature, tz.thermostat_running_state,
  1818. tz.thermostat_temperature_display_mode,
  1819. ],
  1820. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1821. const device = shepherd.find(ieeeAddr, 1);
  1822. const actions = [
  1823. (cb) => device.bind('genBasic', coordinator, cb),
  1824. (cb) => device.bind('genPowerCfg', coordinator, cb),
  1825. (cb) => device.bind('genIdentify', coordinator, cb),
  1826. (cb) => device.bind('genTime', coordinator, cb),
  1827. (cb) => device.bind('genPollCtrl', coordinator, cb),
  1828. (cb) => device.bind('hvacThermostat', coordinator, cb),
  1829. (cb) => device.bind('hvacUserInterfaceCfg', coordinator, cb),
  1830. (cb) => device.report('hvacThermostat', 'localTemp', 300, 3600, 0, cb),
  1831. (cb) => device.report('hvacThermostat', 'localTemperatureCalibration', 1, 0, 0, cb),
  1832. (cb) => device.report('hvacThermostat', 'occupiedHeatingSetpoint', 1, 0, 1, cb),
  1833. (cb) => device.report('hvacThermostat', 'runningState', 1, 0, 0, cb),
  1834. (cb) => device.report('genPowerCfg', 'batteryVoltage', 1800, 43200, 0, cb),
  1835. (cb) => device.report('genPowerCfg', 'batteryAlarmState', 1, 0, 1, cb),
  1836. ];
  1837.  
  1838. execute(device, actions, callback);
  1839. },
  1840. },
  1841. {
  1842. zigbeeModel: ['FC600'],
  1843. model: 'FC600',
  1844. vendor: 'Salus',
  1845. description: 'Thermostat, fan control, heat/cool',
  1846. supports:'Measuring room temperature every 60s, setting room temperatyre, cooling/heating, 3 fan speed, programing schedule, temperature offset and etc.',
  1847. fromZigbee: [],
  1848. toZigbee: [],
  1849. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1850. const device = shepherd.find(ieeeAddr, 9);
  1851. const actions = [
  1852. (cb) => device.bind('genBasic', coordinator, cb),
  1853. (cb) => device.bind('genIdentify', coordinator, cb),
  1854. (cb) => device.bind('genGroups', coordinator, cb),
  1855. (cb) => device.bind('genScenes', coordinator, cb),
  1856. (cb) => device.bind('genTime', coordinator, cb),
  1857. (cb) => device.bind('genOta', coordinator, cb),
  1858. (cb) => device.report('hvacThermostat', 'localTemp', 300, 5500, 0, cb),
  1859. (cb) => device.report('hvacThermostat', 'localTemperatureCalibration', 1, 0, 0, cb),
  1860. (cb) => device.report('hvacThermostat', 'ctrlSeqeOfOper', 1, 0, 1, cb),
  1861. (cb) => device.report('hvacThermostat', 'systemMode', 1, 0, 1, cb),
  1862. (cb) => device.report('hvacThermostat', 'runningMode', 1, 0, 0, cb),
  1863. (cb) => device.report('hvacThermostat', 'runningState', 1, 0, 0, cb),
  1864. (cb) => device.report('hvacFanCtrl', 'fanMode', 1, 0, 3, cb),
  1865. (cb) => device.report('hvacFanCtrl', 'fanModeSequence', 1, 0, 5, cb),
  1866. (cb) => device.bind('hvacUserInterfaceCfg', coordinator, cb),
  1867. ];
  1868. execute(device, actions, callback);
  1869. },
  1870.  
  1871. },
  1872.  
  1873. // Iris
  1874. {
  1875. zigbeeModel: ['3210-L'],
  1876. model: '3210-L',
  1877. vendor: 'Iris',
  1878. description: 'Smart plug',
  1879. supports: 'on/off',
  1880. fromZigbee: [fz.ignore_onoff_change, fz.ignore_electrical_change, fz.generic_state, fz.iris_3210L_power],
  1881. toZigbee: [tz.on_off],
  1882. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1883. const device = shepherd.find(ieeeAddr, 1);
  1884. const actions = [
  1885. (cb) => device.report('haElectricalMeasurement', 'activePower', 10, 1000, 1, cb),
  1886. ];
  1887.  
  1888. execute(device, actions, callback);
  1889. },
  1890. },
  1891. {
  1892. zigbeeModel: ['3326-L'],
  1893. model: '3326-L',
  1894. vendor: 'Iris',
  1895. description: 'Motion and temperature sensor',
  1896. supports: 'occupancy and temperature',
  1897. fromZigbee: [
  1898. fz.generic_temperature, fz.ignore_temperature_change, fz.ias_zone_motion_dev_change,
  1899. fz.ias_zone_motion_status_change,
  1900. ],
  1901. toZigbee: [],
  1902. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1903. const device = shepherd.find(ieeeAddr, 1);
  1904. const actions = [
  1905. (cb) => device.write('ssIasZone', 'iasCieAddr', coordinator.device.getIeeeAddr(), cb),
  1906. (cb) => device.functional('ssIasZone', 'enrollRsp', {enrollrspcode: 0, zoneid: 23}, cb),
  1907. (cb) => device.bind('msTemperatureMeasurement', coordinator, cb),
  1908. (cb) => device.report('msTemperatureMeasurement', 'measuredValue', 30, 600, 1, cb),
  1909. (cb) => device.bind('genPowerCfg', coordinator, cb),
  1910. (cb) => device.report('genPowerCfg', 'batteryPercentageRemaining', 0, 1000, 0, cb),
  1911. ];
  1912. execute(device, actions, callback);
  1913. },
  1914. },
  1915. {
  1916. zigbeeModel: ['3320-L'],
  1917. model: '3320-L',
  1918. vendor: 'Iris',
  1919. description: 'Contact sensor',
  1920. supports: 'contact',
  1921. fromZigbee: [fz.iris_3320L_contact],
  1922. toZigbee: [],
  1923. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1924. const device = shepherd.find(ieeeAddr, 1);
  1925. const actions = [
  1926. (cb) => device.write('ssIasZone', 'iasCieAddr', coordinator.device.getIeeeAddr(), cb),
  1927. (cb) => device.functional('ssIasZone', 'enrollRsp', {enrollrspcode: 0, zoneid: 23}, cb),
  1928. ];
  1929. execute(device, actions, callback, 1000);
  1930. },
  1931. },
  1932.  
  1933. // ksentry
  1934. {
  1935. zigbeeModel: ['Lamp_01'],
  1936. model: 'KS-SM001',
  1937. vendor: 'Ksentry Electronics',
  1938. description: '[Zigbee OnOff Controller](http://ksentry.manufacturer.globalsources.com/si/6008837134660'+
  1939. '/pdtl/ZigBee-module/1162731630/zigbee-on-off-controller-modules.htm)',
  1940. supports: 'on/off',
  1941. fromZigbee: [fz.generic_state_change],
  1942. toZigbee: [tz.on_off],
  1943. },
  1944.  
  1945. // Commercial Electric
  1946. {
  1947. zigbeeModel: ['Zigbee CCT Downlight'],
  1948. model: '53170161',
  1949. vendor: 'Commercial Electric',
  1950. description: 'Matte White Recessed Retrofit Smart Led Downlight - 4 Inch',
  1951. extend: generic.light_onoff_brightness_colortemp,
  1952. },
  1953.  
  1954. // ilux
  1955. {
  1956. zigbeeModel: ['LEColorLight'],
  1957. model: '900008-WW',
  1958. vendor: 'ilux',
  1959. description: 'Dimmable A60 E27 LED Bulb',
  1960. extend: generic.light_onoff_brightness,
  1961. },
  1962.  
  1963. // Dresden Elektronik
  1964. {
  1965. zigbeeModel: ['FLS-PP3\u0000'],
  1966. model: 'Mega23M12',
  1967. vendor: 'Dresden Elektronik',
  1968. description: 'ZigBee Light Link wireless electronic ballast',
  1969. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1970. },
  1971.  
  1972. // Centralite Swiss Plug
  1973. {
  1974. zigbeeModel: ['4256251-RZHAC', '4257050-RZHAC'],
  1975. model: '4256251-RZHAC',
  1976. vendor: 'Centralite',
  1977. description: 'White Swiss power outlet switch with power meter',
  1978. supports: 'switch and power meter',
  1979. fromZigbee: [fz.ignore_onoff_change, fz.generic_state, fz.ignore_electrical_change, fz.RZHAC_4256251_power],
  1980. toZigbee: [tz.on_off],
  1981. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  1982. const device = shepherd.find(ieeeAddr, 1);
  1983. const cfg = {direction: 0, attrId: 0, dataType: 16, minRepIntval: 0, maxRepIntval: 1000, repChange: 0};
  1984. const actions = [
  1985. (cb) => device.bind('genOnOff', coordinator, cb),
  1986. (cb) => device.foundation('genOnOff', 'configReport', [cfg], foundationCfg, cb),
  1987. (cb) => device.report('haElectricalMeasurement', 'rmsVoltage', 10, 1000, 1, cb),
  1988. (cb) => device.report('haElectricalMeasurement', 'rmsCurrent', 10, 1000, 1, cb),
  1989. (cb) => device.report('haElectricalMeasurement', 'activePower', 10, 1000, 1, cb),
  1990. ];
  1991.  
  1992. execute(device, actions, callback);
  1993. },
  1994. },
  1995.  
  1996. // Climax
  1997. {
  1998. zigbeeModel: ['PSS_00.00.00.15TC'],
  1999. model: 'PSS-23ZBS',
  2000. vendor: 'Climax',
  2001. description: 'Power plug',
  2002. supports: 'on/off',
  2003. fromZigbee: [fz.generic_state_change],
  2004. toZigbee: [tz.on_off],
  2005. },
  2006.  
  2007. // HEIMAN
  2008. {
  2009. zigbeeModel: ['SMOK_V16', 'b5db59bfd81e4f1f95dc57fdbba17931', 'SMOK_YDLV10'],
  2010. model: 'HS1SA',
  2011. vendor: 'HEIMAN',
  2012. description: 'Smoke detector',
  2013. supports: 'smoke',
  2014. fromZigbee: [fz.heiman_smoke],
  2015. toZigbee: [],
  2016. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  2017. const device = shepherd.find(ieeeAddr, 1);
  2018. const actions = [
  2019. (cb) => device.write('ssIasZone', 'iasCieAddr', coordinator.device.getIeeeAddr(), cb),
  2020. (cb) => device.functional('ssIasZone', 'enrollRsp', {enrollrspcode: 0, zoneid: 23}, cb),
  2021. ];
  2022.  
  2023. execute(device, actions, callback, 1000);
  2024. },
  2025. },
  2026. {
  2027. zigbeeModel: ['SmokeSensor-N'],
  2028. model: 'HS3SA',
  2029. vendor: 'HEIMAN',
  2030. description: 'Smoke detector',
  2031. supports: 'smoke',
  2032. fromZigbee: [fz.heiman_smoke],
  2033. toZigbee: [],
  2034. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  2035. const device = shepherd.find(ieeeAddr, 1);
  2036. const actions = [
  2037. (cb) => device.write('ssIasZone', 'iasCieAddr', coordinator.device.getIeeeAddr(), cb),
  2038. (cb) => device.functional('ssIasZone', 'enrollRsp', {enrollrspcode: 0, zoneid: 23}, cb),
  2039. ];
  2040.  
  2041. execute(device, actions, callback, 1000);
  2042. },
  2043. },
  2044. {
  2045. zigbeeModel: ['DoorSensor-N'],
  2046. model: 'HS1DS',
  2047. vendor: 'HEIMAN',
  2048. description: 'Door sensor',
  2049. supports: 'contact',
  2050. fromZigbee: [fz.heiman_contact],
  2051. toZigbee: [],
  2052. },
  2053. {
  2054. zigbeeModel: ['WaterSensor-N'],
  2055. model: 'HS1WL',
  2056. vendor: 'HEIMAN',
  2057. description: 'Water leakage sensor',
  2058. supports: 'water leak',
  2059. fromZigbee: [fz.heiman_water_leak],
  2060. toZigbee: [],
  2061. },
  2062.  
  2063. // Calex
  2064. {
  2065. zigbeeModel: ['EC-Z3.0-CCT '],
  2066. model: '421786',
  2067. vendor: 'Calex',
  2068. description: 'LED A60 Zigbee GLS-lamp',
  2069. extend: generic.light_onoff_brightness,
  2070. },
  2071.  
  2072. // EcoSmart
  2073. {
  2074. zigbeeModel: ['zhaRGBW'],
  2075. model: 'D1821',
  2076. vendor: 'EcoSmart',
  2077. description: 'A19 RGB bulb',
  2078. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2079. },
  2080. {
  2081. // eslint-disable-next-line
  2082. zigbeeModel: ['\u0000\u0002\u0000\u0004\u0000\f^I\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e'],
  2083. model: 'D1531',
  2084. vendor: 'EcoSmart',
  2085. description: 'A19 bright white bulb',
  2086. extend: generic.light_onoff_brightness,
  2087. },
  2088. {
  2089. // eslint-disable-next-line
  2090. zigbeeModel: ['\u0000\u0002\u0000\u0004\u0012 �P\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e'],
  2091. model: 'D1532',
  2092. vendor: 'EcoSmart',
  2093. description: 'A19 soft white bulb',
  2094. extend: generic.light_onoff_brightness,
  2095. },
  2096.  
  2097. // Airam
  2098. {
  2099. zigbeeModel: ['ZBT-DimmableLight'],
  2100. model: '4713407',
  2101. vendor: 'Airam',
  2102. description: 'LED OP A60 ZB 9W/827 E27',
  2103. extend: generic.light_onoff_brightness,
  2104. fromZigbee: [fz.light_state, fz.light_brightness_report, fz.light_brightness, fz.generic_state],
  2105. configure: (ieeeAddr, shepherd, coordinator, callback) => {
  2106. const device = shepherd.find(ieeeAddr, 1);
  2107. const cfgOnOff = {direction: 0, attrId: 0, dataType: 16, minRepIntval: 0, maxRepIntval: 1000, repChange: 0};
  2108. const cfgLevel = {direction: 0, attrId: 0, dataType: 32, minRepIntval: 0, maxRepIntval: 1000, repChange: 1};
  2109. const actions = [
  2110. (cb) => device.bind('genOnOff', coordinator, cb),
  2111. (cb) => device.foundation('genOnOff', 'configReport', [cfgOnOff], foundationCfg, cb),
  2112. (cb) => device.bind('genLevelCtrl', coordinator, cb),
  2113. (cb) => device.foundation('genLevelCtrl', 'configReport', [cfgLevel], foundationCfg, cb),
  2114. ];
  2115.  
  2116. execute(device, actions, callback);
  2117. },
  2118. },
  2119. {
  2120. zigbeeModel: ['ZBT-Remote-EU-DIMV1A2'],
  2121. model: 'AIRAM-CTR.U',
  2122. vendor: 'Airam',
  2123. description: 'CTR.U remote (can only be used to control the Airam 4713407 bulb)',
  2124. supports: 'on/off',
  2125. fromZigbee: [],
  2126. toZigbee: [],
  2127. },
  2128.  
  2129. // Smart Home Pty
  2130. {
  2131. zigbeeModel: ['FB56-ZCW11HG1.2'],
  2132. model: 'HGZB-07A',
  2133. vendor: 'Smart Home Pty',
  2134. description: 'RGBW Downlight',
  2135. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2136. },
  2137. {
  2138. zigbeeModel: ['FNB56-SKT1EHG1.2'],
  2139. model: 'HGZB-20-DE',
  2140. vendor: 'Smart Home Pty',
  2141. description: 'Power plug',
  2142. supports: 'on/off',
  2143. fromZigbee: [fz.generic_state_change],
  2144. toZigbee: [tz.on_off],
  2145. },
  2146.  
  2147. // Paul Neuhaus
  2148. {
  2149. zigbeeModel: ['NLG-CCT light '],
  2150. model: '100.424.11',
  2151. vendor: 'Paul Neuhaus',
  2152. description: 'Q-INIGO LED ceiling light',
  2153. extend: generic.light_onoff_brightness_colortemp,
  2154. },
  2155.  
  2156. // iCasa
  2157. {
  2158. zigbeeModel: ['ICZB-IW11D'],
  2159. model: 'ICZB-IW11D',
  2160. vendor: 'iCasa',
  2161. description: 'Zigbee 3.0 Dimmer',
  2162. extend: generic.light_onoff_brightness,
  2163. },
  2164.  
  2165. // Müller Licht
  2166. {
  2167. zigbeeModel: ['ZBT-ExtendedColor'],
  2168. model: '404000/404005/404012',
  2169. vendor: 'Müller Licht',
  2170. description: 'Tint LED bulb GU10/E14/E27 350/470/806 lumen, dimmable, color, opal white',
  2171. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2172. },
  2173. {
  2174. zigbeeModel: ['ZBT-ColorTemperature'],
  2175. model: '404006/404008/404004',
  2176. vendor: 'Müller Licht',
  2177. description: 'Tint LED bulb GU10/E14/E27 350/470/806 lumen, dimmable, opal white',
  2178. extend: generic.light_onoff_brightness_colortemp,
  2179. },
  2180.  
  2181. ];
  2182.  
  2183. module.exports = devices.map((device) =>
  2184. device.extend ? Object.assign({}, device.extend, device) : device
  2185. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement