zigbee-herdsman-converters 14.0.561 → 14.0.564
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 +11 -4
- package/converters/toZigbee.js +4 -2
- package/devices/acova.js +30 -0
- package/devices/centralite.js +20 -0
- package/devices/gledopto.js +2 -1
- package/devices/hive.js +7 -0
- package/devices/insta.js +1 -1
- package/devices/ledvance.js +9 -1
- package/devices/nous.js +3 -1
- package/devices/philips.js +7 -0
- package/devices/schneider_electric.js +12 -0
- package/devices/tuya.js +22 -3
- package/devices/ubisys.js +2 -1
- package/devices/xiaomi.js +17 -8
- package/lib/tuya.js +5 -0
- package/package.json +1 -1
package/converters/fromZigbee.js
CHANGED
|
@@ -1943,11 +1943,18 @@ const converters = {
|
|
|
1943
1943
|
const dp = dpValue.dp;
|
|
1944
1944
|
const value = tuya.getDataValue(dpValue);
|
|
1945
1945
|
switch (dp) {
|
|
1946
|
-
case
|
|
1946
|
+
case tuya.dataPoints.tthTemperature:
|
|
1947
1947
|
return {temperature: calibrateAndPrecisionRoundOptions(value / 10, options, 'temperature')};
|
|
1948
|
-
case
|
|
1949
|
-
return {humidity: calibrateAndPrecisionRoundOptions(
|
|
1950
|
-
|
|
1948
|
+
case tuya.dataPoints.tthHumidity:
|
|
1949
|
+
return {humidity: calibrateAndPrecisionRoundOptions(
|
|
1950
|
+
(value / (meta.device.manufacturerName === '_TZE200_bjawzodf' ? 10 : 1)),
|
|
1951
|
+
options, 'humidity')};
|
|
1952
|
+
case tuya.dataPoints.tthBatteryLevel:
|
|
1953
|
+
return {
|
|
1954
|
+
battery_level: {0: 'low', 1: 'middle', 2: 'high'}[value],
|
|
1955
|
+
battery_low: value === 0 ? true : false,
|
|
1956
|
+
};
|
|
1957
|
+
case tuya.dataPoints.tthBattery:
|
|
1951
1958
|
return {battery: value};
|
|
1952
1959
|
default:
|
|
1953
1960
|
meta.logger.warn(`zigbee-herdsman-converters:maa_tuya_temp_sensor: NOT RECOGNIZED ` +
|
package/converters/toZigbee.js
CHANGED
|
@@ -2300,7 +2300,8 @@ const converters = {
|
|
|
2300
2300
|
key: ['led_disabled_night'],
|
|
2301
2301
|
convertSet: async (entity, key, value, meta) => {
|
|
2302
2302
|
if (['ZNCZ04LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
|
|
2303
|
-
'QBKG31LM', 'QBKG34LM', 'DLKZMK11LM', 'SSM-U01', 'WS-EUK01', 'WS-EUK02'
|
|
2303
|
+
'QBKG31LM', 'QBKG34LM', 'DLKZMK11LM', 'SSM-U01', 'WS-EUK01', 'WS-EUK02',
|
|
2304
|
+
'WS-EUK03', 'WS-EUK04'].includes(meta.mapped.model)) {
|
|
2304
2305
|
await entity.write('aqaraOpple', {0x0203: {value: value ? 1 : 0, type: 0x10}}, manufacturerOptions.xiaomi);
|
|
2305
2306
|
} else if (['ZNCZ11LM'].includes(meta.mapped.model)) {
|
|
2306
2307
|
const payload = value ?
|
|
@@ -2315,7 +2316,8 @@ const converters = {
|
|
|
2315
2316
|
},
|
|
2316
2317
|
convertGet: async (entity, key, meta) => {
|
|
2317
2318
|
if (['ZNCZ04LM', 'ZNCZ15LM', 'QBCZ15LM', 'QBCZ14LM', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
|
|
2318
|
-
'QBKG31LM', 'QBKG34LM', 'DLKZMK11LM', 'SSM-U01', 'WS-EUK01', 'WS-EUK02'
|
|
2319
|
+
'QBKG31LM', 'QBKG34LM', 'DLKZMK11LM', 'SSM-U01', 'WS-EUK01', 'WS-EUK02',
|
|
2320
|
+
'WS-EUK03', 'WS-EUK04'].includes(meta.mapped.model)) {
|
|
2319
2321
|
await entity.read('aqaraOpple', [0x0203], manufacturerOptions.xiaomi);
|
|
2320
2322
|
} else {
|
|
2321
2323
|
throw new Error('Not supported');
|
package/devices/acova.js
CHANGED
|
@@ -63,4 +63,34 @@ module.exports = [
|
|
|
63
63
|
await reporting.thermostatUnoccupiedHeatingSetpoint(endpoint);
|
|
64
64
|
},
|
|
65
65
|
},
|
|
66
|
+
{
|
|
67
|
+
zigbeeModel: ['TAFFETAS2 D1.00P1.02Z1.00'],
|
|
68
|
+
model: 'TAFFETAS2',
|
|
69
|
+
vendor: 'Acova',
|
|
70
|
+
description: 'Taffetas 2 heater',
|
|
71
|
+
fromZigbee: [fz.thermostat, fz.hvac_user_interface],
|
|
72
|
+
toZigbee: [
|
|
73
|
+
tz.thermostat_local_temperature,
|
|
74
|
+
tz.thermostat_system_mode,
|
|
75
|
+
tz.thermostat_occupied_heating_setpoint,
|
|
76
|
+
tz.thermostat_unoccupied_heating_setpoint,
|
|
77
|
+
tz.thermostat_occupied_cooling_setpoint,
|
|
78
|
+
tz.thermostat_running_state,
|
|
79
|
+
],
|
|
80
|
+
exposes: [
|
|
81
|
+
exposes.climate()
|
|
82
|
+
.withSetpoint('occupied_heating_setpoint', 7, 28, 0.5)
|
|
83
|
+
.withLocalTemperature()
|
|
84
|
+
.withSystemMode(['off', 'heat', 'auto'])
|
|
85
|
+
.withRunningState(['idle', 'heat']),
|
|
86
|
+
],
|
|
87
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
88
|
+
const endpoint = device.getEndpoint(1);
|
|
89
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'hvacThermostat']);
|
|
90
|
+
await reporting.thermostatTemperature(endpoint);
|
|
91
|
+
await reporting.thermostatRunningState(endpoint);
|
|
92
|
+
await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
|
|
93
|
+
await reporting.thermostatUnoccupiedHeatingSetpoint(endpoint);
|
|
94
|
+
},
|
|
95
|
+
},
|
|
66
96
|
];
|
package/devices/centralite.js
CHANGED
|
@@ -72,6 +72,26 @@ module.exports = [
|
|
|
72
72
|
await reporting.activePower(endpoint, {change: 2}); // Power reports in 0.1W
|
|
73
73
|
},
|
|
74
74
|
},
|
|
75
|
+
{
|
|
76
|
+
zigbeeModel: ['4256050-RZHAC'],
|
|
77
|
+
model: '4256050-RZHAC',
|
|
78
|
+
vendor: 'Centralite',
|
|
79
|
+
description: '3-Series smart outlet appliance module',
|
|
80
|
+
fromZigbee: [fz.on_off, fz.electrical_measurement],
|
|
81
|
+
toZigbee: [tz.on_off],
|
|
82
|
+
exposes: [e.switch(), e.power(), e.voltage(), e.current()],
|
|
83
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
84
|
+
const endpoint = device.getEndpoint(1);
|
|
85
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement']);
|
|
86
|
+
await reporting.onOff(endpoint);
|
|
87
|
+
// 4256050-RZHAC doesn't support reading 'acVoltageMultiplier' or 'acVoltageDivisor'
|
|
88
|
+
await endpoint.read('haElectricalMeasurement', ['acCurrentMultiplier', 'acCurrentDivisor']);
|
|
89
|
+
await endpoint.read('haElectricalMeasurement', ['acPowerMultiplier', 'acPowerDivisor']);
|
|
90
|
+
await reporting.rmsVoltage(endpoint, {change: 2}); // Voltage reports in V
|
|
91
|
+
await reporting.rmsCurrent(endpoint, {change: 10}); // Current reports in mA
|
|
92
|
+
await reporting.activePower(endpoint, {change: 2}); // Power reports in 0.1W
|
|
93
|
+
},
|
|
94
|
+
},
|
|
75
95
|
{
|
|
76
96
|
zigbeeModel: ['4257050-ZHAC'],
|
|
77
97
|
model: '4257050-ZHAC',
|
package/devices/gledopto.js
CHANGED
|
@@ -348,7 +348,7 @@ module.exports = [
|
|
|
348
348
|
model: 'GL-S-004Z',
|
|
349
349
|
vendor: 'Gledopto',
|
|
350
350
|
description: 'Zigbee 4W MR16 Bulb 30deg RGB+CCT',
|
|
351
|
-
extend: gledoptoExtend.light_onoff_brightness_colortemp_color(),
|
|
351
|
+
extend: gledoptoExtend.light_onoff_brightness_colortemp_color({disableColorTempStartup: false}),
|
|
352
352
|
},
|
|
353
353
|
{
|
|
354
354
|
zigbeeModel: ['GL-S-005Z'],
|
|
@@ -537,6 +537,7 @@ module.exports = [
|
|
|
537
537
|
zigbeeModel: ['GL-D-006P'],
|
|
538
538
|
model: 'GL-D-006P',
|
|
539
539
|
vendor: 'Gledopto',
|
|
540
|
+
ota: ota.zigbeeOTA,
|
|
540
541
|
description: 'Zigbee 6W anti-glare downlight RGB+CCT (pro)',
|
|
541
542
|
extend: gledoptoExtend.light_onoff_brightness_colortemp_color({colorTempRange: [158, 495]}),
|
|
542
543
|
},
|
package/devices/hive.js
CHANGED
|
@@ -9,6 +9,13 @@ const e = exposes.presets;
|
|
|
9
9
|
const ea = exposes.access;
|
|
10
10
|
|
|
11
11
|
module.exports = [
|
|
12
|
+
{
|
|
13
|
+
zigbeeModel: ['FWGU10Bulb02UK'],
|
|
14
|
+
model: 'FWGU10Bulb02UK',
|
|
15
|
+
vendor: 'Hive',
|
|
16
|
+
description: 'GU10 warm white',
|
|
17
|
+
extend: extend.light_onoff_brightness(),
|
|
18
|
+
},
|
|
12
19
|
{
|
|
13
20
|
zigbeeModel: ['MOT003'],
|
|
14
21
|
model: 'MOT003',
|
package/devices/insta.js
CHANGED
|
@@ -53,7 +53,7 @@ module.exports = [
|
|
|
53
53
|
{ID: 242, profileID: 41440, deviceID: 97},
|
|
54
54
|
]},
|
|
55
55
|
],
|
|
56
|
-
zigbeeModel: ['57005000'],
|
|
56
|
+
zigbeeModel: ['NEXENTRO Switching Actuator', '57005000'],
|
|
57
57
|
model: '57005000',
|
|
58
58
|
vendor: 'Insta',
|
|
59
59
|
description: 'Switching Actuator Mini with input for wall switch',
|
package/devices/ledvance.js
CHANGED
|
@@ -139,7 +139,7 @@ module.exports = [
|
|
|
139
139
|
zigbeeModel: ['Tibea TW Z3'],
|
|
140
140
|
model: '4058075168572',
|
|
141
141
|
vendor: 'LEDVANCE',
|
|
142
|
-
description: 'SMART+ lamp E27
|
|
142
|
+
description: 'SMART+ lamp E27 tuneable white',
|
|
143
143
|
extend: extend.ledvance.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
|
|
144
144
|
ota: ota.ledvance,
|
|
145
145
|
},
|
|
@@ -151,4 +151,12 @@ module.exports = [
|
|
|
151
151
|
extend: extend.ledvance.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
|
|
152
152
|
ota: ota.ledvance,
|
|
153
153
|
},
|
|
154
|
+
{
|
|
155
|
+
zigbeeModel: ['CLA60 RGBW JP'],
|
|
156
|
+
model: 'SMARTZBA60RGBW',
|
|
157
|
+
vendor: 'LEDVANCE',
|
|
158
|
+
description: 'SMART+ lamp E26 RGBW',
|
|
159
|
+
extend: extend.ledvance.light_onoff_brightness_colortemp_color({colorTempRange: [153, 526]}),
|
|
160
|
+
ota: ota.ledvance,
|
|
161
|
+
},
|
|
154
162
|
];
|
package/devices/nous.js
CHANGED
|
@@ -17,7 +17,9 @@ module.exports = [
|
|
|
17
17
|
exposes: [e.temperature(), e.humidity(), e.battery()],
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
|
-
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_lve3dvpy'},
|
|
20
|
+
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_lve3dvpy'},
|
|
21
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_c7emyjom'},
|
|
22
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_locansqn'}],
|
|
21
23
|
model: 'SZ-T04',
|
|
22
24
|
vendor: 'Nous',
|
|
23
25
|
description: 'Temperature and humidity sensor with clock',
|
package/devices/philips.js
CHANGED
|
@@ -2427,6 +2427,13 @@ module.exports = [
|
|
|
2427
2427
|
description: 'Akari downlight',
|
|
2428
2428
|
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
2429
2429
|
},
|
|
2430
|
+
{
|
|
2431
|
+
zigbeeModel: ['LCD006'],
|
|
2432
|
+
model: '9290031346',
|
|
2433
|
+
vendor: 'Philips',
|
|
2434
|
+
description: 'Hue white and color ambiance 5/6" retrofit recessed downlight',
|
|
2435
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
2436
|
+
},
|
|
2430
2437
|
{
|
|
2431
2438
|
zigbeeModel: ['LWE004'],
|
|
2432
2439
|
model: '8719514302235',
|
|
@@ -357,6 +357,18 @@ module.exports = [
|
|
|
357
357
|
await reporting.onOff(endpoint);
|
|
358
358
|
},
|
|
359
359
|
},
|
|
360
|
+
{
|
|
361
|
+
zigbeeModel: ['CH10AX/SWITCH/1'],
|
|
362
|
+
model: '41E10PBSWMZ-VW',
|
|
363
|
+
vendor: 'Schneider Electric',
|
|
364
|
+
description: 'Wiser 40/300-Series module switch 10A with ControlLink',
|
|
365
|
+
extend: extend.switch(),
|
|
366
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
367
|
+
const endpoint = device.getEndpoint(1);
|
|
368
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
|
369
|
+
await reporting.onOff(endpoint);
|
|
370
|
+
},
|
|
371
|
+
},
|
|
360
372
|
{
|
|
361
373
|
zigbeeModel: ['SMARTPLUG/1'],
|
|
362
374
|
model: 'CCT711119',
|
package/devices/tuya.js
CHANGED
|
@@ -319,13 +319,22 @@ module.exports = [
|
|
|
319
319
|
},
|
|
320
320
|
{
|
|
321
321
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_bq5c8xfe'},
|
|
322
|
-
{modelID: 'TS0601', manufacturerName: '_TZE200_bjawzodf'}
|
|
322
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_bjawzodf'},
|
|
323
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_qyflbnbj'}],
|
|
323
324
|
model: 'TS0601_temperature_humidity_sensor',
|
|
324
325
|
vendor: 'TuYa',
|
|
325
326
|
description: 'Temperature & humidity sensor',
|
|
326
327
|
fromZigbee: [fz.tuya_temperature_humidity_sensor],
|
|
327
328
|
toZigbee: [],
|
|
328
|
-
exposes:
|
|
329
|
+
exposes: (device, options) => {
|
|
330
|
+
const exps = [e.temperature(), e.humidity(), e.battery()];
|
|
331
|
+
if (!device || device.manufacturerName === '_TZE200_qyflbnbj') {
|
|
332
|
+
exps.push(e.battery_low());
|
|
333
|
+
exps.push(exposes.enum('battery_level', ea.STATE, ['low', 'middle', 'high']).withDescription('Battery level state'));
|
|
334
|
+
}
|
|
335
|
+
exps.push(e.linkquality());
|
|
336
|
+
return exps;
|
|
337
|
+
},
|
|
329
338
|
},
|
|
330
339
|
{
|
|
331
340
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_vzqtvljm'}],
|
|
@@ -338,7 +347,9 @@ module.exports = [
|
|
|
338
347
|
},
|
|
339
348
|
{
|
|
340
349
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_8ygsuhe1'},
|
|
341
|
-
{modelID: 'TS0601', manufacturerName: '_TZE200_yvx5lh6k'},
|
|
350
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_yvx5lh6k'},
|
|
351
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_ryfmq5rl'},
|
|
352
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_c2fmom5z'}],
|
|
342
353
|
model: 'TS0601_air_quality_sensor',
|
|
343
354
|
vendor: 'TuYa',
|
|
344
355
|
description: 'Air quality sensor',
|
|
@@ -439,6 +450,14 @@ module.exports = [
|
|
|
439
450
|
extend: extend.switch(),
|
|
440
451
|
whiteLabel: [{vendor: 'Mumubiz', model: 'ZJSB9-80Z'}],
|
|
441
452
|
},
|
|
453
|
+
{
|
|
454
|
+
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_8fdayfch'}],
|
|
455
|
+
model: 'TS011F_relay_switch',
|
|
456
|
+
vendor: 'TuYa',
|
|
457
|
+
description: 'Dry contact relay switch',
|
|
458
|
+
extend: extend.switch(),
|
|
459
|
+
whiteLabel: [{vendor: 'KTNNKG', model: 'ZB1248-10A'}],
|
|
460
|
+
},
|
|
442
461
|
{
|
|
443
462
|
fingerprint: [{modelID: 'TS0505B', manufacturerName: '_TZ3000_qqjaziws'},
|
|
444
463
|
{modelID: 'TS0505B', manufacturerName: '_TZ3000_jtmhndw2'},
|
package/devices/ubisys.js
CHANGED
|
@@ -640,7 +640,8 @@ module.exports = [
|
|
|
640
640
|
fz.command_move, fz.command_stop, fz.lighting_ballast_configuration, fz.level_config, ubisys.fz.dimmer_setup,
|
|
641
641
|
ubisys.fz.dimmer_setup_genLevelCtrl],
|
|
642
642
|
toZigbee: [tz.light_onoff_brightness, tz.ballast_config, tz.level_config, ubisys.tz.dimmer_setup,
|
|
643
|
-
ubisys.tz.dimmer_setup_genLevelCtrl, ubisys.tz.configure_device_setup, tz.ignore_transition
|
|
643
|
+
ubisys.tz.dimmer_setup_genLevelCtrl, ubisys.tz.configure_device_setup, tz.ignore_transition, tz.light_brightness_move,
|
|
644
|
+
tz.light_brightness_step],
|
|
644
645
|
exposes: [e.light_brightness().withLevelConfig(), e.power(),
|
|
645
646
|
exposes.numeric('ballast_physical_minimum_level', ea.ALL).withValueMin(1).withValueMax(254)
|
|
646
647
|
.withDescription('Specifies the minimum light output the ballast can achieve.'),
|
package/devices/xiaomi.js
CHANGED
|
@@ -269,11 +269,19 @@ module.exports = [
|
|
|
269
269
|
model: 'WS-USC01',
|
|
270
270
|
vendor: 'Xiaomi',
|
|
271
271
|
description: 'Aqara smart wall switch (no neutral, single rocker)',
|
|
272
|
-
|
|
272
|
+
fromZigbee: [fz.on_off, fz.xiaomi_multistate_action, fz.aqara_opple],
|
|
273
|
+
toZigbee: [tz.on_off, tz.xiaomi_switch_operation_mode_opple,
|
|
274
|
+
tz.xiaomi_flip_indicator_light, tz.aqara_switch_mode_switch],
|
|
275
|
+
exposes: [e.switch(), e.action(['single', 'double']), e.flip_indicator_light(),
|
|
276
|
+
exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']).withDescription('Decoupled mode'),
|
|
277
|
+
exposes.enum('mode_switch', ea.ALL, ['anti_flicker_mode', 'quick_mode'])
|
|
278
|
+
.withDescription('Anti flicker mode can be used to solve blinking issues of some lights.' +
|
|
279
|
+
'Quick mode makes the device respond faster.')],
|
|
280
|
+
onEvent: preventReset,
|
|
273
281
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
274
|
-
const
|
|
275
|
-
|
|
276
|
-
await
|
|
282
|
+
const endpoint1 = device.getEndpoint(1);
|
|
283
|
+
// set "event" mode
|
|
284
|
+
await endpoint1.write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
|
|
277
285
|
},
|
|
278
286
|
},
|
|
279
287
|
{
|
|
@@ -410,9 +418,9 @@ module.exports = [
|
|
|
410
418
|
description: 'Aqara smart wall switch H1 EU (with neutral, single rocker)',
|
|
411
419
|
fromZigbee: [fz.on_off, fz.xiaomi_power, fz.xiaomi_multistate_action, fz.aqara_opple],
|
|
412
420
|
toZigbee: [tz.on_off, tz.xiaomi_power, tz.xiaomi_switch_operation_mode_opple, tz.xiaomi_switch_power_outage_memory,
|
|
413
|
-
tz.xiaomi_flip_indicator_light],
|
|
421
|
+
tz.xiaomi_flip_indicator_light, tz.xiaomi_led_disabled_night],
|
|
414
422
|
exposes: [e.switch(), e.action(['single', 'double']), e.power().withAccess(ea.STATE_GET), e.energy(), e.flip_indicator_light(),
|
|
415
|
-
e.power_outage_memory(), e.device_temperature().withAccess(ea.STATE),
|
|
423
|
+
e.power_outage_memory(), e.device_temperature().withAccess(ea.STATE), e.led_disabled_night(), e.power_outage_count(),
|
|
416
424
|
exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']).withDescription('Decoupled mode')],
|
|
417
425
|
onEvent: preventReset,
|
|
418
426
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
@@ -428,7 +436,7 @@ module.exports = [
|
|
|
428
436
|
description: 'Aqara smart wall switch H1 EU (with neutral, double rocker)',
|
|
429
437
|
fromZigbee: [fz.on_off, fz.xiaomi_power, fz.xiaomi_multistate_action, fz.aqara_opple],
|
|
430
438
|
toZigbee: [tz.on_off, tz.xiaomi_power, tz.xiaomi_switch_operation_mode_opple, tz.xiaomi_switch_power_outage_memory,
|
|
431
|
-
tz.xiaomi_flip_indicator_light],
|
|
439
|
+
tz.xiaomi_flip_indicator_light, tz.xiaomi_led_disabled_night],
|
|
432
440
|
meta: {multiEndpoint: true},
|
|
433
441
|
endpoint: (device) => {
|
|
434
442
|
return {'left': 1, 'right': 2};
|
|
@@ -439,7 +447,8 @@ module.exports = [
|
|
|
439
447
|
exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']).withDescription('Decoupled mode for right button')
|
|
440
448
|
.withEndpoint('right'),
|
|
441
449
|
e.action(['single_left', 'double_left', 'single_right', 'double_right', 'single_both', 'double_both']),
|
|
442
|
-
e.device_temperature().withAccess(ea.STATE), e.power_outage_memory(), e.flip_indicator_light()
|
|
450
|
+
e.device_temperature().withAccess(ea.STATE), e.power_outage_memory(), e.flip_indicator_light(),
|
|
451
|
+
e.led_disabled_night(), e.power_outage_count()],
|
|
443
452
|
onEvent: preventReset,
|
|
444
453
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
445
454
|
const endpoint1 = device.getEndpoint(1);
|
package/lib/tuya.js
CHANGED
|
@@ -626,6 +626,11 @@ const dataPoints = {
|
|
|
626
626
|
nousHumiAlarm: 15,
|
|
627
627
|
nousTempSensitivity: 19,
|
|
628
628
|
nousReportInterval: 17,
|
|
629
|
+
// TUYA Temperature and Humidity Sensor
|
|
630
|
+
tthTemperature: 1,
|
|
631
|
+
tthHumidity: 2,
|
|
632
|
+
tthBatteryLevel: 3,
|
|
633
|
+
tthBattery: 4,
|
|
629
634
|
// TUYA / HUMIDITY/ILLUMINANCE/TEMPERATURE SENSOR
|
|
630
635
|
thitBatteryPercentage: 3,
|
|
631
636
|
thitIlluminanceLux: 7,
|