zigbee-herdsman-converters 14.0.546 → 14.0.549

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.
@@ -5655,8 +5655,9 @@ const converters = {
5655
5655
  }
5656
5656
 
5657
5657
  let buttonLookup = null;
5658
- if (['WXKG02LM_rev2', 'WXKG07LM', 'WXKG15LM', 'WXKG17LM',
5659
- 'WRS-R02'].includes(model.model)) buttonLookup = {1: 'left', 2: 'right', 3: 'both'};
5658
+ if (['WXKG02LM_rev2', 'WXKG07LM', 'WXKG15LM', 'WXKG17LM'].includes(model.model)) {
5659
+ buttonLookup = {1: 'left', 2: 'right', 3: 'both'};
5660
+ }
5660
5661
  if (['QBKG12LM', 'QBKG24LM'].includes(model.model)) buttonLookup = {5: 'left', 6: 'right', 7: 'both'};
5661
5662
  if (['QBKG39LM', 'QBKG41LM', 'WS-EUK02', 'WS-EUK04', 'QBKG20LM', 'QBKG31LM'].includes(model.model)) {
5662
5663
  buttonLookup = {41: 'left', 42: 'right', 51: 'both'};
@@ -7474,23 +7475,6 @@ const converters = {
7474
7475
  }
7475
7476
  },
7476
7477
  },
7477
- woox_R7060: {
7478
- cluster: 'manuSpecificTuya',
7479
- type: ['commandActiveStatusReport'],
7480
- convert: (model, msg, publish, options, meta) => {
7481
- const dpValue = tuya.firstDpValue(msg, meta, 'woox_R7060');
7482
- const dp = dpValue.dp;
7483
- const value = tuya.getDataValue(dpValue);
7484
-
7485
- switch (dp) {
7486
- case tuya.dataPoints.wooxSwitch:
7487
- return {state: value === 2 ? 'OFF' : 'ON'};
7488
- default:
7489
- meta.logger.warn(`zigbee-herdsman-converters:WooxR7060: Unrecognized DP #${
7490
- dp} with data ${JSON.stringify(dpValue)}`);
7491
- }
7492
- },
7493
- },
7494
7478
  idlock: {
7495
7479
  cluster: 'closuresDoorLock',
7496
7480
  type: ['attributeReport', 'readResponse'],
@@ -24,13 +24,13 @@ module.exports = [
24
24
  .withDescription('On/off state of the switch'),
25
25
  e.child_lock(),
26
26
  e.window_detection(),
27
+ e.away_mode(),
27
28
  exposes.climate()
28
29
  .withSetpoint('current_heating_setpoint', 5, 35, 1, ea.STATE_SET)
29
30
  .withLocalTemperature(ea.STATE)
30
31
  .withLocalTemperatureCalibration(-9, 9, 1, ea.STATE_SET)
31
32
  .withSystemMode(['heat', 'auto'], ea.STATE_SET)
32
33
  .withRunningState(['idle', 'heat'], ea.STATE)
33
- .withAwayMode()
34
34
  .withSensor(['internal', 'external', 'both']),
35
35
  exposes.numeric('external_temperature', ea.STATE)
36
36
  .withUnit('°C')
package/devices/ikea.js CHANGED
@@ -292,10 +292,10 @@ module.exports = [
292
292
  extend: tradfriExtend.light_onoff_brightness_colortemp(),
293
293
  },
294
294
  {
295
- zigbeeModel: ['TRADFRIbulbE27WSglobeopal1055lm', 'TRADFRIbulbE26WSglobeopal1100lm'],
295
+ zigbeeModel: ['TRADFRIbulbE27WSglobeopal1055lm', 'TRADFRIbulbE26WSglobeopal1100lm', 'TRADFRIbulbE26WSglobeopal1160lm'],
296
296
  model: 'LED2003G10',
297
297
  vendor: 'IKEA',
298
- description: 'TRADFRI LED bulb E26/27 1100/1055 lumen, dimmable, white spectrum, opal white',
298
+ description: 'TRADFRI LED bulb E26/27 1100/1055/1160 lumen, dimmable, white spectrum, opal white',
299
299
  extend: tradfriExtend.light_onoff_brightness_colortemp(),
300
300
  },
301
301
  {
package/devices/immax.js CHANGED
@@ -97,10 +97,10 @@ module.exports = [
97
97
  weeklyScheduleFirstDayDpId: tuya.dataPoints.schedule,
98
98
  },
99
99
  },
100
- exposes: [e.battery_low(), e.child_lock(), exposes.climate()
100
+ exposes: [e.battery_low(), e.child_lock(), e.away_mode(), exposes.climate()
101
101
  .withSetpoint('current_heating_setpoint', 5, 35, 0.5, ea.STATE_SET)
102
102
  .withLocalTemperature(ea.STATE).withSystemMode(['off', 'heat', 'auto'], ea.STATE_SET)
103
- .withRunningState(['idle', 'heat'], ea.STATE).withAwayMode()],
103
+ .withRunningState(['idle', 'heat'], ea.STATE)],
104
104
  },
105
105
  {
106
106
  zigbeeModel: ['Bulb-RGB+CCT-ZB3.0'],
package/devices/niko.js CHANGED
@@ -234,4 +234,18 @@ module.exports = [
234
234
  await reporting.brightness(endpoint);
235
235
  },
236
236
  },
237
+ {
238
+ zigbeeModel: ['Connectable motor control,3A'],
239
+ model: '552-72301',
240
+ vendor: 'Niko',
241
+ description: 'Connectable motor control',
242
+ fromZigbee: [fz.cover_position_tilt, fz.battery],
243
+ toZigbee: [tz.cover_state, tz.cover_position_tilt],
244
+ configure: async (device, coordinatorEndpoint, logger) => {
245
+ const endpoint = device.getEndpoint(1);
246
+ await reporting.bind(endpoint, coordinatorEndpoint, ['closuresWindowCovering']);
247
+ await reporting.currentPositionLiftPercentage(endpoint);
248
+ },
249
+ exposes: [e.cover_position()],
250
+ },
237
251
  ];
