zigbee-herdsman-converters 14.0.460 → 14.0.463
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 +19 -0
- package/converters/toZigbee.js +1 -7
- package/devices/awox.js +1 -1
- package/devices/enocean.js +2 -1
- package/devices/envilar.js +12 -0
- package/devices/evn.js +17 -12
- package/devices/keen_home.js +1 -1
- package/devices/lidl.js +9 -0
- package/devices/orvibo.js +7 -0
- package/devices/philips.js +18 -0
- package/devices/schneider_electric.js +1 -1
- package/devices/spotmau.js +33 -0
- package/devices/tuya.js +53 -1
- package/devices/xiaomi.js +5 -5
- package/devices/xinghuoyuan.js +11 -0
- package/lib/tuya.js +1 -1
- package/lib/xiaomi.js +2 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
package/converters/fromZigbee.js
CHANGED
|
@@ -4823,6 +4823,7 @@ const converters = {
|
|
|
4823
4823
|
0x1e: 'press_1_and_4', 0x1f: 'release_1_and_4', 0x1c: 'press_2_and_3', 0x1d: 'release_2_and_3', 0x1a: 'press_2_and_4',
|
|
4824
4824
|
0x1b: 'release_2_and_4', 0x16: 'press_3_and_4', 0x17: 'release_3_and_4', 0x10: 'press_energy_bar',
|
|
4825
4825
|
0x11: 'release_energy_bar', 0x0: 'press_or_release_all',
|
|
4826
|
+
0x50: 'lock', 0x51: 'unlock', 0x52: 'half_open', 0x53: 'tilt',
|
|
4826
4827
|
};
|
|
4827
4828
|
|
|
4828
4829
|
if (!lookup.hasOwnProperty(commandID)) {
|
|
@@ -5690,6 +5691,24 @@ const converters = {
|
|
|
5690
5691
|
return {position};
|
|
5691
5692
|
},
|
|
5692
5693
|
},
|
|
5694
|
+
xiaomi_curtain_position_tilt: {
|
|
5695
|
+
cluster: 'closuresWindowCovering',
|
|
5696
|
+
type: ['attributeReport', 'readResponse'],
|
|
5697
|
+
options: [exposes.options.invert_cover()],
|
|
5698
|
+
convert: (model, msg, publish, options, meta) => {
|
|
5699
|
+
const result = {};
|
|
5700
|
+
const invert = model.meta && model.meta.coverInverted ? !options.invert_cover : options.invert_cover;
|
|
5701
|
+
if (msg.data.hasOwnProperty('currentPositionLiftPercentage') && msg.data['currentPositionLiftPercentage'] <= 100) {
|
|
5702
|
+
const value = msg.data['currentPositionLiftPercentage'];
|
|
5703
|
+
result[postfixWithEndpointName('position', msg, model)] = invert ? 100 - value : value;
|
|
5704
|
+
}
|
|
5705
|
+
if (msg.data.hasOwnProperty('currentPositionTiltPercentage') && msg.data['currentPositionTiltPercentage'] <= 100) {
|
|
5706
|
+
const value = msg.data['currentPositionTiltPercentage'];
|
|
5707
|
+
result[postfixWithEndpointName('tilt', msg, model)] = invert ? 100 - value : value;
|
|
5708
|
+
}
|
|
5709
|
+
return result;
|
|
5710
|
+
},
|
|
5711
|
+
},
|
|
5693
5712
|
xiaomi_curtain_acn002_position: {
|
|
5694
5713
|
cluster: 'genAnalogOutput',
|
|
5695
5714
|
type: ['attributeReport', 'readResponse'],
|
package/converters/toZigbee.js
CHANGED
|
@@ -2438,18 +2438,12 @@ const converters = {
|
|
|
2438
2438
|
} else {
|
|
2439
2439
|
await entity.command('closuresWindowCovering', 'stop', {}, utils.getOptions(meta.mapped, entity));
|
|
2440
2440
|
}
|
|
2441
|
-
|
|
2442
|
-
// Xiaomi curtain does not send position update on stop, request this.
|
|
2443
|
-
await entity.read('genAnalogOutput', [0x0055]);
|
|
2444
2441
|
} else {
|
|
2445
2442
|
const lookup = {'open': 100, 'close': 0, 'on': 100, 'off': 0};
|
|
2446
2443
|
|
|
2447
2444
|
value = typeof value === 'string' ? value.toLowerCase() : value;
|
|
2448
2445
|
value = lookup.hasOwnProperty(value) ? lookup[value] : value;
|
|
2449
|
-
|
|
2450
|
-
if (key === 'position') {
|
|
2451
|
-
value = meta.options.invert_cover ? 100 - value : value;
|
|
2452
|
-
}
|
|
2446
|
+
value = meta.options.invert_cover ? 100 - value : value;
|
|
2453
2447
|
|
|
2454
2448
|
const payload = {0x0055: {value, type: 0x39}};
|
|
2455
2449
|
await entity.write('genAnalogOutput', payload);
|
package/devices/awox.js
CHANGED
|
@@ -183,7 +183,7 @@ module.exports = [
|
|
|
183
183
|
model: '33943/33944/33946',
|
|
184
184
|
vendor: 'AwoX',
|
|
185
185
|
description: 'LED RGB & brightness',
|
|
186
|
-
extend: extend.light_onoff_brightness_colortemp_color(),
|
|
186
|
+
extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 370], supportsHS: true}),
|
|
187
187
|
},
|
|
188
188
|
{
|
|
189
189
|
fingerprint: [
|
package/devices/enocean.js
CHANGED
|
@@ -28,7 +28,8 @@ module.exports = [
|
|
|
28
28
|
exposes: [e.action(['press_1', 'release_1', 'press_2', 'release_2', 'press_3', 'release_3', 'press_4', 'release_4',
|
|
29
29
|
'press_1_and_2', 'release_1_and_2', 'press_1_and_3', 'release_1_and_3', 'press_1_and_4', 'release_1_and_4',
|
|
30
30
|
'press_2_and_3', 'release_2_and_3', 'press_2_and_4', 'release_2_and_4', 'press_3_and_4', 'release_3_and_4',
|
|
31
|
-
'press_energy_bar', 'release_energy_bar', 'press_or_release_all'
|
|
31
|
+
'press_energy_bar', 'release_energy_bar', 'press_or_release_all',
|
|
32
|
+
'lock', 'unlock', 'half_open', 'tilt'])],
|
|
32
33
|
whiteLabel: [
|
|
33
34
|
{vendor: 'Easyfit by EnOcean', description: 'Wall switch for Zigbee', model: 'EWSxZ'},
|
|
34
35
|
{vendor: 'Trio2sys', description: 'Zigbee Green Power complete switch', model: '20020002'},
|
package/devices/envilar.js
CHANGED
|
@@ -2,8 +2,20 @@ const reporting = require('../lib/reporting');
|
|
|
2
2
|
const extend = require('../lib/extend');
|
|
3
3
|
const exposes = require('../lib/exposes');
|
|
4
4
|
const e = exposes.presets;
|
|
5
|
+
const fz = require('../converters/fromZigbee');
|
|
5
6
|
|
|
6
7
|
module.exports = [
|
|
8
|
+
{
|
|
9
|
+
zigbeeModel: ['ZGR904-S'],
|
|
10
|
+
model: 'ZGR904-S',
|
|
11
|
+
vendor: 'Envilar',
|
|
12
|
+
description: 'Envilar touchlink remote',
|
|
13
|
+
meta: {battery: {dontDividePercentage: true}},
|
|
14
|
+
fromZigbee: [fz.command_recall, fz.command_on, fz.command_off, fz.command_move, fz.command_stop, fz.battery],
|
|
15
|
+
toZigbee: [],
|
|
16
|
+
exposes: [e.battery(),
|
|
17
|
+
e.action(['recall_1', 'recall_2', 'on', 'off', 'brightness_stop', 'brightness_move_up', 'brightness_move_down'])],
|
|
18
|
+
},
|
|
7
19
|
{
|
|
8
20
|
zigbeeModel: ['ZG102-BOX-UNIDIM'],
|
|
9
21
|
model: 'ZG102-BOX-UNIDIM',
|
package/devices/evn.js
CHANGED
|
@@ -1,26 +1,31 @@
|
|
|
1
1
|
const exposes = require('../lib/exposes');
|
|
2
|
+
const extend = require('../lib/extend');
|
|
2
3
|
const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
|
|
3
|
-
const reporting = require('../lib/reporting');
|
|
4
4
|
const e = exposes.presets;
|
|
5
5
|
|
|
6
6
|
module.exports = [
|
|
7
7
|
{
|
|
8
|
-
zigbeeModel: ['
|
|
8
|
+
zigbeeModel: ['ZBHS4RGBW'],
|
|
9
9
|
model: 'ZBHS4RGBW',
|
|
10
10
|
vendor: 'EVN',
|
|
11
11
|
description: 'Zigbee 4 channel RGBW remote control',
|
|
12
|
-
fromZigbee: [fz.battery, fz.
|
|
13
|
-
fz.
|
|
14
|
-
exposes: [e.battery(), e.action([
|
|
15
|
-
'
|
|
16
|
-
'
|
|
12
|
+
fromZigbee: [fz.battery, fz.command_move_to_color, fz.command_move_to_color_temp, fz.command_move_hue,
|
|
13
|
+
fz.command_step, fz.command_stop, fz.command_move, fz.command_recall, fz.command_on, fz.command_off],
|
|
14
|
+
exposes: [e.battery(), e.action([
|
|
15
|
+
'color_move', 'color_temperature_move', 'brightness_step_up', 'brightness_step_down',
|
|
16
|
+
'brightness_move_up', 'brightness_move_down', 'brightness_stop',
|
|
17
|
+
'hue_move', 'hue_stop', 'recall_*', 'on', 'off'])],
|
|
17
18
|
toZigbee: [],
|
|
18
19
|
meta: {multiEndpoint: true, battery: {dontDividePercentage: true}},
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genPowerCfg']);
|
|
22
|
-
await reporting.batteryVoltage(endpoint);
|
|
23
|
-
await reporting.batteryPercentageRemaining(endpoint);
|
|
20
|
+
endpoint: (device) => {
|
|
21
|
+
return {ep1: 1, ep2: 2, ep3: 3, ep4: 4};
|
|
24
22
|
},
|
|
25
23
|
},
|
|
24
|
+
{
|
|
25
|
+
zigbeeModel: ['ZB24100VS'],
|
|
26
|
+
model: 'ZB24100VS',
|
|
27
|
+
vendor: 'EVN',
|
|
28
|
+
description: 'Zigbee multicolor controller with power supply',
|
|
29
|
+
extend: extend.light_onoff_brightness_colortemp_color({supportsHS: true, colorTempRange: [160, 450]}),
|
|
30
|
+
},
|
|
26
31
|
];
|
package/devices/keen_home.js
CHANGED
|
@@ -22,7 +22,7 @@ module.exports = [
|
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
zigbeeModel: ['SV01-410-MP-1.0', 'SV01-410-MP-1.1', 'SV01-410-MP-1.4', 'SV01-410-MP-1.5', 'SV01-412-MP-1.0',
|
|
25
|
-
'SV01-412-MP-1.4', 'SV01-610-MP-1.0', 'SV01-610-MP-1.1', 'SV01-612-MP-1.0', 'SV01-610-MP-1.4'],
|
|
25
|
+
'SV01-412-MP-1.1', 'SV01-412-MP-1.4', 'SV01-610-MP-1.0', 'SV01-610-MP-1.1', 'SV01-612-MP-1.0', 'SV01-610-MP-1.4'],
|
|
26
26
|
model: 'SV01',
|
|
27
27
|
vendor: 'Keen Home',
|
|
28
28
|
description: 'Smart vent',
|
package/devices/lidl.js
CHANGED
|
@@ -378,6 +378,15 @@ module.exports = [
|
|
|
378
378
|
await reporting.onOff(endpoint);
|
|
379
379
|
},
|
|
380
380
|
},
|
|
381
|
+
{
|
|
382
|
+
fingerprint: [{modelID: 'TS004F', manufacturerName: '_TZ3000_rco1yzb1'}],
|
|
383
|
+
model: 'HG08164',
|
|
384
|
+
vendor: 'Lidl',
|
|
385
|
+
description: 'Silvercrest smart button',
|
|
386
|
+
fromZigbee: [fz.command_on, fz.command_off, fz.command_step, fz.command_stop, fz.battery],
|
|
387
|
+
toZigbee: [],
|
|
388
|
+
exposes: [e.action(['on', 'off', 'brightness_stop', 'brightness_step_up', 'brightness_step_down']), e.battery()],
|
|
389
|
+
},
|
|
381
390
|
{
|
|
382
391
|
fingerprint: [{modelID: 'TS0211', manufacturerName: '_TZ1800_ladpngdx'}],
|
|
383
392
|
model: 'HG06668',
|
package/devices/orvibo.js
CHANGED
|
@@ -6,6 +6,13 @@ const extend = require('../lib/extend');
|
|
|
6
6
|
const e = exposes.presets;
|
|
7
7
|
|
|
8
8
|
module.exports = [
|
|
9
|
+
{
|
|
10
|
+
zigbeeModel: ['ORVIBO Socket'],
|
|
11
|
+
model: 'OR-ZB-S010-3C',
|
|
12
|
+
vendor: 'ORVIBO',
|
|
13
|
+
description: 'Smart Socket',
|
|
14
|
+
extend: extend.switch(),
|
|
15
|
+
},
|
|
9
16
|
{
|
|
10
17
|
zigbeeModel: ['3c4e4fc81ed442efaf69353effcdfc5f', '51725b7bcba945c8a595b325127461e9'],
|
|
11
18
|
model: 'CR11S8UZ',
|
package/devices/philips.js
CHANGED
|
@@ -1513,6 +1513,15 @@ module.exports = [
|
|
|
1513
1513
|
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 500]}),
|
|
1514
1514
|
ota: ota.zigbeeOTA,
|
|
1515
1515
|
},
|
|
1516
|
+
{
|
|
1517
|
+
zigbeeModel: ['4023331P6'],
|
|
1518
|
+
model: '4023331P6',
|
|
1519
|
+
vendor: 'Philips',
|
|
1520
|
+
description: 'Hue white ambiance Amaze',
|
|
1521
|
+
meta: {turnsOffAtBrightness1: true},
|
|
1522
|
+
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 500]}),
|
|
1523
|
+
ota: ota.zigbeeOTA,
|
|
1524
|
+
},
|
|
1516
1525
|
{
|
|
1517
1526
|
zigbeeModel: ['929003054801'],
|
|
1518
1527
|
model: '929003054801',
|
|
@@ -2732,6 +2741,15 @@ module.exports = [
|
|
|
2732
2741
|
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
2733
2742
|
ota: ota.zigbeeOTA,
|
|
2734
2743
|
},
|
|
2744
|
+
{
|
|
2745
|
+
zigbeeModel: ['1746530P7'],
|
|
2746
|
+
model: '1746530P7',
|
|
2747
|
+
vendor: 'Philips',
|
|
2748
|
+
description: 'Hue White and color ambiance Daylo outdoor wall lamp',
|
|
2749
|
+
meta: {turnsOffAtBrightness1: true},
|
|
2750
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
2751
|
+
ota: ota.zigbeeOTA,
|
|
2752
|
+
},
|
|
2735
2753
|
{
|
|
2736
2754
|
zigbeeModel: ['1746547P7'],
|
|
2737
2755
|
model: '1746547P7',
|
|
@@ -680,7 +680,7 @@ module.exports = [
|
|
|
680
680
|
},
|
|
681
681
|
{
|
|
682
682
|
zigbeeModel: ['CCT595011_AS'],
|
|
683
|
-
model: '
|
|
683
|
+
model: 'CCT595011',
|
|
684
684
|
vendor: 'Schneider Electric',
|
|
685
685
|
description: 'Wiser motion sensor',
|
|
686
686
|
fromZigbee: [fz.battery, fz.ias_enroll, fz.ias_occupancy_only_alarm_2, fz.illuminance],
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const exposes = require('../lib/exposes');
|
|
2
|
+
const reporting = require('../lib/reporting');
|
|
3
|
+
const extend = require('../lib/extend');
|
|
4
|
+
const e = exposes.presets;
|
|
5
|
+
|
|
6
|
+
module.exports = [
|
|
7
|
+
{
|
|
8
|
+
zigbeeModel: ['1719SP-PS1-02'],
|
|
9
|
+
model: 'SP-PS1-02',
|
|
10
|
+
vendor: 'Spotmau',
|
|
11
|
+
description: 'Smart wall switch - 1 gang',
|
|
12
|
+
extend: extend.switch(),
|
|
13
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
14
|
+
await reporting.bind(device.getEndpoint(16), coordinatorEndpoint, ['genOnOff', 'genBasic']);
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
zigbeeModel: ['1719SP-PS2-02'],
|
|
19
|
+
model: 'SP-PS2-02',
|
|
20
|
+
vendor: 'Spotmau',
|
|
21
|
+
description: 'Smart wall switch - 2 gang',
|
|
22
|
+
extend: extend.switch(),
|
|
23
|
+
exposes: [e.switch().withEndpoint('left'), e.switch().withEndpoint('right')],
|
|
24
|
+
endpoint: (device) => {
|
|
25
|
+
return {'left': 16, 'right': 17};
|
|
26
|
+
},
|
|
27
|
+
meta: {multiEndpoint: true},
|
|
28
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
29
|
+
await reporting.bind(device.getEndpoint(16), coordinatorEndpoint, ['genOnOff', 'genBasic']);
|
|
30
|
+
await reporting.bind(device.getEndpoint(17), coordinatorEndpoint, ['genOnOff', 'genBasic']);
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
];
|
package/devices/tuya.js
CHANGED
|
@@ -53,6 +53,29 @@ const fzLocal = {
|
|
|
53
53
|
return fz.battery.convert(model, msg, publish, options, meta);
|
|
54
54
|
},
|
|
55
55
|
},
|
|
56
|
+
TS0222: {
|
|
57
|
+
cluster: 'manuSpecificTuya',
|
|
58
|
+
type: ['commandDataResponse', 'commandDataReport'],
|
|
59
|
+
convert: (model, msg, publish, options, meta) => {
|
|
60
|
+
const result = {};
|
|
61
|
+
for (const dpValue of msg.data.dpValues) {
|
|
62
|
+
const dp = dpValue.dp;
|
|
63
|
+
const value = tuya.getDataValue(dpValue);
|
|
64
|
+
switch (dp) {
|
|
65
|
+
case 2:
|
|
66
|
+
result.illuminance = value;
|
|
67
|
+
result.illuminance_lux = value;
|
|
68
|
+
break;
|
|
69
|
+
case 4:
|
|
70
|
+
result.battery = value;
|
|
71
|
+
break;
|
|
72
|
+
default:
|
|
73
|
+
meta.logger.warn(`zigbee-herdsman-converters:TS0222 Unrecognized DP #${dp} with data ${JSON.stringify(dpValue)}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
77
|
+
},
|
|
78
|
+
},
|
|
56
79
|
};
|
|
57
80
|
|
|
58
81
|
module.exports = [
|
|
@@ -723,6 +746,31 @@ module.exports = [
|
|
|
723
746
|
} catch (error) {/* Fails for some: https://github.com/Koenkk/zigbee2mqtt/issues/6313 */}
|
|
724
747
|
},
|
|
725
748
|
},
|
|
749
|
+
{
|
|
750
|
+
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_3zofvcaa'}],
|
|
751
|
+
model: 'TS011F_2_gang_2_usb_wall',
|
|
752
|
+
vendor: 'TuYa',
|
|
753
|
+
description: '2 gang 2 usb wall outlet',
|
|
754
|
+
toZigbee: extend.switch().toZigbee.concat([tz.moes_power_on_behavior, tz.tuya_backlight_mode]),
|
|
755
|
+
fromZigbee: extend.switch().fromZigbee.concat([fz.moes_power_on_behavior, fz.tuya_backlight_mode]),
|
|
756
|
+
exposes: [e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2'), e.switch().withEndpoint('l3'),
|
|
757
|
+
e.switch().withEndpoint('l4'), exposes.enum('power_on_behavior', ea.ALL, ['on', 'off', 'previous']),
|
|
758
|
+
exposes.enum('backlight_mode', ea.ALL, ['LOW', 'MEDIUM', 'HIGH']),
|
|
759
|
+
],
|
|
760
|
+
endpoint: () => {
|
|
761
|
+
return {'l1': 1, 'l2': 2, 'l3': 3, 'l4': 4};
|
|
762
|
+
},
|
|
763
|
+
meta: {multiEndpoint: true},
|
|
764
|
+
configure: async (device, coordinatorEndpoint) => {
|
|
765
|
+
await device.getEndpoint(1).read('genBasic',
|
|
766
|
+
['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
767
|
+
for (const endpointID of [1, 2, 3, 4]) {
|
|
768
|
+
const endpoint = device.getEndpoint(endpointID);
|
|
769
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
|
770
|
+
await reporting.onOff(endpoint);
|
|
771
|
+
}
|
|
772
|
+
},
|
|
773
|
+
},
|
|
726
774
|
{
|
|
727
775
|
zigbeeModel: ['TS0042'],
|
|
728
776
|
model: 'TS0042',
|
|
@@ -1804,9 +1852,13 @@ module.exports = [
|
|
|
1804
1852
|
model: 'TS0222',
|
|
1805
1853
|
vendor: 'TuYa',
|
|
1806
1854
|
description: 'Light intensity sensor',
|
|
1807
|
-
fromZigbee: [fz.battery, fz.illuminance],
|
|
1855
|
+
fromZigbee: [fz.battery, fz.illuminance, fzLocal.TS0222],
|
|
1808
1856
|
toZigbee: [],
|
|
1809
1857
|
exposes: [e.battery(), e.illuminance(), e.illuminance_lux()],
|
|
1858
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1859
|
+
const endpoint = device.getEndpoint(1);
|
|
1860
|
+
await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
1861
|
+
},
|
|
1810
1862
|
},
|
|
1811
1863
|
{
|
|
1812
1864
|
fingerprint: [{modelID: 'TS0210', manufacturerName: '_TYZB01_3zv6oleo'},
|
package/devices/xiaomi.js
CHANGED
|
@@ -1236,7 +1236,7 @@ module.exports = [
|
|
|
1236
1236
|
model: 'ZNCLDJ11LM',
|
|
1237
1237
|
description: 'Aqara curtain motor',
|
|
1238
1238
|
vendor: 'Xiaomi',
|
|
1239
|
-
fromZigbee: [fz.xiaomi_basic, fz.xiaomi_curtain_position, fz.
|
|
1239
|
+
fromZigbee: [fz.xiaomi_basic, fz.xiaomi_curtain_position, fz.xiaomi_curtain_position_tilt],
|
|
1240
1240
|
toZigbee: [tz.xiaomi_curtain_position_state, tz.xiaomi_curtain_options],
|
|
1241
1241
|
exposes: [e.cover_position().setAccess('state', ea.ALL),
|
|
1242
1242
|
exposes.binary('running', ea.STATE, true, false)
|
|
@@ -1250,7 +1250,7 @@ module.exports = [
|
|
|
1250
1250
|
model: 'SRSC-M01',
|
|
1251
1251
|
description: 'Aqara roller shade motor',
|
|
1252
1252
|
vendor: 'Xiaomi',
|
|
1253
|
-
fromZigbee: [fz.xiaomi_basic, fz.xiaomi_curtain_position, fz.
|
|
1253
|
+
fromZigbee: [fz.xiaomi_basic, fz.xiaomi_curtain_position, fz.xiaomi_curtain_position_tilt],
|
|
1254
1254
|
toZigbee: [tz.xiaomi_curtain_position_state, tz.xiaomi_curtain_options],
|
|
1255
1255
|
exposes: [e.cover_position().setAccess('state', ea.ALL),
|
|
1256
1256
|
exposes.binary('running', ea.STATE, true, false)
|
|
@@ -1262,7 +1262,7 @@ module.exports = [
|
|
|
1262
1262
|
model: 'ZNCLDJ12LM',
|
|
1263
1263
|
vendor: 'Xiaomi',
|
|
1264
1264
|
description: 'Aqara B1 curtain motor',
|
|
1265
|
-
fromZigbee: [fz.xiaomi_basic, fz.xiaomi_curtain_position, fz.battery, fz.
|
|
1265
|
+
fromZigbee: [fz.xiaomi_basic, fz.xiaomi_curtain_position, fz.battery, fz.xiaomi_curtain_position_tilt],
|
|
1266
1266
|
toZigbee: [tz.xiaomi_curtain_position_state, tz.xiaomi_curtain_options],
|
|
1267
1267
|
onEvent: async (type, data, device) => {
|
|
1268
1268
|
// The position (genAnalogOutput.presentValue) reported via an attribute contains an invaid value
|
|
@@ -1286,8 +1286,8 @@ module.exports = [
|
|
|
1286
1286
|
model: 'ZNJLBL01LM',
|
|
1287
1287
|
description: 'Aqara roller shade companion E1',
|
|
1288
1288
|
vendor: 'Xiaomi',
|
|
1289
|
-
fromZigbee: [fz.xiaomi_curtain_acn002_position, fz.xiaomi_curtain_acn002_status, fz.
|
|
1290
|
-
fz.aqara_opple],
|
|
1289
|
+
fromZigbee: [fz.xiaomi_curtain_acn002_position, fz.xiaomi_curtain_acn002_status, fz.xiaomi_curtain_position_tilt,
|
|
1290
|
+
fz.ignore_basic_report, fz.aqara_opple],
|
|
1291
1291
|
toZigbee: [tz.xiaomi_curtain_position_state, tz.xiaomi_curtain_acn002_battery, tz.xiaomi_curtain_acn002_charging_status],
|
|
1292
1292
|
exposes: [e.cover_position().setAccess('state', ea.ALL), e.battery().withAccess(ea.STATE_GET),
|
|
1293
1293
|
exposes.binary('charging_status', ea.STATE_GET, true, false)
|
package/lib/tuya.js
CHANGED
|
@@ -164,7 +164,7 @@ function convertStringToHexArray(value) {
|
|
|
164
164
|
// Default is 100 = open, 0 = closed; Devices listed here will use 0 = open, 100 = closed instead
|
|
165
165
|
// Use manufacturerName to identify device!
|
|
166
166
|
// Dont' invert _TZE200_cowvfni3: https://github.com/Koenkk/zigbee2mqtt/issues/6043
|
|
167
|
-
const coverPositionInvert = ['_TZE200_wmcdj3aq', '_TZE200_nogaemzt', '_TZE200_xuzcvlku', '_TZE200_xaabybja'];
|
|
167
|
+
const coverPositionInvert = ['_TZE200_wmcdj3aq', '_TZE200_nogaemzt', '_TZE200_xuzcvlku', '_TZE200_xaabybja', '_TZE200_rmymn92d'];
|
|
168
168
|
|
|
169
169
|
// Gets a boolean indicating whether the cover by this manufacturerName needs reversed positions
|
|
170
170
|
function isCoverInverted(manufacturerName) {
|
package/lib/xiaomi.js
CHANGED
|
@@ -416,7 +416,8 @@ const numericAttributes2Payload = (msg, meta, model, options, dataObject) => {
|
|
|
416
416
|
break;
|
|
417
417
|
case '1028':
|
|
418
418
|
payload = {...payload,
|
|
419
|
-
motor_state: {0: 'stopped', 1: '
|
|
419
|
+
motor_state: (options.invert_cover ? {0: 'stopped', 1: 'closing', 2: 'opening'} :
|
|
420
|
+
{0: 'stopped', 1: 'opening', 2: 'closing'})[value],
|
|
420
421
|
running: !!value,
|
|
421
422
|
};
|
|
422
423
|
break;
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zigbee-herdsman-converters",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.463",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "zigbee-herdsman-converters",
|
|
9
|
-
"version": "14.0.
|
|
9
|
+
"version": "14.0.463",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"axios": "^0.26.1",
|