zigbee-herdsman-converters 15.0.18 → 15.0.19

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.
@@ -7431,6 +7431,17 @@ const converters = {
7431
7431
  const lookup = {1: 'manual', 2: 'schedule', 3: 'energy_saver', 6: 'holiday'};
7432
7432
  result['zone_mode'] = lookup[msg.data[0xe010]];
7433
7433
  }
7434
+ if (msg.data.hasOwnProperty(0xe011)) {
7435
+ // wiserSmartHactConfig
7436
+ const lookup = {0x00: 'unconfigured', 0x80: 'setpoint_switch', 0x82: 'setpoint_fip', 0x83: 'fip_fip'};
7437
+ result['hact_config'] = lookup[msg.data[0xe011]];
7438
+ }
7439
+ if (msg.data.hasOwnProperty(0xe020)) {
7440
+ // wiserSmartCurrentFilPiloteMode
7441
+ const lookup = {0: 'comfort', 1: 'comfort_-1', 2: 'comfort_-2', 3: 'energy_saving',
7442
+ 4: 'frost_protection', 5: 'off'};
7443
+ result['fip_setting'] = lookup[msg.data[0xe020]];
7444
+ }
7434
7445
  if (msg.data.hasOwnProperty(0xe030)) {
7435
7446
  // wiserSmartValvePosition
7436
7447
  result['pi_heating_demand'] = msg.data[0xe030];
@@ -61,6 +61,12 @@ const converters = {
61
61
  await entity.command('genBasic', 'resetFactDefault', {}, utils.getOptions(meta.mapped, entity));
62
62
  },
63
63
  },
64
+ identify: {
65
+ key: ['identify'],
66
+ convertSet: async (entity, key, value, meta) => {
67
+ await entity.command('genIdentify', 'identify', {identifytime: value}, utils.getOptions(meta.mapped, entity));
68
+ },
69
+ },
64
70
  arm_mode: {
65
71
  key: ['arm_mode'],
66
72
  convertSet: async (entity, key, value, meta) => {
@@ -6485,6 +6491,58 @@ const converters = {
6485
6491
  }
6486
6492
  },
6487
6493
  },
6494
+ wiser_fip_setting: {
6495
+ key: ['fip_setting'],
6496
+ convertSet: async (entity, key, value, meta) => {
6497
+ const zoneLookup = {'manual': 1, 'schedule': 2, 'energy_saver': 3, 'holiday': 6};
6498
+ const zonemodeNum = zoneLookup[meta.state.zone_mode];
6499
+
6500
+ const fipLookup = {'comfort': 0, 'comfort_-1': 1, 'comfort_-2': 2, 'energy_saving': 3,
6501
+ 'frost_protection': 4, 'off': 5};
6502
+ value = value.toLowerCase();
6503
+ utils.validateValue(value, Object.keys(fipLookup));
6504
+ const fipmodeNum = fipLookup[value];
6505
+
6506
+ const payload = {
6507
+ zonemode: zonemodeNum,
6508
+ fipmode: fipmodeNum,
6509
+ reserved: 0xff,
6510
+ };
6511
+ await entity.command('hvacThermostat', 'wiserSmartSetFipMode', payload,
6512
+ {srcEndpoint: 11, disableDefaultResponse: true});
6513
+
6514
+ return {state: {'fip_setting': value}};
6515
+ },
6516
+ convertGet: async (entity, key, meta) => {
6517
+ await entity.read('hvacThermostat', [0xe020]);
6518
+ },
6519
+ },
6520
+ wiser_hact_config: {
6521
+ key: ['hact_config'],
6522
+ convertSet: async (entity, key, value, meta) => {
6523
+ const lookup = {'unconfigured': 0x00, 'setpoint_switch': 0x80, 'setpoint_fip': 0x82, 'fip_fip': 0x83};
6524
+ value = value.toLowerCase();
6525
+ utils.validateValue(value, Object.keys(lookup));
6526
+ const mode = lookup[value];
6527
+ await entity.write('hvacThermostat', {0xe011: {value: mode, type: 0x18}});
6528
+ return {state: {'hact_config': value}};
6529
+ },
6530
+ convertGet: async (entity, key, meta) => {
6531
+ await entity.read('hvacThermostat', [0xe011]);
6532
+ },
6533
+ },
6534
+ wiser_zone_mode: {
6535
+ key: ['zone_mode'],
6536
+ convertSet: async (entity, key, value, meta) => {
6537
+ const lookup = {'manual': 1, 'schedule': 2, 'energy_saver': 3, 'holiday': 6};
6538
+ const zonemodeNum = lookup[value];
6539
+ await entity.write('hvacThermostat', {0xe010: {value: zonemodeNum, type: 0x30}});
6540
+ return {state: {'zone_mode': value}};
6541
+ },
6542
+ convertGet: async (entity, key, meta) => {
6543
+ await entity.read('hvacThermostat', [0xe010]);
6544
+ },
6545
+ },
6488
6546
  wiser_vact_calibrate_valve: {
6489
6547
  key: ['calibrate_valve'],
6490
6548
  convertSet: async (entity, key, value, meta) => {
@@ -8,4 +8,11 @@ module.exports = [
8
8
  description: 'Downlight with tuneable white',
9
9
  extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
10
10
  },
11
+ {
12
+ zigbeeModel: ['AL8RGB13W-AP'],
13
+ model: 'AL8RGB13W-AP',
14
+ vendor: 'Alchemy',
15
+ description: 'Downlight RGBW',
16
+ extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 370]}),
17
+ },
11
18
  ];
@@ -3,6 +3,7 @@ const fz = require('../converters/fromZigbee');
3
3
  const tz = require('../converters/toZigbee');
4
4
  const reporting = require('../lib/reporting');
5
5
  const tuya = require('../lib/tuya');
6
+ const extend = require('../lib/extend');
6
7
  const e = exposes.presets;
7
8
  const ea = exposes.access;
8
9
 
@@ -30,7 +31,97 @@ module.exports = [
30
31
  },
31
32
  },
32
33
  {
33
- fingerprint: tuya.fingerprint('TS011F', ['_TZ3210_7jnk7l3k', '_TZ3210_raqjcxo5']),
34
+ fingerprint: [{modelID: 'TS0202', manufacturerName: '_TYZB01_qjqgmqxr'}],
35
+ model: 'SMA02P',
36
+ vendor: 'Mercator',
37
+ description: 'Ikuü battery motion sensor',
38
+ fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery, fz.ignore_basic_report, fz.ias_occupancy_alarm_1_report],
39
+ toZigbee: [],
40
+ exposes: [e.occupancy(), e.battery_low(), e.tamper(), e.battery(), e.battery_voltage()],
41
+ configure: async (device, coordinatorEndpoint, logger) => {
42
+ const endpoint = device.getEndpoint(1);
43
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
44
+ try {
45
+ await reporting.batteryPercentageRemaining(endpoint);
46
+ } catch (error) {/* Fails for some https://github.com/Koenkk/zigbee2mqtt/issues/13708*/}
47
+ },
48
+ },
49
+ {
50
+ fingerprint: [{modelID: 'TS0201', manufacturerName: '_TZ3000_82ptnsd4'}],
51
+ model: 'SMA03P',
52
+ vendor: 'Mercator',
53
+ description: 'Ikuü temperature & humidity sensor',
54
+ fromZigbee: [fz.battery, fz.temperature, fz.humidity],
55
+ toZigbee: [],
56
+ exposes: [e.battery(), e.temperature(), e.humidity(), e.battery_voltage()],
57
+ configure: tuya.configureMagicPacket,
58
+ },
59
+ {
60
+ fingerprint: [{modelID: 'TS0203', manufacturerName: '_TZ3000_wbrlnkm9'}],
61
+ model: 'SMA04P',
62
+ vendor: 'Mercator',
63
+ description: 'Ikuü battery contact sensor',
64
+ fromZigbee: [fz.ias_contact_alarm_1, fz.battery, fz.ignore_basic_report, fz.ias_contact_alarm_1_report],
65
+ toZigbee: [],
66
+ exposes: [e.contact(), e.battery_low(), e.tamper(), e.battery(), e.battery_voltage()],
67
+ configure: async (device, coordinatorEndpoint, logger) => {
68
+ try {
69
+ const endpoint = device.getEndpoint(1);
70
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
71
+ await reporting.batteryPercentageRemaining(endpoint);
72
+ await reporting.batteryVoltage(endpoint);
73
+ } catch (error) {/* Fails for some*/}
74
+ },
75
+ },
76
+ {
77
+ fingerprint: [{modelID: 'TS0502B', manufacturerName: '_TZ3000_6dwfra5l'}],
78
+ model: 'SMCL01-ZB',
79
+ vendor: 'Mercator',
80
+ description: 'Ikuü Ikon ceiling light CCT',
81
+ extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 500], disablePowerOnBehavior: true}),
82
+ },
83
+ {
84
+ fingerprint: [{modelID: 'TS0505B', manufacturerName: '_TZ3000_xr5m6kfg'}],
85
+ model: 'SMD4109W-RGB-ZB',
86
+ vendor: 'Mercator',
87
+ description: 'Ikuü Walter downlight RGB + CCT',
88
+ extend: extend.light_onoff_brightness_colortemp_color(
89
+ {colorTempRange: [153, 500], disableColorTempStartup: true, disablePowerOnBehavior: true}),
90
+ meta: {applyRedFix: true, enhancedHue: false},
91
+ },
92
+ {
93
+ fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3210_raqjcxo5'}],
94
+ model: 'SPP02G',
95
+ vendor: 'Mercator',
96
+ description: 'Ikuü double indoors power point',
97
+ extend: tuya.extend.switch({powerOutageMemory: true, electricalMeasurements: true, endpoints: ['left', 'right']}),
98
+ exposes: [e.switch().withEndpoint('left'), e.switch().withEndpoint('right'),
99
+ e.power().withEndpoint('left'), e.current().withEndpoint('left'),
100
+ e.voltage().withEndpoint('left').withAccess(ea.STATE), e.energy()],
101
+ endpoint: (device) => {
102
+ return {left: 1, right: 2};
103
+ },
104
+ meta: {multiEndpoint: true},
105
+ configure: async (device, coordinatorEndpoint, logger) => {
106
+ const endpoint1 = device.getEndpoint(1);
107
+ const endpoint2 = device.getEndpoint(2);
108
+ await reporting.bind(endpoint1, coordinatorEndpoint, ['genBasic', 'genOnOff', 'haElectricalMeasurement', 'seMetering']);
109
+ await reporting.bind(endpoint2, coordinatorEndpoint, ['genOnOff']);
110
+ await reporting.onOff(endpoint1);
111
+ await reporting.onOff(endpoint1);
112
+ await reporting.onOff(endpoint1);
113
+ await reporting.rmsVoltage(endpoint1, {change: 5});
114
+ await reporting.rmsCurrent(endpoint1, {change: 50});
115
+ await reporting.activePower(endpoint1, {change: 1});
116
+ await reporting.onOff(endpoint1);
117
+ await reporting.onOff(endpoint2);
118
+ endpoint1.saveClusterAttributeKeyValue('haElectricalMeasurement', {acCurrentDivisor: 1000, acCurrentMultiplier: 1});
119
+ endpoint1.saveClusterAttributeKeyValue('seMetering', {divisor: 100, multiplier: 1});
120
+ device.save();
121
+ },
122
+ },
123
+ {
124
+ fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3210_7jnk7l3k'}],
34
125
  model: 'SPP02GIP',
35
126
  vendor: 'Mercator',
36
127
  description: 'Ikuü double outdoors power point',
@@ -60,11 +151,31 @@ module.exports = [
60
151
  device.save();
61
152
  },
62
153
  },
154
+ {
155
+ fingerprint: [{modelID: 'TS0013', manufacturerName: '_TZ3000_khtlvdfc'}],
156
+ model: 'SSW03G',
157
+ vendor: 'Mercator',
158
+ description: 'Ikuü triple switch',
159
+ extend: tuya.extend.switch({backlightModeLowMediumHigh: true, endpoints: ['left', 'center', 'right']}),
160
+ endpoint: (device) => {
161
+ return {'left': 1, 'center': 2, 'right': 3};
162
+ },
163
+ meta: {multiEndpoint: true},
164
+ configure: async (device, coordinatorEndpoint, logger) => {
165
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
166
+ for (const ID of [1, 2, 3]) {
167
+ const endpoint = device.getEndpoint(ID);
168
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
169
+ }
170
+ device.powerSource = 'Mains (single phase)';
171
+ device.save();
172
+ },
173
+ },
63
174
  {
64
175
  fingerprint: [{modelID: 'TS0501', manufacturerName: '_TZ3210_lzqq3u4r'},
65
176
  {modelID: 'TS0501', manufacturerName: '_TZ3210_4whigl8i'}],
66
177
  model: 'SSWF01G',
67
- description: 'AC fan controller',
178
+ description: 'Ikuü AC fan controller',
68
179
  vendor: 'Mercator',
69
180
  fromZigbee: [fz.on_off, fz.fan],
70
181
  toZigbee: [tz.fan_mode, tz.on_off],
package/devices/niko.js CHANGED
@@ -36,6 +36,20 @@ const local = {
36
36
  return state;
37
37
  },
38
38
  },
39
+ switch_status_led: {
40
+ cluster: 'manuSpecificNiko1',
41
+ type: ['attributeReport', 'readResponse'],
42
+ convert: (model, msg, publish, options, meta) => {
43
+ const state = {};
44
+ if (msg.data.hasOwnProperty('outletLedState')) {
45
+ state['led_enable'] = (msg.data['outletLedState'] == 1);
46
+ }
47
+ if (msg.data.hasOwnProperty('outletLedColor')) {
48
+ state['led_state'] = (msg.data['outletLedColor'] == 255 ? 'ON' : 'OFF');
49
+ }
50
+ return state;
51
+ },
52
+ },
39
53
  outlet: {
40
54
  cluster: 'manuSpecificNiko1',
41
55
  type: ['attributeReport', 'readResponse'],
@@ -69,6 +83,27 @@ const local = {
69
83
  await entity.read('manuSpecificNiko1', ['switchOperationMode']);
70
84
  },
71
85
  },
86
+ switch_led_enable: {
87
+ key: ['led_enable'],
88
+ convertSet: async (entity, key, value, meta) => {
89
+ await entity.write('manuSpecificNiko1', {'outletLedState': ((value) ? 1 : 0)});
90
+ await entity.read('manuSpecificNiko1', ['outletLedColor']);
91
+ return {state: {led_enable: ((value) ? true : false)}};
92
+ },
93
+ convertGet: async (entity, key, meta) => {
94
+ await entity.read('manuSpecificNiko1', ['outletLedState']);
95
+ },
96
+ },
97
+ switch_led_state: {
98
+ key: ['led_state'],
99
+ convertSet: async (entity, key, value, meta) => {
100
+ await entity.write('manuSpecificNiko1', {'outletLedColor': ((value.toLowerCase() === 'off') ? 0 : 255)});
101
+ return {state: {led_state: ((value.toLowerCase() === 'off') ? 'OFF' : 'ON')}};
102
+ },
103
+ convertGet: async (entity, key, meta) => {
104
+ await entity.read('manuSpecificNiko1', ['outletLedColor']);
105
+ },
106
+ },
72
107
  outlet_child_lock: {
73
108
  key: ['child_lock'],
74
109
  convertSet: async (entity, key, value, meta) => {
@@ -198,18 +233,20 @@ module.exports = [
198
233
  model: '552-721X1',
199
234
  vendor: 'Niko',
200
235
  description: 'Single connectable switch',
201
- fromZigbee: [fz.on_off, local.fz.switch_operation_mode, local.fz.switch_action],
202
- toZigbee: [tz.on_off, local.tz.switch_operation_mode],
236
+ fromZigbee: [fz.on_off, local.fz.switch_operation_mode, local.fz.switch_action, local.fz.switch_status_led],
237
+ toZigbee: [tz.on_off, local.tz.switch_operation_mode, local.tz.switch_led_enable, local.tz.switch_led_state],
203
238
  configure: async (device, coordinatorEndpoint, logger) => {
204
239
  const endpoint = device.getEndpoint(1);
205
240
  await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
206
241
  await reporting.onOff(endpoint);
207
- await endpoint.read('manuSpecificNiko1', ['switchOperationMode']);
242
+ await endpoint.read('manuSpecificNiko1', ['switchOperationMode', 'outletLedState', 'outletLedColor']);
208
243
  },
209
244
  exposes: [
210
245
  e.switch(),
211
246
  e.action(['single', 'hold', 'release']),
212
247
  exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']),
248
+ exposes.binary('led_enable', ea.ALL, true, false).withDescription('Enable LED'),
249
+ exposes.binary('led_state', ea.ALL, 'ON', 'OFF').withDescription('LED State'),
213
250
  ],
214
251
  },
215
252
  {
@@ -217,8 +254,8 @@ module.exports = [
217
254
  model: '552-721X2',
218
255
  vendor: 'Niko',
219
256
  description: 'Double connectable switch',
220
- fromZigbee: [fz.on_off, local.fz.switch_operation_mode, local.fz.switch_action],
221
- toZigbee: [tz.on_off, local.tz.switch_operation_mode],
257
+ fromZigbee: [fz.on_off, local.fz.switch_operation_mode, local.fz.switch_action, local.fz.switch_status_led],
258
+ toZigbee: [tz.on_off, local.tz.switch_operation_mode, local.tz.switch_led_enable, local.tz.switch_led_state],
222
259
  endpoint: (device) => {
223
260
  return {'l1': 1, 'l2': 2};
224
261
  },
@@ -230,8 +267,8 @@ module.exports = [
230
267
  await reporting.bind(ep2, coordinatorEndpoint, ['genOnOff']);
231
268
  await reporting.onOff(ep1);
232
269
  await reporting.onOff(ep2);
233
- await ep1.read('manuSpecificNiko1', ['switchOperationMode']);
234
- await ep2.read('manuSpecificNiko1', ['switchOperationMode']);
270
+ await ep1.read('manuSpecificNiko1', ['switchOperationMode', 'outletLedState', 'outletLedColor']);
271
+ await ep2.read('manuSpecificNiko1', ['switchOperationMode', 'outletLedState', 'outletLedColor']);
235
272
  },
236
273
  exposes: [
237
274
  e.switch().withEndpoint('l1'), e.switch().withEndpoint('l2'),
@@ -239,6 +276,10 @@ module.exports = [
239
276
  e.action(['single', 'hold', 'release']).withEndpoint('l2'),
240
277
  exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']).withEndpoint('l1'),
241
278
  exposes.enum('operation_mode', ea.ALL, ['control_relay', 'decoupled']).withEndpoint('l2'),
279
+ exposes.binary('led_enable', ea.ALL, true, false).withEndpoint('l1').withDescription('Enable LED'),
280
+ exposes.binary('led_enable', ea.ALL, true, false).withEndpoint('l2').withDescription('Enable LED'),
281
+ exposes.binary('led_state', ea.ALL, 'ON', 'OFF').withEndpoint('l1').withDescription('LED State'),
282
+ exposes.binary('led_state', ea.ALL, 'ON', 'OFF').withEndpoint('l2').withDescription('LED State'),
242
283
  ],
243
284
  },
244
285
  {
package/devices/owon.js CHANGED
@@ -149,8 +149,13 @@ module.exports = [
149
149
  configure: async (device, coordinatorEndpoint, logger) => {
150
150
  const endpoint2 = device.getEndpoint(2);
151
151
  const endpoint3 = device.getEndpoint(3);
152
- await reporting.bind(endpoint2, coordinatorEndpoint, ['msIlluminanceMeasurement']);
153
- await reporting.bind(endpoint3, coordinatorEndpoint, ['msTemperatureMeasurement', 'msRelativeHumidity']);
152
+ if (device.modelID == 'PIR313') {
153
+ await reporting.bind(endpoint2, coordinatorEndpoint, ['msIlluminanceMeasurement']);
154
+ await reporting.bind(endpoint3, coordinatorEndpoint, ['msTemperatureMeasurement', 'msRelativeHumidity']);
155
+ } else {
156
+ await reporting.bind(endpoint3, coordinatorEndpoint, ['msIlluminanceMeasurement']);
157
+ await reporting.bind(endpoint2, coordinatorEndpoint, ['msTemperatureMeasurement', 'msRelativeHumidity']);
158
+ }
154
159
  device.powerSource = 'Battery';
155
160
  device.save();
156
161
  },
@@ -766,14 +766,28 @@ module.exports = [
766
766
  model: 'EER50000',
767
767
  vendor: 'Schneider Electric',
768
768
  description: 'Wiser H-Relay (HACT)',
769
- fromZigbee: [fz.ignore_basic_report, fz.ignore_genOta, fz.ignore_zclversion_read, fz.wiser_smart_thermostat],
770
- toZigbee: [tz.thermostat_local_temperature, tz.thermostat_occupied_heating_setpoint],
771
- exposes: [exposes.climate().withSetpoint('occupied_heating_setpoint', 7, 30, 0.5).withLocalTemperature()],
769
+ fromZigbee: [fz.ignore_basic_report, fz.ignore_genOta, fz.ignore_zclversion_read, fz.wiser_smart_thermostat, fz.metering,
770
+ fz.identify],
771
+ toZigbee: [tz.thermostat_local_temperature, tz.thermostat_occupied_heating_setpoint, tz.wiser_fip_setting,
772
+ tz.wiser_hact_config, tz.wiser_zone_mode, tz.identify],
773
+ exposes: [exposes.climate().withSetpoint('occupied_heating_setpoint', 7, 30, 0.5).withLocalTemperature(),
774
+ e.power(), e.energy(),
775
+ exposes.enum('identify', ea.SET, ['0', '30', '60', '600', '900']).withDescription('Flash green tag for x seconds'),
776
+ exposes.enum('zone_mode',
777
+ ea.ALL, ['manual', 'schedule', 'energy_saver', 'holiday']),
778
+ exposes.enum('hact_config',
779
+ ea.ALL, ['unconfigured', 'setpoint_switch', 'setpoint_fip', 'fip_fip'])
780
+ .withDescription('Input (command) and output (control) behavior of actuator'),
781
+ exposes.enum('fip_setting',
782
+ ea.ALL, ['comfort', 'comfort_-1', 'comfort_-2', 'energy_saving', 'frost_protection', 'off'])
783
+ .withDescription('Output signal when operating in fil pilote mode (fip_fip)')],
772
784
  configure: async (device, coordinatorEndpoint, logger) => {
773
785
  const endpoint = device.getEndpoint(11);
774
- const binds = ['genBasic', 'genPowerCfg', 'hvacThermostat', 'msTemperatureMeasurement'];
786
+ const binds = ['genBasic', 'genPowerCfg', 'hvacThermostat', 'msTemperatureMeasurement', 'seMetering'];
775
787
  await reporting.bind(endpoint, coordinatorEndpoint, binds);
776
788
  await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
789
+ await reporting.readMeteringMultiplierDivisor(endpoint);
790
+ await reporting.instantaneousDemand(endpoint);
777
791
  },
778
792
  },
779
793
  {
package/devices/sonoff.js CHANGED
@@ -78,7 +78,7 @@ module.exports = [
78
78
  model: 'ZBMINI',
79
79
  vendor: 'SONOFF',
80
80
  description: 'Zigbee two way smart switch',
81
- extend: extend.switch(),
81
+ extend: extend.switch({disablePowerOnBehavior: true}),
82
82
  configure: async (device, coordinatorEndpoint, logger) => {
83
83
  // Has Unknown power source: https://github.com/Koenkk/zigbee2mqtt/issues/5362, force it here.
84
84
  device.powerSource = 'Mains (single phase)';
package/devices/tuya.js CHANGED
@@ -1084,7 +1084,6 @@ module.exports = [
1084
1084
  {modelID: 'TS0202', manufacturerName: '_TYZB01_71kfvvma'},
1085
1085
  {modelID: 'TS0202', manufacturerName: '_TZE200_bq5c8xfe'},
1086
1086
  {modelID: 'TS0202', manufacturerName: '_TYZB01_dl7cejts'},
1087
- {modelID: 'TS0202', manufacturerName: '_TYZB01_qjqgmqxr'},
1088
1087
  {modelID: 'TS0202', manufacturerName: '_TZ3000_nss8amz9'},
1089
1088
  {modelID: 'TS0202', manufacturerName: '_TZ3000_mmtwjmaq'},
1090
1089
  {modelID: 'TS0202', manufacturerName: '_TYZB01_zwvaj5wy'},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "15.0.18",
3
+ "version": "15.0.19",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [