zigbee-herdsman-converters 14.0.470 → 14.0.473

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.
@@ -3129,6 +3129,21 @@ const converters = {
3129
3129
  };
3130
3130
  },
3131
3131
  },
3132
+ plaid_battery: {
3133
+ cluster: 'genPowerCfg',
3134
+ type: ['readResponse', 'attributeReport'],
3135
+ convert: (model, msg, publish, options, meta) => {
3136
+ const payload = {};
3137
+ if (msg.data.hasOwnProperty('mainsVoltage')) {
3138
+ payload.voltage = msg.data['mainsVoltage'];
3139
+
3140
+ if (model.meta && model.meta.battery && model.meta.battery.voltageToPercentage) {
3141
+ payload.battery = batteryVoltageToPercentage(payload.voltage, model.meta.battery.voltageToPercentage);
3142
+ }
3143
+ }
3144
+ return payload;
3145
+ },
3146
+ },
3132
3147
  silvercrest_smart_led_string: {
3133
3148
  cluster: 'manuSpecificTuya',
3134
3149
  type: ['commandDataResponse', 'commandDataReport'],
@@ -3820,7 +3835,7 @@ const converters = {
3820
3835
  return {deadzone_temperature: value};
3821
3836
  case tuya.dataPoints.moesLocalTemp:
3822
3837
  temperature = value & 1<<15 ? value - (1<<16) + 1 : value;
3823
- if (meta.device.manufacturerName === '_TZE200_ye5jkfsb') {
3838
+ if (meta.device.manufacturerName !== '_TZE200_ye5jkfsb') {
3824
3839
  // https://github.com/Koenkk/zigbee2mqtt/issues/11980
3825
3840
  temperature = temperature / 10;
3826
3841
  }
@@ -4220,7 +4235,7 @@ const converters = {
4220
4235
  }
4221
4236
  case tuya.dataPoints.tuyaSabVOC:
4222
4237
  return {voc: calibrateAndPrecisionRoundOptions(value, options, 'voc')};
4223
- case tuya.dataPoints.tuyaSahkCH2O:
4238
+ case tuya.dataPoints.tuyaSahkFormaldehyd:
4224
4239
  return {formaldehyd: calibrateAndPrecisionRoundOptions(value, options, 'formaldehyd')};
4225
4240
  default:
4226
4241
  meta.logger.warn(`zigbee-herdsman-converters:TuyaSmartAirBox: Unrecognized DP #${
@@ -5976,13 +5991,6 @@ const converters = {
5976
5991
  return result;
5977
5992
  },
5978
5993
  },
5979
- scenes_recall_scene_65029: {
5980
- cluster: 65029,
5981
- type: ['raw'],
5982
- convert: (model, msg, publish, options, meta) => {
5983
- return {action: `scene_${msg.data[msg.data.length - 1]}`};
5984
- },
5985
- },
5986
5994
  scenes_recall_scene_65024: {
5987
5995
  cluster: 65024,
5988
5996
  type: ['raw'],
@@ -1,9 +1,38 @@
1
1
  const reporting = require('../lib/reporting');
2
2
  const extend = require('../lib/extend');
3
3
  const exposes = require('../lib/exposes');
4
+ const utils = require('../lib/utils');
4
5
  const e = exposes.presets;
5
6
 
7
+ const fzLocal = {
8
+ led_trading_9133: {
9
+ cluster: 'greenPower',
10
+ type: ['commandNotification', 'commandCommisioningNotification'],
11
+ convert: (model, msg, publish, options, meta) => {
12
+ const commandID = msg.data.commandID;
13
+ if (utils.hasAlreadyProcessedMessage(msg, msg.data.frameCounter, `${msg.device.ieeeAddr}_${commandID}`)) return;
14
+ if (commandID === 224) return;
15
+ const lookup = {0x13: 'press_1', 0x14: 'press_2', 0x15: 'press_3', 0x16: 'press_4',
16
+ 0x1B: 'hold_1', 0x1C: 'hold_2', 0x1D: 'hold_3', 0x1E: 'hold_4'};
17
+ if (!lookup.hasOwnProperty(commandID)) {
18
+ meta.logger.error(`led_trading_9133: missing command '${commandID}'`);
19
+ } else {
20
+ return {action: lookup[commandID]};
21
+ }
22
+ },
23
+ },
24
+ };
25
+
6
26
  module.exports = [
27
+ {
28
+ fingerprint: [{modelID: 'GreenPower_2', ieeeAddr: /^0x00000000427.....$/}],
29
+ model: '9133',
30
+ vendor: 'Led Trading',
31
+ description: 'Pushbutton transmitter module',
32
+ fromZigbee: [fzLocal.led_trading_9133],
33
+ toZigbee: [],
34
+ exposes: [e.action(['press_1', 'hold_1', 'press_2', 'hold_2', 'press_3', 'hold_3', 'press_4', 'hold_4'])],
35
+ },
7
36
  {
8
37
  zigbeeModel: ['HK-LN-DIM-A'],
9
38
  model: 'HK-LN-DIM-A',
@@ -117,6 +117,24 @@ module.exports = [
117
117
  extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
118
118
  ota: ota.zigbeeOTA,
119
119
  },
120
+ {
121
+ zigbeeModel: ['915005997601'],
122
+ model: '915005997601',
123
+ vendor: 'Philips',
124
+ description: 'Hue Devere M white ambiance white & dimmer',
125
+ meta: {turnsOffAtBrightness1: true},
126
+ extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
127
+ ota: ota.zigbeeOTA,
128
+ },
129
+ {
130
+ zigbeeModel: ['915005997701'],
131
+ model: '915005997701',
132
+ vendor: 'Philips',
133
+ description: 'Hue Devere L white ambiance white & dimmer',
134
+ meta: {turnsOffAtBrightness1: true},
135
+ extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
136
+ ota: ota.zigbeeOTA,
137
+ },
120
138
  {
121
139
  zigbeeModel: ['929003054001'],
122
140
  model: '929003054001',
@@ -2786,6 +2804,15 @@ module.exports = [
2786
2804
  extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [222, 454]}),
2787
2805
  ota: ota.zigbeeOTA,
2788
2806
  },
2807
+ {
2808
+ zigbeeModel: ['LWE006'],
2809
+ model: '929002294102',
2810
+ vendor: 'Philips',
2811
+ description: 'Hue white candle bulb E14 bluetooth',
2812
+ meta: {turnsOffAtBrightness1: true},
2813
+ extend: hueExtend.light_onoff_brightness(),
2814
+ ota: ota.zigbeeOTA,
2815
+ },
2789
2816
  {
2790
2817
  zigbeeModel: ['LWE007'],
2791
2818
  model: '9290030211',
@@ -2821,6 +2848,14 @@ module.exports = [
2821
2848
  extend: hueExtend.light_onoff_brightness(),
2822
2849
  ota: ota.zigbeeOTA,
2823
2850
  },
2851
+ {
2852
+ zigbeeModel: ['915005998201'],
2853
+ model: '915005998201',
2854
+ vendor: 'Philips',
2855
+ description: 'Hue Bluetooth white & color ambiance ceiling lamp Infuse',
2856
+ extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
2857
+ ota: ota.zigbeeOTA,
2858
+ },
2824
2859
  {
2825
2860
  zigbeeModel: ['915005997301', '915005997201'],
2826
2861
  model: '915005997301',
package/devices/plaid.js CHANGED
@@ -11,13 +11,15 @@ module.exports = [
11
11
  vendor: 'PLAID SYSTEMS',
12
12
  description: 'Spruce temperature and moisture sensor',
13
13
  toZigbee: [],
14
- fromZigbee: [fz.temperature, fz.humidity],
15
- exposes: [e.humidity(), e.temperature()],
14
+ fromZigbee: [fz.temperature, fz.humidity, fz.plaid_battery],
15
+ exposes: [e.humidity(), e.temperature(), e.battery(), e.battery_voltage()],
16
+ meta: {battery: {voltageToPercentage: '3V_2500'}},
16
17
  configure: async (device, coordinatorEndpoint, logger) => {
17
18
  const endpoint = device.getEndpoint(1);
18
- await reporting.bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'msRelativeHumidity']);
19
+ await reporting.bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'msRelativeHumidity', 'genPowerCfg']);
19
20
  await reporting.temperature(endpoint);
20
21
  await reporting.humidity(endpoint);
22
+ device.powerSource = 'Battery';
21
23
  },
22
24
  },
23
25
  ];
package/devices/tuya.js CHANGED
@@ -44,6 +44,14 @@ const tzLocal = {
44
44
  };
45
45
 
46
46
  const fzLocal = {
47
+ scenes_recall_scene_65029: {
48
+ cluster: '65029',
49
+ type: ['raw', 'attributeReport'],
50
+ convert: (model, msg, publish, options, meta) => {
51
+ const id = meta.device.modelID === '005f0c3b' ? msg.data[0] : msg.data[msg.data.length - 1];
52
+ return {action: `scene_${id}`};
53
+ },
54
+ },
47
55
  TS0201_battery: {
48
56
  cluster: 'genPowerCfg',
49
57
  type: ['attributeReport', 'readResponse'],
@@ -1713,7 +1721,7 @@ module.exports = [
1713
1721
  model: 'U86KCJ-ZP',
1714
1722
  vendor: 'TuYa',
1715
1723
  description: 'Smart 6 key scene wall switch',
1716
- fromZigbee: [fz.scenes_recall_scene_65029],
1724
+ fromZigbee: [fzLocal.scenes_recall_scene_65029],
1717
1725
  exposes: [e.action(['scene_1', 'scene_2', 'scene_3', 'scene_4', 'scene_5', 'scene_6'])],
1718
1726
  toZigbee: [],
1719
1727
  },
@@ -1884,7 +1892,7 @@ module.exports = [
1884
1892
  exposes: [e.battery(), e.vibration(), exposes.enum('sensitivity', exposes.access.STATE_SET, ['low', 'medium', 'high'])],
1885
1893
  },
1886
1894
  {
1887
- fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_8bxrzyxz'}],
1895
+ fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_8bxrzyxz'}, {modelID: 'TS011F', manufacturerName: '_TZ3000_ky0fq4ho'}],
1888
1896
  model: 'TS011F_din_smart_relay',
1889
1897
  description: 'Din smart relay (with power monitoring)',
1890
1898
  vendor: 'TuYa',
@@ -1921,6 +1929,22 @@ module.exports = [
1921
1929
  exposes: [exposes.binary('trigger', ea.STATE_SET, true, false).withDescription('Trigger the door movement'),
1922
1930
  exposes.binary('garage_door_contact', ea.STATE, true, false)],
1923
1931
  },
1932
+ {
1933
+ fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_wfxuhoea'}],
1934
+ model: 'GDC311ZBQ1',
1935
+ vendor: 'TuYa',
1936
+ description: 'LoraTap garage door opener with wireless sensor',
1937
+ fromZigbee: [fz.matsee_garage_door_opener, fz.ignore_basic_report],
1938
+ toZigbee: [tz.matsee_garage_door_opener, tz.tuya_data_point_test],
1939
+ whiteLabel: [{vendor: 'LoraTap', model: 'GDC311ZBQ1'}],
1940
+ configure: async (device, coordinatorEndpoint, logger) => {
1941
+ const endpoint = device.getEndpoint(1);
1942
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genBasic']);
1943
+ },
1944
+ exposes: [exposes.binary('trigger', ea.STATE_SET, true, false).withDescription('Trigger the door movement'),
1945
+ exposes.binary('garage_door_contact', ea.STATE, false, true)
1946
+ .withDescription('Indicates if the garage door contact is closed (= true) or open (= false)')],
1947
+ },
1924
1948
  {
1925
1949
  fingerprint: [{modelID: 'TS0201', manufacturerName: '_TZ3000_qaaysllp'}],
1926
1950
  model: 'LCZ030',
package/devices/ynoa.js CHANGED
@@ -2,6 +2,7 @@ const exposes = require('../lib/exposes');
2
2
  const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
3
3
  const reporting = require('../lib/reporting');
4
4
  const e = exposes.presets;
5
+ const extend = require('..//lib/extend');
5
6
 
6
7
  module.exports = [
7
8
  {
@@ -18,4 +19,27 @@ module.exports = [
18
19
  await reporting.batteryPercentageRemaining(endpoint);
19
20
  },
20
21
  },
22
+ {
23
+ zigbeeModel: ['ZBT-RGBWLight-M0000'],
24
+ model: 'LA-GU10-RGBW',
25
+ vendor: 'Ynoa',
26
+ description: 'Smart LED GU10 RGB CCT',
27
+ extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 526], supportsHS: true}),
28
+ },
29
+ {
30
+ zigbeeModel: ['ZBT-RGBWSwitch-D0800'],
31
+ model: 'LA-5KEY-RGBW',
32
+ vendor: 'Ynoa',
33
+ description: '5 key control for RGBW light',
34
+ fromZigbee: [fz.command_on, fz.command_off, fz.command_move_to_color_temp,
35
+ fz.command_move_to_color, fz.command_move_to_level, fz.battery],
36
+ exposes: [e.battery(), e.battery_low(), e.action(['on', 'off', 'brightness_move_to_level',
37
+ 'color_temperature_move', 'color_move'])],
38
+ toZigbee: [],
39
+ configure: async (device, coordinatorEndpoint, logger) => {
40
+ const endpoint = device.getEndpoint(1);
41
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
42
+ await reporting.batteryPercentageRemaining(endpoint);
43
+ },
44
+ },
21
45
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.470",
3
+ "version": "14.0.473",
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.0",
40
40
  "tar-stream": "^2.2.0",
41
- "zigbee-herdsman": "^0.14.21"
41
+ "zigbee-herdsman": "^0.14.22"
42
42
  },
43
43
  "devDependencies": {
44
44
  "eslint": "*",