zigbee-herdsman-converters 14.0.647 → 14.0.649
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 +10 -10
- package/converters/toZigbee.js +18 -15
- package/devices/develco.js +34 -32
- package/devices/hornbach.js +1 -1
- package/devices/immax.js +2 -2
- package/devices/leviton.js +1 -5
- package/devices/nodon.js +15 -0
- package/devices/nous.js +12 -0
- package/devices/perenio.js +0 -1
- package/devices/philips.js +7 -0
- package/devices/shinasystem.js +34 -0
- package/devices/sprut.js +2 -10
- package/devices/tuya.js +8 -5
- package/devices/ubisys.js +0 -4
- package/devices/xiaomi.js +10 -4
- package/devices/zemismart.js +1 -1
- package/lib/tuya.js +3 -1
- package/package.json +2 -2
package/converters/fromZigbee.js
CHANGED
|
@@ -1588,12 +1588,6 @@ const converters = {
|
|
|
1588
1588
|
type: ['attributeReport', 'readResponse'],
|
|
1589
1589
|
convert: (model, msg, publish, options, meta) => {
|
|
1590
1590
|
const result = {};
|
|
1591
|
-
if (msg.data.hasOwnProperty('physicalMinLevel')) {
|
|
1592
|
-
result['ballast_physical_minimum_level'] = msg.data.physicalMinLevel;
|
|
1593
|
-
}
|
|
1594
|
-
if (msg.data.hasOwnProperty('physicalMaxLevel')) {
|
|
1595
|
-
result['ballast_physical_maximum_level'] = msg.data.physicalMaxLevel;
|
|
1596
|
-
}
|
|
1597
1591
|
if (msg.data.hasOwnProperty('ballastStatus')) {
|
|
1598
1592
|
const ballastStatus = msg.data.ballastStatus;
|
|
1599
1593
|
result['ballast_status_non_operational'] = ballastStatus & 1 ? true : false;
|
|
@@ -1961,10 +1955,10 @@ const converters = {
|
|
|
1961
1955
|
result.min_temperature = calibrateAndPrecisionRoundOptions(value / 10, options, 'temperature');
|
|
1962
1956
|
break;
|
|
1963
1957
|
case tuya.dataPoints.nousMaxHumi:
|
|
1964
|
-
result.max_humidity = calibrateAndPrecisionRoundOptions(value
|
|
1958
|
+
result.max_humidity = calibrateAndPrecisionRoundOptions(value, options, 'humidity');
|
|
1965
1959
|
break;
|
|
1966
1960
|
case tuya.dataPoints.nousMinHumi:
|
|
1967
|
-
result.min_humidity = calibrateAndPrecisionRoundOptions(value
|
|
1961
|
+
result.min_humidity = calibrateAndPrecisionRoundOptions(value, options, 'humidity');
|
|
1968
1962
|
break;
|
|
1969
1963
|
case tuya.dataPoints.nousTempAlarm:
|
|
1970
1964
|
result.temperature_alarm = {0x00: 'canceled', 0x01: 'lower_alarm', 0x02: 'upper_alarm'}[value];
|
|
@@ -1975,8 +1969,14 @@ const converters = {
|
|
|
1975
1969
|
case tuya.dataPoints.nousTempSensitivity:
|
|
1976
1970
|
result.temperature_sensitivity = calibrateAndPrecisionRoundOptions(value / 10, options, 'temperature');
|
|
1977
1971
|
break;
|
|
1978
|
-
case tuya.dataPoints.
|
|
1979
|
-
result.
|
|
1972
|
+
case tuya.dataPoints.nousHumiSensitivity:
|
|
1973
|
+
result.humidity_sensitivity = calibrateAndPrecisionRoundOptions(value, options, 'humidity');
|
|
1974
|
+
break;
|
|
1975
|
+
case tuya.dataPoints.nousTempReportInterval:
|
|
1976
|
+
result.temperature_report_interval = value;
|
|
1977
|
+
break;
|
|
1978
|
+
case tuya.dataPoints.nousHumiReportInterval:
|
|
1979
|
+
result.humidity_report_interval = value;
|
|
1980
1980
|
break;
|
|
1981
1981
|
default:
|
|
1982
1982
|
meta.logger.warn(`zigbee-herdsman-converters:nous_lcd_temperature_humidity_sensor: NOT RECOGNIZED ` +
|
package/converters/toZigbee.js
CHANGED
|
@@ -578,8 +578,6 @@ const converters = {
|
|
|
578
578
|
},
|
|
579
579
|
ballast_config: {
|
|
580
580
|
key: ['ballast_config',
|
|
581
|
-
'ballast_physical_minimum_level',
|
|
582
|
-
'ballast_physical_maximum_level',
|
|
583
581
|
'ballast_minimum_level',
|
|
584
582
|
'ballast_maximum_level',
|
|
585
583
|
'ballast_power_on_level'],
|
|
@@ -607,8 +605,6 @@ const converters = {
|
|
|
607
605
|
convertGet: async (entity, key, meta) => {
|
|
608
606
|
let result = {};
|
|
609
607
|
for (const attrName of [
|
|
610
|
-
'physical_min_level',
|
|
611
|
-
'physical_max_level',
|
|
612
608
|
'ballast_status',
|
|
613
609
|
'min_level',
|
|
614
610
|
'max_level',
|
|
@@ -2211,7 +2207,7 @@ const converters = {
|
|
|
2211
2207
|
xiaomi_switch_power_outage_memory: {
|
|
2212
2208
|
key: ['power_outage_memory'],
|
|
2213
2209
|
convertSet: async (entity, key, value, meta) => {
|
|
2214
|
-
if (['SP-EUC01', 'ZNCZ04LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'SSM-U01', 'SSM-U02', 'DLKZMK11LM', 'DLKZMK12LM',
|
|
2210
|
+
if (['SP-EUC01', 'ZNCZ04LM', 'ZNCZ12LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'SSM-U01', 'SSM-U02', 'DLKZMK11LM', 'DLKZMK12LM',
|
|
2215
2211
|
'WS-EUK01', 'WS-EUK02', 'WS-EUK03', 'WS-EUK04', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
|
|
2216
2212
|
'QBKG31LM', 'QBKG34LM', 'QBKG38LM', 'QBKG39LM', 'QBKG40LM', 'QBKG41LM', 'ZNDDMK11LM', 'ZNLDP13LM',
|
|
2217
2213
|
].includes(meta.mapped.model)) {
|
|
@@ -2235,7 +2231,7 @@ const converters = {
|
|
|
2235
2231
|
return {state: {power_outage_memory: value}};
|
|
2236
2232
|
},
|
|
2237
2233
|
convertGet: async (entity, key, meta) => {
|
|
2238
|
-
if (['SP-EUC01', 'ZNCZ04LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'SSM-U01', 'SSM-U02', 'DLKZMK11LM', 'DLKZMK12LM',
|
|
2234
|
+
if (['SP-EUC01', 'ZNCZ04LM', 'ZNCZ12LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'SSM-U01', 'SSM-U02', 'DLKZMK11LM', 'DLKZMK12LM',
|
|
2239
2235
|
'WS-EUK01', 'WS-EUK02', 'WS-EUK03', 'WS-EUK04', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
|
|
2240
2236
|
'QBKG31LM', 'QBKG34LM', 'QBKG38LM', 'QBKG39LM', 'QBKG40LM', 'QBKG41LM', 'ZNDDMK11LM', 'ZNLDP13LM',
|
|
2241
2237
|
].includes(meta.mapped.model)) {
|
|
@@ -2264,7 +2260,7 @@ const converters = {
|
|
|
2264
2260
|
xiaomi_auto_off: {
|
|
2265
2261
|
key: ['auto_off'],
|
|
2266
2262
|
convertSet: async (entity, key, value, meta) => {
|
|
2267
|
-
if (['ZNCZ04LM'].includes(meta.mapped.model)) {
|
|
2263
|
+
if (['ZNCZ04LM', 'ZNCZ12LM'].includes(meta.mapped.model)) {
|
|
2268
2264
|
await entity.write('aqaraOpple', {0x0202: {value: value ? 1 : 0, type: 0x10}}, manufacturerOptions.xiaomi);
|
|
2269
2265
|
} else if (['ZNCZ11LM'].includes(meta.mapped.model)) {
|
|
2270
2266
|
const payload = value ?
|
|
@@ -2347,7 +2343,7 @@ const converters = {
|
|
|
2347
2343
|
xiaomi_led_disabled_night: {
|
|
2348
2344
|
key: ['led_disabled_night'],
|
|
2349
2345
|
convertSet: async (entity, key, value, meta) => {
|
|
2350
|
-
if (['ZNCZ04LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
|
|
2346
|
+
if (['ZNCZ04LM', 'ZNCZ12LM', 'ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
|
|
2351
2347
|
'QBKG31LM', 'QBKG34LM', 'DLKZMK11LM', 'SSM-U01', 'WS-EUK01', 'WS-EUK02',
|
|
2352
2348
|
'WS-EUK03', 'WS-EUK04'].includes(meta.mapped.model)) {
|
|
2353
2349
|
await entity.write('aqaraOpple', {0x0203: {value: value ? 1 : 0, type: 0x10}}, manufacturerOptions.xiaomi);
|
|
@@ -2363,7 +2359,7 @@ const converters = {
|
|
|
2363
2359
|
return {state: {led_disabled_night: value}};
|
|
2364
2360
|
},
|
|
2365
2361
|
convertGet: async (entity, key, meta) => {
|
|
2366
|
-
if (['ZNCZ04LM', 'ZNCZ15LM', 'QBCZ15LM', 'QBCZ14LM', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
|
|
2362
|
+
if (['ZNCZ04LM', 'ZNCZ12LM', 'ZNCZ15LM', 'QBCZ15LM', 'QBCZ14LM', 'QBKG19LM', 'QBKG20LM', 'QBKG25LM', 'QBKG26LM',
|
|
2367
2363
|
'QBKG31LM', 'QBKG34LM', 'DLKZMK11LM', 'SSM-U01', 'WS-EUK01', 'WS-EUK02',
|
|
2368
2364
|
'WS-EUK03', 'WS-EUK04'].includes(meta.mapped.model)) {
|
|
2369
2365
|
await entity.read('aqaraOpple', [0x0203], manufacturerOptions.xiaomi);
|
|
@@ -4261,6 +4257,7 @@ const converters = {
|
|
|
4261
4257
|
convertSet: async (entity, key, value, meta) => {
|
|
4262
4258
|
const payload = {0x4000: {value, type: 0x30}};
|
|
4263
4259
|
await entity.write('hvacThermostat', payload, manufacturerOptions.eurotronic);
|
|
4260
|
+
return {state: {[key]: value}};
|
|
4264
4261
|
},
|
|
4265
4262
|
convertGet: async (entity, key, meta) => {
|
|
4266
4263
|
await entity.read('hvacThermostat', [0x4000], manufacturerOptions.eurotronic);
|
|
@@ -5448,8 +5445,8 @@ const converters = {
|
|
|
5448
5445
|
},
|
|
5449
5446
|
nous_lcd_temperature_humidity_sensor: {
|
|
5450
5447
|
key: [
|
|
5451
|
-
'min_temperature', 'max_temperature', 'temperature_sensitivity', 'temperature_unit_convert',
|
|
5452
|
-
'min_humidity', 'max_humidity', '
|
|
5448
|
+
'min_temperature', 'max_temperature', 'temperature_sensitivity', 'temperature_unit_convert', 'temperature_report_interval',
|
|
5449
|
+
'min_humidity', 'max_humidity', 'humidity_sensitivity', 'humidity_report_interval',
|
|
5453
5450
|
],
|
|
5454
5451
|
convertSet: async (entity, key, value, meta) => {
|
|
5455
5452
|
switch (key) {
|
|
@@ -5465,14 +5462,20 @@ const converters = {
|
|
|
5465
5462
|
case 'temperature_sensitivity':
|
|
5466
5463
|
await tuya.sendDataPointValue(entity, tuya.dataPoints.nousTempSensitivity, Math.round(value * 10));
|
|
5467
5464
|
break;
|
|
5465
|
+
case 'humidity_sensitivity':
|
|
5466
|
+
await tuya.sendDataPointValue(entity, tuya.dataPoints.nousHumiSensitivity, value);
|
|
5467
|
+
break;
|
|
5468
5468
|
case 'min_humidity':
|
|
5469
|
-
await tuya.sendDataPointValue(entity, tuya.dataPoints.nousMinHumi, Math.round(value
|
|
5469
|
+
await tuya.sendDataPointValue(entity, tuya.dataPoints.nousMinHumi, Math.round(value));
|
|
5470
5470
|
break;
|
|
5471
5471
|
case 'max_humidity':
|
|
5472
|
-
await tuya.sendDataPointValue(entity, tuya.dataPoints.nousMaxHumi, Math.round(value
|
|
5472
|
+
await tuya.sendDataPointValue(entity, tuya.dataPoints.nousMaxHumi, Math.round(value));
|
|
5473
|
+
break;
|
|
5474
|
+
case 'temperature_report_interval':
|
|
5475
|
+
await tuya.sendDataPointValue(entity, tuya.dataPoints.nousTempReportInterval, value);
|
|
5473
5476
|
break;
|
|
5474
|
-
case '
|
|
5475
|
-
await tuya.sendDataPointValue(entity, tuya.dataPoints.
|
|
5477
|
+
case 'humidity_report_interval':
|
|
5478
|
+
await tuya.sendDataPointValue(entity, tuya.dataPoints.nousHumiReportInterval, value);
|
|
5476
5479
|
break;
|
|
5477
5480
|
default: // Unknown key
|
|
5478
5481
|
meta.logger.warn(`Unhandled key ${key}`);
|
package/devices/develco.js
CHANGED
|
@@ -25,35 +25,29 @@ const develcoLedControlMap = {
|
|
|
25
25
|
0xFF: 'both',
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
+
// develco specific convertors
|
|
29
|
+
const develco = {
|
|
30
|
+
configure: {
|
|
31
|
+
read_sw_hw_version: async (device, logger) => {
|
|
32
|
+
for (const ep of device.endpoints) {
|
|
33
|
+
if (ep.supportsInputCluster('genBasic')) {
|
|
34
|
+
try {
|
|
35
|
+
const data = await ep.read('genBasic', ['develcoPrimarySwVersion', 'develcoPrimaryHwVersion'],
|
|
36
|
+
manufacturerOptions);
|
|
28
37
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
* for sw and hw versions.
|
|
33
|
-
*
|
|
34
|
-
* We read those during deviceInterview
|
|
35
|
-
* so that this information is usable during configure() calls
|
|
36
|
-
* to skip some features on older devices that might cause
|
|
37
|
-
* timeouts and other issues.
|
|
38
|
-
*/
|
|
39
|
-
if (type === 'deviceInterview') { // WARN: also reading on deviceAnnounce hits a timeout!
|
|
40
|
-
try {
|
|
41
|
-
const data = await device.endpoints[0].read('genBasic', ['develcoPrimarySwVersion', 'develcoPrimaryHwVersion'],
|
|
42
|
-
manufacturerOptions);
|
|
43
|
-
|
|
44
|
-
if (data.hasOwnProperty('develcoPrimarySwVersion')) {
|
|
45
|
-
device.softwareBuildID = data.develcoPrimarySwVersion.join('.');
|
|
46
|
-
}
|
|
38
|
+
if (data.hasOwnProperty('develcoPrimarySwVersion')) {
|
|
39
|
+
device.softwareBuildID = data.develcoPrimarySwVersion.join('.');
|
|
40
|
+
}
|
|
47
41
|
|
|
48
|
-
|
|
49
|
-
|
|
42
|
+
if (data.hasOwnProperty('develcoPrimaryHwVersion')) {
|
|
43
|
+
device.hardwareVersion = data.develcoPrimaryHwVersion.join('.');
|
|
44
|
+
}
|
|
45
|
+
} catch (error) {/* catch timeouts of sleeping devices */}
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
50
48
|
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
// develco specific convertors
|
|
56
|
-
const develco = {
|
|
49
|
+
},
|
|
50
|
+
},
|
|
57
51
|
fz: {
|
|
58
52
|
// SPLZB-134 and SPLZB-131 reports strange values sometimes
|
|
59
53
|
// https://github.com/Koenkk/zigbee2mqtt/issues/13329
|
|
@@ -406,11 +400,11 @@ module.exports = [
|
|
|
406
400
|
await reporting.instantaneousDemand(endpoint);
|
|
407
401
|
await reporting.currentSummDelivered(endpoint);
|
|
408
402
|
await reporting.currentSummReceived(endpoint);
|
|
403
|
+
await develco.configure.read_sw_hw_version(device, logger);
|
|
409
404
|
},
|
|
410
405
|
exposes: [e.power(), e.energy(), e.current(), e.voltage(), e.current_phase_b(), e.voltage_phase_b(), e.current_phase_c(),
|
|
411
406
|
e.voltage_phase_c()],
|
|
412
407
|
onEvent: async (type, data, device) => {
|
|
413
|
-
fwOnEvent(type, data, device);
|
|
414
408
|
if (type === 'message' && data.type === 'attributeReport' && data.cluster === 'seMetering' && data.data['divisor']) {
|
|
415
409
|
// Device sends wrong divisior (512) while it should be fixed to 1000
|
|
416
410
|
// https://github.com/Koenkk/zigbee-herdsman-converters/issues/3066
|
|
@@ -427,7 +421,6 @@ module.exports = [
|
|
|
427
421
|
fz.ias_enroll, fz.ias_wd, develco.fz.fault_status],
|
|
428
422
|
toZigbee: [tz.warning, tz.ias_max_duration, tz.warning_simple],
|
|
429
423
|
ota: ota.zigbeeOTA,
|
|
430
|
-
onEvent: fwOnEvent,
|
|
431
424
|
meta: {battery: {voltageToPercentage: '3V_2500'}},
|
|
432
425
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
433
426
|
const endpoint = device.getEndpoint(35);
|
|
@@ -441,6 +434,8 @@ module.exports = [
|
|
|
441
434
|
const endpoint2 = device.getEndpoint(38);
|
|
442
435
|
await reporting.bind(endpoint2, coordinatorEndpoint, ['msTemperatureMeasurement']);
|
|
443
436
|
await reporting.temperature(endpoint2, {min: constants.repInterval.MINUTE, max: constants.repInterval.MINUTES_10, change: 10});
|
|
437
|
+
|
|
438
|
+
await develco.configure.read_sw_hw_version(device, logger);
|
|
444
439
|
},
|
|
445
440
|
endpoint: (device) => {
|
|
446
441
|
return {default: 35};
|
|
@@ -461,7 +456,6 @@ module.exports = [
|
|
|
461
456
|
fz.ias_enroll, fz.ias_wd, develco.fz.fault_status],
|
|
462
457
|
toZigbee: [tz.warning, tz.ias_max_duration, tz.warning_simple],
|
|
463
458
|
meta: {battery: {voltageToPercentage: '3V_2500'}},
|
|
464
|
-
onEvent: fwOnEvent,
|
|
465
459
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
466
460
|
const endpoint = device.getEndpoint(35);
|
|
467
461
|
|
|
@@ -474,6 +468,8 @@ module.exports = [
|
|
|
474
468
|
const endpoint2 = device.getEndpoint(38);
|
|
475
469
|
await reporting.bind(endpoint2, coordinatorEndpoint, ['msTemperatureMeasurement']);
|
|
476
470
|
await reporting.temperature(endpoint2, {min: constants.repInterval.MINUTE, max: constants.repInterval.MINUTES_10, change: 10});
|
|
471
|
+
|
|
472
|
+
await develco.configure.read_sw_hw_version(device, logger);
|
|
477
473
|
},
|
|
478
474
|
endpoint: (device) => {
|
|
479
475
|
return {default: 35};
|
|
@@ -501,6 +497,8 @@ module.exports = [
|
|
|
501
497
|
await reporting.bind(endpoint38, coordinatorEndpoint, ['msTemperatureMeasurement']);
|
|
502
498
|
await reporting.batteryVoltage(endpoint35);
|
|
503
499
|
await reporting.temperature(endpoint38);
|
|
500
|
+
|
|
501
|
+
await develco.configure.read_sw_hw_version(device, logger);
|
|
504
502
|
},
|
|
505
503
|
},
|
|
506
504
|
{
|
|
@@ -531,7 +529,6 @@ module.exports = [
|
|
|
531
529
|
develco.fz.led_control, develco.fz.ias_occupancy_timeout,
|
|
532
530
|
],
|
|
533
531
|
toZigbee: [develco.tz.led_control, develco.tz.ias_occupancy_timeout],
|
|
534
|
-
onEvent: fwOnEvent,
|
|
535
532
|
exposes: (device, options) => {
|
|
536
533
|
const dynExposes = [];
|
|
537
534
|
dynExposes.push(e.occupancy());
|
|
@@ -571,6 +568,7 @@ module.exports = [
|
|
|
571
568
|
await reporting.batteryVoltage(endpoint35, {min: constants.repInterval.HOUR, max: 43200, change: 100});
|
|
572
569
|
|
|
573
570
|
// zigbee2mqtt#14277 some features are not available on older firmwares
|
|
571
|
+
await develco.configure.read_sw_hw_version(device, logger);
|
|
574
572
|
if (device && device.softwareBuildID && device.softwareBuildID.split('.')[0] >= 3) {
|
|
575
573
|
await endpoint35.read('ssIasZone', ['develcoAlarmOffDelay'], manufacturerOptions);
|
|
576
574
|
}
|
|
@@ -694,6 +692,8 @@ module.exports = [
|
|
|
694
692
|
await reporting.temperature(endpoint, {min: constants.repInterval.MINUTE, max: constants.repInterval.MINUTES_10, change: 10});
|
|
695
693
|
await reporting.humidity(endpoint, {min: constants.repInterval.MINUTE, max: constants.repInterval.MINUTES_10, change: 300});
|
|
696
694
|
await reporting.batteryVoltage(endpoint, {min: constants.repInterval.HOUR, max: 43200, change: 100});
|
|
695
|
+
|
|
696
|
+
await develco.configure.read_sw_hw_version(device, logger);
|
|
697
697
|
},
|
|
698
698
|
},
|
|
699
699
|
{
|
|
@@ -703,7 +703,6 @@ module.exports = [
|
|
|
703
703
|
description: 'Customizable siren',
|
|
704
704
|
fromZigbee: [fz.temperature, fz.battery, fz.ias_enroll, fz.ias_wd, fz.ias_siren],
|
|
705
705
|
toZigbee: [tz.warning, tz.warning_simple, tz.ias_max_duration, tz.squawk],
|
|
706
|
-
onEvent: fwOnEvent,
|
|
707
706
|
meta: {battery: {voltageToPercentage: '3V_2500'}},
|
|
708
707
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
709
708
|
const endpoint = device.getEndpoint(43);
|
|
@@ -714,6 +713,8 @@ module.exports = [
|
|
|
714
713
|
|
|
715
714
|
const endpoint2 = device.getEndpoint(1);
|
|
716
715
|
await reporting.bind(endpoint2, coordinatorEndpoint, ['genOnOff']);
|
|
716
|
+
|
|
717
|
+
await develco.configure.read_sw_hw_version(device, logger);
|
|
717
718
|
},
|
|
718
719
|
endpoint: (device) => {
|
|
719
720
|
return {default: 43};
|
|
@@ -769,7 +770,6 @@ module.exports = [
|
|
|
769
770
|
description: 'IO module',
|
|
770
771
|
fromZigbee: [fz.on_off, develco.fz.input],
|
|
771
772
|
toZigbee: [tz.on_off, develco.tz.input],
|
|
772
|
-
onEvent: fwOnEvent,
|
|
773
773
|
meta: {multiEndpoint: true},
|
|
774
774
|
exposes: [
|
|
775
775
|
exposes.binary('input', ea.STATE_GET, true, false).withEndpoint('l1').withDescription('State of input 1'),
|
|
@@ -803,6 +803,8 @@ module.exports = [
|
|
|
803
803
|
const ep7 = device.getEndpoint(117);
|
|
804
804
|
await reporting.bind(ep7, coordinatorEndpoint, ['genOnOff']);
|
|
805
805
|
await reporting.onOff(ep7);
|
|
806
|
+
|
|
807
|
+
await develco.configure.read_sw_hw_version(device, logger);
|
|
806
808
|
},
|
|
807
809
|
|
|
808
810
|
endpoint: (device) => {
|
package/devices/hornbach.js
CHANGED
|
@@ -20,7 +20,7 @@ module.exports = [
|
|
|
20
20
|
model: '10011723',
|
|
21
21
|
vendor: 'HORNBACH',
|
|
22
22
|
description: 'FLAIR Viyu Smart LED bulb CCT E27',
|
|
23
|
-
extend: extend.light_onoff_brightness_colortemp(),
|
|
23
|
+
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
zigbeeModel: ['VIYU-C35-470-CCT-10011722'],
|
package/devices/immax.js
CHANGED
|
@@ -23,7 +23,7 @@ module.exports = [
|
|
|
23
23
|
model: '07089L',
|
|
24
24
|
vendor: 'Immax',
|
|
25
25
|
description: 'NEO SMART LED E27 5W',
|
|
26
|
-
extend: extend.light_onoff_brightness_colortemp(),
|
|
26
|
+
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
zigbeeModel: ['E27-filament-Dim-ZB3.0'],
|
|
@@ -92,7 +92,7 @@ module.exports = [
|
|
|
92
92
|
await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
|
|
93
93
|
await reporting.readMeteringMultiplierDivisor(endpoint);
|
|
94
94
|
await reporting.currentSummDelivered(endpoint);
|
|
95
|
-
await reporting.activePower(endpoint);
|
|
95
|
+
await reporting.activePower(endpoint, {change: 5});
|
|
96
96
|
},
|
|
97
97
|
exposes: [e.switch(), e.power(), e.energy()],
|
|
98
98
|
},
|
package/devices/leviton.js
CHANGED
|
@@ -100,11 +100,7 @@ module.exports = [
|
|
|
100
100
|
exposes.numeric('ballast_maximum_level', ea.ALL).withValueMin(1).withValueMax(254)
|
|
101
101
|
.withDescription('Specifies the maximum brightness value'),
|
|
102
102
|
exposes.numeric('ballast_power_on_level', ea.ALL).withValueMin(1).withValueMax(254)
|
|
103
|
-
.withDescription('Specifies the initialisation light level. Can not be set lower than "ballast_minimum_level"'),
|
|
104
|
-
exposes.numeric('ballast_physical_minimum_level', ea.ALL).withValueMin(1).withValueMax(254)
|
|
105
|
-
.withDescription('Specifies the minimum light output the ballast can achieve.'),
|
|
106
|
-
exposes.numeric('ballast_physical_maximum_level', ea.ALL).withValueMin(1).withValueMax(254)
|
|
107
|
-
.withDescription('Specifies the maximum light output the ballast can achieve.')],
|
|
103
|
+
.withDescription('Specifies the initialisation light level. Can not be set lower than "ballast_minimum_level"')],
|
|
108
104
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
109
105
|
await extend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
|
|
110
106
|
const endpoint = device.getEndpoint(1);
|
package/devices/nodon.js
CHANGED
|
@@ -21,6 +21,21 @@ module.exports = [
|
|
|
21
21
|
},
|
|
22
22
|
exposes: [e.cover_position()],
|
|
23
23
|
},
|
|
24
|
+
{
|
|
25
|
+
zigbeeModel: ['SIN-4-RS-20_PRO'],
|
|
26
|
+
model: 'SIN-4-RS-20_PRO',
|
|
27
|
+
vendor: 'NodOn',
|
|
28
|
+
description: 'Roller shutter controller',
|
|
29
|
+
fromZigbee: [fz.cover_position_tilt],
|
|
30
|
+
toZigbee: [tz.cover_state, tz.cover_position_tilt],
|
|
31
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
32
|
+
const endpoint = device.getEndpoint(1);
|
|
33
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'closuresWindowCovering']);
|
|
34
|
+
await reporting.currentPositionLiftPercentage(endpoint);
|
|
35
|
+
await reporting.currentPositionTiltPercentage(endpoint);
|
|
36
|
+
},
|
|
37
|
+
exposes: [e.cover_position()],
|
|
38
|
+
},
|
|
24
39
|
{
|
|
25
40
|
zigbeeModel: ['SIN-4-1-20'],
|
|
26
41
|
model: 'SIN-4-1-20',
|
package/devices/nous.js
CHANGED
|
@@ -32,6 +32,10 @@ module.exports = [
|
|
|
32
32
|
},
|
|
33
33
|
exposes: [
|
|
34
34
|
e.temperature(), e.humidity(), e.battery(),
|
|
35
|
+
exposes.numeric('temperature_report_interval', ea.STATE_SET).withUnit('min').withValueMin(5).withValueMax(120).withValueStep(5)
|
|
36
|
+
.withDescription('Temperature Report interval'),
|
|
37
|
+
exposes.numeric('humidity_report_interval', ea.STATE_SET).withUnit('min').withValueMin(5).withValueMax(120).withValueStep(5)
|
|
38
|
+
.withDescription('Humidity Report interval'),
|
|
35
39
|
exposes.enum('temperature_unit_convert', ea.STATE_SET, ['celsius', 'fahrenheit']).withDescription('Current display unit'),
|
|
36
40
|
exposes.enum('temperature_alarm', ea.STATE, ['canceled', 'lower_alarm', 'upper_alarm'])
|
|
37
41
|
.withDescription('Temperature alarm status'),
|
|
@@ -41,6 +45,14 @@ module.exports = [
|
|
|
41
45
|
.withDescription('Alarm temperature min'),
|
|
42
46
|
exposes.numeric('temperature_sensitivity', ea.STATE_SET).withUnit('°C').withValueMin(0.1).withValueMax(50).withValueStep(0.1)
|
|
43
47
|
.withDescription('Temperature sensitivity'),
|
|
48
|
+
exposes.enum('humidity_alarm', ea.STATE, ['canceled', 'lower_alarm', 'upper_alarm'])
|
|
49
|
+
.withDescription('Humidity alarm status'),
|
|
50
|
+
exposes.numeric('max_humidity', ea.STATE_SET).withUnit('%').withValueMin(0).withValueMax(100)
|
|
51
|
+
.withDescription('Alarm humidity max'),
|
|
52
|
+
exposes.numeric('min_humidity', ea.STATE_SET).withUnit('%').withValueMin(0).withValueMax(100)
|
|
53
|
+
.withDescription('Alarm humidity min'),
|
|
54
|
+
exposes.numeric('humidity_sensitivity', ea.STATE_SET).withUnit('%').withValueMin(1).withValueMax(100).withValueStep(1)
|
|
55
|
+
.withDescription('Humidity sensitivity'),
|
|
44
56
|
],
|
|
45
57
|
},
|
|
46
58
|
{
|
package/devices/perenio.js
CHANGED
|
@@ -247,7 +247,6 @@ module.exports = [
|
|
|
247
247
|
vendor: 'Perenio',
|
|
248
248
|
description: 'Flood alarm device',
|
|
249
249
|
fromZigbee: [fz.ias_water_leak_alarm_1, fz.ignore_basic_report, fz.battery],
|
|
250
|
-
meta: {battery: {dontDividePercentage: true}},
|
|
251
250
|
toZigbee: [],
|
|
252
251
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
253
252
|
const endpoint = device.getEndpoint(1);
|
package/devices/philips.js
CHANGED
|
@@ -2862,4 +2862,11 @@ module.exports = [
|
|
|
2862
2862
|
description: 'Hue white ambiance Buckram double spotlight with Bluetooth',
|
|
2863
2863
|
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
|
|
2864
2864
|
},
|
|
2865
|
+
{
|
|
2866
|
+
zigbeeModel: ['4090131P9'],
|
|
2867
|
+
model: '8718696174548',
|
|
2868
|
+
vendor: 'Philips',
|
|
2869
|
+
description: ' Hue Sana wall lamp with Bluetooth white',
|
|
2870
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
2871
|
+
},
|
|
2865
2872
|
];
|
package/devices/shinasystem.js
CHANGED
|
@@ -537,6 +537,40 @@ module.exports = [
|
|
|
537
537
|
}]);
|
|
538
538
|
},
|
|
539
539
|
},
|
|
540
|
+
{
|
|
541
|
+
zigbeeModel: ['PMM-300Z3'],
|
|
542
|
+
model: 'PMM-300Z3',
|
|
543
|
+
vendor: 'ShinaSystem',
|
|
544
|
+
description: 'SiHAS 3phase energy monitor',
|
|
545
|
+
fromZigbee: [fz.electrical_measurement, fz.metering, fz.temperature],
|
|
546
|
+
toZigbee: [tz.metering_power, tz.currentsummdelivered, tz.frequency, tz.powerfactor, tz.acvoltage, tz.accurrent, tz.temperature],
|
|
547
|
+
exposes: [e.power().withAccess(ea.STATE_GET), e.energy().withAccess(ea.STATE_GET),
|
|
548
|
+
e.current().withAccess(ea.STATE_GET), e.voltage().withAccess(ea.STATE_GET),
|
|
549
|
+
e.temperature().withAccess(ea.STATE_GET).withDescription('temperature of device internal mcu'),
|
|
550
|
+
exposes.numeric('power_factor', ea.STATE_GET).withDescription('Measured electrical power factor'),
|
|
551
|
+
exposes.numeric('ac_frequency', ea.STATE_GET).withUnit('Hz').withDescription('Measured electrical ac frequency')],
|
|
552
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
553
|
+
const endpoint = device.getEndpoint(1);
|
|
554
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['haElectricalMeasurement', 'seMetering', 'msTemperatureMeasurement']);
|
|
555
|
+
await endpoint.read('haElectricalMeasurement', ['acVoltageMultiplier', 'acVoltageDivisor', 'acCurrentMultiplier',
|
|
556
|
+
'acCurrentDivisor']);
|
|
557
|
+
await endpoint.read('seMetering', ['multiplier', 'divisor']);
|
|
558
|
+
// await reporting.activePower(endpoint, {min: 1, max: 600, change: 5}); // no need, duplicate for power value.
|
|
559
|
+
await reporting.instantaneousDemand(endpoint, {min: 1, max: 600, change: 5});
|
|
560
|
+
await reporting.powerFactor(endpoint, {min: 10, max: 600, change: 1});
|
|
561
|
+
await reporting.rmsVoltage(endpoint, {min: 5, max: 600, change: 1});
|
|
562
|
+
await reporting.rmsCurrent(endpoint, {min: 5, max: 600, change: 1});
|
|
563
|
+
await reporting.currentSummDelivered(endpoint, {min: 1, max: 600, change: 5});
|
|
564
|
+
await reporting.temperature(endpoint, {min: 20, max: 300, change: 10});
|
|
565
|
+
endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {acFrequencyMultiplier: 1, acFrequencyDivisor: 10});
|
|
566
|
+
await endpoint.configureReporting('haElectricalMeasurement', [{
|
|
567
|
+
attribute: 'acFrequency',
|
|
568
|
+
minimumReportInterval: 10,
|
|
569
|
+
maximumReportInterval: 600,
|
|
570
|
+
reportableChange: 3,
|
|
571
|
+
}]);
|
|
572
|
+
},
|
|
573
|
+
},
|
|
540
574
|
{
|
|
541
575
|
zigbeeModel: ['DLM-300Z'],
|
|
542
576
|
model: 'DLM-300Z',
|
package/devices/sprut.js
CHANGED
|
@@ -273,10 +273,10 @@ module.exports = [
|
|
|
273
273
|
.withDescription('The minimum noise level at which the detector will work (default: 50)'),
|
|
274
274
|
e.enum('co2_autocalibration', ea.ALL, switchActionValues)
|
|
275
275
|
.withDescription('Automatic calibration of the CO2 sensor. If ON, the CO2 sensor will automatically calibrate '+
|
|
276
|
-
'every 7 days.'),
|
|
276
|
+
'every 7 days. (MH-Z19B sensor)'),
|
|
277
277
|
e.enum('co2_manual_calibration', ea.ALL, switchActionValues)
|
|
278
278
|
.withDescription('Ventilate the room for 20 minutes, turn on manual calibration, and turn it off after one second. '+
|
|
279
|
-
'After about 5 minutes the CO2 sensor will show 400ppm. Calibration completed'),
|
|
279
|
+
'After about 5 minutes the CO2 sensor will show 400ppm. Calibration completed. (MH-Z19B sensor)'),
|
|
280
280
|
e.enum('th_heater', ea.ALL, switchActionValues)
|
|
281
281
|
.withDescription('Turn on when working in conditions of high humidity (more than 70 %, RH) or condensation, '+
|
|
282
282
|
'if the sensor shows 0 or 100 %.'),
|
|
@@ -307,14 +307,6 @@ module.exports = [
|
|
|
307
307
|
|
|
308
308
|
// buzzer
|
|
309
309
|
await device.getEndpoint(4).read('genOnOff', ['onOff']);
|
|
310
|
-
|
|
311
|
-
// Read data at start
|
|
312
|
-
await endpoint1.read('msTemperatureMeasurement', ['measuredValue']);
|
|
313
|
-
await endpoint1.read('msIlluminanceMeasurement', ['measuredValue']);
|
|
314
|
-
await endpoint1.read('msRelativeHumidity', ['measuredValue']);
|
|
315
|
-
await endpoint1.read('msOccupancySensing', ['occupancy']);
|
|
316
|
-
await endpoint1.read('sprutNoise', ['noise']);
|
|
317
|
-
await endpoint1.read('sprutNoise', ['noiseDetected']);
|
|
318
310
|
},
|
|
319
311
|
endpoint: (device) => {
|
|
320
312
|
return {'default': 1, 'l1': 2, 'l2': 3, 'l3': 4};
|
package/devices/tuya.js
CHANGED
|
@@ -22,7 +22,7 @@ const TS011Fplugs = ['_TZ3000_5f43h46b', '_TZ3000_cphmq0q7', '_TZ3000_dpo1ysak',
|
|
|
22
22
|
'_TZ3000_zloso4jk', '_TZ3000_r6buo8ba', '_TZ3000_iksasdbv', '_TZ3000_idrffznf', '_TZ3000_okaz9tjs', '_TZ3210_q7oryllx',
|
|
23
23
|
'_TZ3000_ss98ec5d', '_TZ3000_gznh2xla', '_TZ3000_hdopuwv6', '_TZ3000_gvn91tmx', '_TZ3000_dksbtrzs', '_TZ3000_b28wrpvx',
|
|
24
24
|
'_TZ3000_aim0ztek', '_TZ3000_mlswgkc3', '_TZ3000_7dndcnnb', '_TZ3000_waho4jtj', '_TZ3000_nmsciidq', '_TZ3000_jtgxgmks',
|
|
25
|
-
'_TZ3000_rdfh8cfs', '_TZ3000_yujkchbz'];
|
|
25
|
+
'_TZ3000_rdfh8cfs', '_TZ3000_yujkchbz', '_TZ3000_fgwhjm9j'];
|
|
26
26
|
|
|
27
27
|
const tzLocal = {
|
|
28
28
|
SA12IZL_silence_siren: {
|
|
@@ -1657,7 +1657,8 @@ module.exports = [
|
|
|
1657
1657
|
model: 'TS0042',
|
|
1658
1658
|
vendor: 'TuYa',
|
|
1659
1659
|
description: 'Wireless switch with 2 buttons',
|
|
1660
|
-
whiteLabel: [{vendor: 'Smart9', model: 'S9TSZGB'}, {vendor: 'Lonsonho', model: 'TS0042'}
|
|
1660
|
+
whiteLabel: [{vendor: 'Smart9', model: 'S9TSZGB'}, {vendor: 'Lonsonho', model: 'TS0042'},
|
|
1661
|
+
{vendor: 'ClickSmart+', model: 'CSPGM2075PW'}],
|
|
1661
1662
|
exposes: [e.battery(), e.action(['1_single', '1_double', '1_hold', '2_single', '2_double', '2_hold'])],
|
|
1662
1663
|
fromZigbee: [fz.tuya_on_off_action, fz.battery],
|
|
1663
1664
|
toZigbee: [],
|
|
@@ -2989,7 +2990,9 @@ module.exports = [
|
|
|
2989
2990
|
exposes: [e.battery(), e.vibration(), exposes.enum('sensitivity', exposes.access.STATE_SET, ['low', 'medium', 'high'])],
|
|
2990
2991
|
},
|
|
2991
2992
|
{
|
|
2992
|
-
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_8bxrzyxz'},
|
|
2993
|
+
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_8bxrzyxz'},
|
|
2994
|
+
{modelID: 'TS011F', manufacturerName: '_TZ3000_ky0fq4ho'},
|
|
2995
|
+
{modelID: 'TS011F', manufacturerName: '_TZ3000_qeuvnohg'}],
|
|
2993
2996
|
model: 'TS011F_din_smart_relay',
|
|
2994
2997
|
description: 'Din smart relay (with power monitoring)',
|
|
2995
2998
|
vendor: 'TuYa',
|
|
@@ -3391,8 +3394,8 @@ module.exports = [
|
|
|
3391
3394
|
},
|
|
3392
3395
|
exposes: [
|
|
3393
3396
|
e.temperature(), e.humidity(), e.battery(),
|
|
3394
|
-
exposes.numeric('
|
|
3395
|
-
.withDescription('Report interval'),
|
|
3397
|
+
exposes.numeric('temperature_report_interval', ea.STATE_SET).withUnit('min').withValueMin(5).withValueMax(60).withValueStep(5)
|
|
3398
|
+
.withDescription('Temperature Report interval'),
|
|
3396
3399
|
exposes.enum('temperature_unit_convert', ea.STATE_SET, ['celsius', 'fahrenheit']).withDescription('Current display unit'),
|
|
3397
3400
|
exposes.enum('temperature_alarm', ea.STATE, ['canceled', 'lower_alarm', 'upper_alarm'])
|
|
3398
3401
|
.withDescription('Temperature alarm status'),
|
package/devices/ubisys.js
CHANGED
|
@@ -671,10 +671,6 @@ module.exports = [
|
|
|
671
671
|
ubisys.tz.dimmer_setup_genLevelCtrl, ubisys.tz.configure_device_setup, tz.ignore_transition, tz.light_brightness_move,
|
|
672
672
|
tz.light_brightness_step],
|
|
673
673
|
exposes: [e.light_brightness().withLevelConfig(), e.power(),
|
|
674
|
-
exposes.numeric('ballast_physical_minimum_level', ea.ALL).withValueMin(1).withValueMax(254)
|
|
675
|
-
.withDescription('Specifies the minimum light output the ballast can achieve.'),
|
|
676
|
-
exposes.numeric('ballast_physical_maximum_level', ea.ALL).withValueMin(1).withValueMax(254)
|
|
677
|
-
.withDescription('Specifies the maximum light output the ballast can achieve.'),
|
|
678
674
|
exposes.numeric('ballast_minimum_level', ea.ALL).withValueMin(1).withValueMax(254)
|
|
679
675
|
.withDescription('Specifies the minimum light output of the ballast'),
|
|
680
676
|
exposes.numeric('ballast_maximum_level', ea.ALL).withValueMin(1).withValueMax(254)
|
package/devices/xiaomi.js
CHANGED
|
@@ -1371,10 +1371,16 @@ module.exports = [
|
|
|
1371
1371
|
model: 'ZNCZ12LM',
|
|
1372
1372
|
description: 'Mi power plug ZigBee US',
|
|
1373
1373
|
vendor: 'Xiaomi',
|
|
1374
|
-
fromZigbee: [fz.on_off, fz.xiaomi_power, fz.xiaomi_basic, fz.ignore_occupancy_report, fz.ignore_illuminance_report],
|
|
1375
|
-
toZigbee: [tz.on_off, tz.xiaomi_power
|
|
1376
|
-
|
|
1377
|
-
|
|
1374
|
+
fromZigbee: [fz.on_off, fz.xiaomi_power, fz.aqara_opple, fz.xiaomi_basic, fz.ignore_occupancy_report, fz.ignore_illuminance_report],
|
|
1375
|
+
toZigbee: [tz.on_off, tz.xiaomi_power, tz.xiaomi_switch_power_outage_memory, tz.xiaomi_auto_off, tz.xiaomi_led_disabled_night,
|
|
1376
|
+
tz.xiaomi_overload_protection],
|
|
1377
|
+
exposes: [
|
|
1378
|
+
e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.device_temperature().withAccess(ea.STATE),
|
|
1379
|
+
e.voltage().withAccess(ea.STATE), e.current(), e.consumer_connected(), e.led_disabled_night(),
|
|
1380
|
+
e.power_outage_memory(), exposes.binary('auto_off', ea.STATE_SET, true, false)
|
|
1381
|
+
.withDescription('Turn the device automatically off when attached device consumes less than 2W for 20 minutes'),
|
|
1382
|
+
exposes.numeric('overload_protection', exposes.access.ALL).withValueMin(100).withValueMax(2300).withUnit('W')
|
|
1383
|
+
.withDescription('Maximum allowed load, turns off if exceeded')],
|
|
1378
1384
|
ota: ota.zigbeeOTA,
|
|
1379
1385
|
},
|
|
1380
1386
|
{
|
package/devices/zemismart.js
CHANGED
|
@@ -235,7 +235,7 @@ module.exports = [
|
|
|
235
235
|
},
|
|
236
236
|
},
|
|
237
237
|
{
|
|
238
|
-
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_9mahtqtg'}],
|
|
238
|
+
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_9mahtqtg'}, {modelID: 'TS0601', manufacturerName: '_TZE200_r731zlxk'}],
|
|
239
239
|
model: 'TB26-6',
|
|
240
240
|
vendor: 'Zemismart',
|
|
241
241
|
description: '6-gang smart wall switch',
|
package/lib/tuya.js
CHANGED
|
@@ -741,8 +741,10 @@ const dataPoints = {
|
|
|
741
741
|
nousMinHumi: 13,
|
|
742
742
|
nousTempAlarm: 14,
|
|
743
743
|
nousHumiAlarm: 15,
|
|
744
|
+
nousHumiSensitivity: 20,
|
|
744
745
|
nousTempSensitivity: 19,
|
|
745
|
-
|
|
746
|
+
nousTempReportInterval: 17,
|
|
747
|
+
nousHumiReportInterval: 18,
|
|
746
748
|
// TUYA Temperature and Humidity Sensor
|
|
747
749
|
tthTemperature: 1,
|
|
748
750
|
tthHumidity: 2,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zigbee-herdsman-converters",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.649",
|
|
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.66"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"eslint": "*",
|