Advertisement
Guest User

LuckyPants123 devices.js

a guest
Dec 15th, 2019
2,506
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 215.73 KB | None | 0 0
  1. 'use strict';
  2.  
  3. const fz = require('./converters/fromZigbee');
  4. const tz = require('./converters/toZigbee');
  5.  
  6. const store = {};
  7.  
  8. const repInterval = {
  9. MAX: 62000,
  10. HOUR: 3600,
  11. MINUTES_5: 300,
  12. MINUTE: 60,
  13. };
  14.  
  15. const bind = async (endpoint, target, clusters) => {
  16. for (const cluster of clusters) {
  17. await endpoint.bind(cluster, target);
  18. }
  19. };
  20.  
  21. const configureReporting = {
  22. currentPositionLiftPercentage: async (endpoint) => {
  23. const payload = [{
  24. attribute: 'currentPositionLiftPercentage',
  25. minimumReportInterval: 1,
  26. maximumReportInterval: repInterval.MAX,
  27. reportableChange: 1,
  28. }];
  29. await endpoint.configureReporting('closuresWindowCovering', payload);
  30. },
  31. batteryPercentageRemaining: async (endpoint) => {
  32. const payload = [{
  33. attribute: 'batteryPercentageRemaining',
  34. minimumReportInterval: repInterval.HOUR,
  35. maximumReportInterval: repInterval.MAX,
  36. reportableChange: 0,
  37. }];
  38. await endpoint.configureReporting('genPowerCfg', payload);
  39. },
  40. batteryVoltage: async (endpoint) => {
  41. const payload = [{
  42. attribute: 'batteryVoltage',
  43. minimumReportInterval: repInterval.HOUR,
  44. maximumReportInterval: repInterval.MAX,
  45. reportableChange: 0,
  46. }];
  47. await endpoint.configureReporting('genPowerCfg', payload);
  48. },
  49. batteryAlarmState: async (endpoint) => {
  50. const payload = [{
  51. attribute: 'batteryAlarmState',
  52. minimumReportInterval: repInterval.HOUR,
  53. maximumReportInterval: repInterval.MAX,
  54. reportableChange: 0,
  55. }];
  56. await endpoint.configureReporting('genPowerCfg', payload);
  57. },
  58. onOff: async (endpoint) => {
  59. const payload = [{
  60. attribute: 'onOff',
  61. minimumReportInterval: 0,
  62. maximumReportInterval: repInterval.HOUR,
  63. reportableChange: 0,
  64. }];
  65. await endpoint.configureReporting('genOnOff', payload);
  66. },
  67. lockState: async (endpoint) => {
  68. const payload = [{
  69. attribute: 'lockState',
  70. minimumReportInterval: 0,
  71. maximumReportInterval: repInterval.HOUR,
  72. reportableChange: 0,
  73. }];
  74. await endpoint.configureReporting('closuresDoorLock', payload);
  75. },
  76. brightness: async (endpoint) => {
  77. const payload = [{
  78. attribute: 'currentLevel',
  79. minimumReportInterval: 0,
  80. maximumReportInterval: repInterval.HOUR,
  81. reportableChange: 1,
  82. }];
  83. await endpoint.configureReporting('genLevelCtrl', payload);
  84. },
  85. occupancy: async (endpoint) => {
  86. const payload = [{
  87. attribute: 'occupancy',
  88. minimumReportInterval: 0,
  89. maximumReportInterval: repInterval.HOUR,
  90. reportableChange: 0,
  91. }];
  92. await endpoint.configureReporting('msOccupancySensing', payload);
  93. },
  94. temperature: async (endpoint) => {
  95. const payload = [{
  96. attribute: 'measuredValue',
  97. minimumReportInterval: 0,
  98. maximumReportInterval: repInterval.HOUR,
  99. reportableChange: 25,
  100. }];
  101. await endpoint.configureReporting('msTemperatureMeasurement', payload);
  102. },
  103. pressure: async (endpoint) => {
  104. const payload = [{
  105. attribute: 'measuredValue',
  106. minimumReportInterval: 0,
  107. maximumReportInterval: repInterval.HOUR,
  108. reportableChange: 0,
  109. }];
  110. await endpoint.configureReporting('msPressureMeasurement', payload);
  111. },
  112. illuminance: async (endpoint) => {
  113. const payload = [{
  114. attribute: 'measuredValue',
  115. minimumReportInterval: 0,
  116. maximumReportInterval: repInterval.HOUR,
  117. reportableChange: 0,
  118. }];
  119. await endpoint.configureReporting('msIlluminanceMeasurement', payload);
  120. },
  121. instantaneousDemand: async (endpoint) => {
  122. const payload = [{
  123. attribute: 'instantaneousDemand',
  124. minimumReportInterval: 0,
  125. maximumReportInterval: repInterval.HOUR,
  126. reportableChange: 1,
  127. }];
  128. await endpoint.configureReporting('seMetering', payload);
  129. },
  130. currentSummDelivered: async (endpoint) => {
  131. const payload = [{
  132. attribute: 'currentSummDelivered',
  133. minimumReportInterval: 0,
  134. maximumReportInterval: repInterval.HOUR,
  135. reportableChange: 1,
  136. }];
  137. await endpoint.configureReporting('seMetering', payload);
  138. },
  139. currentSummReceived: async (endpoint) => {
  140. const payload = [{
  141. attribute: 'currentSummReceived',
  142. minimumReportInterval: 0,
  143. maximumReportInterval: repInterval.HOUR,
  144. reportableChange: 1,
  145. }];
  146. await endpoint.configureReporting('seMetering', payload);
  147. },
  148. thermostatTemperature: async (endpoint, min=0, max=repInterval.HOUR, change=10) => {
  149. const payload = [{
  150. attribute: 'localTemp',
  151. minimumReportInterval: min,
  152. maximumReportInterval: max,
  153. reportableChange: change,
  154. }];
  155. await endpoint.configureReporting('hvacThermostat', payload);
  156. },
  157. thermostatTemperatureCalibration: async (endpoint) => {
  158. const payload = [{
  159. attribute: 'localTemperatureCalibration',
  160. minimumReportInterval: 0,
  161. maximumReportInterval: repInterval.HOUR,
  162. reportableChange: 0,
  163. }];
  164. await endpoint.configureReporting('hvacThermostat', payload);
  165. },
  166. thermostatOccupiedHeatingSetpoint: async (endpoint) => {
  167. const payload = [{
  168. attribute: 'occupiedHeatingSetpoint',
  169. minimumReportInterval: 0,
  170. maximumReportInterval: repInterval.HOUR,
  171. reportableChange: 10,
  172. }];
  173. await endpoint.configureReporting('hvacThermostat', payload);
  174. },
  175. thermostatPIHeatingDemand: async (endpoint) => {
  176. const payload = [{
  177. attribute: 'pIHeatingDemand',
  178. minimumReportInterval: 0,
  179. maximumReportInterval: repInterval.MINUTES_5,
  180. reportableChange: 10,
  181. }];
  182. await endpoint.configureReporting('hvacThermostat', payload);
  183. },
  184. thermostatRunningState: async (endpoint) => {
  185. const payload = [{
  186. attribute: 'runningState',
  187. minimumReportInterval: 0,
  188. maximumReportInterval: repInterval.HOUR,
  189. reportableChange: 0,
  190. }];
  191. await endpoint.configureReporting('hvacThermostat', payload);
  192. },
  193. presentValue: async (endpoint) => {
  194. const payload = [{
  195. attribute: 'presentValue',
  196. minimumReportInterval: 10,
  197. maximumReportInterval: repInterval.MINUTE,
  198. reportableChange: 1,
  199. }];
  200. await endpoint.configureReporting('genBinaryInput', payload);
  201. },
  202. activePower: async (endpoint) => {
  203. const payload = [{
  204. attribute: 'activePower',
  205. minimumReportInterval: 1,
  206. maximumReportInterval: repInterval.MINUTES_5,
  207. reportableChange: 1,
  208. }];
  209. await endpoint.configureReporting('haElectricalMeasurement', payload);
  210. },
  211. rmsCurrent: async (endpoint) => {
  212. const payload = [{
  213. attribute: 'rmsCurrent',
  214. minimumReportInterval: 1,
  215. maximumReportInterval: repInterval.MINUTES_5,
  216. reportableChange: 1,
  217. }];
  218. await endpoint.configureReporting('haElectricalMeasurement', payload);
  219. },
  220. rmsVoltage: async (endpoint) => {
  221. const payload = [{
  222. attribute: 'rmsVoltage',
  223. minimumReportInterval: 1,
  224. maximumReportInterval: repInterval.MINUTES_5,
  225. reportableChange: 1,
  226. }];
  227. await endpoint.configureReporting('haElectricalMeasurement', payload);
  228. },
  229. powerFactor: async (endpoint) => {
  230. const payload = [{
  231. attribute: 'powerFactor',
  232. minimumReportInterval: 1,
  233. maximumReportInterval: repInterval.MINUTES_5,
  234. reportableChange: 1,
  235. }];
  236. await endpoint.configureReporting('haElectricalMeasurement', payload);
  237. },
  238. acVoltageMultiplier: async (endpoint) => {
  239. const payload = [{
  240. attribute: 'acVoltageMultiplier',
  241. minimumReportInterval: 10,
  242. maximumReportInterval: repInterval.HOUR,
  243. reportableChange: 0,
  244. }];
  245. await endpoint.configureReporting('haElectricalMeasurement', payload);
  246. },
  247. acVoltageDivisor: async (endpoint) => {
  248. const payload = [{
  249. attribute: 'acVoltageDivisor',
  250. minimumReportInterval: 10,
  251. maximumReportInterval: repInterval.HOUR,
  252. reportableChange: 0,
  253. }];
  254. await endpoint.configureReporting('haElectricalMeasurement', payload);
  255. },
  256. acCurrentMultiplier: async (endpoint) => {
  257. const payload = [{
  258. attribute: 'acCurrentMultiplier',
  259. minimumReportInterval: 10,
  260. maximumReportInterval: repInterval.HOUR,
  261. reportableChange: 0,
  262. }];
  263. await endpoint.configureReporting('haElectricalMeasurement', payload);
  264. },
  265. acCurrentDivisor: async (endpoint) => {
  266. const payload = [{
  267. attribute: 'acCurrentDivisor',
  268. minimumReportInterval: 10,
  269. maximumReportInterval: repInterval.HOUR,
  270. reportableChange: 0,
  271. }];
  272. await endpoint.configureReporting('haElectricalMeasurement', payload);
  273. },
  274. acPowerMultiplier: async (endpoint) => {
  275. const payload = [{
  276. attribute: 'acPowerMultiplier',
  277. minimumReportInterval: 10,
  278. maximumReportInterval: repInterval.HOUR,
  279. reportableChange: 0,
  280. }];
  281. await endpoint.configureReporting('haElectricalMeasurement', payload);
  282. },
  283. acPowerDivisor: async (endpoint) => {
  284. const payload = [{
  285. attribute: 'acPowerDivisor',
  286. minimumReportInterval: 10,
  287. maximumReportInterval: repInterval.HOUR,
  288. reportableChange: 0,
  289. }];
  290. await endpoint.configureReporting('haElectricalMeasurement', payload);
  291. },
  292. fanMode: async (endpoint) => {
  293. const payload = [{
  294. attribute: 'fanMode',
  295. minimumReportInterval: 0,
  296. maximumReportInterval: repInterval.HOUR,
  297. reportableChange: 0,
  298. }];
  299. await endpoint.configureReporting('hvacFanCtrl', payload);
  300. },
  301. };
  302.  
  303. const generic = {
  304. light_onoff_brightness: {
  305. supports: 'on/off, brightness',
  306. fromZigbee: [fz.on_off, fz.brightness, fz.ignore_basic_report],
  307. toZigbee: [tz.light_onoff_brightness, tz.ignore_transition, tz.light_alert, tz.light_brightness_move],
  308. },
  309. light_onoff_brightness_colortemp: {
  310. supports: 'on/off, brightness, color temperature',
  311. fromZigbee: [fz.color_colortemp, fz.on_off, fz.brightness, fz.ignore_basic_report],
  312. toZigbee: [
  313. tz.light_onoff_brightness, tz.light_colortemp, tz.ignore_transition, tz.light_alert,
  314. tz.light_brightness_move,
  315. ],
  316. },
  317. light_onoff_brightness_colorxy: {
  318. supports: 'on/off, brightness, color xy',
  319. fromZigbee: [fz.color_colortemp, fz.on_off, fz.brightness, fz.ignore_basic_report],
  320. toZigbee: [
  321. tz.light_onoff_brightness, tz.light_color, tz.ignore_transition, tz.light_alert,
  322. tz.light_brightness_move,
  323. ],
  324. },
  325. light_onoff_brightness_colortemp_colorxy: {
  326. supports: 'on/off, brightness, color temperature, color xy',
  327. fromZigbee: [
  328. fz.color_colortemp, fz.on_off, fz.brightness,
  329. fz.ignore_basic_report,
  330. ],
  331. toZigbee: [
  332. tz.light_onoff_brightness, tz.light_color_colortemp, tz.ignore_transition,
  333. tz.light_alert, tz.light_brightness_move,
  334. ],
  335. },
  336. };
  337.  
  338. const gledopto = {
  339. light: {
  340. supports: generic.light_onoff_brightness_colortemp_colorxy.supports,
  341. fromZigbee: generic.light_onoff_brightness_colortemp_colorxy.fromZigbee,
  342. toZigbee: [
  343. tz.gledopto_light_onoff_brightness, tz.gledopto_light_color_colortemp_white, tz.ignore_transition,
  344. tz.light_alert,
  345. ],
  346. },
  347. };
  348.  
  349. const tzHuePowerOnBehavior = [tz.hue_power_on_behavior, tz.hue_power_on_brightness, tz.hue_power_on_color_temperature];
  350. const hue = {
  351. light_onoff_brightness: {
  352. supports: generic.light_onoff_brightness.supports + ', power-on behavior',
  353. fromZigbee: generic.light_onoff_brightness.fromZigbee,
  354. toZigbee: generic.light_onoff_brightness.toZigbee.concat(tzHuePowerOnBehavior),
  355. },
  356. light_onoff_brightness_colortemp: {
  357. supports: generic.light_onoff_brightness_colortemp.supports + ', power-on behavior',
  358. fromZigbee: generic.light_onoff_brightness_colortemp.fromZigbee,
  359. toZigbee: generic.light_onoff_brightness_colortemp.toZigbee.concat(tzHuePowerOnBehavior),
  360. },
  361. light_onoff_brightness_colorxy: {
  362. supports: generic.light_onoff_brightness_colorxy.supports + ', power-on behavior',
  363. fromZigbee: generic.light_onoff_brightness_colorxy.fromZigbee,
  364. toZigbee: generic.light_onoff_brightness_colorxy.toZigbee.concat(tzHuePowerOnBehavior),
  365. },
  366. light_onoff_brightness_colortemp_colorxy: {
  367. supports: generic.light_onoff_brightness_colortemp_colorxy.supports + ', power-on behavior',
  368. fromZigbee: generic.light_onoff_brightness_colortemp_colorxy.fromZigbee,
  369. toZigbee: generic.light_onoff_brightness_colortemp_colorxy.toZigbee.concat(tzHuePowerOnBehavior),
  370. },
  371. };
  372.  
  373. const devices = [
  374. // Xiaomi
  375. {
  376. zigbeeModel: ['lumi.light.aqcn02'],
  377. model: 'ZNLDP12LM',
  378. vendor: 'Xiaomi',
  379. description: 'Aqara smart LED bulb',
  380. extend: generic.light_onoff_brightness_colortemp,
  381. fromZigbee: [
  382. fz.brightness, fz.color_colortemp, fz.on_off, fz.xiaomi_bulb_interval,
  383. fz.ignore_light_brightness_report, fz.ignore_light_color_colortemp_report,
  384. fz.ignore_occupancy_report, fz.ignore_humidity_report,
  385. fz.ignore_pressure_report, fz.ignore_temperature_report,
  386. ],
  387. },
  388. {
  389. zigbeeModel: ['lumi.sensor_switch'],
  390. model: 'WXKG01LM',
  391. vendor: 'Xiaomi',
  392. description: 'MiJia wireless switch',
  393. supports: 'single, double, triple, quadruple, many, long, long_release click',
  394. fromZigbee: [fz.xiaomi_battery_3v, fz.WXKG01LM_click],
  395. toZigbee: [],
  396. },
  397. {
  398. zigbeeModel: ['lumi.sensor_switch.aq2', 'lumi.remote.b1acn01'],
  399. model: 'WXKG11LM',
  400. vendor: 'Xiaomi',
  401. description: 'Aqara wireless switch',
  402. supports: 'single, double click (and triple, quadruple, hold, release depending on model)',
  403. fromZigbee: [
  404. fz.xiaomi_battery_3v, fz.WXKG11LM_click,
  405. fz.xiaomi_action_click_multistate,
  406. ],
  407. toZigbee: [],
  408. },
  409. {
  410. zigbeeModel: ['lumi.sensor_switch.aq3', 'lumi.sensor_swit'],
  411. model: 'WXKG12LM',
  412. vendor: 'Xiaomi',
  413. description: 'Aqara wireless switch (with gyroscope)',
  414. supports: 'single, double, shake, hold, release',
  415. fromZigbee: [
  416. fz.xiaomi_battery_3v, fz.WXKG12LM_action_click_multistate,
  417. ],
  418. toZigbee: [],
  419. },
  420. {
  421. zigbeeModel: ['lumi.sensor_86sw1', 'lumi.remote.b186acn01'],
  422. model: 'WXKG03LM',
  423. vendor: 'Xiaomi',
  424. description: 'Aqara single key wireless wall switch',
  425. supports: 'single (and double, hold, release and long click depending on model)',
  426. fromZigbee: [
  427. fz.xiaomi_battery_3v, fz.WXKG03LM_click,
  428. fz.xiaomi_action_click_multistate,
  429. ],
  430. toZigbee: [],
  431. },
  432. {
  433. zigbeeModel: ['lumi.sensor_86sw2', 'lumi.sensor_86sw2.es1', 'lumi.remote.b286acn01'],
  434. model: 'WXKG02LM',
  435. vendor: 'Xiaomi',
  436. description: 'Aqara double key wireless wall switch',
  437. supports: 'left, right, both click (and double, long click for left, right and both depending on model)',
  438. fromZigbee: [
  439. fz.xiaomi_battery_3v, fz.WXKG02LM_click,
  440. fz.WXKG02LM_click_multistate,
  441. ],
  442. toZigbee: [],
  443. endpoint: (device) => {
  444. return {'left': 1, 'right': 2, 'both': 3};
  445. },
  446. },
  447. {
  448. zigbeeModel: ['lumi.ctrl_neutral1'],
  449. model: 'QBKG04LM',
  450. vendor: 'Xiaomi',
  451. // eslint-disable-next-line
  452. description: 'Aqara single key wired wall switch without neutral wire. Doesn\'t work as a router and doesn\'t support power meter',
  453. supports: 'release/hold, on/off',
  454. fromZigbee: [
  455. fz.QBKG04LM_QBKG11LM_state, fz.QBKG04LM_buttons,
  456. fz.QBKG04LM_QBKG11LM_operation_mode, fz.ignore_basic_report,
  457. ],
  458. toZigbee: [tz.on_off, tz.xiaomi_switch_operation_mode],
  459. endpoint: (device) => {
  460. return {'system': 1, 'default': 2};
  461. },
  462. },
  463. {
  464. zigbeeModel: ['lumi.ctrl_ln1.aq1', 'lumi.ctrl_ln1'],
  465. model: 'QBKG11LM',
  466. vendor: 'Xiaomi',
  467. description: 'Aqara single key wired wall switch',
  468. supports: 'on/off, power measurement',
  469. fromZigbee: [
  470. fz.QBKG04LM_QBKG11LM_state, fz.QBKG11LM_power, fz.QBKG04LM_QBKG11LM_operation_mode,
  471. fz.QBKG11LM_click,
  472. fz.ignore_multistate_report, fz.xiaomi_power,
  473. ],
  474. toZigbee: [tz.on_off, tz.xiaomi_switch_operation_mode],
  475. },
  476. {
  477. zigbeeModel: ['lumi.ctrl_neutral2'],
  478. model: 'QBKG03LM',
  479. vendor: 'Xiaomi',
  480. // eslint-disable-next-line
  481. description: 'Aqara double key wired wall switch without neutral wire. Doesn\'t work as a router and doesn\'t support power meter',
  482. supports: 'release/hold, on/off, temperature',
  483. fromZigbee: [
  484. fz.QBKG03LM_QBKG12LM_LLKZMK11LM_state, fz.QBKG03LM_buttons,
  485. fz.QBKG03LM_QBKG12LM_operation_mode, fz.ignore_basic_report,
  486. fz.generic_device_temperature,
  487. ],
  488. toZigbee: [tz.on_off, tz.xiaomi_switch_operation_mode],
  489. endpoint: (device) => {
  490. return {'system': 1, 'left': 2, 'right': 3};
  491. },
  492. },
  493. {
  494. zigbeeModel: ['lumi.ctrl_ln2.aq1'],
  495. model: 'QBKG12LM',
  496. vendor: 'Xiaomi',
  497. description: 'Aqara double key wired wall switch',
  498. supports: 'on/off, power measurement',
  499. fromZigbee: [
  500. fz.QBKG03LM_QBKG12LM_LLKZMK11LM_state, fz.QBKG12LM_LLKZMK11LM_power, fz.QBKG03LM_QBKG12LM_operation_mode,
  501. fz.QBKG12LM_click, fz.ignore_multistate_report, fz.xiaomi_power,
  502. ],
  503. toZigbee: [tz.on_off, tz.xiaomi_switch_operation_mode],
  504. endpoint: (device) => {
  505. return {'left': 1, 'right': 2};
  506. },
  507. },
  508. {
  509. zigbeeModel: ['lumi.sens', 'lumi.sensor_ht'],
  510. model: 'WSDCGQ01LM',
  511. vendor: 'Xiaomi',
  512. description: 'MiJia temperature & humidity sensor',
  513. supports: 'temperature and humidity',
  514. fromZigbee: [
  515. fz.xiaomi_battery_3v, fz.WSDCGQ01LM_WSDCGQ11LM_interval, fz.xiaomi_temperature, fz.humidity,
  516.  
  517. ],
  518. toZigbee: [],
  519. },
  520. {
  521. zigbeeModel: ['lumi.weather'],
  522. model: 'WSDCGQ11LM',
  523. vendor: 'Xiaomi',
  524. description: 'Aqara temperature, humidity and pressure sensor',
  525. supports: 'temperature, humidity and pressure',
  526. fromZigbee: [
  527. fz.xiaomi_battery_3v, fz.xiaomi_temperature, fz.humidity, fz.generic_pressure,
  528. fz.WSDCGQ01LM_WSDCGQ11LM_interval,
  529. ],
  530. toZigbee: [],
  531. },
  532. {
  533. zigbeeModel: ['lumi.sensor_motion'],
  534. model: 'RTCGQ01LM',
  535. vendor: 'Xiaomi',
  536. description: 'MiJia human body movement sensor',
  537. supports: 'occupancy',
  538. fromZigbee: [fz.xiaomi_battery_3v, fz.occupancy_with_timeout],
  539. toZigbee: [],
  540. },
  541. {
  542. zigbeeModel: ['lumi.sensor_motion.aq2'],
  543. model: 'RTCGQ11LM',
  544. vendor: 'Xiaomi',
  545. description: 'Aqara human body movement and illuminance sensor',
  546. supports: 'occupancy and illuminance',
  547. fromZigbee: [
  548. fz.xiaomi_battery_3v, fz.occupancy_with_timeout, fz.generic_illuminance,
  549. fz.RTCGQ11LM_interval,
  550. ],
  551. toZigbee: [],
  552. },
  553. {
  554. zigbeeModel: ['lumi.sensor_magnet'],
  555. model: 'MCCGQ01LM',
  556. vendor: 'Xiaomi',
  557. description: 'MiJia door & window contact sensor',
  558. supports: 'contact',
  559. fromZigbee: [
  560. fz.xiaomi_battery_3v, fz.xiaomi_contact,
  561.  
  562. ],
  563. toZigbee: [],
  564. },
  565. {
  566. zigbeeModel: ['lumi.sensor_magnet.aq2'],
  567. model: 'MCCGQ11LM',
  568. vendor: 'Xiaomi',
  569. description: 'Aqara door & window contact sensor',
  570. supports: 'contact',
  571. fromZigbee: [
  572. fz.xiaomi_battery_3v, fz.xiaomi_contact, fz.xiaomi_contact_interval,
  573.  
  574. ],
  575. toZigbee: [],
  576. },
  577. {
  578. zigbeeModel: ['lumi.sensor_wleak.aq1'],
  579. model: 'SJCGQ11LM',
  580. vendor: 'Xiaomi',
  581. description: 'Aqara water leak sensor',
  582. supports: 'water leak true/false',
  583. fromZigbee: [fz.xiaomi_battery_3v, fz.SJCGQ11LM_water_leak_iaszone],
  584. toZigbee: [],
  585. },
  586. {
  587. zigbeeModel: ['lumi.sensor_cube', 'lumi.sensor_cube.aqgl01'],
  588. model: 'MFKZQ01LM',
  589. vendor: 'Xiaomi',
  590. description: 'Mi/Aqara smart home cube',
  591. supports: 'shake, wakeup, fall, tap, slide, flip180, flip90, rotate_left and rotate_right',
  592. fromZigbee: [
  593. fz.xiaomi_battery_3v, fz.MFKZQ01LM_action_multistate, fz.MFKZQ01LM_action_analog,
  594. ],
  595. toZigbee: [],
  596. },
  597. {
  598. zigbeeModel: ['lumi.plug'],
  599. model: 'ZNCZ02LM',
  600. description: 'Mi power plug ZigBee',
  601. supports: 'on/off, power measurement',
  602. vendor: 'Xiaomi',
  603. fromZigbee: [
  604. fz.on_off, fz.xiaomi_power, fz.xiaomi_plug_state, fz.ignore_occupancy_report,
  605. fz.ignore_illuminance_report,
  606. ],
  607. toZigbee: [tz.on_off],
  608. meta: {configureKey: 1},
  609. configure: async (device, coordinatorEndpoint) => {
  610. // By default this device is in group 0; remove it otherwise the E1743 will control it.
  611. // https://github.com/Koenkk/zigbee2mqtt/issues/2059
  612. const endpoint = device.getEndpoint(1);
  613. await endpoint.removeFromGroup(0);
  614. },
  615. },
  616. {
  617. zigbeeModel: ['lumi.plug.mitw01'],
  618. model: 'ZNCZ03LM',
  619. description: 'Mi power plug ZigBee TW',
  620. supports: 'on/off, power measurement',
  621. vendor: 'Xiaomi',
  622. fromZigbee: [
  623. fz.on_off, fz.xiaomi_power, fz.xiaomi_plug_state,
  624. fz.ignore_occupancy_report,
  625. fz.ignore_illuminance_report,
  626. ],
  627. toZigbee: [tz.on_off],
  628. },
  629. {
  630. zigbeeModel: ['lumi.plug.mmeu01'],
  631. model: 'ZNCZ04LM',
  632. description: 'Mi power plug ZigBee EU',
  633. supports: 'on/off, power measurement',
  634. vendor: 'Xiaomi',
  635. fromZigbee: [
  636. fz.on_off, fz.xiaomi_power, fz.xiaomi_plug_state,
  637. ],
  638. toZigbee: [tz.on_off],
  639. },
  640. {
  641. zigbeeModel: ['lumi.plug.maeu01'],
  642. model: 'SP-EUC01',
  643. description: 'Aqara EU smart plug',
  644. supports: 'on/off',
  645. vendor: 'Xiaomi',
  646. fromZigbee: [fz.on_off, fz.xiaomi_plug_state],
  647. toZigbee: [tz.on_off],
  648. },
  649. {
  650. zigbeeModel: ['lumi.ctrl_86plug', 'lumi.ctrl_86plug.aq1'],
  651. model: 'QBCZ11LM',
  652. description: 'Aqara socket Zigbee',
  653. supports: 'on/off, power measurement',
  654. vendor: 'Xiaomi',
  655. fromZigbee: [
  656. fz.on_off, fz.xiaomi_power, fz.xiaomi_plug_state,
  657. ],
  658. toZigbee: [tz.on_off],
  659. },
  660. {
  661. zigbeeModel: ['lumi.sensor_smoke'],
  662. model: 'JTYJ-GD-01LM/BW',
  663. description: 'MiJia Honeywell smoke detector',
  664. supports: 'smoke',
  665. vendor: 'Xiaomi',
  666. fromZigbee: [fz.xiaomi_battery_3v, fz.JTYJGD01LMBW_smoke, fz.JTYJGD01LMBW_smoke_density],
  667. toZigbee: [tz.JTQJBF01LMBW_JTYJGD01LMBW_sensitivity, tz.JTQJBF01LMBW_JTYJGD01LMBW_selfest],
  668. },
  669. {
  670. zigbeeModel: ['lumi.sensor_natgas'],
  671. model: 'JTQJ-BF-01LM/BW',
  672. vendor: 'Xiaomi',
  673. description: 'MiJia gas leak detector ',
  674. supports: 'gas',
  675. fromZigbee: [fz.JTQJBF01LMBW_gas, fz.JTQJBF01LMBW_sensitivity, fz.JTQJBF01LMBW_gas_density],
  676. toZigbee: [tz.JTQJBF01LMBW_JTYJGD01LMBW_sensitivity, tz.JTQJBF01LMBW_JTYJGD01LMBW_selfest],
  677. },
  678. {
  679. zigbeeModel: ['lumi.lock.v1'],
  680. model: 'A6121',
  681. vendor: 'Xiaomi',
  682. description: 'Vima Smart Lock',
  683. supports: 'inserted, forgotten, key error',
  684. fromZigbee: [fz.xiaomi_lock_report],
  685. toZigbee: [],
  686. },
  687. {
  688. zigbeeModel: ['lumi.vibration.aq1'],
  689. model: 'DJT11LM',
  690. vendor: 'Xiaomi',
  691. description: 'Aqara vibration sensor',
  692. supports: 'drop, tilt and touch',
  693. fromZigbee: [
  694. fz.xiaomi_battery_3v, fz.DJT11LM_vibration,
  695. ],
  696. toZigbee: [tz.DJT11LM_vibration_sensitivity],
  697. },
  698. {
  699. zigbeeModel: ['lumi.curtain', 'lumi.curtain.aq2'],
  700. model: 'ZNCLDJ11LM',
  701. description: 'Aqara curtain motor',
  702. supports: 'open, close, stop, position',
  703. vendor: 'Xiaomi',
  704. fromZigbee: [fz.ZNCLDJ11LM_ZNCLDJ12LM_curtain_analog_output, fz.cover_position_tilt, fz.ignore_basic_report],
  705. toZigbee: [tz.ZNCLDJ11LM_ZNCLDJ12LM_control],
  706. },
  707. {
  708. zigbeeModel: ['lumi.curtain.hagl04'],
  709. model: 'ZNCLDJ12LM',
  710. vendor: 'Xiaomi',
  711. description: 'Aqara B1 curtain motor ',
  712. supports: 'open, close, stop, position',
  713. fromZigbee: [fz.ZNCLDJ11LM_ZNCLDJ12LM_curtain_analog_output, fz.cover_position_tilt, fz.ignore_basic_report],
  714. toZigbee: [tz.ZNCLDJ11LM_ZNCLDJ12LM_control],
  715. onEvent: async (type, data, device) => {
  716. // The position (genAnalogOutput.presentValue) reported via an attribute contains an invaid value
  717. // however when reading it will provide the correct value.
  718. if (data.type === 'attributeReport' && data.cluster === 'genAnalogOutput') {
  719. await device.endpoints[0].read('genAnalogOutput', ['presentValue']);
  720. }
  721. },
  722. },
  723. {
  724. zigbeeModel: ['lumi.relay.c2acn01'],
  725. model: 'LLKZMK11LM',
  726. vendor: 'Xiaomi',
  727. description: 'Aqara wireless relay controller',
  728. supports: 'on/off, power measurement',
  729. fromZigbee: [
  730. fz.QBKG03LM_QBKG12LM_LLKZMK11LM_state, fz.QBKG12LM_LLKZMK11LM_power, fz.xiaomi_power,
  731. fz.ignore_multistate_report,
  732. ],
  733. toZigbee: [tz.on_off, tz.LLKZMK11LM_interlock],
  734. endpoint: (device) => {
  735. return {'l1': 1, 'l2': 2};
  736. },
  737. },
  738. {
  739. zigbeeModel: ['lumi.lock.acn02'],
  740. model: 'ZNMS12LM',
  741. description: 'Aqara S2 Lock',
  742. supports: 'report: open, close, operation',
  743. vendor: 'Xiaomi',
  744. fromZigbee: [
  745. fz.ZNMS12LM_ZNMS13LM_closuresDoorLock_report, fz.ignore_basic_report,
  746. ],
  747. toZigbee: [],
  748. },
  749. {
  750. zigbeeModel: ['lumi.lock.acn03'],
  751. model: 'ZNMS13LM',
  752. description: 'Aqara S2 Lock Pro',
  753. supports: 'report: open, close, operation',
  754. vendor: 'Xiaomi',
  755. fromZigbee: [
  756. fz.ZNMS12LM_ZNMS13LM_closuresDoorLock_report, fz.ignore_basic_report,
  757. ],
  758. toZigbee: [],
  759. },
  760. {
  761. zigbeeModel: ['lumi.remote.b286opcn01'],
  762. model: 'WXCJKG11LM',
  763. vendor: 'Xiaomi',
  764. description: 'Aqara Opple switch 1 band',
  765. supports: 'action',
  766. fromZigbee: [fz.aqara_opple_on, fz.aqara_opple_off, fz.battery_3V],
  767. toZigbee: [],
  768. meta: {configureKey: 1},
  769. configure: async (device, coordinatorEndpoint) => {
  770. const endpoint = device.getEndpoint(1);
  771. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genPowerCfg']);
  772. },
  773. },
  774. {
  775. zigbeeModel: ['lumi.remote.b486opcn01'],
  776. model: 'WXCJKG12LM',
  777. vendor: 'Xiaomi',
  778. description: 'Aqara Opple switch 2 bands',
  779. supports: 'action',
  780. fromZigbee: [
  781. fz.aqara_opple_on, fz.aqara_opple_off, fz.aqara_opple_step,
  782. fz.aqara_opple_step_color_temp, fz.battery_3V,
  783. ],
  784. toZigbee: [],
  785. meta: {configureKey: 1},
  786. configure: async (device, coordinatorEndpoint) => {
  787. const endpoint = device.getEndpoint(1);
  788. await bind(endpoint, coordinatorEndpoint, [
  789. 'genOnOff', 'genLevelCtrl', 'lightingColorCtrl', 'genPowerCfg',
  790. ]);
  791. },
  792. },
  793. {
  794. zigbeeModel: ['lumi.remote.b686opcn01'],
  795. model: 'WXCJKG13LM',
  796. vendor: 'Xiaomi',
  797. description: 'Aqara Opple switch 3 bands',
  798. supports: 'action',
  799. fromZigbee: [
  800. fz.aqara_opple_on, fz.aqara_opple_off, fz.aqara_opple_step, fz.aqara_opple_move,
  801. fz.aqara_opple_stop, fz.aqara_opple_step_color_temp, fz.aqara_opple_move_color_temp,
  802. fz.battery_3V,
  803. ],
  804. toZigbee: [],
  805. meta: {configureKey: 1},
  806. configure: async (device, coordinatorEndpoint) => {
  807. const endpoint = device.getEndpoint(1);
  808. await bind(endpoint, coordinatorEndpoint, [
  809. 'genOnOff', 'genLevelCtrl', 'lightingColorCtrl', 'genPowerCfg',
  810. ]);
  811. },
  812. },
  813.  
  814. // TuYa
  815. {
  816. zigbeeModel: ['TS0201'],
  817. model: 'TS0201',
  818. vendor: 'TuYa',
  819. description: 'Temperature & humidity sensor with display',
  820. supports: 'temperature and humidity',
  821. fromZigbee: [fz.battery_percentage_remaining, fz.temperature, fz.humidity],
  822. toZigbee: [],
  823. },
  824.  
  825. // IKEA
  826. {
  827. zigbeeModel: [
  828. 'TRADFRI bulb E27 WS opal 980lm', 'TRADFRI bulb E26 WS opal 980lm',
  829. 'TRADFRI bulb E27 WS\uFFFDopal 980lm',
  830. ],
  831. model: 'LED1545G12',
  832. vendor: 'IKEA',
  833. description: 'TRADFRI LED bulb E26/E27 980 lumen, dimmable, white spectrum, opal white',
  834. extend: generic.light_onoff_brightness_colortemp,
  835. },
  836. {
  837. zigbeeModel: ['TRADFRI bulb E27 WS clear 950lm', 'TRADFRI bulb E26 WS clear 950lm'],
  838. model: 'LED1546G12',
  839. vendor: 'IKEA',
  840. description: 'TRADFRI LED bulb E26/E27 950 lumen, dimmable, white spectrum, clear',
  841. extend: generic.light_onoff_brightness_colortemp,
  842. },
  843. {
  844. zigbeeModel: ['TRADFRI bulb E27 opal 1000lm', 'TRADFRI bulb E27 W opal 1000lm'],
  845. model: 'LED1623G12',
  846. vendor: 'IKEA',
  847. description: 'TRADFRI LED bulb E27 1000 lumen, dimmable, opal white',
  848. extend: generic.light_onoff_brightness,
  849. },
  850. {
  851. zigbeeModel: ['TRADFRI bulb GU10 WS 400lm'],
  852. model: 'LED1537R6',
  853. vendor: 'IKEA',
  854. description: 'TRADFRI LED bulb GU10 400 lumen, dimmable, white spectrum',
  855. extend: generic.light_onoff_brightness_colortemp,
  856. },
  857. {
  858. zigbeeModel: ['TRADFRI bulb GU10 W 400lm'],
  859. model: 'LED1650R5',
  860. vendor: 'IKEA',
  861. description: 'TRADFRI LED bulb GU10 400 lumen, dimmable',
  862. extend: generic.light_onoff_brightness,
  863. },
  864. {
  865. zigbeeModel: ['TRADFRI bulb E14 WS opal 400lm', 'TRADFRI bulb E12 WS opal 400lm'],
  866. model: 'LED1536G5',
  867. vendor: 'IKEA',
  868. description: 'TRADFRI LED bulb E12/E14 400 lumen, dimmable, white spectrum, opal white',
  869. extend: generic.light_onoff_brightness_colortemp,
  870. },
  871. {
  872. zigbeeModel: ['TRADFRI bulb GU10 WW 400lm'],
  873. model: 'LED1837R5',
  874. vendor: 'IKEA',
  875. description: 'TRADFRI LED bulb GU10 400 lumen, dimmable',
  876. extend: generic.light_onoff_brightness,
  877. },
  878. {
  879. zigbeeModel: ['TRADFRI bulb E27 WW clear 250lm', 'TRADFRI bulb E26 WW clear 250lm'],
  880. model: 'LED1842G3',
  881. vendor: 'IKEA',
  882. description: 'TRADFRI LED bulb E27 WW clear 250 lumen, dimmable',
  883. extend: generic.light_onoff_brightness,
  884. },
  885. {
  886. zigbeeModel: ['TRADFRI bulb E14 WS opal 600lm'],
  887. model: 'LED1733G7',
  888. vendor: 'IKEA',
  889. description: 'TRADFRI LED bulb E14 600 lumen, dimmable, white spectrum, opal white',
  890. extend: generic.light_onoff_brightness_colortemp,
  891. },
  892. {
  893. zigbeeModel: ['TRADFRI bulb E26 opal 1000lm', 'TRADFRI bulb E26 W opal 1000lm'],
  894. model: 'LED1622G12',
  895. vendor: 'IKEA',
  896. description: 'TRADFRI LED bulb E26 1000 lumen, dimmable, opal white',
  897. extend: generic.light_onoff_brightness,
  898. },
  899. {
  900. zigbeeModel: [
  901. 'TRADFRI bulb E27 CWS opal 600lm',
  902. 'TRADFRI bulb E26 CWS opal 600lm',
  903. 'TRADFRI bulb E14 CWS opal 600lm',
  904. 'TRADFRI bulb E12 CWS opal 600lm'],
  905. model: 'LED1624G9',
  906. vendor: 'IKEA',
  907. description: 'TRADFRI LED bulb E14/E26/E27 600 lumen, dimmable, color, opal white',
  908. extend: generic.light_onoff_brightness_colorxy,
  909. },
  910. {
  911. zigbeeModel: [
  912. 'TRADFRI bulb E14 W op/ch 400lm', 'TRADFRI bulb E12 W op/ch 400lm',
  913. 'TRADFRI bulb E17 W op/ch 400lm',
  914. ],
  915. model: 'LED1649C5',
  916. vendor: 'IKEA',
  917. description: 'TRADFRI LED bulb E12/E14/E17 400 lumen, dimmable warm white, chandelier opal',
  918. extend: generic.light_onoff_brightness,
  919. },
  920. {
  921. zigbeeModel: ['TRADFRI bulb E27 WS opal 1000lm', 'TRADFRI bulb E26 WS opal 1000lm'],
  922. model: 'LED1732G11',
  923. vendor: 'IKEA',
  924. description: 'TRADFRI LED bulb E27 1000 lumen, dimmable, white spectrum, opal white',
  925. extend: generic.light_onoff_brightness_colortemp,
  926. },
  927. {
  928. zigbeeModel: ['TRADFRI bulb E27 WW 806lm', 'TRADFRI bulb E26 WW 806lm'],
  929. model: 'LED1836G9',
  930. vendor: 'IKEA',
  931. description: 'TRADFRI LED bulb E26/E27 806 lumen, dimmable, warm white',
  932. extend: generic.light_onoff_brightness,
  933. },
  934. {
  935. zigbeeModel: ['TRADFRI bulb E27 WS clear 806lm'],
  936. model: 'LED1736G9',
  937. vendor: 'IKEA',
  938. description: 'TRADFRI LED bulb E27 806 lumen, dimmable, white spectrum, clear',
  939. extend: generic.light_onoff_brightness_colortemp,
  940. },
  941. {
  942. zigbeeModel: ['LEPTITER Recessed spot light'],
  943. model: 'T1820',
  944. vendor: 'IKEA',
  945. description: 'LEPTITER Recessed spot light, dimmable, white spectrum',
  946. extend: generic.light_onoff_brightness_colortemp,
  947. },
  948. {
  949. zigbeeModel: ['TRADFRI wireless dimmer'],
  950. model: 'ICTC-G-1',
  951. vendor: 'IKEA',
  952. description: 'TRADFRI wireless dimmer',
  953. supports: 'brightness [0-255] (quick rotate for instant 0/255), action',
  954. fromZigbee: [
  955. fz.cmd_move, fz.cmd_move_with_onoff, fz.cmd_stop, fz.cmd_stop_with_onoff,
  956. fz.cmd_move_to_level_with_onoff, fz.generic_battery,
  957. ],
  958. toZigbee: [],
  959. meta: {configureKey: 1},
  960. configure: async (device, coordinatorEndpoint) => {
  961. const endpoint = device.getEndpoint(1);
  962. await bind(endpoint, coordinatorEndpoint, ['genLevelCtrl', 'genPowerCfg']);
  963. await configureReporting.batteryPercentageRemaining(endpoint);
  964. },
  965. },
  966. {
  967. zigbeeModel: ['TRADFRI transformer 10W', 'TRADFRI Driver 10W'],
  968. model: 'ICPSHC24-10EU-IL-1',
  969. vendor: 'IKEA',
  970. description: 'TRADFRI driver for wireless control (10 watt)',
  971. extend: generic.light_onoff_brightness,
  972. },
  973. {
  974. zigbeeModel: ['TRADFRI transformer 30W', 'TRADFRI Driver 30W'],
  975. model: 'ICPSHC24-30EU-IL-1',
  976. vendor: 'IKEA',
  977. description: 'TRADFRI driver for wireless control (30 watt)',
  978. extend: generic.light_onoff_brightness,
  979. },
  980. {
  981. zigbeeModel: ['FLOALT panel WS 30x30'],
  982. model: 'L1527',
  983. vendor: 'IKEA',
  984. description: 'FLOALT LED light panel, dimmable, white spectrum (30x30 cm)',
  985. extend: generic.light_onoff_brightness_colortemp,
  986. },
  987. {
  988. zigbeeModel: ['FLOALT panel WS 60x60'],
  989. model: 'L1529',
  990. vendor: 'IKEA',
  991. description: 'FLOALT LED light panel, dimmable, white spectrum (60x60 cm)',
  992. extend: generic.light_onoff_brightness_colortemp,
  993. },
  994. {
  995. zigbeeModel: ['FLOALT panel WS 30x90'],
  996. model: 'L1528',
  997. vendor: 'IKEA',
  998. description: 'FLOALT LED light panel, dimmable, white spectrum (30x90 cm)',
  999. extend: generic.light_onoff_brightness_colortemp,
  1000. },
  1001. {
  1002. zigbeeModel: ['SURTE door WS 38x64'],
  1003. model: 'L1531',
  1004. vendor: 'IKEA',
  1005. description: 'SURTE door light panel, dimmable, white spectrum (38x64 cm)',
  1006. extend: generic.light_onoff_brightness_colortemp,
  1007. },
  1008. {
  1009. zigbeeModel: ['TRADFRI control outlet'],
  1010. model: 'E1603/E1702',
  1011. description: 'TRADFRI control outlet',
  1012. supports: 'on/off',
  1013. vendor: 'IKEA',
  1014. fromZigbee: [
  1015. fz.on_off, fz.ignore_genLevelCtrl_report, fz.ignore_basic_report,
  1016. ],
  1017. toZigbee: [tz.on_off],
  1018. meta: {configureKey: 1},
  1019. configure: async (device, coordinatorEndpoint) => {
  1020. const endpoint = device.getEndpoint(1);
  1021. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  1022. await configureReporting.onOff(endpoint);
  1023. },
  1024. },
  1025. {
  1026. zigbeeModel: ['TRADFRI remote control'],
  1027. model: 'E1524/E1810',
  1028. description: 'TRADFRI remote control',
  1029. supports:
  1030. 'toggle, arrow left/right click/hold/release, brightness up/down click/hold/release',
  1031. vendor: 'IKEA',
  1032. fromZigbee: [
  1033. fz.cmdToggle, fz.E1524_arrow_click, fz.E1524_arrow_hold, fz.E1524_arrow_release,
  1034. fz.E1524_brightness_up_click, fz.E1524_brightness_down_click, fz.E1524_brightness_up_hold,
  1035. fz.E1524_brightness_up_release, fz.E1524_brightness_down_hold, fz.E1524_brightness_down_release,
  1036. fz.generic_battery, fz.E1524_hold,
  1037. ],
  1038. toZigbee: [],
  1039. meta: {configureKey: 1},
  1040. configure: async (device, coordinatorEndpoint) => {
  1041. const endpoint = device.getEndpoint(1);
  1042. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
  1043. await configureReporting.batteryPercentageRemaining(endpoint);
  1044. },
  1045. },
  1046. {
  1047. zigbeeModel: ['TRADFRI on/off switch'],
  1048. model: 'E1743',
  1049. vendor: 'IKEA',
  1050. description: 'TRADFRI ON/OFF switch',
  1051. supports: 'on, off, brightness up/down/stop',
  1052. fromZigbee: [
  1053. fz.genOnOff_cmdOn, fz.genOnOff_cmdOff, fz.E1743_brightness_up, fz.E1743_brightness_down,
  1054. fz.E1743_brightness_stop, fz.generic_battery,
  1055. ],
  1056. toZigbee: [],
  1057. meta: {configureKey: 1},
  1058. configure: async (device, coordinatorEndpoint) => {
  1059. const endpoint = device.getEndpoint(1);
  1060. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
  1061. await configureReporting.batteryPercentageRemaining(endpoint);
  1062. },
  1063. },
  1064. {
  1065. zigbeeModel: ['SYMFONISK Sound Controller'],
  1066. model: 'E1744',
  1067. vendor: 'IKEA',
  1068. description: 'SYMFONISK sound controller',
  1069. supports: 'volume up/down, play/pause, skip forward/backward',
  1070. fromZigbee: [fz.cmd_move, fz.cmd_stop, fz.E1744_play_pause, fz.E1744_skip, fz.generic_battery],
  1071. toZigbee: [],
  1072. meta: {configureKey: 1},
  1073. configure: async (device, coordinatorEndpoint) => {
  1074. const endpoint = device.getEndpoint(1);
  1075. await bind(endpoint, coordinatorEndpoint, ['genLevelCtrl', 'genPowerCfg']);
  1076. await configureReporting.batteryPercentageRemaining(endpoint);
  1077. },
  1078. },
  1079. {
  1080. zigbeeModel: ['TRADFRI motion sensor'],
  1081. model: 'E1525',
  1082. vendor: 'IKEA',
  1083. description: 'TRADFRI motion sensor',
  1084. supports: 'occupancy',
  1085. fromZigbee: [fz.generic_battery, fz.E1525_occupancy],
  1086. toZigbee: [],
  1087. meta: {configureKey: 1},
  1088. configure: async (device, coordinatorEndpoint) => {
  1089. const endpoint = device.getEndpoint(1);
  1090. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
  1091. await configureReporting.batteryPercentageRemaining(endpoint);
  1092. },
  1093. },
  1094. {
  1095. zigbeeModel: ['TRADFRI signal repeater'],
  1096. model: 'E1746',
  1097. description: 'TRADFRI signal repeater',
  1098. supports: 'linkquality',
  1099. vendor: 'IKEA',
  1100. fromZigbee: [fz.E1746_linkquality],
  1101. toZigbee: [],
  1102. meta: {configureKey: 1},
  1103. configure: async (device, coordinatorEndpoint) => {
  1104. const endpoint = device.getEndpoint(1);
  1105. const payload = [{attribute: 'modelId', minimumReportInterval: 3600, maximumReportInterval: 14400}];
  1106. await endpoint.configureReporting('genBasic', payload);
  1107. },
  1108. },
  1109. {
  1110. zigbeeModel: ['FYRTUR block-out roller blind'],
  1111. model: 'E1757',
  1112. vendor: 'IKEA',
  1113. description: 'FYRTUR roller blind',
  1114. supports: 'open, close, stop, position',
  1115. fromZigbee: [fz.cover_position_tilt, fz.generic_battery],
  1116. toZigbee: [tz.cover_state, tz.cover_position_tilt],
  1117. meta: {configureKey: 2},
  1118. configure: async (device, coordinatorEndpoint) => {
  1119. const endpoint = device.getEndpoint(1);
  1120. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'closuresWindowCovering']);
  1121. await configureReporting.batteryPercentageRemaining(endpoint);
  1122. await configureReporting.currentPositionLiftPercentage(endpoint);
  1123. },
  1124. },
  1125. {
  1126. zigbeeModel: ['KADRILJ roller blind'],
  1127. model: 'E1926',
  1128. vendor: 'IKEA',
  1129. description: 'KADRILJ roller blind',
  1130. supports: 'open, close, stop, position',
  1131. fromZigbee: [fz.cover_position_tilt, fz.generic_battery],
  1132. toZigbee: [tz.cover_state, tz.cover_position_tilt],
  1133. meta: {configureKey: 2},
  1134. configure: async (device, coordinatorEndpoint) => {
  1135. const endpoint = device.getEndpoint(1);
  1136. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'closuresWindowCovering']);
  1137. await configureReporting.batteryPercentageRemaining(endpoint);
  1138. await configureReporting.currentPositionLiftPercentage(endpoint);
  1139. },
  1140. },
  1141. {
  1142. zigbeeModel: ['TRADFRI open/close remote'],
  1143. model: 'E1766',
  1144. vendor: 'IKEA',
  1145. description: 'TRADFRI open/close remote',
  1146. supports: 'click',
  1147. fromZigbee: [fz.generic_battery, fz.cover_close, fz.cover_open, fz.cover_stop],
  1148. toZigbee: [],
  1149. meta: {configureKey: 1},
  1150. configure: async (device, coordinatorEndpoint) => {
  1151. const endpoint = device.getEndpoint(1);
  1152. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
  1153. await configureReporting.batteryPercentageRemaining(endpoint);
  1154. },
  1155. },
  1156. {
  1157. zigbeeModel: ['GUNNARP panel 40*40'],
  1158. model: 'T1829',
  1159. description: 'GUNNARP panel 40*40',
  1160. vendor: 'IKEA',
  1161. extend: generic.light_onoff_brightness_colortemp,
  1162. },
  1163. {
  1164. zigbeeModel: ['TRADFRI bulb E12 WS opal 600lm'],
  1165. model: 'LED1738G7',
  1166. vendor: 'IKEA',
  1167. description: 'TRADFRI LED bulb E12 600 lumen, dimmable, white spectrum, opal white',
  1168. extend: generic.light_onoff_brightness_colortemp,
  1169. },
  1170.  
  1171. // Philips
  1172. {
  1173. zigbeeModel: ['LTC012'],
  1174. model: '3306431P7',
  1175. vendor: 'Philips',
  1176. description: 'Hue Struana',
  1177. extend: hue.light_onoff_brightness_colortemp,
  1178. },
  1179. {
  1180. zigbeeModel: ['LLC012', 'LLC011'],
  1181. model: '7299760PH',
  1182. vendor: 'Philips',
  1183. description: 'Hue Bloom',
  1184. extend: hue.light_onoff_brightness_colorxy,
  1185. },
  1186. {
  1187. zigbeeModel: ['LLC020'],
  1188. model: '7146060PH',
  1189. vendor: 'Philips',
  1190. description: 'Hue Go',
  1191. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1192. },
  1193. {
  1194. zigbeeModel: ['LCT026'],
  1195. model: '7602031P7',
  1196. vendor: 'Philips',
  1197. description: 'Hue Go with Bluetooth',
  1198. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1199. },
  1200. {
  1201. zigbeeModel: ['LCC001'],
  1202. model: '4090531P7',
  1203. vendor: 'Philips',
  1204. description: 'Hue Flourish white and color ambiance ceiling light',
  1205. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1206. },
  1207. {
  1208. zigbeeModel: ['LCG002'],
  1209. model: '929001953101',
  1210. vendor: 'Philips',
  1211. description: 'Hue White and Color Ambiance GU10',
  1212. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1213. },
  1214. {
  1215. zigbeeModel: ['LWA004'],
  1216. model: '8718699688820',
  1217. vendor: 'Philips',
  1218. description: 'Hue Filament Standard A60/E27 bluetooth',
  1219. extend: hue.light_onoff_brightness,
  1220. },
  1221. {
  1222. zigbeeModel: ['LCB001'],
  1223. model: '548727',
  1224. vendor: 'Philips',
  1225. description: 'Hue White and Color Ambiance BR30 with bluetooth',
  1226. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1227. },
  1228. {
  1229. zigbeeModel: ['LWB004'],
  1230. model: '433714',
  1231. vendor: 'Philips',
  1232. description: 'Hue Lux A19 bulb E27',
  1233. extend: hue.light_onoff_brightness,
  1234. },
  1235. {
  1236. zigbeeModel: ['LWB006', 'LWB014'],
  1237. model: '9290011370',
  1238. vendor: 'Philips',
  1239. description: 'Hue white A60 bulb E27',
  1240. extend: hue.light_onoff_brightness,
  1241. },
  1242. {
  1243. zigbeeModel: ['LWA001'],
  1244. model: '8718699673147',
  1245. vendor: 'Philips',
  1246. description: 'Hue white A60 bulb E27 bluetooth',
  1247. extend: hue.light_onoff_brightness,
  1248. },
  1249. {
  1250. zigbeeModel: ['LTA001'],
  1251. model: '9290022169',
  1252. vendor: 'Philips',
  1253. description: 'Hue white ambiance E27 with Bluetooth',
  1254. extend: hue.light_onoff_brightness_colortemp,
  1255. },
  1256. {
  1257. zigbeeModel: ['LWB010'],
  1258. model: '8718696449691',
  1259. vendor: 'Philips',
  1260. description: 'Hue White Single bulb B22',
  1261. extend: hue.light_onoff_brightness,
  1262. },
  1263. {
  1264. zigbeeModel: ['LWG001'],
  1265. model: '9290018195',
  1266. vendor: 'Philips',
  1267. description: 'Hue white GU10',
  1268. extend: hue.light_onoff_brightness,
  1269. },
  1270. {
  1271. zigbeeModel: ['LWG004'],
  1272. model: 'LWG004',
  1273. vendor: 'Philips',
  1274. description: 'Hue white GU10 bluetooth',
  1275. extend: hue.light_onoff_brightness,
  1276. },
  1277. {
  1278. zigbeeModel: ['LWO001'],
  1279. model: '8718699688882',
  1280. vendor: 'Philips',
  1281. description: 'Hue white Filament bulb G93 E27 bluetooth',
  1282. extend: hue.light_onoff_brightness,
  1283. },
  1284. {
  1285. zigbeeModel: ['LST001'],
  1286. model: '7299355PH',
  1287. vendor: 'Philips',
  1288. description: 'Hue white and color ambiance LightStrip',
  1289. extend: hue.light_onoff_brightness_colorxy,
  1290. },
  1291. {
  1292. zigbeeModel: ['LST002'],
  1293. model: '915005106701',
  1294. vendor: 'Philips',
  1295. description: 'Hue white and color ambiance LightStrip plus',
  1296. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1297. },
  1298. {
  1299. zigbeeModel: ['LST003', 'LST004'],
  1300. model: '9290018187B',
  1301. vendor: 'Philips',
  1302. description: 'Hue white and color ambiance LightStrip Outdoor',
  1303. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1304. },
  1305. {
  1306. zigbeeModel: ['LCA001', 'LCA002'],
  1307. model: '9290022166',
  1308. vendor: 'Philips',
  1309. description: 'Hue white and color ambiance E26/E27',
  1310. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1311. },
  1312. {
  1313. zigbeeModel: ['LCT001', 'LCT007', 'LCT010', 'LCT012', 'LCT014', 'LCT015', 'LCT016'],
  1314. model: '9290012573A',
  1315. vendor: 'Philips',
  1316. description: 'Hue white and color ambiance E26/E27/E14',
  1317. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1318. },
  1319. {
  1320. zigbeeModel: ['LCT002'],
  1321. model: '9290002579A',
  1322. vendor: 'Philips',
  1323. description: 'Hue white and color ambiance BR30',
  1324. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1325. },
  1326. {
  1327. zigbeeModel: ['LCT003'],
  1328. model: '8718696485880',
  1329. vendor: 'Philips',
  1330. description: 'Hue white and color ambiance GU10',
  1331. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1332. },
  1333. {
  1334. zigbeeModel: ['LCT024'],
  1335. model: '915005733701',
  1336. vendor: 'Philips',
  1337. description: 'Hue White and color ambiance Play Lightbar',
  1338. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1339. },
  1340. {
  1341. zigbeeModel: ['LTW011'],
  1342. model: '464800',
  1343. vendor: 'Philips',
  1344. description: 'Hue white ambiance BR30 flood light',
  1345. extend: hue.light_onoff_brightness_colortemp,
  1346. },
  1347. {
  1348. zigbeeModel: ['LTW012'],
  1349. model: '8718696695203',
  1350. vendor: 'Philips',
  1351. description: 'Hue white ambiance E14',
  1352. extend: hue.light_onoff_brightness_colortemp,
  1353. },
  1354. {
  1355. zigbeeModel: ['LWE002'],
  1356. model: '9290020399',
  1357. vendor: 'Philips',
  1358. description: 'Hue white E14',
  1359. extend: hue.light_onoff_brightness,
  1360. },
  1361. {
  1362. zigbeeModel: ['LTW013'],
  1363. model: '8718696598283',
  1364. vendor: 'Philips',
  1365. description: 'Hue white ambiance GU10',
  1366. extend: hue.light_onoff_brightness_colortemp,
  1367. },
  1368. {
  1369. zigbeeModel: ['LTG002'],
  1370. model: '929001953301',
  1371. vendor: 'Philips',
  1372. description: 'Hue white ambiance GU10 with Bluetooth',
  1373. extend: hue.light_onoff_brightness_colortemp,
  1374. },
  1375. {
  1376. zigbeeModel: ['LTW015'],
  1377. model: '9290011998B',
  1378. vendor: 'Philips',
  1379. description: 'Hue white ambiance E26',
  1380. extend: hue.light_onoff_brightness_colortemp,
  1381. },
  1382. {
  1383. zigbeeModel: ['LTA002'],
  1384. model: '9290022167',
  1385. vendor: 'Philips',
  1386. description: 'Hue white ambiance E26 with Bluetooth',
  1387. extend: hue.light_onoff_brightness_colortemp,
  1388. },
  1389. {
  1390. zigbeeModel: ['LTW010', 'LTW001', 'LTW004'],
  1391. model: '8718696548738',
  1392. vendor: 'Philips',
  1393. description: 'Hue white ambiance E26/E27',
  1394. extend: hue.light_onoff_brightness_colortemp,
  1395. },
  1396. {
  1397. zigbeeModel: ['LTW017'],
  1398. model: '915005587401',
  1399. vendor: 'Philips',
  1400. description: 'Hue white ambiance Adore light',
  1401. extend: hue.light_onoff_brightness_colortemp,
  1402. },
  1403. {
  1404. zigbeeModel: ['LCW001'],
  1405. model: '4090130P7',
  1406. vendor: 'Philips',
  1407. description: 'Hue Sana',
  1408. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1409. },
  1410. {
  1411. zigbeeModel: ['LTC001'],
  1412. model: '3261030P7',
  1413. vendor: 'Philips',
  1414. description: 'Hue Being',
  1415. extend: hue.light_onoff_brightness_colortemp,
  1416. },
  1417. {
  1418. zigbeeModel: ['LTC003'],
  1419. model: '3261331P7',
  1420. vendor: 'Philips',
  1421. description: 'Hue white ambiance Still',
  1422. extend: hue.light_onoff_brightness_colortemp,
  1423. },
  1424. {
  1425. zigbeeModel: ['LTC011'],
  1426. model: '4096730U7',
  1427. vendor: 'Philips',
  1428. description: 'Hue Cher ceiling light',
  1429. extend: hue.light_onoff_brightness_colortemp,
  1430. },
  1431. {
  1432. zigbeeModel: ['LTC013'],
  1433. model: '3216131P5',
  1434. vendor: 'Philips',
  1435. description: 'Hue white ambiance Aurelle square panel light',
  1436. extend: hue.light_onoff_brightness_colortemp,
  1437. },
  1438. {
  1439. zigbeeModel: ['LTC015'],
  1440. model: '3216331P5',
  1441. vendor: 'Philips',
  1442. description: 'Hue white ambiance Aurelle rectangle panel light',
  1443. extend: hue.light_onoff_brightness_colortemp,
  1444. },
  1445. {
  1446. zigbeeModel: ['LTC016'],
  1447. model: '3216431P5',
  1448. vendor: 'Philips',
  1449. description: 'Hue white ambiance Aurelle round panel light',
  1450. extend: hue.light_onoff_brightness_colortemp,
  1451. },
  1452. {
  1453. zigbeeModel: ['LTP003', 'LTP001'],
  1454. model: '4033930P7',
  1455. vendor: 'Philips',
  1456. description: 'Hue white ambiance suspension Fair',
  1457. extend: hue.light_onoff_brightness_colortemp,
  1458. },
  1459. {
  1460. zigbeeModel: ['LWF002', 'LWW001'],
  1461. model: '9290011370B',
  1462. vendor: 'Philips',
  1463. description: 'Hue white A60 bulb E27',
  1464. extend: hue.light_onoff_brightness,
  1465. },
  1466. {
  1467. zigbeeModel: ['LWB015'],
  1468. model: '046677476816',
  1469. vendor: 'Philips',
  1470. description: 'Hue white PAR38 outdoor',
  1471. extend: hue.light_onoff_brightness,
  1472. },
  1473. {
  1474. zigbeeModel: ['LLC010'],
  1475. model: '7199960PH',
  1476. vendor: 'Philips',
  1477. description: 'Hue Iris',
  1478. extend: hue.light_onoff_brightness_colorxy,
  1479. },
  1480. {
  1481. zigbeeModel: ['RWL020', 'RWL021'],
  1482. model: '324131092621',
  1483. vendor: 'Philips',
  1484. description: 'Hue dimmer switch',
  1485. supports: 'on/off, brightness, up/down/hold/release, click count',
  1486. fromZigbee: [
  1487. fz._324131092621_ignore_on, fz._324131092621_ignore_off, fz._324131092621_ignore_step,
  1488. fz._324131092621_ignore_stop, fz._324131092621_notification,
  1489. fz.battery_percentage_remaining,
  1490. ],
  1491. toZigbee: [],
  1492. meta: {configureKey: 1},
  1493. configure: async (device, coordinatorEndpoint) => {
  1494. const endpoint1 = device.getEndpoint(1);
  1495. await bind(endpoint1, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
  1496.  
  1497. const endpoint2 = device.getEndpoint(2);
  1498. const options = {manufacturerCode: 0x100B, disableDefaultResponse: true};
  1499. await endpoint2.write('genBasic', {0x0031: {value: 0x000B, type: 0x19}}, options);
  1500. await bind(endpoint2, coordinatorEndpoint, ['manuSpecificPhilips', 'genPowerCfg']);
  1501. await configureReporting.batteryPercentageRemaining(endpoint2);
  1502. },
  1503. endpoint: (device) => {
  1504. return {'ep1': 1, 'ep2': 2};
  1505. },
  1506. },
  1507. {
  1508. zigbeeModel: ['ROM001'],
  1509. model: '9290022230',
  1510. vendor: 'Philips',
  1511. description: 'Hue smart button',
  1512. supports: 'action',
  1513. fromZigbee: [fz.command_on, fz.command_off_with_effect, fz.SmartButton_skip, fz.battery_percentage_remaining],
  1514. toZigbee: [],
  1515. },
  1516. {
  1517. zigbeeModel: ['SML001'],
  1518. model: '9290012607',
  1519. vendor: 'Philips',
  1520. description: 'Hue motion sensor',
  1521. supports: 'occupancy, temperature, illuminance',
  1522. fromZigbee: [
  1523. fz.battery_percentage_remaining, fz.occupancy, fz.temperature,
  1524. fz.generic_illuminance,
  1525. fz.ignore_basic_report,
  1526. ],
  1527. toZigbee: [tz.occupancy_timeout, tz.hue_motion_sensitivity],
  1528. endpoint: (device) => {
  1529. return {
  1530. 'default': 2, // default
  1531. 'ep1': 1,
  1532. 'ep2': 2, // e.g. for write to msOccupancySensing
  1533. };
  1534. },
  1535. meta: {configureKey: 1},
  1536. configure: async (device, coordinatorEndpoint) => {
  1537. const endpoint = device.getEndpoint(2);
  1538. const binds = ['genPowerCfg', 'msIlluminanceMeasurement', 'msTemperatureMeasurement', 'msOccupancySensing'];
  1539. await bind(endpoint, coordinatorEndpoint, binds);
  1540. await configureReporting.batteryPercentageRemaining(endpoint);
  1541. await configureReporting.occupancy(endpoint);
  1542. await configureReporting.temperature(endpoint);
  1543. await configureReporting.illuminance(endpoint);
  1544. },
  1545. },
  1546. {
  1547. zigbeeModel: ['SML002'],
  1548. model: '9290019758',
  1549. vendor: 'Philips',
  1550. description: 'Hue motion outdoor sensor',
  1551. supports: 'occupancy, temperature, illuminance',
  1552. fromZigbee: [
  1553. fz.battery_percentage_remaining, fz.occupancy, fz.temperature,
  1554. fz.generic_illuminance,
  1555.  
  1556. ],
  1557. toZigbee: [tz.occupancy_timeout, tz.hue_motion_sensitivity],
  1558. endpoint: (device) => {
  1559. return {
  1560. 'default': 2, // default
  1561. 'ep1': 1,
  1562. 'ep2': 2, // e.g. for write to msOccupancySensing
  1563. };
  1564. },
  1565. meta: {configureKey: 1},
  1566. configure: async (device, coordinatorEndpoint) => {
  1567. const endpoint = device.getEndpoint(2);
  1568. const binds = ['genPowerCfg', 'msIlluminanceMeasurement', 'msTemperatureMeasurement', 'msOccupancySensing'];
  1569. await bind(endpoint, coordinatorEndpoint, binds);
  1570. await configureReporting.batteryPercentageRemaining(endpoint);
  1571. await configureReporting.occupancy(endpoint);
  1572. await configureReporting.temperature(endpoint);
  1573. await configureReporting.illuminance(endpoint);
  1574. },
  1575. },
  1576. {
  1577. zigbeeModel: ['LOM001'],
  1578. model: '929002240401',
  1579. vendor: 'Philips',
  1580. description: 'Hue smart plug - EU',
  1581. supports: 'on/off',
  1582. fromZigbee: [fz.on_off],
  1583. toZigbee: [tz.on_off],
  1584. meta: {configureKey: 1},
  1585. configure: async (device, coordinatorEndpoint) => {
  1586. const endpoint = device.getEndpoint(11);
  1587. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  1588. await configureReporting.onOff(endpoint);
  1589. },
  1590. },
  1591. {
  1592. zigbeeModel: ['LOM002'],
  1593. model: '046677552343',
  1594. vendor: 'Philips',
  1595. description: 'Hue smart plug bluetooth',
  1596. supports: 'on/off',
  1597. fromZigbee: [fz.on_off],
  1598. toZigbee: [tz.on_off],
  1599. meta: {configureKey: 1},
  1600. configure: async (device, coordinatorEndpoint) => {
  1601. const endpoint = device.getEndpoint(11);
  1602. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  1603. await configureReporting.onOff(endpoint);
  1604. },
  1605. },
  1606. {
  1607. zigbeeModel: ['LLC014'],
  1608. model: '7099860PH',
  1609. vendor: 'Philips',
  1610. description: 'LivingColors Aura',
  1611. extend: hue.light_onoff_brightness_colorxy,
  1612. },
  1613. {
  1614. zigbeeModel: ['LTC014'],
  1615. model: '3216231P5',
  1616. vendor: 'Philips',
  1617. description: 'Hue white ambiance Aurelle rectangle panel light',
  1618. extend: hue.light_onoff_brightness_colortemp,
  1619. },
  1620. {
  1621. zigbeeModel: ['1744530P7'],
  1622. model: '8718696170625',
  1623. vendor: 'Philips',
  1624. description: 'Hue Fuzo outdoor wall light',
  1625. extend: hue.light_onoff_brightness,
  1626. },
  1627. {
  1628. zigbeeModel: ['1743630P7'],
  1629. model: '17436/30/P7',
  1630. vendor: 'Philips',
  1631. description: 'Hue Welcome white flood light',
  1632. extend: hue.light_onoff_brightness,
  1633. },
  1634. {
  1635. zigbeeModel: ['LCS001'],
  1636. model: '1741830P7',
  1637. vendor: 'Philips',
  1638. description: 'Hue Lily outdoor spot light',
  1639. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1640. },
  1641. {
  1642. zigbeeModel: ['LWV001'],
  1643. model: '929002241201',
  1644. vendor: 'Philips',
  1645. description: 'Hue white filament Edison E27 LED',
  1646. extend: hue.light_onoff_brightness,
  1647. },
  1648. {
  1649. zigbeeModel: ['HML004'],
  1650. model: '3115331PH',
  1651. vendor: 'Philips',
  1652. description: 'Phoenix light',
  1653. extend: hue.light_onoff_brightness_colortemp_colorxy,
  1654. },
  1655.  
  1656. // Belkin
  1657. {
  1658. zigbeeModel: ['MZ100'],
  1659. model: 'F7C033',
  1660. vendor: 'Belkin',
  1661. description: 'WeMo smart LED bulb',
  1662. fromZigbee: [
  1663. fz.brightness, fz.on_off,
  1664. ],
  1665. supports: generic.light_onoff_brightness.supports,
  1666. toZigbee: generic.light_onoff_brightness.toZigbee,
  1667. },
  1668.  
  1669. // EDP
  1670. {
  1671. zigbeeModel: ['ZB-SmartPlug-1.0.0'],
  1672. model: 'PLUG EDP RE:DY',
  1673. vendor: 'EDP',
  1674. description: 're:dy plug',
  1675. supports: 'on/off, power measurement',
  1676. fromZigbee: [fz.on_off, fz.generic_power],
  1677. toZigbee: [tz.on_off],
  1678. meta: {configureKey: 2},
  1679. configure: async (device, coordinatorEndpoint) => {
  1680. const endpoint = device.getEndpoint(85);
  1681. await configureReporting.onOff(endpoint);
  1682. await configureReporting.instantaneousDemand(endpoint);
  1683. await endpoint.read('seMetering', ['multiplier', 'divisor']);
  1684. },
  1685. },
  1686. {
  1687. zigbeeModel: ['ZB-RelayControl-1.0.0'],
  1688. model: 'SWITCH EDP RE:DY',
  1689. vendor: 'EDP',
  1690. description: 're:dy switch',
  1691. supports: 'on/off',
  1692. fromZigbee: [fz.on_off],
  1693. toZigbee: [tz.on_off],
  1694. meta: {configureKey: 1},
  1695. configure: async (device, coordinatorEndpoint) => {
  1696. const endpoint = device.getEndpoint(85);
  1697. await configureReporting.onOff(endpoint);
  1698. },
  1699. },
  1700.  
  1701. // Custom devices (DiY)
  1702. {
  1703. zigbeeModel: ['lumi.router'],
  1704. model: 'CC2530.ROUTER',
  1705. vendor: 'Custom devices (DiY)',
  1706. description: '[CC2530 router](http://ptvo.info/cc2530-based-zigbee-coordinator-and-router-112/)',
  1707. supports: 'state, description, type, rssi',
  1708. fromZigbee: [
  1709. fz.CC2530ROUTER_state, fz.CC2530ROUTER_meta, fz.ignore_basic_report,
  1710. ],
  1711. toZigbee: [tz.ptvo_switch_trigger],
  1712. },
  1713. {
  1714. zigbeeModel: ['ptvo.switch'],
  1715. model: 'ptvo.switch',
  1716. vendor: 'Custom devices (DiY)',
  1717. description: '[Multi-channel relay switch](https://ptvo.info/zigbee-switch-configurable-firmware-router-199/)',
  1718. supports: 'hold, single, double and triple click, on/off',
  1719. fromZigbee: [fz.ptvo_switch_state, fz.ptvo_switch_buttons],
  1720. toZigbee: [tz.on_off, tz.ptvo_switch_trigger],
  1721. endpoint: (device) => {
  1722. return {'bottom_left': 1, 'bottom_right': 2, 'top_left': 3, 'top_right': 4, 'center': 5};
  1723. },
  1724. },
  1725. {
  1726. zigbeeModel: ['DNCKAT_S001'],
  1727. model: 'DNCKATSW001',
  1728. vendor: 'Custom devices (DiY)',
  1729. description: '[DNCKAT single key wired wall light switch](https://github.com/dzungpv/dnckatsw00x/)',
  1730. supports: 'on/off',
  1731. fromZigbee: [fz.on_off],
  1732. toZigbee: [tz.on_off],
  1733. },
  1734. {
  1735. zigbeeModel: ['DNCKAT_S002'],
  1736. model: 'DNCKATSW002',
  1737. vendor: 'Custom devices (DiY)',
  1738. description: '[DNCKAT double key wired wall light switch](https://github.com/dzungpv/dnckatsw00x/)',
  1739. supports: 'hold/release, on/off',
  1740. fromZigbee: [fz.DNCKAT_S00X_state, fz.DNCKAT_S00X_buttons],
  1741. toZigbee: [tz.on_off],
  1742. endpoint: (device) => {
  1743. return {'left': 1, 'right': 2};
  1744. },
  1745. },
  1746. {
  1747. zigbeeModel: ['DNCKAT_S003'],
  1748. model: 'DNCKATSW003',
  1749. vendor: 'Custom devices (DiY)',
  1750. description: '[DNCKAT triple key wired wall light switch](https://github.com/dzungpv/dnckatsw00x/)',
  1751. supports: 'hold/release, on/off',
  1752. fromZigbee: [fz.DNCKAT_S00X_state, fz.DNCKAT_S00X_buttons],
  1753. toZigbee: [tz.on_off],
  1754. endpoint: (device) => {
  1755. return {'left': 1, 'center': 2, 'right': 3};
  1756. },
  1757. },
  1758. {
  1759. zigbeeModel: ['DNCKAT_S004'],
  1760. model: 'DNCKATSW004',
  1761. vendor: 'Custom devices (DiY)',
  1762. description: '[DNCKAT quadruple key wired wall light switch](https://github.com/dzungpv/dnckatsw00x/)',
  1763. supports: 'hold/release, on/off',
  1764. fromZigbee: [fz.DNCKAT_S00X_state, fz.DNCKAT_S00X_buttons],
  1765. toZigbee: [tz.on_off],
  1766. endpoint: (device) => {
  1767. return {'bottom_left': 1, 'bottom_right': 2, 'top_left': 3, 'top_right': 4};
  1768. },
  1769. },
  1770. {
  1771. zigbeeModel: ['ZigUP'],
  1772. model: 'ZigUP',
  1773. vendor: 'Custom devices (DiY)',
  1774. description: '[CC2530 based ZigBee relais, switch, sensor and router](https://github.com/formtapez/ZigUP/)',
  1775. supports: 'relais, RGB-stripe, sensors, S0-counter, ADC, digital I/O',
  1776. fromZigbee: [fz.ZigUP_parse],
  1777. toZigbee: [tz.on_off, tz.light_color, tz.ZigUP_lock],
  1778. },
  1779. {
  1780. zigbeeModel: ['ZWallRemote0'],
  1781. model: 'ZWallRemote0',
  1782. vendor: 'Custom devices (DiY)',
  1783. description: 'Matts Wall Switch Remote (https://github.com/mattlokes/ZWallRemote)',
  1784. supports: 'on/off',
  1785. fromZigbee: [fz.cmdToggle],
  1786. toZigbee: [],
  1787. },
  1788. {
  1789. zigbeeModel: ['DTB190502A1'],
  1790. model: 'DTB190502A1',
  1791. vendor: 'Custom devices (DiY)',
  1792. description: '[CC2530 based IO Board https://databyte.ch/?portfolio=zigbee-erstes-board-dtb190502a)',
  1793. supports: 'switch, buttons',
  1794. fromZigbee: [fz.DTB190502A1_parse],
  1795. toZigbee: [tz.DTB190502A1_LED],
  1796. },
  1797.  
  1798. // DIYRuZ
  1799. {
  1800. zigbeeModel: ['DIYRuZ_R4_5'],
  1801. model: 'DIYRuZ_R4_5',
  1802. vendor: 'DIYRuZ',
  1803. description: '[DiY 4 Relays + 4 switches + 1 buzzer](http://modkam.ru/?p=1054)',
  1804. supports: 'on/off',
  1805. fromZigbee: [fz.DNCKAT_S00X_state],
  1806. toZigbee: [tz.on_off],
  1807. endpoint: (device) => {
  1808. return {'bottom_left': 1, 'bottom_right': 2, 'top_left': 3, 'top_right': 4, 'center': 5};
  1809. },
  1810. },
  1811. {
  1812. zigbeeModel: ['DIYRuZ_KEYPAD20'],
  1813. model: 'DIYRuZ_KEYPAD20',
  1814. vendor: 'DIYRuZ',
  1815. description: '[DiY 20 button keypad](http://modkam.ru/?p=1114)',
  1816. supports: 'click',
  1817. fromZigbee: [fz.keypad20states, fz.keypad20_battery],
  1818. toZigbee: [],
  1819. endpoint: (device) => {
  1820. return {
  1821. 'btn_1': 1, 'btn_2': 2, 'btn_3': 3, 'btn_4': 4, 'btn_5': 5,
  1822. 'btn_6': 6, 'btn_7': 7, 'btn_8': 8, 'btn_9': 9, 'btn_10': 10,
  1823. 'btn_11': 11, 'btn_12': 12, 'btn_13': 13, 'btn_14': 14, 'btn_15': 15,
  1824. 'btn_16': 16, 'btn_17': 17, 'btn_18': 18, 'btn_19': 19, 'btn_20': 20,
  1825. };
  1826. },
  1827. },
  1828. {
  1829. zigbeeModel: ['DIYRuZ_magnet'],
  1830. model: 'DIYRuZ_magnet',
  1831. vendor: 'DIYRuZ',
  1832. description: '[DIYRuZ contact sensor](https://modkam.ru/?p=1220)',
  1833. supports: 'contact',
  1834. fromZigbee: [fz.keypad20_battery, fz.diyruz_contact],
  1835. toZigbee: [],
  1836. },
  1837. {
  1838. zigbeeModel: ['DYRuZ_rspm'],
  1839. model: 'DYRuZ_rspm',
  1840. vendor: 'DIYRuZ',
  1841. description: '[DIYRuZ relay switch power meter](https://modkam.ru/?p=1309)',
  1842. supports: 'relay, switch, adc',
  1843. fromZigbee: [fz.diyruz_rspm],
  1844. toZigbee: [tz.on_off],
  1845. },
  1846.  
  1847. // eCozy
  1848. {
  1849. zigbeeModel: ['Thermostat'],
  1850. model: '1TST-EU',
  1851. vendor: 'eCozy',
  1852. description: 'Smart heating thermostat',
  1853. supports: 'temperature, occupancy, un-/occupied heating, schedule',
  1854. fromZigbee: [
  1855. fz.generic_battery_voltage,
  1856. fz.thermostat_att_report,
  1857. ],
  1858. toZigbee: [
  1859. tz.factory_reset, tz.thermostat_local_temperature, tz.thermostat_local_temperature_calibration,
  1860. tz.thermostat_occupancy, tz.thermostat_occupied_heating_setpoint,
  1861. tz.thermostat_unoccupied_heating_setpoint, tz.thermostat_setpoint_raise_lower,
  1862. tz.thermostat_remote_sensing, tz.thermostat_control_sequence_of_operation, tz.thermostat_system_mode,
  1863. tz.thermostat_weekly_schedule, tz.thermostat_clear_weekly_schedule, tz.thermostat_weekly_schedule_rsp,
  1864. tz.thermostat_relay_status_log, tz.thermostat_relay_status_log_rsp,
  1865. ],
  1866. meta: {configureKey: 1},
  1867. configure: async (device, coordinatorEndpoint) => {
  1868. const endpoint = device.getEndpoint(3);
  1869. const binds = [
  1870. 'genBasic', 'genPowerCfg', 'genIdentify', 'genTime', 'genPollCtrl', 'hvacThermostat',
  1871. 'hvacUserInterfaceCfg',
  1872. ];
  1873. await bind(endpoint, coordinatorEndpoint, binds);
  1874. await configureReporting.thermostatTemperature(endpoint);
  1875. },
  1876. },
  1877.  
  1878. // OSRAM
  1879. {
  1880. zigbeeModel: ['Outdoor Lantern W RGBW OSRAM'],
  1881. model: '4058075816718',
  1882. vendor: 'OSRAM',
  1883. description: 'SMART+ outdoor wall lantern RGBW',
  1884. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1885. },
  1886. {
  1887. zigbeeModel: ['Outdoor Lantern B50 RGBW OSRAM'],
  1888. model: '4058075816732',
  1889. vendor: 'OSRAM',
  1890. description: 'SMART+ outdoor lantern RGBW',
  1891. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1892. },
  1893. {
  1894. zigbeeModel: ['Classic A60 RGBW'],
  1895. model: 'AA69697',
  1896. vendor: 'OSRAM',
  1897. description: 'Classic A60 RGBW',
  1898. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1899. },
  1900. {
  1901. zigbeeModel: ['A60 TW Z3'],
  1902. model: 'AC10787',
  1903. vendor: 'OSRAM',
  1904. description: 'SMART+ classic E27 TW',
  1905. extend: generic.light_onoff_brightness_colortemp,
  1906. },
  1907. {
  1908. zigbeeModel: ['CLA60 RGBW OSRAM'],
  1909. model: 'AC03645',
  1910. vendor: 'OSRAM',
  1911. description: 'LIGHTIFY LED CLA60 E27 RGBW',
  1912. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1913. },
  1914. {
  1915. zigbeeModel: ['CLA60 TW OSRAM'],
  1916. model: 'AC03642',
  1917. vendor: 'OSRAM',
  1918. description: 'SMART+ CLASSIC A 60 TW',
  1919. extend: generic.light_onoff_brightness_colortemp,
  1920. },
  1921. {
  1922. zigbeeModel: ['PAR16 DIM Z3'],
  1923. model: 'AC08560',
  1924. vendor: 'OSRAM',
  1925. description: 'SMART+ LED PAR16 GU10',
  1926. extend: generic.light_onoff_brightness,
  1927. },
  1928. {
  1929. zigbeeModel: ['CLA60 RGBW Z3'],
  1930. model: 'AC03647',
  1931. vendor: 'OSRAM',
  1932. description: 'SMART+ LED CLASSIC E27 RGBW',
  1933. extend: generic.light_onoff_brightness_colortemp_colorxy,
  1934. },
  1935. {
  1936. // AA70155 is model number of both bulbs.
  1937. zigbeeModel: ['LIGHTIFY A19 Tunable White', 'Classic A60 TW'],
  1938. model: 'AA70155',
  1939. vendor: 'OSRAM',
  1940. description: 'LIGHTIFY LED A19 tunable white / Classic A60 TW',
  1941. supports: generic.light_onoff_brightness_colortemp.supports,
  1942. toZigbee: generic.light_onoff_brightness_colortemp.toZigbee.concat([tz.osram_cmds]),
  1943. fromZigbee: generic.light_onoff_brightness_colortemp.fromZigbee,
  1944. },
  1945. {
  1946. zigbeeModel: ['PAR16 50 TW'],
  1947. model: 'AA68199',
  1948. vendor: 'OSRAM',
  1949. description: 'LIGHTIFY LED PAR16 50 GU10 tunable white',
  1950. supports: generic.light_onoff_brightness_colortemp.supports,
  1951. toZigbee: generic.light_onoff_brightness_colortemp.toZigbee.concat([tz.osram_cmds]),
  1952. fromZigbee: generic.light_onoff_brightness_colortemp.fromZigbee,
  1953. },
  1954. {
  1955. zigbeeModel: ['Classic B40 TW - LIGHTIFY'],
  1956. model: 'AB32840',
  1957. vendor: 'OSRAM',
  1958. description: 'LIGHTIFY LED Classic B40 tunable white',
  1959. extend: generic.light_onoff_brightness_colortemp,
  1960. },
  1961. {
  1962. zigbeeModel: ['Ceiling TW OSRAM'],
  1963. model: '4058075816794',
  1964. vendor: 'OSRAM',
  1965. description: 'Smart+ Ceiling TW',
  1966. extend: generic.light_onoff_brightness_colortemp,
  1967. },
  1968. {
  1969. zigbeeModel: ['Classic A60 W clear - LIGHTIFY'],
  1970. model: 'AC03641',
  1971. vendor: 'OSRAM',
  1972. description: 'LIGHTIFY LED Classic A60 clear',
  1973. extend: generic.light_onoff_brightness,
  1974. },
  1975. {
  1976. zigbeeModel: ['Surface Light W ?C LIGHTIFY'],
  1977. model: '4052899926158',
  1978. vendor: 'OSRAM',
  1979. description: 'LIGHTIFY Surface Light TW',
  1980. extend: generic.light_onoff_brightness,
  1981. },
  1982. {
  1983. zigbeeModel: ['Surface Light TW'],
  1984. model: 'AB401130055',
  1985. vendor: 'OSRAM',
  1986. description: 'LIGHTIFY Surface Light LED Tunable White',
  1987. extend: generic.light_onoff_brightness_colortemp,
  1988. },
  1989. {
  1990. zigbeeModel: ['Plug 01'],
  1991. model: 'AB3257001NJ',
  1992. description: 'Smart+ plug',
  1993. supports: 'on/off',
  1994. vendor: 'OSRAM',
  1995. fromZigbee: [fz.on_off],
  1996. toZigbee: [tz.on_off],
  1997. meta: {configureKey: 1},
  1998. configure: async (device, coordinatorEndpoint) => {
  1999. const endpoint = device.getEndpoint(3);
  2000. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  2001. await configureReporting.onOff(endpoint);
  2002. },
  2003. },
  2004. {
  2005. zigbeeModel: ['Plug Z3'],
  2006. model: 'AC10691',
  2007. description: 'Smart+ plug',
  2008. supports: 'on/off',
  2009. vendor: 'OSRAM',
  2010. fromZigbee: [fz.on_off],
  2011. toZigbee: [tz.on_off],
  2012. meta: {configureKey: 1},
  2013. configure: async (device, coordinatorEndpoint) => {
  2014. let endpoint = device.getEndpoint(3);
  2015. // Endpoint 3 is not always present, use endpoint 1 in that case
  2016. // https://github.com/Koenkk/zigbee2mqtt/issues/2178
  2017. if (!endpoint) endpoint = device.getEndpoint(1);
  2018. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  2019. await configureReporting.onOff(endpoint);
  2020. },
  2021. },
  2022. {
  2023. zigbeeModel: ['Flex RGBW', 'LIGHTIFY Indoor Flex RGBW', 'LIGHTIFY Flex RGBW'],
  2024. model: '4052899926110',
  2025. vendor: 'OSRAM',
  2026. description: 'Flex RGBW',
  2027. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2028. },
  2029. {
  2030. zigbeeModel: ['LIGHTIFY Outdoor Flex RGBW', 'LIGHTIFY FLEX OUTDOOR RGBW'],
  2031. model: '4058075036185',
  2032. vendor: 'OSRAM',
  2033. description: 'Outdoor Flex RGBW',
  2034. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2035. },
  2036. {
  2037. zigbeeModel: ['Gardenpole RGBW-Lightify'],
  2038. model: '4058075036147',
  2039. vendor: 'OSRAM',
  2040. description: 'Smart+ gardenpole RGBW',
  2041. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2042. },
  2043. {
  2044. zigbeeModel: ['Gardenpole Mini RGBW OSRAM'],
  2045. model: 'AC0363900NJ',
  2046. vendor: 'OSRAM',
  2047. description: 'Smart+ mini gardenpole RGBW',
  2048. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2049. },
  2050. {
  2051. zigbeeModel: ['PAR 16 50 RGBW - LIGHTIFY'],
  2052. model: 'AB35996',
  2053. vendor: 'OSRAM',
  2054. description: 'Smart+ Spot GU10 Multicolor',
  2055. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2056. },
  2057. {
  2058. zigbeeModel: ['PAR16 RGBW Z3'],
  2059. model: 'AC08559',
  2060. vendor: 'OSRAM',
  2061. description: 'SMART+ Spot GU10 Multicolor',
  2062. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2063. },
  2064. {
  2065. zigbeeModel: ['B40 DIM Z3'],
  2066. model: 'AC08562',
  2067. vendor: 'OSRAM',
  2068. description: 'SMART+ Candle E14 Dimmable White',
  2069. extend: generic.light_onoff_brightness,
  2070. },
  2071. {
  2072. zigbeeModel: ['Motion Sensor-A'],
  2073. model: 'AC01353010G',
  2074. vendor: 'OSRAM',
  2075. description: 'SMART+ Motion Sensor',
  2076. supports: 'occupancy and temperature',
  2077. fromZigbee: [
  2078. fz.temperature,
  2079. fz.iaszone_occupancy_2,
  2080. ],
  2081. toZigbee: [],
  2082. meta: {configureKey: 1},
  2083. configure: async (device, coordinatorEndpoint) => {
  2084. const endpoint = device.getEndpoint(1);
  2085. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  2086. await configureReporting.temperature(endpoint);
  2087. await configureReporting.batteryPercentageRemaining(endpoint);
  2088. },
  2089. },
  2090. {
  2091. zigbeeModel: ['MR16 TW OSRAM'],
  2092. model: 'AC03648',
  2093. vendor: 'OSRAM',
  2094. description: 'SMART+ spot GU5.3 tunable white',
  2095. extend: generic.light_onoff_brightness_colortemp,
  2096. },
  2097. {
  2098. zigbeeModel: ['Lightify Switch Mini', 'Lightify Switch Mini blue'],
  2099. model: 'AC0251100NJ/AC0251700NJ',
  2100. vendor: 'OSRAM',
  2101. description: 'Smart+ switch mini',
  2102. supports: 'circle, up, down and hold/release',
  2103. fromZigbee: [
  2104. fz.AC0251100NJ_cmdOn, fz.AC0251100NJ_cmdMoveWithOnOff, fz.AC0251100NJ_cmdStop,
  2105. fz.AC0251100NJ_cmdMoveToColorTemp, fz.AC0251100NJ_cmdMoveHue, fz.AC0251100NJ_cmdMoveToSaturation,
  2106. fz.AC0251100NJ_cmdOff, fz.AC0251100NJ_cmdMove, fz.battery_3V,
  2107. fz.AC0251100NJ_cmdMoveToLevelWithOnOff,
  2108. ],
  2109. toZigbee: [],
  2110. meta: {configureKey: 1},
  2111. configure: async (device, coordinatorEndpoint) => {
  2112. const endpoint1 = device.getEndpoint(1);
  2113. const endpoint2 = device.getEndpoint(2);
  2114. const endpoint3 = device.getEndpoint(3);
  2115. await bind(endpoint1, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl', 'genPowerCfg']);
  2116. await bind(endpoint2, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
  2117. await bind(endpoint3, coordinatorEndpoint, ['genLevelCtrl', 'lightingColorCtrl']);
  2118. await configureReporting.batteryVoltage(endpoint1);
  2119. },
  2120. },
  2121. {
  2122. zigbeeModel: ['SubstiTube'],
  2123. model: 'ST8AU-CON',
  2124. vendor: 'OSRAM',
  2125. description: 'OSRAM SubstiTUBE T8 Advanced UO Connected',
  2126. extend: generic.light_onoff_brightness,
  2127. },
  2128.  
  2129.  
  2130. // Hive
  2131. {
  2132. zigbeeModel: ['FWBulb01'],
  2133. model: 'HALIGHTDIMWWE27',
  2134. vendor: 'Hive',
  2135. description: 'Active smart bulb white LED (E27)',
  2136. extend: generic.light_onoff_brightness,
  2137. },
  2138. {
  2139. zigbeeModel: ['FWBulb02UK'],
  2140. model: 'HALIGHTDIMWWB22',
  2141. vendor: 'Hive',
  2142. description: 'Active smart bulb white LED (B22)',
  2143. extend: generic.light_onoff_brightness,
  2144. },
  2145. {
  2146. zigbeeModel: ['SLP2b', 'SLP2c'],
  2147. model: '1613V',
  2148. vendor: 'Hive',
  2149. description: 'Active plug',
  2150. supports: 'on/off, power measurement',
  2151. fromZigbee: [fz.on_off, fz.generic_power, fz.temperature],
  2152. toZigbee: [tz.on_off],
  2153. meta: {configureKey: 2},
  2154. configure: async (device, coordinatorEndpoint) => {
  2155. const endpoint = device.getEndpoint(9);
  2156. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  2157. await configureReporting.onOff(endpoint);
  2158. await configureReporting.instantaneousDemand(endpoint);
  2159. await endpoint.read('seMetering', ['multiplier', 'divisor']);
  2160. },
  2161. },
  2162. {
  2163. zigbeeModel: ['TWBulb01US'],
  2164. model: 'HV-GSCXZB269',
  2165. vendor: 'Hive',
  2166. description: 'Active light cool to warm white (E26) ',
  2167. extend: generic.light_onoff_brightness_colortemp,
  2168. },
  2169. {
  2170. zigbeeModel: ['TWBulb01UK'],
  2171. model: 'HV-GSCXZB279_HV-GSCXZB229',
  2172. vendor: 'Hive',
  2173. description: 'Active light, warm to cool white (E27 & B22)',
  2174. extend: generic.light_onoff_brightness_colortemp,
  2175. },
  2176. {
  2177. zigbeeModel: ['TWGU10Bulb01UK'],
  2178. model: 'HV-GUCXZB5',
  2179. vendor: 'Hive',
  2180. description: 'Active light, warm to cool white (GU10)',
  2181. extend: generic.light_onoff_brightness_colortemp,
  2182. },
  2183.  
  2184. // Innr
  2185. {
  2186. zigbeeModel: ['FL 130 C'],
  2187. model: 'FL 130 C',
  2188. vendor: 'Innr',
  2189. description: 'Color Flex LED strip',
  2190. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2191. },
  2192. {
  2193. zigbeeModel: ['BF 263'],
  2194. model: 'BF 263',
  2195. vendor: 'Innr',
  2196. description: 'B22 filament bulb dimmable',
  2197. extend: generic.light_onoff_brightness,
  2198. },
  2199. {
  2200. zigbeeModel: ['RB 185 C'],
  2201. model: 'RB 185 C',
  2202. vendor: 'Innr',
  2203. description: 'E27 bulb RGBW',
  2204. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2205. },
  2206. {
  2207. zigbeeModel: ['BY 185 C'],
  2208. model: 'BY 185 C',
  2209. vendor: 'Innr',
  2210. description: 'B22 bulb RGBW',
  2211. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2212. },
  2213. {
  2214. zigbeeModel: ['RB 250 C'],
  2215. model: 'RB 250 C',
  2216. vendor: 'Innr',
  2217. description: 'E14 bulb RGBW',
  2218. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2219. },
  2220. {
  2221. zigbeeModel: ['RB 265'],
  2222. model: 'RB 265',
  2223. vendor: 'Innr',
  2224. description: 'E27 bulb',
  2225. extend: generic.light_onoff_brightness,
  2226. },
  2227. {
  2228. zigbeeModel: ['RF 265'],
  2229. model: 'RF 265',
  2230. vendor: 'Innr',
  2231. description: 'E27 bulb filament clear',
  2232. extend: generic.light_onoff_brightness,
  2233. },
  2234. {
  2235. zigbeeModel: ['RB 278 T'],
  2236. model: 'RB 278 T',
  2237. vendor: 'Innr',
  2238. description: 'E27 bulb',
  2239. extend: generic.light_onoff_brightness,
  2240. },
  2241. {
  2242. zigbeeModel: ['RB 285 C'],
  2243. model: 'RB 285 C',
  2244. vendor: 'Innr',
  2245. description: 'E27 bulb RGBW',
  2246. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2247. },
  2248. {
  2249. zigbeeModel: ['BY 285 C'],
  2250. model: 'BY 285 C',
  2251. vendor: 'Innr',
  2252. description: 'B22 bulb RGBW',
  2253. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2254. },
  2255. {
  2256. zigbeeModel: ['RB 165'],
  2257. model: 'RB 165',
  2258. vendor: 'Innr',
  2259. description: 'E27 bulb',
  2260. extend: generic.light_onoff_brightness,
  2261. },
  2262. {
  2263. zigbeeModel: ['RB 175 W'],
  2264. model: 'RB 175 W',
  2265. vendor: 'Innr',
  2266. description: 'E27 bulb warm dimming',
  2267. extend: generic.light_onoff_brightness,
  2268. },
  2269. {
  2270. zigbeeModel: ['RB 178 T'],
  2271. model: 'RB 178 T',
  2272. vendor: 'Innr',
  2273. description: 'Smart bulb tunable white E27',
  2274. extend: generic.light_onoff_brightness_colortemp,
  2275. },
  2276. {
  2277. zigbeeModel: ['BY 178 T'],
  2278. model: 'BY 178 T',
  2279. vendor: 'Innr',
  2280. description: 'Smart bulb tunable white B22',
  2281. extend: generic.light_onoff_brightness_colortemp,
  2282. },
  2283. {
  2284. zigbeeModel: ['RS 122'],
  2285. model: 'RS 122',
  2286. vendor: 'Innr',
  2287. description: 'GU10 spot',
  2288. extend: generic.light_onoff_brightness,
  2289. },
  2290. {
  2291. zigbeeModel: ['RS 125'],
  2292. model: 'RS 125',
  2293. vendor: 'Innr',
  2294. description: 'GU10 spot',
  2295. extend: generic.light_onoff_brightness,
  2296. },
  2297. {
  2298. zigbeeModel: ['RS 225'],
  2299. model: 'RS 225',
  2300. vendor: 'Innr',
  2301. description: 'GU10 Spot',
  2302. extend: generic.light_onoff_brightness,
  2303. },
  2304. {
  2305. zigbeeModel: ['RS 128 T'],
  2306. model: 'RS 128 T',
  2307. vendor: 'Innr',
  2308. description: 'GU10 spot 350 lm, dimmable, white spectrum',
  2309. extend: generic.light_onoff_brightness_colortemp,
  2310. },
  2311. {
  2312. zigbeeModel: ['RS 228 T'],
  2313. model: 'RS 228 T',
  2314. vendor: 'Innr',
  2315. description: 'GU10 spot 350 lm, dimmable, white spectrum',
  2316. extend: generic.light_onoff_brightness_colortemp,
  2317. },
  2318. {
  2319. zigbeeModel: ['RB 145'],
  2320. model: 'RB 145',
  2321. vendor: 'Innr',
  2322. description: 'E14 candle',
  2323. extend: generic.light_onoff_brightness,
  2324. },
  2325. {
  2326. zigbeeModel: ['RB 245'],
  2327. model: 'RB 245',
  2328. vendor: 'Innr',
  2329. description: 'E14 candle',
  2330. extend: generic.light_onoff_brightness,
  2331. },
  2332. {
  2333. zigbeeModel: ['RB 248 T'],
  2334. model: 'RB 248 T',
  2335. vendor: 'Innr',
  2336. description: 'E14 candle with white spectrum',
  2337. extend: generic.light_onoff_brightness_colortemp,
  2338. },
  2339. {
  2340. zigbeeModel: ['RB 148 T'],
  2341. model: 'RB 148 T',
  2342. vendor: 'Innr',
  2343. description: 'E14 candle with white spectrum',
  2344. extend: generic.light_onoff_brightness_colortemp,
  2345. },
  2346. {
  2347. zigbeeModel: ['RF 263'],
  2348. model: 'RF 263',
  2349. vendor: 'Innr',
  2350. description: 'E27 filament bulb dimmable',
  2351. extend: generic.light_onoff_brightness,
  2352. },
  2353. {
  2354. zigbeeModel: ['BY 165', 'BY 265'],
  2355. model: 'BY 165',
  2356. vendor: 'Innr',
  2357. description: 'B22 bulb dimmable',
  2358. extend: generic.light_onoff_brightness,
  2359. },
  2360. {
  2361. zigbeeModel: ['PL 110'],
  2362. model: 'PL 110',
  2363. vendor: 'Innr',
  2364. description: 'Puck Light',
  2365. extend: generic.light_onoff_brightness,
  2366. },
  2367. {
  2368. zigbeeModel: ['ST 110'],
  2369. model: 'ST 110',
  2370. vendor: 'Innr',
  2371. description: 'Strip Light',
  2372. extend: generic.light_onoff_brightness,
  2373. },
  2374. {
  2375. zigbeeModel: ['UC 110'],
  2376. model: 'UC 110',
  2377. vendor: 'Innr',
  2378. description: 'Under cabinet light',
  2379. extend: generic.light_onoff_brightness,
  2380. },
  2381. {
  2382. zigbeeModel: ['DL 110 N'],
  2383. model: 'DL 110 N',
  2384. vendor: 'Innr',
  2385. description: 'Spot narrow',
  2386. extend: generic.light_onoff_brightness,
  2387. },
  2388. {
  2389. zigbeeModel: ['DL 110 W'],
  2390. model: 'DL 110 W',
  2391. vendor: 'Innr',
  2392. description: 'Spot wide',
  2393. extend: generic.light_onoff_brightness,
  2394. },
  2395. {
  2396. zigbeeModel: ['SL 110 N'],
  2397. model: 'SL 110 N',
  2398. vendor: 'Innr',
  2399. description: 'Spot Flex narrow',
  2400. extend: generic.light_onoff_brightness,
  2401. },
  2402. {
  2403. zigbeeModel: ['SL 110 M'],
  2404. model: 'SL 110 M',
  2405. vendor: 'Innr',
  2406. description: 'Spot Flex medium',
  2407. extend: generic.light_onoff_brightness,
  2408. },
  2409. {
  2410. zigbeeModel: ['SL 110 W'],
  2411. model: 'SL 110 W',
  2412. vendor: 'Innr',
  2413. description: 'Spot Flex wide',
  2414. extend: generic.light_onoff_brightness,
  2415. },
  2416. {
  2417. zigbeeModel: ['SP 120'],
  2418. model: 'SP 120',
  2419. vendor: 'Innr',
  2420. description: 'Smart plug',
  2421. supports: 'on/off, power measurement',
  2422. fromZigbee: [fz.SP120_power, fz.on_off, fz.ignore_genLevelCtrl_report],
  2423. toZigbee: [tz.on_off],
  2424. meta: {configureKey: 2},
  2425. configure: async (device, coordinatorEndpoint) => {
  2426. const endpoint = device.getEndpoint(1);
  2427. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement']);
  2428. await configureReporting.onOff(endpoint);
  2429. await configureReporting.activePower(endpoint);
  2430. await configureReporting.rmsCurrent(endpoint);
  2431. await configureReporting.rmsVoltage(endpoint);
  2432. },
  2433. },
  2434. {
  2435. zigbeeModel: ['SP 222'],
  2436. model: 'SP 222',
  2437. vendor: 'Innr',
  2438. description: 'Smart plug',
  2439. supports: 'on/off',
  2440. fromZigbee: [fz.on_off],
  2441. toZigbee: [tz.on_off],
  2442. },
  2443.  
  2444. // Sylvania
  2445. {
  2446. zigbeeModel: ['LIGHTIFY RT Tunable White'],
  2447. model: '73742',
  2448. vendor: 'Sylvania',
  2449. description: 'LIGHTIFY LED adjustable white RT 5/6',
  2450. extend: generic.light_onoff_brightness_colortemp,
  2451. },
  2452. {
  2453. zigbeeModel: ['RT RGBW'],
  2454. model: '73741',
  2455. vendor: 'Sylvania',
  2456. description: 'LIGHTIFY LED adjustable color RT 5/6',
  2457. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2458. },
  2459. {
  2460. zigbeeModel: ['LIGHTIFY BR Tunable White'],
  2461. model: '73740',
  2462. vendor: 'Sylvania',
  2463. description: 'LIGHTIFY LED adjustable white BR30',
  2464. extend: generic.light_onoff_brightness_colortemp,
  2465. },
  2466. {
  2467. zigbeeModel: ['LIGHTIFY BR RGBW', 'BR30 RGBW'],
  2468. model: '73739',
  2469. vendor: 'Sylvania',
  2470. description: 'LIGHTIFY LED RGBW BR30',
  2471. supports: generic.light_onoff_brightness_colortemp_colorxy.supports,
  2472. toZigbee: generic.light_onoff_brightness_colortemp_colorxy.toZigbee.concat([tz.osram_cmds]),
  2473. fromZigbee: generic.light_onoff_brightness_colortemp_colorxy.fromZigbee,
  2474. },
  2475. {
  2476. zigbeeModel: ['LIGHTIFY A19 RGBW', 'A19 RGBW'],
  2477. model: '73693',
  2478. vendor: 'Sylvania',
  2479. description: 'LIGHTIFY LED RGBW A19',
  2480. supports: generic.light_onoff_brightness_colortemp_colorxy.supports,
  2481. toZigbee: generic.light_onoff_brightness_colortemp_colorxy.toZigbee.concat([tz.osram_cmds]),
  2482. fromZigbee: generic.light_onoff_brightness_colortemp_colorxy.fromZigbee,
  2483. },
  2484. {
  2485. zigbeeModel: ['LIGHTIFY A19 ON/OFF/DIM', 'LIGHTIFY A19 ON/OFF/DIM 10 Year'],
  2486. model: '74283',
  2487. vendor: 'Sylvania',
  2488. description: 'LIGHTIFY LED soft white dimmable A19',
  2489. extend: generic.light_onoff_brightness,
  2490. },
  2491. {
  2492. zigbeeModel: ['A19 W 10 year'],
  2493. model: '74696',
  2494. vendor: 'Sylvania',
  2495. description: 'LIGHTIFY LED soft white dimmable A19',
  2496. supports: generic.light_onoff_brightness.supports,
  2497. toZigbee: generic.light_onoff_brightness.toZigbee.concat([tz.osram_cmds]),
  2498. fromZigbee: generic.light_onoff_brightness.fromZigbee.concat([
  2499. fz.ignore_light_color_colortemp_report,
  2500. ]),
  2501. },
  2502. {
  2503. zigbeeModel: ['PLUG'],
  2504. model: '72922-A',
  2505. vendor: 'Sylvania',
  2506. description: 'SMART+ Smart Plug',
  2507. supports: 'on/off',
  2508. fromZigbee: [fz.on_off],
  2509. toZigbee: [tz.on_off],
  2510. meta: {configureKey: 1},
  2511. configure: async (device, coordinatorEndpoint) => {
  2512. const endpoint = device.getEndpoint(1);
  2513. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  2514. await configureReporting.onOff(endpoint);
  2515. },
  2516. },
  2517. {
  2518. zigbeeModel: ['A19 TW 10 year'],
  2519. model: '71831',
  2520. vendor: 'Sylvania',
  2521. description: 'Smart Home adjustable white A19 LED bulb',
  2522. extend: generic.light_onoff_brightness_colortemp,
  2523. },
  2524. {
  2525. zigbeeModel: ['MR16 TW'],
  2526. model: '74282',
  2527. vendor: 'Sylvania',
  2528. description: 'Smart Home adjustable white MR16 LED bulb',
  2529. extend: generic.light_onoff_brightness_colortemp,
  2530. },
  2531. {
  2532. zigbeeModel: ['LIGHTIFY Gardenspot RGB'],
  2533. model: 'LTFY004',
  2534. vendor: 'Sylvania',
  2535. description: 'LIGHTIFY LED gardenspot mini RGB',
  2536. extend: generic.light_onoff_brightness_colorxy,
  2537. },
  2538. {
  2539. zigbeeModel: ['PAR38 W 10 year'],
  2540. model: '74580',
  2541. vendor: 'Sylvania',
  2542. description: 'Smart Home soft white PAR38 outdoor bulb',
  2543. extend: generic.light_onoff_brightness,
  2544. },
  2545.  
  2546. // GE
  2547. {
  2548. zigbeeModel: ['SoftWhite'],
  2549. model: 'PSB19-SW27',
  2550. vendor: 'GE',
  2551. description: 'Link smart LED light bulb, A19 soft white (2700K)',
  2552. extend: generic.light_onoff_brightness,
  2553. },
  2554. {
  2555. zigbeeModel: ['ZLL Light'],
  2556. model: '22670',
  2557. vendor: 'GE',
  2558. description: 'Link smart LED light bulb, A19/BR30 soft white (2700K)',
  2559. extend: generic.light_onoff_brightness,
  2560. },
  2561. {
  2562. zigbeeModel: ['45852'],
  2563. model: '45852GE',
  2564. vendor: 'GE',
  2565. description: 'ZigBee plug-in smart dimmer',
  2566. supports: 'on/off, brightness',
  2567. fromZigbee: [fz.brightness, fz.on_off],
  2568. toZigbee: [tz.light_onoff_brightness, tz.ignore_transition],
  2569. meta: {configureKey: 1},
  2570. configure: async (device, coordinatorEndpoint) => {
  2571. const endpoint = device.getEndpoint(1);
  2572. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  2573. await configureReporting.onOff(endpoint);
  2574. },
  2575. },
  2576. {
  2577. zigbeeModel: ['45853'],
  2578. model: '45853GE',
  2579. vendor: 'GE',
  2580. description: 'Plug-in smart switch',
  2581. supports: 'on/off',
  2582. fromZigbee: [fz.on_off, fz.generic_power],
  2583. toZigbee: [tz.on_off, tz.ignore_transition],
  2584. meta: {configureKey: 2},
  2585. configure: async (device, coordinatorEndpoint) => {
  2586. const endpoint = device.getEndpoint(1);
  2587. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  2588. await configureReporting.onOff(endpoint);
  2589. await configureReporting.instantaneousDemand(endpoint);
  2590. await endpoint.read('seMetering', ['multiplier', 'divisor']);
  2591. },
  2592. },
  2593. {
  2594. zigbeeModel: ['45856'],
  2595. model: '45856GE',
  2596. vendor: 'GE',
  2597. description: 'In-wall smart switch',
  2598. supports: 'on/off',
  2599. fromZigbee: [fz.on_off],
  2600. toZigbee: [tz.on_off, tz.ignore_transition],
  2601. meta: {configureKey: 1},
  2602. configure: async (device, coordinatorEndpoint) => {
  2603. const endpoint = device.getEndpoint(1);
  2604. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  2605. await configureReporting.onOff(endpoint);
  2606. },
  2607. },
  2608. {
  2609. zigbeeModel: ['45857'],
  2610. model: '45857GE',
  2611. vendor: 'GE',
  2612. description: 'ZigBee in-wall smart dimmer',
  2613. supports: 'on/off, brightness',
  2614. fromZigbee: [fz.brightness, fz.on_off],
  2615. toZigbee: [tz.light_onoff_brightness, tz.ignore_transition],
  2616. meta: {configureKey: 1},
  2617. configure: async (device, coordinatorEndpoint) => {
  2618. const endpoint = device.getEndpoint(1);
  2619. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  2620. await configureReporting.onOff(endpoint);
  2621. },
  2622. },
  2623. {
  2624. zigbeeModel: ['Smart Switch'],
  2625. model: 'PTAPT-WH02',
  2626. vendor: 'GE',
  2627. description: 'Quirky smart switch',
  2628. supports: 'on/off',
  2629. fromZigbee: [fz.on_off],
  2630. toZigbee: [tz.on_off],
  2631. endpoint: (device) => {
  2632. return {'default': 2};
  2633. },
  2634. meta: {configureKey: 1},
  2635. configure: async (device, coordinatorEndpoint) => {
  2636. const endpoint = device.getEndpoint(2);
  2637. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  2638. await configureReporting.onOff(endpoint);
  2639. },
  2640. },
  2641.  
  2642. // Sengled
  2643. {
  2644. zigbeeModel: ['E11-G13'],
  2645. model: 'E11-G13',
  2646. vendor: 'Sengled',
  2647. description: 'Element Classic (A19)',
  2648. extend: generic.light_onoff_brightness,
  2649. },
  2650. {
  2651. zigbeeModel: ['E11-G23', 'E11-G33'],
  2652. model: 'E11-G23/E11-G33',
  2653. vendor: 'Sengled',
  2654. description: 'Element Classic (A60)',
  2655. extend: generic.light_onoff_brightness,
  2656. },
  2657. {
  2658. zigbeeModel: ['Z01-CIA19NAE26'],
  2659. model: 'Z01-CIA19NAE26',
  2660. vendor: 'Sengled',
  2661. description: 'Element Touch (A19)',
  2662. extend: generic.light_onoff_brightness,
  2663. },
  2664. {
  2665. zigbeeModel: ['Z01-A19NAE26'],
  2666. model: 'Z01-A19NAE26',
  2667. vendor: 'Sengled',
  2668. description: 'Element Plus (A19)',
  2669. extend: generic.light_onoff_brightness_colortemp,
  2670. },
  2671. {
  2672. zigbeeModel: ['Z01-A60EAE27'],
  2673. model: 'Z01-A60EAE27',
  2674. vendor: 'Sengled',
  2675. description: 'Element Plus (A60)',
  2676. extend: generic.light_onoff_brightness_colortemp,
  2677. },
  2678. {
  2679. zigbeeModel: ['E11-N1EA'],
  2680. model: 'E11-N1EA',
  2681. vendor: 'Sengled',
  2682. description: 'Element Plus Color (A19)',
  2683. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2684. },
  2685. {
  2686. zigbeeModel: ['E12-N14'],
  2687. model: 'E12-N14',
  2688. vendor: 'Sengled',
  2689. description: 'Element Classic (BR30)',
  2690. extend: generic.light_onoff_brightness,
  2691. },
  2692. {
  2693. zigbeeModel: ['E1A-AC2'],
  2694. model: 'E1ACA4ABE38A',
  2695. vendor: 'Sengled',
  2696. description: 'Element downlight smart LED bulb',
  2697. extend: generic.light_onoff_brightness,
  2698. },
  2699.  
  2700. // Swann
  2701. {
  2702. zigbeeModel: ['SWO-KEF1PA'],
  2703. model: 'SWO-KEF1PA',
  2704. vendor: 'Swann',
  2705. description: 'Key fob remote',
  2706. supports: 'panic, home, away, sleep',
  2707. fromZigbee: [fz.KEF1PA_arm, fz.KEF1PA_panic],
  2708. toZigbee: [tz.factory_reset],
  2709. },
  2710. {
  2711. zigbeeModel: ['SWO-WDS1PA'],
  2712. model: 'SWO-WDS1PA',
  2713. vendor: 'Swann',
  2714. description: 'Window/door sensor',
  2715. supports: 'contact',
  2716. fromZigbee: [fz.ias_contact_alarm_1],
  2717. toZigbee: [],
  2718. },
  2719.  
  2720. // JIAWEN
  2721. {
  2722. zigbeeModel: ['FB56-ZCW08KU1.1', 'FB56-ZCW08KU1.0'],
  2723. model: 'K2RGBW01',
  2724. vendor: 'JIAWEN',
  2725. description: 'Wireless Bulb E27 9W RGBW',
  2726. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2727. },
  2728.  
  2729. // Netvox
  2730. {
  2731. zigbeeModel: ['Z809AE3R'],
  2732. model: 'Z809A',
  2733. vendor: 'Netvox',
  2734. description: 'Power socket with power consumption monitoring',
  2735. supports: 'on/off, power measurement',
  2736. fromZigbee: [fz.on_off, fz.Z809A_power],
  2737. toZigbee: [tz.on_off],
  2738. meta: {configureKey: 2},
  2739. configure: async (device, coordinatorEndpoint) => {
  2740. const endpoint = device.getEndpoint(1);
  2741. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement']);
  2742. await configureReporting.onOff(endpoint);
  2743. await configureReporting.rmsVoltage(endpoint);
  2744. await configureReporting.rmsCurrent(endpoint);
  2745. await configureReporting.activePower(endpoint);
  2746. await configureReporting.powerFactor(endpoint);
  2747. },
  2748. },
  2749.  
  2750. // Nanoleaf
  2751. {
  2752. zigbeeModel: ['NL08-0800'],
  2753. model: 'NL08-0800',
  2754. vendor: 'Nanoleaf',
  2755. description: 'Smart Ivy Bulb E27',
  2756. extend: generic.light_onoff_brightness,
  2757. },
  2758.  
  2759. // Nue, 3A
  2760. {
  2761. zigbeeModel: ['FTB56+ZSN15HG1.0'],
  2762. model: 'HGZB-1S',
  2763. vendor: 'Nue / 3A',
  2764. description: 'Smart 1 key scene wall switch',
  2765. supports: 'on/off, click',
  2766. toZigbee: [tz.on_off],
  2767. fromZigbee: [fz.scenes_recall_click, fz.ignore_power_report],
  2768. },
  2769. {
  2770. zigbeeModel: ['FTB56+ZSN16HG1.0'],
  2771. model: 'HGZB-02S',
  2772. vendor: 'Nue / 3A',
  2773. description: 'Smart 2 key scene wall switch',
  2774. supports: 'on/off, click',
  2775. toZigbee: [tz.on_off],
  2776. fromZigbee: [fz.scenes_recall_click, fz.ignore_power_report],
  2777. },
  2778. {
  2779. zigbeeModel: ['FB56+ZSN08KJ2.3'],
  2780. model: 'HGZB-045',
  2781. vendor: 'Nue / 3A',
  2782. description: 'Smart 4 key scene wall switch',
  2783. supports: 'on/off, click',
  2784. toZigbee: [tz.on_off],
  2785. fromZigbee: [fz.scenes_recall_click, fz.ignore_power_report],
  2786. },
  2787. {
  2788. zigbeeModel: ['LXN56-DC27LX1.1'],
  2789. model: 'LXZB-02A',
  2790. vendor: 'Nue / 3A',
  2791. description: 'Smart light controller',
  2792. extend: generic.light_onoff_brightness,
  2793. },
  2794. {
  2795. zigbeeModel: ['FNB56-ZSW03LX2.0', 'LXN-3S27LX1.0'],
  2796. model: 'HGZB-43',
  2797. vendor: 'Nue / 3A',
  2798. description: 'Smart light switch - 3 gang v2.0',
  2799. supports: 'on/off',
  2800. fromZigbee: [fz.generic_state_multi_ep],
  2801. toZigbee: [tz.on_off],
  2802. endpoint: (device) => {
  2803. return {'top': 1, 'center': 2, 'bottom': 3};
  2804. },
  2805. meta: {configureKey: 1},
  2806. configure: async (device, coordinatorEndpoint) => {
  2807. await bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
  2808. await bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
  2809. await bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
  2810. },
  2811. },
  2812. {
  2813. zigbeeModel: ['FB56+ZSW1IKJ1.7', 'FB56+ZSW1IKJ2.5'],
  2814. model: 'HGZB-043',
  2815. vendor: 'Nue / 3A',
  2816. description: 'Smart light switch - 3 gang',
  2817. supports: 'on/off',
  2818. fromZigbee: [fz.generic_state_multi_ep],
  2819. toZigbee: [tz.on_off],
  2820. endpoint: (device) => {
  2821. return {'top': 16, 'center': 17, 'bottom': 18};
  2822. },
  2823. meta: {configureKey: 1},
  2824. configure: async (device, coordinatorEndpoint) => {
  2825. await bind(device.getEndpoint(16), coordinatorEndpoint, ['genOnOff']);
  2826. await bind(device.getEndpoint(17), coordinatorEndpoint, ['genOnOff']);
  2827. await bind(device.getEndpoint(18), coordinatorEndpoint, ['genOnOff']);
  2828. },
  2829. },
  2830. {
  2831. zigbeeModel: ['FB56+ZSC05HG1.0', 'FNB56-ZBW01LX1.2'],
  2832. model: 'HGZB-04D / HGZB-4D-UK',
  2833. vendor: 'Nue / 3A',
  2834. description: 'Smart dimmer wall switch',
  2835. supports: 'on/off, brightness',
  2836. toZigbee: [tz.on_off, tz.light_brightness],
  2837. fromZigbee: [fz.on_off, fz.brightness],
  2838. },
  2839. {
  2840. zigbeeModel: ['FB56+ZSW1HKJ1.7', 'FB56+ZSW1HKJ2.5'],
  2841. model: 'HGZB-042',
  2842. vendor: 'Nue / 3A',
  2843. description: 'Smart light switch - 2 gang',
  2844. supports: 'on/off',
  2845. fromZigbee: [fz.generic_state_multi_ep],
  2846. toZigbee: [tz.on_off],
  2847. endpoint: (device) => {
  2848. return {'top': 16, 'bottom': 17};
  2849. },
  2850. meta: {configureKey: 1},
  2851. configure: async (device, coordinatorEndpoint) => {
  2852. await bind(device.getEndpoint(16), coordinatorEndpoint, ['genOnOff']);
  2853. await bind(device.getEndpoint(17), coordinatorEndpoint, ['genOnOff']);
  2854. },
  2855. },
  2856. {
  2857. zigbeeModel: ['FNB56-ZSW02LX2.0', 'LXN-2S27LX1.0'],
  2858. model: 'HGZB-42',
  2859. vendor: 'Nue / 3A',
  2860. description: 'Smart light switch - 2 gang v2.0',
  2861. supports: 'on/off',
  2862. fromZigbee: [fz.generic_state_multi_ep],
  2863. toZigbee: [tz.on_off],
  2864. endpoint: (device) => {
  2865. return {'top': 11, 'bottom': 12};
  2866. },
  2867. meta: {configureKey: 1},
  2868. configure: async (device, coordinatorEndpoint) => {
  2869. await bind(device.getEndpoint(11), coordinatorEndpoint, ['genOnOff']);
  2870. await bind(device.getEndpoint(12), coordinatorEndpoint, ['genOnOff']);
  2871. },
  2872. },
  2873. {
  2874. zigbeeModel: ['FNB56-SKT1JXN1.0'],
  2875. model: 'HGZB-20A',
  2876. vendor: 'Nue / 3A',
  2877. description: 'Power plug',
  2878. supports: 'on/off',
  2879. fromZigbee: [fz.on_off],
  2880. toZigbee: [tz.on_off],
  2881. meta: {configureKey: 1},
  2882. configure: async (device, coordinatorEndpoint) => {
  2883. await bind(device.getEndpoint(11), coordinatorEndpoint, ['genOnOff']);
  2884. },
  2885. },
  2886. {
  2887. zigbeeModel: ['FB56+ZSW1GKJ2.5', 'LXN-1S27LX1.0'],
  2888. model: 'HGZB-41',
  2889. vendor: 'Nue / 3A',
  2890. description: 'Smart one gang wall switch',
  2891. supports: 'on/off',
  2892. fromZigbee: [fz.on_off],
  2893. toZigbee: [tz.on_off],
  2894. },
  2895. {
  2896. zigbeeModel: ['FNB56-SKT1DHG1.4'],
  2897. model: 'MG-AUWS01',
  2898. vendor: 'Nue / 3A',
  2899. description: 'Smart Double GPO',
  2900. supports: 'on/off',
  2901. fromZigbee: [fz.nue_power_state],
  2902. toZigbee: [tz.on_off],
  2903. endpoint: (device) => {
  2904. return {'left': 12, 'right': 11};
  2905. },
  2906. },
  2907. {
  2908. zigbeeModel: ['FNB56-ZCW25FB1.9'],
  2909. model: 'XY12S-15',
  2910. vendor: 'Nue / 3A',
  2911. description: 'Smart light controller RGBW',
  2912. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2913. },
  2914. {
  2915. zigbeeModel: ['FNB56-ZSW23HG1.1', 'LXN56-LC27LX1.1'],
  2916. model: 'HGZB-01A',
  2917. vendor: 'Nue / 3A',
  2918. description: 'Smart in-wall switch',
  2919. supports: 'on/off',
  2920. fromZigbee: [fz.on_off],
  2921. toZigbee: [tz.on_off],
  2922. },
  2923. {
  2924. zigbeeModel: ['FNB56-ZSC01LX1.2', 'FB56+ZSW05HG1.2', 'FB56+ZSC04HG1.0'],
  2925. model: 'HGZB-02A',
  2926. vendor: 'Nue / 3A',
  2927. description: 'Smart light controller',
  2928. extend: generic.light_onoff_brightness,
  2929. },
  2930. {
  2931. zigbeeModel: ['FNB56-ZSW01LX2.0'],
  2932. model: 'HGZB-42-UK / HGZB-41 / HGZB-41-UK',
  2933. description: 'Smart switch 1 or 2 gang',
  2934. vendor: 'Nue / 3A',
  2935. supports: 'on/off',
  2936. fromZigbee: [fz.on_off],
  2937. toZigbee: [tz.on_off],
  2938. },
  2939. {
  2940. zigbeeModel: ['FNB56-ZCW25FB1.6', 'FNB56-ZCW25FB2.1'],
  2941. model: 'HGZB-06A',
  2942. vendor: 'Nue / 3A',
  2943. description: 'Smart 7W E27 light bulb',
  2944. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2945. },
  2946. {
  2947. zigbeeModel: ['LXN56-0S27LX1.1'],
  2948. model: 'HGZB-20-UK',
  2949. vendor: 'Nue / 3A',
  2950. description: 'Power plug',
  2951. supports: 'on/off',
  2952. fromZigbee: [fz.on_off],
  2953. toZigbee: [tz.on_off],
  2954. },
  2955.  
  2956. // Smart Home Pty
  2957. {
  2958. zigbeeModel: ['FB56-ZCW11HG1.2', 'FB56-ZCW11HG1.4', 'LXT56-LS27LX1.7'],
  2959. model: 'HGZB-07A',
  2960. vendor: 'Smart Home Pty',
  2961. description: 'RGBW Downlight',
  2962. extend: generic.light_onoff_brightness_colortemp_colorxy,
  2963. },
  2964. {
  2965. zigbeeModel: ['FNB56-SKT1EHG1.2'],
  2966. model: 'HGZB-20-DE',
  2967. vendor: 'Smart Home Pty',
  2968. description: 'Power plug',
  2969. supports: 'on/off',
  2970. fromZigbee: [fz.on_off],
  2971. toZigbee: [tz.on_off],
  2972. },
  2973.  
  2974. // Gledopto
  2975. {
  2976. zigbeeModel: ['GL-C-006'],
  2977. model: 'GL-C-006',
  2978. vendor: 'Gledopto',
  2979. description: 'Zigbee LED controller WW/CW',
  2980. extend: gledopto.light,
  2981. supports: 'on/off, brightness, color temperature',
  2982. },
  2983. {
  2984. zigbeeModel: ['GL-C-007'],
  2985. model: 'GL-C-007',
  2986. vendor: 'Gledopto',
  2987. description: 'Zigbee LED controller RGBW',
  2988. extend: gledopto.light,
  2989. supports: 'on/off, brightness, color, white',
  2990. },
  2991. {
  2992. zigbeeModel: ['GL-C-008', 'GLEDOPTO'],
  2993. model: 'GL-C-008',
  2994. vendor: 'Gledopto',
  2995. description: 'Zigbee LED controller RGB + CCT',
  2996. extend: gledopto.light,
  2997. meta: {options: {disableDefaultResponse: true}},
  2998. supports: 'on/off, brightness, color temperature, color',
  2999. },
  3000. {
  3001. zigbeeModel: ['GL-C-008S'],
  3002. model: 'GL-C-008S',
  3003. vendor: 'Gledopto',
  3004. description: 'Zigbee LED controller RGB + CCT plus model',
  3005. extend: gledopto.light,
  3006. meta: {options: {disableDefaultResponse: true}},
  3007. supports: 'on/off, brightness, color temperature, color',
  3008. },
  3009. {
  3010. zigbeeModel: ['GL-C-009'],
  3011. model: 'GL-C-009',
  3012. vendor: 'Gledopto',
  3013. description: 'Zigbee LED controller dimmer',
  3014. extend: gledopto.light,
  3015. supports: 'on/off, brightness',
  3016. },
  3017. {
  3018. zigbeeModel: ['GL-MC-001'],
  3019. model: 'GL-MC-001',
  3020. vendor: 'Gledopto',
  3021. description: 'Zigbee USB mini LED controller RGB + CCT',
  3022. extend: gledopto.light,
  3023. supports: 'on/off, brightness, color temperature, color',
  3024. },
  3025. {
  3026. zigbeeModel: ['GL-S-004Z'],
  3027. model: 'GL-S-004Z',
  3028. vendor: 'Gledopto',
  3029. description: 'Zigbee Smart WW/CW GU10',
  3030. extend: gledopto.light,
  3031. supports: 'on/off, brightness, color temperature',
  3032. },
  3033. {
  3034. zigbeeModel: ['GL-S-007Z'],
  3035. model: 'GL-S-007Z',
  3036. vendor: 'Gledopto',
  3037. description: 'Smart RGBW GU10',
  3038. extend: gledopto.light,
  3039. supports: 'on/off, brightness, color, white',
  3040. },
  3041. {
  3042. zigbeeModel: ['GL-S-007ZS'],
  3043. model: 'GL-S-007ZS',
  3044. vendor: 'Gledopto',
  3045. description: 'Smart RGB+CCT GU10',
  3046. extend: gledopto.light,
  3047. supports: 'on/off, brightness, color, color temperature',
  3048. },
  3049. {
  3050. zigbeeModel: ['GL-B-001Z'],
  3051. model: 'GL-B-001Z',
  3052. vendor: 'Gledopto',
  3053. description: 'Smart 4W E14 RGB / CCT LED bulb',
  3054. extend: gledopto.light,
  3055. supports: 'on/off, brightness, color temperature, color',
  3056. },
  3057. {
  3058. zigbeeModel: ['GL-G-001Z'],
  3059. model: 'GL-G-001Z',
  3060. vendor: 'Gledopto',
  3061. description: 'Smart garden lamp',
  3062. extend: gledopto.light,
  3063. supports: 'on/off, brightness, color temperature, color',
  3064. },
  3065. {
  3066. zigbeeModel: ['GL-G-007Z'],
  3067. model: 'GL-G-007Z',
  3068. vendor: 'Gledopto',
  3069. description: 'Smart garden lamp 9W RGB / CCT',
  3070. extend: gledopto.light,
  3071. supports: 'on/off, brightness, color temperature, color',
  3072. },
  3073. {
  3074. zigbeeModel: ['GL-B-007Z'],
  3075. model: 'GL-B-007Z',
  3076. vendor: 'Gledopto',
  3077. description: 'Smart 6W E27 RGB / CCT LED bulb',
  3078. extend: gledopto.light,
  3079. supports: 'on/off, brightness, color temperature, color',
  3080. },
  3081. {
  3082. zigbeeModel: ['GL-B-007ZS'],
  3083. model: 'GL-B-007ZS',
  3084. vendor: 'Gledopto',
  3085. description: 'Smart+ 6W E27 RGB / CCT LED bulb',
  3086. extend: gledopto.light,
  3087. supports: 'on/off, brightness, color temperature, color',
  3088. },
  3089. {
  3090. zigbeeModel: ['GL-B-008Z'],
  3091. model: 'GL-B-008Z',
  3092. vendor: 'Gledopto',
  3093. description: 'Smart 12W E27 RGB / CCT LED bulb',
  3094. extend: gledopto.light,
  3095. supports: 'on/off, brightness, color temperature, color',
  3096. },
  3097. {
  3098. zigbeeModel: ['GL-B-008ZS'],
  3099. model: 'GL-B-008ZS',
  3100. vendor: 'Gledopto',
  3101. description: 'Smart 12W E27 RGB / CW LED bulb',
  3102. extend: gledopto.light,
  3103. supports: 'on/off, brightness, color temperature, color',
  3104. },
  3105. {
  3106. zigbeeModel: ['GL-D-003Z'],
  3107. model: 'GL-D-003Z',
  3108. vendor: 'Gledopto',
  3109. description: 'LED RGB + CCT downlight ',
  3110. extend: gledopto.light,
  3111. supports: 'on/off, brightness, color temperature, color',
  3112. },
  3113. {
  3114. zigbeeModel: ['GL-D-004ZS'],
  3115. model: 'GL-D-004ZS',
  3116. vendor: 'Gledopto',
  3117. description: 'LED RGB + CCT downlight plus version 9W',
  3118. extend: gledopto.light,
  3119. supports: 'on/off, brightness, color temperature, color',
  3120. },
  3121. {
  3122. zigbeeModel: ['GL-D-005Z'],
  3123. model: 'GL-D-005Z',
  3124. vendor: 'Gledopto',
  3125. description: 'LED RGB + CCT downlight ',
  3126. extend: gledopto.light,
  3127. supports: 'on/off, brightness, color temperature, color',
  3128. },
  3129. {
  3130. zigbeeModel: ['GL-S-003Z'],
  3131. model: 'GL-S-003Z',
  3132. vendor: 'Gledopto',
  3133. description: 'Smart RGBW GU10 ',
  3134. extend: gledopto.light,
  3135. supports: 'on/off, brightness, color, white',
  3136. },
  3137. {
  3138. zigbeeModel: ['HOMA2023'],
  3139. model: 'GD-CZ-006',
  3140. vendor: 'Gledopto',
  3141. description: 'Zigbee LED Driver',
  3142. extend: gledopto.light,
  3143. supports: 'on/off, brightness',
  3144. },
  3145. {
  3146. zigbeeModel: ['GL-FL-004TZ'],
  3147. model: 'GL-FL-004TZ',
  3148. vendor: 'Gledopto',
  3149. description: 'Zigbee 10W floodlight RGB CCT',
  3150. extend: gledopto.light,
  3151. supports: 'on/off, brightness, color temperature, color',
  3152. },
  3153. {
  3154. zigbeeModel: ['GL-W-001Z'],
  3155. model: 'GL-W-001Z',
  3156. vendor: 'Gledopto',
  3157. description: 'Zigbee ON/OFF Wall Switch',
  3158. supports: 'on/off',
  3159. fromZigbee: [fz.on_off],
  3160. toZigbee: [tz.on_off],
  3161. onEvent: async (type, data, device) => {
  3162. // This device doesn't support reporting.
  3163. // Therefore we read the on/off state every 5 seconds.
  3164. // This is the same way as the Hue bridge does it.
  3165. if (type === 'stop') {
  3166. clearInterval(store[device.ieeeAddr]);
  3167. } else if (!store[device.ieeeAddr]) {
  3168. store[device.ieeeAddr] = setInterval(async () => {
  3169. try {
  3170. await device.endpoints[0].read('genOnOff', ['onOff']);
  3171. } catch (error) {
  3172. // Do nothing
  3173. }
  3174. }, 5000);
  3175. }
  3176. },
  3177. },
  3178.  
  3179. // ROBB
  3180. {
  3181. zigbeeModel: ['ROB_200-004-0'],
  3182. model: 'ROB_200-004-0',
  3183. vendor: 'ROBB',
  3184. description: 'ZigBee AC phase-cut dimmer',
  3185. supports: 'on/off, brightness',
  3186. fromZigbee: [fz.brightness, fz.on_off, fz.ignore_light_brightness_report],
  3187. toZigbee: [tz.light_onoff_brightness, tz.ignore_transition],
  3188. meta: {configureKey: 1},
  3189. configure: async (device, coordinatorEndpoint) => {
  3190. const endpoint = device.getEndpoint(1);
  3191. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
  3192. await configureReporting.onOff(endpoint);
  3193. },
  3194. },
  3195.  
  3196. // Namron
  3197. {
  3198. zigbeeModel: ['4512700'],
  3199. model: '4512700',
  3200. vendor: 'Namron',
  3201. description: 'ZigBee AC phase-cut dimmer',
  3202. supports: 'on/off, brightness',
  3203. fromZigbee: [fz.brightness, fz.on_off, fz.ignore_light_brightness_report],
  3204. toZigbee: [tz.light_onoff_brightness, tz.ignore_transition],
  3205. meta: {configureKey: 1},
  3206. configure: async (device, coordinatorEndpoint) => {
  3207. const endpoint = device.getEndpoint(1);
  3208. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
  3209. await configureReporting.onOff(endpoint);
  3210. },
  3211. },
  3212.  
  3213. // SmartThings
  3214. {
  3215. zigbeeModel: ['PGC313'],
  3216. model: 'STSS-MULT-001',
  3217. vendor: 'SmartThings',
  3218. description: 'Multipurpose sensor',
  3219. supports: 'contact',
  3220. fromZigbee: [fz.smartthings_contact],
  3221. toZigbee: [],
  3222. },
  3223. {
  3224. zigbeeModel: ['tagv4'],
  3225. model: 'STS-PRS-251',
  3226. vendor: 'SmartThings',
  3227. description: 'Arrival sensor',
  3228. supports: 'presence',
  3229. fromZigbee: [
  3230. fz.STS_PRS_251_presence, fz.battery_3V,
  3231. fz.STS_PRS_251_beeping,
  3232. ],
  3233. toZigbee: [tz.STS_PRS_251_beep],
  3234. meta: {configureKey: 1},
  3235. configure: async (device, coordinatorEndpoint) => {
  3236. const endpoint = device.getEndpoint(1);
  3237. await configureReporting.batteryVoltage(endpoint);
  3238. await configureReporting.presentValue(endpoint);
  3239. },
  3240. },
  3241. {
  3242. zigbeeModel: ['3325-S'],
  3243. model: '3325-S',
  3244. vendor: 'SmartThings',
  3245. description: 'Motion sensor (2015 model)',
  3246. supports: 'occupancy and temperature',
  3247. fromZigbee: [
  3248. fz.temperature,
  3249. fz.iaszone_occupancy_2,
  3250. ],
  3251. toZigbee: [],
  3252. meta: {configureKey: 1},
  3253. configure: async (device, coordinatorEndpoint) => {
  3254. const endpoint = device.getEndpoint(1);
  3255. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  3256. await configureReporting.temperature(endpoint);
  3257. await configureReporting.batteryPercentageRemaining(endpoint);
  3258. },
  3259. },
  3260. {
  3261. zigbeeModel: ['3321-S'],
  3262. model: '3321-S',
  3263. vendor: 'SmartThings',
  3264. description: 'Multi Sensor (2015 model)',
  3265. supports: 'contact and temperature',
  3266. fromZigbee: [fz.temperature, fz.smartsense_multi, fz.ias_contact_alarm_1],
  3267. toZigbee: [],
  3268. meta: {configureKey: 1},
  3269. configure: async (device, coordinatorEndpoint) => {
  3270. const endpoint = device.getEndpoint(1);
  3271. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement']);
  3272. await configureReporting.temperature(endpoint);
  3273. },
  3274. },
  3275. {
  3276. zigbeeModel: ['3200-Sgb'],
  3277. model: 'F-APP-UK-V2',
  3278. vendor: 'SmartThings',
  3279. description: 'Outlet UK',
  3280. supports: 'on/off',
  3281. fromZigbee: [fz.on_off],
  3282. toZigbee: [tz.on_off],
  3283. meta: {configureKey: 1},
  3284. configure: async (device, coordinatorEndpoint) => {
  3285. const endpoint = device.getEndpoint(1);
  3286. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  3287. await configureReporting.onOff(endpoint);
  3288. },
  3289. },
  3290. {
  3291. zigbeeModel: ['outlet'],
  3292. model: 'IM6001-OTP05',
  3293. vendor: 'SmartThings',
  3294. description: 'Outlet',
  3295. supports: 'on/off',
  3296. fromZigbee: [fz.on_off],
  3297. toZigbee: [tz.on_off],
  3298. meta: {configureKey: 1},
  3299. configure: async (device, coordinatorEndpoint) => {
  3300. const endpoint = device.getEndpoint(1);
  3301. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  3302. await configureReporting.onOff(endpoint);
  3303. },
  3304. },
  3305. {
  3306. zigbeeModel: ['outletv4'],
  3307. model: 'STS-OUT-US-2',
  3308. vendor: 'SmartThings',
  3309. description: 'Outlet',
  3310. supports: 'on/off',
  3311. fromZigbee: [fz.on_off],
  3312. toZigbee: [tz.on_off],
  3313. meta: {configureKey: 1},
  3314. configure: async (device, coordinatorEndpoint) => {
  3315. const endpoint = device.getEndpoint(1);
  3316. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  3317. await configureReporting.onOff(endpoint);
  3318. },
  3319. },
  3320. {
  3321. zigbeeModel: ['motion'],
  3322. model: 'IM6001-MTP01',
  3323. vendor: 'SmartThings',
  3324. description: 'Motion sensor (2018 model)',
  3325. supports: 'occupancy and temperature',
  3326. fromZigbee: [
  3327. fz.temperature,
  3328. fz.ignore_iaszone_report,
  3329. fz.iaszone_occupancy_1, fz.battery_3V,
  3330. ],
  3331. toZigbee: [],
  3332. meta: {configureKey: 1},
  3333. configure: async (device, coordinatorEndpoint) => {
  3334. const endpoint = device.getEndpoint(1);
  3335. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  3336. await configureReporting.temperature(endpoint);
  3337. await configureReporting.batteryVoltage(endpoint);
  3338. },
  3339. },
  3340. {
  3341. zigbeeModel: ['motionv4'],
  3342. model: 'STS-IRM-250',
  3343. vendor: 'SmartThings',
  3344. description: 'Motion sensor (2016 model)',
  3345. supports: 'occupancy and temperature',
  3346. fromZigbee: [
  3347. fz.temperature, fz.iaszone_occupancy_2,
  3348. fz.iaszone_occupancy_1, fz.battery_3V,
  3349. ],
  3350. toZigbee: [],
  3351. meta: {configureKey: 1},
  3352. configure: async (device, coordinatorEndpoint) => {
  3353. const endpoint = device.getEndpoint(1);
  3354. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  3355. await configureReporting.temperature(endpoint);
  3356. await configureReporting.batteryVoltage(endpoint);
  3357. },
  3358. },
  3359. {
  3360. zigbeeModel: ['3305-S'],
  3361. model: '3305-S',
  3362. vendor: 'SmartThings',
  3363. description: 'Motion sensor (2014 model)',
  3364. supports: 'occupancy and temperature',
  3365. fromZigbee: [
  3366. fz.temperature, fz.iaszone_occupancy_2,
  3367. fz.battery_3V,
  3368. ],
  3369. toZigbee: [],
  3370. meta: {configureKey: 1},
  3371. configure: async (device, coordinatorEndpoint) => {
  3372. const endpoint = device.getEndpoint(1);
  3373. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  3374. await configureReporting.temperature(endpoint);
  3375. await configureReporting.batteryVoltage(endpoint);
  3376. },
  3377. },
  3378. {
  3379. zigbeeModel: ['3300-S'],
  3380. model: '3300-S',
  3381. vendor: 'SmartThings',
  3382. description: 'Door sensor',
  3383. supports: 'contact and temperature',
  3384. fromZigbee: [fz.temperature, fz.smartsense_multi, fz.ias_contact_alarm_1, fz.battery_3V],
  3385. toZigbee: [],
  3386. meta: {configureKey: 1},
  3387. configure: async (device, coordinatorEndpoint) => {
  3388. const endpoint = device.getEndpoint(1);
  3389. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  3390. await configureReporting.temperature(endpoint);
  3391. await configureReporting.batteryVoltage(endpoint);
  3392. },
  3393. },
  3394. {
  3395. zigbeeModel: ['multiv4'],
  3396. model: 'F-MLT-US-2',
  3397. vendor: 'SmartThings',
  3398. description: 'Multipurpose sensor (2016 model)',
  3399. supports: 'contact',
  3400. fromZigbee: [fz.temperature, fz.battery_3V, fz.ias_contact_alarm_1],
  3401. toZigbee: [],
  3402. meta: {configureKey: 1},
  3403. configure: async (device, coordinatorEndpoint) => {
  3404. const endpoint = device.getEndpoint(1);
  3405. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  3406. await configureReporting.temperature(endpoint);
  3407. await configureReporting.batteryVoltage(endpoint);
  3408. },
  3409. },
  3410. {
  3411. zigbeeModel: ['multi'],
  3412. model: 'IM6001-MPP01',
  3413. vendor: 'SmartThings',
  3414. description: 'Multipurpose sensor (2018 model)',
  3415. supports: 'contact',
  3416. fromZigbee: [fz.temperature, fz.ias_contact_alarm_1, fz.battery_3V, fz.ignore_iaszone_attreport],
  3417. toZigbee: [],
  3418. meta: {configureKey: 1},
  3419. configure: async (device, coordinatorEndpoint) => {
  3420. const endpoint = device.getEndpoint(1);
  3421. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  3422. await configureReporting.temperature(endpoint);
  3423. await configureReporting.batteryVoltage(endpoint);
  3424. },
  3425. },
  3426. {
  3427. /**
  3428. * Note: humidity not (yet) implemented, as this seems to use proprietary cluster
  3429. * see Smartthings device handler (profileID: 0x9194, clusterId: 0xFC45
  3430. * https://github.com/SmartThingsCommunity/SmartThingsPublic/blob/861ec6b88eb45273e341436a23d35274dc367c3b/
  3431. * devicetypes/smartthings/smartsense-temp-humidity-sensor.src/smartsense-temp-humidity-sensor.groovy#L153-L156
  3432. */
  3433. zigbeeModel: ['3310-S'],
  3434. model: '3310-S',
  3435. vendor: 'SmartThings',
  3436. description: 'Temperature and humidity sensor',
  3437. supports: 'temperature',
  3438. fromZigbee: [
  3439. fz.temperature,
  3440. fz.battery_3V,
  3441. ],
  3442. toZigbee: [],
  3443. meta: {configureKey: 1},
  3444. configure: async (device, coordinatorEndpoint) => {
  3445. const endpoint = device.getEndpoint(1);
  3446. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  3447. await configureReporting.temperature(endpoint);
  3448. await configureReporting.batteryVoltage(endpoint);
  3449. },
  3450. },
  3451. {
  3452. zigbeeModel: ['IM6001-WLP01'],
  3453. model: 'IM6001-WLP01',
  3454. vendor: 'SmartThings',
  3455. description: 'Water leak sensor',
  3456. supports: 'water leak',
  3457. fromZigbee: [
  3458. fz.temperature,
  3459. fz.st_leak, fz.battery_3V,
  3460. ],
  3461. toZigbee: [],
  3462. },
  3463. {
  3464. zigbeeModel: ['3315-S'],
  3465. model: '3315-S',
  3466. vendor: 'SmartThings',
  3467. description: 'Water sensor',
  3468. supports: 'water and temperature',
  3469. fromZigbee: [
  3470. fz.temperature,
  3471. fz.st_leak, fz.battery_3V,
  3472. ],
  3473. toZigbee: [],
  3474. meta: {configureKey: 1},
  3475. configure: async (device, coordinatorEndpoint) => {
  3476. const endpoint = device.getEndpoint(1);
  3477. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  3478. await configureReporting.temperature(endpoint);
  3479. await configureReporting.batteryVoltage(endpoint);
  3480. },
  3481. },
  3482. {
  3483. zigbeeModel: ['water'],
  3484. model: 'F-WTR-UK-V2',
  3485. vendor: 'SmartThings',
  3486. description: 'Water leak sensor (2018 model)',
  3487. supports: 'water leak and temperature',
  3488. fromZigbee: [
  3489. fz.temperature,
  3490. fz.st_leak, fz.battery_3V,
  3491. ],
  3492. toZigbee: [],
  3493. meta: {configureKey: 1},
  3494. configure: async (device, coordinatorEndpoint) => {
  3495. const endpoint = device.getEndpoint(1);
  3496. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  3497. await configureReporting.temperature(endpoint);
  3498. await configureReporting.batteryVoltage(endpoint);
  3499. },
  3500. },
  3501. {
  3502. zigbeeModel: ['3315-G'],
  3503. model: '3315-G',
  3504. vendor: 'SmartThings',
  3505. description: 'Water sensor',
  3506. supports: 'water and temperature',
  3507. fromZigbee: [
  3508. fz.temperature,
  3509. fz.st_leak, fz.battery_3V,
  3510. ],
  3511. toZigbee: [],
  3512. meta: {configureKey: 1},
  3513. configure: async (device, coordinatorEndpoint) => {
  3514. const endpoint = device.getEndpoint(1);
  3515. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  3516. await configureReporting.temperature(endpoint);
  3517. await configureReporting.batteryVoltage(endpoint);
  3518. },
  3519. },
  3520. {
  3521. zigbeeModel: ['button'],
  3522. model: 'IM6001-BTP01',
  3523. vendor: 'SmartThings',
  3524. description: 'Button',
  3525. supports: 'single click, double click, hold and temperature',
  3526. fromZigbee: [
  3527. fz.st_button_state,
  3528. fz.generic_battery,
  3529. fz.temperature,
  3530. fz.ignore_iaszone_attreport,
  3531. fz.ignore_temperature_report,
  3532. ],
  3533. toZigbee: [],
  3534. },
  3535.  
  3536. // Trust
  3537. {
  3538. zigbeeModel: ['WATER_TPV14'],
  3539. model: 'ZWLD-100',
  3540. vendor: 'Trust',
  3541. description: 'Water leakage detector',
  3542. supports: 'water leak',
  3543. fromZigbee: [
  3544. fz.ias_water_leak_alarm_1,
  3545. fz.ignore_basic_report,
  3546. ],
  3547. toZigbee: [],
  3548. },
  3549. {
  3550. zigbeeModel: ['\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000'+
  3551. '\u0000\u0000\u0000\u0000\u0000'],
  3552. model: 'ZYCT-202',
  3553. vendor: 'Trust',
  3554. description: 'Remote control',
  3555. supports: 'on, off, stop, up-press, down-press',
  3556. fromZigbee: [
  3557. fz.ZYCT202_on, fz.ZYCT202_off, fz.ZYCT202_stop, fz.ZYCT202_up_down,
  3558. ],
  3559. toZigbee: [],
  3560. meta: {configureKey: 1},
  3561. configure: async (device, coordinatorEndpoint) => {
  3562. const endpoint = device.getEndpoint(1);
  3563. await configureReporting.onOff(endpoint);
  3564. },
  3565. },
  3566. {
  3567. zigbeeModel: ['ZLL-DimmableLigh'],
  3568. model: 'ZLED-2709',
  3569. vendor: 'Trust',
  3570. description: 'Smart Dimmable LED Bulb',
  3571. extend: generic.light_onoff_brightness,
  3572. },
  3573. {
  3574. zigbeeModel: ['ZLL-ColorTempera'],
  3575. model: 'ZLED-TUNE9',
  3576. vendor: 'Trust',
  3577. description: 'Smart tunable LED bulb',
  3578. extend: generic.light_onoff_brightness_colortemp,
  3579. },
  3580. {
  3581. zigbeeModel: ['VMS_ADUROLIGHT'],
  3582. model: 'ZPIR-8000',
  3583. vendor: 'Trust',
  3584. description: 'Motion Sensor',
  3585. supports: 'occupancy',
  3586. fromZigbee: [fz.iaszone_occupancy_2],
  3587. toZigbee: [],
  3588. },
  3589. {
  3590. zigbeeModel: ['CSW_ADUROLIGHT'],
  3591. model: 'ZCTS-808',
  3592. vendor: 'Trust',
  3593. description: 'Wireless contact sensor',
  3594. supports: 'contact',
  3595. fromZigbee: [
  3596. fz.ias_contact_alarm_1, fz.battery_percentage_remaining,
  3597. fz.ignore_basic_report,
  3598. ],
  3599. toZigbee: [],
  3600. meta: {configureKey: 1},
  3601. configure: async (device, coordinatorEndpoint) => {
  3602. const endpoint = device.getEndpoint(1);
  3603. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
  3604. await configureReporting.batteryPercentageRemaining(endpoint);
  3605. },
  3606. },
  3607.  
  3608. // Paulmann
  3609. {
  3610. zigbeeModel: ['Switch Controller '],
  3611. model: '50043',
  3612. vendor: 'Paulmann',
  3613. description: 'SmartHome Zigbee Cephei Switch Controller',
  3614. supports: 'on/off',
  3615. fromZigbee: [fz.on_off],
  3616. toZigbee: [tz.on_off],
  3617. },
  3618. {
  3619. zigbeeModel: ['Dimmablelight '],
  3620. model: '50045',
  3621. vendor: 'Paulmann',
  3622. description: 'SmartHome Zigbee LED-stripe',
  3623. extend: generic.light_onoff_brightness,
  3624. },
  3625. {
  3626. zigbeeModel: ['RGBW light', '500.49'],
  3627. model: '50049',
  3628. vendor: 'Paulmann',
  3629. description: 'SmartHome Yourled RGB Controller',
  3630. extend: generic.light_onoff_brightness_colortemp_colorxy,
  3631. },
  3632. {
  3633. zigbeeModel: ['CCT light'],
  3634. model: '50064',
  3635. vendor: 'Paulmann',
  3636. description: 'SmartHome led spot',
  3637. extend: generic.light_onoff_brightness_colortemp,
  3638. },
  3639.  
  3640. // Bitron
  3641. {
  3642. zigbeeModel: ['AV2010/34'],
  3643. model: 'AV2010/34',
  3644. vendor: 'Bitron',
  3645. description: '4-Touch single click buttons',
  3646. supports: 'click',
  3647. fromZigbee: [fz.ignore_power_report, fz.AV2010_34_click],
  3648. toZigbee: [],
  3649. meta: {configureKey: 1},
  3650. configure: async (device, coordinatorEndpoint) => {
  3651. const endpoint = device.getEndpoint(1);
  3652. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
  3653. },
  3654. },
  3655. {
  3656. zigbeeModel: ['902010/22'],
  3657. model: 'AV2010/22',
  3658. vendor: 'Bitron',
  3659. description: 'Wireless motion detector',
  3660. supports: 'occupancy',
  3661. fromZigbee: [fz.iaszone_occupancy_1_with_timeout],
  3662. toZigbee: [],
  3663. },
  3664. {
  3665. zigbeeModel: ['902010/25'],
  3666. model: 'AV2010/25',
  3667. vendor: 'Bitron',
  3668. description: 'Video wireless socket',
  3669. supports: 'on/off, power measurement',
  3670. fromZigbee: [fz.on_off, fz.bitron_power],
  3671. toZigbee: [tz.on_off],
  3672. meta: {configureKey: 1},
  3673. configure: async (device, coordinatorEndpoint) => {
  3674. const endpoint = device.getEndpoint(1);
  3675. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  3676. await configureReporting.instantaneousDemand(endpoint);
  3677. },
  3678. },
  3679. {
  3680. zigbeeModel: ['902010/32'],
  3681. model: 'AV2010/32',
  3682. vendor: 'Bitron',
  3683. description: 'Wireless wall thermostat with relay',
  3684. supports: 'temperature, heating/cooling system control',
  3685. fromZigbee: [
  3686. fz.bitron_thermostat_att_report,
  3687. fz.bitron_battery_att_report,
  3688. ],
  3689. toZigbee: [
  3690. tz.thermostat_occupied_heating_setpoint, tz.thermostat_local_temperature_calibration,
  3691. tz.thermostat_local_temperature, tz.thermostat_running_state,
  3692. tz.thermostat_temperature_display_mode,
  3693. ],
  3694. meta: {configureKey: 2},
  3695. configure: async (device, coordinatorEndpoint) => {
  3696. const endpoint = device.getEndpoint(1);
  3697. const binds = [
  3698. 'genBasic', 'genPowerCfg', 'genIdentify', 'genPollCtrl', 'hvacThermostat', 'hvacUserInterfaceCfg',
  3699. ];
  3700. await bind(endpoint, coordinatorEndpoint, binds);
  3701. await configureReporting.thermostatTemperature(endpoint, 900, repInterval.HOUR, 1);
  3702. await configureReporting.thermostatTemperatureCalibration(endpoint);
  3703. await configureReporting.thermostatOccupiedHeatingSetpoint(endpoint);
  3704. await configureReporting.thermostatRunningState(endpoint);
  3705. await configureReporting.batteryAlarmState(endpoint);
  3706. await configureReporting.batteryVoltage(endpoint);
  3707. },
  3708. },
  3709.  
  3710. // Iris
  3711. {
  3712. zigbeeModel: ['3210-L'],
  3713. model: '3210-L',
  3714. vendor: 'Iris',
  3715. description: 'Smart plug',
  3716. supports: 'on/off',
  3717. fromZigbee: [fz.on_off, fz.electrical_measurement],
  3718. toZigbee: [tz.on_off],
  3719. meta: {configureKey: 4},
  3720. configure: async (device, coordinatorEndpoint) => {
  3721. const endpoint = device.getEndpoint(1);
  3722. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement']);
  3723. await endpoint.read('haElectricalMeasurement', [
  3724. 'acVoltageMultiplier', 'acVoltageDivisor', 'acCurrentMultiplier',
  3725. 'acCurrentDivisor', 'acPowerMultiplier', 'acPowerDivisor',
  3726. ]);
  3727. await configureReporting.onOff(endpoint);
  3728. await configureReporting.rmsVoltage(endpoint);
  3729. await configureReporting.rmsCurrent(endpoint);
  3730. await configureReporting.activePower(endpoint);
  3731. },
  3732. },
  3733. {
  3734. zigbeeModel: ['3326-L'],
  3735. model: '3326-L',
  3736. vendor: 'Iris',
  3737. description: 'Motion and temperature sensor',
  3738. supports: 'occupancy and temperature',
  3739. fromZigbee: [fz.iaszone_occupancy_2, fz.temperature, fz.battery_3V_2100],
  3740. toZigbee: [],
  3741. meta: {configureKey: 2},
  3742. configure: async (device, coordinatorEndpoint) => {
  3743. const endpoint = device.getEndpoint(1);
  3744. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  3745. await configureReporting.temperature(endpoint);
  3746. await configureReporting.batteryVoltage(endpoint);
  3747. },
  3748. },
  3749. {
  3750. zigbeeModel: ['3320-L'],
  3751. model: '3320-L',
  3752. vendor: 'Iris',
  3753. description: 'Contact and temperature sensor',
  3754. supports: 'contact and temperature',
  3755. fromZigbee: [fz.iris_3320L_contact, fz.temperature, fz.battery_3V_2100],
  3756. toZigbee: [],
  3757. meta: {configureKey: 1},
  3758. configure: async (device, coordinatorEndpoint) => {
  3759. const endpoint = device.getEndpoint(1);
  3760. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  3761. await configureReporting.temperature(endpoint);
  3762. await configureReporting.batteryVoltage(endpoint);
  3763. },
  3764. },
  3765. {
  3766. zigbeeModel: ['1117-S'],
  3767. model: 'iL07_1',
  3768. vendor: 'Iris',
  3769. description: 'Motion Sensor',
  3770. supports: 'motion, tamper and battery',
  3771. fromZigbee: [fz.iaszone_occupancy_2],
  3772. toZigbee: [],
  3773. },
  3774.  
  3775. // ksentry
  3776. {
  3777. zigbeeModel: ['Lamp_01'],
  3778. model: 'KS-SM001',
  3779. vendor: 'Ksentry Electronics',
  3780. description: '[Zigbee OnOff Controller](http://ksentry.manufacturer.globalsources.com/si/6008837134660'+
  3781. '/pdtl/ZigBee-module/1162731630/zigbee-on-off-controller-modules.htm)',
  3782. supports: 'on/off',
  3783. fromZigbee: [fz.on_off],
  3784. toZigbee: [tz.on_off],
  3785. },
  3786.  
  3787. // Ninja Blocks
  3788. {
  3789. zigbeeModel: ['Ninja Smart plug'],
  3790. model: 'Z809AF',
  3791. vendor: 'Ninja Blocks',
  3792. description: 'Zigbee smart plug with power meter',
  3793. supports: 'on/off, power measurement',
  3794. fromZigbee: [fz.on_off, fz.generic_power],
  3795. toZigbee: [tz.on_off],
  3796. meta: {configureKey: 2},
  3797. configure: async (device, coordinatorEndpoint) => {
  3798. const endpoint = device.getEndpoint(1);
  3799. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  3800. await configureReporting.onOff(endpoint);
  3801. await configureReporting.instantaneousDemand(endpoint);
  3802. await endpoint.read('seMetering', ['multiplier', 'divisor']);
  3803. },
  3804. },
  3805.  
  3806. // Commercial Electric
  3807. {
  3808. zigbeeModel: ['Zigbee CCT Downlight'],
  3809. model: '53170161',
  3810. vendor: 'Commercial Electric',
  3811. description: 'Matte White Recessed Retrofit Smart Led Downlight - 4 Inch',
  3812. extend: generic.light_onoff_brightness_colortemp,
  3813. },
  3814.  
  3815. // ilux
  3816. {
  3817. zigbeeModel: ['LEColorLight'],
  3818. model: '900008-WW',
  3819. vendor: 'ilux',
  3820. description: 'Dimmable A60 E27 LED Bulb',
  3821. extend: generic.light_onoff_brightness,
  3822. },
  3823.  
  3824. // Dresden Elektronik
  3825. {
  3826. zigbeeModel: ['FLS-PP3'],
  3827. model: 'Mega23M12',
  3828. vendor: 'Dresden Elektronik',
  3829. description: 'ZigBee Light Link wireless electronic ballast',
  3830. extend: generic.light_onoff_brightness_colortemp_colorxy,
  3831. },
  3832. {
  3833. zigbeeModel: ['FLS-CT'],
  3834. model: 'XVV-Mega23M12',
  3835. vendor: 'Dresden Elektronik',
  3836. description: 'ZigBee Light Link wireless electronic ballast color temperature',
  3837. extend: generic.light_onoff_brightness_colortemp,
  3838. },
  3839.  
  3840. // Centralite Swiss Plug
  3841. {
  3842. zigbeeModel: ['4256251-RZHAC', '4257050-RZHAC'],
  3843. model: '4256251-RZHAC',
  3844. vendor: 'Centralite',
  3845. description: 'White Swiss power outlet switch with power meter',
  3846. supports: 'switch and power meter',
  3847. fromZigbee: [fz.on_off, fz.RZHAC_4256251_power],
  3848. toZigbee: [tz.on_off],
  3849. meta: {configureKey: 2},
  3850. configure: async (device, coordinatorEndpoint) => {
  3851. const endpoint = device.getEndpoint(1);
  3852. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  3853. await configureReporting.onOff(endpoint);
  3854. await configureReporting.rmsVoltage(endpoint);
  3855. await configureReporting.rmsCurrent(endpoint);
  3856. await configureReporting.activePower(endpoint);
  3857. },
  3858. },
  3859. {
  3860. zigbeeModel: ['4257050-ZHAC'],
  3861. model: '4257050-ZHAC',
  3862. vendor: 'Centralite',
  3863. description: '3-Series smart dimming outlet',
  3864. supports: 'on/off, brightness, power meter',
  3865. fromZigbee: [fz.restorable_brightness, fz.on_off, fz.electrical_measurement],
  3866. toZigbee: [tz.light_onoff_restorable_brightness],
  3867. meta: {configureKey: 3},
  3868. configure: async (device, coordinatorEndpoint) => {
  3869. const endpoint = device.getEndpoint(1);
  3870. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl', 'haElectricalMeasurement']);
  3871. await endpoint.read('haElectricalMeasurement', [
  3872. 'acVoltageMultiplier', 'acVoltageDivisor', 'acCurrentMultiplier',
  3873. 'acCurrentDivisor', 'acPowerMultiplier', 'acPowerDivisor',
  3874. ]);
  3875. await configureReporting.onOff(endpoint);
  3876. await configureReporting.rmsVoltage(endpoint);
  3877. await configureReporting.rmsCurrent(endpoint);
  3878. await configureReporting.activePower(endpoint);
  3879. },
  3880. },
  3881.  
  3882. // Blaupunkt
  3883. {
  3884. zigbeeModel: ['SCM-R_00.00.03.15TC', 'SCM_00.00.03.14TC'],
  3885. model: 'SCM-S1',
  3886. vendor: 'Blaupunkt',
  3887. description: 'Roller shutter',
  3888. supports: 'open/close',
  3889. fromZigbee: [fz.cover_position_via_brightness, fz.cover_state_via_onoff],
  3890. toZigbee: [tz.cover_position_via_brightness, tz.cover_open_close_via_brightness],
  3891. },
  3892.  
  3893. // Lupus
  3894. {
  3895. zigbeeModel: ['SCM_00.00.03.11TC'],
  3896. model: '12031',
  3897. vendor: 'Lupus',
  3898. description: 'Roller shutter',
  3899. supports: 'open/close',
  3900. fromZigbee: [fz.cover_position_via_brightness, fz.cover_state_via_onoff],
  3901. toZigbee: [tz.cover_position_via_brightness, tz.cover_open_close_via_brightness],
  3902. },
  3903. {
  3904. zigbeeModel: ['PSMP5_00.00.03.11TC'],
  3905. model: '12050',
  3906. vendor: 'Lupus',
  3907. description: 'LUPUSEC mains socket with power meter',
  3908. supports: 'on/off, power measurement',
  3909. fromZigbee: [fz.on_off, fz.bitron_power],
  3910. toZigbee: [tz.on_off],
  3911. meta: {configureKey: 1},
  3912. configure: async (device, coordinatorEndpoint) => {
  3913. const endpoint = device.getEndpoint(1);
  3914. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  3915. await configureReporting.instantaneousDemand(endpoint);
  3916. },
  3917. },
  3918.  
  3919. // Climax
  3920. {
  3921. zigbeeModel: ['PSS_00.00.00.15TC'],
  3922. model: 'PSS-23ZBS',
  3923. vendor: 'Climax',
  3924. description: 'Power plug',
  3925. supports: 'on/off',
  3926. fromZigbee: [fz.on_off],
  3927. toZigbee: [tz.on_off],
  3928. },
  3929. {
  3930. zigbeeModel: ['SCM-3_00.00.03.15'],
  3931. model: 'SCM-5ZBS',
  3932. vendor: 'Climax',
  3933. description: 'Roller shutter',
  3934. supports: 'open/close',
  3935. fromZigbee: [fz.cover_position_via_brightness, fz.cover_state_via_onoff],
  3936. toZigbee: [tz.cover_position_via_brightness, tz.cover_open_close_via_brightness],
  3937. },
  3938. {
  3939. zigbeeModel: ['PSM_00.00.00.35TC'],
  3940. model: 'PSM-29ZBSR',
  3941. vendor: 'Climax',
  3942. description: 'Power plug',
  3943. supports: 'on/off',
  3944. fromZigbee: [fz.on_off],
  3945. toZigbee: [tz.on_off],
  3946. },
  3947.  
  3948. // HEIMAN
  3949. {
  3950. zigbeeModel: ['CO_V15'],
  3951. model: 'HS1CA-M',
  3952. description: 'Smart carbon monoxide sensor',
  3953. supports: 'carbon monoxide',
  3954. vendor: 'HEIMAN',
  3955. fromZigbee: [fz.heiman_carbon_monoxide, fz.battery_200],
  3956. toZigbee: [],
  3957. meta: {configureKey: 1},
  3958. configure: async (device, coordinatorEndpoint) => {
  3959. const endpoint = device.getEndpoint(1);
  3960. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
  3961. await configureReporting.batteryPercentageRemaining(endpoint);
  3962. await configureReporting.batteryAlarmState(endpoint);
  3963. },
  3964. },
  3965. {
  3966. zigbeeModel: ['PIRSensor-N'],
  3967. model: 'HS3MS',
  3968. vendor: 'HEIMAN',
  3969. description: 'Smart motion sensor',
  3970. supports: 'occupancy',
  3971. fromZigbee: [fz.iaszone_occupancy_1],
  3972. toZigbee: [],
  3973. },
  3974. {
  3975. zigbeeModel: ['SmartPlug'],
  3976. model: 'HS2SK',
  3977. description: 'Smart metering plug',
  3978. supports: 'on/off, power measurement',
  3979. vendor: 'HEIMAN',
  3980. fromZigbee: [fz.on_off, fz.HS2SK_power],
  3981. toZigbee: [tz.on_off],
  3982. meta: {configureKey: 3},
  3983. configure: async (device, coordinatorEndpoint) => {
  3984. const endpoint = device.getEndpoint(1);
  3985. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement']);
  3986. await configureReporting.onOff(endpoint);
  3987. await configureReporting.rmsVoltage(endpoint);
  3988. await configureReporting.rmsCurrent(endpoint);
  3989. await configureReporting.activePower(endpoint);
  3990. },
  3991. },
  3992. {
  3993. zigbeeModel: [
  3994. 'SMOK_V16',
  3995. 'b5db59bfd81e4f1f95dc57fdbba17931',
  3996. 'SMOK_YDLV10',
  3997. 'SmokeSensor-EM',
  3998. 'FB56-SMF02HM1.4',
  3999. ],
  4000. model: 'HS1SA',
  4001. vendor: 'HEIMAN',
  4002. description: 'Smoke detector',
  4003. supports: 'smoke',
  4004. fromZigbee: [
  4005. fz.heiman_smoke,
  4006. fz.battery_200,
  4007. fz.heiman_smoke_enrolled,
  4008.  
  4009. ],
  4010. toZigbee: [],
  4011. meta: {configureKey: 1},
  4012. configure: async (device, coordinatorEndpoint) => {
  4013. const endpoint = device.getEndpoint(1);
  4014. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
  4015. await configureReporting.batteryPercentageRemaining(endpoint);
  4016. await configureReporting.batteryAlarmState(endpoint);
  4017. },
  4018. },
  4019. {
  4020. zigbeeModel: ['SmokeSensor-N'],
  4021. model: 'HS3SA',
  4022. vendor: 'HEIMAN',
  4023. description: 'Smoke detector',
  4024. supports: 'smoke',
  4025. fromZigbee: [fz.heiman_smoke, fz.battery_200],
  4026. toZigbee: [],
  4027. meta: {configureKey: 1},
  4028. configure: async (device, coordinatorEndpoint) => {
  4029. const endpoint = device.getEndpoint(1);
  4030. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
  4031. await configureReporting.batteryPercentageRemaining(endpoint);
  4032. },
  4033. },
  4034. {
  4035. zigbeeModel: ['GASSensor-N'],
  4036. model: 'HS3CG',
  4037. vendor: 'HEIMAN',
  4038. description: 'Combustible gas sensor',
  4039. supports: 'gas',
  4040. fromZigbee: [fz.ias_gas_alarm_1],
  4041. toZigbee: [],
  4042. },
  4043. {
  4044. zigbeeModel: ['GASSensor-EN'],
  4045. model: 'HS1CG-M',
  4046. vendor: 'HEIMAN',
  4047. description: 'Combustible gas sensor',
  4048. supports: 'gas',
  4049. fromZigbee: [fz.ias_gas_alarm_1],
  4050. toZigbee: [],
  4051. },
  4052. {
  4053. zigbeeModel: ['GAS_V15'],
  4054. model: 'HS1CG_M',
  4055. vendor: 'HEIMAN',
  4056. description: 'Combustible gas sensor',
  4057. supports: 'gas',
  4058. fromZigbee: [fz.ias_gas_alarm_2],
  4059. toZigbee: [],
  4060. },
  4061. {
  4062. zigbeeModel: ['DoorSensor-N'],
  4063. model: 'HS1DS/HS3DS',
  4064. vendor: 'HEIMAN',
  4065. description: 'Door sensor',
  4066. supports: 'contact',
  4067. fromZigbee: [fz.ias_contact_alarm_1],
  4068. toZigbee: [],
  4069. },
  4070. {
  4071. zigbeeModel: ['DOOR_TPV13'],
  4072. model: 'HEIMAN-M1',
  4073. vendor: 'HEIMAN',
  4074. description: 'Door sensor',
  4075. supports: 'contact',
  4076. fromZigbee: [fz.ias_contact_alarm_1],
  4077. toZigbee: [],
  4078. },
  4079. {
  4080. zigbeeModel: ['DoorSensor-EM'],
  4081. model: 'HS1DS-E',
  4082. vendor: 'HEIMAN',
  4083. description: 'Door sensor',
  4084. supports: 'contact',
  4085. fromZigbee: [fz.ias_contact_alarm_1],
  4086. toZigbee: [],
  4087. },
  4088. {
  4089. zigbeeModel: ['WaterSensor-N'],
  4090. model: 'HS1WL/HS3WL',
  4091. vendor: 'HEIMAN',
  4092. description: 'Water leakage sensor',
  4093. supports: 'water leak',
  4094. fromZigbee: [fz.ias_water_leak_alarm_1],
  4095. toZigbee: [],
  4096. },
  4097. {
  4098. zigbeeModel: ['WaterSensor-EM'],
  4099. model: 'HS1-WL-E',
  4100. vendor: 'HEIMAN',
  4101. description: 'Water leakage sensor',
  4102. supports: 'water leak',
  4103. fromZigbee: [fz.ias_water_leak_alarm_1],
  4104. toZigbee: [],
  4105. },
  4106. {
  4107. zigbeeModel: ['RC_V14', 'RC-EM'],
  4108. model: 'HS1RC-M',
  4109. vendor: 'HEIMAN',
  4110. description: 'Smart remote controller',
  4111. supports: 'action',
  4112. fromZigbee: [
  4113. fz.battery_200,
  4114. fz.heiman_smart_controller_armmode, fz.heiman_smart_controller_emergency,
  4115. ],
  4116. toZigbee: [],
  4117. },
  4118. {
  4119. zigbeeModel: ['COSensor-EM', 'COSensor-N'],
  4120. model: 'HS1CA-E',
  4121. vendor: 'HEIMAN',
  4122. description: 'Smart carbon monoxide sensor',
  4123. supports: 'carbon monoxide',
  4124. fromZigbee: [fz.heiman_carbon_monoxide, fz.battery_200],
  4125. toZigbee: [],
  4126. meta: {configureKey: 1},
  4127. configure: async (device, coordinatorEndpoint) => {
  4128. const endpoint = device.getEndpoint(1);
  4129. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
  4130. await configureReporting.batteryPercentageRemaining(endpoint);
  4131. await configureReporting.batteryAlarmState(endpoint);
  4132. },
  4133. },
  4134. {
  4135. zigbeeModel: ['WarningDevice'],
  4136. model: 'HS2WD-E',
  4137. vendor: 'HEIMAN',
  4138. description: 'Smart siren',
  4139. supports: 'warning',
  4140. fromZigbee: [fz.battery_200],
  4141. toZigbee: [tz.warning],
  4142. meta: {configureKey: 1},
  4143. configure: async (device, coordinatorEndpoint) => {
  4144. const endpoint = device.getEndpoint(1);
  4145. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
  4146. await configureReporting.batteryPercentageRemaining(endpoint);
  4147. },
  4148. },
  4149.  
  4150. // Oujiabao
  4151. {
  4152. zigbeeModel: ['OJB-CR701-YZ'],
  4153. model: 'CR701-YZ',
  4154. vendor: 'Oujiabao',
  4155. description: 'Gas and carbon monoxide alarm',
  4156. supports: 'gas and carbon monoxide',
  4157. fromZigbee: [fz.OJBCR701YZ_statuschange],
  4158. toZigbee: [],
  4159. },
  4160.  
  4161. // Calex
  4162. {
  4163. zigbeeModel: ['EC-Z3.0-CCT'],
  4164. model: '421786',
  4165. vendor: 'Calex',
  4166. description: 'LED A60 Zigbee GLS-lamp',
  4167. extend: generic.light_onoff_brightness,
  4168. },
  4169. {
  4170. zigbeeModel: ['EC-Z3.0-RGBW'],
  4171. model: '421792',
  4172. vendor: 'Calex',
  4173. description: 'LED A60 Zigbee RGB lamp',
  4174. extend: generic.light_onoff_brightness_colortemp_colorxy,
  4175. },
  4176.  
  4177. // EcoSmart
  4178. {
  4179. zigbeeModel: ['zhaRGBW'],
  4180. model: 'D1821',
  4181. vendor: 'EcoSmart',
  4182. description: 'A19 RGB bulb',
  4183. extend: generic.light_onoff_brightness_colortemp_colorxy,
  4184. },
  4185. {
  4186. // eslint-disable-next-line
  4187. 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','\u0000\u0002\u0000\u0004^??&\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e'],
  4188. model: 'D1531',
  4189. vendor: 'EcoSmart',
  4190. description: 'A19 bright white bulb',
  4191. extend: generic.light_onoff_brightness,
  4192. },
  4193. {
  4194. // eslint-disable-next-line
  4195. 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'],
  4196. model: 'D1532',
  4197. vendor: 'EcoSmart',
  4198. description: 'A19 soft white bulb',
  4199. extend: generic.light_onoff_brightness,
  4200. },
  4201. {
  4202. zigbeeModel: ['zhaTunW'],
  4203. model: 'D1542',
  4204. vendor: 'EcoSmart',
  4205. description: 'GU10 adjustable white bulb',
  4206. extend: generic.light_onoff_brightness_colortemp,
  4207. },
  4208.  
  4209. // Airam
  4210. {
  4211. zigbeeModel: ['ZBT-DimmableLight'],
  4212. model: '4713407',
  4213. vendor: 'Airam',
  4214. description: 'LED OP A60 ZB 9W/827 E27',
  4215. extend: generic.light_onoff_brightness,
  4216. meta: {configureKey: 2},
  4217. configure: async (device, coordinatorEndpoint) => {
  4218. const endpoint = device.getEndpoint(1);
  4219. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
  4220. await configureReporting.onOff(endpoint);
  4221. const payload = [{
  4222. attribute: 'currentLevel',
  4223. minimumReportInterval: 300,
  4224. maximumReportInterval: repInterval.HOUR,
  4225. reportableChange: 1,
  4226. }];
  4227. await endpoint.configureReporting('genLevelCtrl', payload);
  4228. },
  4229. },
  4230. {
  4231. zigbeeModel: ['ZBT-Remote-EU-DIMV1A2'],
  4232. model: 'AIRAM-CTR.U',
  4233. vendor: 'Airam',
  4234. description: 'CTR.U remote',
  4235. supports: 'on/off, brightness up/down and click/hold/release',
  4236. fromZigbee: [
  4237. fz.genOnOff_cmdOn, fz.genOnOff_cmdOff, fz.CTR_U_brightness_updown_click,
  4238. fz.CTR_U_brightness_updown_hold, fz.CTR_U_brightness_updown_release, fz.CTR_U_scene,
  4239. fz.ignore_basic_report,
  4240. ],
  4241. toZigbee: [],
  4242. },
  4243.  
  4244. // Paul Neuhaus
  4245. {
  4246. zigbeeModel: ['NLG-CCT light '],
  4247. model: '100.424.11',
  4248. vendor: 'Paul Neuhaus',
  4249. description: 'Q-INIGO LED ceiling light',
  4250. extend: generic.light_onoff_brightness_colortemp,
  4251. },
  4252. {
  4253. zigbeeModel: ['Neuhaus NLG-TW light'],
  4254. model: '100.469.65',
  4255. vendor: 'Paul Neuhaus',
  4256. description: 'Q-INIGO, LED panel, Smart-Home RGB',
  4257. extend: generic.light_onoff_brightness_colortemp,
  4258. },
  4259. {
  4260. zigbeeModel: ['NLG-RGBW light '],
  4261. model: '100.110.39',
  4262. vendor: 'Paul Neuhaus',
  4263. description: 'Q-FLAG LED Panel, Smart-Home RGBW',
  4264. extend: generic.light_onoff_brightness_colortemp_colorxy,
  4265. },
  4266. {
  4267. zigbeeModel: ['NLG-plug '],
  4268. model: '100.425.90',
  4269. vendor: 'Paul Neuhaus',
  4270. description: 'Q-PLUG adapter plug with night orientation light',
  4271. supports: 'on/off',
  4272. fromZigbee: [fz.on_off],
  4273. toZigbee: [tz.on_off],
  4274. },
  4275.  
  4276. // iCasa
  4277. {
  4278. zigbeeModel: ['ICZB-IW11D'],
  4279. model: 'ICZB-IW11D',
  4280. vendor: 'iCasa',
  4281. description: 'Zigbee 3.0 Dimmer',
  4282. extend: generic.light_onoff_brightness,
  4283. },
  4284. {
  4285. zigbeeModel: ['ICZB-IW11SW'],
  4286. model: 'ICZB-IW11SW',
  4287. vendor: 'iCasa',
  4288. description: 'Zigbee 3.0 Switch',
  4289. supports: 'on/off',
  4290. fromZigbee: [fz.on_off],
  4291. toZigbee: [tz.on_off],
  4292. },
  4293. {
  4294. zigbeeModel: ['ICZB-KPD18S'],
  4295. model: 'ICZB-KPD18S',
  4296. vendor: 'iCasa',
  4297. description: 'Zigbee 3.0 Keypad Pulse 8S',
  4298. supports: 'click',
  4299. fromZigbee: [fz.scenes_recall_click, fz.genOnOff_cmdOn, fz.genOnOff_cmdOff],
  4300. toZigbee: [],
  4301. },
  4302. {
  4303. zigbeeModel: ['ICZB-FC'],
  4304. model: 'ICZB-B1FC60/B3FC64/B2FC95/B2FC125',
  4305. vendor: 'iCasa',
  4306. description: 'Zigbee 3.0 Filament Lamp 60/64/95/125 mm, 806 lumen, dimmable, clear',
  4307. extend: generic.light_onoff_brightness_colortemp,
  4308. },
  4309.  
  4310. // Busch-Jaeger
  4311. {
  4312. zigbeeModel: ['PU01'],
  4313. model: '6717-84',
  4314. vendor: 'Busch-Jaeger',
  4315. description: 'Adaptor plug',
  4316. supports: 'on/off',
  4317. fromZigbee: [fz.on_off],
  4318. toZigbee: [tz.on_off],
  4319. },
  4320.  
  4321. // M��r Licht
  4322. {
  4323. zigbeeModel: ['ZBT-ExtendedColor'],
  4324. model: '404000/404005/404012',
  4325. vendor: 'M��r Licht',
  4326. description: 'Tint LED bulb GU10/E14/E27 350/470/806 lumen, dimmable, color, opal white',
  4327. extend: generic.light_onoff_brightness_colortemp_colorxy,
  4328. },
  4329. {
  4330. zigbeeModel: ['ZBT-ColorTemperature'],
  4331. model: '404006/404008/404004',
  4332. vendor: 'M��r Licht',
  4333. description: 'Tint LED bulb GU10/E14/E27 350/470/806 lumen, dimmable, opal white',
  4334. extend: generic.light_onoff_brightness_colortemp,
  4335. },
  4336. {
  4337. zigbeeModel: ['RGBW Lighting'],
  4338. model: '44435',
  4339. vendor: 'M��r Licht',
  4340. description: 'Tint LED Stripe, color, opal white',
  4341. extend: generic.light_onoff_brightness_colortemp_colorxy,
  4342. },
  4343. {
  4344. zigbeeModel: ['ZBT-Remote-ALL-RGBW'],
  4345. model: 'MLI-404011',
  4346. description: 'Tint remote control',
  4347. supports: 'toggle, brightness, other buttons are not supported yet!',
  4348. vendor: 'M��r Licht',
  4349. fromZigbee: [
  4350. fz.tint404011_on, fz.tint404011_off, fz.cmdToggle, fz.tint404011_brightness_updown_click,
  4351. fz.tint404011_move_to_color_temp, fz.tint404011_move_to_color, fz.tint404011_scene,
  4352. fz.tint404011_brightness_updown_release, fz.tint404011_brightness_updown_hold,
  4353. ],
  4354. toZigbee: [],
  4355. },
  4356. {
  4357. zigbeeModel: ['tint Smart Switch'],
  4358. model: '404021',
  4359. description: 'Tint smart switch',
  4360. supports: 'on/off',
  4361. vendor: 'M��r Licht',
  4362. fromZigbee: [fz.on_off],
  4363. toZigbee: [tz.on_off],
  4364. },
  4365.  
  4366. // Salus
  4367. {
  4368. zigbeeModel: ['SP600'],
  4369. model: 'SP600',
  4370. vendor: 'Salus',
  4371. description: 'Smart plug',
  4372. supports: 'on/off, power measurement',
  4373. fromZigbee: [fz.on_off, fz.SP600_power],
  4374. toZigbee: [tz.on_off],
  4375. meta: {configureKey: 2},
  4376. configure: async (device, coordinatorEndpoint) => {
  4377. const endpoint = device.getEndpoint(9);
  4378. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  4379. await configureReporting.onOff(endpoint);
  4380. await configureReporting.instantaneousDemand(endpoint);
  4381. await endpoint.read('seMetering', ['multiplier', 'divisor']);
  4382. },
  4383. },
  4384.  
  4385. // AduroSmart
  4386. {
  4387. zigbeeModel: ['ZLL-ExtendedColo'],
  4388. model: '81809',
  4389. vendor: 'AduroSmart',
  4390. description: 'ERIA colors and white shades smart light bulb A19',
  4391. extend: generic.light_onoff_brightness_colortemp_colorxy,
  4392. endpoint: (device) => {
  4393. return {
  4394. 'default': 2,
  4395. };
  4396. },
  4397. },
  4398. {
  4399. zigbeeModel: ['Adurolight_NCC'],
  4400. model: '81825',
  4401. vendor: 'AduroSmart',
  4402. description: 'ERIA smart wireless dimming switch',
  4403. supports: 'on, off, up, down',
  4404. fromZigbee: [fz.eria_81825_on, fz.eria_81825_off, fz.eria_81825_updown],
  4405. toZigbee: [],
  4406. meta: {configureKey: 1},
  4407. configure: async (device, coordinatorEndpoint) => {
  4408. const endpoint = device.getEndpoint(1);
  4409. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
  4410. },
  4411. },
  4412.  
  4413. // Eurotronic
  4414. {
  4415. zigbeeModel: ['SPZB0001'],
  4416. model: 'SPZB0001',
  4417. vendor: 'Eurotronic',
  4418. description: 'Spirit Zigbee wireless heater thermostat',
  4419. supports: 'temperature, heating system control',
  4420. fromZigbee: [
  4421. fz.thermostat_att_report,
  4422. fz.eurotronic_thermostat,
  4423. fz.battery_percentage_remaining,
  4424. ],
  4425. toZigbee: [
  4426. tz.thermostat_occupied_heating_setpoint, tz.thermostat_unoccupied_heating_setpoint,
  4427. tz.thermostat_local_temperature_calibration, tz.eurotronic_thermostat_system_mode,
  4428. tz.eurotronic_system_mode, tz.eurotronic_error_status, tz.thermostat_setpoint_raise_lower,
  4429. tz.thermostat_control_sequence_of_operation, tz.thermostat_remote_sensing,
  4430. tz.eurotronic_current_heating_setpoint, tz.eurotronic_trv_mode, tz.eurotronic_valve_position,
  4431. ],
  4432. meta: {configureKey: 2},
  4433. configure: async (device, coordinatorEndpoint) => {
  4434. const endpoint = device.getEndpoint(1);
  4435. const options = {manufacturerCode: 4151};
  4436. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'hvacThermostat']);
  4437. await configureReporting.thermostatTemperature(endpoint);
  4438. await endpoint.configureReporting('hvacThermostat', [{
  4439. attribute: {ID: 0x4003, type: 41},
  4440. minimumReportInterval: 0,
  4441. maximumReportInterval: repInterval.HOUR,
  4442. reportableChange: 25,
  4443. }], options);
  4444. await endpoint.configureReporting('hvacThermostat', [{
  4445. attribute: {ID: 0x4008, type: 34},
  4446. minimumReportInterval: 0,
  4447. maximumReportInterval: repInterval.HOUR,
  4448. reportableChange: 1,
  4449. }], options);
  4450. },
  4451. },
  4452.  
  4453. // Livolo
  4454. {
  4455. zigbeeModel: ['TI0001 '],
  4456. model: 'TI0001',
  4457. description:
  4458. 'Zigbee switch (1 and 2 gang) ' +
  4459. '[work in progress](https://github.com/Koenkk/zigbee2mqtt/issues/592)',
  4460. vendor: 'Livolo',
  4461. supports: 'on/off',
  4462. fromZigbee: [fz.livolo_switch_state, fz.livolo_switch_state_raw],
  4463. toZigbee: [tz.livolo_switch_on_off],
  4464. endpoint: (device) => {
  4465. return {'left': 6, 'right': 6};
  4466. },
  4467. meta: {configureKey: 1},
  4468. configure: async (device, coordinatorEndpoint) => {
  4469. const endpoint = device.getEndpoint(6);
  4470. await endpoint.command('genOnOff', 'toggle', {}, {});
  4471. },
  4472. onEvent: async (type, data, device) => {
  4473. if (['start', 'deviceAnnounce'].includes(type)) {
  4474. const endpoint = device.getEndpoint(6);
  4475. await endpoint.command('genOnOff', 'toggle', {}, {});
  4476. }
  4477. },
  4478. },
  4479.  
  4480. // Bosch
  4481. {
  4482. zigbeeModel: [
  4483. 'RFDL-ZB', 'RFDL-ZB-EU', 'RFDL-ZB-H', 'RFDL-ZB-K', 'RFDL-ZB-CHI', 'RFDL-ZB-MS', 'RFDL-ZB-ES', 'RFPR-ZB',
  4484. 'RFPR-ZB-EU', 'RFPR-ZB-CHI', 'RFPR-ZB-ES', 'RFPR-ZB-MS',
  4485. ],
  4486. model: 'RADON TriTech ZB',
  4487. vendor: 'Bosch',
  4488. description: 'Wireless motion detector',
  4489. supports: 'occupancy and temperature',
  4490. fromZigbee: [fz.temperature, fz.battery_3V, fz.iaszone_occupancy_1],
  4491. toZigbee: [],
  4492. meta: {configureKey: 1},
  4493. configure: async (device, coordinatorEndpoint) => {
  4494. const endpoint = device.getEndpoint(1);
  4495. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  4496. await configureReporting.temperature(endpoint);
  4497. await configureReporting.batteryVoltage(endpoint);
  4498. },
  4499. },
  4500. {
  4501. zigbeeModel: ['ISW-ZPR1-WP13'],
  4502. model: 'ISW-ZPR1-WP13',
  4503. vendor: 'Bosch',
  4504. description: 'Motion sensor',
  4505. supports: 'occupancy and temperature',
  4506. fromZigbee: [
  4507. fz.temperature,
  4508. fz.battery_3V, fz.iaszone_occupancy_1,
  4509. fz.ignore_iaszone_report,
  4510. ],
  4511. toZigbee: [],
  4512. meta: {configureKey: 1},
  4513. configure: async (device, coordinatorEndpoint) => {
  4514. const endpoint = device.getEndpoint(5);
  4515. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  4516. await configureReporting.temperature(endpoint);
  4517. await configureReporting.batteryVoltage(endpoint);
  4518. },
  4519. },
  4520.  
  4521. // Immax
  4522. {
  4523. zigbeeModel: ['IM-Z3.0-DIM'],
  4524. model: 'IM-Z3.0-DIM',
  4525. vendor: 'Immax',
  4526. description: 'LED E14/230V C35 5W TB 440LM ZIGBEE DIM',
  4527. extend: generic.light_onoff_brightness,
  4528. },
  4529.  
  4530. // Yale
  4531. {
  4532. zigbeeModel: ['YRD446 BLE TSDB'],
  4533. model: 'YRD426NRSC',
  4534. vendor: 'Yale',
  4535. description: 'Assure lock',
  4536. supports: 'lock/unlock, battery',
  4537. fromZigbee: [fz.lock, fz.lock_operation_event, fz.battery_200],
  4538. toZigbee: [tz.generic_lock],
  4539. meta: {configureKey: 1},
  4540. configure: async (device, coordinatorEndpoint) => {
  4541. const endpoint = device.getEndpoint(1);
  4542. await configureReporting.lockState(endpoint);
  4543. await configureReporting.batteryPercentageRemaining(endpoint);
  4544. },
  4545. },
  4546. {
  4547. zigbeeModel: ['YRD226 TSDB'],
  4548. model: 'YRD226HA2619',
  4549. vendor: 'Yale',
  4550. description: 'Assure lock',
  4551. supports: 'lock/unlock, battery',
  4552. fromZigbee: [fz.lock, fz.battery_200],
  4553. toZigbee: [tz.generic_lock],
  4554. meta: {configureKey: 1},
  4555. configure: async (device, coordinatorEndpoint) => {
  4556. const endpoint = device.getEndpoint(1);
  4557. await configureReporting.lockState(endpoint);
  4558. await configureReporting.batteryPercentageRemaining(endpoint);
  4559. },
  4560. },
  4561. {
  4562. zigbeeModel: ['YRD256 TSDB'],
  4563. model: 'YRD256HA20BP',
  4564. vendor: 'Yale',
  4565. description: 'Assure lock SL',
  4566. supports: 'lock/unlock, battery',
  4567. fromZigbee: [
  4568. fz.lock,
  4569. fz.lock_operation_event,
  4570. fz.battery_200,
  4571.  
  4572. ],
  4573. toZigbee: [tz.generic_lock],
  4574. meta: {configureKey: 1},
  4575. configure: async (device, coordinatorEndpoint) => {
  4576. const endpoint = device.getEndpoint(1);
  4577. await configureReporting.lockState(endpoint);
  4578. await configureReporting.batteryPercentageRemaining(endpoint);
  4579. },
  4580. },
  4581. {
  4582. zigbeeModel: ['iZBModule01'],
  4583. model: 'YMF40',
  4584. vendor: 'Yale',
  4585. description: 'Real living lock',
  4586. supports: 'lock/unlock, battery',
  4587. fromZigbee: [fz.lock_operation_event, fz.battery_200],
  4588. toZigbee: [tz.generic_lock],
  4589. meta: {options: {disableDefaultResponse: true}, configureKey: 2},
  4590. configure: async (device, coordinatorEndpoint) => {
  4591. const endpoint = device.getEndpoint(1);
  4592. await bind(endpoint, coordinatorEndpoint, ['closuresDoorLock', 'genPowerCfg']);
  4593. await configureReporting.lockState(endpoint);
  4594. await configureReporting.batteryPercentageRemaining(endpoint);
  4595. },
  4596. },
  4597. {
  4598. zigbeeModel: ['YRD210 PB DB'],
  4599. model: 'YRD210-HA-605',
  4600. vendor: 'Yale',
  4601. description: 'Real living keyless push button deadbolt lock',
  4602. supports: 'lock/unlock, battery',
  4603. fromZigbee: [fz.lock, fz.lock_operation_event, fz.battery_200],
  4604. toZigbee: [tz.generic_lock],
  4605. meta: {options: {disableDefaultResponse: true}, configureKey: 1},
  4606. configure: async (device, coordinatorEndpoint) => {
  4607. const endpoint = device.getEndpoint(1);
  4608. await bind(endpoint, coordinatorEndpoint, ['closuresDoorLock', 'genPowerCfg']);
  4609. await configureReporting.lockState(endpoint);
  4610. await configureReporting.batteryPercentageRemaining(endpoint);
  4611. },
  4612. },
  4613. {
  4614. zigbeeModel: ['YRD226/246 TSDB'],
  4615. model: 'YRD226/246 TSDB',
  4616. vendor: 'Yale',
  4617. description: 'Assure lock',
  4618. supports: 'lock/unlock, battery',
  4619. fromZigbee: [fz.lock, fz.battery_percentage_remaining, fz.lock_operation_event],
  4620. toZigbee: [tz.generic_lock],
  4621. meta: {configureKey: 1},
  4622. configure: async (device, coordinatorEndpoint) => {
  4623. const endpoint = device.getEndpoint(1);
  4624. await configureReporting.lockState(endpoint);
  4625. await configureReporting.batteryPercentageRemaining(endpoint);
  4626. },
  4627. },
  4628. {
  4629. zigbeeModel: ['YRD220/240 TSDB'],
  4630. model: 'YRD220/240 TSDB',
  4631. vendor: 'Yale',
  4632. description: 'Lockwood keyless push button deadbolt lock',
  4633. supports: 'lock/unlock, battery',
  4634. fromZigbee: [fz.lock, fz.lock_operation_event, fz.generic_battery],
  4635. toZigbee: [tz.generic_lock],
  4636. meta: {options: {disableDefaultResponse: true}, configureKey: 1},
  4637. configure: async (device, coordinatorEndpoint) => {
  4638. const endpoint = device.getEndpoint(1);
  4639. await bind(endpoint, coordinatorEndpoint, ['closuresDoorLock', 'genPowerCfg']);
  4640. await configureReporting.lockState(endpoint);
  4641. await configureReporting.batteryPercentageRemaining(endpoint);
  4642. },
  4643. },
  4644. // Weiser
  4645. {
  4646. zigbeeModel: ['SMARTCODE_DEADBOLT_10T'],
  4647. model: '9GED21500-00X',
  4648. vendor: 'Weiser',
  4649. description: 'Smart Lock 10',
  4650. supports: 'lock and status',
  4651. fromZigbee: [fz.lock],
  4652. toZigbee: [tz.generic_lock],
  4653. },
  4654. // Keen Home
  4655. {
  4656. zigbeeModel: [
  4657. 'SV01-410-MP-1.0', 'SV01-410-MP-1.1', 'SV01-410-MP-1.4', 'SV01-410-MP-1.5', 'SV01-412-MP-1.0',
  4658. 'SV01-610-MP-1.0', 'SV01-612-MP-1.0',
  4659. ],
  4660. model: 'SV01',
  4661. vendor: 'Keen Home',
  4662. description: 'Smart vent',
  4663. supports: 'open, close, position, temperature, pressure, battery',
  4664. fromZigbee: [
  4665. fz.cover_position_via_brightness, fz.temperature,
  4666. fz.generic_battery, fz.keen_home_smart_vent_pressure,
  4667. fz.ignore_onoff_report,
  4668. ],
  4669. toZigbee: [
  4670. tz.cover_open_close_via_brightness,
  4671. tz.cover_position_via_brightness,
  4672. ],
  4673. meta: {configureKey: 1},
  4674. configure: async (device, coordinatorEndpoint) => {
  4675. const endpoint = device.getEndpoint(1);
  4676. const binds = ['genLevelCtrl', 'genPowerCfg', 'msTemperatureMeasurement', 'msPressureMeasurement'];
  4677. await bind(endpoint, coordinatorEndpoint, binds);
  4678. await configureReporting.temperature(endpoint);
  4679. await configureReporting.pressure(endpoint);
  4680. await configureReporting.batteryPercentageRemaining(endpoint);
  4681. },
  4682. },
  4683. {
  4684. zigbeeModel: ['SV02-410-MP-1.3', 'SV02-610-MP-1.3'],
  4685. model: 'SV02',
  4686. vendor: 'Keen Home',
  4687. description: 'Smart vent',
  4688. supports: 'open, close, position, temperature, pressure, battery',
  4689. fromZigbee: [
  4690. fz.cover_position_via_brightness, fz.temperature,
  4691. fz.generic_battery, fz.keen_home_smart_vent_pressure,
  4692. fz.ignore_onoff_report,
  4693. ],
  4694. toZigbee: [
  4695. tz.cover_open_close_via_brightness,
  4696. tz.cover_position_via_brightness,
  4697. ],
  4698. meta: {configureKey: 1},
  4699. configure: async (device, coordinatorEndpoint) => {
  4700. const endpoint = device.getEndpoint(1);
  4701. const binds = ['genLevelCtrl', 'genPowerCfg', 'msTemperatureMeasurement', 'msPressureMeasurement'];
  4702. await bind(endpoint, coordinatorEndpoint, binds);
  4703. await configureReporting.temperature(endpoint);
  4704. await configureReporting.pressure(endpoint);
  4705. await configureReporting.batteryPercentageRemaining(endpoint);
  4706. },
  4707. },
  4708.  
  4709. // AXIS
  4710. {
  4711. zigbeeModel: ['Gear'],
  4712. model: 'GR-ZB01-W',
  4713. vendor: 'AXIS',
  4714. description: 'Gear window shade motor',
  4715. supports: 'open, close, position, battery',
  4716. fromZigbee: [fz.cover_position_via_brightness, fz.generic_battery],
  4717. toZigbee: [tz.cover_open_close_via_brightness, tz.cover_position_via_brightness],
  4718. meta: {configureKey: 1},
  4719. configure: async (device, coordinatorEndpoint) => {
  4720. const endpoint = device.getEndpoint(1);
  4721. await bind(endpoint, coordinatorEndpoint, ['genLevelCtrl', 'genPowerCfg']);
  4722. await configureReporting.brightness(endpoint);
  4723. await configureReporting.batteryPercentageRemaining(endpoint);
  4724. },
  4725. },
  4726.  
  4727. // ELKO
  4728. {
  4729. zigbeeModel: ['ElkoDimmerZHA'],
  4730. model: '316GLEDRF',
  4731. vendor: 'ELKO',
  4732. description: 'ZigBee in-wall smart dimmer',
  4733. supports: 'on/off, brightness',
  4734. fromZigbee: [fz.brightness, fz.on_off],
  4735. toZigbee: [tz.light_onoff_brightness, tz.ignore_transition],
  4736. meta: {options: {disableDefaultResponse: true}, configureKey: 1},
  4737. configure: async (device, coordinatorEndpoint) => {
  4738. const endpoint = device.getEndpoint(1);
  4739. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  4740. await configureReporting.onOff(endpoint);
  4741. },
  4742. },
  4743.  
  4744. // LivingWise
  4745. {
  4746. zigbeeModel: ['abb71ca5fe1846f185cfbda554046cce'],
  4747. model: 'LVS-ZB500D',
  4748. vendor: 'LivingWise',
  4749. description: 'ZigBee smart dimmer switch',
  4750. supports: 'on/off, brightness',
  4751. toZigbee: [tz.light_onoff_brightness],
  4752. fromZigbee: [
  4753. fz.on_off, fz.brightness, fz.ignore_light_brightness_report,
  4754. fz.ignore_genIdentify,
  4755. ],
  4756. },
  4757. {
  4758. zigbeeModel: ['545df2981b704114945f6df1c780515a'],
  4759. model: 'LVS-ZB15S',
  4760. vendor: 'LivingWise',
  4761. description: 'ZigBee smart in-wall switch',
  4762. supports: 'on/off',
  4763. toZigbee: [tz.on_off],
  4764. fromZigbee: [fz.on_off, fz.ignore_basic_report],
  4765. },
  4766. {
  4767. zigbeeModel: ['e70f96b3773a4c9283c6862dbafb6a99'],
  4768. model: 'LVS-SM10ZW',
  4769. vendor: 'LivingWise',
  4770. description: 'Door or window contact switch',
  4771. supports: 'contact',
  4772. fromZigbee: [fz.ias_contact_alarm_1],
  4773. toZigbee: [],
  4774. },
  4775. {
  4776. zigbeeModel: ['895a2d80097f4ae2b2d40500d5e03dcc'],
  4777. model: 'LVS-SN10ZW_SN11',
  4778. vendor: 'LivingWise',
  4779. description: 'Occupancy sensor',
  4780. supports: 'occupancy',
  4781. fromZigbee: [fz.battery_200, fz.iaszone_occupancy_1_with_timeout],
  4782. toZigbee: [],
  4783. },
  4784. {
  4785. zigbeeModel: ['55e0fa5cdb144ba3a91aefb87c068cff'],
  4786. model: 'LVS-ZB15R',
  4787. vendor: 'LivingWise',
  4788. description: 'Zigbee smart outlet',
  4789. supports: 'on/off',
  4790. fromZigbee: [fz.on_off, fz.ignore_basic_report],
  4791. toZigbee: [tz.on_off],
  4792. },
  4793.  
  4794. // Stelpro
  4795. {
  4796. zigbeeModel: ['ST218'],
  4797. model: 'ST218',
  4798. vendor: 'Stelpro',
  4799. description: 'Built-in electronic thermostat',
  4800. supports: 'temperature ',
  4801. fromZigbee: [fz.thermostat_att_report],
  4802. toZigbee: [
  4803. tz.thermostat_local_temperature, tz.thermostat_occupied_heating_setpoint,
  4804. ],
  4805. meta: {configureKey: 1},
  4806. configure: async (device, coordinatorEndpoint) => {
  4807. const endpoint = device.getEndpoint(25);
  4808. const binds = [
  4809. 'genBasic', 'genIdentify', 'genGroups', 'hvacThermostat', 'hvacUserInterfaceCfg',
  4810. 'msTemperatureMeasurement',
  4811. ];
  4812. await bind(endpoint, coordinatorEndpoint, binds);
  4813. await configureReporting.thermostatTemperature(endpoint);
  4814. },
  4815. },
  4816.  
  4817. // Nyce
  4818. {
  4819. zigbeeModel: ['3011'],
  4820. model: 'NCZ-3011-HA',
  4821. vendor: 'Nyce',
  4822. description: 'Door/window sensor',
  4823. supports: 'motion, humidity and temperature',
  4824. fromZigbee: [
  4825. fz.ignore_basic_report,
  4826. fz.ignore_genIdentify, fz.ignore_poll_ctrl,
  4827. fz.generic_battery, fz.ignore_iaszone_report,
  4828. fz.iaszone_occupancy_2, fz.ias_contact_alarm_1,
  4829. ],
  4830. toZigbee: [],
  4831. },
  4832. {
  4833. zigbeeModel: ['3043'],
  4834. model: 'NCZ-3043-HA',
  4835. vendor: 'Nyce',
  4836. description: 'Ceiling motion sensor',
  4837. supports: 'motion, humidity and temperature',
  4838. fromZigbee: [
  4839. fz.occupancy, fz.humidity, fz.temperature, fz.ignore_basic_report,
  4840. fz.ignore_genIdentify, fz.ignore_poll_ctrl,
  4841. fz.generic_battery, fz.ignore_iaszone_report,
  4842. fz.iaszone_occupancy_2,
  4843. ],
  4844. toZigbee: [],
  4845. },
  4846. {
  4847. zigbeeModel: ['3041'],
  4848. model: 'NCZ-3041-HA',
  4849. vendor: 'Nyce',
  4850. description: 'Wall motion sensor',
  4851. supports: 'motion, humidity and temperature',
  4852. fromZigbee: [
  4853. fz.occupancy, fz.humidity, fz.temperature, fz.ignore_basic_report,
  4854. fz.ignore_genIdentify, fz.ignore_poll_ctrl,
  4855. fz.generic_battery, fz.ignore_iaszone_report,
  4856. fz.iaszone_occupancy_2,
  4857. ],
  4858. toZigbee: [],
  4859. },
  4860. {
  4861. zigbeeModel: ['3045'],
  4862. model: 'NCZ-3045-HA',
  4863. vendor: 'Nyce',
  4864. description: 'Curtain motion sensor',
  4865. supports: 'motion, humidity and temperature',
  4866. fromZigbee: [
  4867. fz.occupancy, fz.humidity, fz.temperature, fz.ignore_basic_report,
  4868. fz.ignore_genIdentify, fz.ignore_poll_ctrl,
  4869. fz.generic_battery, fz.ignore_iaszone_report,
  4870. fz.iaszone_occupancy_2,
  4871. ],
  4872. toZigbee: [],
  4873. },
  4874.  
  4875. // Securifi
  4876. {
  4877. zigbeeModel: ['PP-WHT-US'],
  4878. model: 'PP-WHT-US',
  4879. vendor: 'Securifi',
  4880. description: 'Peanut Smart Plug',
  4881. supports: 'on/off, power measurement',
  4882. fromZigbee: [fz.on_off, fz.peanut_electrical],
  4883. toZigbee: [tz.on_off],
  4884. meta: {configureKey: 2},
  4885. configure: async (device, coordinatorEndpoint) => {
  4886. const endpoint = device.getEndpoint(1);
  4887. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement']);
  4888. await configureReporting.onOff(endpoint);
  4889. await configureReporting.rmsVoltage(endpoint);
  4890. await configureReporting.rmsCurrent(endpoint);
  4891. await configureReporting.activePower(endpoint);
  4892. await configureReporting.acVoltageMultiplier(endpoint);
  4893. await configureReporting.acVoltageDivisor(endpoint);
  4894. await configureReporting.acCurrentMultiplier(endpoint);
  4895. await configureReporting.acCurrentDivisor(endpoint);
  4896. await configureReporting.acPowerMultiplier(endpoint);
  4897. await configureReporting.acPowerDivisor(endpoint);
  4898. },
  4899. },
  4900.  
  4901. // Visonic
  4902. {
  4903. zigbeeModel: ['MP-841'],
  4904. model: 'MP-841',
  4905. vendor: 'Visonic',
  4906. description: 'Motion Sensor',
  4907. supports: 'motion',
  4908. fromZigbee: [fz.ias_contact_alarm_1],
  4909. toZigbee: [],
  4910. },
  4911. {
  4912. zigbeeModel: ['MCT-370 SMA'],
  4913. model: 'MCT-370 SMA',
  4914. vendor: 'Visonic',
  4915. description: 'Magnetic door & window contact sensor',
  4916. supports: 'contact',
  4917. fromZigbee: [fz.ias_contact_alarm_1],
  4918. toZigbee: [],
  4919. },
  4920. {
  4921. zigbeeModel: ['MCT-350 SMA'],
  4922. model: 'MCT-350 SMA',
  4923. vendor: 'Visonic',
  4924. description: 'Magnetic door & window contact sensor',
  4925. supports: 'motion',
  4926. fromZigbee: [fz.ias_contact_alarm_1],
  4927. toZigbee: [],
  4928. },
  4929. {
  4930. zigbeeModel: ['MCT-340 E'],
  4931. model: 'MCT-340 E',
  4932. vendor: 'Visonic',
  4933. description: 'Magnetic door & window contact sensor',
  4934. supports: 'contact, temperature',
  4935. fromZigbee: [fz.ias_contact_alarm_1, fz.temperature, fz.battery_cr2032],
  4936. toZigbee: [],
  4937. meta: {configureKey: 1},
  4938. configure: async (device, coordinatorEndpoint) => {
  4939. const endpoint = device.getEndpoint(1);
  4940. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  4941. await configureReporting.temperature(endpoint);
  4942. await configureReporting.batteryPercentageRemaining(endpoint);
  4943. },
  4944. },
  4945. {
  4946. zigbeeModel: ['MCT-340 SMA'],
  4947. model: 'MCT-340 SMA',
  4948. vendor: 'Visonic',
  4949. description: 'Magnetic door & window contact sensor',
  4950. supports: 'contact, temperature',
  4951. fromZigbee: [fz.ias_contact_alarm_1, fz.temperature, fz.battery_cr2032],
  4952. toZigbee: [],
  4953. meta: {configureKey: 1},
  4954. configure: async (device, coordinatorEndpoint) => {
  4955. const endpoint = device.getEndpoint(1);
  4956. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  4957. await configureReporting.temperature(endpoint);
  4958. await configureReporting.batteryPercentageRemaining(endpoint);
  4959. },
  4960. },
  4961.  
  4962. // Sunricher
  4963. {
  4964. zigbeeModel: ['ZG9101SAC-HP'],
  4965. model: 'ZG9101SAC-HP',
  4966. vendor: 'Sunricher',
  4967. description: 'ZigBee AC phase-cut dimmer',
  4968. extend: generic.light_onoff_brightness,
  4969. },
  4970. {
  4971. zigbeeModel: ['ON/OFF'],
  4972. model: 'ZG9101SAC-HP-Switch',
  4973. vendor: 'Sunricher',
  4974. description: 'ZigBee AC in-wall switch',
  4975. supports: 'on/off',
  4976. fromZigbee: [fz.on_off],
  4977. toZigbee: [tz.on_off],
  4978. },
  4979. {
  4980. zigbeeModel: ['ZG2833K4_EU06'],
  4981. model: 'SR-ZG9001K4-DIM2',
  4982. vendor: 'Sunricher',
  4983. description: 'ZigBee double key wall switch',
  4984. supports: 'on/off, brightness',
  4985. fromZigbee: [
  4986. fz.genOnOff_cmdOn, fz.genOnOff_cmdOff, fz.cmd_move_with_onoff, fz.cmd_stop_with_onoff, fz.generic_battery,
  4987. ],
  4988. toZigbee: [],
  4989. },
  4990.  
  4991. // Shenzhen Homa
  4992. {
  4993. zigbeeModel: ['HOMA1008'],
  4994. model: 'HLD812-Z-SC',
  4995. vendor: 'Shenzhen Homa',
  4996. description: 'Smart LED driver',
  4997. extend: generic.light_onoff_brightness,
  4998. },
  4999. {
  5000. zigbeeModel: ['HOMA1002'],
  5001. model: 'HLC610-Z',
  5002. vendor: 'Shenzhen Homa',
  5003. description: 'Wireless dimmable controller',
  5004. extend: generic.light_onoff_brightness,
  5005. },
  5006. {
  5007. zigbeeModel: ['HOMA1031'],
  5008. model: 'HLC821-Z-SC',
  5009. vendor: 'Shenzhen Homa',
  5010. description: 'ZigBee AC phase-cut dimmer',
  5011. extend: generic.light_onoff_brightness,
  5012. },
  5013.  
  5014. // Honyar
  5015. {
  5016. zigbeeModel: ['00500c35'],
  5017. model: 'U86K31ND6',
  5018. vendor: 'Honyar',
  5019. description: '3 gang switch ',
  5020. supports: 'on/off',
  5021. fromZigbee: [],
  5022. toZigbee: [tz.on_off],
  5023. endpoint: (device) => {
  5024. return {'left': 1, 'center': 2, 'right': 3};
  5025. },
  5026. meta: {configureKey: 1},
  5027. configure: async (device, coordinatorEndpoint) => {
  5028. const endpoint1 = device.getEndpoint(1);
  5029. const endpoint2 = device.getEndpoint(2);
  5030. const endpoint3 = device.getEndpoint(3);
  5031. await bind(endpoint1, coordinatorEndpoint, ['genOnOff']);
  5032. await configureReporting.onOff(endpoint1);
  5033. await bind(endpoint2, coordinatorEndpoint, ['genOnOff']);
  5034. await configureReporting.onOff(endpoint2);
  5035. await bind(endpoint3, coordinatorEndpoint, ['genOnOff']);
  5036. await configureReporting.onOff(endpoint3);
  5037. },
  5038. },
  5039.  
  5040. // Danalock
  5041. {
  5042. zigbeeModel: ['V3-BTZB'],
  5043. model: 'V3-BTZB',
  5044. vendor: 'Danalock',
  5045. description: 'BT/ZB smartlock',
  5046. supports: 'lock/unlock, battery',
  5047. fromZigbee: [fz.lock, fz.lock_operation_event, fz.battery_200],
  5048. toZigbee: [tz.generic_lock],
  5049. meta: {options: {disableDefaultResponse: true}, configureKey: 5},
  5050. configure: async (device, coordinatorEndpoint) => {
  5051. const endpoint = device.getEndpoint(1);
  5052. await bind(endpoint, coordinatorEndpoint, ['closuresDoorLock', 'genPowerCfg']);
  5053. await configureReporting.lockState(endpoint);
  5054. await configureReporting.batteryPercentageRemaining(endpoint);
  5055. },
  5056. },
  5057.  
  5058. // NET2GRID
  5059. {
  5060. zigbeeModel: ['SP31 '],
  5061. model: 'N2G-SP',
  5062. vendor: 'NET2GRID',
  5063. description: 'White Net2Grid power outlet switch with power meter',
  5064. supports: 'on/off, power and energy measurement',
  5065. fromZigbee: [fz.genOnOff_cmdOn, fz.genOnOff_cmdOff, fz.on_off, fz.generic_power],
  5066. toZigbee: [tz.on_off],
  5067. meta: {configureKey: 2},
  5068. configure: async (device, coordinatorEndpoint) => {
  5069. const endpoint1 = device.getEndpoint(1);
  5070. await bind(endpoint1, coordinatorEndpoint, ['genOnOff']);
  5071. await configureReporting.onOff(endpoint1);
  5072.  
  5073. const endpoint10 = device.getEndpoint(10);
  5074. await configureReporting.instantaneousDemand(endpoint10);
  5075. await configureReporting.currentSummDelivered(endpoint10);
  5076. await configureReporting.currentSummReceived(endpoint10);
  5077. await endpoint10.read('seMetering', ['unitOfMeasure', 'multiplier', 'divisor']);
  5078. },
  5079. },
  5080.  
  5081. // Third Reality
  5082. {
  5083. zigbeeModel: ['3RSS008Z'],
  5084. model: '3RSS008Z',
  5085. vendor: 'Third Reality',
  5086. description: 'RealitySwitch Plus',
  5087. supports: 'on/off, battery',
  5088. fromZigbee: [fz.on_off],
  5089. toZigbee: [tz.on_off, tz.ignore_transition],
  5090. },
  5091.  
  5092. // Hampton Bay
  5093. {
  5094. zigbeeModel: ['HDC52EastwindFan', 'HBUniversalCFRemote'],
  5095. model: '99432',
  5096. vendor: 'Hampton Bay',
  5097. description: 'Universal wink enabled white ceiling fan premier remote control',
  5098. supports: 'on/off, brightness, fan_mode and fan_state',
  5099. fromZigbee: generic.light_onoff_brightness.fromZigbee.concat([
  5100. fz.generic_fan_mode,
  5101. ]),
  5102. toZigbee: generic.light_onoff_brightness.toZigbee.concat([tz.fan_mode]),
  5103. meta: {options: {disableDefaultResponse: true}, configureKey: 1},
  5104. configure: async (device, coordinatorEndpoint) => {
  5105. const endpoint = device.getEndpoint(1);
  5106. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl', 'hvacFanCtrl']);
  5107. await configureReporting.onOff(endpoint);
  5108. await configureReporting.brightness(endpoint);
  5109. await configureReporting.fanMode(endpoint);
  5110. },
  5111. },
  5112. {
  5113. zigbeeModel: ['ETI 12-in Puff light'],
  5114. model: '54668161',
  5115. vendor: 'Hampton Bay',
  5116. description: '12 in. LED smart puff',
  5117. extend: generic.light_onoff_brightness_colortemp,
  5118. },
  5119.  
  5120. // Iluminize
  5121. {
  5122. zigbeeModel: ['DIM Lighting'],
  5123. model: '511.10',
  5124. vendor: 'Iluminize',
  5125. description: 'Zigbee LED-Controller ',
  5126. extend: generic.light_onoff_brightness,
  5127. },
  5128. {
  5129. zigbeeModel: ['511.201'],
  5130. model: '511.201',
  5131. vendor: 'Iluminize',
  5132. description: 'HV LED dimmer',
  5133. extend: generic.light_onoff_brightness,
  5134. },
  5135. {
  5136. zigbeeModel: ['511.012'],
  5137. model: '511.012',
  5138. vendor: 'Iluminize',
  5139. description: 'Zigbee LED-Controller ',
  5140. extend: generic.light_onoff_brightness,
  5141. },
  5142.  
  5143. // Anchor
  5144. {
  5145. zigbeeModel: ['FB56-SKT17AC1.4'],
  5146. model: '67200BL',
  5147. description: 'Vetaar smart plug',
  5148. supports: 'on/off',
  5149. vendor: 'Anchor',
  5150. fromZigbee: [fz.on_off],
  5151. toZigbee: [tz.on_off],
  5152. meta: {configureKey: 1},
  5153. configure: async (device, coordinatorEndpoint) => {
  5154. const endpoint = device.getEndpoint(3);
  5155. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  5156. await configureReporting.onOff(endpoint);
  5157. },
  5158. },
  5159.  
  5160. // Gira
  5161. {
  5162. zigbeeModel: [' Remote'],
  5163. model: '2430-100',
  5164. vendor: 'Gira',
  5165. description: 'ZigBee Light Link wall transmitter',
  5166. supports: 'action',
  5167. fromZigbee: [
  5168. fz.GIRA2430_scene_click, fz.GIRA2430_on_click, fz.GIRA2430_off_click, fz.GIRA2430_down_hold,
  5169. fz.GIRA2430_up_hold, fz.GIRA2430_stop,
  5170. ],
  5171. toZigbee: [],
  5172. },
  5173.  
  5174. // RGB genie
  5175. {
  5176. zigbeeModel: ['ZGRC-KEY-013'],
  5177. model: 'ZGRC-KEY-013',
  5178. vendor: 'RGB Genie',
  5179. description: '3 Zone remote and dimmer',
  5180. supports: 'click',
  5181. fromZigbee: [
  5182. fz.generic_battery, fz.ZGRC013_brightness_onoff, fz.ZGRC013_brightness, fz.ZGRC013_brightness_stop,
  5183. fz.ZGRC013_cmdOn, fz.ZGRC013_cmdOff, fz.ZGRC013_scene,
  5184. ],
  5185. toZigbee: [],
  5186. meta: {configureKey: 1},
  5187. configure: async (device, coordinatorEndpoint) => {
  5188. const endpoint = device.getEndpoint(1);
  5189. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  5190. await configureReporting.onOff(endpoint);
  5191. },
  5192. },
  5193.  
  5194. // Sercomm
  5195. {
  5196. zigbeeModel: ['SZ-ESW01'],
  5197. model: 'SZ-ESW01',
  5198. vendor: 'Sercomm',
  5199. description: 'Telstra smart plug',
  5200. supports: 'on/off, power consumption',
  5201. fromZigbee: [fz.on_off, fz.SZ_ESW01_AU_power],
  5202. toZigbee: [tz.on_off],
  5203. meta: {configureKey: 1},
  5204. configure: async (device, coordinatorEndpoint) => {
  5205. const endpoint = device.getEndpoint(1);
  5206. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  5207. await configureReporting.onOff(endpoint);
  5208. await configureReporting.instantaneousDemand(endpoint);
  5209. },
  5210. },
  5211. {
  5212. zigbeeModel: ['SZ-ESW01-AU'],
  5213. model: 'SZ-ESW01-AU',
  5214. vendor: 'Sercomm',
  5215. description: 'Telstra smart plug',
  5216. supports: 'on/off, power consumption',
  5217. fromZigbee: [fz.on_off, fz.SZ_ESW01_AU_power],
  5218. toZigbee: [tz.on_off],
  5219. meta: {configureKey: 1},
  5220. configure: async (device, coordinatorEndpoint) => {
  5221. const endpoint = device.getEndpoint(1);
  5222. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  5223. await configureReporting.onOff(endpoint);
  5224. await configureReporting.instantaneousDemand(endpoint);
  5225. },
  5226. },
  5227. {
  5228. zigbeeModel: ['XHS2-SE'],
  5229. model: 'XHS2-SE',
  5230. vendor: 'Sercomm',
  5231. description: 'Magnetic door & window contact sensor',
  5232. supports: 'contact, temperature',
  5233. fromZigbee: [fz.ias_contact_alarm_1, fz.temperature, fz.battery_3V_2100],
  5234. toZigbee: [],
  5235. meta: {configureKey: 1},
  5236. configure: async (device, coordinatorEndpoint) => {
  5237. const endpoint = device.getEndpoint(1);
  5238. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  5239. await configureReporting.temperature(endpoint);
  5240. await configureReporting.batteryPercentageRemaining(endpoint);
  5241. },
  5242. },
  5243. {
  5244. zigbeeModel: ['SZ-DWS04'],
  5245. model: 'SZ-DWS04',
  5246. vendor: 'Sercomm',
  5247. description: 'Magnetic door & window contact sensor',
  5248. supports: 'contact',
  5249. fromZigbee: [fz.ias_contact_alarm_1, fz.temperature, fz.battery_3V_2100],
  5250. toZigbee: [],
  5251. meta: {configureKey: 1},
  5252. configure: async (device, coordinatorEndpoint) => {
  5253. const endpoint = device.getEndpoint(1);
  5254. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  5255. await configureReporting.temperature(endpoint);
  5256. await configureReporting.batteryPercentageRemaining(endpoint);
  5257. },
  5258. },
  5259.  
  5260. // Leedarson
  5261. {
  5262. zigbeeModel: ['LED_GU10_OWDT'],
  5263. model: 'ZM350STW1TCF',
  5264. vendor: 'Leedarson',
  5265. description: 'LED PAR16 50 GU10 tunable white',
  5266. extend: generic.light_onoff_brightness_colortemp,
  5267. },
  5268. {
  5269. zigbeeModel: ['M350ST-W1R-01'],
  5270. model: 'M350STW1',
  5271. vendor: 'Leedarson',
  5272. description: 'LED PAR16 50 GU10',
  5273. extend: generic.light_onoff_brightness,
  5274. },
  5275. {
  5276. zigbeeModel: ['ZHA-DimmableLight'],
  5277. model: 'A806S-Q1R',
  5278. vendor: 'Leedarson',
  5279. description: 'LED E27 tunable white',
  5280. extend: generic.light_onoff_brightness,
  5281. },
  5282. {
  5283. zigbeeModel: ['LED_E27_OWDT'],
  5284. model: 'ZA806SQ1TCF',
  5285. vendor: 'Leedarson',
  5286. description: 'LED E27 tunable white',
  5287. extend: generic.light_onoff_brightness_colortemp,
  5288. },
  5289.  
  5290. // GMY
  5291. {
  5292. zigbeeModel: ['CCT box'],
  5293. model: 'B07KG5KF5R',
  5294. vendor: 'GMY Smart Bulb',
  5295. description: 'GMY Smart bulb, 470lm, vintage dimmable, 2700-6500k, E27',
  5296. extend: generic.light_onoff_brightness_colortemp,
  5297. },
  5298.  
  5299. // Meazon
  5300. {
  5301. zigbeeModel: [
  5302. '101.301.001649', '101.301.001838', '101.301.001802', '101.301.001738',
  5303. '101.301.001412', '101.301.001765', '101.301.001814',
  5304. ],
  5305. model: 'MEAZON_BIZY_PLUG',
  5306. vendor: 'Meazon',
  5307. description: 'Bizy plug meter',
  5308. supports: 'on/off, power, energy measurement and temperature',
  5309. fromZigbee: [
  5310. fz.genOnOff_cmdOn, fz.genOnOff_cmdOff, fz.on_off,
  5311. fz.meazon_meter,
  5312. ],
  5313. toZigbee: [tz.on_off],
  5314. meta: {configureKey: 2},
  5315. configure: async (device, coordinatorEndpoint) => {
  5316. const endpoint = device.getEndpoint(10);
  5317. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
  5318. await configureReporting.onOff(endpoint);
  5319. const options = {manufacturerCode: 4406, disableDefaultResponse: false};
  5320. await endpoint.write('seMetering', {0x1005: {value: 0x063e, type: 25}}, options);
  5321. await configureReporting.onOff(endpoint);
  5322. await endpoint.configureReporting('seMetering', [{
  5323. attribute: {ID: 0x2000, type: 0x29},
  5324. minimumReportInterval: 1,
  5325. maximumReportInterval: repInterval.MINUTES_5,
  5326. reportableChange: 1,
  5327. }], options);
  5328. },
  5329. },
  5330. {
  5331. zigbeeModel: ['102.106.000235', '102.106.001111', '102.106.000348', '102.106.000256', '102.106.001242'],
  5332. model: 'MEAZON_DINRAIL',
  5333. vendor: 'Meazon',
  5334. description: 'DinRail 1-phase meter',
  5335. supports: 'on/off, power, energy measurement and temperature',
  5336. fromZigbee: [
  5337. fz.genOnOff_cmdOn, fz.genOnOff_cmdOff, fz.on_off,
  5338. fz.meazon_meter,
  5339. ],
  5340. toZigbee: [tz.on_off],
  5341. meta: {configureKey: 2},
  5342. configure: async (device, coordinatorEndpoint) => {
  5343. const endpoint = device.getEndpoint(10);
  5344. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
  5345. await configureReporting.onOff(endpoint);
  5346. const options = {manufacturerCode: 4406, disableDefaultResponse: false};
  5347. await endpoint.write('seMetering', {0x1005: {value: 0x063e, type: 25}}, options);
  5348. await configureReporting.onOff(endpoint);
  5349. await endpoint.configureReporting('seMetering', [{
  5350. attribute: {ID: 0x2000, type: 0x29},
  5351. minimumReportInterval: 1,
  5352. maximumReportInterval: repInterval.MINUTES_5,
  5353. reportableChange: 1,
  5354. }], options);
  5355. },
  5356. },
  5357.  
  5358. // Konke
  5359. {
  5360. zigbeeModel: ['3AFE170100510001'],
  5361. model: '2AJZ4KPKEY',
  5362. vendor: 'Konke',
  5363. description: 'Multi-function button',
  5364. supports: 'single, double and long click',
  5365. fromZigbee: [
  5366. fz.konke_click,
  5367. fz.battery_3V,
  5368. ],
  5369. toZigbee: [],
  5370. meta: {configureKey: 1},
  5371. configure: async (device, coordinatorEndpoint) => {
  5372. const endpoint = device.getEndpoint(1);
  5373. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
  5374. await configureReporting.batteryVoltage(endpoint);
  5375. },
  5376. },
  5377. {
  5378. zigbeeModel: ['3AFE14010402000D', '3AFE27010402000D', '3AFE28010402000D'],
  5379. model: '2AJZ4KPBS',
  5380. vendor: 'Konke',
  5381. description: 'Motion sensor',
  5382. supports: 'occupancy',
  5383. fromZigbee: [fz.iaszone_occupancy_1_with_timeout, fz.battery_3V],
  5384. toZigbee: [],
  5385. },
  5386. {
  5387. zigbeeModel: ['3AFE140103020000', '3AFE220103020000'],
  5388. model: '2AJZ4KPFT',
  5389. vendor: 'Konke',
  5390. description: 'Temperature and humidity sensor',
  5391. supports: 'temperature and humidity',
  5392. fromZigbee: [
  5393. fz.temperature,
  5394. fz.humidity,
  5395. fz.battery_3V,
  5396. ],
  5397. toZigbee: [],
  5398. meta: {configureKey: 1},
  5399. configure: async (device, coordinatorEndpoint) => {
  5400. const endpoint = device.getEndpoint(1);
  5401. await bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'msTemperatureMeasurement']);
  5402. await configureReporting.batteryVoltage(endpoint);
  5403. await configureReporting.temperature(endpoint);
  5404. },
  5405. },
  5406. {
  5407. zigbeeModel: ['3AFE130104020015', '3AFE270104020015'],
  5408. model: '2AJZ4KPDR',
  5409. vendor: 'Konke',
  5410. description: 'Contact sensor',
  5411. supports: 'contact',
  5412. fromZigbee: [fz.ias_contact_alarm_1, fz.battery_3V],
  5413. toZigbee: [],
  5414. },
  5415. {
  5416. zigbeeModel: ['LH07321'],
  5417. model: 'LH07321',
  5418. vendor: 'Konke',
  5419. description: 'Water detector',
  5420. supports: 'water_leak',
  5421. fromZigbee: [fz.ias_water_leak_alarm_1],
  5422. toZigbee: [],
  5423. },
  5424.  
  5425. // TUYATEC
  5426. {
  5427. zigbeeModel: ['RH3040'],
  5428. model: 'RH3040',
  5429. vendor: 'TUYATEC',
  5430. description: 'PIR sensor',
  5431. supports: 'occupancy',
  5432. fromZigbee: [
  5433. fz.battery_percentage_remaining, fz.generic_battery_voltage,
  5434. fz.ignore_basic_report,
  5435. fz.iaszone_occupancy_1,
  5436. ],
  5437. toZigbee: [],
  5438. meta: {configureKey: 1},
  5439. configure: async (device, coordinatorEndpoint) => {
  5440. const endpoint = device.getEndpoint(1);
  5441. await bind(endpoint, coordinatorEndpoint, ['genBasic', 'genIdentify', 'genPowerCfg']);
  5442. await configureReporting.batteryVoltage(endpoint);
  5443. },
  5444. },
  5445. {
  5446. zigbeeModel: ['RH3052'],
  5447. model: 'TT001ZAV20',
  5448. vendor: 'TUYATEC',
  5449. description: 'Temperature & humidity sensor',
  5450. supports: 'temperature and humidity',
  5451. fromZigbee: [
  5452. fz.humidity, fz.temperature, fz.battery_200,
  5453. ],
  5454. toZigbee: [],
  5455. },
  5456.  
  5457. // Zemismart
  5458. {
  5459. zigbeeModel: ['TS0002'],
  5460. model: 'ZM-CSW002-D',
  5461. vendor: 'Zemismart',
  5462. description: '2 gang switch',
  5463. supports: 'on/off',
  5464. fromZigbee: [fz.generic_state_multi_ep, fz.generic_power],
  5465. toZigbee: [tz.on_off, tz.ignore_transition],
  5466. endpoint: (device) => {
  5467. return {'l1': 1, 'l2': 2};
  5468. },
  5469. meta: {configureKey: 2},
  5470. configure: async (device, coordinatorEndpoint) => {
  5471. const endpoint = device.getEndpoint(1);
  5472. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  5473. await configureReporting.onOff(endpoint);
  5474. await endpoint.read('seMetering', ['multiplier', 'divisor']);
  5475. },
  5476. },
  5477. {
  5478. zigbeeModel: ['NUET56-DL27LX1.1'],
  5479. model: 'LXZB-12A',
  5480. vendor: 'Zemismart',
  5481. description: 'RGB LED downlight',
  5482. extend: generic.light_onoff_brightness_colortemp_colorxy,
  5483. },
  5484. {
  5485. zigbeeModel: ['TS0302'],
  5486. model: 'ZM-CSW032-D',
  5487. vendor: 'Zemismart',
  5488. description: 'Curtain/roller blind switch',
  5489. supports: 'open, close, stop',
  5490. fromZigbee: [fz.ignore_basic_report, fz.cover_position_tilt],
  5491. toZigbee: [tz.cover_state],
  5492. },
  5493.  
  5494. // Sinope
  5495. {
  5496. zigbeeModel: ['TH1123ZB'],
  5497. model: 'TH1123ZB',
  5498. vendor: 'Sinope',
  5499. description: 'Zigbee line volt thermostat',
  5500. supports: 'local temp, units, keypad lockout, mode, state, backlight, outdoor temp, time',
  5501. fromZigbee: [
  5502. fz.thermostat_att_report,
  5503. ],
  5504. toZigbee: [
  5505. tz.thermostat_local_temperature,
  5506. tz.thermostat_occupied_heating_setpoint, tz.thermostat_unoccupied_heating_setpoint,
  5507. tz.thermostat_temperature_display_mode, tz.thermostat_keypad_lockout,
  5508. tz.thermostat_system_mode, tz.thermostat_running_state,
  5509. tz.sinope_thermostat_occupancy, tz.sinope_thermostat_backlight_autodim_param, tz.sinope_thermostat_time,
  5510. tz.sinope_thermostat_enable_outdoor_temperature, tz.sinope_thermostat_outdoor_temperature,
  5511. ],
  5512. meta: {configureKey: 1},
  5513. configure: async (device, coordinatorEndpoint) => {
  5514. const endpoint = device.getEndpoint(1);
  5515. const binds = [
  5516. 'genBasic', 'genIdentify', 'genGroups', 'hvacThermostat', 'hvacUserInterfaceCfg',
  5517. 'msTemperatureMeasurement',
  5518. ];
  5519. await bind(endpoint, coordinatorEndpoint, binds);
  5520. await configureReporting.thermostatTemperature(endpoint);
  5521. await configureReporting.thermostatOccupiedHeatingSetpoint(endpoint);
  5522. await configureReporting.thermostatPIHeatingDemand(endpoint);
  5523. },
  5524. },
  5525. {
  5526. zigbeeModel: ['TH1124ZB'],
  5527. model: 'TH1124ZB',
  5528. vendor: 'Sinope',
  5529. description: 'Zigbee line volt thermostat',
  5530. supports: 'local temp, units, keypad lockout, mode, state, backlight, outdoor temp, time',
  5531. fromZigbee: [
  5532. fz.thermostat_att_report,
  5533. ],
  5534. toZigbee: [
  5535. tz.thermostat_local_temperature,
  5536. tz.thermostat_occupied_heating_setpoint, tz.thermostat_unoccupied_heating_setpoint,
  5537. tz.thermostat_temperature_display_mode, tz.thermostat_keypad_lockout,
  5538. tz.thermostat_system_mode, tz.thermostat_running_state,
  5539. tz.sinope_thermostat_occupancy, tz.sinope_thermostat_backlight_autodim_param, tz.sinope_thermostat_time,
  5540. tz.sinope_thermostat_enable_outdoor_temperature, tz.sinope_thermostat_outdoor_temperature,
  5541. ],
  5542. meta: {configureKey: 1},
  5543. configure: async (device, coordinatorEndpoint) => {
  5544. const endpoint = device.getEndpoint(1);
  5545. const binds = [
  5546. 'genBasic', 'genIdentify', 'genGroups', 'hvacThermostat', 'hvacUserInterfaceCfg',
  5547. 'msTemperatureMeasurement',
  5548. ];
  5549. await bind(endpoint, coordinatorEndpoint, binds);
  5550. await configureReporting.thermostatTemperature(endpoint);
  5551. await configureReporting.thermostatOccupiedHeatingSetpoint(endpoint);
  5552. await configureReporting.thermostatPIHeatingDemand(endpoint);
  5553. },
  5554. },
  5555.  
  5556. // Lutron
  5557. {
  5558. zigbeeModel: ['LZL4BWHL01 Remote'],
  5559. model: 'LZL4BWHL01',
  5560. vendor: 'Lutron',
  5561. description: 'Connected bulb remote control',
  5562. supports: 'on/off, brightness',
  5563. fromZigbee: [fz.GIRA2430_down_hold, fz.GIRA2430_up_hold, fz.LZL4B_onoff, fz.GIRA2430_stop],
  5564. toZigbee: [],
  5565. },
  5566.  
  5567. // Zen
  5568. {
  5569. zigbeeModel: ['Zen-01'],
  5570. model: 'Zen-01-W',
  5571. vendor: 'Zen',
  5572. description: 'Thermostat',
  5573. supports: 'temperature, heating/cooling system control',
  5574. fromZigbee: [
  5575. fz.generic_battery_voltage,
  5576. fz.thermostat_att_report,
  5577. ],
  5578. toZigbee: [
  5579. tz.factory_reset, tz.thermostat_local_temperature, tz.thermostat_local_temperature_calibration,
  5580. tz.thermostat_occupancy, tz.thermostat_occupied_heating_setpoint,
  5581. tz.thermostat_occupied_cooling_setpoint,
  5582. tz.thermostat_unoccupied_heating_setpoint, tz.thermostat_setpoint_raise_lower,
  5583. tz.thermostat_remote_sensing, tz.thermostat_control_sequence_of_operation, tz.thermostat_system_mode,
  5584. tz.thermostat_weekly_schedule, tz.thermostat_clear_weekly_schedule, tz.thermostat_weekly_schedule_rsp,
  5585. tz.thermostat_relay_status_log, tz.thermostat_relay_status_log_rsp,
  5586. ],
  5587. meta: {configureKey: 1},
  5588. configure: async (device, coordinatorEndpoint) => {
  5589. const endpoint = device.getEndpoint(3);
  5590. const binds = [
  5591. 'genBasic', 'genIdentify', 'genPowerCfg', 'genTime', 'hvacThermostat', 'hvacUserInterfaceCfg',
  5592. ];
  5593. await bind(endpoint, coordinatorEndpoint, binds);
  5594. await configureReporting.thermostatTemperature(endpoint);
  5595. },
  5596. },
  5597.  
  5598. // Hej
  5599. {
  5600. zigbeeModel: ['HejSW01'],
  5601. model: 'GLSK3ZB-1711',
  5602. vendor: 'Hej',
  5603. description: 'Goqual 1 gang Switch',
  5604. supports: 'on/off',
  5605. fromZigbee: [fz.on_off],
  5606. toZigbee: [tz.on_off],
  5607. },
  5608. {
  5609. zigbeeModel: ['HejSW02'],
  5610. model: 'GLSK3ZB-1712',
  5611. vendor: 'Hej',
  5612. description: 'Goqual 2 gang Switch',
  5613. supports: 'on/off',
  5614. fromZigbee: [fz.generic_state_multi_ep],
  5615. toZigbee: [tz.on_off],
  5616. endpoint: (device) => {
  5617. return {'top': 1, 'bottom': 2};
  5618. },
  5619. meta: {configureKey: 1},
  5620. configure: async (device, coordinatorEndpoint) => {
  5621. await bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
  5622. await bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
  5623. },
  5624. },
  5625. {
  5626. zigbeeModel: ['HejSW03'],
  5627. model: 'GLSK3ZB-1713',
  5628. vendor: 'Hej',
  5629. description: 'Goqual 3 gang Switch',
  5630. supports: 'on/off',
  5631. fromZigbee: [fz.generic_state_multi_ep],
  5632. toZigbee: [tz.on_off],
  5633. endpoint: (device) => {
  5634. return {'top': 1, 'center': 2, 'bottom': 3};
  5635. },
  5636. meta: {configureKey: 1},
  5637. configure: async (device, coordinatorEndpoint) => {
  5638. await bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
  5639. await bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
  5640. await bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
  5641. },
  5642. },
  5643. {
  5644. zigbeeModel: ['HejSW04'],
  5645. model: 'GLSK6ZB-1714',
  5646. vendor: 'Hej',
  5647. description: 'Goqual 4 gang Switch',
  5648. supports: 'on/off',
  5649. fromZigbee: [fz.generic_state_multi_ep],
  5650. toZigbee: [tz.on_off],
  5651. endpoint: (device) => {
  5652. return {'top_left': 1, 'bottom_left': 2, 'top_right': 3, 'bottom_right': 4};
  5653. },
  5654. meta: {configureKey: 1},
  5655. configure: async (device, coordinatorEndpoint) => {
  5656. await bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
  5657. await bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
  5658. await bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
  5659. await bind(device.getEndpoint(4), coordinatorEndpoint, ['genOnOff']);
  5660. },
  5661. },
  5662. {
  5663. zigbeeModel: ['HejSW05'],
  5664. model: 'GLSK6ZB-1715',
  5665. vendor: 'Hej',
  5666. description: 'Goqual 5 gang Switch',
  5667. supports: 'on/off',
  5668. fromZigbee: [fz.generic_state_multi_ep],
  5669. toZigbee: [tz.on_off],
  5670. endpoint: (device) => {
  5671. return {'top_left': 1, 'center_left': 2, 'bottom_left': 3, 'top_right': 4, 'bottom_right': 5};
  5672. },
  5673. meta: {configureKey: 1},
  5674. configure: async (device, coordinatorEndpoint) => {
  5675. await bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
  5676. await bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
  5677. await bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
  5678. await bind(device.getEndpoint(4), coordinatorEndpoint, ['genOnOff']);
  5679. await bind(device.getEndpoint(5), coordinatorEndpoint, ['genOnOff']);
  5680. },
  5681. },
  5682. {
  5683. zigbeeModel: ['HejSW06'],
  5684. model: 'GLSK6ZB-1716',
  5685. vendor: 'Hej',
  5686. description: 'Goqual 6 gang Switch',
  5687. supports: 'on/off',
  5688. fromZigbee: [fz.generic_state_multi_ep],
  5689. toZigbee: [tz.on_off],
  5690. endpoint: (device) => {
  5691. return {
  5692. 'top_left': 1, 'center_left': 2, 'bottom_left': 3,
  5693. 'top_right': 4, 'center_right': 5, 'bottom_right': 6,
  5694. };
  5695. },
  5696. meta: {configureKey: 1},
  5697. configure: async (device, coordinatorEndpoint) => {
  5698. await bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
  5699. await bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
  5700. await bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
  5701. await bind(device.getEndpoint(4), coordinatorEndpoint, ['genOnOff']);
  5702. await bind(device.getEndpoint(5), coordinatorEndpoint, ['genOnOff']);
  5703. await bind(device.getEndpoint(6), coordinatorEndpoint, ['genOnOff']);
  5704. },
  5705. },
  5706.  
  5707. // Dawon DNS
  5708. {
  5709. zigbeeModel: ['PM-C140-ZB'],
  5710. model: 'PM-C140-ZB',
  5711. vendor: 'Dawon DNS',
  5712. description: 'IOT remote control smart buried-type outlet',
  5713. supports: 'on/off, power and energy measurement',
  5714. fromZigbee: [fz.on_off, fz.generic_power],
  5715. toZigbee: [tz.on_off],
  5716. meta: {configureKey: 2},
  5717. configure: async (device, coordinatorEndpoint) => {
  5718. const endpoint = device.getEndpoint(1);
  5719. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  5720. await configureReporting.instantaneousDemand(endpoint);
  5721. await endpoint.read('seMetering', ['multiplier', 'divisor']);
  5722. },
  5723. },
  5724.  
  5725. // CREE
  5726. {
  5727. zigbeeModel: ['Connected A-19 60W Equivalent ', 'Connected A-19 60W Equivalent '],
  5728. model: 'B00TN589ZG',
  5729. vendor: 'CREE',
  5730. description: 'Connected bulb',
  5731. extend: generic.light_onoff_brightness,
  5732. },
  5733.  
  5734. // Ubisys
  5735. {
  5736. zigbeeModel: ['S1 (5501)', 'S1-R (5601)'],
  5737. model: 'S1',
  5738. vendor: 'Ubisys',
  5739. description: 'Power switch S1',
  5740. supports: 'on/off, power measurement',
  5741. fromZigbee: [fz.on_off, fz.generic_power],
  5742. toZigbee: [tz.on_off],
  5743. meta: {configureKey: 2},
  5744. configure: async (device, coordinatorEndpoint) => {
  5745. const endpoint = device.getEndpoint(3);
  5746. await configureReporting.instantaneousDemand(endpoint);
  5747. await endpoint.read('seMetering', ['multiplier', 'divisor']);
  5748. },
  5749. },
  5750. {
  5751. zigbeeModel: ['S2 (5502)', 'S2-R (5602)'],
  5752. model: 'S2',
  5753. vendor: 'Ubisys',
  5754. description: 'Power switch S2',
  5755. supports: 'on/off, power measurement',
  5756. fromZigbee: [fz.on_off, fz.generic_power],
  5757. toZigbee: [tz.on_off],
  5758. endpoint: (device) => {
  5759. return {'l1': 1, 'l2': 2};
  5760. },
  5761. meta: {configureKey: 2},
  5762. configure: async (device, coordinatorEndpoint) => {
  5763. const endpoint = device.getEndpoint(5);
  5764. await configureReporting.instantaneousDemand(endpoint);
  5765. await endpoint.read('seMetering', ['multiplier', 'divisor']);
  5766. },
  5767. },
  5768. {
  5769. zigbeeModel: ['D1 (5503)', 'D1-R (5603)'],
  5770. model: 'D1',
  5771. vendor: 'Ubisys',
  5772. description: 'Universal dimmer D1',
  5773. supports: 'on/off, brightness, power measurement',
  5774. fromZigbee: [fz.on_off, fz.brightness, fz.generic_power],
  5775. toZigbee: [tz.light_onoff_brightness],
  5776. meta: {configureKey: 2},
  5777. configure: async (device, coordinatorEndpoint) => {
  5778. const endpoint = device.getEndpoint(4);
  5779. await configureReporting.instantaneousDemand(endpoint);
  5780. await endpoint.read('seMetering', ['multiplier', 'divisor']);
  5781. },
  5782. },
  5783. {
  5784. zigbeeModel: ['J1 (5502)', 'J1-R (5602)'],
  5785. model: 'J1',
  5786. vendor: 'Ubisys',
  5787. description: 'Shutter control J1',
  5788. supports: 'open, close, stop, position, tilt',
  5789. fromZigbee: [fz.cover_position_tilt],
  5790. toZigbee: [tz.cover_state, tz.cover_position_tilt, tz.ubisys_configure_j1],
  5791. },
  5792.  
  5793. // Lutron
  5794. {
  5795. zigbeeModel: ['Z3-1BRL'],
  5796. model: 'Z3-1BRL',
  5797. vendor: 'Lutron',
  5798. description: 'Aurora smart bulb dimmer',
  5799. supports: 'brightness',
  5800. fromZigbee: [fz.dimmer_passthru_brightness],
  5801. toZigbee: [],
  5802. meta: {configureKey: 1},
  5803. configure: async (device, coordinatorEndpoint) => {
  5804. const endpoint = device.getEndpoint(1);
  5805. await bind(endpoint, coordinatorEndpoint, ['genLevelCtrl']);
  5806. },
  5807. },
  5808.  
  5809. // Piri
  5810. {
  5811. zigbeeModel: ['GASSensor-EM'],
  5812. model: 'HSIO18008',
  5813. vendor: 'Piri',
  5814. description: 'Combustible gas sensor',
  5815. supports: 'gas',
  5816. fromZigbee: [fz.ias_gas_alarm_1],
  5817. toZigbee: [],
  5818. },
  5819.  
  5820. // PEQ
  5821. {
  5822. zigbeeModel: ['3300'],
  5823. model: '3300-P',
  5824. vendor: 'PEQ',
  5825. description: 'Door & window contact sensor',
  5826. supports: 'contact, temperature',
  5827. fromZigbee: [fz.temperature, fz.ias_contact_alarm_1, fz.battery_3V],
  5828. toZigbee: [],
  5829. meta: {configureKey: 1},
  5830. configure: async (device, coordinatorEndpoint) => {
  5831. const endpoint = device.getEndpoint(1);
  5832. await bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
  5833. await configureReporting.temperature(endpoint);
  5834. await configureReporting.batteryVoltage(endpoint);
  5835. await configureReporting.batteryPercentageRemaining(endpoint);
  5836. },
  5837. },
  5838.  
  5839. // Lonsonho
  5840. {
  5841. zigbeeModel: ['Plug_01'],
  5842. model: '4000116784070',
  5843. vendor: 'Lonsonho',
  5844. description: 'Smart plug EU',
  5845. supports: 'on/off',
  5846. fromZigbee: [fz.on_off],
  5847. toZigbee: [tz.on_off],
  5848. meta: {configureKey: 1},
  5849. configure: async (device, coordinatorEndpoint) => {
  5850. const endpoint = device.getEndpoint(11);
  5851. await configureReporting.onOff(endpoint);
  5852. },
  5853. },
  5854.  
  5855. // iHORN
  5856. {
  5857. zigbeeModel: ['113D'],
  5858. model: 'LH-32ZB',
  5859. vendor: 'iHORN',
  5860. description: 'Temperature & humidity sensor',
  5861. supports: 'temperature and humidity',
  5862. fromZigbee: [fz.humidity, fz.temperature, fz.battery_200],
  5863. toZigbee: [],
  5864. },
  5865. {
  5866. zigbeeModel: ['113C'],
  5867. model: 'LH-992ZB',
  5868. vendor: 'iHORN',
  5869. description: 'Motion sensor',
  5870. supports: 'occupancy',
  5871. fromZigbee: [fz.iaszone_occupancy_1],
  5872. toZigbee: [],
  5873. },
  5874.  
  5875. // TERNCY
  5876. {
  5877. zigbeeModel: ['TERNCY-PP01'],
  5878. model: 'TERNCY-PP01',
  5879. vendor: 'TERNCY',
  5880. description: 'Awareness switch',
  5881. supports: 'temperature, occupancy, illuminance, click, double click, triple click',
  5882. fromZigbee: [
  5883. fz.terncy_temperature, fz.occupancy_with_timeout,
  5884. fz.generic_illuminance, fz.terncy_raw, fz.generic_battery,
  5885. ],
  5886. toZigbee: [],
  5887. },
  5888.  
  5889. // ORVIBO
  5890. {
  5891. zigbeeModel: ['3c4e4fc81ed442efaf69353effcdfc5f'],
  5892. model: 'CR11S8UZ',
  5893. vendor: 'ORVIBO',
  5894. description: 'Smart sticker switch',
  5895. supports: 'click, hold, release',
  5896. fromZigbee: [fz.orvibo_raw],
  5897. toZigbee: [],
  5898. },
  5899.  
  5900. // SONOFF
  5901. {
  5902. zigbeeModel: ['BASICZBR3'],
  5903. model: 'BASICZBR3',
  5904. vendor: 'SONOFF',
  5905. description: 'Zigbee smart switch',
  5906. supports: 'on/off',
  5907. fromZigbee: [fz.on_off],
  5908. toZigbee: [tz.on_off],
  5909. },
  5910. {
  5911. zigbeeModel: ['S31 Lite zb'],
  5912. model: 'S31ZB',
  5913. vendor: 'SONOFF',
  5914. description: 'Zigbee smart plug (US version)',
  5915. supports: 'on/off',
  5916. fromZigbee: [fz.on_off],
  5917. toZigbee: [tz.on_off],
  5918. meta: {configureKey: 1},
  5919. configure: async (device, coordinatorEndpoint) => {
  5920. const endpoint = device.getEndpoint(1);
  5921. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  5922. },
  5923. },
  5924.  
  5925. // eWeLink: the IoT solution provider behinds lots of smart device brands
  5926. {
  5927. zigbeeModel: ['SA-003-Zigbee'],
  5928. model: 'SA-003-Zigbee',
  5929. vendor: 'eWeLink',
  5930. description: 'Zigbee smart plug',
  5931. supports: 'on/off',
  5932. fromZigbee: [fz.on_off],
  5933. toZigbee: [tz.on_off],
  5934. meta: {configureKey: 1},
  5935. configure: async (device, coordinatorEndpoint) => {
  5936. const endpoint = device.getEndpoint(1);
  5937. await bind(endpoint, coordinatorEndpoint, ['genOnOff']);
  5938. },
  5939. },
  5940.  
  5941. // CR Smart Home
  5942. {
  5943. zigbeeModel: ['TS0001'],
  5944. model: 'TS0001',
  5945. vendor: 'CR Smart Home',
  5946. description: 'Valve control',
  5947. supports: 'control',
  5948. fromZigbee: [fz.on_off],
  5949. toZigbee: [tz.on_off],
  5950. },
  5951. {
  5952. zigbeeModel: ['TS0202'],
  5953. model: 'TS0202',
  5954. vendor: 'CR Smart Home',
  5955. description: 'Motion sensor',
  5956. supports: 'occupancy',
  5957. fromZigbee: [fz.iaszone_occupancy_1, fz.battery_percentage_remaining, fz.ignore_basic_report],
  5958. toZigbee: [],
  5959. },
  5960. {
  5961. zigbeeModel: ['TS0203'],
  5962. model: 'TS0203',
  5963. vendor: 'CR Smart Home',
  5964. description: 'Door sensor',
  5965. supports: 'contact',
  5966. fromZigbee: [fz.ias_contact_alarm_1, fz.battery_percentage_remaining, fz.ignore_basic_report],
  5967. toZigbee: [],
  5968. },
  5969. {
  5970. zigbeeModel: ['TS0204'],
  5971. model: 'TS0204',
  5972. vendor: 'CR Smart Home',
  5973. description: 'Gas sensor',
  5974. supports: 'gas',
  5975. fromZigbee: [fz.ias_gas_alarm_1, fz.battery_percentage_remaining, fz.ignore_basic_report],
  5976. toZigbee: [],
  5977. },
  5978. {
  5979. zigbeeModel: ['TS0205'],
  5980. model: 'TS0205',
  5981. vendor: 'CR Smart Home',
  5982. description: 'Smoke sensor',
  5983. supports: 'smoke',
  5984. fromZigbee: [fz.ias_smoke_alarm_1, fz.battery_percentage_remaining, fz.ignore_basic_report],
  5985. toZigbee: [],
  5986. },
  5987. {
  5988. zigbeeModel: ['TS0111'],
  5989. model: 'TS0111',
  5990. vendor: 'CR Smart Home',
  5991. description: 'Socket',
  5992. supports: 'on/off',
  5993. fromZigbee: [fz.on_off],
  5994. toZigbee: [tz.on_off],
  5995. },
  5996. {
  5997. zigbeeModel: ['TS0207'],
  5998. model: 'TS0207',
  5999. vendor: 'CR Smart Home',
  6000. description: 'Water leak detector',
  6001. supports: 'water leak',
  6002. fromZigbee: [fz.ias_water_leak_alarm_1, fz.battery_percentage_remaining],
  6003. toZigbee: [],
  6004. },
  6005. {
  6006. zigbeeModel: ['TS0218'],
  6007. model: 'TS0218',
  6008. vendor: 'CR Smart Home',
  6009. description: 'Button',
  6010. supports: 'click',
  6011. fromZigbee: [fz.TS0218_click, fz.battery_percentage_remaining],
  6012. toZigbee: [],
  6013. },
  6014.  
  6015. // EcoDim
  6016. {
  6017. zigbeeModel: ['Dimmer-Switch-ZB3.0'],
  6018. model: 'Eco-Dim.07',
  6019. vendor: 'EcoDim',
  6020. description: 'Zigbee & Z-wave dimmer ',
  6021. extend: generic.light_onoff_brightness,
  6022. meta: {configureKey: 1},
  6023. configure: async (device, coordinatorEndpoint) => {
  6024. const endpoint = device.getEndpoint(1);
  6025. await bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
  6026. await configureReporting.onOff(endpoint);
  6027. await configureReporting.brightness(endpoint);
  6028. },
  6029. },
  6030.  
  6031. // Smart9
  6032. {
  6033. zigbeeModel: ['TS0043'],
  6034. model: 'S9TSZGB',
  6035. vendor: 'Smart9',
  6036. description: 'Touch switch',
  6037. supports: 'action',
  6038. fromZigbee: [fz.ts0043_click],
  6039. toZigbee: [],
  6040. },
  6041. ];
  6042.  
  6043. module.exports = devices.map((device) =>
  6044. device.extend ? Object.assign({}, device.extend, device) : device
  6045. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement