zigbee-herdsman-converters 14.0.414 → 14.0.415

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.
@@ -5373,7 +5373,7 @@ const converters = {
5373
5373
  payload[`state_${mapping}`] = value === 1 ? 'ON' : 'OFF';
5374
5374
  } else if (['WXKG14LM', 'WXKG16LM', 'WXKG17LM'].includes(model.model)) {
5375
5375
  payload.click_mode = {1: 'fast', 2: 'multi'}[value];
5376
- } else if (['WXCJKG11LM ', 'WXCJKG12LM', 'WXCJKG13LM'].includes(model.model)) {
5376
+ } else if (['WXCJKG11LM', 'WXCJKG12LM', 'WXCJKG13LM'].includes(model.model)) {
5377
5377
  // We don't know what the value means for these devices.
5378
5378
  // https://github.com/Koenkk/zigbee2mqtt/issues/11126
5379
5379
  } else {
@@ -39,7 +39,8 @@ module.exports = [
39
39
  description: 'Power plug',
40
40
  fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, fz.device_temperature],
41
41
  toZigbee: [tz.on_off],
42
- exposes: [e.switch(), e.power(), e.current(), e.voltage(), e.energy(), e.device_temperature()],
42
+ exposes: [e.switch(), e.power(), e.current(), e.voltage(), e.energy(), e.device_temperature(), e.ac_frequency()],
43
+ options: [exposes.options.precision(`ac_frequency`)],
43
44
  configure: async (device, coordinatorEndpoint, logger) => {
44
45
  const endpoint = device.getEndpoint(2);
45
46
  await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering', 'genDeviceTempCfg']);
@@ -52,6 +53,7 @@ module.exports = [
52
53
  await reporting.readMeteringMultiplierDivisor(endpoint);
53
54
  await reporting.currentSummDelivered(endpoint, {change: [0, 20]}); // Limit reports to once every 5m, or 0.02kWh
54
55
  await reporting.instantaneousDemand(endpoint, {min: constants.repInterval.MINUTES_5, change: 10});
56
+ await reporting.acFrequency(endpoint);
55
57
  },
56
58
  endpoint: (device) => {
57
59
  return {default: 2};
@@ -6,7 +6,8 @@ const ea = exposes.access;
6
6
 
7
7
  module.exports = [
8
8
  {
9
- fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_wt9agwf3'}],
9
+ fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_wt9agwf3'},
10
+ {modelID: 'TS0601', manufacturerName: '_TZE200_5uodvhgc'}],
10
11
  model: 'FK_V02',
11
12
  vendor: 'FrankEver',
12
13
  description: 'Zigbee smart water valve',
@@ -267,6 +267,7 @@ module.exports = [
267
267
  vendor: 'Gledopto',
268
268
  ota: ota.zigbeeOTA,
269
269
  description: 'Zigbee LED Controller RGB+CCT (pro)',
270
+ whiteLabel: [{vendor: 'Gledopto', model: 'GL-C-001P'}],
270
271
  extend: gledoptoExtend.light_onoff_brightness_colortemp_color({colorTempRange: [158, 495], noConfigure: true}),
271
272
  meta: {disableDefaultResponse: true},
272
273
  configure: async (device, coordinatorEndpoint, logger) => {
@@ -568,6 +569,14 @@ module.exports = [
568
569
  description: 'Zigbee 10W Floodlight RGB+CCT (pro)',
569
570
  extend: gledoptoExtend.light_onoff_brightness_colortemp_color(),
570
571
  },
572
+ {
573
+ zigbeeModel: ['GL-FL-001P'],
574
+ model: 'GL-FL-001P',
575
+ vendor: 'Gledopto',
576
+ ota: ota.zigbeeOTA,
577
+ description: 'Zigbee 10W Floodlight RGB+CCT 12V Low Voltage (pro)',
578
+ extend: gledoptoExtend.light_onoff_brightness_colortemp_color({colorTempRange: [158, 495]}),
579
+ },
571
580
  {
572
581
  zigbeeModel: ['GL-FL-005TZ'],
573
582
  model: 'GL-FL-005TZ',
package/devices/heiman.js CHANGED
@@ -398,7 +398,7 @@ module.exports = [
398
398
  exposes: [e.temperature(), e.humidity(), e.battery()],
399
399
  },
400
400
  {
401
- fingerprint: [{modelID: 'SOS-EM', manufacturerName: 'HEIMAN'}],
401
+ fingerprint: [{modelID: 'SOS-EM', manufacturerName: 'HEIMAN'}, {modelID: 'SOS-EF-3.0', manufacturerName: 'HEIMAN'}],
402
402
  model: 'HS1EB/HS1EB-E',
403
403
  vendor: 'HEIMAN',
404
404
  description: 'Smart emergency button',
@@ -1,4 +1,7 @@
1
1
  const extend = require('../lib/extend');
2
+ const fz = require('../converters/fromZigbee');
3
+ const exposes = require('../lib/exposes');
4
+ const e = exposes.presets;
2
5
 
3
6
  module.exports = [
4
7
  {
@@ -29,4 +32,13 @@ module.exports = [
29
32
  description: 'GU10 white and colour spot',
30
33
  extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 555]}),
31
34
  },
35
+ {
36
+ zigbeeModel: ['PROLIGHT REMOTE CONTROL'],
37
+ model: 'PROLIGHT_REMOTE_CONTROL',
38
+ vendor: 'Prolight',
39
+ description: 'Remote control',
40
+ toZigbee: [],
41
+ fromZigbee: [fz.command_on, fz.command_off, fz.command_move_to_level],
42
+ exposes: [e.action(['on', 'off', 'brightness_move_up', 'brightness_move_down'])],
43
+ },
32
44
  ];
@@ -10,11 +10,12 @@ module.exports = [
10
10
  vendor: 'Titan Products',
11
11
  description: 'Room CO2, humidity & temperature sensor',
12
12
  fromZigbee: [fz.battery, fz.humidity, fz.temperature, fz.co2],
13
- exposes: [e.battery(), e.humidity(), e.temperature(), e.co2()],
13
+ exposes: [e.battery_voltage(), e.battery_low(), e.humidity(), e.temperature(), e.co2()],
14
14
  toZigbee: [],
15
15
  configure: async (device, coordinatorEndpoint, logger) => {
16
16
  const endpoint = device.getEndpoint(1);
17
17
  await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'msTemperatureMeasurement', 'msCO2']);
18
+ await endpoint.read('genPowerCfg', ['batteryVoltage']);
18
19
  await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['msRelativeHumidity']);
19
20
  },
20
21
  },
package/devices/tuya.js CHANGED
@@ -175,7 +175,8 @@ module.exports = [
175
175
  {modelID: 'TS0505B', manufacturerName: '_TZ3000_cmaky9gq'},
176
176
  {modelID: 'TS0505B', manufacturerName: '_TZ3000_tza2vjxx'},
177
177
  {modelID: 'TS0505B', manufacturerName: '_TZ3210_k1pe6ibm'},
178
- {modelID: 'TS0505B', manufacturerName: '_TZ3210_bfwvfyx1'}],
178
+ {modelID: 'TS0505B', manufacturerName: '_TZ3210_bfwvfyx1'},
179
+ {modelID: 'TS0505B', manufacturerName: '_TZ3210_jd3z4yig'}],
179
180
  model: 'TS0505B',
180
181
  vendor: 'TuYa',
181
182
  description: 'Zigbee RGB+CCT light',
@@ -204,6 +205,7 @@ module.exports = [
204
205
  fingerprint: [{modelID: 'TS0504B', manufacturerName: '_TZ3000_ukuvyhaa'},
205
206
  {modelID: 'TS0504B', manufacturerName: '_TZ3210_bfvybixd'},
206
207
  {modelID: 'TS0504B', manufacturerName: '_TZ3210_sroezl0s'},
208
+ {modelID: 'TS0504B', manufacturerName: '_TZ3210_i2i0bsnv'},
207
209
  {modelID: 'TS0504B', manufacturerName: '_TZ3210_1elppmba'}],
208
210
  model: 'TS0504B',
209
211
  vendor: 'TuYa',
@@ -369,7 +371,8 @@ module.exports = [
369
371
  {vendor: 'BSEED', model: 'Zigbee Socket'}],
370
372
  },
371
373
  {
372
- fingerprint: [{modelID: 'isltm67\u0000', manufacturerName: '_TYST11_pisltm67'}],
374
+ fingerprint: [{modelID: 'isltm67\u0000', manufacturerName: '_TYST11_pisltm67'},
375
+ {modelID: 'TS0601', manufacturerName: '_TZE200_pisltm67'}],
373
376
  model: 'S-LUX-ZB',
374
377
  vendor: 'TuYa',
375
378
  description: 'Light sensor',
@@ -379,7 +382,13 @@ module.exports = [
379
382
  const endpoint = device.getEndpoint(1);
380
383
  await reporting.bind(endpoint, coordinatorEndpoint, ['genBasic']);
381
384
  },
382
- exposes: [e.battery(), e.illuminance_lux(), e.battery_low()],
385
+ exposes: (device, options) => {
386
+ if (device && device.manufacturerName === '_TZE200_pisltm67') {
387
+ return [e.illuminance_lux(), e.linkquality()];
388
+ } else {
389
+ return [e.battery(), e.illuminance_lux(), e.battery_low(), e.linkquality()];
390
+ }
391
+ },
383
392
  },
384
393
  {
385
394
  zigbeeModel: ['TS130F'],
package/lib/exposes.js CHANGED
@@ -501,6 +501,7 @@ module.exports = {
501
501
  illuminance_below_threshold_check: () => new Binary(`illuminance_below_threshold_check`, access.SET, true, false).withDescription(`Set to false to also send messages when illuminance is above threshold in night mode (default true).`),
502
502
  },
503
503
  presets: {
504
+ ac_frequency: () => new Numeric('ac_frequency', access.STATE).withUnit('Hz').withDescription('Measured electrical AC frequency'),
504
505
  action: (values) => new Enum('action', access.STATE, values).withDescription('Triggered action (e.g. a button click)'),
505
506
  angle: (name) => new Numeric(name, access.STATE).withValueMin(-360).withValueMax(360),
506
507
  angle_axis: (name) => new Numeric(name, access.STATE).withValueMin(-90).withValueMax(90),
package/lib/reporting.js CHANGED
@@ -19,9 +19,10 @@ function payload(attribute, min, max, change, overrides) {
19
19
  }
20
20
 
21
21
  async function readEletricalMeasurementMultiplierDivisors(endpoint) {
22
- // Split into two chunks, some devices fail to respond when reading too much attributes at once.
22
+ // Split into three chunks, some devices fail to respond when reading too much attributes at once.
23
23
  await endpoint.read('haElectricalMeasurement', ['acVoltageMultiplier', 'acVoltageDivisor', 'acCurrentMultiplier']);
24
24
  await endpoint.read('haElectricalMeasurement', ['acCurrentDivisor', 'acPowerMultiplier', 'acPowerDivisor']);
25
+ await endpoint.read('haElectricalMeasurement', ['acFrequencyDivisor', 'acFrequencyMultiplier']);
25
26
  }
26
27
 
27
28
  async function readMeteringMultiplierDivisor(endpoint) {
@@ -199,4 +200,8 @@ module.exports = {
199
200
  const p = payload('measuredValue', 10, repInterval.HOUR, 100, overrides);
200
201
  await endpoint.configureReporting('msSoilMoisture', p);
201
202
  },
203
+ acFrequency: async (endpoint, overrides) => {
204
+ const p = payload('acFrequency', 5, repInterval.MINUTES_5, 10, overrides);
205
+ await endpoint.configureReporting('haElectricalMeasurement', p);
206
+ },
202
207
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.414",
3
+ "version": "14.0.415",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.414",
3
+ "version": "14.0.415",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [