zigbee-herdsman-converters 14.0.601 → 14.0.604

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/devices/adeo.js CHANGED
@@ -80,6 +80,13 @@ module.exports = [
80
80
  description: 'ENKI LEXMAN RGBTW GU10 Bulb',
81
81
  extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 370]}),
82
82
  },
83
+ {
84
+ zigbeeModel: ['ZBEK-10'],
85
+ model: 'IC-CDZFB2AC004HA-MZN',
86
+ vendor: 'ADEO',
87
+ description: 'ENKI LEXMAN E14 LED white',
88
+ extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
89
+ },
83
90
  {
84
91
  zigbeeModel: ['ZBEK-12'],
85
92
  model: 'IA-CDZFB2AA007NA-MZN-01',
@@ -482,6 +482,14 @@ module.exports = [
482
482
  description: 'Zigbee 12W E26/E27 Bulb RGB+CCT (pro)',
483
483
  extend: gledoptoExtend.light_onoff_brightness_colortemp_color(),
484
484
  },
485
+ {
486
+ zigbeeModel: ['GL-D-002P'],
487
+ model: 'GL-D-002P',
488
+ vendor: 'Gledopto',
489
+ ota: ota.zigbeeOTA,
490
+ description: 'Zigbee 6W Downlight RGB+CCT (pro CRI>90)',
491
+ extend: gledoptoExtend.light_onoff_brightness_colortemp_color({colorTempRange: [158, 495]}),
492
+ },
485
493
  {
486
494
  zigbeeModel: ['GL-D-003Z'],
487
495
  model: 'GL-D-003Z',
@@ -336,6 +336,13 @@ module.exports = [
336
336
  description: 'Hue Iris rose limited edition (generation 4) ',
337
337
  extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
338
338
  },
339
+ {
340
+ zigbeeModel: ['929002401201'],
341
+ model: '929002401201',
342
+ vendor: 'Philips',
343
+ description: 'Hue Iris copper special edition (generation 4) ',
344
+ extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
345
+ },
339
346
  {
340
347
  zigbeeModel: ['5063130P7'],
341
348
  model: '5063130P7',
@@ -52,7 +52,7 @@ module.exports = [
52
52
  },
53
53
  exposes: [e.battery(), e.battery_voltage(),
54
54
  exposes.enum('status', ea.STATE, ['idle', 'in', 'out']).withDescription('Currently status'),
55
- exposes.numeric('people', ea.ALL).withValueMin(0).withValueMax(50).withDescription('People count')],
55
+ exposes.numeric('people', ea.ALL).withValueMin(0).withValueMax(100).withDescription('People count')],
56
56
  },
57
57
  {
58
58
  zigbeeModel: ['USM-300Z'],
@@ -390,4 +390,45 @@ module.exports = [
390
390
  .withFeature(exposes.numeric('pin_code', ea.SET).withDescription('Pincode to set, set pincode(4 digit) to null to clear')),
391
391
  ],
392
392
  },
393
+ {
394
+ zigbeeModel: ['DMS-300Z'],
395
+ model: 'DMS-300ZB',
396
+ vendor: 'ShinaSystem',
397
+ ota: ota.zigbeeOTA,
398
+ description: 'SiHAS dual motion sensor',
399
+ meta: {battery: {voltageToPercentage: '3V_2100'}},
400
+ fromZigbee: [fz.battery, fz.occupancy, fz.occupancy_timeout],
401
+ toZigbee: [tz.occupancy_timeout],
402
+ configure: async (device, coordinatorEndpoint, logger) => {
403
+ const endpoint = device.getEndpoint(1);
404
+ const binds = ['genPowerCfg', 'msOccupancySensing'];
405
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
406
+ await reporting.batteryVoltage(endpoint, {min: 30, max: 21600, change: 1});
407
+ await reporting.occupancy(endpoint, {min: 1, max: 600, change: 1});
408
+ await endpoint.read('msOccupancySensing', ['pirOToUDelay']);
409
+ },
410
+ exposes: [e.battery(), e.battery_voltage(), e.occupancy(),
411
+ exposes.numeric('occupancy_timeout', ea.ALL).withUnit('second').withValueMin(0).withValueMax(65535)],
412
+ },
413
+ {
414
+ zigbeeModel: ['ISM300Z3'],
415
+ model: 'ISM300Z3',
416
+ vendor: 'ShinaSystem',
417
+ ota: ota.zigbeeOTA,
418
+ description: 'SiHAS IOT smart inner switch 3 gang',
419
+ extend: extend.switch(),
420
+ exposes: [e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2'), e.switch().withEndpoint('l3')],
421
+ endpoint: (device) => {
422
+ return {l1: 1, l2: 2, l3: 3};
423
+ },
424
+ meta: {multiEndpoint: true},
425
+ configure: async (device, coordinatorEndpoint, logger) => {
426
+ await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
427
+ await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
428
+ await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
429
+ await reporting.onOff(device.getEndpoint(1));
430
+ await reporting.onOff(device.getEndpoint(2));
431
+ await reporting.onOff(device.getEndpoint(3));
432
+ },
433
+ },
393
434
  ];
package/devices/tuya.js CHANGED
@@ -278,6 +278,13 @@ const fzLocal = {
278
278
  return fz.metering.convert(model, msg, publish, options, meta);
279
279
  },
280
280
  },
