zigbee-herdsman-converters 14.0.668 → 14.0.669

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.
@@ -1370,6 +1370,7 @@ const converters = {
1370
1370
  }
1371
1371
  const unoccupiedHeatingSetpoint = result;
1372
1372
  await entity.write('hvacThermostat', {unoccupiedHeatingSetpoint});
1373
+ return {state: {unoccupied_heating_setpoint: value}};
1373
1374
  },
1374
1375
  convertGet: async (entity, key, meta) => {
1375
1376
  await entity.read('hvacThermostat', ['unoccupiedHeatingSetpoint']);
@@ -1405,7 +1406,7 @@ const converters = {
1405
1406
  }
1406
1407
  const unoccupiedCoolingSetpoint = result;
1407
1408
  await entity.write('hvacThermostat', {unoccupiedCoolingSetpoint});
1408
- return {state: {unoccupied_heating_setpoint: value}};
1409
+ return {state: {unoccupied_cooling_setpoint: value}};
1409
1410
  },
1410
1411
  convertGet: async (entity, key, meta) => {
1411
1412
  await entity.read('hvacThermostat', ['unoccupiedCoolingSetpoint']);
@@ -14,11 +14,7 @@ module.exports = [
14
14
  fromZigbee: [fz.connecte_thermostat],
15
15
  toZigbee: [tz.connecte_thermostat],
16
16
  onEvent: tuya.onEventSetTime,
17
- configure: async (device, coordinatorEndpoint, logger) => {
18
- const endpoint = device.getEndpoint(1);
19
- // Do a "magic" read on the basic cluster to trigger the thermostat start reporting.
20
- await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
21
- },
17
+ configure: tuya.configureMagicPacket,
22
18
  exposes: [
23
19
  exposes.binary('state', ea.STATE_SET, 'ON', 'OFF')
24
20
  .withDescription('On/off state of the switch'),
@@ -47,7 +47,7 @@ module.exports = [
47
47
  },
48
48
  {
49
49
  // eslint-disable-next-line
50
- zigbeeModel: ['\u0000\u0002\u0000\u0004\u0000\f]�\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e', '\u0000\u0002\u0000\u0004\"�T\u0004\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e', '\u0000\u0002\u0000\u0004\u0000\f^�\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e','\u0000\u0002\u0000\u0004\u0011�\"�\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e','\u0000\u0002\u0000\u0004� �P\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e','\u0000\u0002\u0000\u0004\u0000\f^\u0014\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e'],
50
+ zigbeeModel: ['\u0000\u0002\u0000\u0004T\u0002\u000eZ\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e', '\u0000\u0002\u0000\u0004\u0000\f]�\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e', '\u0000\u0002\u0000\u0004\"�T\u0004\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e', '\u0000\u0002\u0000\u0004\u0000\f^�\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e','\u0000\u0002\u0000\u0004\u0011�\"�\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e','\u0000\u0002\u0000\u0004� �P\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e','\u0000\u0002\u0000\u0004\u0000\f^\u0014\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000e'],
51
51
  model: 'D1533',
52
52
  vendor: 'EcoSmart',
53
53
  description: 'PAR20/A19 bright white bulb',
package/devices/fantem.js CHANGED
@@ -42,7 +42,7 @@ module.exports = [
42
42
  const endpoint = device.getEndpoint(1);
43
43
  // Enables reporting of physical state changes
44
44
  // https://github.com/Koenkk/zigbee2mqtt/issues/9057#issuecomment-1007742130
45
- await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
45
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
46
46
  await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
47
47
  },
48
48
  },
package/devices/ge.js CHANGED
@@ -61,11 +61,15 @@ module.exports = [
61
61
  model: '45856GE',
62
62
  vendor: 'GE',
63
63
  description: 'In-wall smart switch',
64
- extend: extend.switch(),
64
+ fromZigbee: [fz.on_off, fz.metering],
65
+ toZigbee: [tz.on_off],
66
+ exposes: [e.switch(), e.energy(), e.power()],
65
67
  configure: async (device, coordinatorEndpoint, logger) => {
66
68
  const endpoint = device.getEndpoint(1);
67
- await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
68
- await reporting.onOff(endpoint);
69
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'seMetering']);
70
+ await reporting.instantaneousDemand(endpoint);
71
+ await reporting.currentSummDelivered(endpoint);
72
+ endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 10000, multiplier: 1});
69
73
  },
70
74
  },
71
75
  {
@@ -15,6 +15,18 @@ const readInitialBatteryState = async (type, data, device) => {
15
15
  }
16
16
  };
17
17
 
18
+ const tzLocal = {
19
+ auto_mode: {
20
+ key: ['auto_mode'],
21
+ convertSet: async (entity, key, value, meta) => {
22
+ const mode = {'off': 0x00, 'auto': 0x02, 'on_override': 0x03};
23
+ const payload = {data: Buffer.from([mode[value]])};
24
+ await entity.command('manuSpecificLegrandDevices3', 'command0', payload);
25
+ return {state: {'auto_mode': value}};
26
+ },
27
+ },
28
+ };
29
+
18
30
  module.exports = [
19
31
  {
20
32
  zigbeeModel: [' Dry contact\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000'+
@@ -46,16 +58,20 @@ module.exports = [
46
58
  vendor: 'Legrand',
47
59
  extend: extend.switch(),
48
60
  fromZigbee: [fz.identify, fz.on_off, fz.electrical_measurement, fz.legrand_cluster_fc01, fz.ignore_basic_report, fz.ignore_genOta],
49
- toZigbee: [tz.legrand_deviceMode, tz.on_off, tz.legrand_identify, tz.electrical_measurement_power],
61
+ toZigbee: [tz.legrand_deviceMode, tz.on_off, tz.legrand_identify, tz.electrical_measurement_power, tzLocal.auto_mode],
50
62
  exposes: [exposes.switch().withState('state', true, 'On/off (works only if device is in "switch" mode)'),
51
- e.power().withAccess(ea.STATE_GET), exposes.enum('device_mode', ea.ALL, ['switch', 'auto'])
52
- .withDescription('switch: allow on/off, auto will use wired action via C1/C2 on contactor for example with HC/HP')],
63
+ e.power().withAccess(ea.STATE_GET),
64
+ exposes.enum('device_mode', ea.ALL, ['switch', 'auto'])
65
+ .withDescription('Switch: allow manual on/off, auto uses contact\'s C1/C2 wired actions for Peak/Off-Peak ' +
66
+ 'electricity rates'),
67
+ exposes.enum('auto_mode', ea.STATE_SET, ['off', 'auto', 'on_override'])
68
+ .withDescription('Off/auto/on (override) (works only if device is set to "auto" mode)')],
53
69
  configure: async (device, coordinatorEndpoint, logger) => {
54
70
  const endpoint = device.getEndpoint(1);
55
71
  await reporting.bind(endpoint, coordinatorEndpoint, ['genIdentify', 'genOnOff', 'haElectricalMeasurement']);
56
72
  await reporting.onOff(endpoint);
57
- await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
58
73
  await reporting.activePower(endpoint);
74
+ await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
59
75
  },
60
76
  },
61
77
  {
@@ -238,6 +254,7 @@ module.exports = [
238
254
  ota: ota.zigbeeOTA,
239
255
  fromZigbee: [fz.identify, fz.on_off],
240
256
  toZigbee: [tz.on_off, tz.legrand_identify],
257
+ whiteLabel: [{vendor: 'Bticino', model: '3584C'}],
241
258
  configure: async (device, coordinatorEndpoint, logger) => {
242
259
  const endpoint = device.getEndpoint(1);
243
260
  await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genBinaryInput']);
package/devices/lellki.js CHANGED
@@ -23,9 +23,7 @@ module.exports = [
23
23
  return {l1: 1, l2: 2, l3: 3, l4: 4, l5: 5};
24
24
  },
25
25
  configure: async (device, coordinatorEndpoint, logger) => {
26
- await device.getEndpoint(1).read('genBasic', [
27
- 'manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
28
-
26
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
29
27
  for (const ID of [1, 2, 3, 4, 5]) {
30
28
  await reporting.bind(device.getEndpoint(ID), coordinatorEndpoint, ['genOnOff']);
31
29
  }
@@ -115,7 +113,7 @@ module.exports = [
115
113
  toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory],
116
114
  configure: async (device, coordinatorEndpoint, logger) => {
117
115
  const endpoint = device.getEndpoint(1);
118
- await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
116
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
119
117
  await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
120
118
  endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {acCurrentDivisor: 1000, acCurrentMultiplier: 1});
121
119
  endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 100, multiplier: 1});
@@ -138,7 +136,7 @@ module.exports = [
138
136
  toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory],
139
137
  configure: async (device, coordinatorEndpoint, logger) => {
140
138
  const endpoint = device.getEndpoint(1);
141
- await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
139
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
142
140
  for (const ep of [1, 2, 3]) {
143
141
  await reporting.bind(device.getEndpoint(ep), coordinatorEndpoint, ['genOnOff']);
144
142
  await reporting.onOff(device.getEndpoint(ep));
package/devices/lidl.js CHANGED
@@ -515,8 +515,7 @@ module.exports = [
515
515
  extend: extend.switch(),
516
516
  meta: {multiEndpoint: true},
517
517
  configure: async (device, coordinatorEndpoint, logger) => {
518
- const endpoint = device.getEndpoint(1);
519
- await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
518
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
520
519
  for (const ID of [1, 2, 3]) {
521
520
  await reporting.bind(device.getEndpoint(ID), coordinatorEndpoint, ['genOnOff']);
522
521
  }
@@ -2,6 +2,7 @@ const exposes = require('../lib/exposes');
2
2
  const fz = require('../converters/fromZigbee');
3
3
  const tz = require('../converters/toZigbee');
4
4
  const reporting = require('../lib/reporting');
5
+ const tuya = require('../lib/tuya');
5
6
  const utils = require('../lib/utils');
6
7
  const e = exposes.presets;
7
8
  const ea = exposes.access;
@@ -36,7 +37,7 @@ module.exports = [
36
37
  },
37
38
  configure: async (device, coordinatorEndpoint, logger) => {
38
39
  const endpoint = device.getEndpoint(1);
39
- await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
40
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
40
41
  await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering']);
41
42
  await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
42
43
  await reporting.rmsVoltage(endpoint, {change: 5});
@@ -2,6 +2,7 @@ const exposes = require('../lib/exposes');
2
2
  const fz = require('../converters/fromZigbee');
3
3
  const tz = require('../converters/toZigbee');
4
4
  const reporting = require('../lib/reporting');
5
+ const tuya = require('../lib/tuya');
5
6
  const e = exposes.presets;
6
7
  const ea = exposes.access;
7
8
 
@@ -24,7 +25,7 @@ module.exports = [
24
25
  meta: {multiEndpoint: true},
25
26
  configure: async (device, coordinatorEndpoint, logger) => {
26
27
  const endpoint = device.getEndpoint(1);
27
- await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
28
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
28
29
  endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {acCurrentDivisor: 1000, acCurrentMultiplier: 1});
29
30
  endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 100, multiplier: 1});
30
31
  device.save();
@@ -77,7 +77,7 @@ module.exports = [
77
77
  exposes: [e.battery(), e.battery_voltage()],
78
78
  configure: async (device, coordinatorEndpoint, logger) => {
79
79
  const endpoint = device.getEndpoint(1);
80
- await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
80
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
81
81
  await endpoint.command('genGroups', 'miboxerSetZones', {zones: [
82
82
  {zoneNum: 1, groupId: 101},
83
83
  {zoneNum: 2, groupId: 102},
package/devices/moes.js CHANGED
@@ -38,8 +38,7 @@ module.exports = [
38
38
  },
39
39
  meta: {multiEndpoint: true},
40
40
  configure: async (device, coordinatorEndpoint, logger) => {
41
- await device.getEndpoint(1).read('genBasic',
42
- ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
41
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
43
42
  await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
44
43
  await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
45
44
  await reporting.onOff(device.getEndpoint(1));
package/devices/neo.js CHANGED
@@ -79,7 +79,7 @@ module.exports = [
79
79
  ],
80
80
  configure: async (device, coordinatorEndpoint, logger) => {
81
81
  const endpoint = device.getEndpoint(1);
82
- await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
82
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
83
83
  await endpoint.command('manuSpecificTuya', 'mcuVersionRequest', {'seq': 0x0002});
84
84
  },
85
85
  },
@@ -2914,4 +2914,11 @@ module.exports = [
2914
2914
  description: 'Hue White ambiance BR30 E26',
2915
2915
  extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
2916
2916
  },
2917
+ {
2918
+ zigbeeModel: ['LCX012'],
2919
+ model: '929003535301',
2920
+ vendor: 'Philips',
2921
+ description: 'Hue Festivia gradient light string 250',
2922
+ extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
2923
+ },
2917
2924
  ];
package/devices/tuya.js CHANGED
@@ -665,6 +665,7 @@ module.exports = [
665
665
  model: 'TS0204',
666
666
  vendor: 'TuYa',
667
667
  description: 'Gas sensor',
668
+ whiteLabel: [{vendor: 'Tesla Smart', model: 'TSL-SEN-GAS'}],
668
669
  fromZigbee: [fz.ias_gas_alarm_1, fz.ignore_basic_report],
669
670
  toZigbee: [],
670
671
  exposes: [e.gas(), e.tamper()],
@@ -674,6 +675,7 @@ module.exports = [
674
675
  model: 'TS0205',
675
676
  vendor: 'TuYa',
676
677
  description: 'Smoke sensor',
678
+ whiteLabel: [{vendor: 'Tesla Smart', model: 'TSL-SEN-SMOKE'}],
677
679
  fromZigbee: [fz.ias_smoke_alarm_1, fz.battery, fz.ignore_basic_report],
678
680
  toZigbee: [],
679
681
  exposes: [e.smoke(), e.battery_low(), e.tamper(), e.battery()],
@@ -702,7 +704,11 @@ module.exports = [
702
704
  fromZigbee: [fz.ias_contact_alarm_1, fz.battery, fz.ignore_basic_report, fz.ias_contact_alarm_1_report],
703
705
  toZigbee: [],
704
706
  exposes: [e.contact(), e.battery_low(), e.tamper(), e.battery(), e.battery_voltage()],
705
- whiteLabel: [{vendor: 'CR Smart Home', model: 'TS0203'}, {vendor: 'TuYa', model: 'iH-F001'}],
707
+ whiteLabel: [
708
+ {vendor: 'CR Smart Home', model: 'TS0203'},
709
+ {vendor: 'TuYa', model: 'iH-F001'},
710
+ {vendor: 'Tesla Smart', model: 'TSL-SEN-DOOR'},
711
+ ],
706
712
  configure: async (device, coordinatorEndpoint, logger) => {
707
713
  try {
708
714
  const endpoint = device.getEndpoint(1);
@@ -1837,12 +1843,7 @@ module.exports = [
1837
1843
  },
1838
1844
  meta: {multiEndpoint: true},
1839
1845
  configure: async (device, coordinatorEndpoint, logger) => {
1840
- const ep1 = device.getEndpoint(1);
1841
- try {
1842
- await ep1.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
1843
- } catch (e) {
1844
- // Fails for some: https://github.com/Koenkk/zigbee2mqtt/discussions/13368
1845
- }
1846
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
1846
1847
  await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
1847
1848
  await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
1848
1849
  },
@@ -2465,7 +2466,8 @@ module.exports = [
2465
2466
  .withDescription('Recover state after power outage'),
2466
2467
  exposes.enum('indicator_mode', ea.ALL, ['off', 'off/on', 'on/off', 'on'])
2467
2468
  .withDescription('Plug LED indicator mode'), e.child_lock()],
2468
- onEvent: tuya.onEventMeasurementPoll,
2469
+ onEvent: (type, data, device, options) =>
2470
+ tuya.onEventMeasurementPoll(type, data, device, options, true, device.applicationVersion === 160),
2469
2471
  },
2470
2472
  {
2471
2473
  fingerprint: tuya.fingerprint('TS0601', ['_TZE200_ntcy3xu1']),
@@ -1,6 +1,7 @@
1
1
  const exposes = require('../lib/exposes');
2
2
  const reporting = require('../lib/reporting');
3
3
  const extend = require('../lib/extend');
4
+ const tuya = require('../lib/tuya');
4
5
  const e = exposes.presets;
5
6
 
6
7
  module.exports = [
@@ -32,8 +33,7 @@ module.exports = [
32
33
  extend: extend.switch(),
33
34
  meta: {multiEndpoint: true},
34
35
  configure: async (device, coordinatorEndpoint, logger) => {
35
- await device.getEndpoint(1).read('genBasic',
36
- ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
36
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
37
37
  for (const ID of [1, 2, 3, 4, 5]) {
38
38
  await reporting.bind(device.getEndpoint(ID), coordinatorEndpoint, ['genOnOff']);
39
39
  }
package/devices/woox.js CHANGED
@@ -107,10 +107,7 @@ module.exports = [
107
107
  onEvent: tuya.onEventSetTime,
108
108
  exposes: [e.switch(), e.battery()],
109
109
  meta: {disableDefaultResponse: true},
110
- configure: async (device, coordinatorEndpoint, logger) => {
111
- const endpoint = device.getEndpoint(1);
112
- await endpoint.read('genBasic', ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
113
- },
110
+ configure: tuya.configureMagicPacket,
114
111
  },
115
112
  {
116
113
  fingerprint: [{modelID: 'TS0505A', manufacturerName: '_TZ3000_keabpigv'}],
@@ -70,8 +70,7 @@ module.exports = [
70
70
  whiteLabel: [{vendor: 'BSEED', model: 'TS0003', description: 'Zigbee switch'}],
71
71
  meta: {multiEndpoint: true, disableDefaultResponse: true},
72
72
  configure: async (device, coordinatorEndpoint, logger) => {
73
- await device.getEndpoint(1).read('genBasic',
74
- ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
73
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
75
74
  await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
76
75
  await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
77
76
  await reporting.bind(device.getEndpoint(3), coordinatorEndpoint, ['genOnOff']);
@@ -91,9 +90,8 @@ module.exports = [
91
90
  return {'left': 1, 'center': 2, 'right': 3};
92
91
  },
93
92
  meta: {multiEndpoint: true},
94
- configure: async (device, coordinatorEndpoint) => {
95
- await device.getEndpoint(1).read('genBasic',
96
- ['manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
93
+ configure: async (device, coordinatorEndpoint, logger) => {
94
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
97
95
  for (const endpointID of [1, 2, 3]) {
98
96
  const endpoint = device.getEndpoint(endpointID);
99
97
  await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
@@ -144,9 +142,7 @@ module.exports = [
144
142
  },
145
143
  meta: {multiEndpoint: true},
146
144
  configure: async (device, coordinatorEndpoint, logger) => {
147
- await device.getEndpoint(1).read('genBasic', [
148
- 'manufacturerName', 'zclVersion', 'appVersion', 'modelId', 'powerSource', 0xfffe]);
149
-
145
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
150
146
  await reporting.bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
151
147
  await reporting.bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);
152
148
  await reporting.onOff(device.getEndpoint(1));
package/lib/tuya.js CHANGED
@@ -1517,7 +1517,7 @@ const fzDataPoints = {
1517
1517
  result = {...result, ...dpEntry[2].from(value, meta)};
1518
1518
  }
1519
1519
  } else {
1520
- meta.logger.warn(`Datapoint ${dpId} not defined for '${meta.device.manufacturerName}' ` +
1520
+ meta.logger.debug(`Datapoint ${dpId} not defined for '${meta.device.manufacturerName}' ` +
1521
1521
  `with data ${JSON.stringify(dpValue)}`);
1522
1522
  }
1523
1523
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.668",
3
+ "version": "14.0.669",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [