zigbee-herdsman-converters 14.0.508 → 14.0.511

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.
@@ -1693,10 +1693,10 @@ const converters = {
1693
1693
  result.temperature_display = lookup[data[0x1008]];
1694
1694
  }
1695
1695
  if (data.hasOwnProperty(0x1009)) { // WindowOpenCheck
1696
- result.window_open_check = data[0x1009];
1696
+ result.window_open_check = data[0x1009] / 2;
1697
1697
  }
1698
1698
  if (data.hasOwnProperty(0x100A)) { // Hysterersis
1699
- result.hysterersis = data[0x100A];
1699
+ result.hysterersis = precisionRound(data[0x100A], 2) / 10;
1700
1700
  }
1701
1701
  if (data.hasOwnProperty(0x100B)) { // DisplayAutoOffEnable
1702
1702
  const lookup = {0: 'enable', 1: 'disable'};
@@ -5408,7 +5408,7 @@ const converters = {
5408
5408
  payload.device_mode = 'unknown';
5409
5409
  }
5410
5410
  }
5411
- if (msg.data.hasOwnProperty('1')) payload.permanent_led = msg.data['1'] === 0x00 ? 'OFF' : 'ON';
5411
+ if (msg.data.hasOwnProperty('1')) payload.led_when_off = msg.data['1'] === 0x00 ? 'OFF' : 'ON';
5412
5412
  if (msg.data.hasOwnProperty('2')) payload.led_when_on = msg.data['2'] === 0x00 ? 'OFF' : 'ON';
5413
5413
  return payload;
5414
5414
  },
@@ -7191,6 +7191,22 @@ const converters = {
7191
7191
  }
7192
7192
  },
7193
7193
  },
7194
+ tuya_relay_din_led_indicator: {
7195
+ cluster: 'genOnOff',
7196
+ type: ['attributeReport', 'readResponse'],
7197
+ convert: (model, msg, publish, options, meta) => {
7198
+ const property = 0x8001;
7199
+
7200
+ if (msg.data.hasOwnProperty(property)) {
7201
+ const dict = {0x00: 'off', 0x01: 'on_off', 0x02: 'off_on'};
7202
+ const value = msg.data[property];
7203
+
7204
+ if (dict.hasOwnProperty(value)) {
7205
+ return {[postfixWithEndpointName('indicator_mode', msg, model)]: dict[value]};
7206
+ }
7207
+ }
7208
+ },
7209
+ },
7194
7210
  ias_keypad: {
7195
7211
  cluster: 'ssIasZone',
7196
7212
  type: 'commandStatusChangeNotification',
@@ -2531,12 +2531,24 @@ const converters = {
2531
2531
  return {state: {power_outage_memory: value}};
2532
2532
  },
2533
2533
  },