281
+ electrical_measurement_skip_duplicate: {
282
+ ...fz.electrical_measurement,
283
+ convert: (model, msg, publish, options, meta) => {
284
+ if (utils.hasAlreadyProcessedMessage(msg)) return;
285
+ return fz.electrical_measurement.convert(model, msg, publish, options, meta);
286
+ },
287
+ },
281
288
  scenes_recall_scene_65029: {
282
289
  cluster: '65029',
283
290
  type: ['raw', 'attributeReport'],
@@ -759,6 +766,7 @@ module.exports = [
759
766
  {modelID: 'TS0505B', manufacturerName: '_TZ3000_1mtktxdk'},
760
767
  {modelID: 'TS0505B', manufacturerName: '_TZ3210_remypqqm'},
761
768
  {modelID: 'TS0505B', manufacturerName: '_TZ3000_kohbva1f'},
769
+ {modelID: 'TS0505B', manufacturerName: '_TZ3000_luit1t00'},
762
770
  {modelID: 'TS0505B', manufacturerName: '_TZ3210_wslkvrau'},
763
771
  {modelID: 'TS0505B', manufacturerName: '_TZ3210_0rn9qhnu'},
764
772
  {modelID: 'TS0505B', manufacturerName: '_TZ3210_ejctepku'},
@@ -819,7 +827,8 @@ module.exports = [
819
827
  {modelID: 'TS0504B', manufacturerName: '_TZ3210_bfvybixd'},
820
828
  {modelID: 'TS0504B', manufacturerName: '_TZ3210_i2i0bsnv'},
821
829
  {modelID: 'TS0504B', manufacturerName: '_TZ3210_elzv6aia'},
822
- {modelID: 'TS0504B', manufacturerName: '_TZ3210_1elppmba'}],
830
+ {modelID: 'TS0504B', manufacturerName: '_TZ3210_1elppmba'},
831
+ {modelID: 'TS0504B', manufacturerName: '_TZ3210_onejz0gt'}],
823
832
  model: 'TS0504B',
824
833
  vendor: 'TuYa',
825
834
  description: 'Zigbee RGBW light',
@@ -1232,6 +1241,7 @@ module.exports = [
1232
1241
  {modelID: 'TS0502B', manufacturerName: '_TZ3210_nvaik6gk'},
1233
1242
  {modelID: 'TS0502B', manufacturerName: '_TZ3000_armwcncd'},
1234
1243
  {modelID: 'TS0502B', manufacturerName: '_TZ3210_2p6wbry3'},
1244
+ {modelID: 'TS0502B', manufacturerName: '_TZB210_nfzrlz29'},
1235
1245
  {modelID: 'TS0502B', manufacturerName: '_TZ3210_qamcypen'},
1236
1246
  {modelID: 'TS0502B', manufacturerName: '_TZ3210_zdrhqmo0'},
1237
1247
  {modelID: 'TS0502B', manufacturerName: '_TZ3210_2cjfbpy0'},
@@ -1741,6 +1751,7 @@ module.exports = [
1741
1751
  {modelID: 'TS0601', manufacturerName: '_TZE200_e9ba97vf'}, /* model: 'TV01-ZB', vendor: 'Moes' */
1742
1752
  {modelID: 'TS0601', manufacturerName: '_TZE200_husqqvux'}, /* model: 'TSL-TRV-TV01ZG', vendor: 'Tesla Smart' */
1743
1753
  {modelID: 'TS0601', manufacturerName: '_TZE200_lllliz3p'}, /* model: 'TV02-Zigbee', vendor: 'TuYa' */
1754
+ {modelID: 'TS0601', manufacturerName: '_TZE200_mudxchsu'}, /* model: 'TV05-ZG curve', vendor: 'TuYa' */
1744
1755
  ],
1745
1756
  model: 'TV02-Zigbee',
1746
1757
  vendor: 'TuYa',
@@ -1935,7 +1946,7 @@ module.exports = [
1935
1946
  {vendor: 'BlitzWolf', model: 'BW-SHP15'}, {vendor: 'Nous', model: 'A1Z'}, {vendor: 'BlitzWolf', model: 'BW-SHP13'},
1936
1947
  {vendor: 'MatSee Plus', model: 'PJ-ZSW01'}],
1937
1948
  ota: ota.zigbeeOTA,
1938
- fromZigbee: [fz.on_off, fz.electrical_measurement, fzLocal.metering_skip_duplicate, fz.ignore_basic_report,
1949
+ fromZigbee: [fz.on_off, fzLocal.electrical_measurement_skip_duplicate, fzLocal.metering_skip_duplicate, fz.ignore_basic_report,
1939
1950
  fz.tuya_switch_power_outage_memory, fz.ts011f_plug_indicator_mode, fz.ts011f_plug_child_mode],
1940
1951
  toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory, tz.ts011f_plug_indicator_mode, tz.ts011f_plug_child_mode],
1941
1952
  configure: async (device, coordinatorEndpoint, logger) => {
@@ -1989,7 +2000,7 @@ module.exports = [
1989
2000
  whiteLabel: [{vendor: 'VIKEFON', model: 'TS011F'}, {vendor: 'BlitzWolf', model: 'BW-SHP15'},
1990
2001
  {vendor: 'Avatto', model: 'MIUCOT10Z'}, {vendor: 'Neo', model: 'NAS-WR01B'}],
1991
2002
  ota: ota.zigbeeOTA,
1992
- fromZigbee: [fz.on_off, fz.electrical_measurement, fzLocal.metering_skip_duplicate, fz.ignore_basic_report,
2003
+ fromZigbee: [fz.on_off, fzLocal.electrical_measurement_skip_duplicate, fzLocal.metering_skip_duplicate, fz.ignore_basic_report,
1993
2004
  fz.tuya_switch_power_outage_memory, fz.ts011f_plug_indicator_mode, fz.ts011f_plug_child_mode],
1994
2005
  toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory, tz.ts011f_plug_indicator_mode, tz.ts011f_plug_child_mode],
1995
2006
  configure: async (device, coordinatorEndpoint, logger) => {
@@ -2182,6 +2193,8 @@ module.exports = [
2182
2193
  },
2183
2194
  meta: {multiEndpoint: true},
2184
2195
  configure: async (device, coordinatorEndpoint, logger) => {
2196
+ await device.getEndpoint(1).read('genBasic',
2197
+ ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
2185
2198
  await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
2186
2199
  await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
2187
2200
  device.powerSource = 'Mains (single phase)';
@@ -2975,7 +2988,7 @@ module.exports = [
2975
2988
  fromZigbee: [fz.ZG204ZL_lms],
2976
2989
  toZigbee: [tz.ZG204ZL_lms],
2977
2990
  exposes: [
2978
- e.occupancy(), e.illuminance(), e.battery(),
2991
+ e.occupancy(), e.illuminance().withUnit('lx'), e.battery(),
2979
2992
  exposes.enum('sensitivity', ea.ALL, ['low', 'medium', 'high'])
2980
2993
  .withDescription('PIR sensor sensitivity (refresh and update only while active)'),
2981
2994
  exposes.enum('keep_time', ea.ALL, ['10', '30', '60', '120'])
package/devices/woox.js CHANGED
@@ -106,6 +106,10 @@ module.exports = [
106
106
  onEvent: tuya.onEventSetTime,
107
107
  exposes: [e.switch(), e.battery()],
108
108
  meta: {disableDefaultResponse: true},
109
+ configure: async (device, coordinatorEndpoint, logger) => {
110
+ const endpoint = device.getEndpoint(1);
111
+ await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
112
+ },
109
113
  },
110
114
  {
111
115
  fingerprint: [{modelID: 'TS0505A', manufacturerName: '_TZ3000_keabpigv'}],
package/devices/xiaomi.js CHANGED
@@ -48,7 +48,7 @@ module.exports = [
48
48
  fromZigbee: [fz.ias_water_leak_alarm_1, fz.aqara_opple, fz.battery],
49
49
  toZigbee: [],
50
50
  exposes: [e.water_leak(), e.battery(), e.battery_low(), e.battery_voltage(), e.device_temperature(), e.power_outage_count(false)],
51
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
51
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
52
52
  configure: async (device, coordinatorEndpoint, logger) => {
53
53
  const endpoint = device.getEndpoint(1);
54
54
  await endpoint.read('genPowerCfg', ['batteryVoltage']);
@@ -62,7 +62,7 @@ module.exports = [
62
62
  description: 'Aqara E1 door & window contact sensor',
63
63
  fromZigbee: [fz.ias_contact_alarm_1, fz.aqara_opple, fz.battery],
64
64
  toZigbee: [],
65
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
65
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
66
66
  exposes: [e.contact(), e.battery(), e.battery_low(), e.battery_voltage()],
67
67
  configure: async (device, coordinatorEndpoint, logger) => {
68
68
  const endpoint = device.getEndpoint(1);
@@ -78,7 +78,7 @@ module.exports = [
78
78
  description: 'Aqara P1 door & window contact sensor',
79
79
  fromZigbee: [fz. xiaomi_contact, fz.ias_contact_alarm_1, fz.aqara_opple],
80
80
  toZigbee: [],
81
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
81
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
82
82
  exposes: [e.contact(), e.battery(), e.battery_voltage()],
83
83
  },
84
84
  {
@@ -198,7 +198,7 @@ module.exports = [
198
198
  whiteLabel: [{vendor: 'Xiaomi', model: 'YTC4040GL'}, {vendor: 'Xiaomi', model: 'YTC4006CN'},
199
199
  {vendor: 'Xiaomi', model: 'YTC4017CN'}, {vendor: 'Xiaomi', model: 'ZHTZ02LM'}],
200
200
  description: 'MiJia wireless switch',
201
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
201
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
202
202
  fromZigbee: [fz.xiaomi_basic, fz.xiaomi_WXKG01LM_action, fz.legacy.WXKG01LM_click],
203
203
  exposes: [e.battery(), e.action(['single', 'double', 'triple', 'quadruple', 'hold', 'release', 'many']), e.battery_voltage(),
204
204
  e.power_outage_count(false)],
@@ -209,7 +209,7 @@ module.exports = [
209
209
  model: 'WXKG11LM',
210
210
  vendor: 'Xiaomi',
211
211
  description: 'Aqara wireless switch',
212
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
212
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
213
213
  exposes: [e.battery(), e.battery_voltage(), e.action(['single', 'double', 'triple', 'quadruple', 'hold', 'release']),
214
214
  e.device_temperature(), e.power_outage_count()],
215
215
  fromZigbee: [fz.xiaomi_multistate_action, fz.xiaomi_WXKG11LM_action, fz.xiaomi_basic,
@@ -221,7 +221,7 @@ module.exports = [
221
221
  model: 'WXKG12LM',
222
222
  vendor: 'Xiaomi',
223
223
  description: 'Aqara wireless switch (with gyroscope)',
224
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
224
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
225
225
  exposes: [e.battery(), e.action(['single', 'double', 'hold', 'release', 'shake']), e.battery_voltage()],
226
226
  fromZigbee: [fz.xiaomi_basic, fz.xiaomi_multistate_action, fz.legacy.WXKG12LM_action_click_multistate],
227
227
  toZigbee: [],
@@ -231,7 +231,7 @@ module.exports = [
231
231
  model: 'WXKG03LM_rev1',
232
232
  vendor: 'Xiaomi',
233
233
  description: 'Aqara single key wireless wall switch (2016 model)',
234
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
234
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
235
235
  exposes: [e.battery(), e.action(['single']), e.battery_voltage()],
236
236
  fromZigbee: [fz.xiaomi_on_off_action, fz.xiaomi_basic, fz.legacy.WXKG03LM_click],
237
237
  toZigbee: [],
@@ -242,7 +242,7 @@ module.exports = [
242
242
  model: 'WXKG03LM_rev2',
243
243
  vendor: 'Xiaomi',
244
244
  description: 'Aqara single key wireless wall switch (2018 model)',
245
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
245
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
246
246
  exposes: [e.battery(), e.action(['single', 'double', 'hold']), e.battery_voltage()],
247
247
  fromZigbee: [fz.xiaomi_on_off_action, fz.xiaomi_multistate_action, fz.xiaomi_basic,
248
248
  fz.legacy.WXKG03LM_click, fz.legacy.xiaomi_action_click_multistate],
@@ -260,7 +260,7 @@ module.exports = [
260
260
  e.action(['single', 'double', 'hold']),
261
261
  e.battery_voltage()],
262
262
  onEvent: preventReset,
263
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
263
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
264
264
  configure: async (device, coordinatorEndpoint, logger) => {
265
265
  try {
266
266
  const endpoint = device.endpoints[1];
@@ -275,7 +275,7 @@ module.exports = [
275
275
  model: 'WXKG02LM_rev1',
276
276
  vendor: 'Xiaomi',
277
277
  description: 'Aqara double key wireless wall switch (2016 model)',
278
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
278
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
279
279
  exposes: [e.battery(), e.action(['single_left', 'single_right', 'single_both']), e.battery_voltage(), e.power_outage_count(false)],
280
280
  fromZigbee: [fz.xiaomi_on_off_action, fz.xiaomi_basic, fz.legacy.WXKG02LM_click],
281
281
  toZigbee: [],
@@ -286,7 +286,7 @@ module.exports = [
286
286
  model: 'WXKG02LM_rev2',
287
287
  vendor: 'Xiaomi',
288
288
  description: 'Aqara double key wireless wall switch (2018 model)',
289
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
289
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
290
290
  exposes: [e.battery(), e.action(['single_left', 'single_right', 'single_both', 'double_left', 'double_right', 'double_both',
291
291
  'hold_left', 'hold_right', 'hold_both']), e.battery_voltage()],
292
292
  fromZigbee: [fz.xiaomi_on_off_action, fz.xiaomi_multistate_action, fz.xiaomi_basic,
@@ -603,7 +603,7 @@ module.exports = [
603
603
  model: 'WXKG07LM',
604
604
  vendor: 'Xiaomi',
605
605
  description: 'Aqara D1 double key wireless wall switch',
606
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
606
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
607
607
  fromZigbee: [fz.xiaomi_basic, fz.legacy.xiaomi_on_off_action, fz.legacy.xiaomi_multistate_action],
608
608
  toZigbee: [],
609
609
  endpoint: (device) => {
@@ -885,7 +885,7 @@ module.exports = [
885
885
  whiteLabel: [{vendor: 'Xiaomi', model: 'YTC4042GL'}, {vendor: 'Xiaomi', model: 'YTC4007CN'},
886
886
  {vendor: 'Xiaomi', model: 'YTC4018CN'}],
887
887
  description: 'MiJia temperature & humidity sensor',
888
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
888
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
889
889
  fromZigbee: [fz.xiaomi_basic, fz.xiaomi_temperature, fz.humidity],
890
890
  toZigbee: [],
891
891
  exposes: [e.battery(), e.temperature(), e.humidity(), e.battery_voltage()],
@@ -895,7 +895,7 @@ module.exports = [
895
895
  model: 'WSDCGQ11LM',
896
896
  vendor: 'Xiaomi',
897
897
  description: 'Aqara temperature, humidity and pressure sensor',
898
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
898
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
899
899
  fromZigbee: [fz.xiaomi_basic, fz.xiaomi_temperature, fz.humidity, fz.pressure],
900
900
  toZigbee: [],
901
901
  exposes: [e.battery(), e.temperature(), e.humidity(), e.pressure(), e.battery_voltage()],
@@ -913,7 +913,7 @@ module.exports = [
913
913
  toZigbee: [],
914
914
  exposes: [e.temperature(), e.humidity(), e.pressure(), e.device_temperature(), e.battery(), e.battery_voltage(),
915
915
  e.power_outage_count(false)],
916
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
916
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
917
917
  configure: async (device, coordinatorEndpoint, logger) => {
918
918
  const endpoint = device.getEndpoint(1);
919
919
  const binds = ['msTemperatureMeasurement', 'msRelativeHumidity', 'msPressureMeasurement'];
@@ -929,7 +929,7 @@ module.exports = [
929
929
  whiteLabel: [{vendor: 'Xiaomi', model: 'YTC4041GL'}, {vendor: 'Xiaomi', model: 'YTC4004CN'},
930
930
  {vendor: 'Xiaomi', model: 'YTC4016CN'}, {vendor: 'Xiaomi', model: 'ZHTZ02LM'}],
931
931
  description: 'MiJia human body movement sensor',
932
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
932
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
933
933
  fromZigbee: [fz.xiaomi_basic, fz.occupancy_with_timeout],
934
934
  toZigbee: [],
935
935
  exposes: [e.battery(), e.occupancy(), e.battery_voltage(), e.power_outage_count(false)],
@@ -939,7 +939,7 @@ module.exports = [
939
939
  model: 'RTCGQ11LM',
940
940
  vendor: 'Xiaomi',
941
941
  description: 'Aqara human body movement and illuminance sensor',
942
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
942
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
943
943
  fromZigbee: [fz.xiaomi_basic, fz.occupancy_with_timeout, fz.RTCGQ11LM_illuminance],
944
944
  toZigbee: [],
945
945
  exposes: [e.battery(), e.occupancy(), e.device_temperature(), e.battery_voltage(), e.illuminance_lux().withProperty('illuminance'),
@@ -957,7 +957,7 @@ module.exports = [
957
957
  exposes.numeric('detection_interval', ea.ALL).withValueMin(2).withValueMax(65535).withUnit('s')
958
958
  .withDescription('Time interval for detecting actions'),
959
959
  e.device_temperature(), e.battery(), e.battery_voltage(), e.power_outage_count(false)],
960
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
960
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
961
961
  configure: async (device, coordinatorEndpoint, logger) => {
962
962
  const endpoint = device.getEndpoint(1);
963
963
  await endpoint.read('genPowerCfg', ['batteryVoltage']);
@@ -976,7 +976,7 @@ module.exports = [
976
976
  exposes.numeric('detection_interval', ea.ALL).withValueMin(2).withValueMax(65535).withUnit('s')
977
977
  .withDescription('Time interval for detecting actions'),
978
978
  e.device_temperature(), e.battery(), e.battery_voltage(), e.power_outage_count(false)],
979
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
979
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
980
980
  configure: async (device, coordinatorEndpoint, logger) => {
981
981
  const endpoint = device.getEndpoint(1);
982
982
  await endpoint.read('genPowerCfg', ['batteryVoltage']);
@@ -1004,7 +1004,7 @@ module.exports = [
1004
1004
  'blue LED will blink once when motion is detected. ' +
1005
1005
  'Press pairing button right before changing this otherwise it will fail.'),
1006
1006
  e.device_temperature(), e.battery(), e.battery_voltage()],
1007
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1007
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1008
1008
  configure: async (device, coordinatorEndpoint, logger) => {
1009
1009
  const endpoint = device.getEndpoint(1);
1010
1010
  await endpoint.read('genPowerCfg', ['batteryVoltage']);
@@ -1026,7 +1026,7 @@ module.exports = [
1026
1026
  exposes.numeric('detection_interval', ea.ALL).withValueMin(2).withValueMax(65535).withUnit('s')
1027
1027
  .withDescription('Time interval for detecting actions'),
1028
1028
  e.device_temperature(), e.battery(), e.battery_voltage(), e.power_outage_count(false)],
1029
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1029
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1030
1030
  configure: async (device, coordinatorEndpoint, logger) => {
1031
1031
  const endpoint = device.getEndpoint(1);
1032
1032
  await endpoint.read('genPowerCfg', ['batteryVoltage']);
@@ -1070,7 +1070,7 @@ module.exports = [
1070
1070
  whiteLabel: [{vendor: 'Xiaomi', model: 'YTC4039GL'}, {vendor: 'Xiaomi', model: 'YTC4005CN'},
1071
1071
  {vendor: 'Xiaomi', model: 'YTC4015CN'}, {vendor: 'Xiaomi', model: 'ZHTZ02LM'}],
1072
1072
  description: 'MiJia door & window contact sensor',
1073
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1073
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1074
1074
  fromZigbee: [fz.xiaomi_basic, fz.xiaomi_contact],
1075
1075
  toZigbee: [],
1076
1076
  exposes: [e.battery(), e.contact(), e.battery_voltage(), e.power_outage_count(false)],
@@ -1080,7 +1080,7 @@ module.exports = [
1080
1080
  model: 'MCCGQ11LM',
1081
1081
  vendor: 'Xiaomi',
1082
1082
  description: 'Aqara door & window contact sensor',
1083
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1083
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1084
1084
  fromZigbee: [fz.xiaomi_basic, fz.xiaomi_contact],
1085
1085
  toZigbee: [],
1086
1086
  exposes: [e.battery(), e.contact(), e.device_temperature(), e.battery_voltage(), e.power_outage_count(false)],
@@ -1094,7 +1094,7 @@ module.exports = [
1094
1094
  model: 'SJCGQ11LM',
1095
1095
  vendor: 'Xiaomi',
1096
1096
  description: 'Aqara water leak sensor',
1097
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1097
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1098
1098
  fromZigbee: [fz.xiaomi_basic, fz.ias_water_leak_alarm_1],
1099
1099
  toZigbee: [],
1100
1100
  exposes: [e.battery(), e.water_leak(), e.battery_low(), e.battery_voltage(), e.device_temperature(), e.power_outage_count(false)],
@@ -1104,7 +1104,7 @@ module.exports = [
1104
1104
  model: 'SJCGQ12LM',
1105
1105
  vendor: 'Xiaomi',
1106
1106
  description: 'Aqara T1 water leak sensor',
1107
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1107
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1108
1108
  fromZigbee: [fz.xiaomi_basic, fz.ias_water_leak_alarm_1],
1109
1109
  toZigbee: [],
1110
1110
  exposes: [e.battery(), e.water_leak(), e.battery_low(), e.tamper(), e.battery_voltage()],
@@ -1115,7 +1115,7 @@ module.exports = [
1115
1115
  model: 'MFKZQ01LM',
1116
1116
  vendor: 'Xiaomi',
1117
1117
  description: 'Mi/Aqara smart home cube',
1118
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1118
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1119
1119
  fromZigbee: [fz.xiaomi_basic, fz.MFKZQ01LM_action_multistate, fz.MFKZQ01LM_action_analog],
1120
1120
  exposes: [e.battery(), e.battery_voltage(), e.angle('action_angle'), e.device_temperature(), e.power_outage_count(false),
1121
1121
  e.cube_side('action_from_side'), e.cube_side('action_side'), e.cube_side('action_to_side'), e.cube_side('side'),
@@ -1276,7 +1276,7 @@ module.exports = [
1276
1276
  description: 'MiJia Honeywell smoke detector',
1277
1277
  vendor: 'Xiaomi',
1278
1278
  whiteLabel: [{vendor: 'Xiaomi', model: 'YTC4020RT'}],
1279
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1279
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1280
1280
  fromZigbee: [fz.xiaomi_basic, fz.JTYJGD01LMBW_smoke],
1281
1281
  toZigbee: [tz.JTQJBF01LMBW_JTYJGD01LMBW_sensitivity, tz.JTQJBF01LMBW_JTYJGD01LMBW_selfest],
1282
1282
  exposes: [
@@ -1367,7 +1367,7 @@ module.exports = [
1367
1367
  'been manually muted, then "linkage_alarm_state"=false'),
1368
1368
  exposes.binary('linkage_alarm_state', ea.STATE, true, false).withDescription('"linkage_alarm" is triggered'),
1369
1369
  e.battery(), e.battery_voltage(), e.power_outage_count(false)],
1370
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1370
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1371
1371
  configure: async (device, coordinatorEndpoint, logger) => {
1372
1372
  const endpoint = device.getEndpoint(1);
1373
1373
  await endpoint.read('genPowerCfg', ['batteryVoltage']);
@@ -1394,7 +1394,7 @@ module.exports = [
1394
1394
  model: 'DJT11LM',
1395
1395
  vendor: 'Xiaomi',
1396
1396
  description: 'Aqara vibration sensor',
1397
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1397
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1398
1398
  fromZigbee: [fz.xiaomi_basic, fz.DJT11LM_vibration],
1399
1399
  toZigbee: [tz.DJT11LM_vibration_sensitivity],
1400
1400
  exposes: [
@@ -1620,7 +1620,7 @@ module.exports = [
1620
1620
  ]), exposes.enum('operation_mode', ea.ALL, ['command', 'event'])
1621
1621
  .withDescription('Operation mode, select "command" to enable bindings (wake up the device before changing modes!)')],
1622
1622
  toZigbee: [tz.aqara_opple_operation_mode],
1623
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1623
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1624
1624
  configure: async (device, coordinatorEndpoint, logger) => {
1625
1625
  const endpoint = device.getEndpoint(1);
1626
1626
  await endpoint.write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f});
@@ -1642,7 +1642,7 @@ module.exports = [
1642
1642
  ]), exposes.enum('operation_mode', ea.ALL, ['command', 'event'])
1643
1643
  .withDescription('Operation mode, select "command" to enable bindings (wake up the device before changing modes!)')],
1644
1644
  toZigbee: [tz.aqara_opple_operation_mode],
1645
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1645
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1646
1646
  configure: async (device, coordinatorEndpoint, logger) => {
1647
1647
  const endpoint = device.getEndpoint(1);
1648
1648
  await endpoint.write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f});
@@ -1669,7 +1669,7 @@ module.exports = [
1669
1669
  .withDescription('Operation mode, select "command" to enable bindings (wake up the device before changing modes!)'),
1670
1670
  e.power_outage_count(false)],
1671
1671
  toZigbee: [tz.aqara_opple_operation_mode],
1672
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1672
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1673
1673
  configure: async (device, coordinatorEndpoint, logger) => {
1674
1674
  const endpoint = device.getEndpoint(1);
1675
1675
  await endpoint.write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f});
@@ -1686,7 +1686,7 @@ module.exports = [
1686
1686
  description: 'MiJia light intensity sensor',
1687
1687
  fromZigbee: [fz.battery, fz.illuminance, fz.aqara_opple],
1688
1688
  toZigbee: [],
1689
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1689
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1690
1690
  configure: async (device, coordinatorEndpoint, logger) => {
1691
1691
  const endpoint = device.getEndpoint(1);
1692
1692
  await reporting.bind(endpoint, coordinatorEndpoint, ['msIlluminanceMeasurement']);
@@ -1843,7 +1843,7 @@ module.exports = [
1843
1843
  description: 'Aqara wireless remote switch H1 (double rocker)',
1844
1844
  fromZigbee: [fz.battery, fz.xiaomi_multistate_action, fz.aqara_opple, fz.command_toggle],
1845
1845
  toZigbee: [tz.xiaomi_switch_click_mode, tz.aqara_opple_operation_mode],
1846
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}, multiEndpoint: true},
1846
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}, multiEndpoint: true},
1847
1847
  exposes: [
1848
1848
  e.battery(), e.battery_voltage(), e.action([
1849
1849
  'single_left', 'single_right', 'single_both',
@@ -1932,7 +1932,7 @@ module.exports = [
1932
1932
  description: 'Aqara TVOC air quality monitor',
1933
1933
  fromZigbee: [fz.xiaomi_tvoc, fz.battery, fz.temperature, fz.humidity, fz.aqara_opple],
1934
1934
  toZigbee: [],
1935
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
1935
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
1936
1936
  exposes: [e.temperature(), e.humidity(), e.voc(), e.device_temperature(), e.battery(), e.battery_voltage()],
1937
1937
  configure: async (device, coordinatorEndpoint, logger) => {
1938
1938
  const endpoint = device.getEndpoint(1);
@@ -2011,7 +2011,7 @@ module.exports = [
2011
2011
  model: 'WXKG13LM',
2012
2012
  vendor: 'Xiaomi',
2013
2013
  description: 'Aqara T1 wireless mini switch',
2014
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
2014
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
2015
2015
  fromZigbee: [fz.battery, fz.aqara_opple_multistate, fz.aqara_opple],
2016
2016
  toZigbee: [],
2017
2017
  exposes: [e.battery(), e.battery_voltage(), e.action(['single', 'double', 'triple', 'quintuple', 'hold', 'release', 'many'])],
@@ -2027,7 +2027,7 @@ module.exports = [
2027
2027
  description: 'Aqara T1 light intensity sensor',
2028
2028
  fromZigbee: [fz.battery, fz.illuminance, fz.aqara_opple],
2029
2029
  toZigbee: [tz.GZCGQ11LM_detection_period],
2030
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
2030
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
2031
2031
  exposes: [e.battery(), e.battery_voltage(), e.illuminance(), e.illuminance_lux(),
2032
2032
  exposes.numeric('detection_period', exposes.access.ALL).withValueMin(1).withValueMax(59).withUnit('s')
2033
2033
  .withDescription('Time interval in seconds to report after light changes')],
@@ -2066,7 +2066,7 @@ module.exports = [
2066
2066
  description: 'Aqara T1 door & window contact sensor',
2067
2067
  fromZigbee: [fz.xiaomi_contact, fz.aqara_opple],
2068
2068
  toZigbee: [],
2069
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
2069
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
2070
2070
  exposes: [e.contact(), e.battery(), e.battery_voltage()],
2071
2071
  },
2072
2072
  {
@@ -2090,7 +2090,7 @@ module.exports = [
2090
2090
  model: 'ZNXNKG02LM',
2091
2091
  vendor: 'Xiaomi',
2092
2092
  description: 'Aqara knob H1 (wireless)',
2093
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
2093
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
2094
2094
  exposes: [e.battery(), e.battery_voltage(),
2095
2095
  e.action(['single', 'double', 'hold', 'release', 'start_rotating', 'rotation', 'stop_rotating']),
2096
2096
  exposes.enum('operation_mode', ea.ALL, ['event', 'command']).withDescription('Button mode'),
@@ -2113,7 +2113,7 @@ module.exports = [
2113
2113
  model: 'WXKG16LM',
2114
2114
  vendor: 'Xiaomi',
2115
2115
  description: 'Aqara wireless remote switch E1 (single rocker)',
2116
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
2116
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
2117
2117
  fromZigbee: [fz.xiaomi_multistate_action, fz.aqara_opple],
2118
2118
  toZigbee: [tz.xiaomi_switch_click_mode],
2119
2119
  exposes: [e.battery(), e.battery_voltage(), e.action(['single', 'double', 'hold']),
@@ -2129,7 +2129,7 @@ module.exports = [
2129
2129
  model: 'WXKG17LM',
2130
2130
  vendor: 'Xiaomi',
2131
2131
  description: 'Aqara E1 double key wireless switch',
2132
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
2132
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
2133
2133
  exposes: [e.battery(), e.battery_voltage(),
2134
2134
  e.action(['single_left', 'single_right', 'single_both', 'double_left', 'double_right', 'hold_left', 'hold_right']),
2135
2135
  // eslint-disable-next-line max-len
@@ -2157,7 +2157,7 @@ module.exports = [
2157
2157
  'multi: supports more events like double and hold'),
2158
2158
  exposes.enum('operation_mode', ea.ALL, ['command', 'event'])
2159
2159
  .withDescription('Operation mode, select "command" to enable bindings (wake up the device before changing modes!)')],
2160
- meta: {battery: {voltageToPercentage: '3V_2850_3200'}},
2160
+ meta: {battery: {voltageToPercentage: '3V_2850_3000'}},
2161
2161
  configure: async (device, coordinatorEndpoint, logger) => {
2162
2162
  const endpoint1 = device.getEndpoint(1);
2163
2163
  await endpoint1.write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
package/devices/yale.js CHANGED
@@ -4,7 +4,7 @@ const tz = require('../converters/toZigbee');
4
4
  const reporting = require('../lib/reporting');
5
5
  const e = exposes.presets;
6
6
 
7
- const lockExtend = (meta) => {
7
+ const lockExtend = (meta, lockStateOptions=null, binds=['closuresDoorLock', 'genPowerCfg']) => {
8
8
  return {
9
9
  fromZigbee: [fz.lock, fz.battery, fz.lock_operation_event, fz.lock_programming_event, fz.lock_pin_code_response,
10
10
  fz.lock_user_status_response],
@@ -13,8 +13,8 @@ const lockExtend = (meta) => {
13
13
  exposes: [e.lock(), e.battery(), e.pincode(), e.lock_action(), e.lock_action_source_name(), e.lock_action_user()],
14
14
  configure: async (device, coordinatorEndpoint, logger) => {
15
15
  const endpoint = device.getEndpoint(1);
16
- await reporting.bind(endpoint, coordinatorEndpoint, ['closuresDoorLock', 'genPowerCfg']);
17
- await reporting.lockState(endpoint);
16
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
17
+ await reporting.lockState(endpoint, lockStateOptions);
18
18
  await reporting.batteryPercentageRemaining(endpoint);
19
19
  },
20
20
  };
@@ -129,7 +129,7 @@ module.exports = [
129
129
  model: 'YDF40',
130
130
  vendor: 'Yale',
131
131
  description: 'Real living lock / Intelligent biometric digital lock',
132
- extend: lockExtend(),
132
+ extend: lockExtend({}, {max: 900}, ['closuresDoorLock']),
133
133
  },
134
134
  {
135
135
  zigbeeModel: ['06ffff2027'],
package/lib/utils.js CHANGED
@@ -166,8 +166,8 @@ function batteryVoltageToPercentage(voltage, option) {
166
166
  percentage = 0;
167
167
  }
168
168
  percentage = Math.round(percentage);
169
- } else if (option === '3V_2850_3200') {
170
- percentage = toPercentage(voltage, 2850, 3200);
169
+ } else if (option === '3V_2850_3000') {
170
+ percentage = toPercentage(voltage, 2850, 3000);
171
171
  } else if (option === '4LR6AA1_5v') {
172
172
  percentage = toPercentage(voltage, 3000, 4200);
173
173
  } else if (option === '3V_add 1V') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.601",
3
+ "version": "14.0.604",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [