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.
@@ -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',
@@ -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
- if (result[key] === 0 && globalStore.getValue(msg.endpoint, key) !== 0) {
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, result[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 Sensor', ['_TZ3040_wqmtjsyk'])],
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: [{vendor: 'LoraTap', model: 'SC400'}],
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 = findDefintion(device);
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 findDefintion(device) {
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', 'RTCGQ14LM',
228
- 'RTCGQ15LM'].includes(model.model)) {
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.99",
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.110"
41
+ "zigbee-herdsman": "^0.14.111"
42
42
  },
43
43
  "devDependencies": {
44
44
  "eslint": "*",