zigbee-herdsman-converters 14.0.647 → 14.0.648
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/toZigbee.js +1 -0
- package/devices/develco.js +34 -32
- package/devices/hornbach.js +1 -1
- package/devices/immax.js +1 -1
- package/devices/perenio.js +0 -1
- package/devices/shinasystem.js +34 -0
- package/devices/tuya.js +4 -2
- package/devices/zemismart.js +1 -1
- package/package.json +2 -2
package/converters/toZigbee.js
CHANGED
|
@@ -4261,6 +4261,7 @@ const converters = {
|
|
|
4261
4261
|
convertSet: async (entity, key, value, meta) => {
|
|
4262
4262
|
const payload = {0x4000: {value, type: 0x30}};
|
|
4263
4263
|
await entity.write('hvacThermostat', payload, manufacturerOptions.eurotronic);
|
|
4264
|
+
return {state: {[key]: value}};
|
|
4264
4265
|
},
|
|
4265
4266
|
convertGet: async (entity, key, meta) => {
|
|
4266
4267
|
await entity.read('hvacThermostat', [0x4000], manufacturerOptions.eurotronic);
|
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'],
|
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/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/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: {
|
|
@@ -2989,7 +2989,9 @@ module.exports = [
|
|
|
2989
2989
|
exposes: [e.battery(), e.vibration(), exposes.enum('sensitivity', exposes.access.STATE_SET, ['low', 'medium', 'high'])],
|
|
2990
2990
|
},
|
|
2991
2991
|
{
|
|
2992
|
-
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_8bxrzyxz'},
|
|
2992
|
+
fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_8bxrzyxz'},
|
|
2993
|
+
{modelID: 'TS011F', manufacturerName: '_TZ3000_ky0fq4ho'},
|
|
2994
|
+
{modelID: 'TS011F', manufacturerName: '_TZ3000_qeuvnohg'}],
|
|
2993
2995
|
model: 'TS011F_din_smart_relay',
|
|
2994
2996
|
description: 'Din smart relay (with power monitoring)',
|
|
2995
2997
|
vendor: 'TuYa',
|
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zigbee-herdsman-converters",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.648",
|
|
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": "*",
|