zigbee-herdsman-converters 14.0.446 → 14.0.447

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.
@@ -2031,7 +2031,7 @@ const converters = {
2031
2031
  await entity.read('genBasic', [0x0033], manufacturerOptions.hue);
2032
2032
  },
2033
2033
  },
2034
- RTCGQ13LM_motion_sensitivity: {
2034
+ aqara_motion_sensitivity: {
2035
2035
  key: ['motion_sensitivity'],
2036
2036
  convertSet: async (entity, key, value, meta) => {
2037
2037
  const lookup = {'low': 1, 'medium': 2, 'high': 3};
@@ -2074,6 +2074,12 @@ const converters = {
2074
2074
  await entity.read('aqaraOpple', [0x0146], manufacturerOptions.xiaomi);
2075
2075
  },
2076
2076
  },
2077
+ RTCZCGQ11LM_reset_nopresence_status: {
2078
+ key: ['reset_nopresence_status'],
2079
+ convertSet: async (entity, key, value, meta) => {
2080
+ await entity.write('aqaraOpple', {0x0157: {value: 1, type: 0x20}}, manufacturerOptions.xiaomi);
2081
+ },
2082
+ },
2077
2083
  ZigUP_lock: {
2078
2084
  key: ['led'],
2079
2085
  convertSet: async (entity, key, value, meta) => {
@@ -13,7 +13,7 @@ const tzLocal = {
13
13
  convertSet: async (entity, key, value, meta) => {
14
14
  const state = value.toLowerCase();
15
15
  utils.validateValue(state, ['toggle', 'off', 'on']);
16
- const endpoint = meta.mapped.model === 'AU-A1ZBDSS' ? meta.device.getEndpoint(2) : meta.device.getEndpoint(3);
16
+ const endpoint = meta.device.getEndpoint(3);
17
17
  await endpoint.command('genOnOff', state, {});
18
18
  return {state: {backlight_led: state.toUpperCase()}};
19
19
  },
@@ -184,8 +184,9 @@ module.exports = [
184
184
  fromZigbee: [fz.identify, fz.on_off, fz.electrical_measurement],
185
185
  exposes: [e.switch().withEndpoint('left'), e.switch().withEndpoint('right'),
186
186
  e.power().withEndpoint('left'), e.power().withEndpoint('right'),
187
- exposes.binary('backlight_led', ea.STATE_SET, 'ON', 'OFF').withDescription('Enable or disable the blue backlight LED')],
188
- toZigbee: [tz.on_off, tzLocal.aOneBacklight],
187
+ exposes.numeric('brightness', ea.ALL).withValueMin(0).withValueMax(254)
188
+ .withDescription('Brightness of this backlight LED')],
189
+ toZigbee: [tz.light_onoff_brightness],
189
190
  meta: {multiEndpoint: true},
190
191
  endpoint: (device) => {
191
192
  return {'left': 1, 'right': 2};
@@ -197,6 +197,18 @@ module.exports = [
197
197
  await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
198
198
  },
199
199
  },
200
+ {
201
+ fingerprint: [{modelID: 'TS130F', manufacturerName: '_TZ3000_zirycpws'}],
202
+ model: 'QS-Zigbee-C03',
203
+ vendor: 'Lonsonho',
204
+ description: 'Curtain/blind motor controller',
205
+ fromZigbee: [fz.cover_position_tilt, fz.tuya_cover_options],
206
+ toZigbee: [tz.cover_state, tz.cover_position_tilt, tz.tuya_cover_calibration, tz.tuya_cover_reversal],
207
+ meta: {coverInverted: true},
208
+ exposes: [e.cover_position(), exposes.enum('moving', ea.STATE, ['UP', 'STOP', 'DOWN']),
209
+ exposes.binary('calibration', ea.ALL, 'ON', 'OFF'), exposes.binary('motor_reversal', ea.ALL, 'ON', 'OFF'),
210
+ exposes.numeric('calibration_time', ea.STATE).withUnit('S').withDescription('Calibration time')],
211
+ },
200
212
  {
201
213
  fingerprint: [{modelID: 'TS110E', manufacturerName: '_TZ3210_zxbtub8r'}],
202
214
  model: 'TS110E_1gang',
@@ -2239,6 +2239,13 @@ module.exports = [
2239
2239
  meta: {turnsOffAtBrightness1: true},
2240
2240
  extend: hueExtend.light_onoff_brightness(),
2241
2241
  },
2242
+ {
2243
+ zigbeeModel: ['929003055201'],
2244
+ model: '929003055201',
2245
+ vendor: 'Philips',
2246
+ description: 'Hue Being',
2247
+ extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
2248
+ },
2242
2249
  {
2243
2250
  zigbeeModel: ['1743630P7', '1743630V7'],
2244
2251
  model: '17436/30/P7',
@@ -2785,4 +2792,13 @@ module.exports = [
2785
2792
  extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
2786
2793
  ota: ota.zigbeeOTA,
2787
2794
  },
2795
+ {
2796
+ zigbeeModel: ['LWS002'],
2797
+ model: '046677562229',
2798
+ vendor: 'Philips',
2799
+ description: 'Hue White PAR20 with Bluetooth',
2800
+ meta: {turnsOffAtBrightness1: true},
2801
+ extend: hueExtend.light_onoff_brightness(),
2802
+ ota: ota.zigbeeOTA,
2803
+ },
2788
2804
  ];
package/devices/slv.js CHANGED
@@ -17,4 +17,11 @@ module.exports = [
17
17
  toZigbee: [],
18
18
  exposes: [],
19
19
  },
20
+ {
21
+ zigbeeModel: ['ZBT-RGBWLight-AR0844'],
22
+ model: '1001923',
23
+ vendor: 'SLV',
24
+ description: 'VALETO LED GU10 RGBW',
25
+ extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 556]}),
26
+ },
20
27
  ];
package/devices/tuya.js CHANGED
@@ -234,6 +234,7 @@ module.exports = [
234
234
  {modelID: 'TS0505B', manufacturerName: '_TZ3000_tza2vjxx'},
235
235
  {modelID: 'TS0505B', manufacturerName: '_TZ3210_k1pe6ibm'},
236
236
  {modelID: 'TS0505B', manufacturerName: '_TZ3210_bfwvfyx1'},
237
+ {modelID: 'TS0505B', manufacturerName: '_TZ3210_leyz4rju'},
237
238
  {modelID: 'TS0505B', manufacturerName: '_TZ3210_jd3z4yig'}],
238
239
  model: 'TS0505B',
239
240
  vendor: 'TuYa',
package/devices/xiaomi.js CHANGED
@@ -893,7 +893,7 @@ module.exports = [
893
893
  vendor: 'Xiaomi',
894
894
  description: 'Aqara high precision motion sensor',
895
895
  fromZigbee: [fz.RTCGQ13LM_occupancy, fz.aqara_opple, fz.battery],
896
- toZigbee: [tz.aqara_detection_interval, tz.RTCGQ13LM_motion_sensitivity],
896
+ toZigbee: [tz.aqara_detection_interval, tz.aqara_motion_sensitivity],
897
897
  exposes: [e.occupancy(), exposes.enum('motion_sensitivity', ea.ALL, ['low', 'medium', 'high']),
898
898
  exposes.numeric('detection_interval', ea.ALL).withValueMin(2).withValueMax(65535).withUnit('s')
899
899
  .withDescription('Time interval for detecting actions'), e.battery()],
@@ -910,9 +910,10 @@ module.exports = [
910
910
  zigbeeModel: ['lumi.motion.ac01'],
911
911
  model: 'RTCZCGQ11LM',
912
912
  vendor: 'Xiaomi',
913
- description: 'Aqara Presence Detector FP1 (regions not supported for now)',
913
+ description: 'Aqara presence detector FP1 (regions not supported for now)',
914
914
  fromZigbee: [fz.aqara_opple],
915
- toZigbee: [tz.RTCZCGQ11LM_presence, tz.RTCZCGQ11LM_monitoring_mode, tz.RTCZCGQ11LM_approach_distance],
915
+ toZigbee: [tz.RTCZCGQ11LM_presence, tz.RTCZCGQ11LM_monitoring_mode, tz.RTCZCGQ11LM_approach_distance,
916
+ tz.aqara_motion_sensitivity, tz.RTCZCGQ11LM_reset_nopresence_status],
916
917
  exposes: [e.presence().withAccess(ea.STATE_GET),
917
918
  exposes.enum('presence_event', ea.STATE, ['enter', 'leave', 'left_enter', 'right_leave', 'right_enter', 'left_leave',
918
919
  'approach', 'away']).withDescription('Presence events: "enter", "leave", "left_enter", "right_leave", ' +
@@ -921,9 +922,14 @@ module.exports = [
921
922
  'without considering right and left sides'),
922
923
  exposes.enum('approach_distance', ea.ALL, ['far', 'medium', 'near']).withDescription('The distance at which the ' +
923
924
  'sensor detects approaching'),
924
- exposes.numeric('power_outage_count', ea.STATE).withDescription('Number of power outages (since last pairing)')],
925
+ exposes.enum('motion_sensitivity', ea.ALL, ['low', 'medium', 'high']).withDescription('Different sensitivities ' +
926
+ 'means different static human body recognition rate and response speed of occupied'),
927
+ exposes.enum('reset_nopresence_status', ea.SET, ['Reset']).withDescription('Reset the status of no presence'),
928
+ exposes.numeric('power_outage_count', ea.STATE).withDescription('Number of power outages (since last pairing)'),
929
+ e.temperature()],
925
930
  configure: async (device, coordinatorEndpoint, logger) => {
926
931
  const endpoint = device.getEndpoint(1);
932
+ await endpoint.read('aqaraOpple', [0x010c], {manufacturerCode: 0x115f});
927
933
  await endpoint.read('aqaraOpple', [0x0142], {manufacturerCode: 0x115f});
928
934
  await endpoint.read('aqaraOpple', [0x0144], {manufacturerCode: 0x115f});
929
935
  await endpoint.read('aqaraOpple', [0x0146], {manufacturerCode: 0x115f});
package/lib/xiaomi.js CHANGED
@@ -213,19 +213,25 @@ const numericAttributes2Payload = (msg, meta, model, options, dataObject) => {
213
213
  payload.illuminance = calibrateAndPrecisionRoundOptions(value, options, 'illuminance');
214
214
  } else if (['ZNJLBL01LM'].includes(model.model)) {
215
215
  payload.battery = value;
216
+ } else if (['RTCZCGQ11LM'].includes(model.model)) {
217
+ payload.presence = {0: false, 1: true, 255: null}[value];
216
218
  }
217
219
  break;
218
220
  case '102':
219
221
  if (['QBKG25LM', 'QBKG34LM'].includes(model.model)) {
220
222
  payload.state_right = value === 1 ? 'ON' : 'OFF';
221
223
  } else if (['RTCZCGQ11LM'].includes(model.model)) {
222
- payload.presence_event = {0: 'enter', 1: 'leave', 2: 'left_enter', 3: 'right_leave', 4: 'right_enter',
223
- 5: 'left_leave', 6: 'approach', 7: 'away', 255: null}[value];
224
+ if (meta.device.applicationVersion < 50) {
225
+ payload.presence_event = {0: 'enter', 1: 'leave', 2: 'left_enter', 3: 'right_leave', 4: 'right_enter',
226
+ 5: 'left_leave', 6: 'approach', 7: 'away', 255: null}[value];
227
+ } else {
228
+ payload.motion_sensitivity = {1: 'low', 2: 'medium', 3: 'high'}[value];
229
+ }
224
230
  }
225
231
  break;
226
232
  case '103':
227
233
  if (['RTCZCGQ11LM'].includes(model.model)) {
228
- payload.monitoring_mode = value === 1 ? 'left_right' : 'undirected';
234
+ payload.monitoring_mode = {0: 'undirected', 1: 'left_right'}[value];
229
235
  }
230
236
  break;
231
237
  case '105':
@@ -288,7 +294,7 @@ const numericAttributes2Payload = (msg, meta, model, options, dataObject) => {
288
294
  payload.detection_interval = value;
289
295
  break;
290
296
  case '268':
291
- if (['RTCGQ13LM'].includes(model.model)) {
297
+ if (['RTCGQ13LM', 'RTCZCGQ11LM'].includes(model.model)) {
292
298
  payload.motion_sensitivity = {1: 'low', 2: 'medium', 3: 'high'}[value];
293
299
  } else if (['JT-BZ-01AQ/A'].includes(model.model)) {
294
300
  payload.gas_sensitivity = {1: '15%LEL', 2: '10%LEL'}[value];
@@ -313,19 +319,25 @@ const numericAttributes2Payload = (msg, meta, model, options, dataObject) => {
313
319
  payload.gas_density = value; // JT-BZ-01AQ/A
314
320
  break;
315
321
  case '322':
316
- payload.presence = value === 1; // RTCZCGQ11LM
322
+ if (['RTCZCGQ11LM'].includes(model.model)) {
323
+ payload.presence = {0: false, 1: true, 255: null}[value];
324
+ }
317
325
  break;
318
326
  case '323':
319
- payload.presence_event = {0: 'enter', 1: 'leave', 2: 'left_enter', 3: 'right_leave', 4: 'right_enter',
320
- 5: 'left_leave', 6: 'approach', 7: 'away'}[value]; // RTCZCGQ11LM
327
+ if (['RTCZCGQ11LM'].includes(model.model)) {
328
+ payload.presence_event = {0: 'enter', 1: 'leave', 2: 'left_enter', 3: 'right_leave', 4: 'right_enter',
329
+ 5: 'left_leave', 6: 'approach', 7: 'away'}[value];
330
+ }
321
331
  break;
322
332
  case '324':
323
- // RTCZCGQ11LM
324
- payload.monitoring_mode = value === 1 ? 'left_right' : 'undirected';
333
+ if (['RTCZCGQ11LM'].includes(model.model)) {
334
+ payload.monitoring_mode = {0: 'undirected', 1: 'left_right'}[value];
335
+ }
325
336
  break;
326
337
  case '326':
327
- // RTCZCGQ11LM
328
- payload.approach_distance = {0: 'far', 1: 'medium', 2: 'near'}[value];
338
+ if (['RTCZCGQ11LM'].includes(model.model)) {
339
+ payload.approach_distance = {0: 'far', 1: 'medium', 2: 'near'}[value];
340
+ }
329
341
  break;
330
342
  case '331':
331
343
  payload.linkage_alarm = value === 1; // JT-BZ-01AQ/A
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.446",
3
+ "version": "14.0.447",
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.446",
3
+ "version": "14.0.447",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [