zigbee-herdsman-converters 15.0.99 → 15.0.101
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/devices/develco.js +24 -0
- package/devices/philips.js +7 -0
- package/devices/tuya.js +43 -5
- package/devices/ynoa.js +7 -0
- package/index.js +2 -2
- package/lib/tuya.js +4 -0
- package/lib/xiaomi.js +4 -2
- package/package.json +2 -2
package/devices/develco.js
CHANGED
|
@@ -362,6 +362,30 @@ module.exports = [
|
|
|
362
362
|
return {default: 2};
|
|
363
363
|
},
|
|
364
364
|
},
|
|
365
|
+
{
|
|
366
|
+
zigbeeModel: ['SPLZB-137'],
|
|
367
|
+
model: 'SPLZB-137',
|
|
368
|
+
vendor: 'Develco',
|
|
369
|
+
description: 'Power plug',
|
|
370
|
+
fromZigbee: [fz.on_off, develco.fz.electrical_measurement, develco.fz.metering],
|
|
371
|
+
toZigbee: [tz.on_off],
|
|
372
|
+
exposes: [e.switch(), e.power(), e.current(), e.voltage(), e.energy(), e.ac_frequency()],
|
|
373
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
374
|
+
const endpoint = device.getEndpoint(2);
|
|
375
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering']);
|
|
376
|
+
await reporting.onOff(endpoint);
|
|
377
|
+
await reporting.readEletricalMeasurementMultiplierDivisors(endpoint, true);
|
|
378
|
+
await reporting.activePower(endpoint);
|
|
379
|
+
await reporting.rmsCurrent(endpoint);
|
|
380
|
+
await reporting.rmsVoltage(endpoint);
|
|
381
|
+
await reporting.readMeteringMultiplierDivisor(endpoint);
|
|
382
|
+
await reporting.currentSummDelivered(endpoint);
|
|
383
|
+
await reporting.acFrequency(endpoint);
|
|
384
|
+
},
|
|
385
|
+
endpoint: (device) => {
|
|
386
|
+
return {default: 2};
|
|
387
|
+
},
|
|
388
|
+
},
|
|
365
389
|
{
|
|
366
390
|
zigbeeModel: ['SMRZB-143'],
|
|
367
391
|
model: 'SMRZB-143',
|
package/devices/philips.js
CHANGED
|
@@ -395,6 +395,13 @@ module.exports = [
|
|
|
395
395
|
description: 'Hue Go portable light',
|
|
396
396
|
extend: philips.extend.light_onoff_brightness_colortemp({colorTempRange: [153, 500]}),
|
|
397
397
|
},
|
|
398
|
+
{
|
|
399
|
+
zigbeeModel: ['929003128501'],
|
|
400
|
+
model: '929003128501',
|
|
401
|
+
vendor: 'Philips',
|
|
402
|
+
description: 'Hue Go portable table lamp',
|
|
403
|
+
extend: philips.extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
|
|
404
|
+
},
|
|
398
405
|
{
|
|
399
406
|
zigbeeModel: ['7602031K6'],
|
|
400
407
|
model: '7602031K6',
|
package/devices/tuya.js
CHANGED
|
@@ -903,10 +903,11 @@ const fzLocal = {
|
|
|
903
903
|
// https://github.com/Koenkk/zigbee2mqtt/issues/16709#issuecomment-1509599046
|
|
904
904
|
if (['_TZ3000_gvn91tmx', '_TZ3000_amdymr7l'].includes(meta.device.manufacturerName)) {
|
|
905
905
|
for (const key of ['power', 'current', 'voltage']) {
|
|
906
|
-
|
|
906
|
+
const value = result[key];
|
|
907
|
+
if (value === 0 && globalStore.getValue(msg.endpoint, key) !== 0) {
|
|
907
908
|
delete result[key];
|
|
908
909
|
}
|
|
909
|
-
globalStore.putValue(msg.endpoint, key,
|
|
910
|
+
globalStore.putValue(msg.endpoint, key, value);
|
|
910
911
|
}
|
|
911
912
|
}
|
|
912
913
|
return result;
|
|
@@ -1036,6 +1037,27 @@ module.exports = [
|
|
|
1036
1037
|
return exps;
|
|
1037
1038
|
},
|
|
1038
1039
|
},
|
|
1040
|
+
{
|
|
1041
|
+
fingerprint: tuya.fingerprint('TS0601', ['_TZE200_nvups4nh']),
|
|
1042
|
+
model: 'TS0601_contact_temperature_humidity_sensor',
|
|
1043
|
+
vendor: 'TuYa',
|
|
1044
|
+
description: 'Contact, temperature and humidity sensor',
|
|
1045
|
+
fromZigbee: [tuya.fz.datapoints, tuya.fz.gateway_connection_status],
|
|
1046
|
+
toZigbee: [tuya.tz.datapoints],
|
|
1047
|
+
configure: tuya.configureMagicPacket,
|
|
1048
|
+
exposes: [e.contact(), e.temperature(), e.humidity(), e.battery()],
|
|
1049
|
+
meta: {
|
|
1050
|
+
tuyaDatapoints: [
|
|
1051
|
+
[1, 'contact', tuya.valueConverter.trueFalseInvert],
|
|
1052
|
+
[2, 'battery', tuya.valueConverter.raw],
|
|
1053
|
+
[7, 'temperature', tuya.valueConverter.divideBy10],
|
|
1054
|
+
[8, 'humidity', tuya.valueConverter.raw],
|
|
1055
|
+
],
|
|
1056
|
+
},
|
|
1057
|
+
whiteLabel: [
|
|
1058
|
+
tuya.whitelabel('Aubess', '1005005194831629', 'Contact, temperature and humidity sensor', ['_TZE200_nvups4nh']),
|
|
1059
|
+
],
|
|
1060
|
+
},
|
|
1039
1061
|
{
|
|
1040
1062
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_vzqtvljm'}],
|
|
1041
1063
|
model: 'TS0601_illuminance_temperature_humidity_sensor',
|
|
@@ -1412,7 +1434,9 @@ module.exports = [
|
|
|
1412
1434
|
whiteLabel: [{vendor: 'Mercator Ikuü', model: 'SMA02P'},
|
|
1413
1435
|
{vendor: 'TuYa', model: 'TY-ZPR06'},
|
|
1414
1436
|
{vendor: 'Tesla Smart', model: 'TS0202'},
|
|
1415
|
-
tuya.whitelabel('MiBoxer', 'PIR1-ZB', 'PIR
|
|
1437
|
+
tuya.whitelabel('MiBoxer', 'PIR1-ZB', 'PIR sensor', ['_TZ3040_wqmtjsyk']),
|
|
1438
|
+
tuya.whitelabel('TuYa', 'ZMS01', 'Motion sensor', ['_TZ3000_otvn3lne']),
|
|
1439
|
+
],
|
|
1416
1440
|
fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery, fz.ignore_basic_report, fz.ias_occupancy_alarm_1_report],
|
|
1417
1441
|
toZigbee: [],
|
|
1418
1442
|
exposes: [e.occupancy(), e.battery_low(), e.tamper(), e.battery(), e.battery_voltage()],
|
|
@@ -1747,7 +1771,10 @@ module.exports = [
|
|
|
1747
1771
|
toZigbee: [tz.cover_state, tz.cover_position_tilt, tz.tuya_cover_calibration, tz.tuya_cover_reversal,
|
|
1748
1772
|
tuya.tz.backlight_indicator_mode_1],
|
|
1749
1773
|
meta: {coverInverted: true},
|
|
1750
|
-
whiteLabel: [
|
|
1774
|
+
whiteLabel: [
|
|
1775
|
+
{vendor: 'LoraTap', model: 'SC400'},
|
|
1776
|
+
tuya.whitelabel('Zemismart', 'ZN-LC1E', 'Smart curtain/shutter switch', ['_TZ3000_74hsp7qy']),
|
|
1777
|
+
],
|
|
1751
1778
|
exposes: [e.cover_position(), exposes.enum('moving', ea.STATE, ['UP', 'STOP', 'DOWN']),
|
|
1752
1779
|
exposes.binary('calibration', ea.ALL, 'ON', 'OFF'), exposes.binary('motor_reversal', ea.ALL, 'ON', 'OFF'),
|
|
1753
1780
|
exposes.enum('backlight_mode', ea.ALL, ['low', 'medium', 'high']),
|
|
@@ -2491,6 +2518,8 @@ module.exports = [
|
|
|
2491
2518
|
{modelID: 'TS0601', manufacturerName: '_TZE200_3ylew7b4'},
|
|
2492
2519
|
{modelID: 'TS0601', manufacturerName: '_TZE200_llm0epxg'},
|
|
2493
2520
|
{modelID: 'TS0601', manufacturerName: '_TZE200_n1aauwb4'},
|
|
2521
|
+
{modelID: 'TS0601', manufacturerName: '_TZE200_xu4a5rhj'},
|
|
2522
|
+
{modelID: 'TS0601', manufacturerName: '_TZE204_r0jdjrvi'},
|
|
2494
2523
|
],
|
|
2495
2524
|
model: 'TS0601_cover_1',
|
|
2496
2525
|
vendor: 'TuYa',
|
|
@@ -2687,6 +2716,7 @@ module.exports = [
|
|
|
2687
2716
|
{vendor: 'AVATTO', model: 'TRV06'},
|
|
2688
2717
|
{vendor: 'Tesla Smart', model: 'TSL-TRV-TV01ZG'},
|
|
2689
2718
|
{vendor: 'Unknown/id3.pl', model: 'GTZ08'},
|
|
2719
|
+
tuya.whitelabel('Moes', 'ZTRV-ZX-TV01-MS', 'Thermostat radiator valve', ['_TZE200_7yoranx2']),
|
|
2690
2720
|
],
|
|
2691
2721
|
ota: ota.zigbeeOTA,
|
|
2692
2722
|
fromZigbee: [tuya.fz.datapoints],
|
|
@@ -3043,7 +3073,9 @@ module.exports = [
|
|
|
3043
3073
|
whiteLabel: [{vendor: 'LELLKI', model: 'TS011F_plug'}, {vendor: 'NEO', model: 'NAS-WR01B'},
|
|
3044
3074
|
{vendor: 'BlitzWolf', model: 'BW-SHP15'}, {vendor: 'Nous', model: 'A1Z'}, {vendor: 'BlitzWolf', model: 'BW-SHP13'},
|
|
3045
3075
|
{vendor: 'MatSee Plus', model: 'PJ-ZSW01'}, {vendor: 'MODEMIX', model: 'MOD037'}, {vendor: 'MODEMIX', model: 'MOD048'},
|
|
3046
|
-
{vendor: 'Coswall', model: 'CS-AJ-DE2U-ZG-11'}, {vendor: 'Aubess', model: 'TS011F_plug_1'}, {vendor: 'Immax', model: '07752L'}
|
|
3076
|
+
{vendor: 'Coswall', model: 'CS-AJ-DE2U-ZG-11'}, {vendor: 'Aubess', model: 'TS011F_plug_1'}, {vendor: 'Immax', model: '07752L'},
|
|
3077
|
+
tuya.whitelabel('NOUS', 'A1Z', 'Smart plug (with power monitoring)', ['_TZ3000_2putqrmw']),
|
|
3078
|
+
],
|
|
3047
3079
|
ota: ota.zigbeeOTA,
|
|
3048
3080
|
extend: tuya.extend.switch({
|
|
3049
3081
|
electricalMeasurements: true, electricalMeasurementsFzConverter: fzLocal.TS011F_electrical_measurement,
|
|
@@ -3175,6 +3207,9 @@ module.exports = [
|
|
|
3175
3207
|
[101, 'test', tuya.valueConverter.raw],
|
|
3176
3208
|
],
|
|
3177
3209
|
},
|
|
3210
|
+
whiteLabel: [
|
|
3211
|
+
tuya.whitelabel('TuYa', 'PA-44Z', 'Smoke detector', ['_TZE200_m9skfctm']),
|
|
3212
|
+
],
|
|
3178
3213
|
},
|
|
3179
3214
|
{
|
|
3180
3215
|
fingerprint: [
|
|
@@ -4294,6 +4329,9 @@ module.exports = [
|
|
|
4294
4329
|
exposes.enum('self_test', ea.STATE, Object.values(tuya.tuyaHPSCheckingResult))
|
|
4295
4330
|
.withDescription('Self_test, possible resuts: checking, check_success, check_failure, others, comm_fault, radar_fault.'),
|
|
4296
4331
|
],
|
|
4332
|
+
whiteLabel: [
|
|
4333
|
+
tuya.whitelabel('TuYa', 'ZY-M100-S', 'Human presence sensor', ['_TZE204_ztc6ggyl']),
|
|
4334
|
+
],
|
|
4297
4335
|
},
|
|
4298
4336
|
{
|
|
4299
4337
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_whkgqxse'}],
|
package/devices/ynoa.js
CHANGED
|
@@ -6,6 +6,13 @@ const e = exposes.presets;
|
|
|
6
6
|
const extend = require('..//lib/extend');
|
|
7
7
|
|
|
8
8
|
module.exports = [
|
|
9
|
+
{
|
|
10
|
+
zigbeeModel: ['ZBT-CCTfilament-D0001'],
|
|
11
|
+
model: '8718801528204',
|
|
12
|
+
vendor: 'Ynoa',
|
|
13
|
+
description: 'Smart LED E27 CCT',
|
|
14
|
+
extend: extend.light_onoff_brightness_colortemp({colorTempRange: [250, 454], disableEffect: true}),
|
|
15
|
+
},
|
|
9
16
|
{
|
|
10
17
|
zigbeeModel: ['ZBT-CCTLight-GU100001'],
|
|
11
18
|
model: '8718801528273',
|
package/index.js
CHANGED
|
@@ -131,7 +131,7 @@ function findByZigbeeModel(zigbeeModel) {
|
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
function findByDevice(device) {
|
|
134
|
-
let definition =
|
|
134
|
+
let definition = findDefinition(device);
|
|
135
135
|
if (definition && definition.whiteLabel) {
|
|
136
136
|
const match = definition.whiteLabel.find((w) => w.fingerprint && w.fingerprint.find((f) => isFingerprintMatch(f, device)));
|
|
137
137
|
if (match) {
|
|
@@ -146,7 +146,7 @@ function findByDevice(device) {
|
|
|
146
146
|
return definition;
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
-
function
|
|
149
|
+
function findDefinition(device) {
|
|
150
150
|
if (!device) {
|
|
151
151
|
return null;
|
|
152
152
|
}
|
package/lib/tuya.js
CHANGED
|
@@ -1239,6 +1239,10 @@ const valueConverterBasic = {
|
|
|
1239
1239
|
const valueConverter = {
|
|
1240
1240
|
trueFalse0: valueConverterBasic.trueFalse(0),
|
|
1241
1241
|
trueFalse1: valueConverterBasic.trueFalse(1),
|
|
1242
|
+
trueFalseInvert: {
|
|
1243
|
+
to: (v) => !v,
|
|
1244
|
+
from: (v) => !v,
|
|
1245
|
+
},
|
|
1242
1246
|
trueFalseEnum0: valueConverterBasic.trueFalse(new Enum(0)),
|
|
1243
1247
|
onOff: valueConverterBasic.lookup({'ON': true, 'OFF': false}),
|
|
1244
1248
|
powerOnBehavior: valueConverterBasic.lookup({'off': 0, 'on': 1, 'previous': 2}),
|
package/lib/xiaomi.js
CHANGED
|
@@ -224,11 +224,13 @@ const numericAttributes2Payload = async (msg, meta, model, options, dataObject)
|
|
|
224
224
|
payload[`state_${mapping}`] = value === 1 ? 'ON' : 'OFF';
|
|
225
225
|
} else if (['WXKG14LM', 'WXKG16LM', 'WXKG17LM'].includes(model.model)) {
|
|
226
226
|
payload.click_mode = {1: 'fast', 2: 'multi'}[value];
|
|
227
|
-
} else if (['WXCJKG11LM', 'WXCJKG12LM', 'WXCJKG13LM', 'ZNMS12LM', 'ZNCLBL01LM', 'RTCGQ12LM', 'RTCGQ13LM',
|
|
228
|
-
'
|
|
227
|
+
} else if (['WXCJKG11LM', 'WXCJKG12LM', 'WXCJKG13LM', 'ZNMS12LM', 'ZNCLBL01LM', 'RTCGQ12LM', 'RTCGQ13LM',
|
|
228
|
+
'RTCGQ14LM'].includes(model.model)) {
|
|
229
229
|
// We don't know what the value means for these devices.
|
|
230
230
|
// https://github.com/Koenkk/zigbee2mqtt/issues/11126
|
|
231
231
|
// https://github.com/Koenkk/zigbee2mqtt/issues/12279
|
|
232
|
+
} else if (['RTCGQ15LM'].includes(model.model)) {
|
|
233
|
+
payload.occupancy = value;
|
|
232
234
|
} else if (['WSDCGQ01LM', 'WSDCGQ11LM', 'WSDCGQ12LM', 'VOCKQJK11LM'].includes(model.model)) {
|
|
233
235
|
// https://github.com/Koenkk/zigbee2mqtt/issues/798
|
|
234
236
|
// Sometimes the sensor publishes non-realistic vales, filter these
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zigbee-herdsman-converters",
|
|
3
|
-
"version": "15.0.
|
|
3
|
+
"version": "15.0.101",
|
|
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.1",
|
|
40
40
|
"tar-stream": "^3.0.0",
|
|
41
|
-
"zigbee-herdsman": "^0.14.
|
|
41
|
+
"zigbee-herdsman": "^0.14.111"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"eslint": "*",
|