zigbee-herdsman-converters 15.0.20 → 15.0.21
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 +9 -0
- package/devices/bosch.js +20 -0
- package/devices/datek.js +11 -10
- package/devices/essentialb.js +11 -0
- package/devices/lidl.js +3 -2
- package/devices/namron.js +21 -0
- package/devices/nodon.js +35 -0
- package/devices/philips.js +21 -7
- package/devices/sonoff.js +1 -1
- package/lib/exposes.js +1 -1
- package/package.json +1 -1
package/converters/fromZigbee.js
CHANGED
|
@@ -8312,6 +8312,15 @@ const converters = {
|
|
|
8312
8312
|
return result;
|
|
8313
8313
|
},
|
|
8314
8314
|
},
|
|
8315
|
+
hw_version: {
|
|
8316
|
+
cluster: 'genBasic',
|
|
8317
|
+
type: ['attributeReport', 'readResponse'],
|
|
8318
|
+
convert: (model, msg, publish, options, meta) => {
|
|
8319
|
+
const result = {};
|
|
8320
|
+
if (msg.data.hasOwnProperty('hwVersion')) result['hw_version'] = msg.data.hwVersion;
|
|
8321
|
+
return result;
|
|
8322
|
+
},
|
|
8323
|
+
},
|
|
8315
8324
|
// #endregion
|
|
8316
8325
|
|
|
8317
8326
|
// #region Ignore converters (these message dont need parsing).
|
package/devices/bosch.js
CHANGED
|
@@ -508,6 +508,26 @@ const definition = [
|
|
|
508
508
|
exposes.enum('heartbeat', ea.ALL, Object.keys(stateOffOn)).withDescription('Enable/disable heartbeat'),
|
|
509
509
|
],
|
|
510
510
|
},
|
|
511
|
+
{
|
|
512
|
+
zigbeeModel: ['RBSH-SP-ZB-EU'],
|
|
513
|
+
model: 'BSP-FZ2',
|
|
514
|
+
vendor: 'Bosch',
|
|
515
|
+
description: 'Plug compact EU',
|
|
516
|
+
fromZigbee: [fz.on_off, fz.power_on_behavior, fz.electrical_measurement, fz.metering],
|
|
517
|
+
toZigbee: [tz.on_off, tz.power_on_behavior],
|
|
518
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
519
|
+
const endpoint = device.getEndpoint(1);
|
|
520
|
+
await endpoint.read('genOnOff', ['onOff', 'startUpOnOff']);
|
|
521
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
|
|
522
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['seMetering']);
|
|
523
|
+
await reporting.readMeteringMultiplierDivisor(endpoint);
|
|
524
|
+
await reporting.currentSummDelivered(endpoint, {change: [0, 1]});
|
|
525
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['haElectricalMeasurement']);
|
|
526
|
+
await endpoint.read('haElectricalMeasurement', ['acPowerMultiplier', 'acPowerDivisor']);
|
|
527
|
+
await reporting.activePower(endpoint);
|
|
528
|
+
},
|
|
529
|
+
exposes: [e.switch(), e.power_on_behavior(), e.power(), e.energy()],
|
|
530
|
+
},
|
|
511
531
|
];
|
|
512
532
|
|
|
513
533
|
module.exports = definition;
|
package/devices/datek.js
CHANGED
|
@@ -10,7 +10,7 @@ const ea = exposes.access;
|
|
|
10
10
|
|
|
11
11
|
module.exports = [
|
|
12
12
|
{
|
|
13
|
-
|
|
13
|
+
fingerprint: [{modelID: 'PoP', manufacturerName: 'Eva'}],
|
|
14
14
|
model: 'HLU2909K',
|
|
15
15
|
vendor: 'Datek',
|
|
16
16
|
description: 'APEX smart plug 16A',
|
|
@@ -31,21 +31,23 @@ module.exports = [
|
|
|
31
31
|
exposes: [e.power(), e.current(), e.voltage(), e.switch(), e.temperature()],
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
|
-
|
|
34
|
+
fingerprint: [{modelID: 'Meter Reader', manufacturerName: 'Eva'}],
|
|
35
35
|
model: 'HSE2905E',
|
|
36
36
|
vendor: 'Datek',
|
|
37
37
|
description: 'Datek Eva AMS HAN power-meter sensor',
|
|
38
|
-
fromZigbee: [fz.metering_datek, fz.electrical_measurement, fz.temperature],
|
|
38
|
+
fromZigbee: [fz.metering_datek, fz.electrical_measurement, fz.temperature, fz.hw_version],
|
|
39
39
|
toZigbee: [],
|
|
40
40
|
ota: ota.zigbeeOTA,
|
|
41
41
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
42
42
|
const endpoint = device.getEndpoint(1);
|
|
43
43
|
await reporting.bind(endpoint, coordinatorEndpoint, ['haElectricalMeasurement', 'seMetering', 'msTemperatureMeasurement']);
|
|
44
|
+
await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
|
|
44
45
|
await reporting.readMeteringMultiplierDivisor(endpoint);
|
|
45
46
|
try {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
// hwVersion < 2 do not support hwVersion attribute, so we are testing if this is hwVersion 1 or 2
|
|
48
|
+
await endpoint.read('genBasic', ['hwVersion']);
|
|
49
|
+
} catch (e) {
|
|
50
|
+
e;
|
|
49
51
|
}
|
|
50
52
|
const payload = [{
|
|
51
53
|
attribute: 'rmsVoltagePhB',
|
|
@@ -78,8 +80,6 @@ module.exports = [
|
|
|
78
80
|
await reporting.currentSummDelivered(endpoint, {min: 60, max: 3600, change: [1, 1]});
|
|
79
81
|
await reporting.currentSummReceived(endpoint);
|
|
80
82
|
await reporting.temperature(endpoint, {min: 60, max: 3600, change: 0});
|
|
81
|
-
device.powerSource = 'DC source';
|
|
82
|
-
device.save();
|
|
83
83
|
},
|
|
84
84
|
exposes: [e.power(), e.energy(), e.current(), e.voltage(), e.current_phase_b(), e.voltage_phase_b(), e.current_phase_c(),
|
|
85
85
|
e.voltage_phase_c(), e.temperature()],
|
|
@@ -113,7 +113,7 @@ module.exports = [
|
|
|
113
113
|
exposes.numeric('occupancy_timeout', ea.ALL).withUnit('seconds').withValueMin(0).withValueMax(65535)],
|
|
114
114
|
},
|
|
115
115
|
{
|
|
116
|
-
|
|
116
|
+
fingerprint: [{modelID: 'ID Lock 150', manufacturerName: 'Eva'}],
|
|
117
117
|
model: '0402946',
|
|
118
118
|
vendor: 'Datek',
|
|
119
119
|
description: 'Zigbee module for ID lock 150',
|
|
@@ -187,7 +187,7 @@ module.exports = [
|
|
|
187
187
|
'random_pin_24_hours']).withDescription('Service Mode of the Lock')],
|
|
188
188
|
},
|
|
189
189
|
{
|
|
190
|
-
|
|
190
|
+
fingerprint: [{modelID: 'Water Sensor', manufacturerName: 'Eva'}],
|
|
191
191
|
model: 'HSE2919E',
|
|
192
192
|
vendor: 'Datek',
|
|
193
193
|
description: 'Eva water leak sensor',
|
|
@@ -228,6 +228,7 @@ module.exports = [
|
|
|
228
228
|
'brightness_move_down', 'brightness_move_up', 'brightness_stop'])],
|
|
229
229
|
},
|
|
230
230
|
{
|
|
231
|
+
fingerprint: [{modelID: 'Door/Window Sensor', manufacturerName: 'Eva'}],
|
|
231
232
|
zigbeeModel: ['Door/Window Sensor'],
|
|
232
233
|
model: 'HSE2920E',
|
|
233
234
|
vendor: 'Datek',
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const extend = require('../lib/extend');
|
|
2
|
+
|
|
3
|
+
module.exports = [
|
|
4
|
+
{
|
|
5
|
+
zigbeeModel: ['EB-E14-P45-RGBW'],
|
|
6
|
+
model: 'EB-E14-P45-RGBW',
|
|
7
|
+
vendor: 'EssentielB',
|
|
8
|
+
description: 'Smart LED bulb',
|
|
9
|
+
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
|
|
10
|
+
},
|
|
11
|
+
];
|
package/devices/lidl.js
CHANGED
|
@@ -409,14 +409,15 @@ module.exports = [
|
|
|
409
409
|
model: 'HG08164',
|
|
410
410
|
vendor: 'Lidl',
|
|
411
411
|
description: 'Silvercrest smart button',
|
|
412
|
-
fromZigbee: [fz.command_on, fz.command_off, fz.command_step, fz.command_stop, fz.battery],
|
|
412
|
+
fromZigbee: [fz.command_on, fz.command_off, fz.command_step, fz.command_stop, fz.battery, fz.tuya_on_off_action],
|
|
413
413
|
toZigbee: [],
|
|
414
414
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
415
415
|
const endpoint = device.getEndpoint(1);
|
|
416
416
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
417
417
|
await reporting.batteryPercentageRemaining(endpoint);
|
|
418
418
|
},
|
|
419
|
-
exposes: [e.action(
|
|
419
|
+
exposes: [e.action(
|
|
420
|
+
['on', 'off', 'brightness_stop', 'brightness_step_up', 'brightness_step_down', 'single', 'double']), e.battery()],
|
|
420
421
|
},
|
|
421
422
|
{
|
|
422
423
|
fingerprint: [{modelID: 'TS0211', manufacturerName: '_TZ1800_ladpngdx'}],
|
package/devices/namron.js
CHANGED
|
@@ -734,4 +734,25 @@ module.exports = [
|
|
|
734
734
|
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 555]}),
|
|
735
735
|
meta: {turnsOffAtBrightness1: true},
|
|
736
736
|
},
|
|
737
|
+
{
|
|
738
|
+
zigbeeModel: ['4512749'],
|
|
739
|
+
model: '4512749',
|
|
740
|
+
vendor: 'Namron',
|
|
741
|
+
description: 'Thermostat outlet socket',
|
|
742
|
+
fromZigbee: [fz.metering, fz.electrical_measurement, fz.on_off, fz.temperature],
|
|
743
|
+
toZigbee: [tz.on_off, tz.power_on_behavior],
|
|
744
|
+
exposes: [e.temperature(), e.power(), e.current(), e.voltage(), e.switch(), e.power_on_behavior()],
|
|
745
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
746
|
+
const endpoint = device.getEndpoint(1);
|
|
747
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'msTemperatureMeasurement']);
|
|
748
|
+
await endpoint.read('haElectricalMeasurement', ['acVoltageMultiplier', 'acVoltageDivisor']);
|
|
749
|
+
await endpoint.read('haElectricalMeasurement', ['acPowerMultiplier', 'acPowerDivisor']);
|
|
750
|
+
await endpoint.read('haElectricalMeasurement', ['acCurrentMultiplier', 'acCurrentDivisor']);
|
|
751
|
+
await reporting.onOff(endpoint);
|
|
752
|
+
await reporting.temperature(endpoint);
|
|
753
|
+
await reporting.rmsVoltage(endpoint);
|
|
754
|
+
await reporting.rmsCurrent(endpoint);
|
|
755
|
+
await reporting.activePower(endpoint);
|
|
756
|
+
},
|
|
757
|
+
},
|
|
737
758
|
];
|
package/devices/nodon.js
CHANGED
|
@@ -51,6 +51,21 @@ module.exports = [
|
|
|
51
51
|
return {default: 1};
|
|
52
52
|
},
|
|
53
53
|
},
|
|
54
|
+
{
|
|
55
|
+
zigbeeModel: ['SIN-4-1-20_PRO'],
|
|
56
|
+
model: 'SIN-4-1-20_PRO',
|
|
57
|
+
vendor: 'NodOn',
|
|
58
|
+
description: 'Single LED relay',
|
|
59
|
+
extend: extend.switch(),
|
|
60
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
61
|
+
const ep = device.getEndpoint(1);
|
|
62
|
+
await reporting.bind(ep, coordinatorEndpoint, ['genOnOff']);
|
|
63
|
+
await reporting.onOff(ep);
|
|
64
|
+
},
|
|
65
|
+
endpoint: (device) => {
|
|
66
|
+
return {default: 1};
|
|
67
|
+
},
|
|
68
|
+
},
|
|
54
69
|
{
|
|
55
70
|
zigbeeModel: ['SIN-4-2-20'],
|
|
56
71
|
model: 'SIN-4-2-20',
|
|
@@ -71,4 +86,24 @@ module.exports = [
|
|
|
71
86
|
await reporting.onOff(ep2);
|
|
72
87
|
},
|
|
73
88
|
},
|
|
89
|
+
{
|
|
90
|
+
zigbeeModel: ['SIN-4-2-20_PRO'],
|
|
91
|
+
model: 'SIN-4-2-20_PRO',
|
|
92
|
+
vendor: 'NodOn',
|
|
93
|
+
description: 'Double LED relay',
|
|
94
|
+
exposes: [e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2')],
|
|
95
|
+
extend: extend.switch(),
|
|
96
|
+
endpoint: (device) => {
|
|
97
|
+
return {'l1': 1, 'l2': 2};
|
|
98
|
+
},
|
|
99
|
+
meta: {multiEndpoint: true},
|
|
100
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
101
|
+
const ep1 = device.getEndpoint(1);
|
|
102
|
+
const ep2 = device.getEndpoint(2);
|
|
103
|
+
await reporting.bind(ep1, coordinatorEndpoint, ['genOnOff']);
|
|
104
|
+
await reporting.bind(ep2, coordinatorEndpoint, ['genOnOff']);
|
|
105
|
+
await reporting.onOff(ep1);
|
|
106
|
+
await reporting.onOff(ep2);
|
|
107
|
+
},
|
|
108
|
+
},
|
|
74
109
|
];
|
package/devices/philips.js
CHANGED
|
@@ -979,7 +979,7 @@ module.exports = [
|
|
|
979
979
|
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
980
980
|
},
|
|
981
981
|
{
|
|
982
|
-
zigbeeModel: ['LCG002', '929003047701'],
|
|
982
|
+
zigbeeModel: ['LCG002', '929003047701', '929003047701'],
|
|
983
983
|
model: '929001953101',
|
|
984
984
|
vendor: 'Philips',
|
|
985
985
|
description: 'Hue White and Color Ambiance GU10',
|
|
@@ -1288,7 +1288,7 @@ module.exports = [
|
|
|
1288
1288
|
model: '1743930P7',
|
|
1289
1289
|
vendor: 'Philips',
|
|
1290
1290
|
description: 'Hue Outdoor Econic wall lantern',
|
|
1291
|
-
extend: hueExtend.light_onoff_brightness_colortemp_color(),
|
|
1291
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({disableHueEffects: false, colorTempRange: [153, 500]}),
|
|
1292
1292
|
},
|
|
1293
1293
|
{
|
|
1294
1294
|
zigbeeModel: ['929003053001'],
|
|
@@ -1963,7 +1963,7 @@ module.exports = [
|
|
|
1963
1963
|
extend: hueExtend.light_onoff_brightness_colortemp_color_gradient({colorTempRange: [153, 500]}),
|
|
1964
1964
|
},
|
|
1965
1965
|
{
|
|
1966
|
-
zigbeeModel: ['
|
|
1966
|
+
zigbeeModel: ['929003479701'],
|
|
1967
1967
|
model: '915005987701',
|
|
1968
1968
|
vendor: 'Philips',
|
|
1969
1969
|
description: 'Hue Gradient Signe floor lamp (wood)',
|
|
@@ -3323,32 +3323,46 @@ module.exports = [
|
|
|
3323
3323
|
description: 'Hue white ambiance extra bright high lumen dimmable LED smart retrofit recessed 6" downlight',
|
|
3324
3324
|
extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 500]}),
|
|
3325
3325
|
},
|
|
3326
|
+
{
|
|
3327
|
+
zigbeeModel: ['929003115801'],
|
|
3328
|
+
model: '929003115801',
|
|
3329
|
+
vendor: 'Philips',
|
|
3330
|
+
description: 'Hue Perifo ceiling light, 1 pendant (white)',
|
|
3331
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3332
|
+
},
|
|
3333
|
+
{
|
|
3334
|
+
zigbeeModel: ['929003116201'],
|
|
3335
|
+
model: '929003116201',
|
|
3336
|
+
vendor: 'Philips',
|
|
3337
|
+
description: 'Hue Perifo linear light bar',
|
|
3338
|
+
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3339
|
+
},
|
|
3326
3340
|
{
|
|
3327
3341
|
zigbeeModel: ['929003115901'],
|
|
3328
3342
|
model: '929003117101',
|
|
3329
3343
|
vendor: 'Philips',
|
|
3330
|
-
description: 'Hue Perifo
|
|
3344
|
+
description: 'Hue Perifo ceiling light, 3 pendant (black)',
|
|
3331
3345
|
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3332
3346
|
},
|
|
3333
3347
|
{
|
|
3334
3348
|
zigbeeModel: ['929003117201'],
|
|
3335
3349
|
model: '929003117201',
|
|
3336
3350
|
vendor: 'Philips',
|
|
3337
|
-
description: 'Hue Perifo
|
|
3351
|
+
description: 'Hue Perifo ceiling light, 3 pendant (white)',
|
|
3338
3352
|
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3339
3353
|
},
|
|
3340
3354
|
{
|
|
3341
3355
|
zigbeeModel: ['929003117301'],
|
|
3342
3356
|
model: '929003117301',
|
|
3343
3357
|
vendor: 'Philips',
|
|
3344
|
-
description: 'Hue Perifo
|
|
3358
|
+
description: 'Hue Perifo ceiling light, 4 spotlights (black)',
|
|
3345
3359
|
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3346
3360
|
},
|
|
3347
3361
|
{
|
|
3348
3362
|
zigbeeModel: ['929003117401'],
|
|
3349
3363
|
model: '929003117401',
|
|
3350
3364
|
vendor: 'Philips',
|
|
3351
|
-
description: 'Hue Perifo
|
|
3365
|
+
description: 'Hue Perifo ceiling light, 4 spotlights (white)',
|
|
3352
3366
|
extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
3353
3367
|
},
|
|
3354
3368
|
{
|
package/devices/sonoff.js
CHANGED
|
@@ -90,7 +90,7 @@ module.exports = [
|
|
|
90
90
|
model: 'S31ZB',
|
|
91
91
|
vendor: 'SONOFF',
|
|
92
92
|
description: 'Zigbee smart plug (US version)',
|
|
93
|
-
extend: extend.switch(),
|
|
93
|
+
extend: extend.switch({disablePowerOnBehavior: true}),
|
|
94
94
|
fromZigbee: [fz.on_off_skip_duplicate_transaction],
|
|
95
95
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
96
96
|
const endpoint = device.getEndpoint(1);
|
package/lib/exposes.js
CHANGED
|
@@ -535,7 +535,7 @@ module.exports = {
|
|
|
535
535
|
away_mode: () => new Switch().withState('away_mode', false, 'Enable/disable away mode', access.STATE_SET),
|
|
536
536
|
away_preset_days: () => new Numeric('away_preset_days', access.STATE_SET).withDescription('Away preset days').withValueMin(0).withValueMax(100),
|
|
537
537
|
away_preset_temperature: () => new Numeric('away_preset_temperature', access.STATE_SET).withUnit('°C').withDescription('Away preset temperature').withValueMin(-10).withValueMax(35),
|
|
538
|
-
battery: () => new Numeric('battery', access.STATE).withUnit('%').withDescription('Remaining battery in
|
|
538
|
+
battery: () => new Numeric('battery', access.STATE).withUnit('%').withDescription('Remaining battery in %, can take up to 24 hours before reported.').withValueMin(0).withValueMax(100),
|
|
539
539
|
battery_low: () => new Binary('battery_low', access.STATE, true, false).withDescription('Indicates if the battery of this device is almost empty'),
|
|
540
540
|
battery_voltage: () => new Numeric('voltage', access.STATE).withUnit('mV').withDescription('Voltage of the battery in millivolts'),
|
|
541
541
|
boost_time: () => new Numeric('boost_time', access.STATE_SET).withUnit('s').withDescription('Boost time').withValueMin(0).withValueMax(900),
|