2534
+ tuya_relay_din_led_indicator: {
2535
+ key: ['indicator_mode'],
2536
+ convertSet: async (entity, key, value, meta) => {
2537
+ value = value.toLowerCase();
2538
+ const lookup = {'off': 0x00, 'on_off': 0x01, 'off_on': 0x02};
2539
+ utils.validateValue(value, Object.keys(lookup));
2540
+ const payload = lookup[value];
2541
+ await entity.write('genOnOff', {0x8001: {value: payload, type: 0x30}});
2542
+ return {state: {indicator_mode: value}};
2543
+ },
2544
+ },
2534
2545
  kmpcil_res005_on_off: {
2535
2546
  key: ['state'],
2536
2547
  convertSet: async (entity, key, value, meta) => {
2537
2548
  const options = {disableDefaultResponse: true};
2549
+ value = value.toLowerCase();
2538
2550
  utils.validateValue(value, ['toggle', 'off', 'on']);
2539
- if (value.toLowerCase() === 'toggle') {
2551
+ if (value === 'toggle') {
2540
2552
  if (!meta.state.hasOwnProperty('state')) {
2541
2553
  throw new Error('Cannot toggle, state not known yet');
2542
2554
  } else {
@@ -3062,10 +3074,10 @@ const converters = {
3062
3074
  const payload = {0x1008: {value: lookup[value], type: herdsman.Zcl.DataType.enum8}};
3063
3075
  await entity.write('hvacThermostat', payload, manufacturerOptions.sunricher);
3064
3076
  } else if (key==='window_open_check') {
3065
- const payload = {0x1009: {value: Math.round(value * 10), type: 0x20}};
3077
+ const payload = {0x1009: {value: value * 2, type: 0x20}};
3066
3078
  await entity.write('hvacThermostat', payload, manufacturerOptions.sunricher);
3067
3079
  } else if (key==='hysterersis') {
3068
- const payload = {0x100A: {value: Math.round(value * 10), type: 0x20}};
3080
+ const payload = {0x100A: {value: value* 10, type: 0x20}};
3069
3081
  await entity.write('hvacThermostat', payload, manufacturerOptions.sunricher);
3070
3082
  } else if (key==='display_auto_off_enabled') {
3071
3083
  const lookup = {'enable': 0, 'disabled': 1};
@@ -4839,13 +4851,13 @@ const converters = {
4839
4851
  },
4840
4852
  legrand_settingAlwaysEnableLed: {
4841
4853
  // connected power outlet is on attribute 2 and not 1
4842
- key: ['permanent_led'],
4854
+ key: ['led_when_off'],
4843
4855
  convertSet: async (entity, key, value, meta) => {
4844
4856
  // enable or disable the LED (blue) when permitJoin=false (LED off)
4845
4857
  const enableLedIfOn = value === 'ON' || (value === 'OFF' ? false : !!value);
4846
4858
  const payload = {1: {value: enableLedIfOn, type: 16}};
4847
4859
  await entity.write('manuSpecificLegrandDevices', payload, manufacturerOptions.legrand);
4848
- return {state: {'permanent_led': value}};
4860
+ return {state: {'led_when_off': value}};
4849
4861
  },
4850
4862
  convertGet: async (entity, key, meta) => {
4851
4863
  await entity.read('manuSpecificLegrandDevices', [0x0001], manufacturerOptions.legrand);
@@ -18,6 +18,17 @@ const tzLocal = {
18
18
  return {state: {backlight_led: state.toUpperCase()}};
19
19
  },
20
20
  },
21
+ backlight_brightness: {
22
+ key: ['brightness'],
23
+ options: [exposes.options.transition()],
24
+ convertSet: async (entity, key, value, meta) => {
25
+ await entity.command('genLevelCtrl', 'moveToLevel', {level: value, transtime: 0}, utils.getOptions(meta.mapped, entity));
26
+ return {state: {brightness: value}};
27
+ },
28
+ convertGet: async (entity, key, meta) => {
29
+ await entity.read('genLevelCtrl', ['currentLevel']);
30
+ },
31
+ },
21
32
  };
22
33
 
23
34
  const disableBatteryRotaryDimmerReporting = async (endpoint) => {
@@ -181,12 +192,12 @@ module.exports = [
181
192
  model: 'AU-A1ZBDSS',
182
193
  vendor: 'Aurora Lighting',
183
194
  description: 'Double smart socket UK',
184
- fromZigbee: [fz.identify, fz.on_off, fz.electrical_measurement],
195
+ fromZigbee: [fz.identify, fz.on_off, fz.electrical_measurement, fz.brightness],
185
196
  exposes: [e.switch().withEndpoint('left'), e.switch().withEndpoint('right'),
186
197
  e.power().withEndpoint('left'), e.power().withEndpoint('right'),
187
198
  exposes.numeric('brightness', ea.ALL).withValueMin(0).withValueMax(254)
188
199
  .withDescription('Brightness of this backlight LED')],
189
- toZigbee: [tz.light_onoff_brightness],
200
+ toZigbee: [tzLocal.backlight_brightness, tz.on_off],
190
201
  meta: {multiEndpoint: true},
191
202
  endpoint: (device) => {
192
203
  return {'left': 1, 'right': 2};
package/devices/awox.js CHANGED
@@ -67,6 +67,7 @@ module.exports = [
67
67
  vendor: 'AwoX',
68
68
  description: 'LED white',
69
69
  extend: extend.light_onoff_brightness(),
70
+ whiteLabel: [{vendor: 'EGLO', model: '12229'}],
70
71
  },
71
72
  {
72
73
  fingerprint: [
@@ -248,6 +249,7 @@ module.exports = [
248
249
  vendor: 'AwoX',
249
250
  description: 'LED light with color temperature',
250
251
  extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
252
+ whiteLabel: [{vendor: 'EGLO', model: '12239'}],
251
253
  },
252
254
  {
253
255
  fingerprint: [
@@ -16,7 +16,7 @@ module.exports = [
16
16
  toZigbee: [tz.on_off, tz.legrand_settingAlwaysEnableLed, tz.legrand_settingEnableLedIfOn, tz.legrand_identify],
17
17
  exposes: [
18
18
  e.switch(), e.action(['identify', 'on', 'off']),
19
- exposes.binary('permanent_led', ea.ALL, 'ON', 'OFF').withDescription('Enable or disable the permanent blue LED'),
19
+ exposes.binary('led_when_off', ea.ALL, 'ON', 'OFF').withDescription('Enables the LED when the light is off'),
20
20
  exposes.binary('led_when_on', ea.ALL, 'ON', 'OFF').withDescription('Enables the LED when the light is on'),
21
21
  ],
22
22
  configure: async (device, coordinatorEndpoint, logger) => {
@@ -39,7 +39,7 @@ module.exports = [
39
39
  exposes.numeric('ballast_maximum_level', ea.ALL).withValueMin(1).withValueMax(254)
40
40
  .withDescription('Specifies the maximum brightness value'),
41
41
  exposes.binary('device_mode', ea.ALL, 'dimmer_on', 'dimmer_off').withDescription('Allow the device to change brightness'),
42
- exposes.binary('permanent_led', ea.ALL, 'ON', 'OFF').withDescription('Enable or disable the permanent blue LED'),
42
+ exposes.binary('led_when_off', ea.ALL, 'ON', 'OFF').withDescription('Enables the LED when the light is off'),
43
43
  exposes.binary('led_when_on', ea.ALL, 'ON', 'OFF').withDescription('Enables the LED when the light is on')],
44
44
  configure: async (device, coordinatorEndpoint, logger) => {
45
45
  await extend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
@@ -315,6 +315,13 @@ module.exports = [
315
315
  extend: gledoptoExtend.light_onoff_brightness_colortemp_color(),
316
316
  meta: {disableDefaultResponse: true},
317
317
  },
318
+ {
319
+ zigbeeModel: ['GL-B-002P'],
320
+ model: 'GL-B-002P',
321
+ vendor: 'Gledopto',
322
+ description: 'Zigbee smart filament LED bulb',
323
+ extend: extend.light_onoff_brightness_colortemp_color({colorTempRange: [158, 495]}),
324
+ },
318
325
  {
319
326
  zigbeeModel: ['GL-MC-001P'],
320
327
  model: 'GL-MC-001P',
package/devices/heiman.js CHANGED
@@ -287,7 +287,7 @@ module.exports = [
287
287
  description: 'Smart motion sensor',
288
288
  fromZigbee: [fz.ias_occupancy_alarm_1, fz.battery],
289
289
  toZigbee: [],
290
- exposes: [e.occupancy(), e.battery_low(), e.battery(), e.battery_voltage()],
290
+ exposes: [e.occupancy(), e.battery_low(), e.battery(), e.battery_voltage(), e.tamper()],
291
291
  meta: {battery: {voltageToPercentage: '3V_2500'}},
292
292
  configure: async (device, coordinatorEndpoint, logger) => {
293
293
  const endpoint = device.getEndpoint(1);
package/devices/ikea.js CHANGED
@@ -13,11 +13,15 @@ const {
13
13
  calibrateAndPrecisionRoundOptions, postfixWithEndpointName, getMetaValue,
14
14
  } = require('../lib/utils');
15
15
 
16
- const bulbOnEvent = async (type, data, device) => {
16
+ const bulbOnEvent = async (type, data, device, options, state) => {
17
17
  /**
18
18
  * IKEA bulbs lose their configured reportings when losing power.
19
19
  * A deviceAnnounce indicates they are powered on again.
20
20
  * Reconfigure the configured reoprting here.
21
+ *
22
+ * Additionally some other information is lost like
23
+ * color_options.execute_if_off. We also restore these.
24
+ *
21
25
  * NOTE: binds are not lost so rebinding is not needed!
22
26
  */
23
27
  if (type === 'deviceAnnounce') {
@@ -29,6 +33,12 @@ const bulbOnEvent = async (type, data, device) => {
29
33
  }]);
30
34
  }
31
35
  }
36
+
37
+ // NOTE: execute_if_off default is false
38
+ // we only restore if true, to save unneeded network writes
39
+ if (state.color_options.execute_if_off === true) {
40
+ device.endpoints[0].write('lightingColorCtrl', {'options': 1});
41
+ }
32
42
  }
33
43
  };
34
44
 
package/devices/immax.js CHANGED
@@ -66,16 +66,18 @@ module.exports = [
66
66
  model: '07048L',
67
67
  vendor: 'Immax',
68
68
  description: 'NEO SMART plug',
69
- fromZigbee: [fz.on_off, fz.electrical_measurement],
69
+ fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering],
70
70
  toZigbee: [tz.on_off],
71
71
  configure: async (device, coordinatorEndpoint, logger) => {
72
72
  const endpoint = device.getEndpoint(1);
73
- await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement']);
73
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering']);
74
74
  await reporting.onOff(endpoint);
75
75
  await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
76
+ await reporting.readMeteringMultiplierDivisor(endpoint);
77
+ await reporting.currentSummDelivered(endpoint);
76
78
  await reporting.activePower(endpoint);
77
79
  },
78
- exposes: [e.switch(), e.power()],
80
+ exposes: [e.switch(), e.power(), e.energy()],
79
81
  },
80
82
  {
81
83
  zigbeeModel: ['losfena'],
@@ -41,7 +41,8 @@ module.exports = [
41
41
  exposes: [e.cover_position().setAccess('state', ea.ALL), e.temperature(), e.battery(), e.pressure()],
42
42
  },
43
43
  {
44
- zigbeeModel: ['SV02-410-MP-1.3', 'SV02-412-MP-1.3', 'SV02-610-MP-1.3', 'SV02-612-MP-1.3', 'SV02-410-MP-1.0', 'SV02-410-MP-1.2'],
44
+ zigbeeModel: ['SV02-410-MP-1.3', 'SV02-412-MP-1.3', 'SV02-610-MP-1.3', 'SV02-612-MP-1.2', 'SV02-612-MP-1.3', 'SV02-410-MP-1.0',
45
+ 'SV02-410-MP-1.2'],
45
46
  model: 'SV02',
46
47
  vendor: 'Keen Home',
47
48
  description: 'Smart vent',
@@ -182,7 +182,7 @@ module.exports = [
182
182
  exposes.numeric('ballast_maximum_level', ea.ALL).withValueMin(1).withValueMax(254)
183
183
  .withDescription('Specifies the maximum brightness value'),
184
184
  exposes.binary('device_mode', ea.ALL, 'dimmer_on', 'dimmer_off').withDescription('Allow the device to change brightness'),
185
- exposes.binary('permanent_led', ea.ALL, 'ON', 'OFF').withDescription('Enable or disable the permanent blue LED'),
185
+ exposes.binary('led_when_off', ea.ALL, 'ON', 'OFF').withDescription('Enable the LED when the light is off'),
186
186
  exposes.binary('led_when_on', ea.ALL, 'ON', 'OFF').withDescription('Enables the LED when the light is on')],
187
187
  configure: async (device, coordinatorEndpoint, logger) => {
188
188
  await extend.light_onoff_brightness().configure(device, coordinatorEndpoint, logger);
@@ -328,7 +328,7 @@ module.exports = [
328
328
  toZigbee: [tz.on_off, tz.legrand_settingAlwaysEnableLed, tz.legrand_settingEnableLedIfOn],
329
329
  exposes: [e.switch().withEndpoint('left'),
330
330
  e.switch().withEndpoint('right'),
331
- exposes.binary('permanent_led', ea.ALL, 'ON', 'OFF').withDescription('Enable or disable the permanent blue LED'),
331
+ exposes.binary('led_when_off', ea.ALL, 'ON', 'OFF').withDescription('Enable the LED when the light is off'),
332
332
  exposes.binary('led_when_on', ea.ALL, 'ON', 'OFF').withDescription('Enables the LED when the light is on')],
333
333
  meta: {multiEndpoint: true},
334
334
  configure: async (device, coordinatorEndpoint, logger) => {
package/devices/namron.js CHANGED
@@ -276,7 +276,7 @@ module.exports = [
276
276
  exposes.climate()
277
277
  .withSetpoint('occupied_heating_setpoint', 0, 40, 0.1)
278
278
  .withLocalTemperature()
279
- .withLocalTemperatureCalibration(-30, 30, 0.1)
279
+ .withLocalTemperatureCalibration(-3, 3, 0.1)
280
280
  .withSystemMode(['off', 'auto', 'heat'])
281
281
  .withRunningState(['idle', 'heat']),
282
282
  exposes.binary('away_mode', ea.ALL, 'ON', 'OFF')
@@ -308,16 +308,16 @@ module.exports = [
308
308
  .withDescription('The temperature on the display. Default: Room Temperature.'),
309
309
  exposes.numeric('window_open_check', ea.ALL)
310
310
  .withUnit('°C')
311
- .withValueMin(3).withValueMax(8).withValueStep(0.5)
312
- .withDescription('The threshold to detect window open, between 3 and 8 in 0.5 °C. Default: 0 (disabled).'),
311
+ .withValueMin(1.5).withValueMax(4).withValueStep(0.5)
312
+ .withDescription('The threshold to detect window open, between 1.5 and 4 in 0.5 °C. Default: 0 (disabled).'),
313
313
  exposes.numeric('hysterersis', ea.ALL)
314
314
  .withUnit('°C')
315
- .withValueMin(5).withValueMax(20).withValueStep(0.1)
316
- .withDescription('Hysteresis setting, between 5 and 20 in 0.1 °C. Default: 5.'),
315
+ .withValueMin(0.5).withValueMax(2).withValueStep(0.1)
316
+ .withDescription('Hysteresis setting, between 0.5 and 2 in 0.1 °C. Default: 0.5.'),
317
317
  exposes.enum('display_auto_off_enabled', ea.ALL, ['enable', 'disabled']),
318
318
  exposes.numeric('alarm_airtemp_overvalue', ea.ALL)
319
319
  .withUnit('°C')
320
- .withValueMin(20).withValueMax(60).withValueStep(1)
320
+ .withValueMin(20).withValueMax(60)
321
321
  .withDescription('Room temperature alarm threshold, between 20 and 60 in °C. 0 means disabled. Default: 45.'),
322
322
  ],
323
323
  configure: async (device, coordinatorEndpoint, logger) => {
@@ -81,6 +81,15 @@ module.exports = [
81
81
  extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
82
82
  ota: ota.zigbeeOTA,
83
83
  },
84
+ {
85
+ zigbeeModel: ['929003045501_01', '929003045501_02', '929003045501_03'],
86
+ model: '929003045501',
87
+ vendor: 'Philips',
88
+ description: 'Hue Centura recessed spotlight white and color ambiance GU10 (black)',
89
+ meta: {turnsOffAtBrightness1: true},
90
+ extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
91
+ ota: ota.zigbeeOTA,
92
+ },
84
93
  {
85
94
  zigbeeModel: ['929003047501'],
86
95
  model: '929003047501',
@@ -2258,6 +2267,20 @@ module.exports = [
2258
2267
  },
2259
2268
  ota: ota.zigbeeOTA,
2260
2269
  },
2270
+ {
2271
+ zigbeeModel: ['LOM011'],
2272
+ model: '8719514342361',
2273
+ vendor: 'Philips',
2274
+ description: 'Hue smart plug - AU',
2275
+ extend: extend.switch(),
2276
+ toZigbee: [tz.on_off].concat([tz.hue_power_on_behavior, tz.hue_power_on_error]),
2277
+ configure: async (device, coordinatorEndpoint, logger) => {
2278
+ const endpoint = device.getEndpoint(11);
2279
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
2280
+ await reporting.onOff(endpoint);
2281
+ },
2282
+ ota: ota.zigbeeOTA,
2283
+ },
2261
2284
  {
2262
2285
  zigbeeModel: ['LOM006'],
2263
2286
  model: '9290024426',
package/devices/rtx.js CHANGED
@@ -6,7 +6,8 @@ const ea = exposes.access;
6
6
 
7
7
  module.exports = [
8
8
  {
9
- fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_akjefhj5'}, {modelID: 'TS0601', manufacturerName: '_TZE200_2wg5qrjy'}],
9
+ fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_akjefhj5'}, {modelID: 'TS0601', manufacturerName: '_TZE200_2wg5qrjy'},
10
+ {modelID: 'TS0601', manufacturerName: '_TZE200_81isopgh'}],
10
11
  model: 'ZVG1',
11
12
  vendor: 'RTX',
12
13
  description: 'Zigbee smart water valve',
package/devices/tuya.js CHANGED
@@ -1929,8 +1929,9 @@ module.exports = [
1929
1929
  model: 'TS011F_din_smart_relay',
1930
1930
  description: 'Din smart relay (with power monitoring)',
1931
1931
  vendor: 'TuYa',
1932
- fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, fz.ignore_basic_report, fz.tuya_switch_power_outage_memory],
1933
- toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory],
1932
+ fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, fz.ignore_basic_report, fz.tuya_switch_power_outage_memory,
1933
+ fz.tuya_relay_din_led_indicator],
1934
+ toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory, tz.tuya_relay_din_led_indicator],
1934
1935
  whiteLabel: [{vendor: 'MatSee Plus', model: 'ATMS1602Z'}],
1935
1936
  configure: async (device, coordinatorEndpoint, logger) => {
1936
1937
  const endpoint = device.getEndpoint(1);
@@ -1945,15 +1946,17 @@ module.exports = [
1945
1946
  },
1946
1947
  exposes: [e.switch(), e.power(), e.current(), e.voltage().withAccess(ea.STATE),
1947
1948
  e.energy(), exposes.enum('power_outage_memory', ea.STATE_SET, ['on', 'off', 'restore'])
1948
- .withDescription('Recover state after power outage')],
1949
+ .withDescription('Recover state after power outage'),
1950
+ exposes.enum('indicator_mode', ea.STATE_SET, ['off', 'on_off', 'off_on'])
1951
+ .withDescription('Relay LED indicator mode')],
1949
1952
  },
1950
1953
  {
1951
1954
  fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_7issjl2q'}],
1952
1955
  model: 'ATMS1601Z',
1953
1956
  description: 'Din smart relay (without power monitoring)',
1954
1957
  vendor: 'TuYa',
1955
- fromZigbee: [fz.on_off, fz.ignore_basic_report, fz.tuya_switch_power_outage_memory],
1956
- toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory],
1958
+ fromZigbee: [fz.on_off, fz.ignore_basic_report, fz.tuya_switch_power_outage_memory, fz.tuya_relay_din_led_indicator],
1959
+ toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory, tz.tuya_relay_din_led_indicator],
1957
1960
  configure: async (device, coordinatorEndpoint, logger) => {
1958
1961
  const endpoint = device.getEndpoint(1);
1959
1962
  await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
@@ -1961,7 +1964,9 @@ module.exports = [
1961
1964
  },
1962
1965
  exposes: [e.switch(),
1963
1966
  exposes.enum('power_outage_memory', ea.STATE_SET, ['on', 'off', 'restore'])
1964
- .withDescription('Recover state after power outage')],
1967
+ .withDescription('Recover state after power outage'),
1968
+ exposes.enum('indicator_mode', ea.STATE_SET, ['off', 'on_off', 'off_on'])
1969
+ .withDescription('Relay LED indicator mode')],
1965
1970
  },
1966
1971
  {
1967
1972
  fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_nklqjk62'}],
@@ -2335,4 +2340,14 @@ module.exports = [
2335
2340
  .withDescription('Alarm humidity min'),
2336
2341
  ],
2337
2342
  },
2343
+ {
2344
+ fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_qoy0ekbd'}],
2345
+ model: 'CX-0726',
2346
+ vendor: 'TuYa',
2347
+ description: 'Temperature & humidity LCD sensor',
2348
+ fromZigbee: [fz.tuya_temperature_humidity_sensor, fz.ignore_tuya_set_time],
2349
+ toZigbee: [],
2350
+ onEvent: tuya.onEventSetLocalTime,
2351
+ exposes: [e.temperature(), e.humidity(), e.battery()],
2352
+ },
2338
2353
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.508",
3
+ "version": "14.0.511",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [