zigbee-herdsman-converters 14.0.687 → 14.0.689
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 +0 -25
- package/devices/adeo.js +7 -0
- package/devices/ewelink.js +23 -0
- package/devices/fantem.js +2 -1
- package/devices/ikea.js +1 -0
- package/devices/mecrator.js +1 -1
- package/devices/moes.js +2 -1
- package/devices/m/303/274ller_licht.js +1 -1
- package/devices/tuya.js +37 -28
- package/devices/zemismart.js +3 -0
- package/lib/tuya.js +29 -0
- package/package.json +3 -3
package/converters/fromZigbee.js
CHANGED
|
@@ -5040,31 +5040,6 @@ const converters = {
|
|
|
5040
5040
|
}
|
|
5041
5041
|
},
|
|
5042
5042
|
},
|
|
5043
|
-
tuya_smoke: {
|
|
5044
|
-
cluster: 'manuSpecificTuya',
|
|
5045
|
-
type: ['commandDataResponse', 'commandDataReport'],
|
|
5046
|
-
convert: (model, msg, publish, options, meta) => {
|
|
5047
|
-
const result = {};
|
|
5048
|
-
for (const dpValue of msg.data.dpValues) {
|
|
5049
|
-
const dp = dpValue.dp;
|
|
5050
|
-
const value = tuya.getDataValue(dpValue);
|
|
5051
|
-
switch (dp) {
|
|
5052
|
-
case tuya.dataPoints.state:
|
|
5053
|
-
result.smoke = value === 0;
|
|
5054
|
-
break;
|
|
5055
|
-
case 14:
|
|
5056
|
-
// battery state, ignore
|
|
5057
|
-
break;
|
|
5058
|
-
case 15:
|
|
5059
|
-
result.battery = value;
|
|
5060
|
-
break;
|
|
5061
|
-
default:
|
|
5062
|
-
meta.logger.warn(`zigbee-herdsman-converters:tuya_smoke: Unrecognized DP #${ dp} with data ${JSON.stringify(dpValue)}`);
|
|
5063
|
-
}
|
|
5064
|
-
}
|
|
5065
|
-
return result;
|
|
5066
|
-
},
|
|
5067
|
-
},
|
|
5068
5043
|
tuya_woox_smoke: {
|
|
5069
5044
|
cluster: 'manuSpecificTuya',
|
|
5070
5045
|
type: ['commandDataResponse'],
|
package/devices/adeo.js
CHANGED
|
@@ -52,6 +52,13 @@ module.exports = [
|
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
},
|
|
55
|
+
{
|
|
56
|
+
zigbeeModel: ['ZBEK-7'],
|
|
57
|
+
model: 'IST-CDZFB2AS007NA-MZN-02',
|
|
58
|
+
vendor: 'ADEO',
|
|
59
|
+
description: 'ENKI LEXMAN E27 LED Edison white filament 806 lumen',
|
|
60
|
+
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
61
|
+
},
|
|
55
62
|
{
|
|
56
63
|
zigbeeModel: ['ZBEK-8'],
|
|
57
64
|
model: 'IG-CDZFB2G009RA-MZN-02',
|
package/devices/ewelink.js
CHANGED
|
@@ -122,4 +122,27 @@ module.exports = [
|
|
|
122
122
|
device.skipDefaultResponse = true;
|
|
123
123
|
},
|
|
124
124
|
},
|
|
125
|
+
{
|
|
126
|
+
zigbeeModel: ['ZB-SW05'],
|
|
127
|
+
model: 'ZB-SW05',
|
|
128
|
+
vendor: 'eWeLink',
|
|
129
|
+
description: 'Smart light switch - 5 gang',
|
|
130
|
+
extend: extend.switch(),
|
|
131
|
+
exposes: [e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2'),
|
|
132
|
+
e.switch().withEndpoint('l3'), e.switch().withEndpoint('l4'), e.switch().withEndpoint('l5')],
|
|
133
|
+
endpoint: (device) => {
|
|
134
|
+
return {'l1': 1, 'l2': 2, 'l3': 3, 'l4': 4, 'l5': 5};
|
|
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
|
+
await reporting.bind(device.getEndpoint(5), coordinatorEndpoint, ['genOnOff']);
|
|
143
|
+
},
|
|
144
|
+
onEvent: async (type, data, device) => {
|
|
145
|
+
device.skipDefaultResponse = true;
|
|
146
|
+
},
|
|
147
|
+
},
|
|
125
148
|
];
|
package/devices/fantem.js
CHANGED
|
@@ -48,7 +48,8 @@ module.exports = [
|
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
fingerprint: [{modelID: 'TS0202', manufacturerName: '_TZ3210_rxqls8v0'},
|
|
51
|
-
{modelID: 'TS0202', manufacturerName: '_TZ3210_zmy9hjay'}
|
|
51
|
+
{modelID: 'TS0202', manufacturerName: '_TZ3210_zmy9hjay'},
|
|
52
|
+
{modelID: 'TS0202', manufacturerName: '_TZ3210_wuhzzfqg'}],
|
|
52
53
|
model: 'ZB003-X',
|
|
53
54
|
vendor: 'Fantem',
|
|
54
55
|
description: '4 in 1 multi sensor',
|
package/devices/ikea.js
CHANGED
|
@@ -901,6 +901,7 @@ module.exports = [
|
|
|
901
901
|
vendor: 'IKEA',
|
|
902
902
|
description: 'TRADFRI LED bulb E14 470 lumen, opal, dimmable, white spectrum, color spectrum',
|
|
903
903
|
extend: tradfriExtend.light_onoff_brightness_colortemp_color(),
|
|
904
|
+
meta: {turnsOffAtBrightness1: true},
|
|
904
905
|
},
|
|
905
906
|
{
|
|
906
907
|
zigbeeModel: ['TRADFRIbulbE14WWclear250lm', 'TRADFRIbulbE12WWclear250lm'],
|
package/devices/mecrator.js
CHANGED
|
@@ -30,7 +30,7 @@ module.exports = [
|
|
|
30
30
|
},
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
|
-
fingerprint:
|
|
33
|
+
fingerprint: tuya.fingerprint('TS011F', ['_TZ3210_7jnk7l3k', '_TZ3210_raqjcxo5']),
|
|
34
34
|
model: 'SPP02GIP',
|
|
35
35
|
vendor: 'Mercator',
|
|
36
36
|
description: 'Ikuü double outdoors power point',
|
package/devices/moes.js
CHANGED
|
@@ -341,7 +341,8 @@ module.exports = [
|
|
|
341
341
|
]),
|
|
342
342
|
meta: {applyRedFix: true, enhancedHue: false},
|
|
343
343
|
fromZigbee: extend.light_onoff_brightness_colortemp_color().fromZigbee,
|
|
344
|
-
exposes: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500], disableColorTempStartup: true
|
|
344
|
+
exposes: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500], disableColorTempStartup: true,
|
|
345
|
+
disablePowerOnBehavior: true}).exposes.concat([
|
|
345
346
|
exposes.binary('do_not_disturb', ea.STATE_SET, true, false)
|
|
346
347
|
.withDescription('Do not disturb mode'),
|
|
347
348
|
exposes.enum('color_power_on_behavior', ea.STATE_SET, ['initial', 'previous', 'cutomized'])
|
|
@@ -101,7 +101,7 @@ module.exports = [
|
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
103
|
zigbeeModel: ['RGB-CCT'],
|
|
104
|
-
model: '404028',
|
|
104
|
+
model: '404028/44435',
|
|
105
105
|
vendor: 'Müller Licht',
|
|
106
106
|
description: 'Tint LED Panel, color, opal white',
|
|
107
107
|
extend: extend.light_onoff_brightness_colortemp_color(),
|
package/devices/tuya.js
CHANGED
|
@@ -470,11 +470,10 @@ const fzLocal = {
|
|
|
470
470
|
TS0201_humidity: {
|
|
471
471
|
...fz.humidity,
|
|
472
472
|
convert: (model, msg, publish, options, meta) => {
|
|
473
|
-
const result = fz.humidity.convert(model, msg, publish, options, meta);
|
|
474
473
|
if (meta.device.manufacturerName === '_TZ3000_ywagc4rj') {
|
|
475
|
-
|
|
474
|
+
msg.data['measuredValue'] *= 10;
|
|
476
475
|
}
|
|
477
|
-
return
|
|
476
|
+
return fz.humidity.convert(model, msg, publish, options, meta);
|
|
478
477
|
},
|
|
479
478
|
},
|
|
480
479
|
TS0222: {
|
|
@@ -971,6 +970,13 @@ module.exports = [
|
|
|
971
970
|
extend: tuya.extend.switch(),
|
|
972
971
|
whiteLabel: [{vendor: 'KTNNKG', model: 'ZB1248-10A'}],
|
|
973
972
|
},
|
|
973
|
+
{
|
|
974
|
+
zigbeeModel: ['CK-BL702-AL-01(7009_Z102LG03-1)'],
|
|
975
|
+
model: 'CK-BL702-AL-01',
|
|
976
|
+
vendor: 'TuYa',
|
|
977
|
+
description: 'Zigbee LED bulb',
|
|
978
|
+
extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [142, 500]}),
|
|
979
|
+
},
|
|
974
980
|
{
|
|
975
981
|
zigbeeModel: ['TS0505B'],
|
|
976
982
|
model: 'TS0505B',
|
|
@@ -1988,6 +1994,7 @@ module.exports = [
|
|
|
1988
1994
|
{modelID: 'TS0601', manufacturerName: '_TZE200_g5wdnuow'},
|
|
1989
1995
|
// Tubular motors:
|
|
1990
1996
|
{modelID: 'TS0601', manufacturerName: '_TZE200_5sbebbzs'},
|
|
1997
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_udank5zs'},
|
|
1991
1998
|
{modelID: 'TS0601', manufacturerName: '_TZE200_zuz7f94z'},
|
|
1992
1999
|
{modelID: 'TS0601', manufacturerName: '_TZE200_68nvbio9'},
|
|
1993
2000
|
],
|
|
@@ -2028,6 +2035,7 @@ module.exports = [
|
|
|
2028
2035
|
fingerprint: [
|
|
2029
2036
|
{modelID: 'TS0601', manufacturerName: '_TZE200_ckud7u2l'},
|
|
2030
2037
|
{modelID: 'TS0601', manufacturerName: '_TZE200_ywdxldoj'},
|
|
2038
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_do5qy8zo'},
|
|
2031
2039
|
{modelID: 'TS0601', manufacturerName: '_TZE200_cwnjrr72'},
|
|
2032
2040
|
{modelID: 'TS0601', manufacturerName: '_TZE200_pvvbommb'},
|
|
2033
2041
|
{modelID: 'TS0601', manufacturerName: '_TZE200_9sfg7gm0'}, // HomeCloud
|
|
@@ -2107,24 +2115,18 @@ module.exports = [
|
|
|
2107
2115
|
exposes: [
|
|
2108
2116
|
e.battery_low(), e.child_lock(), e.open_window(), e.open_window_temperature().withValueMin(5).withValueMax(30),
|
|
2109
2117
|
e.comfort_temperature().withValueMin(5).withValueMax(30), e.eco_temperature().withValueMin(5).withValueMax(30),
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
.withSystemMode(['off', 'heat'], ea.STATE_SET, '
|
|
2113
|
-
|
|
2114
|
-
'
|
|
2115
|
-
'
|
|
2116
|
-
|
|
2117
|
-
'
|
|
2118
|
-
'`holiday_start_stop` and `holiday_temperature` properties.')
|
|
2119
|
-
.withLocalTemperatureCalibration(-5, 5, 0.1, ea.STATE_SET)
|
|
2120
|
-
.withLocalTemperature(ea.STATE)
|
|
2121
|
-
.withSetpoint('current_heating_setpoint', 5, 30, 0.5, ea.STATE_SET),
|
|
2118
|
+
exposes.climate().withPreset(['auto', 'manual', 'holiday']).withLocalTemperatureCalibration(-5, 5, 0.1, ea.STATE_SET)
|
|
2119
|
+
.withLocalTemperature(ea.STATE).withSetpoint('current_heating_setpoint', 5, 30, 0.5, ea.SET)
|
|
2120
|
+
.withSystemMode(['off', 'heat'], ea.STATE_SET, 'Only for Homeassistant'),
|
|
2121
|
+
exposes.binary('heating_stop', ea.STATE_SET, 'ON', 'OFF').withDescription('Battery life can be prolonged'+
|
|
2122
|
+
' by switching the heating off. To achieve this, the valve is closed fully. To activate the '+
|
|
2123
|
+
'heating stop, the device display "HS", press the pair button to cancel.'),
|
|
2124
|
+
tuya.exposes.frostProtection('When Anti-Freezing function is activated, the temperature in the house is kept '+
|
|
2125
|
+
'at 8 °C, the device display "AF".press the pair button to cancel.'),
|
|
2122
2126
|
exposes.numeric('boost_timeset_countdown', ea.STATE_SET).withUnit('second').withDescription('Setting '+
|
|
2123
2127
|
'minimum 0 - maximum 465 seconds boost time. The boost (♨) function is activated. The remaining '+
|
|
2124
2128
|
'time for the function will be counted down in seconds ( 465 to 0 ).').withValueMin(0).withValueMax(465),
|
|
2125
|
-
|
|
2126
|
-
exposes.numeric('holiday_temperature', ea.STATE_SET).withUnit('°C').withDescription('Holiday temperature')
|
|
2127
|
-
.withValueMin(5).withValueMax(30),
|
|
2129
|
+
e.holiday_temperature().withValueMin(5).withValueMax(30),
|
|
2128
2130
|
exposes.text('holiday_start_stop', ea.STATE_SET).withDescription('The holiday mode will automatically start ' +
|
|
2129
2131
|
'at the set time starting point and run the holiday temperature. Can be defined in the following format: ' +
|
|
2130
2132
|
'`startYear/startMonth/startDay startHours:startMinutes | endYear/endMonth/endDay endHours:endMinutes`. ' +
|
|
@@ -2146,15 +2148,15 @@ module.exports = [
|
|
|
2146
2148
|
'period and until the next period, e.g., `04:00/20 24:00/22` means that from 00:00 to 04:00 temperature will be 20 ' +
|
|
2147
2149
|
'degrees and from 04:00 to 00:00 temperature will be 22 degrees.'),
|
|
2148
2150
|
...tuya.exposes.scheduleAllDays(ea.STATE, 'HH:MM/C'),
|
|
2149
|
-
exposes.binary('online', ea.STATE_SET, 'ON', 'OFF').withDescription('
|
|
2150
|
-
|
|
2151
|
-
'Setting this property doesn\'t turn on the display.'),
|
|
2151
|
+
exposes.binary('online', ea.STATE_SET, 'ON', 'OFF').withDescription('The current data request from the device.'),
|
|
2152
|
+
tuya.exposes.errorStatus(),
|
|
2152
2153
|
],
|
|
2153
2154
|
meta: {
|
|
2154
2155
|
tuyaDatapoints: [
|
|
2155
2156
|
[2, 'preset', tuya.valueConverterBasic.lookup({'auto': tuya.enum(0), 'manual': tuya.enum(1), 'holiday': tuya.enum(3)})],
|
|
2156
2157
|
[8, 'open_window', tuya.valueConverter.onOff],
|
|
2157
|
-
[10,
|
|
2158
|
+
[10, null, tuya.valueConverter.TV02FrostProtection],
|
|
2159
|
+
[10, 'frost_protection', tuya.valueConverter.TV02FrostProtection],
|
|
2158
2160
|
[16, 'current_heating_setpoint', tuya.valueConverter.divideBy10],
|
|
2159
2161
|
[24, 'local_temperature', tuya.valueConverter.divideBy10],
|
|
2160
2162
|
[27, 'local_temperature_calibration', tuya.valueConverter.localTempCalibration1],
|
|
@@ -2171,8 +2173,8 @@ module.exports = [
|
|
|
2171
2173
|
[105, 'eco_temperature', tuya.valueConverter.divideBy10],
|
|
2172
2174
|
[106, 'schedule', tuya.valueConverter.thermostatScheduleDaySingleDP],
|
|
2173
2175
|
[107, null, tuya.valueConverter.TV02SystemMode],
|
|
2174
|
-
[107, 'system_mode', tuya.
|
|
2175
|
-
[107, 'heating_stop', tuya.valueConverter.
|
|
2176
|
+
[107, 'system_mode', tuya.valueConverter.TV02SystemMode],
|
|
2177
|
+
[107, 'heating_stop', tuya.valueConverter.TV02SystemMode],
|
|
2176
2178
|
[115, 'online', tuya.valueConverter.onOffNotStrict],
|
|
2177
2179
|
[108, 'schedule_monday', tuya.valueConverter.thermostatScheduleDaySingleDP],
|
|
2178
2180
|
[112, 'schedule_tuesday', tuya.valueConverter.thermostatScheduleDaySingleDP],
|
|
@@ -2493,13 +2495,20 @@ module.exports = [
|
|
|
2493
2495
|
},
|
|
2494
2496
|
{
|
|
2495
2497
|
zigbeeModel: ['5p1vj8r'],
|
|
2496
|
-
fingerprint:
|
|
2498
|
+
fingerprint: tuya.fingerprint('TS0601', ['_TZE200_t5p1vj8r', '_TZE200_uebojraa', '_TZE200_vzekyi4c', '_TZE200_yh7aoahi']),
|
|
2497
2499
|
model: 'TS0601_smoke',
|
|
2498
2500
|
vendor: 'TuYa',
|
|
2499
2501
|
description: 'Smoke sensor',
|
|
2500
|
-
fromZigbee: [fz.
|
|
2501
|
-
toZigbee: [],
|
|
2502
|
-
exposes: [e.smoke(), e.battery()],
|
|
2502
|
+
fromZigbee: [tuya.fz.datapoints],
|
|
2503
|
+
toZigbee: [tuya.tz.datapoints],
|
|
2504
|
+
exposes: [e.smoke(), e.battery(), tuya.exposes.batteryState()],
|
|
2505
|
+
meta: {
|
|
2506
|
+
tuyaDatapoints: [
|
|
2507
|
+
[1, 'smoke', tuya.valueConverter.true0ElseFalse],
|
|
2508
|
+
[14, 'battery_state', tuya.valueConverter.batteryState],
|
|
2509
|
+
[15, 'battery', tuya.valueConverter.raw],
|
|
2510
|
+
],
|
|
2511
|
+
},
|
|
2503
2512
|
},
|
|
2504
2513
|
{
|
|
2505
2514
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_5d3vhjro'}],
|
package/devices/zemismart.js
CHANGED
|
@@ -83,6 +83,9 @@ module.exports = [
|
|
|
83
83
|
description: 'Smart light switch and socket - 2 gang with neutral wire',
|
|
84
84
|
extend: tuya.extend.switch({endpoints: ['left', 'center', 'right']}),
|
|
85
85
|
meta: {multiEndpoint: true},
|
|
86
|
+
endpoint: () => {
|
|
87
|
+
return {'left': 1, 'center': 2, 'right': 3};
|
|
88
|
+
},
|
|
86
89
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
87
90
|
await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
|
|
88
91
|
for (const endpointID of [1, 2, 3]) {
|
package/lib/tuya.js
CHANGED
|
@@ -1470,10 +1470,39 @@ const valueConverter = {
|
|
|
1470
1470
|
},
|
|
1471
1471
|
},
|
|
1472
1472
|
TV02SystemMode: {
|
|
1473
|
+
to: async (v, meta) => {
|
|
1474
|
+
const entity = meta.device.endpoints[0];
|
|
1475
|
+
if (meta.message.system_mode) {
|
|
1476
|
+
if (meta.message.system_mode === 'off') {
|
|
1477
|
+
await sendDataPointBool(entity, 107, true, 'dataRequest', 1);
|
|
1478
|
+
} else {
|
|
1479
|
+
await sendDataPointEnum(entity, 2, 1, 'dataRequest', 1); // manual
|
|
1480
|
+
}
|
|
1481
|
+
} else if (meta.message.heating_stop) {
|
|
1482
|
+
if (meta.message.heating_stop === 'ON') {
|
|
1483
|
+
await sendDataPointBool(entity, 107, true, 'dataRequest', 1);
|
|
1484
|
+
} else {
|
|
1485
|
+
await sendDataPointEnum(entity, 2, 1, 'dataRequest', 1); // manual
|
|
1486
|
+
}
|
|
1487
|
+
}
|
|
1488
|
+
},
|
|
1473
1489
|
from: (v) => {
|
|
1474
1490
|
return {system_mode: v === false ? 'heat' : 'off', heating_stop: v === false ? 'OFF' : 'ON'};
|
|
1475
1491
|
},
|
|
1476
1492
|
},
|
|
1493
|
+
TV02FrostProtection: {
|
|
1494
|
+
to: async (v, meta) => {
|
|
1495
|
+
const entity = meta.device.endpoints[0];
|
|
1496
|
+
if (v === 'ON') {
|
|
1497
|
+
await sendDataPointBool(entity, 10, true, 'dataRequest', 1);
|
|
1498
|
+
} else {
|
|
1499
|
+
await sendDataPointEnum(entity, 2, 1, 'dataRequest', 1); // manual
|
|
1500
|
+
}
|
|
1501
|
+
},
|
|
1502
|
+
from: (v) => {
|
|
1503
|
+
return {frost_protection: v === false ? 'OFF' : 'ON'};
|
|
1504
|
+
},
|
|
1505
|
+
},
|
|
1477
1506
|
inverse: {to: (v) => !v, from: (v) => !v},
|
|
1478
1507
|
onOffNotStrict: {from: (v) => v ? 'ON' : 'OFF', to: (v) => v === 'ON'},
|
|
1479
1508
|
errorOrBatteryLow: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zigbee-herdsman-converters",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.689",
|
|
4
4
|
"description": "Collection of device converters to be used with zigbee-herdsman",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"files": [
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
},
|
|
35
35
|
"homepage": "https://github.com/Koenkk/zigbee-herdsman-converters",
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"axios": "
|
|
37
|
+
"axios": "^1.2.1",
|
|
38
38
|
"buffer-crc32": "^0.2.13",
|
|
39
39
|
"https-proxy-agent": "^5.0.1",
|
|
40
40
|
"tar-stream": "^2.2.0",
|
|
41
|
-
"zigbee-herdsman": "^0.14.
|
|
41
|
+
"zigbee-herdsman": "^0.14.80"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"eslint": "*",
|