zigbee-herdsman-converters 19.70.0 → 19.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/converters/fromZigbee.js +1 -1
  3. package/converters/fromZigbee.js.map +1 -1
  4. package/converters/toZigbee.js +1 -1
  5. package/converters/toZigbee.js.map +1 -1
  6. package/devices/akuvox.js +1 -1
  7. package/devices/akuvox.js.map +1 -1
  8. package/devices/bitron.js +1 -1
  9. package/devices/bitron.js.map +1 -1
  10. package/devices/bosch.d.ts.map +1 -1
  11. package/devices/bosch.js +5 -5
  12. package/devices/bosch.js.map +1 -1
  13. package/devices/casaia.js +1 -1
  14. package/devices/casaia.js.map +1 -1
  15. package/devices/centralite.js +2 -2
  16. package/devices/centralite.js.map +1 -1
  17. package/devices/ctm.js +5 -5
  18. package/devices/ctm.js.map +1 -1
  19. package/devices/danfoss.js +1 -1
  20. package/devices/danfoss.js.map +1 -1
  21. package/devices/datek.js +2 -2
  22. package/devices/datek.js.map +1 -1
  23. package/devices/develco.d.ts.map +1 -1
  24. package/devices/develco.js +19 -10
  25. package/devices/develco.js.map +1 -1
  26. package/devices/echostar.js +1 -1
  27. package/devices/echostar.js.map +1 -1
  28. package/devices/elko.js +1 -1
  29. package/devices/elko.js.map +1 -1
  30. package/devices/eurotronic.d.ts.map +1 -1
  31. package/devices/eurotronic.js +1 -1
  32. package/devices/eurotronic.js.map +1 -1
  33. package/devices/feibit.js +1 -1
  34. package/devices/feibit.js.map +1 -1
  35. package/devices/gs.js +2 -2
  36. package/devices/gs.js.map +1 -1
  37. package/devices/heiman.js +2 -2
  38. package/devices/heiman.js.map +1 -1
  39. package/devices/hornbach.d.ts.map +1 -1
  40. package/devices/hornbach.js +8 -1
  41. package/devices/hornbach.js.map +1 -1
  42. package/devices/index.d.ts.map +1 -1
  43. package/devices/index.js +2 -0
  44. package/devices/index.js.map +1 -1
  45. package/devices/inovelli.js +1 -1
  46. package/devices/inovelli.js.map +1 -1
  47. package/devices/iris.js +2 -2
  48. package/devices/iris.js.map +1 -1
  49. package/devices/konke.js +5 -5
  50. package/devices/konke.js.map +1 -1
  51. package/devices/legrand.d.ts.map +1 -1
  52. package/devices/legrand.js +8 -10
  53. package/devices/legrand.js.map +1 -1
  54. package/devices/lumi.d.ts.map +1 -1
  55. package/devices/lumi.js +68 -70
  56. package/devices/lumi.js.map +1 -1
  57. package/devices/moes.d.ts.map +1 -1
  58. package/devices/moes.js +1 -0
  59. package/devices/moes.js.map +1 -1
  60. package/devices/neo.d.ts.map +1 -1
  61. package/devices/neo.js +37 -0
  62. package/devices/neo.js.map +1 -1
  63. package/devices/orvibo.js +2 -2
  64. package/devices/orvibo.js.map +1 -1
  65. package/devices/osram.js +2 -2
  66. package/devices/osram.js.map +1 -1
  67. package/devices/peq.js +1 -1
  68. package/devices/peq.js.map +1 -1
  69. package/devices/plaid.js +1 -1
  70. package/devices/plaid.js.map +1 -1
  71. package/devices/plugwise.js +1 -1
  72. package/devices/plugwise.js.map +1 -1
  73. package/devices/raex.d.ts +4 -0
  74. package/devices/raex.d.ts.map +1 -0
  75. package/devices/raex.js +15 -0
  76. package/devices/raex.js.map +1 -0
  77. package/devices/salus_controls.js +1 -1
  78. package/devices/salus_controls.js.map +1 -1
  79. package/devices/schneider_electric.js +3 -3
  80. package/devices/schneider_electric.js.map +1 -1
  81. package/devices/sercomm.js +1 -1
  82. package/devices/sercomm.js.map +1 -1
  83. package/devices/shinasystem.js +2 -2
  84. package/devices/shinasystem.js.map +1 -1
  85. package/devices/smartthings.js +11 -11
  86. package/devices/smartthings.js.map +1 -1
  87. package/devices/sonoff.d.ts.map +1 -1
  88. package/devices/sonoff.js +8 -8
  89. package/devices/sonoff.js.map +1 -1
  90. package/devices/sylvania.js +1 -1
  91. package/devices/sylvania.js.map +1 -1
  92. package/devices/trust.js +1 -1
  93. package/devices/trust.js.map +1 -1
  94. package/devices/tuya.d.ts.map +1 -1
  95. package/devices/tuya.js +76 -5
  96. package/devices/tuya.js.map +1 -1
  97. package/devices/visonic.js +1 -1
  98. package/devices/visonic.js.map +1 -1
  99. package/devices/wirenboard.d.ts.map +1 -1
  100. package/devices/wirenboard.js +5 -5
  101. package/devices/wirenboard.js.map +1 -1
  102. package/devices/xyzroe.js +2 -2
  103. package/devices/xyzroe.js.map +1 -1
  104. package/lib/exposes.js +1 -1
  105. package/lib/exposes.js.map +1 -1
  106. package/lib/lumi.d.ts +2 -5
  107. package/lib/lumi.d.ts.map +1 -1
  108. package/lib/lumi.js +1 -1
  109. package/lib/lumi.js.map +1 -1
  110. package/lib/modernExtend.d.ts +2 -5
  111. package/lib/modernExtend.d.ts.map +1 -1
  112. package/lib/modernExtend.js.map +1 -1
  113. package/lib/tuya.js +1 -1
  114. package/lib/tuya.js.map +1 -1
  115. package/lib/types.d.ts +7 -4
  116. package/lib/types.d.ts.map +1 -1
  117. package/lib/utils.d.ts +2 -5
  118. package/lib/utils.d.ts.map +1 -1
  119. package/lib/utils.js +8 -37
  120. package/lib/utils.js.map +1 -1
  121. package/package.json +8 -8
package/devices/lumi.js CHANGED
@@ -49,7 +49,7 @@ const definitions = [
49
49
  fromZigbee: [fromZigbee_1.default.ias_water_leak_alarm_1, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.battery],
50
50
  toZigbee: [],
51
51
  exposes: [e.water_leak(), e.battery(), e.battery_low(), e.battery_voltage(), e.device_temperature(), e.power_outage_count(false)],
52
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
52
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
53
53
  configure: async (device, coordinatorEndpoint) => {
54
54
  const endpoint = device.getEndpoint(1);
55
55
  await endpoint.read('genPowerCfg', ['batteryVoltage']);
@@ -73,7 +73,7 @@ const definitions = [
73
73
  description: 'Door and window sensor E1',
74
74
  fromZigbee: [fromZigbee_1.default.ias_contact_alarm_1, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.battery],
75
75
  toZigbee: [],
76
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
76
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
77
77
  exposes: [e.contact(), e.battery(), e.battery_low(), e.battery_voltage()],
78
78
  configure: async (device, coordinatorEndpoint) => {
79
79
  const endpoint = device.getEndpoint(1);
@@ -93,7 +93,7 @@ const definitions = [
93
93
  description: 'Door and window sensor P1',
94
94
  fromZigbee: [lumi.fromZigbee.lumi_contact, fromZigbee_1.default.ias_contact_alarm_1, lumi.fromZigbee.lumi_specific],
95
95
  toZigbee: [lumi.toZigbee.lumi_detection_distance],
96
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
96
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
97
97
  exposes: [
98
98
  e.contact(),
99
99
  e.battery(),
@@ -206,7 +206,7 @@ const definitions = [
206
206
  { vendor: 'Xiaomi', model: 'ZHTZ02LM' },
207
207
  ],
208
208
  description: 'Mi wireless switch',
209
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
209
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
210
210
  fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_action_WXKG01LM, lumi.legacyFromZigbee.WXKG01LM_click],
211
211
  exposes: [
212
212
  e.battery(),
@@ -222,7 +222,7 @@ const definitions = [
222
222
  model: 'WXKG11LM',
223
223
  vendor: 'Aqara',
224
224
  description: 'Wireless mini switch',
225
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
225
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
226
226
  exposes: [
227
227
  e.battery(),
228
228
  e.battery_voltage(),
@@ -245,7 +245,7 @@ const definitions = [
245
245
  model: 'WXKG12LM',
246
246
  vendor: 'Aqara',
247
247
  description: 'Wireless mini switch (with gyroscope)',
248
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
248
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
249
249
  exposes: [e.battery(), e.action(['single', 'double', 'hold', 'release', 'shake']), e.battery_voltage()],
250
250
  fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_action_multistate, lumi.legacyFromZigbee.WXKG12LM_action_click_multistate],
251
251
  toZigbee: [],
@@ -256,7 +256,7 @@ const definitions = [
256
256
  model: 'WXKG03LM_rev1',
257
257
  vendor: 'Aqara',
258
258
  description: 'Wireless remote switch (single rocker), 2016 model',
259
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
259
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
260
260
  exposes: [e.battery(), e.action(['single']), e.battery_voltage()],
261
261
  fromZigbee: [lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_basic, lumi.legacyFromZigbee.WXKG03LM_click],
262
262
  toZigbee: [],
@@ -267,7 +267,7 @@ const definitions = [
267
267
  model: 'WXKG03LM_rev2',
268
268
  vendor: 'Aqara',
269
269
  description: 'Wireless remote switch (single rocker), 2018 model',
270
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
270
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
271
271
  exposes: [e.battery(), e.action(['single', 'double', 'hold']), e.battery_voltage()],
272
272
  fromZigbee: [
273
273
  lumi.fromZigbee.lumi_action,
@@ -287,7 +287,7 @@ const definitions = [
287
287
  fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_action_multistate],
288
288
  toZigbee: [],
289
289
  exposes: [e.battery(), e.action(['single', 'double', 'hold']), e.battery_voltage()],
290
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
290
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
291
291
  extend: [(0, modernExtend_1.quirkCheckinInterval)('1_HOUR'), lumiPreventReset()],
292
292
  configure: async (device, coordinatorEndpoint) => {
293
293
  try {
@@ -391,7 +391,7 @@ const definitions = [
391
391
  model: 'WXKG02LM_rev1',
392
392
  vendor: 'Aqara',
393
393
  description: 'Wireless remote switch (double rocker), 2016 model',
394
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
394
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
395
395
  exposes: [e.battery(), e.action(['single_left', 'single_right', 'single_both']), e.battery_voltage(), e.power_outage_count(false)],
396
396
  fromZigbee: [lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_basic, lumi.legacyFromZigbee.WXKG02LM_click],
397
397
  toZigbee: [],
@@ -402,7 +402,7 @@ const definitions = [
402
402
  model: 'WXKG02LM_rev2',
403
403
  vendor: 'Aqara',
404
404
  description: 'Wireless remote switch (double rocker), 2018 model',
405
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
405
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
406
406
  exposes: [
407
407
  e.battery(),
408
408
  e.action([
@@ -449,7 +449,7 @@ const definitions = [
449
449
  e.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']).withDescription('Decoupled mode'),
450
450
  e
451
451
  .enum('mode_switch', ea.ALL, ['anti_flicker_mode', 'quick_mode'])
452
- .withDescription('Anti flicker mode can be used to solve blinking issues of some lights.' + 'Quick mode makes the device respond faster.'),
452
+ .withDescription('Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster.'),
453
453
  e.power_outage_count(),
454
454
  e.device_temperature().withAccess(ea.STATE),
455
455
  ],
@@ -485,7 +485,7 @@ const definitions = [
485
485
  .withEndpoint('bottom'),
486
486
  e
487
487
  .enum('mode_switch', ea.ALL, ['anti_flicker_mode', 'quick_mode'])
488
- .withDescription('Anti flicker mode can be used to solve blinking issues of some lights.' + 'Quick mode makes the device respond faster.'),
488
+ .withDescription('Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster.'),
489
489
  e.power_outage_count(),
490
490
  e.device_temperature().withAccess(ea.STATE),
491
491
  e.flip_indicator_light(),
@@ -597,7 +597,7 @@ const definitions = [
597
597
  e.power_outage_count(),
598
598
  e
599
599
  .enum('mode_switch', ea.ALL, ['anti_flicker_mode', 'quick_mode'])
600
- .withDescription('Anti flicker mode can be used to solve blinking issues of some lights.' + 'Quick mode makes the device respond faster.'),
600
+ .withDescription('Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster.'),
601
601
  ],
602
602
  configure: async (device, coordinatorEndpoint) => {
603
603
  await device.getEndpoint(1).write('manuSpecificLumi', { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
@@ -634,7 +634,7 @@ const definitions = [
634
634
  e.led_disabled_night(),
635
635
  e
636
636
  .enum('mode_switch', ea.ALL, ['anti_flicker_mode', 'quick_mode'])
637
- .withDescription('Anti flicker mode can be used to solve blinking issues of some lights.' + 'Quick mode makes the device respond faster.'),
637
+ .withDescription('Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster.'),
638
638
  ],
639
639
  configure: async (device, coordinatorEndpoint) => {
640
640
  await device.getEndpoint(1).write('manuSpecificLumi', { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
@@ -673,7 +673,7 @@ const definitions = [
673
673
  e.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']).withDescription('Decoupled mode for right button').withEndpoint('right'),
674
674
  e
675
675
  .enum('mode_switch', ea.ALL, ['anti_flicker_mode', 'quick_mode'])
676
- .withDescription('Anti flicker mode can be used to solve blinking issues of some lights.' + 'Quick mode makes the device respond faster.'),
676
+ .withDescription('Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster.'),
677
677
  e.device_temperature().withAccess(ea.STATE),
678
678
  e.action([
679
679
  'single_left',
@@ -878,7 +878,7 @@ const definitions = [
878
878
  e.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']).withDescription('Decoupled mode for right button').withEndpoint('right'),
879
879
  e
880
880
  .enum('mode_switch', ea.ALL, ['anti_flicker_mode', 'quick_mode'])
881
- .withDescription('Anti flicker mode can be used to solve blinking issues of some lights.' + 'Quick mode makes the device respond faster.'),
881
+ .withDescription('Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster.'),
882
882
  e.action(['single_left', 'double_left', 'single_right', 'double_right', 'single_both', 'double_both']),
883
883
  ],
884
884
  configure: async (device, coordinatorEndpoint) => {
@@ -1130,7 +1130,7 @@ const definitions = [
1130
1130
  model: 'WXKG07LM',
1131
1131
  vendor: 'Aqara',
1132
1132
  description: 'Wireless remote switch D1 (double rocker)',
1133
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1133
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1134
1134
  fromZigbee: [
1135
1135
  lumi.fromZigbee.lumi_basic,
1136
1136
  lumi.fromZigbee.lumi_action,
@@ -1264,7 +1264,7 @@ const definitions = [
1264
1264
  e.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']).withDescription('Decoupled mode for right button').withEndpoint('right'),
1265
1265
  e
1266
1266
  .enum('mode_switch', ea.ALL, ['anti_flicker_mode', 'quick_mode'])
1267
- .withDescription('Anti flicker mode can be used to solve blinking issues of some lights.' + 'Quick mode makes the device respond faster.'),
1267
+ .withDescription('Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster.'),
1268
1268
  e.power_outage_memory(),
1269
1269
  e.led_disabled_night(),
1270
1270
  e.device_temperature().withAccess(ea.STATE),
@@ -1537,7 +1537,7 @@ const definitions = [
1537
1537
  { vendor: 'Xiaomi', model: 'YTC4018CN' },
1538
1538
  ],
1539
1539
  description: 'Mi temperature and humidity sensor',
1540
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1540
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1541
1541
  fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_temperature, fromZigbee_1.default.humidity],
1542
1542
  toZigbee: [],
1543
1543
  exposes: [e.battery(), e.temperature(), e.humidity(), e.battery_voltage()],
@@ -1548,7 +1548,7 @@ const definitions = [
1548
1548
  model: 'WSDCGQ11LM',
1549
1549
  vendor: 'Aqara',
1550
1550
  description: 'Temperature and humidity sensor',
1551
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1551
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1552
1552
  fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_temperature, fromZigbee_1.default.humidity, fromZigbee_1.default.pressure],
1553
1553
  toZigbee: [],
1554
1554
  exposes: [e.battery(), e.temperature(), e.humidity(), e.pressure(), e.battery_voltage()],
@@ -1570,7 +1570,7 @@ const definitions = [
1570
1570
  fromZigbee: [lumi.fromZigbee.lumi_specific, fromZigbee_1.default.temperature, fromZigbee_1.default.humidity, lumi.fromZigbee.lumi_pressure, fromZigbee_1.default.battery],
1571
1571
  toZigbee: [],
1572
1572
  exposes: [e.temperature(), e.humidity(), e.pressure(), e.device_temperature(), e.battery(), e.battery_voltage(), e.power_outage_count(false)],
1573
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1573
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1574
1574
  configure: async (device, coordinatorEndpoint) => {
1575
1575
  const endpoint = device.getEndpoint(1);
1576
1576
  const binds = ['msTemperatureMeasurement', 'msRelativeHumidity', 'msPressureMeasurement'];
@@ -1590,7 +1590,7 @@ const definitions = [
1590
1590
  { vendor: 'Xiaomi', model: 'ZHTZ02LM' },
1591
1591
  ],
1592
1592
  description: 'Mi motion sensor',
1593
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1593
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1594
1594
  fromZigbee: [lumi.fromZigbee.lumi_basic, fromZigbee_1.default.occupancy_with_timeout],
1595
1595
  toZigbee: [],
1596
1596
  exposes: [e.battery(), e.occupancy(), e.battery_voltage(), e.power_outage_count(false)],
@@ -1601,7 +1601,7 @@ const definitions = [
1601
1601
  model: 'RTCGQ11LM',
1602
1602
  vendor: 'Aqara',
1603
1603
  description: 'Motion sensor',
1604
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1604
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1605
1605
  fromZigbee: [lumi.fromZigbee.lumi_basic, fromZigbee_1.default.occupancy_with_timeout, lumi.fromZigbee.lumi_illuminance],
1606
1606
  toZigbee: [],
1607
1607
  exposes: [
@@ -1638,7 +1638,7 @@ const definitions = [
1638
1638
  e.battery_voltage(),
1639
1639
  e.power_outage_count(false),
1640
1640
  ],
1641
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1641
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1642
1642
  configure: async (device, coordinatorEndpoint) => {
1643
1643
  const endpoint = device.getEndpoint(1);
1644
1644
  await endpoint.read('genPowerCfg', ['batteryVoltage']);
@@ -1667,7 +1667,7 @@ const definitions = [
1667
1667
  e.battery_voltage(),
1668
1668
  e.power_outage_count(false),
1669
1669
  ],
1670
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1670
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1671
1671
  configure: async (device, coordinatorEndpoint) => {
1672
1672
  const endpoint = device.getEndpoint(1);
1673
1673
  await endpoint.read('genPowerCfg', ['batteryVoltage']);
@@ -1693,7 +1693,7 @@ const definitions = [
1693
1693
  .withDescription('Select motion sensitivity to use. Press pairing button right before changing this otherwise it will fail.'),
1694
1694
  e
1695
1695
  .detection_interval()
1696
- .withDescription('Time interval between action detection. ' + 'Press pairing button right before changing this otherwise it will fail.'),
1696
+ .withDescription('Time interval between action detection. Press pairing button right before changing this otherwise it will fail.'),
1697
1697
  e
1698
1698
  .trigger_indicator()
1699
1699
  .withDescription('When this option is enabled then ' +
@@ -1703,7 +1703,7 @@ const definitions = [
1703
1703
  e.battery(),
1704
1704
  e.battery_voltage(),
1705
1705
  ],
1706
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1706
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1707
1707
  configure: async (device, coordinatorEndpoint) => {
1708
1708
  const endpoint = device.getEndpoint(1);
1709
1709
  await endpoint.read('genPowerCfg', ['batteryVoltage']);
@@ -1735,7 +1735,7 @@ const definitions = [
1735
1735
  e.battery_voltage(),
1736
1736
  e.power_outage_count(false),
1737
1737
  ],
1738
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1738
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1739
1739
  configure: async (device, coordinatorEndpoint) => {
1740
1740
  const endpoint = device.getEndpoint(1);
1741
1741
  await endpoint.read('genPowerCfg', ['batteryVoltage']);
@@ -1764,16 +1764,14 @@ const definitions = [
1764
1764
  e.power_outage_count(),
1765
1765
  e
1766
1766
  .enum('presence_event', ea.STATE, ['enter', 'leave', 'left_enter', 'right_leave', 'right_enter', 'left_leave', 'approach', 'away'])
1767
- .withDescription('Presence events: "enter", "leave", "left_enter", "right_leave", ' + '"right_enter", "left_leave", "approach", "away"'),
1767
+ .withDescription('Presence events: "enter", "leave", "left_enter", "right_leave", "right_enter", "left_leave", "approach", "away"'),
1768
1768
  e
1769
1769
  .enum('monitoring_mode', ea.ALL, ['undirected', 'left_right'])
1770
- .withDescription('Monitoring mode with or ' + 'without considering right and left sides'),
1771
- e
1772
- .enum('approach_distance', ea.ALL, ['far', 'medium', 'near'])
1773
- .withDescription('The distance at which the ' + 'sensor detects approaching'),
1770
+ .withDescription('Monitoring mode with or without considering right and left sides'),
1771
+ e.enum('approach_distance', ea.ALL, ['far', 'medium', 'near']).withDescription('The distance at which the sensor detects approaching'),
1774
1772
  e
1775
1773
  .enum('motion_sensitivity', ea.ALL, ['low', 'medium', 'high'])
1776
- .withDescription('Different sensitivities ' + 'means different static human body recognition rate and response speed of occupied'),
1774
+ .withDescription('Different sensitivities means different static human body recognition rate and response speed of occupied'),
1777
1775
  e.enum('reset_nopresence_status', ea.SET, ['']).withDescription('Reset the status of no presence'),
1778
1776
  e
1779
1777
  .enum('action', ea.STATE, ['region_*_enter', 'region_*_leave', 'region_*_occupied', 'region_*_unoccupied'])
@@ -1833,7 +1831,7 @@ const definitions = [
1833
1831
  { vendor: 'Xiaomi', model: 'ZHTZ02LM' },
1834
1832
  ],
1835
1833
  description: 'Mi door and window sensor',
1836
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1834
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1837
1835
  fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_contact],
1838
1836
  toZigbee: [],
1839
1837
  exposes: [e.battery(), e.contact(), e.battery_voltage(), e.power_outage_count(false)],
@@ -1844,7 +1842,7 @@ const definitions = [
1844
1842
  model: 'MCCGQ11LM',
1845
1843
  vendor: 'Aqara',
1846
1844
  description: 'Door and window sensor',
1847
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1845
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1848
1846
  fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_contact],
1849
1847
  toZigbee: [],
1850
1848
  exposes: [e.battery(), e.contact(), e.device_temperature(), e.battery_voltage(), e.power_outage_count(false), e.trigger_count()],
@@ -1859,7 +1857,7 @@ const definitions = [
1859
1857
  model: 'SJCGQ11LM',
1860
1858
  vendor: 'Aqara',
1861
1859
  description: 'Water leak sensor',
1862
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1860
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1863
1861
  fromZigbee: [lumi.fromZigbee.lumi_basic, fromZigbee_1.default.ias_water_leak_alarm_1],
1864
1862
  toZigbee: [],
1865
1863
  exposes: [
@@ -1882,7 +1880,7 @@ const definitions = [
1882
1880
  { vendor: 'Aqara', model: 'WL-S02D' },
1883
1881
  { vendor: 'Yandex', model: 'YNDX-00521' },
1884
1882
  ],
1885
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1883
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1886
1884
  fromZigbee: [lumi.fromZigbee.lumi_basic, fromZigbee_1.default.ias_water_leak_alarm_1, lumi.fromZigbee.lumi_specific],
1887
1885
  toZigbee: [],
1888
1886
  exposes: [e.battery(), e.water_leak(), e.battery_low(), e.tamper(), e.battery_voltage()],
@@ -1894,7 +1892,7 @@ const definitions = [
1894
1892
  vendor: 'Aqara',
1895
1893
  description: 'Cube',
1896
1894
  whiteLabel: [{ vendor: 'Xiaomi', model: 'MFKZQ01LM' }],
1897
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
1895
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
1898
1896
  fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_action_analog],
1899
1897
  exposes: [
1900
1898
  e.battery(),
@@ -2138,7 +2136,7 @@ const definitions = [
2138
2136
  description: 'Mijia Honeywell smoke detector',
2139
2137
  vendor: 'Xiaomi',
2140
2138
  whiteLabel: [{ vendor: 'Xiaomi', model: 'YTC4020RT' }],
2141
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
2139
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
2142
2140
  fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_smoke],
2143
2141
  toZigbee: [lumi.toZigbee.lumi_sensitivity, lumi.toZigbee.lumi_selftest],
2144
2142
  exposes: [
@@ -2200,10 +2198,10 @@ const definitions = [
2200
2198
  e.numeric('gas_density', ea.STATE_GET).withUnit('%LEL').withDescription('Value of gas concentration'),
2201
2199
  e
2202
2200
  .enum('gas_sensitivity', ea.ALL, ['10%LEL', '15%LEL'])
2203
- .withDescription('Gas concentration value at which ' + 'an alarm is triggered ("10%LEL" is more sensitive than "15%LEL")'),
2201
+ .withDescription('Gas concentration value at which an alarm is triggered ("10%LEL" is more sensitive than "15%LEL")'),
2204
2202
  e
2205
2203
  .enum('selftest', ea.SET, ['selftest'])
2206
- .withDescription('Starts the self-test process (checking the indicator ' + 'light and buzzer work properly)'),
2204
+ .withDescription('Starts the self-test process (checking the indicator light and buzzer work properly)'),
2207
2205
  e.binary('test', ea.STATE, true, false).withDescription('Self-test in progress'),
2208
2206
  e
2209
2207
  .enum('buzzer', ea.SET, ['mute', 'alarm'])
@@ -2262,7 +2260,7 @@ const definitions = [
2262
2260
  e.numeric('smoke_density_dbm', ea.STATE_GET).withUnit('dB/m').withDescription('Value of smoke concentration in dB/m'),
2263
2261
  e
2264
2262
  .enum('selftest', ea.SET, ['selftest'])
2265
- .withDescription('Starts the self-test process (checking the indicator ' + 'light and buzzer work properly)'),
2263
+ .withDescription('Starts the self-test process (checking the indicator light and buzzer work properly)'),
2266
2264
  e.binary('test', ea.STATE, true, false).withDescription('Self-test in progress'),
2267
2265
  e
2268
2266
  .enum('buzzer', ea.SET, ['mute', 'alarm'])
@@ -2275,7 +2273,7 @@ const definitions = [
2275
2273
  e.binary('buzzer_manual_mute', ea.STATE_GET, true, false).withDescription('Buzzer muted (manually)'),
2276
2274
  e
2277
2275
  .binary('heartbeat_indicator', ea.ALL, true, false)
2278
- .withDescription('When this option is enabled then in ' + 'the normal monitoring state, the green indicator light flashes every 60 seconds'),
2276
+ .withDescription('When this option is enabled then in the normal monitoring state, the green indicator light flashes every 60 seconds'),
2279
2277
  e
2280
2278
  .binary('linkage_alarm', ea.ALL, true, false)
2281
2279
  .withDescription('When this option is enabled and a smoke ' +
@@ -2286,7 +2284,7 @@ const definitions = [
2286
2284
  e.battery_voltage(),
2287
2285
  e.power_outage_count(false),
2288
2286
  ],
2289
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
2287
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
2290
2288
  configure: async (device, coordinatorEndpoint) => {
2291
2289
  const endpoint = device.getEndpoint(1);
2292
2290
  await endpoint.write('manuSpecificLumi', { 0x014b: { value: 1, type: 0x20 } }, { manufacturerCode: manufacturerCode });
@@ -2314,7 +2312,7 @@ const definitions = [
2314
2312
  model: 'DJT11LM',
2315
2313
  vendor: 'Aqara',
2316
2314
  description: 'Vibration sensor',
2317
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
2315
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
2318
2316
  fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_vibration_analog],
2319
2317
  toZigbee: [lumi.toZigbee.lumi_vibration_sensitivity],
2320
2318
  exposes: [
@@ -2345,7 +2343,7 @@ const definitions = [
2345
2343
  // Doesn't seem to be working at all
2346
2344
  // https://github.com/Koenkk/zigbee2mqtt/issues/21731
2347
2345
  // lumiMiscellaneous(),
2348
- (0, modernExtend_1.battery)({ voltageToPercentage: '3V_2850_3000', voltage: true }),
2346
+ (0, modernExtend_1.battery)({ voltageToPercentage: { min: 2850, max: 3000 }, voltage: true }),
2349
2347
  lumiZigbeeOTA(),
2350
2348
  (0, modernExtend_1.quirkCheckinInterval)('1_HOUR'),
2351
2349
  ],
@@ -2674,7 +2672,7 @@ const definitions = [
2674
2672
  'door_closed',
2675
2673
  ]),
2676
2674
  ],
2677
- meta: { battery: { voltageToPercentage: '4LR6AA1_5v' } },
2675
+ meta: { battery: { voltageToPercentage: { min: 3000, max: 4200 } } },
2678
2676
  configure: async (device, coordinatorEndpoint) => {
2679
2677
  // Device advertises itself as Router but is an EndDevice
2680
2678
  device.type = 'EndDevice';
@@ -2783,7 +2781,7 @@ const definitions = [
2783
2781
  .withDescription('Operation mode, select "command" to enable bindings (wake up the device before changing modes!)'),
2784
2782
  ],
2785
2783
  toZigbee: [lumi.toZigbee.lumi_operation_mode_opple],
2786
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
2784
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
2787
2785
  extend: [(0, modernExtend_1.quirkCheckinInterval)('1_HOUR')],
2788
2786
  configure: async (device, coordinatorEndpoint) => {
2789
2787
  const endpoint = device.getEndpoint(1);
@@ -2835,7 +2833,7 @@ const definitions = [
2835
2833
  .withDescription('Operation mode, select "command" to enable bindings (wake up the device before changing modes!)'),
2836
2834
  ],
2837
2835
  toZigbee: [lumi.toZigbee.lumi_operation_mode_opple],
2838
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
2836
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
2839
2837
  extend: [(0, modernExtend_1.quirkCheckinInterval)('1_HOUR')],
2840
2838
  configure: async (device, coordinatorEndpoint) => {
2841
2839
  const endpoint = device.getEndpoint(1);
@@ -2901,7 +2899,7 @@ const definitions = [
2901
2899
  e.power_outage_count(false),
2902
2900
  ],
2903
2901
  toZigbee: [lumi.toZigbee.lumi_operation_mode_opple],
2904
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
2902
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
2905
2903
  extend: [(0, modernExtend_1.quirkCheckinInterval)('1_HOUR')],
2906
2904
  configure: async (device, coordinatorEndpoint) => {
2907
2905
  const endpoint = device.getEndpoint(1);
@@ -2917,7 +2915,7 @@ const definitions = [
2917
2915
  description: 'Mi light sensor',
2918
2916
  fromZigbee: [fromZigbee_1.default.battery, fromZigbee_1.default.illuminance, lumi.fromZigbee.lumi_specific],
2919
2917
  toZigbee: [toZigbee_1.default.illuminance],
2920
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
2918
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
2921
2919
  extend: [(0, modernExtend_1.quirkCheckinInterval)('1_HOUR')],
2922
2920
  configure: async (device, coordinatorEndpoint) => {
2923
2921
  const endpoint = device.getEndpoint(1);
@@ -3180,7 +3178,7 @@ const definitions = [
3180
3178
  model: 'WXKG05LM',
3181
3179
  vendor: 'Aqara',
3182
3180
  description: 'Wireless remote switch T1 (single rocker)',
3183
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
3181
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3184
3182
  extend: [(0, modernExtend_1.quirkCheckinInterval)('1_HOUR')],
3185
3183
  fromZigbee: [lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_action_multistate, fromZigbee_1.default.battery, lumi.fromZigbee.lumi_specific],
3186
3184
  toZigbee: [],
@@ -3194,7 +3192,7 @@ const definitions = [
3194
3192
  description: 'Wireless remote switch H1 (double rocker)',
3195
3193
  fromZigbee: [fromZigbee_1.default.battery, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.command_toggle],
3196
3194
  toZigbee: [lumi.toZigbee.lumi_switch_click_mode, lumi.toZigbee.lumi_operation_mode_opple],
3197
- meta: { battery: { voltageToPercentage: '3V_2850_3000' }, multiEndpoint: true },
3195
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } }, multiEndpoint: true },
3198
3196
  extend: [(0, modernExtend_1.quirkCheckinInterval)('1_HOUR')],
3199
3197
  exposes: [
3200
3198
  e.battery(),
@@ -3258,7 +3256,7 @@ const definitions = [
3258
3256
  e.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']).withDescription('Decoupled mode for button'),
3259
3257
  e
3260
3258
  .enum('mode_switch', ea.ALL, ['anti_flicker_mode', 'quick_mode'])
3261
- .withDescription('Anti flicker mode can be used to solve blinking issues of some lights.' + 'Quick mode makes the device respond faster.'),
3259
+ .withDescription('Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster.'),
3262
3260
  ],
3263
3261
  configure: async (device, coordinatorEndpoint) => {
3264
3262
  await device.getEndpoint(1).write('manuSpecificLumi', { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
@@ -3290,7 +3288,7 @@ const definitions = [
3290
3288
  e.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']).withDescription('Decoupled mode for right button').withEndpoint('right'),
3291
3289
  e
3292
3290
  .enum('mode_switch', ea.ALL, ['anti_flicker_mode', 'quick_mode'])
3293
- .withDescription('Anti flicker mode can be used to solve blinking issues of some lights.' + 'Quick mode makes the device respond faster.'),
3291
+ .withDescription('Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster.'),
3294
3292
  e.action(['single_left', 'double_left', 'single_right', 'double_right', 'single_both', 'double_both']),
3295
3293
  e.power_outage_memory(),
3296
3294
  e.flip_indicator_light(),
@@ -3307,7 +3305,7 @@ const definitions = [
3307
3305
  whiteLabel: [{ vendor: 'Aqara', model: 'AAQS-S01' }],
3308
3306
  description: 'TVOC air quality monitor',
3309
3307
  fromZigbee: [fromZigbee_1.default.battery, lumi.fromZigbee.lumi_specific],
3310
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
3308
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3311
3309
  exposes: [e.device_temperature(), e.battery(), e.battery_voltage()],
3312
3310
  extend: [
3313
3311
  (0, modernExtend_1.quirkCheckinInterval)('1_HOUR'),
@@ -3423,10 +3421,10 @@ const definitions = [
3423
3421
  { vendor: 'Aqara', model: 'WB-R02D' },
3424
3422
  { vendor: 'Yandex', model: 'YNDX-00524' },
3425
3423
  ],
3426
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
3424
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3427
3425
  fromZigbee: [fromZigbee_1.default.battery, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
3428
3426
  toZigbee: [],
3429
- exposes: [e.battery(), e.battery_voltage(), e.action(['single', 'double', 'triple', 'quintuple', 'hold', 'release', 'many'])],
3427
+ exposes: [e.battery(), e.battery_voltage(), e.action(['single', 'double', 'triple', 'quadruple', 'quintuple', 'hold', 'release', 'many'])],
3430
3428
  configure: async (device, coordinatorEndpoint) => {
3431
3429
  const endpoint1 = device.getEndpoint(1);
3432
3430
  await endpoint1.write('manuSpecificLumi', { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
@@ -3440,7 +3438,7 @@ const definitions = [
3440
3438
  description: 'Light sensor T1',
3441
3439
  fromZigbee: [fromZigbee_1.default.battery, fromZigbee_1.default.illuminance, lumi.fromZigbee.lumi_specific],
3442
3440
  toZigbee: [lumi.toZigbee.lumi_detection_period],
3443
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
3441
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3444
3442
  exposes: [
3445
3443
  e.battery(),
3446
3444
  e.battery_voltage(),
@@ -3508,7 +3506,7 @@ const definitions = [
3508
3506
  fromZigbee: [lumi.fromZigbee.lumi_contact, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.ias_contact_alarm_1],
3509
3507
  toZigbee: [],
3510
3508
  exposes: [e.contact(), e.battery(), e.battery_voltage()],
3511
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
3509
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3512
3510
  extend: [(0, modernExtend_1.quirkCheckinInterval)('1_HOUR'), lumiZigbeeOTA()],
3513
3511
  },
3514
3512
  {
@@ -3548,7 +3546,7 @@ const definitions = [
3548
3546
  lumiPreventReset(),
3549
3547
  lumiCommandMode(),
3550
3548
  lumiAction({ actionLookup: { hold: 0, single: 1, double: 2, release: 255 } }),
3551
- lumiBattery({ voltageToPercentage: '3V_2850_3000' }),
3549
+ lumiBattery({ voltageToPercentage: { min: 2850, max: 3000 } }),
3552
3550
  lumiKnobRotation(),
3553
3551
  (0, modernExtend_1.enumLookup)({
3554
3552
  name: 'sensitivity',
@@ -3565,7 +3563,7 @@ const definitions = [
3565
3563
  model: 'WXKG16LM',
3566
3564
  vendor: 'Aqara',
3567
3565
  description: 'Wireless remote switch E1 (single rocker)',
3568
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
3566
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3569
3567
  extend: [(0, modernExtend_1.quirkCheckinInterval)('1_HOUR')],
3570
3568
  fromZigbee: [lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
3571
3569
  toZigbee: [lumi.toZigbee.lumi_switch_click_mode],
@@ -3587,7 +3585,7 @@ const definitions = [
3587
3585
  model: 'WXKG17LM',
3588
3586
  vendor: 'Aqara',
3589
3587
  description: 'Wireless remote switch E1 (double rocker)',
3590
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
3588
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3591
3589
  extend: [(0, modernExtend_1.quirkCheckinInterval)('1_HOUR'), lumiPreventReset()],
3592
3590
  exposes: [
3593
3591
  e.battery(),
@@ -3624,7 +3622,7 @@ const definitions = [
3624
3622
  .enum('operation_mode', ea.ALL, ['command', 'event'])
3625
3623
  .withDescription('Operation mode, select "command" to enable bindings (wake up the device before changing modes!)'),
3626
3624
  ],
3627
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
3625
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3628
3626
  extend: [(0, modernExtend_1.quirkCheckinInterval)('1_HOUR')],
3629
3627
  configure: async (device, coordinatorEndpoint) => {
3630
3628
  const endpoint1 = device.getEndpoint(1);
@@ -3736,7 +3734,7 @@ const definitions = [
3736
3734
  description: 'Wireless mini switch E1',
3737
3735
  fromZigbee: [fromZigbee_1.default.battery, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
3738
3736
  toZigbee: [],
3739
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
3737
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3740
3738
  extend: [(0, modernExtend_1.quirkCheckinInterval)('1_HOUR')],
3741
3739
  exposes: [
3742
3740
  e.battery(),
@@ -3753,7 +3751,7 @@ const definitions = [
3753
3751
  description: 'Wireless remote switch H1M (double rocker)',
3754
3752
  fromZigbee: [fromZigbee_1.default.battery, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific, fromZigbee_1.default.command_toggle],
3755
3753
  toZigbee: [lumi.toZigbee.lumi_switch_click_mode, lumi.toZigbee.lumi_operation_mode_opple],
3756
- meta: { battery: { voltageToPercentage: '3V_2850_3000' }, multiEndpoint: true },
3754
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } }, multiEndpoint: true },
3757
3755
  extend: [(0, modernExtend_1.quirkCheckinInterval)('1_HOUR')],
3758
3756
  exposes: [
3759
3757
  e.battery(),
@@ -3800,7 +3798,7 @@ const definitions = [
3800
3798
  model: 'WXKG04LM',
3801
3799
  vendor: 'Aqara',
3802
3800
  description: 'Wireless remote switch T1 (double rocker)',
3803
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
3801
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
3804
3802
  fromZigbee: [lumi.fromZigbee.lumi_basic, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
3805
3803
  toZigbee: [],
3806
3804
  endpoint: (device) => {
@@ -4037,7 +4035,7 @@ const definitions = [
4037
4035
  vendor: 'Aqara',
4038
4036
  whiteLabel: [{ vendor: 'Aqara', model: 'MFCZQ12LM' }],
4039
4037
  description: 'Cube T1 Pro',
4040
- meta: { battery: { voltageToPercentage: '3V_2850_3000' } },
4038
+ meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
4041
4039
  extend: [(0, modernExtend_1.quirkCheckinInterval)('1_HOUR'), lumiZigbeeOTA()],
4042
4040
  fromZigbee: [
4043
4041
  lumi.fromZigbee.lumi_specific,