zigbee-herdsman-converters 14.0.648 → 14.0.650

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.
@@ -1588,12 +1588,6 @@ const converters = {
1588
1588
  type: ['attributeReport', 'readResponse'],
1589
1589
  convert: (model, msg, publish, options, meta) => {
1590
1590
  const result = {};
1591
- if (msg.data.hasOwnProperty('physicalMinLevel')) {
1592
- result['ballast_physical_minimum_level'] = msg.data.physicalMinLevel;
1593
- }
1594
- if (msg.data.hasOwnProperty('physicalMaxLevel')) {
1595
- result['ballast_physical_maximum_level'] = msg.data.physicalMaxLevel;
1596
- }
1597
1591
  if (msg.data.hasOwnProperty('ballastStatus')) {
1598
1592
  const ballastStatus = msg.data.ballastStatus;
1599
1593
  result['ballast_status_non_operational'] = ballastStatus & 1 ? true : false;
@@ -1961,22 +1955,28 @@ const converters = {
1961
1955
  result.min_temperature = calibrateAndPrecisionRoundOptions(value / 10, options, 'temperature');
1962
1956
  break;
1963
1957
  case tuya.dataPoints.nousMaxHumi:
1964
- result.max_humidity = calibrateAndPrecisionRoundOptions(value / 10, options, 'humidity');
1958
+ result.max_humidity = calibrateAndPrecisionRoundOptions(value, options, 'humidity');
1965
1959
  break;
1966
1960
  case tuya.dataPoints.nousMinHumi:
1967
- result.min_humidity = calibrateAndPrecisionRoundOptions(value / 10, options, 'humidity');
1961
+ result.min_humidity = calibrateAndPrecisionRoundOptions(value, options, 'humidity');
1968
1962
  break;
1969
1963
  case tuya.dataPoints.nousTempAlarm:
1970
- result.temperature_alarm = {0x00: 'canceled', 0x01: 'lower_alarm', 0x02: 'upper_alarm'}[value];
1964
+ result.temperature_alarm = {0x00: 'lower_alarm', 0x01: 'upper_alarm', 0x02: 'canceled'}[value];
1971
1965
  break;
1972
1966
  case tuya.dataPoints.nousHumiAlarm:
1973
- result.humidity_alarm = {0x00: 'canceled', 0x01: 'lower_alarm', 0x02: 'upper_alarm'}[value];
1967
+ result.humidity_alarm = {0x00: 'lower_alarm', 0x01: 'upper_alarm', 0x02: 'canceled'}[value];
1974
1968
  break;
1975
1969
  case tuya.dataPoints.nousTempSensitivity:
1976
1970
  result.temperature_sensitivity = calibrateAndPrecisionRoundOptions(value / 10, options, 'temperature');
1977
1971
  break;
1978
- case tuya.dataPoints.nousReportInterval:
1979
- result.report_interval = value;
1972
+ case tuya.dataPoints.nousHumiSensitivity:
1973
+ result.humidity_sensitivity = calibrateAndPrecisionRoundOptions(value, options, 'humidity');
1974
+ break;
1975
+ case tuya.dataPoints.nousTempReportInterval:
1976
+ result.temperature_report_interval = value;
1977
+ break;
1978
+ case tuya.dataPoints.nousHumiReportInterval:
1979
+ result.humidity_report_interval = value;
1980
1980
  break;
1981
1981
  default:
1982
1982
  meta.logger.warn(`zigbee-herdsman-converters:nous_lcd_temperature_humidity_sensor: NOT RECOGNIZED ` +
@@ -578,8 +578,6 @@ const converters = {
578
578
  },
579
579
  ballast_config: {
580
580
  key: ['ballast_config',
581
- 'ballast_physical_minimum_level',
582
- 'ballast_physical_maximum_level',
583
581
  'ballast_minimum_level',
584
582
  'ballast_maximum_level',
585
583
  'ballast_power_on_level'],
@@ -607,8 +605,6 @@ const converters = {
607
605
  convertGet: async (entity, key, meta) => {
608
606
  let result = {};
609
607
  for (const attrName of [
610
- 'physical_min_level',
611
- 'physical_max_level',
612
608
  'ballast_status',
613
609
  'min_level',
614
610
  'max_level',
@@ -2211,7 +2207,7 @@ const converters = {
2211
2207
  xiaomi_switch_power_outage_memory: {
2212
2208
  key: ['power_outage_memory'],
2213
2209
  convertSet: async (entity, key, value, meta) => {
2214
- if (['SP-EUC01', 'ZNCZ04LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'SSM-U01', 'SSM-U02', 'DLKZMK11LM', 'DLKZMK12LM',
2210
+ if (['SP-EUC01', 'ZNCZ04LM', 'ZNCZ12LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'SSM-U01', 'SSM-U02', 'DLKZMK11LM', 'DLKZMK12LM',
2215
2211
  'WS-EUK01', 'WS-EUK02', 'WS-EUK03', 'WS-EUK04', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
2216
2212
  'QBKG31LM', 'QBKG34LM', 'QBKG38LM', 'QBKG39LM', 'QBKG40LM', 'QBKG41LM', 'ZNDDMK11LM', 'ZNLDP13LM',
2217
2213
  ].includes(meta.mapped.model)) {
@@ -2235,7 +2231,7 @@ const converters = {
2235
2231
  return {state: {power_outage_memory: value}};
2236
2232
  },
2237
2233
  convertGet: async (entity, key, meta) => {
2238
- if (['SP-EUC01', 'ZNCZ04LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'SSM-U01', 'SSM-U02', 'DLKZMK11LM', 'DLKZMK12LM',
2234
+ if (['SP-EUC01', 'ZNCZ04LM', 'ZNCZ12LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'SSM-U01', 'SSM-U02', 'DLKZMK11LM', 'DLKZMK12LM',
2239
2235
  'WS-EUK01', 'WS-EUK02', 'WS-EUK03', 'WS-EUK04', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
2240
2236
  'QBKG31LM', 'QBKG34LM', 'QBKG38LM', 'QBKG39LM', 'QBKG40LM', 'QBKG41LM', 'ZNDDMK11LM', 'ZNLDP13LM',
2241
2237
  ].includes(meta.mapped.model)) {
@@ -2264,7 +2260,7 @@ const converters = {
2264
2260
  xiaomi_auto_off: {
2265
2261
  key: ['auto_off'],
2266
2262
  convertSet: async (entity, key, value, meta) => {
2267
- if (['ZNCZ04LM'].includes(meta.mapped.model)) {
2263
+ if (['ZNCZ04LM', 'ZNCZ12LM'].includes(meta.mapped.model)) {
2268
2264
  await entity.write('aqaraOpple', {0x0202: {value: value ? 1 : 0, type: 0x10}}, manufacturerOptions.xiaomi);
2269
2265
  } else if (['ZNCZ11LM'].includes(meta.mapped.model)) {
2270
2266
  const payload = value ?
@@ -2347,7 +2343,7 @@ const converters = {
2347
2343
  xiaomi_led_disabled_night: {
2348
2344
  key: ['led_disabled_night'],
2349
2345
  convertSet: async (entity, key, value, meta) => {
2350
- if (['ZNCZ04LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
2346
+ if (['ZNCZ04LM', 'ZNCZ12LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
2351
2347
  'QBKG31LM', 'QBKG34LM', 'DLKZMK11LM', 'SSM-U01', 'WS-EUK01', 'WS-EUK02',
2352
2348
  'WS-EUK03', 'WS-EUK04'].includes(meta.mapped.model)) {
2353
2349
  await entity.write('aqaraOpple', {0x0203: {value: value ? 1 : 0, type: 0x10}}, manufacturerOptions.xiaomi);
@@ -2363,7 +2359,7 @@ const converters = {
2363
2359
  return {state: {led_disabled_night: value}};
2364
2360
  },
2365
2361
  convertGet: async (entity, key, meta) => {
2366
- if (['ZNCZ04LM', 'ZNCZ15LM', 'QBCZ15LM', 'QBCZ14LM', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
2362
+ if (['ZNCZ04LM', 'ZNCZ12LM', 'ZNCZ15LM', 'QBCZ15LM', 'QBCZ14LM', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
2367
2363
  'QBKG31LM', 'QBKG34LM', 'DLKZMK11LM', 'SSM-U01', 'WS-EUK01', 'WS-EUK02',
2368
2364
  'WS-EUK03', 'WS-EUK04'].includes(meta.mapped.model)) {
2369
2365
  await entity.read('aqaraOpple', [0x0203], manufacturerOptions.xiaomi);
@@ -5449,8 +5445,8 @@ const converters = {
5449
5445
  },
5450
5446
  nous_lcd_temperature_humidity_sensor: {
5451
5447
  key: [
5452
- 'min_temperature', 'max_temperature', 'temperature_sensitivity', 'temperature_unit_convert',
5453
- 'min_humidity', 'max_humidity', 'report_interval',
5448
+ 'min_temperature', 'max_temperature', 'temperature_sensitivity', 'temperature_unit_convert', 'temperature_report_interval',
5449
+ 'min_humidity', 'max_humidity', 'humidity_sensitivity', 'humidity_report_interval',
5454
5450
  ],
5455
5451
  convertSet: async (entity, key, value, meta) => {
5456
5452
  switch (key) {
@@ -5466,14 +5462,20 @@ const converters = {
5466
5462
  case 'temperature_sensitivity':
5467
5463
  await tuya.sendDataPointValue(entity, tuya.dataPoints.nousTempSensitivity, Math.round(value * 10));
5468
5464
  break;
5465
+ case 'humidity_sensitivity':
5466
+ await tuya.sendDataPointValue(entity, tuya.dataPoints.nousHumiSensitivity, value);
5467
+ break;
5469
5468
  case 'min_humidity':
5470
- await tuya.sendDataPointValue(entity, tuya.dataPoints.nousMinHumi, Math.round(value * 10));
5469
+ await tuya.sendDataPointValue(entity, tuya.dataPoints.nousMinHumi, Math.round(value));
5471
5470
  break;
5472
5471
  case 'max_humidity':
5473
- await tuya.sendDataPointValue(entity, tuya.dataPoints.nousMaxHumi, Math.round(value * 10));
5472
+ await tuya.sendDataPointValue(entity, tuya.dataPoints.nousMaxHumi, Math.round(value));
5473
+ break;
5474
+ case 'temperature_report_interval':
5475
+ await tuya.sendDataPointValue(entity, tuya.dataPoints.nousTempReportInterval, value);
5474
5476
  break;
5475
- case 'report_interval':
5476
- await tuya.sendDataPointValue(entity, tuya.dataPoints.nousReportInterval, value);
5477
+ case 'humidity_report_interval':
5478
+ await tuya.sendDataPointValue(entity, tuya.dataPoints.nousHumiReportInterval, value);
5477
5479
  break;
5478
5480
  default: // Unknown key
5479
5481
  meta.logger.warn(`Unhandled key ${key}`);
package/devices/immax.js CHANGED
@@ -92,7 +92,7 @@ module.exports = [
92
92
  await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
93
93
  await reporting.readMeteringMultiplierDivisor(endpoint);
94
94
  await reporting.currentSummDelivered(endpoint);
95
- await reporting.activePower(endpoint);
95
+ await reporting.activePower(endpoint, {change: 5});
96
96
  },
97
97
  exposes: [e.switch(), e.power(), e.energy()],
98
98
  },
@@ -100,11 +100,7 @@ module.exports = [
100
100
  exposes.numeric('ballast_maximum_level', ea.ALL).withValueMin(1).withValueMax(254)
101
101
  .withDescription('Specifies the maximum brightness value'),
102
102
  exposes.numeric('ballast_power_on_level', ea.ALL).withValueMin(1).withValueMax(254)
103
- .withDescription('Specifies the initialisation light level. Can not be set lower than "ballast_minimum_level"'),
104
- exposes.numeric('ballast_physical_minimum_level', ea.ALL).withValueMin(1).withValueMax(254)
105
- .withDescription('Specifies the minimum light output the ballast can achieve.'),
106
- exposes.numeric('ballast_physical_maximum_level', ea.ALL).withValueMin(1).withValueMax(254)
107
- .withDescription('Specifies the maximum light output the ballast can achieve.')],
103
+ .withDescription('Specifies the initialisation light level. Can not be set lower than "ballast_minimum_level"')],
108
104
  configure: async (device, coordinatorEndpoint, logger) => {
109
105
  await extend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
110
106
  const endpoint = device.getEndpoint(1);
package/devices/nodon.js CHANGED
@@ -21,6 +21,21 @@ module.exports = [
21
21
  },
22
22
  exposes: [e.cover_position()],
23
23
  },
24
+ {
25
+ zigbeeModel: ['SIN-4-RS-20_PRO'],
26
+ model: 'SIN-4-RS-20_PRO',
27
+ vendor: 'NodOn',
28
+ description: 'Roller shutter controller',
29
+ fromZigbee: [fz.cover_position_tilt],
30
+ toZigbee: [tz.cover_state, tz.cover_position_tilt],
31
+ configure: async (device, coordinatorEndpoint, logger) => {
32
+ const endpoint = device.getEndpoint(1);
33
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'closuresWindowCovering']);
34
+ await reporting.currentPositionLiftPercentage(endpoint);
35
+ await reporting.currentPositionTiltPercentage(endpoint);
36
+ },
37
+ exposes: [e.cover_position()],
38
+ },
24
39
  {
25
40
  zigbeeModel: ['SIN-4-1-20'],
26
41
  model: 'SIN-4-1-20',
package/devices/nous.js CHANGED
@@ -32,6 +32,10 @@ module.exports = [
32
32
  },
33
33
  exposes: [
34
34
  e.temperature(), e.humidity(), e.battery(),
35
+ exposes.numeric('temperature_report_interval', ea.STATE_SET).withUnit('min').withValueMin(5).withValueMax(120).withValueStep(5)
36
+ .withDescription('Temperature Report interval'),
37
+ exposes.numeric('humidity_report_interval', ea.STATE_SET).withUnit('min').withValueMin(5).withValueMax(120).withValueStep(5)
38
+ .withDescription('Humidity Report interval'),
35
39
  exposes.enum('temperature_unit_convert', ea.STATE_SET, ['celsius', 'fahrenheit']).withDescription('Current display unit'),
36
40
  exposes.enum('temperature_alarm', ea.STATE, ['canceled', 'lower_alarm', 'upper_alarm'])
37
41
  .withDescription('Temperature alarm status'),
@@ -41,6 +45,14 @@ module.exports = [
41
45
  .withDescription('Alarm temperature min'),
42
46
  exposes.numeric('temperature_sensitivity', ea.STATE_SET).withUnit('°C').withValueMin(0.1).withValueMax(50).withValueStep(0.1)
43
47
  .withDescription('Temperature sensitivity'),
48
+ exposes.enum('humidity_alarm', ea.STATE, ['canceled', 'lower_alarm', 'upper_alarm'])
49
+ .withDescription('Humidity alarm status'),
50
+ exposes.numeric('max_humidity', ea.STATE_SET).withUnit('%').withValueMin(0).withValueMax(100)
51
+ .withDescription('Alarm humidity max'),
52
+ exposes.numeric('min_humidity', ea.STATE_SET).withUnit('%').withValueMin(0).withValueMax(100)
53
+ .withDescription('Alarm humidity min'),
54
+ exposes.numeric('humidity_sensitivity', ea.STATE_SET).withUnit('%').withValueMin(1).withValueMax(100).withValueStep(1)
55
+ .withDescription('Humidity sensitivity'),
44
56
  ],
45
57
  },
46
58
  {
package/devices/osram.js CHANGED
@@ -395,6 +395,7 @@ module.exports = [
395
395
  vendor: 'OSRAM',
396
396
  description: 'Zigbee 3.0 DALI CONV LI dimmer for DALI-based luminaires (only one device)',
397
397
  extend: extend.ledvance.light_onoff_brightness(),
398
+ ota: ota.zigbeeOTA,
398
399
  },
399
400
  {
400
401
  fingerprint: [{modelID: 'Zigbee 3.0 DALI CONV LI', endpoints: [{ID: 10}, {ID: 25}, {ID: 242}]},
@@ -402,7 +403,16 @@ module.exports = [
402
403
  model: '4062172044776_2',
403
404
  vendor: 'OSRAM',
404
405
  description: 'Zigbee 3.0 DALI CONV LI dimmer for DALI-based luminaires (one device and pushbutton)',
405
- extend: extend.ledvance.light_onoff_brightness(),
406
+ fromZigbee: [...extend.ledvance.light_onoff_brightness({noConfigure: true}).fromZigbee,
407
+ fz.command_toggle, fz.command_move, fz.command_stop],
408
+ extend: extend.ledvance.light_onoff_brightness({noConfigure: true}),
409
+ exposes: [e.action(['toggle', 'brightness_move_up', 'brightness_move_down', 'brightness_stop']),
410
+ ...extend.ledvance.light_onoff_brightness({noConfigure: true}).exposes],
411
+ ota: ota.zigbeeOTA,
412
+ configure: async (device, coordinatorEndpoint, logger) => {
413
+ await reporting.bind(device.getEndpoint(10), coordinatorEndpoint, ['genLevelCtrl', 'genOnOff']);
414
+ await reporting.bind(device.getEndpoint(25), coordinatorEndpoint, ['genLevelCtrl', 'genOnOff']);
415
+ },
406
416
  onEvent: async (type, data, device) => {
407
417
  if (type === 'deviceInterview') {
408
418
  device.getEndpoint(25).addBinding('genOnOff', device.getEndpoint(10));
@@ -418,6 +428,7 @@ module.exports = [
418
428
  description: 'Zigbee 3.0 DALI CONV LI dimmer for DALI-based luminaires (with two devices)',
419
429
  extend: extend.ledvance.light_onoff_brightness({noConfigure: true}),
420
430
  exposes: [e.light_brightness().withEndpoint('l1'), e.light_brightness().withEndpoint('l2')],
431
+ ota: ota.zigbeeOTA,
421
432
  endpoint: (device) => {
422
433
  return {'l1': 10, 'l2': 11};
423
434
  },
@@ -425,10 +436,6 @@ module.exports = [
425
436
  configure: async (device, coordinatorEndpoint, logger) => {
426
437
  await reporting.bind(device.getEndpoint(10), coordinatorEndpoint, ['genLevelCtrl', 'genOnOff']);
427
438
  await reporting.bind(device.getEndpoint(11), coordinatorEndpoint, ['genLevelCtrl', 'genOnOff']);
428
- await reporting.onOff(device.getEndpoint(10));
429
- await reporting.brightness(device.getEndpoint(10));
430
- await reporting.onOff(device.getEndpoint(11));
431
- await reporting.brightness(device.getEndpoint(11));
432
439
  },
433
440
  },
434
441
  {
@@ -437,19 +444,20 @@ module.exports = [
437
444
  model: '4062172044776_4',
438
445
  vendor: 'OSRAM',
439
446
  description: 'Zigbee 3.0 DALI CONV LI dimmer for DALI-based luminaires (with two devices and pushbutton)',
447
+ fromZigbee: [...extend.ledvance.light_onoff_brightness({noConfigure: true}).fromZigbee,
448
+ fz.command_toggle, fz.command_move, fz.command_stop],
440
449
  extend: extend.ledvance.light_onoff_brightness({noConfigure: true}),
441
- exposes: [e.light_brightness().withEndpoint('l1'), e.light_brightness().withEndpoint('l2')],
450
+ exposes: [e.action(['toggle_s1', 'brightness_move_up_s1', 'brightness_move_down_s1', 'brightness_stop_s1']),
451
+ e.light_brightness().withEndpoint('l1'), e.light_brightness().withEndpoint('l2')],
452
+ ota: ota.zigbeeOTA,
442
453
  endpoint: (device) => {
443
- return {'l1': 10, 'l2': 11};
454
+ return {'l1': 10, 'l2': 11, 's1': 25};
444
455
  },
445
456
  meta: {multiEndpoint: true},
446
457
  configure: async (device, coordinatorEndpoint, logger) => {
447
458
  await reporting.bind(device.getEndpoint(10), coordinatorEndpoint, ['genLevelCtrl', 'genOnOff']);
448
459
  await reporting.bind(device.getEndpoint(11), coordinatorEndpoint, ['genLevelCtrl', 'genOnOff']);
449
- await reporting.onOff(device.getEndpoint(10));
450
- await reporting.brightness(device.getEndpoint(10));
451
- await reporting.onOff(device.getEndpoint(11));
452
- await reporting.brightness(device.getEndpoint(11));
460
+ await reporting.bind(device.getEndpoint(25), coordinatorEndpoint, ['genLevelCtrl', 'genOnOff']);
453
461
  },
454
462
  onEvent: async (type, data, device) => {
455
463
  if (type === 'deviceInterview') {
@@ -2862,4 +2862,11 @@ module.exports = [
2862
2862
  description: 'Hue white ambiance Buckram double spotlight with Bluetooth',
2863
2863
  extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
2864
2864
  },
2865
+ {
2866
+ zigbeeModel: ['4090131P9'],
2867
+ model: '8718696174548',
2868
+ vendor: 'Philips',
2869
+ description: ' Hue Sana wall lamp with Bluetooth white',
2870
+ extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
2871
+ },
2865
2872
  ];
package/devices/sprut.js CHANGED
@@ -273,10 +273,10 @@ module.exports = [
273
273
  .withDescription('The minimum noise level at which the detector will work (default: 50)'),
274
274
  e.enum('co2_autocalibration', ea.ALL, switchActionValues)
275
275
  .withDescription('Automatic calibration of the CO2 sensor. If ON, the CO2 sensor will automatically calibrate '+
276
- 'every 7 days.'),
276
+ 'every 7 days. (MH-Z19B sensor)'),
277
277
  e.enum('co2_manual_calibration', ea.ALL, switchActionValues)
278
278
  .withDescription('Ventilate the room for 20 minutes, turn on manual calibration, and turn it off after one second. '+
279
- 'After about 5 minutes the CO2 sensor will show 400ppm. Calibration completed'),
279
+ 'After about 5 minutes the CO2 sensor will show 400ppm. Calibration completed. (MH-Z19B sensor)'),
280
280
  e.enum('th_heater', ea.ALL, switchActionValues)
281
281
  .withDescription('Turn on when working in conditions of high humidity (more than 70 %, RH) or condensation, '+
282
282
  'if the sensor shows 0 or 100 %.'),
@@ -307,14 +307,6 @@ module.exports = [
307
307
 
308
308
  // buzzer
309
309
  await device.getEndpoint(4).read('genOnOff', ['onOff']);
310
-
311
- // Read data at start
312
- await endpoint1.read('msTemperatureMeasurement', ['measuredValue']);
313
- await endpoint1.read('msIlluminanceMeasurement', ['measuredValue']);
314
- await endpoint1.read('msRelativeHumidity', ['measuredValue']);
315
- await endpoint1.read('msOccupancySensing', ['occupancy']);
316
- await endpoint1.read('sprutNoise', ['noise']);
317
- await endpoint1.read('sprutNoise', ['noiseDetected']);
318
310
  },
319
311
  endpoint: (device) => {
320
312
  return {'default': 1, 'l1': 2, 'l2': 3, 'l3': 4};
package/devices/tuya.js CHANGED
@@ -1657,7 +1657,8 @@ module.exports = [
1657
1657
  model: 'TS0042',
1658
1658
  vendor: 'TuYa',
1659
1659
  description: 'Wireless switch with 2 buttons',
1660
- whiteLabel: [{vendor: 'Smart9', model: 'S9TSZGB'}, {vendor: 'Lonsonho', model: 'TS0042'}],
1660
+ whiteLabel: [{vendor: 'Smart9', model: 'S9TSZGB'}, {vendor: 'Lonsonho', model: 'TS0042'},
1661
+ {vendor: 'ClickSmart+', model: 'CSPGM2075PW'}],
1661
1662
  exposes: [e.battery(), e.action(['1_single', '1_double', '1_hold', '2_single', '2_double', '2_hold'])],
1662
1663
  fromZigbee: [fz.tuya_on_off_action, fz.battery],
1663
1664
  toZigbee: [],
@@ -2083,7 +2084,7 @@ module.exports = [
2083
2084
  onEvent: tuya.onEventSetLocalTime,
2084
2085
  configure: tuya.configureMagicPacket,
2085
2086
  exposes: [
2086
- e.battery(), e.child_lock(), e.open_window(), e.open_window_temperature().withValueMin(5).withValueMax(30),
2087
+ e.battery_low(), e.child_lock(), e.open_window(), e.open_window_temperature().withValueMin(5).withValueMax(30),
2087
2088
  e.comfort_temperature().withValueMin(5).withValueMax(30), e.eco_temperature().withValueMin(5).withValueMax(30),
2088
2089
  exposes.climate().withSystemMode(['off', 'heat'], ea.STATE_SET, 'When switched to the "off" mode, the device will display ' +
2089
2090
  '"HS" and the valve will be fully closed. Press the pair button to cancel or switch back to "heat" mode. Battery life ' +
@@ -3393,8 +3394,8 @@ module.exports = [
3393
3394
  },
3394
3395
  exposes: [
3395
3396
  e.temperature(), e.humidity(), e.battery(),
3396
- exposes.numeric('report_interval', ea.STATE_SET).withUnit('min').withValueMin(5).withValueMax(60).withValueStep(5)
3397
- .withDescription('Report interval'),
3397
+ exposes.numeric('temperature_report_interval', ea.STATE_SET).withUnit('min').withValueMin(5).withValueMax(60).withValueStep(5)
3398
+ .withDescription('Temperature Report interval'),
3398
3399
  exposes.enum('temperature_unit_convert', ea.STATE_SET, ['celsius', 'fahrenheit']).withDescription('Current display unit'),
3399
3400
  exposes.enum('temperature_alarm', ea.STATE, ['canceled', 'lower_alarm', 'upper_alarm'])
3400
3401
  .withDescription('Temperature alarm status'),
package/devices/ubisys.js CHANGED
@@ -671,10 +671,6 @@ module.exports = [
671
671
  ubisys.tz.dimmer_setup_genLevelCtrl, ubisys.tz.configure_device_setup, tz.ignore_transition, tz.light_brightness_move,
672
672
  tz.light_brightness_step],
673
673
  exposes: [e.light_brightness().withLevelConfig(), e.power(),
674
- exposes.numeric('ballast_physical_minimum_level', ea.ALL).withValueMin(1).withValueMax(254)
675
- .withDescription('Specifies the minimum light output the ballast can achieve.'),
676
- exposes.numeric('ballast_physical_maximum_level', ea.ALL).withValueMin(1).withValueMax(254)
677
- .withDescription('Specifies the maximum light output the ballast can achieve.'),
678
674
  exposes.numeric('ballast_minimum_level', ea.ALL).withValueMin(1).withValueMax(254)
679
675
  .withDescription('Specifies the minimum light output of the ballast'),
680
676
  exposes.numeric('ballast_maximum_level', ea.ALL).withValueMin(1).withValueMax(254)
package/devices/xiaomi.js CHANGED
@@ -1371,10 +1371,16 @@ module.exports = [
1371
1371
  model: 'ZNCZ12LM',
1372
1372
  description: 'Mi power plug ZigBee US',
1373
1373
  vendor: 'Xiaomi',
1374
- fromZigbee: [fz.on_off, fz.xiaomi_power, fz.xiaomi_basic, fz.ignore_occupancy_report, fz.ignore_illuminance_report],
1375
- toZigbee: [tz.on_off, tz.xiaomi_power],
1376
- exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.device_temperature().withAccess(ea.STATE),
1377
- e.voltage().withAccess(ea.STATE)],
1374
+ fromZigbee: [fz.on_off, fz.xiaomi_power, fz.aqara_opple, fz.xiaomi_basic, fz.ignore_occupancy_report, fz.ignore_illuminance_report],
1375
+ toZigbee: [tz.on_off, tz.xiaomi_power, tz.xiaomi_switch_power_outage_memory, tz.xiaomi_auto_off, tz.xiaomi_led_disabled_night,
1376
+ tz.xiaomi_overload_protection],
1377
+ exposes: [
1378
+ e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.device_temperature().withAccess(ea.STATE),
1379
+ e.voltage().withAccess(ea.STATE), e.current(), e.consumer_connected(), e.led_disabled_night(),
1380
+ e.power_outage_memory(), exposes.binary('auto_off', ea.STATE_SET, true, false)
1381
+ .withDescription('Turn the device automatically off when attached device consumes less than 2W for 20 minutes'),
1382
+ exposes.numeric('overload_protection', exposes.access.ALL).withValueMin(100).withValueMax(2300).withUnit('W')
1383
+ .withDescription('Maximum allowed load, turns off if exceeded')],
1378
1384
  ota: ota.zigbeeOTA,
1379
1385
  },
1380
1386
  {
package/lib/tuya.js CHANGED
@@ -741,8 +741,10 @@ const dataPoints = {
741
741
  nousMinHumi: 13,
742
742
  nousTempAlarm: 14,
743
743
  nousHumiAlarm: 15,
744
+ nousHumiSensitivity: 20,
744
745
  nousTempSensitivity: 19,
745
- nousReportInterval: 17,
746
+ nousTempReportInterval: 17,
747
+ nousHumiReportInterval: 18,
746
748
  // TUYA Temperature and Humidity Sensor
747
749
  tthTemperature: 1,
748
750
  tthHumidity: 2,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.648",
3
+ "version": "14.0.650",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [