zigbee-herdsman-converters 14.0.668 → 14.0.669
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/toZigbee.js +2 -1
- package/devices/connecte.js +1 -5
- package/devices/ecosmart.js +1 -1
- package/devices/fantem.js +1 -1
- package/devices/ge.js +7 -3
- package/devices/legrand.js +21 -4
- package/devices/lellki.js +3 -5
- package/devices/lidl.js +1 -2
- package/devices/makegood.js +2 -1
- package/devices/mecrator.js +2 -1
- package/devices/miboxer.js +1 -1
- package/devices/moes.js +1 -2
- package/devices/neo.js +1 -1
- package/devices/philips.js +7 -0
- package/devices/tuya.js +10 -8
- package/devices/useelink.js +2 -2
- package/devices/woox.js +1 -4
- package/devices/zemismart.js +4 -8
- package/lib/tuya.js +1 -1
- package/package.json +1 -1
package/converters/toZigbee.js
CHANGED
|
@@ -1370,6 +1370,7 @@ const converters = {
|
|
|
1370
1370
|
}
|
|
1371
1371
|
const unoccupiedHeatingSetpoint = result;
|
|
1372
1372
|
await entity.write('hvacThermostat', {unoccupiedHeatingSetpoint});
|
|
1373
|
+
return {state: {unoccupied_heating_setpoint: value}};
|
|
1373
1374
|
},
|
|
1374
1375
|
convertGet: async (entity, key, meta) => {
|
|
1375
1376
|
await entity.read('hvacThermostat', ['unoccupiedHeatingSetpoint']);
|
|
@@ -1405,7 +1406,7 @@ const converters = {
|
|
|
1405
1406
|
}
|
|
1406
1407
|
const unoccupiedCoolingSetpoint = result;
|
|
1407
1408
|
await entity.write('hvacThermostat', {unoccupiedCoolingSetpoint});
|
|
1408
|
-
return {state: {
|
|
1409
|
+
return {state: {unoccupied_cooling_setpoint: value}};
|
|
1409
1410
|
},
|
|
1410
1411
|
convertGet: async (entity, key, meta) => {
|
|
1411
1412
|
await entity.read('hvacThermostat', ['unoccupiedCoolingSetpoint']);
|
package/devices/connecte.js
CHANGED
|
@@ -14,11 +14,7 @@ module.exports = [
|
|
|
14
14
|
fromZigbee: [fz.connecte_thermostat],
|
|
15
15
|
toZigbee: [tz.connecte_thermostat],
|
|
16
16
|
onEvent: tuya.onEventSetTime,
|
|
17
|
-
configure:
|
|
18
|
-
const endpoint = device.getEndpoint(1);
|
|
19
|
-
// Do a "magic" read on the basic cluster to trigger the thermostat start reporting.
|
|
20
|
-
await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
21
|
-
},
|
|
17
|
+
configure: tuya.configureMagicPacket,
|
|
22
18
|
exposes: [
|
|
23
19
|
exposes.binary('state', ea.STATE_SET, 'ON', 'OFF')
|
|
24
20
|
.withDescription('On/off state of the switch'),
|
package/devices/ecosmart.js
CHANGED
|
@@ -47,7 +47,7 @@ module.exports = [
|
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
// eslint-disable-next-line
|
|
50
|
-
zigbeeModel: ['\u0000\u0002\u0000\u0004\u0000\f]�\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e', '\u0000\u0002\u0000\u0004\"�T\u0004\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e', '\u0000\u0002\u0000\u0004\u0000\f^�\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e','\u0000\u0002\u0000\u0004\u0011�\"�\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e','\u0000\u0002\u0000\u0004� �P\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e','\u0000\u0002\u0000\u0004\u0000\f^\u0014\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e'],
|
|
50
|
+
zigbeeModel: ['\u0000\u0002\u0000\u0004T\u0002\u000eZ\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e', '\u0000\u0002\u0000\u0004\u0000\f]�\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e', '\u0000\u0002\u0000\u0004\"�T\u0004\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e', '\u0000\u0002\u0000\u0004\u0000\f^�\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e','\u0000\u0002\u0000\u0004\u0011�\"�\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e','\u0000\u0002\u0000\u0004� �P\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e','\u0000\u0002\u0000\u0004\u0000\f^\u0014\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e'],
|
|
51
51
|
model: 'D1533',
|
|
52
52
|
vendor: 'EcoSmart',
|
|
53
53
|
description: 'PAR20/A19 bright white bulb',
|
package/devices/fantem.js
CHANGED
|
@@ -42,7 +42,7 @@ module.exports = [
|
|
|
42
42
|
const endpoint = device.getEndpoint(1);
|
|
43
43
|
// Enables reporting of physical state changes
|
|
44
44
|
// https://github.com/Koenkk/zigbee2mqtt/issues/9057#issuecomment-1007742130
|
|
45
|
-
await
|
|
45
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
46
46
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
|
|
47
47
|
},
|
|
48
48
|
},
|
package/devices/ge.js
CHANGED
|
@@ -61,11 +61,15 @@ module.exports = [
|
|
|
61
61
|
model: '45856GE',
|
|
62
62
|
vendor: 'GE',
|
|
63
63
|
description: 'In-wall smart switch',
|
|
64
|
-
|
|
64
|
+
fromZigbee: [fz.on_off, fz.metering],
|
|
65
|
+
toZigbee: [tz.on_off],
|
|
66
|
+
exposes: [e.switch(), e.energy(), e.power()],
|
|
65
67
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
66
68
|
const endpoint = device.getEndpoint(1);
|
|
67
|
-
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
|
68
|
-
await reporting.
|
|
69
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
|
|
70
|
+
await reporting.instantaneousDemand(endpoint);
|
|
71
|
+
await reporting.currentSummDelivered(endpoint);
|
|
72
|
+
endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 10000, multiplier: 1});
|
|
69
73
|
},
|
|
70
74
|
},
|
|
71
75
|
{
|
package/devices/legrand.js
CHANGED
|
@@ -15,6 +15,18 @@ const readInitialBatteryState = async (type, data, device) => {
|
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
+
const tzLocal = {
|
|
19
|
+
auto_mode: {
|
|
20
|
+
key: ['auto_mode'],
|
|
21
|
+
convertSet: async (entity, key, value, meta) => {
|
|
22
|
+
const mode = {'off': 0x00, 'auto': 0x02, 'on_override': 0x03};
|
|
23
|
+
const payload = {data: Buffer.from([mode[value]])};
|
|
24
|
+
await entity.command('manuSpecificLegrandDevices3', 'command0', payload);
|
|
25
|
+
return {state: {'auto_mode': value}};
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
18
30
|
module.exports = [
|
|
19
31
|
{
|
|
20
32
|
zigbeeModel: [' Dry contact\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000'+
|
|
@@ -46,16 +58,20 @@ module.exports = [
|
|
|
46
58
|
vendor: 'Legrand',
|
|
47
59
|
extend: extend.switch(),
|
|
48
60
|
fromZigbee: [fz.identify, fz.on_off, fz.electrical_measurement, fz.legrand_cluster_fc01, fz.ignore_basic_report, fz.ignore_genOta],
|
|
49
|
-
toZigbee: [tz.legrand_deviceMode, tz.on_off, tz.legrand_identify, tz.electrical_measurement_power],
|
|
61
|
+
toZigbee: [tz.legrand_deviceMode, tz.on_off, tz.legrand_identify, tz.electrical_measurement_power, tzLocal.auto_mode],
|
|
50
62
|
exposes: [exposes.switch().withState('state', true, 'On/off (works only if device is in "switch" mode)'),
|
|
51
|
-
e.power().withAccess(ea.STATE_GET),
|
|
52
|
-
|
|
63
|
+
e.power().withAccess(ea.STATE_GET),
|
|
64
|
+
exposes.enum('device_mode', ea.ALL, ['switch', 'auto'])
|
|
65
|
+
.withDescription('Switch: allow manual on/off, auto uses contact\'s C1/C2 wired actions for Peak/Off-Peak ' +
|
|
66
|
+
'electricity rates'),
|
|
67
|
+
exposes.enum('auto_mode', ea.STATE_SET, ['off', 'auto', 'on_override'])
|
|
68
|
+
.withDescription('Off/auto/on (override) (works only if device is set to "auto" mode)')],
|
|
53
69
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
54
70
|
const endpoint = device.getEndpoint(1);
|
|
55
71
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genIdentify', 'genOnOff', 'haElectricalMeasurement']);
|
|
56
72
|
await reporting.onOff(endpoint);
|
|
57
|
-
await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
|
|
58
73
|
await reporting.activePower(endpoint);
|
|
74
|
+
await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
|
|
59
75
|
},
|
|
60
76
|
},
|
|
61
77
|
{
|
|
@@ -238,6 +254,7 @@ module.exports = [
|
|
|
238
254
|
ota: ota.zigbeeOTA,
|
|
239
255
|
fromZigbee: [fz.identify, fz.on_off],
|
|
240
256
|
toZigbee: [tz.on_off, tz.legrand_identify],
|
|
257
|
+
whiteLabel: [{vendor: 'Bticino', model: '3584C'}],
|
|
241
258
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
242
259
|
const endpoint = device.getEndpoint(1);
|
|
243
260
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genBinaryInput']);
|
package/devices/lellki.js
CHANGED
|
@@ -23,9 +23,7 @@ module.exports = [
|
|
|
23
23
|
return {l1: 1, l2: 2, l3: 3, l4: 4, l5: 5};
|
|
24
24
|
},
|
|
25
25
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
26
|
-
await
|
|
27
|
-
'manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
28
|
-
|
|
26
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
29
27
|
for (const ID of [1, 2, 3, 4, 5]) {
|
|
30
28
|
await reporting.bind(device.getEndpoint(ID), coordinatorEndpoint, ['genOnOff']);
|
|
31
29
|
}
|
|
@@ -115,7 +113,7 @@ module.exports = [
|
|
|
115
113
|
toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory],
|
|
116
114
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
117
115
|
const endpoint = device.getEndpoint(1);
|
|
118
|
-
await
|
|
116
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
119
117
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
|
120
118
|
endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {acCurrentDivisor: 1000, acCurrentMultiplier: 1});
|
|
121
119
|
endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 100, multiplier: 1});
|
|
@@ -138,7 +136,7 @@ module.exports = [
|
|
|
138
136
|
toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory],
|
|
139
137
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
140
138
|
const endpoint = device.getEndpoint(1);
|
|
141
|
-
await
|
|
139
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
142
140
|
for (const ep of [1, 2, 3]) {
|
|
143
141
|
await reporting.bind(device.getEndpoint(ep), coordinatorEndpoint, ['genOnOff']);
|
|
144
142
|
await reporting.onOff(device.getEndpoint(ep));
|
package/devices/lidl.js
CHANGED
|
@@ -515,8 +515,7 @@ module.exports = [
|
|
|
515
515
|
extend: extend.switch(),
|
|
516
516
|
meta: {multiEndpoint: true},
|
|
517
517
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
518
|
-
|
|
519
|
-
await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
518
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
520
519
|
for (const ID of [1, 2, 3]) {
|
|
521
520
|
await reporting.bind(device.getEndpoint(ID), coordinatorEndpoint, ['genOnOff']);
|
|
522
521
|
}
|
package/devices/makegood.js
CHANGED
|
@@ -2,6 +2,7 @@ const exposes = require('../lib/exposes');
|
|
|
2
2
|
const fz = require('../converters/fromZigbee');
|
|
3
3
|
const tz = require('../converters/toZigbee');
|
|
4
4
|
const reporting = require('../lib/reporting');
|
|
5
|
+
const tuya = require('../lib/tuya');
|
|
5
6
|
const utils = require('../lib/utils');
|
|
6
7
|
const e = exposes.presets;
|
|
7
8
|
const ea = exposes.access;
|
|
@@ -36,7 +37,7 @@ module.exports = [
|
|
|
36
37
|
},
|
|
37
38
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
38
39
|
const endpoint = device.getEndpoint(1);
|
|
39
|
-
await
|
|
40
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
40
41
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering']);
|
|
41
42
|
await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
|
|
42
43
|
await reporting.rmsVoltage(endpoint, {change: 5});
|
package/devices/mecrator.js
CHANGED
|
@@ -2,6 +2,7 @@ const exposes = require('../lib/exposes');
|
|
|
2
2
|
const fz = require('../converters/fromZigbee');
|
|
3
3
|
const tz = require('../converters/toZigbee');
|
|
4
4
|
const reporting = require('../lib/reporting');
|
|
5
|
+
const tuya = require('../lib/tuya');
|
|
5
6
|
const e = exposes.presets;
|
|
6
7
|
const ea = exposes.access;
|
|
7
8
|
|
|
@@ -24,7 +25,7 @@ module.exports = [
|
|
|
24
25
|
meta: {multiEndpoint: true},
|
|
25
26
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
26
27
|
const endpoint = device.getEndpoint(1);
|
|
27
|
-
await
|
|
28
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
28
29
|
endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {acCurrentDivisor: 1000, acCurrentMultiplier: 1});
|
|
29
30
|
endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 100, multiplier: 1});
|
|
30
31
|
device.save();
|
package/devices/miboxer.js
CHANGED
|
@@ -77,7 +77,7 @@ module.exports = [
|
|
|
77
77
|
exposes: [e.battery(), e.battery_voltage()],
|
|
78
78
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
79
79
|
const endpoint = device.getEndpoint(1);
|
|
80
|
-
await
|
|
80
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
81
81
|
await endpoint.command('genGroups', 'miboxerSetZones', {zones: [
|
|
82
82
|
{zoneNum: 1, groupId: 101},
|
|
83
83
|
{zoneNum: 2, groupId: 102},
|
package/devices/moes.js
CHANGED
|
@@ -38,8 +38,7 @@ module.exports = [
|
|
|
38
38
|
},
|
|
39
39
|
meta: {multiEndpoint: true},
|
|
40
40
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
41
|
-
await
|
|
42
|
-
['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
41
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
43
42
|
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
|
|
44
43
|
await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
|
|
45
44
|
await reporting.onOff(device.getEndpoint(1));
|
package/devices/neo.js
CHANGED
|
@@ -79,7 +79,7 @@ module.exports = [
|
|
|
79
79
|
],
|
|
80
80
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
81
81
|
const endpoint = device.getEndpoint(1);
|
|
82
|
-
await
|
|
82
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
83
83
|
await endpoint.command('manuSpecificTuya', 'mcuVersionRequest', {'seq': 0x0002});
|
|
84
84
|
},
|
|
85
85
|
},
|
package/devices/philips.js
CHANGED
|
@@ -2914,4 +2914,11 @@ module.exports = [
|
|
|
2914
2914
|
description: 'Hue White ambiance BR30 E26',
|
|
2915
2915
|
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
2916
2916
|
},
|
|
2917
|
+
{
|
|
2918
|
+
zigbeeModel: ['LCX012'],
|
|
2919
|
+
model: '929003535301',
|
|
2920
|
+
vendor: 'Philips',
|
|
2921
|
+
description: 'Hue Festivia gradient light string 250',
|
|
2922
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
2923
|
+
},
|
|
2917
2924
|
];
|
package/devices/tuya.js
CHANGED
|
@@ -665,6 +665,7 @@ module.exports = [
|
|
|
665
665
|
model: 'TS0204',
|
|
666
666
|
vendor: 'TuYa',
|
|
667
667
|
description: 'Gas sensor',
|
|
668
|
+
whiteLabel: [{vendor: 'Tesla Smart', model: 'TSL-SEN-GAS'}],
|
|
668
669
|
fromZigbee: [fz.ias_gas_alarm_1, fz.ignore_basic_report],
|
|
669
670
|
toZigbee: [],
|
|
670
671
|
exposes: [e.gas(), e.tamper()],
|
|
@@ -674,6 +675,7 @@ module.exports = [
|
|
|
674
675
|
model: 'TS0205',
|
|
675
676
|
vendor: 'TuYa',
|
|
676
677
|
description: 'Smoke sensor',
|
|
678
|
+
whiteLabel: [{vendor: 'Tesla Smart', model: 'TSL-SEN-SMOKE'}],
|
|
677
679
|
fromZigbee: [fz.ias_smoke_alarm_1, fz.battery, fz.ignore_basic_report],
|
|
678
680
|
toZigbee: [],
|
|
679
681
|
exposes: [e.smoke(), e.battery_low(), e.tamper(), e.battery()],
|
|
@@ -702,7 +704,11 @@ module.exports = [
|
|
|
702
704
|
fromZigbee: [fz.ias_contact_alarm_1, fz.battery, fz.ignore_basic_report, fz.ias_contact_alarm_1_report],
|
|
703
705
|
toZigbee: [],
|
|
704
706
|
exposes: [e.contact(), e.battery_low(), e.tamper(), e.battery(), e.battery_voltage()],
|
|
705
|
-
whiteLabel: [
|
|
707
|
+
whiteLabel: [
|
|
708
|
+
{vendor: 'CR Smart Home', model: 'TS0203'},
|
|
709
|
+
{vendor: 'TuYa', model: 'iH-F001'},
|
|
710
|
+
{vendor: 'Tesla Smart', model: 'TSL-SEN-DOOR'},
|
|
711
|
+
],
|
|
706
712
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
707
713
|
try {
|
|
708
714
|
const endpoint = device.getEndpoint(1);
|
|
@@ -1837,12 +1843,7 @@ module.exports = [
|
|
|
1837
1843
|
},
|
|
1838
1844
|
meta: {multiEndpoint: true},
|
|
1839
1845
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1840
|
-
|
|
1841
|
-
try {
|
|
1842
|
-
await ep1.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
1843
|
-
} catch (e) {
|
|
1844
|
-
// Fails for some: https://github.com/Koenkk/zigbee2mqtt/discussions/13368
|
|
1845
|
-
}
|
|
1846
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
1846
1847
|
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
|
|
1847
1848
|
await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
|
|
1848
1849
|
},
|
|
@@ -2465,7 +2466,8 @@ module.exports = [
|
|
|
2465
2466
|
.withDescription('Recover state after power outage'),
|
|
2466
2467
|
exposes.enum('indicator_mode', ea.ALL, ['off', 'off/on', 'on/off', 'on'])
|
|
2467
2468
|
.withDescription('Plug LED indicator mode'), e.child_lock()],
|
|
2468
|
-
onEvent:
|
|
2469
|
+
onEvent: (type, data, device, options) =>
|
|
2470
|
+
tuya.onEventMeasurementPoll(type, data, device, options, true, device.applicationVersion === 160),
|
|
2469
2471
|
},
|
|
2470
2472
|
{
|
|
2471
2473
|
fingerprint: tuya.fingerprint('TS0601', ['_TZE200_ntcy3xu1']),
|
package/devices/useelink.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const exposes = require('../lib/exposes');
|
|
2
2
|
const reporting = require('../lib/reporting');
|
|
3
3
|
const extend = require('../lib/extend');
|
|
4
|
+
const tuya = require('../lib/tuya');
|
|
4
5
|
const e = exposes.presets;
|
|
5
6
|
|
|
6
7
|
module.exports = [
|
|
@@ -32,8 +33,7 @@ module.exports = [
|
|
|
32
33
|
extend: extend.switch(),
|
|
33
34
|
meta: {multiEndpoint: true},
|
|
34
35
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
35
|
-
await
|
|
36
|
-
['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
36
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
37
37
|
for (const ID of [1, 2, 3, 4, 5]) {
|
|
38
38
|
await reporting.bind(device.getEndpoint(ID), coordinatorEndpoint, ['genOnOff']);
|
|
39
39
|
}
|
package/devices/woox.js
CHANGED
|
@@ -107,10 +107,7 @@ module.exports = [
|
|
|
107
107
|
onEvent: tuya.onEventSetTime,
|
|
108
108
|
exposes: [e.switch(), e.battery()],
|
|
109
109
|
meta: {disableDefaultResponse: true},
|
|
110
|
-
configure:
|
|
111
|
-
const endpoint = device.getEndpoint(1);
|
|
112
|
-
await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
113
|
-
},
|
|
110
|
+
configure: tuya.configureMagicPacket,
|
|
114
111
|
},
|
|
115
112
|
{
|
|
116
113
|
fingerprint: [{modelID: 'TS0505A', manufacturerName: '_TZ3000_keabpigv'}],
|
package/devices/zemismart.js
CHANGED
|
@@ -70,8 +70,7 @@ module.exports = [
|
|
|
70
70
|
whiteLabel: [{vendor: 'BSEED', model: 'TS0003', description: 'Zigbee switch'}],
|
|
71
71
|
meta: {multiEndpoint: true, disableDefaultResponse: true},
|
|
72
72
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
73
|
-
await
|
|
74
|
-
['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
73
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
75
74
|
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
|
|
76
75
|
await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
|
|
77
76
|
await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
|
|
@@ -91,9 +90,8 @@ module.exports = [
|
|
|
91
90
|
return {'left': 1, 'center': 2, 'right': 3};
|
|
92
91
|
},
|
|
93
92
|
meta: {multiEndpoint: true},
|
|
94
|
-
configure: async (device, coordinatorEndpoint) => {
|
|
95
|
-
await
|
|
96
|
-
['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
93
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
94
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
97
95
|
for (const endpointID of [1, 2, 3]) {
|
|
98
96
|
const endpoint = device.getEndpoint(endpointID);
|
|
99
97
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
|
@@ -144,9 +142,7 @@ module.exports = [
|
|
|
144
142
|
},
|
|
145
143
|
meta: {multiEndpoint: true},
|
|
146
144
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
147
|
-
await
|
|
148
|
-
'manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
149
|
-
|
|
145
|
+
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
150
146
|
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
|
|
151
147
|
await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
|
|
152
148
|
await reporting.onOff(device.getEndpoint(1));
|
package/lib/tuya.js
CHANGED
|
@@ -1517,7 +1517,7 @@ const fzDataPoints = {
|
|
|
1517
1517
|
result = {...result, ...dpEntry[2].from(value, meta)};
|
|
1518
1518
|
}
|
|
1519
1519
|
} else {
|
|
1520
|
-
meta.logger.
|
|
1520
|
+
meta.logger.debug(`Datapoint ${dpId} not defined for '${meta.device.manufacturerName}' ` +
|
|
1521
1521
|
`with data ${JSON.stringify(dpValue)}`);
|
|
1522
1522
|
}
|
|
1523
1523
|
}
|