@@ -1655,7 +1655,7 @@ module.exports = [
1655
1655
  vendor: 'Philips',
1656
1656
  description: 'Hue Iris (generation 2, white)',
1657
1657
  meta: {turnsOffAtBrightness1: true},
1658
- extend: hueExtend.light_onoff_brightness_color(),
1658
+ extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
1659
1659
  ota: ota.zigbeeOTA,
1660
1660
  },
1661
1661
  {
@@ -2596,6 +2596,24 @@ module.exports = [
2596
2596
  extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
2597
2597
  ota: ota.zigbeeOTA,
2598
2598
  },
2599
+ {
2600
+ zigbeeModel: ['5047231P6'],
2601
+ model: '5047231P6',
2602
+ vendor: 'Philips',
2603
+ description: 'Hue White ambiance Buckram double spotlight',
2604
+ meta: {turnsOffAtBrightness1: true},
2605
+ extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
2606
+ ota: ota.zigbeeOTA,
2607
+ },
2608
+ {
2609
+ zigbeeModel: ['5047331P6'],
2610
+ model: '5047331P6',
2611
+ vendor: 'Philips',
2612
+ description: 'Hue White ambiance Buckram triple spotlight',
2613
+ meta: {turnsOffAtBrightness1: true},
2614
+ extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
2615
+ ota: ota.zigbeeOTA,
2616
+ },
2599
2617
  {
2600
2618
  zigbeeModel: ['5047130P9'],
2601
2619
  model: '5047130P9',
@@ -42,13 +42,12 @@ module.exports = [
42
42
  const endpoint = device.getEndpoint(1);
43
43
  await reporting.bind(endpoint, coordinatorEndpoint, ['genBasic']);
44
44
  },
45
- exposes: [e.battery_low(), e.window_detection(), e.child_lock(),
45
+ exposes: [e.battery_low(), e.window_detection(), e.child_lock(), e.away_mode(),
46
46
  exposes.binary('heating', ea.STATE, 'ON', 'OFF').withDescription('Device valve is open or closed (heating or not)'),
47
47
  exposes.climate()
48
48
  .withSetpoint('current_heating_setpoint', 5, 30, 0.5, ea.STATE_SET).withLocalTemperature(ea.STATE)
49
49
  .withSystemMode(['off', 'heat', 'auto'], ea.STATE_SET)
50
50
  // Range is -6 - 6 and step 1: https://github.com/Koenkk/zigbee2mqtt/issues/11777
51
- .withLocalTemperatureCalibration(-6, 6, 1, ea.STATE_SET)
52
- .withAwayMode()],
51
+ .withLocalTemperatureCalibration(-6, 6, 1, ea.STATE_SET)],
53
52
  },
54
53
  ];
package/devices/tuya.js CHANGED
@@ -466,7 +466,8 @@ module.exports = [
466
466
  {modelID: 'TS0505B', manufacturerName: '_TZ3210_qxenlrin'},
467
467
  {modelID: 'TS0505B', manufacturerName: '_TZ3210_iwbaamgh'},
468
468
  {modelID: 'TS0505B', manufacturerName: '_TZ3210_klv2wul0'},
469
- {modelID: 'TS0505B', manufacturerName: '_TZ3210_rcggc0ys'}],
469
+ {modelID: 'TS0505B', manufacturerName: '_TZ3210_rcggc0ys'},
470
+ {modelID: 'TS0505B', manufacturerName: '_TZ3210_s6zec0of'}],
470
471
  model: 'TS0505B',
471
472
  vendor: 'TuYa',
472
473
  description: 'Zigbee RGB+CCT light',
@@ -1359,7 +1360,7 @@ module.exports = [
1359
1360
  'to the desired temperature. If you want TRV to properly regulate the temperature you need to use mode `auto` ' +
1360
1361
  'instead setting the desired temperature.')
1361
1362
  .withLocalTemperatureCalibration(-9, 9, 1, ea.STATE_SET)
1362
- .withAwayMode().withPreset(['schedule', 'manual', 'boost', 'complex', 'comfort', 'eco'])
1363
+ .withPreset(['schedule', 'manual', 'boost', 'complex', 'comfort', 'eco'])
1363
1364
  .withRunningState(['idle', 'heat'], ea.STATE),
1364
1365
  e.auto_lock(), e.away_mode(), e.away_preset_days(), e.boost_time(), e.comfort_temperature(), e.eco_temperature(), e.force(),
1365
1366
  e.max_temperature(), e.min_temperature(), e.away_preset_temperature(),
@@ -1439,10 +1440,9 @@ module.exports = [
1439
1440
  weeklyScheduleFirstDayDpId: tuya.dataPoints.schedule,
1440
1441
  },
1441
1442
  },
1442
- exposes: [e.child_lock(), exposes.climate().withSetpoint('current_heating_setpoint', 5, 35, 0.5, ea.STATE_SET)
1443
+ exposes: [e.child_lock(), e.away_mode(), exposes.climate().withSetpoint('current_heating_setpoint', 5, 35, 0.5, ea.STATE_SET)
1443
1444
  .withLocalTemperature(ea.STATE)
1444
- .withSystemMode(['off', 'heat', 'auto'], ea.STATE_SET).withRunningState(['idle', 'heat'], ea.STATE)
1445
- .withAwayMode()],
1445
+ .withSystemMode(['off', 'heat', 'auto'], ea.STATE_SET).withRunningState(['idle', 'heat'], ea.STATE)],
1446
1446
  },
1447
1447
  {
1448
1448
  fingerprint: [{modelID: 'dpplnsn\u0000', manufacturerName: '_TYST11_2dpplnsn'},
@@ -1463,9 +1463,9 @@ module.exports = [
1463
1463
  },
1464
1464
  },
1465
1465
  exposes: [
1466
- e.battery_low(), e.child_lock(), exposes.climate()
1466
+ e.battery_low(), e.child_lock(), e.away_mode(), exposes.climate()
1467
1467
  .withSetpoint('current_heating_setpoint', 5, 35, 0.5, ea.STATE_SET)
1468
- .withLocalTemperature(ea.STATE).withAwayMode()
1468
+ .withLocalTemperature(ea.STATE)
1469
1469
  .withSystemMode(['off', 'heat', 'auto'], ea.STATE_SET).withRunningState(['idle', 'heat'], ea.STATE),
1470
1470
  ],
1471
1471
  },
@@ -2118,6 +2118,7 @@ module.exports = [
2118
2118
  fz.tuya_relay_din_led_indicator],
2119
2119
  toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory, tz.tuya_relay_din_led_indicator],
2120
2120
  whiteLabel: [{vendor: 'MatSee Plus', model: 'ATMS1602Z'}],
2121
+ ota: ota.zigbeeOTA,
2121
2122
  configure: async (device, coordinatorEndpoint, logger) => {
2122
2123
  const endpoint = device.getEndpoint(1);
2123
2124
  await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering']);
package/devices/woox.js CHANGED
@@ -52,6 +52,25 @@ const fzLocal = {
52
52
  return result;
53
53
  },
54
54
  },
55
+ woox_R7060: {
56
+ cluster: 'manuSpecificTuya',
57
+ type: ['commandActiveStatusReport'],
58
+ convert: (model, msg, publish, options, meta) => {
59
+ const dpValue = tuya.firstDpValue(msg, meta, 'woox_R7060');
60
+ const dp = dpValue.dp;
61
+ const value = tuya.getDataValue(dpValue);
62
+
63
+ switch (dp) {
64
+ case tuya.dataPoints.wooxSwitch:
65
+ return {state: value === 2 ? 'OFF' : 'ON'};
66
+ case 101:
67
+ return {battery: value};
68
+ default:
69
+ meta.logger.warn(`zigbee-herdsman-converters:WooxR7060: Unrecognized DP #${
70
+ dp} with data ${JSON.stringify(dpValue)}`);
71
+ }
72
+ },
73
+ },
55
74
  };
56
75
 
57
76
  const tzLocal = {
@@ -82,10 +101,10 @@ module.exports = [
82
101
  model: 'R7060',
83
102
  vendor: 'Woox',
84
103
  description: 'Smart garden irrigation control',
85
- fromZigbee: [fz.on_off, fz.ignore_tuya_set_time, fz.ignore_basic_report, fz.woox_R7060, fz.battery],
104
+ fromZigbee: [fz.on_off, fz.ignore_tuya_set_time, fz.ignore_basic_report, fzLocal.woox_R7060],
86
105
  toZigbee: [tz.on_off],
87
106
  onEvent: tuya.onEventSetTime,
88
- exposes: [e.switch(), e.battery(), e.battery_voltage()],
107
+ exposes: [e.switch(), e.battery()],
89
108
  meta: {disableDefaultResponse: true},
90
109
  },
91
110
  {
package/devices/xiaomi.js CHANGED
@@ -1324,9 +1324,10 @@ module.exports = [
1324
1324
  },
1325
1325
  {
1326
1326
  zigbeeModel: ['lumi.curtain.aq2'],
1327
- model: 'SRSC-M01',
1327
+ model: 'ZNGZDJ11LM',
1328
1328
  description: 'Aqara roller shade motor',
1329
1329
  vendor: 'Xiaomi',
1330
+ whiteLabel: [{vendor: 'Xiaomi', model: 'SRSC-M01'}],
1330
1331
  fromZigbee: [fz.xiaomi_basic, fz.xiaomi_curtain_position, fz.xiaomi_curtain_position_tilt],
1331
1332
  toZigbee: [tz.xiaomi_curtain_position_state, tz.xiaomi_curtain_options],
1332
1333
  exposes: [e.cover_position().setAccess('state', ea.ALL),
@@ -1360,6 +1361,7 @@ module.exports = [
1360
1361
  model: 'ZNJLBL01LM',
1361
1362
  description: 'Aqara roller shade companion E1',
1362
1363
  vendor: 'Xiaomi',
1364
+ whiteLabel: [{vendor: 'Xiaomi', model: 'RSD-M01'}],
1363
1365
  fromZigbee: [fz.xiaomi_curtain_position, fz.xiaomi_curtain_acn002_status, fz.ignore_basic_report, fz.aqara_opple],
1364
1366
  toZigbee: [tz.xiaomi_curtain_position_state, tz.xiaomi_curtain_acn002_battery, tz.xiaomi_curtain_acn002_charging_status],
1365
1367
  onEvent: async (type, data, device) => {
@@ -1386,9 +1388,11 @@ module.exports = [
1386
1388
  ota: ota.zigbeeOTA,
1387
1389
  },
1388
1390
  {
1389
- zigbeeModel: ['lumi.curtain.acn003'],
1391
+ // 'lumi.curtain.acn003' - CN version (ZNCLBL01LM), 'lumi.curtain.agl001' - global version (CM-M01)
1392
+ zigbeeModel: ['lumi.curtain.acn003', 'lumi.curtain.agl001'],
1390
1393
  model: 'ZNCLBL01LM',
1391
1394
  vendor: 'Xiaomi',
1395
+ whiteLabel: [{vendor: 'Xiaomi', model: 'CM-M01'}],
1392
1396
  description: 'Aqara curtain driver E1',
1393
1397
  fromZigbee: [fz.battery, fz.xiaomi_curtain_position_tilt, fz.aqara_opple, fz.power_source],
1394
1398
  toZigbee: [tz.xiaomi_curtain_position_state, tz.ZNCLBL01LM_battery_voltage, tz.ZNCLBL01LM_hooks_state,
@@ -1723,9 +1727,9 @@ module.exports = [
1723
1727
  },
1724
1728
  {
1725
1729
  zigbeeModel: ['lumi.remote.b28ac1'],
1726
- model: 'WRS-R02',
1730
+ model: 'WXKG15LM',
1727
1731
  vendor: 'Xiaomi',
1728
- whiteLabel: [{vendor: 'Xiaomi', model: 'WXKG15LM'}],
1732
+ whiteLabel: [{vendor: 'Xiaomi', model: 'WRS-R02'}],
1729
1733
  description: 'Aqara wireless remote switch H1 (double rocker)',
1730
1734
  fromZigbee: [fz.battery, fz.xiaomi_multistate_action, fz.aqara_opple, fz.command_toggle],
1731
1735
  toZigbee: [tz.xiaomi_switch_click_mode, tz.aqara_opple_operation_mode],
package/lib/exposes.js CHANGED
@@ -427,12 +427,6 @@ class Climate extends Base {
427
427
  return this;
428
428
  }
429
429
 
430
- withAwayMode() {
431
- assert(!this.endpoint, 'Cannot add feature after adding endpoint');
432
- this.features.push(new Binary('away_mode', access.STATE_SET, 'ON', 'OFF').withDescription('Away mode'));
433
- return this;
434
- }
435
-
436
430
  withPiHeatingDemand(access=a.STATE) {
437
431
  assert(!this.endpoint, 'Cannot add feature after adding endpoint');
438
432
  this.features.push(new Numeric('pi_heating_demand', access).withValueMin(0).withValueMax(100).withUnit('%').withDescription('Position of the valve (= demanded heat) where 0% is fully closed and 100% is fully open'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.546",
3
+ "version": "14.0.549",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [