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.
- package/converters/fromZigbee.js +3 -19
- package/devices/connecte.js +1 -1
- package/devices/ikea.js +2 -2
- package/devices/immax.js +2 -2
- package/devices/niko.js +14 -0
- package/devices/philips.js +19 -1
- package/devices/saswell.js +2 -3
- package/devices/tuya.js +8 -7
- package/devices/woox.js +21 -2
- package/devices/xiaomi.js +8 -4
- package/lib/exposes.js +0 -6
- package/package.json +1 -1
package/converters/fromZigbee.js
CHANGED
|
@@ -5655,8 +5655,9 @@ const converters = {
|
|
|
5655
5655
|
}
|
|
5656
5656
|
|
|
5657
5657
|
let buttonLookup = null;
|
|
5658
|
-
if (['WXKG02LM_rev2', 'WXKG07LM', 'WXKG15LM', 'WXKG17LM'
|
|
5659
|
-
|
|
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'],
|
package/devices/connecte.js
CHANGED
|
@@ -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)
|
|
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
|
];
|
package/devices/philips.js
CHANGED
|
@@ -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.
|
|
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',
|
package/devices/saswell.js
CHANGED
|
@@ -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
|
-
.
|
|
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)
|
|
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,
|
|
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()
|
|
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: '
|
|
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
|
-
|
|
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: '
|
|
1730
|
+
model: 'WXKG15LM',
|
|
1727
1731
|
vendor: 'Xiaomi',
|
|
1728
|
-
whiteLabel: [{vendor: 'Xiaomi', model: '
|
|
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'));
|