zigbee-herdsman-converters 14.0.617 → 14.0.620
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/devices/ikea.js +7 -0
- package/devices/lonsonho.js +1 -1
- package/devices/owon.js +16 -11
- package/devices/philips.js +8 -1
- package/devices/sengled.js +8 -2
- package/devices/siglis.js +3 -3
- package/devices/tuya.js +92 -3
- package/devices/woolley.js +1 -1
- package/devices/ynoa.js +17 -1
- package/devices/zemismart.js +9 -0
- package/lib/exposes.js +4 -9
- package/package.json +2 -2
package/devices/ikea.js
CHANGED
|
@@ -871,6 +871,13 @@ module.exports = [
|
|
|
871
871
|
description: 'TRADFRI LED bulb E12/E14 WW clear 250 lumen, dimmable',
|
|
872
872
|
extend: tradfriExtend.light_onoff_brightness(),
|
|
873
873
|
},
|
|
874
|
+
{
|
|
875
|
+
zigbeeModel: ['TRADFRIbulbE12WWcandleclear250lm'],
|
|
876
|
+
model: 'LED2009C3',
|
|
877
|
+
vendor: 'IKEA',
|
|
878
|
+
description: 'TRADFRI LED bulb E12 WW candle clear 250 lumen, dimmable',
|
|
879
|
+
extend: tradfriExtend.light_onoff_brightness(),
|
|
880
|
+
},
|
|
874
881
|
{
|
|
875
882
|
zigbeeModel: ['TRADFRIbulbGU10WS345lm', 'TRADFRI bulb GU10 WW 345lm', 'TRADFRIbulbGU10WS380lm'],
|
|
876
883
|
model: 'LED2005R5',
|
package/devices/lonsonho.js
CHANGED
|
@@ -77,7 +77,7 @@ module.exports = [
|
|
|
77
77
|
description: 'Dual curtain/blind module',
|
|
78
78
|
fromZigbee: [fz.cover_position_tilt, fz.tuya_cover_options],
|
|
79
79
|
toZigbee: [tz.cover_state, tz.cover_position_tilt, tz.tuya_cover_calibration, tz.tuya_cover_reversal],
|
|
80
|
-
meta: {multiEndpoint: true},
|
|
80
|
+
meta: {multiEndpoint: true, coverInverted: true},
|
|
81
81
|
endpoint: (device) => {
|
|
82
82
|
return {'left': 1, 'right': 2};
|
|
83
83
|
},
|
package/devices/owon.js
CHANGED
|
@@ -233,19 +233,22 @@ module.exports = [
|
|
|
233
233
|
vendor: 'OWON',
|
|
234
234
|
description: 'HVAC fan coil',
|
|
235
235
|
fromZigbee: [fz.fan, fz.thermostat, fz.humidity, fz.occupancy, fz.legacy.hvac_user_interface],
|
|
236
|
-
toZigbee: [tz.fan_mode,
|
|
236
|
+
toZigbee: [tz.fan_mode,
|
|
237
237
|
tz.thermostat_occupied_heating_setpoint, tz.thermostat_unoccupied_heating_setpoint,
|
|
238
238
|
tz.thermostat_occupied_cooling_setpoint, tz.thermostat_unoccupied_cooling_setpoint,
|
|
239
239
|
tz.thermostat_min_heat_setpoint_limit, tz.thermostat_max_heat_setpoint_limit,
|
|
240
240
|
tz.thermostat_min_cool_setpoint_limit, tz.thermostat_max_cool_setpoint_limit,
|
|
241
|
-
tz.thermostat_local_temperature,
|
|
242
|
-
tz.thermostat_keypad_lockout
|
|
243
|
-
|
|
244
|
-
|
|
241
|
+
tz.thermostat_local_temperature,
|
|
242
|
+
tz.thermostat_keypad_lockout,
|
|
243
|
+
tz.thermostat_system_mode, tz.thermostat_running_mode, tz.thermostat_running_state, tz.thermostat_programming_operation_mode],
|
|
244
|
+
exposes: [e.local_temperature(), e.humidity(), e.occupancy(),
|
|
245
|
+
exposes.climate().withSystemMode(['off', 'heat', 'cool', 'fan_only', 'sleep'])
|
|
246
|
+
.withRunningMode(['off', 'heat', 'cool'])
|
|
247
|
+
.withRunningState(['idle', 'heat', 'cool', 'fan_only'])
|
|
245
248
|
.withSetpoint('occupied_heating_setpoint', 5, 30, 0.5).withSetpoint('unoccupied_heating_setpoint', 5, 30, 0.5)
|
|
246
|
-
.withSetpoint('occupied_cooling_setpoint', 7, 35, 0.5).withSetpoint('unoccupied_cooling_setpoint', 7, 35, 0.5)
|
|
247
|
-
|
|
248
|
-
e.
|
|
249
|
+
.withSetpoint('occupied_cooling_setpoint', 7, 35, 0.5).withSetpoint('unoccupied_cooling_setpoint', 7, 35, 0.5),
|
|
250
|
+
e.fan().withModes(['low', 'medium', 'high', 'on', 'auto']),
|
|
251
|
+
e.programming_operation_mode(['setpoint', 'eco']), e.keypad_lockout(),
|
|
249
252
|
e.max_heat_setpoint_limit(5, 30, 0.5), e.min_heat_setpoint_limit(5, 30, 0.5),
|
|
250
253
|
e.max_cool_setpoint_limit(7, 35, 0.5), e.min_cool_setpoint_limit(7, 35, 0.5)],
|
|
251
254
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
@@ -261,12 +264,14 @@ module.exports = [
|
|
|
261
264
|
await reporting.thermostatUnoccupiedCoolingSetpoint(endpoint);
|
|
262
265
|
await reporting.thermostatTemperature(endpoint, {min: 60, max: 600, change: 0.1});
|
|
263
266
|
await reporting.thermostatSystemMode(endpoint);
|
|
267
|
+
await reporting.thermostatRunningMode(endpoint);
|
|
268
|
+
await reporting.thermostatRunningState(endpoint);
|
|
264
269
|
await reporting.humidity(endpoint, {min: 60, max: 600, change: 1});
|
|
265
270
|
await reporting.thermostatKeypadLockMode(endpoint);
|
|
266
271
|
|
|
267
|
-
await endpoint.read('hvacThermostat', ['systemMode', '
|
|
268
|
-
'
|
|
269
|
-
|
|
272
|
+
await endpoint.read('hvacThermostat', ['systemMode', 'runningMode', 'runningState',
|
|
273
|
+
'occupiedHeatingSetpoint', 'unoccupiedHeatingSetpoint',
|
|
274
|
+
'occupiedCoolingSetpoint', 'unoccupiedCoolingSetpoint', 'localTemp']);
|
|
270
275
|
await endpoint.read('msRelativeHumidity', ['measuredValue']);
|
|
271
276
|
|
|
272
277
|
const endpoint2 = device.getEndpoint(2);
|
package/devices/philips.js
CHANGED
|
@@ -984,7 +984,14 @@ module.exports = [
|
|
|
984
984
|
zigbeeModel: ['929003053001'],
|
|
985
985
|
model: '929003053001',
|
|
986
986
|
vendor: 'Philips',
|
|
987
|
-
description: 'Hue Sana wall light',
|
|
987
|
+
description: 'Hue Sana wall light (white)',
|
|
988
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
zigbeeModel: ['929003052901'],
|
|
992
|
+
model: '929003052901',
|
|
993
|
+
vendor: 'Philips',
|
|
994
|
+
description: 'Hue Sana wall light (black)',
|
|
988
995
|
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
989
996
|
},
|
|
990
997
|
{
|
package/devices/sengled.js
CHANGED
|
@@ -235,10 +235,16 @@ module.exports = [
|
|
|
235
235
|
model: 'E1D-G73WNA',
|
|
236
236
|
vendor: 'Sengled',
|
|
237
237
|
description: 'Smart window and door sensor',
|
|
238
|
-
fromZigbee: [fz.ias_contact_alarm_1],
|
|
238
|
+
fromZigbee: [fz.ias_contact_alarm_1, fz.battery],
|
|
239
239
|
toZigbee: [],
|
|
240
240
|
ota: ota.zigbeeOTA,
|
|
241
|
-
exposes: [e.contact(), e.battery_low(), e.tamper()],
|
|
241
|
+
exposes: [e.contact(), e.battery_low(), e.battery(), e.battery_voltage(), e.tamper()],
|
|
242
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
243
|
+
const endpoint = device.getEndpoint(1);
|
|
244
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
245
|
+
await reporting.batteryVoltage(endpoint);
|
|
246
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
247
|
+
},
|
|
242
248
|
},
|
|
243
249
|
{
|
|
244
250
|
zigbeeModel: ['E1C-NB6'],
|
package/devices/siglis.js
CHANGED
|
@@ -146,9 +146,9 @@ module.exports = [
|
|
|
146
146
|
e.light_brightness().withEndpoint('l3'),
|
|
147
147
|
e.light_brightness().withEndpoint('l4'),
|
|
148
148
|
e.light_brightness().withEndpoint('l5'),
|
|
149
|
-
exposes.cover().
|
|
149
|
+
exposes.cover().setAccess('state', exposes.access.STATE_SET | exposes.access.STATE_GET)
|
|
150
150
|
.withPosition().withTilt().withEndpoint('l6'),
|
|
151
|
-
exposes.cover().
|
|
151
|
+
exposes.cover().setAccess('state', exposes.access.STATE_SET | exposes.access.STATE_GET)
|
|
152
152
|
.withPosition().withTilt().withEndpoint('l7'),
|
|
153
153
|
e.action([
|
|
154
154
|
'button_1_single', 'button_1_double', 'button_1_hold', 'button_1_release',
|
|
@@ -184,7 +184,7 @@ module.exports = [
|
|
|
184
184
|
tz.cover_position_tilt,
|
|
185
185
|
coverAndLightToZigbee,
|
|
186
186
|
],
|
|
187
|
-
meta: {multiEndpoint: true
|
|
187
|
+
meta: {multiEndpoint: true},
|
|
188
188
|
endpoint: (device) => {
|
|
189
189
|
return {
|
|
190
190
|
'l1': zigfredEndpoint,
|
package/devices/tuya.js
CHANGED
|
@@ -23,6 +23,18 @@ const TS011Fplugs = ['_TZ3000_5f43h46b', '_TZ3000_cphmq0q7', '_TZ3000_dpo1ysak',
|
|
|
23
23
|
'_TZ3000_ss98ec5d', '_TZ3000_gznh2xla', '_TZ3000_hdopuwv6', '_TZ3000_gvn91tmx', '_TZ3000_dksbtrzs', '_TZ3000_b28wrpvx'];
|
|
24
24
|
|
|
25
25
|
const tzLocal = {
|
|
26
|
+
SA12IZL_silence_siren: {
|
|
27
|
+
key: ['silence_siren'],
|
|
28
|
+
convertSet: async (entity, key, value, meta) => {
|
|
29
|
+
await tuya.sendDataPointBool(entity, 16, value);
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
SA12IZL_alarm: {
|
|
33
|
+
key: ['alarm'],
|
|
34
|
+
convertSet: async (entity, key, value, meta) => {
|
|
35
|
+
await tuya.sendDataPointEnum(entity, 20, {true: 0, false: 1}[value]);
|
|
36
|
+
},
|
|
37
|
+
},
|
|
26
38
|
hpsz: {
|
|
27
39
|
key: ['led_state'],
|
|
28
40
|
convertSet: async (entity, key, value, meta) => {
|
|
@@ -277,6 +289,37 @@ const tzLocal = {
|
|
|
277
289
|
};
|
|
278
290
|
|
|
279
291
|
const fzLocal = {
|
|
292
|
+
SA12IZL: {
|
|
293
|
+
cluster: 'manuSpecificTuya',
|
|
294
|
+
type: ['commandDataResponse', 'commandDataReport'],
|
|
295
|
+
convert: (model, msg, publish, options, meta) => {
|
|
296
|
+
const result = {};
|
|
297
|
+
for (const dpValue of msg.data.dpValues) {
|
|
298
|
+
const dp = dpValue.dp;
|
|
299
|
+
const value = tuya.getDataValue(dpValue);
|
|
300
|
+
switch (dp) {
|
|
301
|
+
case tuya.dataPoints.state:
|
|
302
|
+
result.smoke = value === 0;
|
|
303
|
+
break;
|
|
304
|
+
case 15:
|
|
305
|
+
result.battery = value;
|
|
306
|
+
break;
|
|
307
|
+
case 16:
|
|
308
|
+
result.silence_siren = value;
|
|
309
|
+
break;
|
|
310
|
+
case 20: {
|
|
311
|
+
const alarm = {0: true, 1: false};
|
|
312
|
+
result.alarm = alarm[value];
|
|
313
|
+
break;
|
|
314
|
+
}
|
|
315
|
+
default:
|
|
316
|
+
meta.logger.warn(`zigbee-herdsman-converters:SA12IZL: NOT RECOGNIZED DP #${
|
|
317
|
+
dp} with data ${JSON.stringify(dpValue)}`);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
return result;
|
|
321
|
+
},
|
|
322
|
+
},
|
|
280
323
|
tuya_dinrail_switch2: {
|
|
281
324
|
cluster: 'manuSpecificTuya',
|
|
282
325
|
type: ['commandDataReport', 'commandDataResponse', 'commandActiveStatusReport'],
|
|
@@ -933,7 +976,8 @@ module.exports = [
|
|
|
933
976
|
},
|
|
934
977
|
{
|
|
935
978
|
fingerprint: [{modelID: 'TS0202', manufacturerName: '_TYZB01_jytabjkb'},
|
|
936
|
-
{modelID: 'TS0202', manufacturerName: '_TZ3000_lltemgsf'}
|
|
979
|
+
{modelID: 'TS0202', manufacturerName: '_TZ3000_lltemgsf'},
|
|
980
|
+
{modelID: 'TS0202', manufacturerName: '_TZ3000_mg4dy6z6'}],
|
|
937
981
|
model: 'TS0202_1',
|
|
938
982
|
vendor: 'TuYa',
|
|
939
983
|
description: 'Motion sensor',
|
|
@@ -1327,11 +1371,15 @@ module.exports = [
|
|
|
1327
1371
|
{modelID: 'TS0502B', manufacturerName: '_TZ3210_qamcypen'},
|
|
1328
1372
|
{modelID: 'TS0502B', manufacturerName: '_TZ3210_zdrhqmo0'},
|
|
1329
1373
|
{modelID: 'TS0502B', manufacturerName: '_TZ3210_2cjfbpy0'},
|
|
1374
|
+
{modelID: 'TS0502B', manufacturerName: '_TZ3000_bujv0r9b'},
|
|
1330
1375
|
],
|
|
1331
1376
|
model: 'TS0502B',
|
|
1332
1377
|
vendor: 'TuYa',
|
|
1333
1378
|
description: 'Light controller',
|
|
1334
|
-
whiteLabel: [
|
|
1379
|
+
whiteLabel: [
|
|
1380
|
+
{vendor: 'Mercator Ikuü', model: 'SMI7040', description: 'Ford Batten Light'},
|
|
1381
|
+
{vendor: 'Mercator Ikuü', model: 'SMD9300', description: 'Donovan Panel Light'},
|
|
1382
|
+
],
|
|
1335
1383
|
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 500]}),
|
|
1336
1384
|
},
|
|
1337
1385
|
{
|
|
@@ -1558,6 +1606,27 @@ module.exports = [
|
|
|
1558
1606
|
},
|
|
1559
1607
|
exposes: [e.battery(), e.water_leak()],
|
|
1560
1608
|
},
|
|
1609
|
+
{
|
|
1610
|
+
fingerprint: [{modelID: 'TS0001', manufacturerName: '_TZ3000_xkap8wtb'}],
|
|
1611
|
+
model: 'TS0001_power',
|
|
1612
|
+
description: 'Switch with power monitoring',
|
|
1613
|
+
vendor: 'TuYa',
|
|
1614
|
+
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, fz.ignore_basic_report],
|
|
1615
|
+
toZigbee: [tz.on_off],
|
|
1616
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1617
|
+
const endpoint = device.getEndpoint(1);
|
|
1618
|
+
await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
1619
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering']);
|
|
1620
|
+
await reporting.rmsVoltage(endpoint, {change: 5});
|
|
1621
|
+
await reporting.rmsCurrent(endpoint, {change: 50});
|
|
1622
|
+
await reporting.activePower(endpoint, {change: 10});
|
|
1623
|
+
await reporting.currentSummDelivered(endpoint);
|
|
1624
|
+
endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {acCurrentDivisor: 1000, acCurrentMultiplier: 1});
|
|
1625
|
+
endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 100, multiplier: 1});
|
|
1626
|
+
device.save();
|
|
1627
|
+
},
|
|
1628
|
+
exposes: [e.switch(), e.power(), e.current(), e.voltage().withAccess(ea.STATE)],
|
|
1629
|
+
},
|
|
1561
1630
|
{
|
|
1562
1631
|
zigbeeModel: ['TS0001'],
|
|
1563
1632
|
model: 'TS0001',
|
|
@@ -1610,7 +1679,8 @@ module.exports = [
|
|
|
1610
1679
|
},
|
|
1611
1680
|
},
|
|
1612
1681
|
{
|
|
1613
|
-
fingerprint: [{modelID: 'TS0002', manufacturerName: '_TZ3000_01gpyda5'}, {modelID: 'TS0002', manufacturerName: '_TZ3000_bvrlqyj7'}
|
|
1682
|
+
fingerprint: [{modelID: 'TS0002', manufacturerName: '_TZ3000_01gpyda5'}, {modelID: 'TS0002', manufacturerName: '_TZ3000_bvrlqyj7'},
|
|
1683
|
+
{modelID: 'TS0002', manufacturerName: '_TZ3000_7ed9cqgi'}],
|
|
1614
1684
|
model: 'TS0002_switch_module',
|
|
1615
1685
|
vendor: 'TuYa',
|
|
1616
1686
|
description: '2 gang switch module',
|
|
@@ -1628,6 +1698,8 @@ module.exports = [
|
|
|
1628
1698
|
},
|
|
1629
1699
|
meta: {multiEndpoint: true},
|
|
1630
1700
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
1701
|
+
await device.getEndpoint(1).read('genBasic',
|
|
1702
|
+
['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
|
|
1631
1703
|
await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
|
|
1632
1704
|
await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
|
|
1633
1705
|
},
|
|
@@ -1737,6 +1809,7 @@ module.exports = [
|
|
|
1737
1809
|
{modelID: 'TS0601', manufacturerName: '_TZE200_fctwhugx'},
|
|
1738
1810
|
{modelID: 'TS0601', manufacturerName: '_TZE200_zah67ekd'},
|
|
1739
1811
|
{modelID: 'TS0601', manufacturerName: '_TZE200_hsgrhjpf'},
|
|
1812
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_pw7mji0l'},
|
|
1740
1813
|
// Window pushers:
|
|
1741
1814
|
{modelID: 'TS0601', manufacturerName: '_TZE200_g5wdnuow'},
|
|
1742
1815
|
// Tubular motors:
|
|
@@ -1753,6 +1826,7 @@ module.exports = [
|
|
|
1753
1826
|
{vendor: 'Binthen', model: 'BCM100D'},
|
|
1754
1827
|
{vendor: 'Binthen', model: 'CV01A'},
|
|
1755
1828
|
{vendor: 'Zemismart', model: 'M515EGB'},
|
|
1829
|
+
{vendor: 'OZ Smart Things', model: 'ZM85EL-1Z'},
|
|
1756
1830
|
{vendor: 'TuYa', model: 'M515EGZT'},
|
|
1757
1831
|
{vendor: 'TuYa', model: 'DT82LEMA-1.2N'},
|
|
1758
1832
|
{vendor: 'TuYa', model: 'ZD82TN', description: 'Curtain motor'},
|
|
@@ -2117,6 +2191,21 @@ module.exports = [
|
|
|
2117
2191
|
toZigbee: [],
|
|
2118
2192
|
exposes: [e.smoke(), e.battery()],
|
|
2119
2193
|
},
|
|
2194
|
+
{
|
|
2195
|
+
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_5d3vhjro'}, {modelID: 'TS0601', manufacturerName: '_TZE200_ntcy3xu1'}],
|
|
2196
|
+
model: 'SA12IZL',
|
|
2197
|
+
vendor: 'TuYa',
|
|
2198
|
+
description: 'Smart smoke alarm',
|
|
2199
|
+
meta: {timeout: 30000, disableDefaultResponse: true},
|
|
2200
|
+
fromZigbee: [fzLocal.SA12IZL],
|
|
2201
|
+
toZigbee: [tzLocal.SA12IZL_silence_siren, tzLocal.SA12IZL_alarm],
|
|
2202
|
+
exposes: [e.battery(),
|
|
2203
|
+
exposes.binary('smoke', ea.STATE, true, false).withDescription('Smoke alarm status'),
|
|
2204
|
+
exposes.enum('battery_level', ea.STATE, ['low', 'middle', 'high']).withDescription('Battery level state'),
|
|
2205
|
+
exposes.binary('alarm', ea.STATE_SET, true, false).withDescription('Enable the alarm'),
|
|
2206
|
+
exposes.binary('silence_siren', ea.STATE_SET, true, false).withDescription('Silence the siren')],
|
|
2207
|
+
onEvent: tuya.onEventsetTime,
|
|
2208
|
+
},
|
|
2120
2209
|
{
|
|
2121
2210
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_byzdayie'},
|
|
2122
2211
|
{modelID: 'TS0601', manufacturerName: '_TZE200_fsb6zw01'},
|
package/devices/woolley.js
CHANGED
package/devices/ynoa.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const exposes = require('../lib/exposes');
|
|
2
|
-
const fz =
|
|
2
|
+
const fz = require('../converters/fromZigbee');
|
|
3
|
+
const tz = require('../converters/toZigbee');
|
|
3
4
|
const reporting = require('../lib/reporting');
|
|
4
5
|
const e = exposes.presets;
|
|
5
6
|
const extend = require('..//lib/extend');
|
|
@@ -42,4 +43,19 @@ module.exports = [
|
|
|
42
43
|
await reporting.batteryPercentageRemaining(endpoint);
|
|
43
44
|
},
|
|
44
45
|
},
|
|
46
|
+
{
|
|
47
|
+
zigbeeModel: ['ZBT-ONOFFPlug-D0009'],
|
|
48
|
+
model: 'LA-PLUG-10Amp',
|
|
49
|
+
vendor: 'Ynoa',
|
|
50
|
+
description: 'Smart plug Zigbee 3.0',
|
|
51
|
+
fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering],
|
|
52
|
+
toZigbee: [tz.on_off],
|
|
53
|
+
exposes: [e.switch(), e.power()],
|
|
54
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
55
|
+
const endpoint = device.getEndpoint(1);
|
|
56
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering']);
|
|
57
|
+
await reporting.onOff(endpoint);
|
|
58
|
+
await reporting.activePower(endpoint);
|
|
59
|
+
},
|
|
60
|
+
},
|
|
45
61
|
];
|
package/devices/zemismart.js
CHANGED
|
@@ -201,6 +201,15 @@ module.exports = [
|
|
|
201
201
|
toZigbee: [tz.tuya_cover_control, tz.tuya_cover_options, tz.tuya_data_point_test],
|
|
202
202
|
exposes: [e.cover_position().setAccess('position', ea.STATE_SET)],
|
|
203
203
|
},
|
|
204
|
+
{
|
|
205
|
+
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_7eue9vhc'}],
|
|
206
|
+
model: 'ZM25RX-08/30',
|
|
207
|
+
vendor: 'Zemismart',
|
|
208
|
+
description: 'Tubular motor',
|
|
209
|
+
fromZigbee: [fz.tuya_cover, fz.ignore_basic_report],
|
|
210
|
+
toZigbee: [tz.tuya_cover_control, tz.tuya_cover_options],
|
|
211
|
+
exposes: [e.cover_position().setAccess('position', ea.STATE_SET)],
|
|
212
|
+
},
|
|
204
213
|
{
|
|
205
214
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_1n2kyphz'}],
|
|
206
215
|
model: 'TB26-4',
|
package/lib/exposes.js
CHANGED
|
@@ -327,6 +327,7 @@ class Cover extends Base {
|
|
|
327
327
|
super();
|
|
328
328
|
this.type = 'cover';
|
|
329
329
|
this.features = [];
|
|
330
|
+
this.features.push(new Enum('state', a.STATE_SET, ['OPEN', 'CLOSE', 'STOP']));
|
|
330
331
|
}
|
|
331
332
|
|
|
332
333
|
withPosition() {
|
|
@@ -340,12 +341,6 @@ class Cover extends Base {
|
|
|
340
341
|
this.features.push(new Numeric('tilt', access.ALL).withValueMin(0).withValueMax(100).withDescription('Tilt of this cover'));
|
|
341
342
|
return this;
|
|
342
343
|
}
|
|
343
|
-
|
|
344
|
-
withState(property='state', access=a.STATE_SET, values=['OPEN', 'CLOSE', 'STOP']) {
|
|
345
|
-
assert(!this.endpoint, 'Cannot add feature after adding endpoint');
|
|
346
|
-
this.features.push(new Enum(property, access, values));
|
|
347
|
-
return this;
|
|
348
|
-
}
|
|
349
344
|
}
|
|
350
345
|
|
|
351
346
|
class Fan extends Base {
|
|
@@ -545,9 +540,9 @@ module.exports = {
|
|
|
545
540
|
comfort_temperature: () => new Numeric('comfort_temperature', access.STATE_SET).withUnit('°C').withDescription('Comfort temperature').withValueMin(0).withValueMax(30),
|
|
546
541
|
consumer_connected: () => new Binary('consumer_connected', access.STATE, true, false).withDescription('Indicates whether a plug is physically attached. Device does not have to pull power or even be connected electrically (state of this binary switch can be ON even if main power switch is OFF)'),
|
|
547
542
|
contact: () => new Binary('contact', access.STATE, false, true).withDescription('Indicates if the contact is closed (= true) or open (= false)'),
|
|
548
|
-
cover_position: () => new Cover().
|
|
549
|
-
cover_position_tilt: () => new Cover().
|
|
550
|
-
cover_tilt: () => new Cover().
|
|
543
|
+
cover_position: () => new Cover().withPosition(),
|
|
544
|
+
cover_position_tilt: () => new Cover().withPosition().withTilt(),
|
|
545
|
+
cover_tilt: () => new Cover().withTilt(),
|
|
551
546
|
cpu_temperature: () => new Numeric('cpu_temperature', access.STATE).withUnit('°C').withDescription('Temperature of the CPU'),
|
|
552
547
|
cube_side: (name) => new Numeric(name, access.STATE).withDescription('Side of the cube').withValueMin(0).withValueMax(6).withValueStep(1),
|
|
553
548
|
current: () => new Numeric('current', access.STATE).withUnit('A').withDescription('Instantaneous measured electrical current'),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zigbee-herdsman-converters",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.620",
|
|
4
4
|
"description": "Collection of device converters to be used with zigbee-herdsman",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"files": [
|
|
@@ -38,7 +38,7 @@
|
|
|
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.54"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"eslint": "*",
|