zigbee-herdsman-converters 14.0.560 → 14.0.563
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 +4 -2
- package/converters/toZigbee.js +4 -2
- package/devices/acova.js +30 -0
- package/devices/adeo.js +18 -4
- package/devices/bticino.js +1 -1
- package/devices/envilar.js +7 -0
- package/devices/hive.js +7 -0
- package/devices/insta.js +1 -1
- package/devices/lidl.js +8 -0
- package/devices/neo.js +2 -2
- package/devices/nous.js +3 -1
- package/devices/nue_3a.js +60 -0
- package/devices/schneider_electric.js +12 -0
- package/devices/tuya.js +11 -1
- package/devices/ubisys.js +2 -1
- package/devices/xiaomi.js +17 -8
- package/package.json +1 -1
package/converters/fromZigbee.js
CHANGED
|
@@ -1946,7 +1946,9 @@ const converters = {
|
|
|
1946
1946
|
case 1:
|
|
1947
1947
|
return {temperature: calibrateAndPrecisionRoundOptions(value / 10, options, 'temperature')};
|
|
1948
1948
|
case 2:
|
|
1949
|
-
return {humidity: calibrateAndPrecisionRoundOptions(
|
|
1949
|
+
return {humidity: calibrateAndPrecisionRoundOptions(
|
|
1950
|
+
(value / (meta.device.manufacturerName === '_TZE200_bjawzodf' ? 10 : 1)),
|
|
1951
|
+
options, 'humidity')};
|
|
1950
1952
|
case 4:
|
|
1951
1953
|
return {battery: value};
|
|
1952
1954
|
default:
|
|
@@ -3236,7 +3238,7 @@ const converters = {
|
|
|
3236
3238
|
};
|
|
3237
3239
|
|
|
3238
3240
|
let nameAlt = '';
|
|
3239
|
-
if (unit === 'A') {
|
|
3241
|
+
if (unit === 'A' || unit === 'pf') {
|
|
3240
3242
|
if (valRaw < 1) {
|
|
3241
3243
|
val = precisionRound(valRaw, 3);
|
|
3242
3244
|
}
|
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/adeo.js
CHANGED
|
@@ -112,14 +112,28 @@ module.exports = [
|
|
|
112
112
|
zigbeeModel: ['LXEK-2'],
|
|
113
113
|
model: '9CZA-G1521-Q1A',
|
|
114
114
|
vendor: 'ADEO',
|
|
115
|
-
description: 'ENKI
|
|
115
|
+
description: 'ENKI LEXMAN E27 14W to 100W LED RGBW',
|
|
116
116
|
extend: extend.light_onoff_brightness_colortemp_color(),
|
|
117
117
|
},
|
|
118
|
+
{
|
|
119
|
+
zigbeeModel: ['LDSENK07'],
|
|
120
|
+
model: 'LDSENK07',
|
|
121
|
+
vendor: 'ADEO',
|
|
122
|
+
description: 'ENKI LEXMAN wireless smart outdoor siren',
|
|
123
|
+
fromZigbee: [fz.battery, fz.ias_siren],
|
|
124
|
+
toZigbee: [tz.warning],
|
|
125
|
+
exposes: [e.warning(), e.battery(), e.battery_low(), e.tamper()],
|
|
126
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
127
|
+
device.defaultSendRequestWhen = 'immediate';
|
|
128
|
+
device.save();
|
|
129
|
+
await device.getEndpoint(1).unbind('genPollCtrl', coordinatorEndpoint);
|
|
130
|
+
},
|
|
131
|
+
},
|
|
118
132
|
{
|
|
119
133
|
zigbeeModel: ['ZBEK-2'],
|
|
120
134
|
model: 'IG-CDZOTAAG014RA-MAN',
|
|
121
135
|
vendor: 'ADEO',
|
|
122
|
-
description: 'ENKI
|
|
136
|
+
description: 'ENKI LEXMAN E27 14W to 100W LED RGBW v2',
|
|
123
137
|
extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 370]}),
|
|
124
138
|
},
|
|
125
139
|
{
|
|
@@ -133,7 +147,7 @@ module.exports = [
|
|
|
133
147
|
zigbeeModel: ['LXEK-7'],
|
|
134
148
|
model: '9CZA-A806ST-Q1Z',
|
|
135
149
|
vendor: 'ADEO',
|
|
136
|
-
description: 'ENKI
|
|
150
|
+
description: 'ENKI LEXMAN E27 LED white',
|
|
137
151
|
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
|
|
138
152
|
},
|
|
139
153
|
{
|
|
@@ -157,7 +171,7 @@ module.exports = [
|
|
|
157
171
|
zigbeeModel: ['LDSENK10'],
|
|
158
172
|
model: 'LDSENK10',
|
|
159
173
|
vendor: 'ADEO',
|
|
160
|
-
description: 'LEXMAN motion sensor',
|
|
174
|
+
description: 'ENKI LEXMAN motion sensor',
|
|
161
175
|
fromZigbee: [fz.ias_occupancy_alarm_1],
|
|
162
176
|
toZigbee: [],
|
|
163
177
|
exposes: [e.occupancy(), e.battery_low(), e.tamper()],
|
package/devices/bticino.js
CHANGED
|
@@ -26,7 +26,7 @@ module.exports = [
|
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
zigbeeModel: [' Dimmer switch with neutral\u0000\u0000\u0000\u0000'],
|
|
29
|
-
model: '
|
|
29
|
+
model: 'L4411C/N4411C/NT4411C',
|
|
30
30
|
vendor: 'BTicino',
|
|
31
31
|
description: 'Dimmer switch with neutral',
|
|
32
32
|
extend: extend.light_onoff_brightness({noConfigure: true}),
|
package/devices/envilar.js
CHANGED
|
@@ -5,6 +5,13 @@ const e = exposes.presets;
|
|
|
5
5
|
const fz = require('../converters/fromZigbee');
|
|
6
6
|
|
|
7
7
|
module.exports = [
|
|
8
|
+
{
|
|
9
|
+
zigbeeModel: ['ZG_LED_DRIVER42CC'],
|
|
10
|
+
model: 'ZG_LED_DRIVER42CC',
|
|
11
|
+
vendor: 'ENVILAR',
|
|
12
|
+
description: 'Zigbee LED driver',
|
|
13
|
+
extend: extend.light_onoff_brightness(),
|
|
14
|
+
},
|
|
8
15
|
{
|
|
9
16
|
zigbeeModel: ['ZG50CC-CCT-DRIVER'],
|
|
10
17
|
model: 'ZG50CC-CCT-DRIVER',
|
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/lidl.js
CHANGED
|
@@ -857,4 +857,12 @@ module.exports = [
|
|
|
857
857
|
}),
|
|
858
858
|
],
|
|
859
859
|
},
|
|
860
|
+
{
|
|
861
|
+
fingerprint: [{modelID: 'TS0505B', manufacturerName: '_TZ3000_taspddvq'}],
|
|
862
|
+
model: 'HG08383A',
|
|
863
|
+
vendor: 'Lidl',
|
|
864
|
+
description: 'Livarno outdoor LED light chain',
|
|
865
|
+
extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500], disableColorTempStartup: true}),
|
|
866
|
+
meta: {applyRedFix: true, enhancedHue: false},
|
|
867
|
+
},
|
|
860
868
|
];
|
package/devices/neo.js
CHANGED
|
@@ -35,7 +35,7 @@ module.exports = [
|
|
|
35
35
|
},
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
|
-
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_t1blo2bj'}
|
|
38
|
+
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_t1blo2bj'}],
|
|
39
39
|
zigbeeModel: ['1blo2bj'],
|
|
40
40
|
model: 'NAS-AB02B2',
|
|
41
41
|
vendor: 'Neo',
|
|
@@ -58,7 +58,7 @@ module.exports = [
|
|
|
58
58
|
},
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
|
-
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_7hfcudw5'}],
|
|
61
|
+
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_7hfcudw5'}, {modelID: 'TS0202', manufacturerName: '_TZ3000_kmh5qpmb'}],
|
|
62
62
|
model: 'NAS-PD07',
|
|
63
63
|
vendor: 'Neo',
|
|
64
64
|
description: 'Motion, temperature & humidity sensor',
|
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/nue_3a.js
CHANGED
|
@@ -4,6 +4,32 @@ const tz = require('../converters/toZigbee');
|
|
|
4
4
|
const reporting = require('../lib/reporting');
|
|
5
5
|
const extend = require('../lib/extend');
|
|
6
6
|
const e = exposes.presets;
|
|
7
|
+
const ea = exposes.access;
|
|
8
|
+
|
|
9
|
+
const fzLocal = {
|
|
10
|
+
LXN59_cover_options: {
|
|
11
|
+
cluster: 'closuresWindowCovering',
|
|
12
|
+
type: ['attributeReport', 'readResponse'],
|
|
13
|
+
convert: (model, msg, publish, options, meta) => {
|
|
14
|
+
const result = {};
|
|
15
|
+
if (msg.data.hasOwnProperty('tuyaMovingState')) {
|
|
16
|
+
const value = msg.data['tuyaMovingState'];
|
|
17
|
+
const movingLookup = {0: 'DOWN', 1: 'UP', 2: 'STOP'};
|
|
18
|
+
result.moving = movingLookup[value];
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
LXN59_cover_state_via_onoff: {
|
|
24
|
+
cluster: 'genOnOff',
|
|
25
|
+
type: ['attributeReport', 'readResponse'],
|
|
26
|
+
convert: (model, msg, publish, options, meta) => {
|
|
27
|
+
if (msg.data.hasOwnProperty('onOff')) {
|
|
28
|
+
return {state: msg.data['onOff'] === 1 ? 'CLOSE' : 'OPEN'};
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
};
|
|
7
33
|
|
|
8
34
|
module.exports = [
|
|
9
35
|
{
|
|
@@ -247,6 +273,40 @@ module.exports = [
|
|
|
247
273
|
description: 'Smart 7W E27 light bulb',
|
|
248
274
|
extend: extend.light_onoff_brightness_colortemp_color(),
|
|
249
275
|
},
|
|
276
|
+
{
|
|
277
|
+
zigbeeModel: ['LXN59-CS27LX1.0'],
|
|
278
|
+
model: 'ZW-EU-4C',
|
|
279
|
+
vendor: 'Nue / 3A',
|
|
280
|
+
description: 'Zigbee smart curtain switch',
|
|
281
|
+
fromZigbee: [fz.cover_position_tilt, fzLocal.LXN59_cover_state_via_onoff, fzLocal.LXN59_cover_options],
|
|
282
|
+
toZigbee: [tz.cover_state, tz.cover_position_tilt],
|
|
283
|
+
meta: {disableDefaultResponse: true},
|
|
284
|
+
exposes: [e.cover_position(), exposes.enum('moving', ea.STATE, ['UP', 'STOP', 'DOWN'])],
|
|
285
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
286
|
+
const endpoint1 = device.getEndpoint(1);
|
|
287
|
+
await reporting.bind(endpoint1, coordinatorEndpoint, ['genOnOff']);
|
|
288
|
+
await reporting.onOff(endpoint1);
|
|
289
|
+
await reporting.bind(endpoint1, coordinatorEndpoint, ['closuresWindowCovering']);
|
|
290
|
+
await reporting.currentPositionLiftPercentage(endpoint1);
|
|
291
|
+
device.powerSource = 'Mains (single phase)';
|
|
292
|
+
device.save();
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
zigbeeModel: ['LXX60-CS27LX1.0'],
|
|
297
|
+
model: 'ZW-EC-01',
|
|
298
|
+
vendor: 'Nue / 3A',
|
|
299
|
+
description: 'Zigbee smart curtain switch',
|
|
300
|
+
extend: extend.switch(),
|
|
301
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
302
|
+
const endpoint1 = device.getEndpoint(1);
|
|
303
|
+
await reporting.bind(endpoint1, coordinatorEndpoint, ['genOnOff']);
|
|
304
|
+
await reporting.bind(endpoint1, coordinatorEndpoint, ['closuresWindowCovering']);
|
|
305
|
+
await reporting.onOff(endpoint1);
|
|
306
|
+
device.powerSource = 'Mains (single phase)';
|
|
307
|
+
device.save();
|
|
308
|
+
},
|
|
309
|
+
},
|
|
250
310
|
{
|
|
251
311
|
zigbeeModel: ['LXN56-0S27LX1.1', 'LXN56-0S27LX1.3'],
|
|
252
312
|
model: 'HGZB-20-UK',
|
|
@@ -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
|
@@ -338,7 +338,9 @@ module.exports = [
|
|
|
338
338
|
},
|
|
339
339
|
{
|
|
340
340
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_8ygsuhe1'},
|
|
341
|
-
{modelID: 'TS0601', manufacturerName: '_TZE200_yvx5lh6k'},
|
|
341
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_yvx5lh6k'},
|
|
342
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_ryfmq5rl'},
|
|
343
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_c2fmom5z'}],
|
|
342
344
|
model: 'TS0601_air_quality_sensor',
|
|
343
345
|
vendor: 'TuYa',
|
|
344
346
|
description: 'Air quality sensor',
|
|
@@ -439,6 +441,14 @@ module.exports = [
|
|
|
439
441
|
extend: extend.switch(),
|
|
440
442
|
whiteLabel: [{vendor: 'Mumubiz', model: 'ZJSB9-80Z'}],
|
|
441
443
|
},
|
|
444
|
+
{
|
|
445
|
+
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_8fdayfch'}],
|
|
446
|
+
model: 'TS011F_relay_switch',
|
|
447
|
+
vendor: 'TuYa',
|
|
448
|
+
description: 'Dry contact relay switch',
|
|
449
|
+
extend: extend.switch(),
|
|
450
|
+
whiteLabel: [{vendor: 'KTNNKG', model: 'ZB1248-10A'}],
|
|
451
|
+
},
|
|
442
452
|
{
|
|
443
453
|
fingerprint: [{modelID: 'TS0505B', manufacturerName: '_TZ3000_qqjaziws'},
|
|
444
454
|
{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);
|