zigbee-herdsman-converters 15.0.75 → 15.0.77
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 +1 -1
- package/converters/toZigbee.js +4 -4
- package/devices/bosch.js +73 -0
- package/devices/lidl.js +12 -3
- package/devices/namron.js +14 -0
- package/devices/nue_3a.js +19 -0
- package/devices/owon.js +18 -0
- package/devices/philips.js +1 -1
- package/devices/schneider_electric.js +1 -1
- package/devices/tuya.js +11 -0
- package/devices/viessmann.js +1 -0
- package/devices/woox.js +3 -2
- package/devices/xiaomi.js +42 -0
- package/package.json +2 -2
package/converters/fromZigbee.js
CHANGED
|
@@ -5379,7 +5379,7 @@ const converters = {
|
|
|
5379
5379
|
if (['QBKG39LM', 'QBKG41LM', 'WS-EUK02', 'WS-EUK04', 'QBKG20LM', 'QBKG28LM', 'QBKG31LM'].includes(model.model)) {
|
|
5380
5380
|
buttonLookup = {41: 'left', 42: 'right', 51: 'both'};
|
|
5381
5381
|
}
|
|
5382
|
-
if (['QBKG25LM', 'QBKG26LM', 'QBKG34LM', 'ZNQBKG31LM'].includes(model.model)) {
|
|
5382
|
+
if (['QBKG25LM', 'QBKG26LM', 'QBKG29LM', 'QBKG34LM', 'ZNQBKG31LM'].includes(model.model)) {
|
|
5383
5383
|
buttonLookup = {
|
|
5384
5384
|
41: 'left', 42: 'center', 43: 'right',
|
|
5385
5385
|
51: 'left_center', 52: 'left_right', 53: 'center_right',
|
package/converters/toZigbee.js
CHANGED
|
@@ -2217,7 +2217,7 @@ const converters = {
|
|
|
2217
2217
|
key: ['power_outage_memory'],
|
|
2218
2218
|
convertSet: async (entity, key, value, meta) => {
|
|
2219
2219
|
if (['SP-EUC01', 'ZNCZ04LM', 'ZNCZ12LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'SSM-U01', 'SSM-U02', 'DLKZMK11LM', 'DLKZMK12LM',
|
|
2220
|
-
'WS-EUK01', 'WS-EUK02', 'WS-EUK03', 'WS-EUK04', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM', 'QBKG28LM',
|
|
2220
|
+
'WS-EUK01', 'WS-EUK02', 'WS-EUK03', 'WS-EUK04', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM', 'QBKG28LM', 'QBKG29LM',
|
|
2221
2221
|
'QBKG31LM', 'QBKG34LM', 'QBKG38LM', 'QBKG39LM', 'QBKG40LM', 'QBKG41LM', 'ZNDDMK11LM', 'ZNLDP13LM',
|
|
2222
2222
|
'WS-USC02', 'WS-USC04', 'ZNQBKG31LM',
|
|
2223
2223
|
].includes(meta.mapped.model)) {
|
|
@@ -2242,7 +2242,7 @@ const converters = {
|
|
|
2242
2242
|
},
|
|
2243
2243
|
convertGet: async (entity, key, meta) => {
|
|
2244
2244
|
if (['SP-EUC01', 'ZNCZ04LM', 'ZNCZ12LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'SSM-U01', 'SSM-U02', 'DLKZMK11LM', 'DLKZMK12LM',
|
|
2245
|
-
'WS-EUK01', 'WS-EUK02', 'WS-EUK03', 'WS-EUK04', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM', 'QBKG28LM',
|
|
2245
|
+
'WS-EUK01', 'WS-EUK02', 'WS-EUK03', 'WS-EUK04', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM', 'QBKG28LM', 'QBKG29LM',
|
|
2246
2246
|
'QBKG31LM', 'QBKG34LM', 'QBKG38LM', 'QBKG39LM', 'QBKG40LM', 'QBKG41LM', 'ZNDDMK11LM', 'ZNLDP13LM',
|
|
2247
2247
|
'WS-USC02', 'WS-USC04', 'ZNQBKG31LM',
|
|
2248
2248
|
].includes(meta.mapped.model)) {
|
|
@@ -2362,7 +2362,7 @@ const converters = {
|
|
|
2362
2362
|
key: ['led_disabled_night'],
|
|
2363
2363
|
convertSet: async (entity, key, value, meta) => {
|
|
2364
2364
|
if (['ZNCZ04LM', 'ZNCZ12LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
|
|
2365
|
-
'QBKG28LM', 'QBKG31LM', 'QBKG34LM', 'DLKZMK11LM', 'SSM-U01', 'WS-EUK01', 'WS-EUK02',
|
|
2365
|
+
'QBKG28LM', 'QBKG29LM', 'QBKG31LM', 'QBKG34LM', 'DLKZMK11LM', 'SSM-U01', 'WS-EUK01', 'WS-EUK02',
|
|
2366
2366
|
'WS-EUK03', 'WS-EUK04', 'SP-EUC01'].includes(meta.mapped.model)) {
|
|
2367
2367
|
await entity.write('aqaraOpple', {0x0203: {value: value ? 1 : 0, type: 0x10}}, manufacturerOptions.xiaomi);
|
|
2368
2368
|
} else if (['ZNCZ11LM'].includes(meta.mapped.model)) {
|
|
@@ -2378,7 +2378,7 @@ const converters = {
|
|
|
2378
2378
|
},
|
|
2379
2379
|
convertGet: async (entity, key, meta) => {
|
|
2380
2380
|
if (['ZNCZ04LM', 'ZNCZ12LM', 'ZNCZ15LM', 'QBCZ15LM', 'QBCZ14LM', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
|
|
2381
|
-
'QBKG28LM', 'QBKG31LM', 'QBKG34LM', 'DLKZMK11LM', 'SSM-U01', 'WS-EUK01', 'WS-EUK02',
|
|
2381
|
+
'QBKG28LM', 'QBKG29LM', 'QBKG31LM', 'QBKG34LM', 'DLKZMK11LM', 'SSM-U01', 'WS-EUK01', 'WS-EUK02',
|
|
2382
2382
|
'WS-EUK03', 'WS-EUK04', 'SP-EUC01'].includes(meta.mapped.model)) {
|
|
2383
2383
|
await entity.read('aqaraOpple', [0x0203], manufacturerOptions.xiaomi);
|
|
2384
2384
|
} else {
|
package/devices/bosch.js
CHANGED
|
@@ -48,6 +48,26 @@ const displayOrientation = {
|
|
|
48
48
|
|
|
49
49
|
// Radiator Thermostat II
|
|
50
50
|
const tzLocal = {
|
|
51
|
+
bwa1: {
|
|
52
|
+
key: ['alarm_on_motion', 'test'],
|
|
53
|
+
convertSet: async (entity, key, value, meta) => {
|
|
54
|
+
if (key === 'alarm_on_motion') {
|
|
55
|
+
value = value.toUpperCase();
|
|
56
|
+
const index = stateOffOn[value];
|
|
57
|
+
await entity.write(0xFCAC, {0x0003: {value: index, type: 0x10}}, boschManufacturer);
|
|
58
|
+
return {state: {alarm_on_motion: value}};
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
convertGet: async (entity, key, meta) => {
|
|
62
|
+
switch (key) {
|
|
63
|
+
case 'alarm_on_motion':
|
|
64
|
+
await entity.read(0xFCAC, [0x0003], boschManufacturer);
|
|
65
|
+
break;
|
|
66
|
+
default: // Unknown key
|
|
67
|
+
throw new Error(`Unhandled key toZigbee.bosch_twinguard.convertGet ${key}`);
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
},
|
|
51
71
|
bosch_thermostat: {
|
|
52
72
|
key: ['window_open', 'boost', 'system_mode', 'pi_heating_demand'],
|
|
53
73
|
convertSet: async (entity, key, value, meta) => {
|
|
@@ -212,6 +232,19 @@ const tzLocal = {
|
|
|
212
232
|
|
|
213
233
|
|
|
214
234
|
const fzLocal = {
|
|
235
|
+
bwa1_alarm_on_motion: {
|
|
236
|
+
cluster: '64684',
|
|
237
|
+
type: ['attributeReport', 'readResponse'],
|
|
238
|
+
options: [],
|
|
239
|
+
convert: (model, msg, publish, options, meta) => {
|
|
240
|
+
const result = {};
|
|
241
|
+
const data = msg.data;
|
|
242
|
+
if (data.hasOwnProperty(0x0003)) {
|
|
243
|
+
result.alarm_on_motion = (Object.keys(stateOffOn)[msg.data[0x0003]]);
|
|
244
|
+
}
|
|
245
|
+
return result;
|
|
246
|
+
},
|
|
247
|
+
},
|
|
215
248
|
bosch_contact: {
|
|
216
249
|
cluster: 'ssIasZone',
|
|
217
250
|
type: 'commandStatusChangeNotification',
|
|
@@ -396,6 +429,46 @@ const fzLocal = {
|
|
|
396
429
|
};
|
|
397
430
|
|
|
398
431
|
const definition = [
|
|
432
|
+
{
|
|
433
|
+
zigbeeModel: ['RBSH-WS-ZB-EU'],
|
|
434
|
+
model: 'BWA-1',
|
|
435
|
+
vendor: 'Bosch',
|
|
436
|
+
description: 'Zigbee smart water leak detector',
|
|
437
|
+
fromZigbee: [fz.ias_water_leak_alarm_1, fz.battery, fzLocal.bwa1_alarm_on_motion],
|
|
438
|
+
toZigbee: [tzLocal.bwa1],
|
|
439
|
+
meta: {battery: {voltageToPercentage: '3V_2500'}},
|
|
440
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
441
|
+
const endpoint = device.getEndpoint(1);
|
|
442
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', '64684']);
|
|
443
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
444
|
+
await reporting.batteryVoltage(endpoint);
|
|
445
|
+
await endpoint.configureReporting(0xFCAC, [{
|
|
446
|
+
attribute: {ID: 0x0003, type: herdsman.Zcl.DataType.bool},
|
|
447
|
+
minimumReportInterval: 0,
|
|
448
|
+
maximumReportInterval: constants.repInterval.HOUR,
|
|
449
|
+
reportableChange: 1,
|
|
450
|
+
}], boschManufacturer);
|
|
451
|
+
},
|
|
452
|
+
exposes: [
|
|
453
|
+
e.water_leak(), e.battery(), e.tamper(),
|
|
454
|
+
exposes.binary('alarm_on_motion', ea.ALL, 'ON', 'OFF').withDescription('Enable/Disable sound alarm on motion'),
|
|
455
|
+
],
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
zigbeeModel: ['RBSH-SD-ZB-EU'],
|
|
459
|
+
model: 'BSD-2',
|
|
460
|
+
vendor: 'Bosch',
|
|
461
|
+
description: 'Smoke alarm detector',
|
|
462
|
+
fromZigbee: [fz.battery, fz.ias_smoke_alarm_1],
|
|
463
|
+
toZigbee: [],
|
|
464
|
+
meta: {},
|
|
465
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
466
|
+
const endpoint = device.getEndpoint(1);
|
|
467
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 64684]);
|
|
468
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
469
|
+
},
|
|
470
|
+
exposes: [e.smoke(), e.battery(), e.battery_low(), e.test()],
|
|
471
|
+
},
|
|
399
472
|
{
|
|
400
473
|
zigbeeModel: ['RFDL-ZB', 'RFDL-ZB-EU', 'RFDL-ZB-H', 'RFDL-ZB-K', 'RFDL-ZB-CHI', 'RFDL-ZB-MS', 'RFDL-ZB-ES', 'RFPR-ZB',
|
|
401
474
|
'RFPR-ZB-EU', 'RFPR-ZB-CHI', 'RFPR-ZB-ES', 'RFPR-ZB-MS'],
|
package/devices/lidl.js
CHANGED
|
@@ -836,9 +836,18 @@ module.exports = [
|
|
|
836
836
|
},
|
|
837
837
|
},
|
|
838
838
|
{
|
|
839
|
-
fingerprint: [{modelID: 'TS0505A', manufacturerName: '_TZ3000_gek6snaj'},
|
|
840
|
-
|
|
841
|
-
|
|
839
|
+
fingerprint: [{modelID: 'TS0505A', manufacturerName: '_TZ3000_gek6snaj'}],
|
|
840
|
+
model: '14149505L/14149506L_1',
|
|
841
|
+
vendor: 'Lidl',
|
|
842
|
+
description: 'Livarno Lux light bar RGB+CCT (black/white)',
|
|
843
|
+
extend: tuya.extend.light_onoff_brightness_colortemp_color({noConfigure: true}),
|
|
844
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
845
|
+
device.getEndpoint(1).saveClusterAttributeKeyValue('lightingColorCtrl', {colorCapabilities: 29});
|
|
846
|
+
},
|
|
847
|
+
},
|
|
848
|
+
{
|
|
849
|
+
fingerprint: [{modelID: 'TS0505B', manufacturerName: '_TZ3210_iystcadi'}],
|
|
850
|
+
model: '14149505L/14149506L_2',
|
|
842
851
|
vendor: 'Lidl',
|
|
843
852
|
description: 'Livarno Lux light bar RGB+CCT (black/white)',
|
|
844
853
|
toZigbee: [tz.on_off, tzLocal.led_control],
|
package/devices/namron.js
CHANGED
|
@@ -757,4 +757,18 @@ module.exports = [
|
|
|
757
757
|
await reporting.activePower(endpoint);
|
|
758
758
|
},
|
|
759
759
|
},
|
|
760
|
+
{
|
|
761
|
+
zigbeeModel: ['4512747'],
|
|
762
|
+
model: '4512747',
|
|
763
|
+
vendor: 'Namron',
|
|
764
|
+
description: 'Curtain motor controller',
|
|
765
|
+
fromZigbee: [fz.cover_position_tilt],
|
|
766
|
+
toZigbee: [tz.cover_state, tz.cover_position_tilt],
|
|
767
|
+
exposes: [e.cover_position()],
|
|
768
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
769
|
+
const endpoint = device.getEndpoint(1);
|
|
770
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['closuresWindowCovering']);
|
|
771
|
+
await reporting.currentPositionLiftPercentage(endpoint);
|
|
772
|
+
},
|
|
773
|
+
},
|
|
760
774
|
];
|
package/devices/nue_3a.js
CHANGED
|
@@ -122,6 +122,25 @@ module.exports = [
|
|
|
122
122
|
await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
|
|
123
123
|
},
|
|
124
124
|
},
|
|
125
|
+
{
|
|
126
|
+
zigbeeModel: ['LXN-4S27LX1.0'],
|
|
127
|
+
model: 'HGZB-4S',
|
|
128
|
+
vendor: 'Nue / 3A',
|
|
129
|
+
description: 'Smart light switch - 4 gang v2.0',
|
|
130
|
+
extend: extend.switch(),
|
|
131
|
+
exposes: [
|
|
132
|
+
e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2'), e.switch().withEndpoint('l3'), e.switch().withEndpoint('l4')],
|
|
133
|
+
endpoint: (device) => {
|
|
134
|
+
return {'l1': 1, 'l2': 2, 'l3': 3, 'l4': 4};
|
|
135
|
+
},
|
|
136
|
+
meta: {multiEndpoint: true},
|
|
137
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
138
|
+
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
|
|
139
|
+
await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
|
|
140
|
+
await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
|
|
141
|
+
await reporting.bind(device.getEndpoint(4), coordinatorEndpoint, ['genOnOff']);
|
|
142
|
+
},
|
|
143
|
+
},
|
|
125
144
|
{
|
|
126
145
|
zigbeeModel: ['FB56+ZSW1IKJ1.7', 'FB56+ZSW1IKJ2.5', 'FB56+ZSW1IKJ2.7'],
|
|
127
146
|
model: 'HGZB-043',
|
package/devices/owon.js
CHANGED
|
@@ -105,6 +105,24 @@ module.exports = [
|
|
|
105
105
|
change: [10, 10]}); // divider 1000: 0,01kWh
|
|
106
106
|
},
|
|
107
107
|
},
|
|
108
|
+
{
|
|
109
|
+
zigbeeModel: ['WSP403-E'],
|
|
110
|
+
model: 'WSP403',
|
|
111
|
+
vendor: 'OWON',
|
|
112
|
+
description: 'Smart plug',
|
|
113
|
+
fromZigbee: [fz.on_off, fz.metering],
|
|
114
|
+
toZigbee: [tz.on_off],
|
|
115
|
+
exposes: [e.switch(), e.power(), e.energy()],
|
|
116
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
117
|
+
const endpoint = device.getEndpoint(1);
|
|
118
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
|
|
119
|
+
await reporting.onOff(endpoint);
|
|
120
|
+
await reporting.readMeteringMultiplierDivisor(endpoint);
|
|
121
|
+
await reporting.instantaneousDemand(endpoint, {min: 5, max: constants.repInterval.MINUTES_5, change: 2}); // divider 1000: 2W
|
|
122
|
+
await reporting.currentSummDelivered(endpoint, {min: 5, max: constants.repInterval.MINUTES_5,
|
|
123
|
+
change: [10, 10]}); // divider 1000: 0,01kWh
|
|
124
|
+
},
|
|
125
|
+
},
|
|
108
126
|
{
|
|
109
127
|
zigbeeModel: ['WSP404'],
|
|
110
128
|
model: 'WSP404',
|
package/devices/philips.js
CHANGED
|
@@ -620,7 +620,7 @@ module.exports = [
|
|
|
620
620
|
extend: philips.extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
621
621
|
},
|
|
622
622
|
{
|
|
623
|
-
zigbeeModel: ['LWA003', 'LWW002'],
|
|
623
|
+
zigbeeModel: ['LWA003', 'LWW002', 'LWA025'],
|
|
624
624
|
model: '9290022268',
|
|
625
625
|
vendor: 'Philips',
|
|
626
626
|
description: 'Hue White A19 bulb with Bluetooth',
|
|
@@ -279,7 +279,7 @@ module.exports = [
|
|
|
279
279
|
model: 'CCT5011-0001/CCT5011-0002/MEG5011-0001',
|
|
280
280
|
vendor: 'Schneider Electric',
|
|
281
281
|
description: 'Micro module switch',
|
|
282
|
-
extend: extend.switch(),
|
|
282
|
+
extend: extend.switch({disablePowerOnBehavior: true}),
|
|
283
283
|
whiteLabel: [{vendor: 'Elko', model: 'EKO07144'}],
|
|
284
284
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
285
285
|
const endpoint = device.getEndpoint(1);
|
package/devices/tuya.js
CHANGED
|
@@ -3372,6 +3372,7 @@ module.exports = [
|
|
|
3372
3372
|
{modelID: 'TS0210', manufacturerName: '_TYZB01_kulduhbj'},
|
|
3373
3373
|
{modelID: 'TS0210', manufacturerName: '_TYZB01_cc3jzhlj'},
|
|
3374
3374
|
{modelID: 'TS0210', manufacturerName: '_TZ3000_bmfw9ykl'},
|
|
3375
|
+
{modelID: 'TS0210', manufacturerName: '_TYZB01_geigpsy4'},
|
|
3375
3376
|
{modelID: 'TS0210', manufacturerName: '_TZ3000_fkxmyics'}],
|
|
3376
3377
|
model: 'TS0210',
|
|
3377
3378
|
vendor: 'TuYa',
|
|
@@ -4150,4 +4151,14 @@ module.exports = [
|
|
|
4150
4151
|
.withDescription('Volume of the alarm'),
|
|
4151
4152
|
],
|
|
4152
4153
|
},
|
|
4154
|
+
{
|
|
4155
|
+
fingerprint: tuya.fingerprint('TS0041', ['_TZ3000_fa9mlvja']),
|
|
4156
|
+
model: 'IH-K663',
|
|
4157
|
+
vendor: 'TuYa',
|
|
4158
|
+
description: 'Smart button',
|
|
4159
|
+
exposes: [e.battery(), e.battery_voltage(), e.action(['single', 'double'])],
|
|
4160
|
+
fromZigbee: [fz.tuya_on_off_action, fz.battery],
|
|
4161
|
+
toZigbee: [],
|
|
4162
|
+
configure: tuya.configureMagicPacket,
|
|
4163
|
+
},
|
|
4153
4164
|
];
|
package/devices/viessmann.js
CHANGED
|
@@ -24,6 +24,7 @@ module.exports = [
|
|
|
24
24
|
exposes.binary('window_open_force', ea.ALL, true, false)
|
|
25
25
|
.withDescription('Manually set window_open, ~1 minute to take affect.'),
|
|
26
26
|
e.keypad_lockout(),
|
|
27
|
+
e.battery(),
|
|
27
28
|
],
|
|
28
29
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
29
30
|
const endpoint = device.getEndpoint(1);
|
package/devices/woox.js
CHANGED
|
@@ -160,10 +160,11 @@ module.exports = [
|
|
|
160
160
|
vendor: 'Woox',
|
|
161
161
|
description: 'Smart siren',
|
|
162
162
|
fromZigbee: [fz.battery, fz.ts0216_siren, fz.ias_alarm_only_alarm_1, fz.power_source],
|
|
163
|
-
toZigbee: [tz.warning, tz.ts0216_volume],
|
|
163
|
+
toZigbee: [tz.warning, tz.ts0216_volume, tz.ts0216_duration],
|
|
164
164
|
exposes: [e.battery(), e.battery_voltage(), e.warning(), exposes.binary('alarm', ea.STATE, true, false),
|
|
165
165
|
exposes.binary('ac_connected', ea.STATE, true, false).withDescription('Is the device plugged in'),
|
|
166
|
-
exposes.numeric('volume', ea.ALL).withValueMin(0).withValueMax(100).withDescription('Volume of siren')
|
|
166
|
+
exposes.numeric('volume', ea.ALL).withValueMin(0).withValueMax(100).withDescription('Volume of siren'),
|
|
167
|
+
exposes.numeric('duration', ea.ALL).withValueMin(0).withValueMax(3600).withDescription('Duration of siren')],
|
|
167
168
|
meta: {disableDefaultResponse: true},
|
|
168
169
|
configure: async (device, coordinatorEndpoint) => {
|
|
169
170
|
const endpoint = device.getEndpoint(1);
|
package/devices/xiaomi.js
CHANGED
|
@@ -1175,6 +1175,48 @@ module.exports = [
|
|
|
1175
1175
|
await device.getEndpoint(1).write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
|
|
1176
1176
|
},
|
|
1177
1177
|
},
|
|
1178
|
+
{
|
|
1179
|
+
zigbeeModel: ['lumi.switch.l3acn1'],
|
|
1180
|
+
model: 'QBKG29LM',
|
|
1181
|
+
vendor: 'Xiaomi',
|
|
1182
|
+
description: 'Aqara smart wall switch H1 EU (no neutral, triple rocker)',
|
|
1183
|
+
fromZigbee: [fz.on_off, fz.xiaomi_multistate_action, fz.aqara_opple],
|
|
1184
|
+
toZigbee: [tz.on_off, tz.xiaomi_switch_operation_mode_opple, tz.xiaomi_switch_power_outage_memory,
|
|
1185
|
+
tz.xiaomi_flip_indicator_light, tz.xiaomi_led_disabled_night, tz.aqara_switch_mode_switch],
|
|
1186
|
+
meta: {multiEndpoint: true},
|
|
1187
|
+
endpoint: (device) => ({left: 1, center: 2, right: 3}),
|
|
1188
|
+
exposes: [
|
|
1189
|
+
e.switch().withEndpoint('left'), e.switch().withEndpoint('center'), e.switch().withEndpoint('right'),
|
|
1190
|
+
e.power_outage_memory(), e.flip_indicator_light(), e.led_disabled_night(), e.power_outage_count(),
|
|
1191
|
+
exposes
|
|
1192
|
+
.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled'])
|
|
1193
|
+
.withDescription('Decoupled mode for left button')
|
|
1194
|
+
.withEndpoint('left'),
|
|
1195
|
+
exposes
|
|
1196
|
+
.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled'])
|
|
1197
|
+
.withDescription('Decoupled mode for center button')
|
|
1198
|
+
.withEndpoint('center'),
|
|
1199
|
+
exposes
|
|
1200
|
+
.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled'])
|
|
1201
|
+
.withDescription('Decoupled mode for right button')
|
|
1202
|
+
.withEndpoint('right'),
|
|
1203
|
+
exposes
|
|
1204
|
+
.enum('mode_switch', ea.ALL, ['anti_flicker_mode', 'quick_mode'])
|
|
1205
|
+
.withDescription(
|
|
1206
|
+
'Anti flicker mode can be used to solve blinking issues of some lights.' +
|
|
1207
|
+
'Quick mode makes the device respond faster.'),
|
|
1208
|
+
e.device_temperature().withAccess(ea.STATE),
|
|
1209
|
+
e.action([
|
|
1210
|
+
'single_left', 'double_left', 'single_center', 'double_center', 'single_right', 'double_right',
|
|
1211
|
+
'single_left_center', 'double_left_center', 'single_left_right', 'double_left_right',
|
|
1212
|
+
'single_center_right', 'double_center_right', 'single_all', 'double_all',
|
|
1213
|
+
]),
|
|
1214
|
+
],
|
|
1215
|
+
onEvent: preventReset,
|
|
1216
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1217
|
+
await device.getEndpoint(1).write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
|
|
1218
|
+
},
|
|
1219
|
+
},
|
|
1178
1220
|
{
|
|
1179
1221
|
zigbeeModel: ['lumi.switch.n1aeu1'],
|
|
1180
1222
|
model: 'WS-EUK03',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zigbee-herdsman-converters",
|
|
3
|
-
"version": "15.0.
|
|
3
|
+
"version": "15.0.77",
|
|
4
4
|
"description": "Collection of device converters to be used with zigbee-herdsman",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"files": [
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"buffer-crc32": "^0.2.13",
|
|
39
39
|
"https-proxy-agent": "^5.0.1",
|
|
40
40
|
"tar-stream": "^3.0.0",
|
|
41
|
-
"zigbee-herdsman": "^0.14.
|
|
41
|
+
"zigbee-herdsman": "^0.14.100"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"eslint": "*",
|