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.
- package/converters/toZigbee.js +7 -1
- package/devices/aurora_lighting.js +4 -3
- package/devices/lonsonho.js +12 -0
- package/devices/philips.js +16 -0
- package/devices/slv.js +7 -0
- package/devices/tuya.js +1 -0
- package/devices/xiaomi.js +10 -4
- package/lib/xiaomi.js +23 -11
- package/npm-shrinkwrap.json +1 -1
- package/package.json +1 -1
package/converters/toZigbee.js
CHANGED
|
@@ -2031,7 +2031,7 @@ const converters = {
|
|
|
2031
2031
|
await entity.read('genBasic', [0x0033], manufacturerOptions.hue);
|
|
2032
2032
|
},
|
|
2033
2033
|
},
|
|
2034
|
-
|
|
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.
|
|
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.
|
|
188
|
-
|
|
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};
|
package/devices/lonsonho.js
CHANGED
|
@@ -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',
|
package/devices/philips.js
CHANGED
|
@@ -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.
|
|
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
|
|
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.
|
|
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
|
-
|
|
223
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
320
|
-
|
|
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
|
-
|
|
324
|
-
|
|
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
|
-
|
|
328
|
-
|
|
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
|
package/npm-shrinkwrap.json
CHANGED