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.
@@ -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
- zigbeeModel: ['PoP'],
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
- zigbeeModel: ['Meter Reader'],
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
- await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
47
- } catch (error) {
48
- /* fails for some: https://github.com/Koenkk/zigbee2mqtt/issues/11867 */
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
- zigbeeModel: ['ID Lock 150'],
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
- zigbeeModel: ['Water Sensor'],
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(['on', 'off', 'brightness_stop', 'brightness_step_up', 'brightness_step_down']), e.battery()],
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
  ];
@@ -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: ['915005987701'],
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 Ceiling Light, 3 pendant (black)',
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 Ceiling Light, 3 pendant (white)',
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 Ceiling Light, 4 spotlights (black)',
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 Ceiling Light, 4 spotlights (white)',
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 %').withValueMin(0).withValueMax(100),
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),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "15.0.20",
3
+ "version": "15.0.21",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [