zigbee-herdsman-converters 14.0.328 → 14.0.332

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.
@@ -3610,7 +3610,7 @@ const converters = {
3610
3610
  case tuya.dataPoints.tvFrostDetection:
3611
3611
  return {frost_protection: value ? 'ON' : 'OFF'};
3612
3612
  case tuya.dataPoints.tvWindowDetection:
3613
- return {window_detection: value ? 'ON' : 'OFF'};
3613
+ return {open_window: value ? 'ON' : 'OFF'};
3614
3614
  case tuya.dataPoints.tvHeatingStop:
3615
3615
  return {heating_stop: value ? 'ON' : 'OFF'};
3616
3616
  case tuya.dataPoints.tvLocalTemp:
@@ -3841,7 +3841,7 @@ const converters = {
3841
3841
  return {'local_temperature_calibration': ( value/10 ).toFixed(1)};
3842
3842
  case tuya.dataPoints.haozeeValvePosition:
3843
3843
  // valve position
3844
- return {'position': value};
3844
+ return {'position': ( value/10 ).toFixed(1)};
3845
3845
  case tuya.dataPoints.haozeeMinTemp:
3846
3846
  // lower limit temperature
3847
3847
  return {'min_temperature': ( value/10 ).toFixed(1)};
@@ -2810,11 +2810,10 @@ const converters = {
2810
2810
  },
2811
2811
  tvtwo_thermostat: {
2812
2812
  key: [
2813
- 'window_detection', 'frost_protection', 'child_lock',
2814
- 'current_heating_setpoint', 'local_temperature_calibration',
2815
- 'holiday_temperature', 'comfort_temperature', 'eco_temperature',
2816
- 'open_window_temperature', 'heating_stop', 'preset', 'boost_timeset_countdown',
2817
- 'holiday_mode_date', 'working_day', 'week_schedule', 'week', 'online',
2813
+ 'child_lock', 'open_window', 'open_window_temperature', 'frost_protection', 'heating_stop',
2814
+ 'current_heating_setpoint', 'local_temperature_calibration', 'preset', 'boost_timeset_countdown',
2815
+ 'holiday_mode_date', 'holiday_temperature', 'comfort_temperature', 'eco_temperature',
2816
+ 'working_day', 'week_schedule', 'week', 'online',
2818
2817
  ],
2819
2818
  convertSet: async (entity, key, value, meta) => {
2820
2819
  switch (key) {
@@ -2822,13 +2821,23 @@ const converters = {
2822
2821
  const presetLookup = {'auto': 0, 'manual': 1, 'holiday': 3};
2823
2822
  await tuya.sendDataPointEnum(entity, tuya.dataPoints.tvMode, presetLookup[value]);
2824
2823
  return {state: {preset: value}};}
2825
- case 'frost_protection':
2826
- await tuya.sendDataPointBool(entity, tuya.dataPoints.tvFrostDetection, value === 'ON');
2827
- break;
2828
2824
  case 'heating_stop':
2829
- await tuya.sendDataPointBool(entity, tuya.dataPoints.tvHeatingStop, value === 'ON');
2825
+ if (value == 'ON') {
2826
+ await tuya.sendDataPointBool(entity, tuya.dataPoints.tvHeatingStop, 1);
2827
+ } else {
2828
+ await tuya.sendDataPointBool(entity, tuya.dataPoints.tvHeatingStop, 0);
2829
+ await tuya.sendDataPointEnum(entity, tuya.dataPoints.tvMode, 1 /* manual */);
2830
+ }
2830
2831
  break;
2831
- case 'window_detection':
2832
+ case 'frost_protection':
2833
+ if (value == 'ON') {
2834
+ await tuya.sendDataPointBool(entity, tuya.dataPoints.tvFrostDetection, 1);
2835
+ } else {
2836
+ await tuya.sendDataPointBool(entity, tuya.dataPoints.tvFrostDetection, 0);
2837
+ await tuya.sendDataPointEnum(entity, tuya.dataPoints.tvMode, 1 /* manual */);
2838
+ }
2839
+ break;
2840
+ case 'open_window':
2832
2841
  await tuya.sendDataPointBool(entity, tuya.dataPoints.tvWindowDetection, value === 'ON');
2833
2842
  break;
2834
2843
  case 'child_lock':
@@ -2841,6 +2850,7 @@ const converters = {
2841
2850
  break;
2842
2851
  case 'current_heating_setpoint':
2843
2852
  await tuya.sendDataPointValue(entity, tuya.dataPoints.tvHeatingSetpoint, value * 10);
2853
+ await tuya.sendDataPointEnum(entity, tuya.dataPoints.tvMode, 1 /* manual */);
2844
2854
  break;
2845
2855
  case 'holiday_temperature':
2846
2856
  await tuya.sendDataPointValue(entity, tuya.dataPoints.tvHolidayTemp, value * 10);
@@ -2859,7 +2869,7 @@ const converters = {
2859
2869
  await tuya.sendDataPointValue(entity, tuya.dataPoints.tvOpenWindowTemp, value * 10);
2860
2870
  break;
2861
2871
  case 'holiday_mode_date':
2862
- await tuya.sendDataPointBitmap(entity, tuya.dataPoints.tvWorkingDayTimetvHolidayMode, value);
2872
+ await tuya.sendDataPointBitmap(entity, tuya.dataPoints.tvHolidayMode, value);
2863
2873
  break;
2864
2874
 
2865
2875
  case 'online':
package/devices/girier.js CHANGED
@@ -6,7 +6,10 @@ const extend = require('../lib/extend');
6
6
 
7
7
  module.exports = [
8
8
  {
9
- fingerprint: [{modelID: 'TS0001', manufacturerName: '_TZ3000_majwnphg'}],
9
+ fingerprint: [
10
+ {modelID: 'TS0001', manufacturerName: '_TZ3000_majwnphg'},
11
+ {modelID: 'TS0001', manufacturerName: '_TZ3000_6axxqqi2'},
12
+ ],
10
13
  model: 'JR-ZDS01',
11
14
  vendor: 'Girier',
12
15
  description: '1 gang mini switch',
@@ -464,7 +464,7 @@ module.exports = [
464
464
  vendor: 'Gledopto',
465
465
  ota: ota.zigbeeOTA,
466
466
  description: 'Zigbee 12W Downlight RGB+CCT (pro)',
467
- extend: gledoptoExtend.light_onoff_brightness_colortemp_color(),
467
+ extend: gledoptoExtend.light_onoff_brightness_colortemp_color({colorTempRange: [158, 495]}),
468
468
  },
469
469
  {
470
470
  zigbeeModel: ['GL-D-006P'],
package/devices/ikea.js CHANGED
@@ -354,7 +354,7 @@ module.exports = [
354
354
  model: 'LED1624G9',
355
355
  vendor: 'IKEA',
356
356
  description: 'TRADFRI LED bulb E14/E26/E27 600 lumen, dimmable, color, opal white',
357
- extend: tradfriExtend.light_onoff_brightness_colortemp_color(),
357
+ extend: tradfriExtend.light_onoff_brightness_colortemp_color({colorTempRange: [250, 454]}),
358
358
  meta: {supportsHueAndSaturation: false},
359
359
  },
360
360
  {
@@ -376,7 +376,7 @@ module.exports = [
376
376
  model: 'LED1732G11',
377
377
  vendor: 'IKEA',
378
378
  description: 'TRADFRI LED bulb E27 1000 lumen, dimmable, white spectrum, opal white',
379
- extend: tradfriExtend.light_onoff_brightness_colortemp(),
379
+ extend: tradfriExtend.light_onoff_brightness_colortemp({colorTempRange: [250, 454]}),
380
380
  },
381
381
  {
382
382
  zigbeeModel: ['TRADFRI bulb E27 WW 806lm', 'TRADFRI bulb E26 WW 806lm'],
@@ -753,11 +753,11 @@ module.exports = [
753
753
  extend: tradfriExtend.light_onoff_brightness_colortemp(),
754
754
  },
755
755
  {
756
- zigbeeModel: ['TRADFRI bulb GU10 CWS 345lm'],
756
+ zigbeeModel: ['TRADFRI bulb GU10 CWS 345lm', 'TRADFRI bulb GU10 CWS 380lm'],
757
757
  model: 'LED1923R5',
758
758
  vendor: 'IKEA',
759
759
  description: 'TRADFRI LED bulb GU10 345 lumen, dimmable, white spectrum, color spectrum',
760
- extend: tradfriExtend.light_onoff_brightness_colortemp_color(),
760
+ extend: tradfriExtend.light_onoff_brightness_colortemp_color({colorTempRange: [250, 454]}),
761
761
  },
762
762
  {
763
763
  zigbeeModel: ['TRADFRI bulb E14 CWS 470lm', 'TRADFRI bulb E12 CWS 450lm'],
package/devices/innr.js CHANGED
@@ -220,7 +220,7 @@ module.exports = [
220
220
  model: 'RS 228 T',
221
221
  vendor: 'Innr',
222
222
  description: 'GU10 spot 350 lm, dimmable, white spectrum',
223
- extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 555]}),
223
+ extend: extend.light_onoff_brightness_colortemp({colorTempRange: [200, 454]}),
224
224
  meta: {applyRedFix: true, turnsOffAtBrightness1: true},
225
225
  },
226
226
  {
@@ -31,7 +31,7 @@ module.exports = [
31
31
  model: 'AC25697',
32
32
  vendor: 'LEDVANCE',
33
33
  description: 'SMART+ CLASSIC MULTICOLOUR 60 10W E27',
34
- extend: extend.ledvance.light_onoff_brightness_colortemp_color(),
34
+ extend: extend.ledvance.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
35
35
  ota: ota.ledvance,
36
36
  },
37
37
  {
package/devices/lidl.js CHANGED
@@ -553,7 +553,7 @@ module.exports = [
553
553
  model: 'HG06492B',
554
554
  vendor: 'Lidl',
555
555
  description: 'Livarno Lux E14 candle CCT',
556
- ...extend.light_onoff_brightness_colortemp({disableColorTempStartup: true}),
556
+ ...extend.light_onoff_brightness_colortemp({disableColorTempStartup: true, colorTempRange: [153, 500]}),
557
557
  configure: async (device, coordinatorEndpoint, logger) => {
558
558
  device.getEndpoint(1).saveClusterAttributeKeyValue('lightingColorCtrl', {colorCapabilities: 16});
559
559
  },
@@ -624,7 +624,7 @@ module.exports = [
624
624
  fingerprint: [{modelID: 'TS0501A', manufacturerName: '_TZ3000_nosnx7im'}],
625
625
  model: 'HG06463B',
626
626
  vendor: 'Lidl',
627
- description: 'Livarno Lux E27 G30 filament bulb',
627
+ description: 'Livarno Lux E27 G95 filament bulb',
628
628
  extend: extend.light_onoff_brightness({disableEffect: true}),
629
629
  meta: {turnsOffAtBrightness1: false},
630
630
  },
@@ -142,7 +142,7 @@ module.exports = [
142
142
  {
143
143
  zigbeeModel: ['ZB-RGBCW'],
144
144
  fingerprint: [{modelID: 'ZB-CL01', manufacturerName: 'eWeLight'}, {modelID: 'ZB-CL01', manufacturerName: 'eWeLink'},
145
- {modelID: 'ZB-CL02', manufacturerName: 'eWeLight'}],
145
+ {modelID: 'ZB-CL02', manufacturerName: 'eWeLight'}, {modelID: 'ZB-CL01', manufacturerName: 'eWeLi\u0001\u0000\u0010'}],
146
146
  model: 'ZB-RGBCW',
147
147
  vendor: 'Lonsonho',
148
148
  description: 'Zigbee 3.0 LED-bulb, RGBW LED',
package/devices/osram.js CHANGED
@@ -126,7 +126,7 @@ module.exports = [
126
126
  model: 'AA70155',
127
127
  vendor: 'OSRAM',
128
128
  description: 'LIGHTIFY LED A19 tunable white / Classic A60 TW',
129
- extend: extend.ledvance.light_onoff_brightness_colortemp(),
129
+ extend: extend.ledvance.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
130
130
  ota: ota.ledvance,
131
131
  },
132
132
  {
@@ -134,7 +134,7 @@ module.exports = [
134
134
  model: 'AA68199',
135
135
  vendor: 'OSRAM',
136
136
  description: 'LIGHTIFY LED PAR16 50 GU10 tunable white',
137
- extend: extend.ledvance.light_onoff_brightness_colortemp(),
137
+ extend: extend.ledvance.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
138
138
  ota: ota.ledvance,
139
139
  },
140
140
  {
@@ -142,7 +142,7 @@ module.exports = [
142
142
  model: '4058075148338',
143
143
  vendor: 'OSRAM',
144
144
  description: 'LIGHTIFY LED PAR16 50 GU10 tunable white',
145
- extend: extend.ledvance.light_onoff_brightness_colortemp(),
145
+ extend: extend.ledvance.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
146
146
  ota: ota.ledvance,
147
147
  },
148
148
  {
@@ -228,7 +228,7 @@ module.exports = [
228
228
  model: '4052899926110',
229
229
  vendor: 'OSRAM',
230
230
  description: 'Flex RGBW',
231
- extend: extend.ledvance.light_onoff_brightness_colortemp_color(),
231
+ extend: extend.ledvance.light_onoff_brightness_colortemp_color({colorTempRange: [125, 666]}),
232
232
  ota: ota.ledvance,
233
233
  },
234
234
  {
@@ -278,7 +278,7 @@ module.exports = [
278
278
  model: 'AB35996',
279
279
  vendor: 'OSRAM',
280
280
  description: 'Smart+ Spot GU10 Multicolor',
281
- extend: extend.ledvance.light_onoff_brightness_colortemp_color(),
281
+ extend: extend.ledvance.light_onoff_brightness_colortemp_color({colorTempRange: [125, 666]}),
282
282
  ota: ota.ledvance,
283
283
  },
284
284
  {
@@ -318,7 +318,7 @@ module.exports = [
318
318
  model: 'AC03648',
319
319
  vendor: 'OSRAM',
320
320
  description: 'SMART+ spot GU5.3 tunable white',
321
- extend: extend.ledvance.light_onoff_brightness_colortemp(),
321
+ extend: extend.ledvance.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
322
322
  ota: ota.ledvance,
323
323
  },
324
324
  {
@@ -404,6 +404,15 @@ module.exports = [
404
404
  extend: hueExtend.light_onoff_brightness_colortemp_color(),
405
405
  ota: ota.zigbeeOTA,
406
406
  },
407
+ {
408
+ zigbeeModel: ['1740193P0'],
409
+ model: '1740193P0',
410
+ vendor: 'Philips',
411
+ description: 'Hue Lucca wall light',
412
+ meta: {turnsOffAtBrightness1: true},
413
+ extend: hueExtend.light_onoff_brightness(),
414
+ ota: ota.zigbeeOTA,
415
+ },
407
416
  {
408
417
  zigbeeModel: ['1740293P0'],
409
418
  model: '1740293P0',
@@ -848,7 +857,7 @@ module.exports = [
848
857
  vendor: 'Philips',
849
858
  description: 'Hue white ambiance E14',
850
859
  meta: {turnsOffAtBrightness1: true},
851
- extend: hueExtend.light_onoff_brightness_colortemp(),
860
+ extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
852
861
  ota: ota.zigbeeOTA,
853
862
  },
854
863
  {
@@ -1203,7 +1212,7 @@ module.exports = [
1203
1212
  ota: ota.zigbeeOTA,
1204
1213
  },
1205
1214
  {
1206
- zigbeeModel: ['4096730P6'],
1215
+ zigbeeModel: ['4096730P6', '929003055601'],
1207
1216
  model: '4096730P6',
1208
1217
  vendor: 'Philips',
1209
1218
  description: 'Hue Cher ceiling light',
@@ -2433,4 +2442,21 @@ module.exports = [
2433
2442
  extend: hueExtend.light_onoff_brightness(),
2434
2443
  ota: ota.zigbeeOTA,
2435
2444
  },
2445
+ {
2446
+ zigbeeModel: ['LCD003'],
2447
+ model: '8719514344723',
2448
+ vendor: 'Philips',
2449
+ description: 'Akari downlight',
2450
+ extend: hueExtend.light_onoff_brightness_colortemp_color({colorTempRange: [153, 500]}),
2451
+ meta: {turnsOffAtBrightness1: true},
2452
+ ota: ota.zigbeeOTA,
2453
+ },
2454
+ {
2455
+ zigbeeModel: ['LWE004'],
2456
+ model: '8719514302235',
2457
+ vendor: 'Philips',
2458
+ description: 'Hue White Filament Bulb E14',
2459
+ extend: hueExtend.light_onoff_brightness(),
2460
+ ota: ota.zigbeeOTA,
2461
+ },
2436
2462
  ];
@@ -273,6 +273,7 @@ module.exports = [
273
273
  endpoint: (device) => {
274
274
  return {'l1': 3, 's1': 21, 's2': 22, 's3': 23, 's4': 24};
275
275
  },
276
+ meta: {multiEndpoint: true},
276
277
  exposes: [e.light_brightness().withLevelConfig().withEndpoint('l1'),
277
278
  exposes.numeric('ballast_minimum_level', ea.ALL).withValueMin(1).withValueMax(254)
278
279
  .withDescription('Specifies the minimum light output of the ballast')
package/devices/tuya.js CHANGED
@@ -804,8 +804,8 @@ module.exports = [
804
804
  toZigbee: [tz.tvtwo_thermostat],
805
805
  onEvent: tuya.onEventSetLocalTime,
806
806
  exposes: [
807
- e.battery_low(), e.window_detection(), e.child_lock(), e.comfort_temperature(), e.eco_temperature(),
808
- e.open_window_temperature(), e.holiday_temperature(),
807
+ e.battery_low(), e.child_lock(), e.open_window(), e.open_window_temperature(), e.holiday_temperature(),
808
+ e.comfort_temperature(), e.eco_temperature(),
809
809
  exposes.climate().withPreset(['auto', 'manual', 'holiday']).withLocalTemperatureCalibration(-20, 20, 1, ea.STATE_SET)
810
810
  .withLocalTemperature(ea.STATE).withSetpoint('current_heating_setpoint', 0, 30, 0.5, ea.STATE_SET),
811
811
  exposes.numeric('boost_timeset_countdown', ea.STATE_SET).withUnit('second').withDescription('Setting '+
@@ -820,7 +820,7 @@ module.exports = [
820
820
  exposes.binary('online', ea.STATE_SET, 'ON', 'OFF').withDescription('Is the device online'),
821
821
  exposes.numeric('holiday_mode_date', ea.STATE_SET).withDescription('The holiday mode( ⛱ ) will '+
822
822
  'automatically start at the set time starting point and run the holiday temperature.'),
823
- exposes.composite('programming', 'programming').withDescription('Auto Mode ⏱ - In this mode,'+
823
+ exposes.composite('programming').withDescription('Auto Mode ⏱ - In this mode,'+
824
824
  ' the device executes a preset week programming temperature time and temperature. ')
825
825
  .withFeature(exposes.text('schedule_monday', ea.STATE))
826
826
  .withFeature(exposes.text('schedule_tuesday', ea.STATE))
@@ -969,51 +969,6 @@ module.exports = [
969
969
  description: 'Smart water/gas valve',
970
970
  extend: extend.switch(),
971
971
  },
972
- {
973
- fingerprint: [
974
- {modelID: 'TS011F', manufacturerName: '_TZ3000_dpo1ysak', applicationVersion: 69},
975
- {modelID: 'TS011F', manufacturerName: '_TZ3000_cphmq0q7', applicationVersion: 69},
976
- {modelID: 'TS011F', manufacturerName: '_TZ3000_5f43h46b', applicationVersion: 69},
977
- {modelID: 'TS011F', manufacturerName: '_TZ3000_dpo1ysak', applicationVersion: 68},
978
- {modelID: 'TS011F', manufacturerName: '_TZ3000_cphmq0q7', applicationVersion: 68},
979
- {modelID: 'TS011F', manufacturerName: '_TZ3000_5f43h46b', applicationVersion: 68},
980
- {modelID: 'TS011F', manufacturerName: '_TZ3000_ps3dmato', applicationVersion: 69},
981
- {modelID: 'TS011F', manufacturerName: '_TZ3000_w0qqde0g', applicationVersion: 68},
982
- ],
983
- model: 'TS011F_plug_3',
984
- description: 'Smart plug (with power monitoring by polling)',
985
- vendor: 'TuYa',
986
- whiteLabel: [{vendor: 'VIKEFON', model: 'TS011F'}],
987
- fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, fz.ignore_basic_report, fz.tuya_switch_power_outage_memory],
988
- toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory],
989
- configure: async (device, coordinatorEndpoint, logger) => {
990
- const endpoint = device.getEndpoint(1);
991
- await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
992
- endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {acCurrentDivisor: 1000, acCurrentMultiplier: 1});
993
- endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 100, multiplier: 1});
994
- device.save();
995
- },
996
- options: [exposes.options.measurement_poll_interval()],
997
- exposes: [e.switch(), e.power(), e.current(), e.voltage().withAccess(ea.STATE),
998
- e.energy(), exposes.enum('power_outage_memory', ea.STATE_SET, ['on', 'off', 'restore'])
999
- .withDescription('Recover state after power outage')],
1000
- onEvent: (type, data, device, options) => {
1001
- const endpoint = device.getEndpoint(1);
1002
- if (type === 'stop') {
1003
- clearInterval(globalStore.getValue(device, 'interval'));
1004
- globalStore.clearValue(device, 'interval');
1005
- } else if (!globalStore.hasValue(device, 'interval')) {
1006
- const seconds = options && options.measurement_poll_interval ? options.measurement_poll_interval : 60;
1007
- const interval = setInterval(async () => {
1008
- try {
1009
- await endpoint.read('haElectricalMeasurement', ['rmsVoltage', 'rmsCurrent', 'activePower']);
1010
- await endpoint.read('seMetering', ['currentSummDelivered']);
1011
- } catch (error) {/* Do nothing*/}
1012
- }, seconds*1000);
1013
- globalStore.putValue(device, 'interval', interval);
1014
- }
1015
- },
1016
- },
1017
972
  {
1018
973
  fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_cphmq0q7'},
1019
974
  {modelID: 'TS011F', manufacturerName: '_TZ3000_ew3ldmgx'},
@@ -1059,6 +1014,51 @@ module.exports = [
1059
1014
  exposes: [e.switch(), exposes.enum('power_outage_memory', ea.STATE_SET, ['on', 'off', 'restore'])
1060
1015
  .withDescription('Recover state after power outage')],
1061
1016
  },
1017
+ {
1018
+ fingerprint: [
1019
+ {modelID: 'TS011F', manufacturerName: '_TZ3000_dpo1ysak', applicationVersion: 69},
1020
+ {modelID: 'TS011F', manufacturerName: '_TZ3000_cphmq0q7', applicationVersion: 69},
1021
+ {modelID: 'TS011F', manufacturerName: '_TZ3000_5f43h46b', applicationVersion: 69},
1022
+ {modelID: 'TS011F', manufacturerName: '_TZ3000_dpo1ysak', applicationVersion: 68},
1023
+ {modelID: 'TS011F', manufacturerName: '_TZ3000_cphmq0q7', applicationVersion: 68},
1024
+ {modelID: 'TS011F', manufacturerName: '_TZ3000_5f43h46b', applicationVersion: 68},
1025
+ {modelID: 'TS011F', manufacturerName: '_TZ3000_ps3dmato', applicationVersion: 69},
1026
+ {modelID: 'TS011F', manufacturerName: '_TZ3000_w0qqde0g', applicationVersion: 68},
1027
+ ],
1028
+ model: 'TS011F_plug_3',
1029
+ description: 'Smart plug (with power monitoring by polling)',
1030
+ vendor: 'TuYa',
1031
+ whiteLabel: [{vendor: 'VIKEFON', model: 'TS011F'}],
1032
+ fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, fz.ignore_basic_report, fz.tuya_switch_power_outage_memory],
1033
+ toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory],
1034
+ configure: async (device, coordinatorEndpoint, logger) => {
1035
+ const endpoint = device.getEndpoint(1);
1036
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
1037
+ endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {acCurrentDivisor: 1000, acCurrentMultiplier: 1});
1038
+ endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 100, multiplier: 1});
1039
+ device.save();
1040
+ },
1041
+ options: [exposes.options.measurement_poll_interval()],
1042
+ exposes: [e.switch(), e.power(), e.current(), e.voltage().withAccess(ea.STATE),
1043
+ e.energy(), exposes.enum('power_outage_memory', ea.STATE_SET, ['on', 'off', 'restore'])
1044
+ .withDescription('Recover state after power outage')],
1045
+ onEvent: (type, data, device, options) => {
1046
+ const endpoint = device.getEndpoint(1);
1047
+ if (type === 'stop') {
1048
+ clearInterval(globalStore.getValue(device, 'interval'));
1049
+ globalStore.clearValue(device, 'interval');
1050
+ } else if (!globalStore.hasValue(device, 'interval')) {
1051
+ const seconds = options && options.measurement_poll_interval ? options.measurement_poll_interval : 60;
1052
+ const interval = setInterval(async () => {
1053
+ try {
1054
+ await endpoint.read('haElectricalMeasurement', ['rmsVoltage', 'rmsCurrent', 'activePower']);
1055
+ await endpoint.read('seMetering', ['currentSummDelivered']);
1056
+ } catch (error) {/* Do nothing*/}
1057
+ }, seconds*1000);
1058
+ globalStore.putValue(device, 'interval', interval);
1059
+ }
1060
+ },
1061
+ },
1062
1062
  {
1063
1063
  zigbeeModel: ['5p1vj8r'],
1064
1064
  fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_t5p1vj8r'}, {modelID: 'TS0601', manufacturerName: '_TZE200_uebojraa'}],
package/lib/exposes.js CHANGED
@@ -561,6 +561,7 @@ module.exports = {
561
561
  max_temperature_limit: () => new Numeric('max_temperature_limit', access.STATE_SET).withUnit('°C').withDescription('Maximum temperature limit'),
562
562
  min_temperature: () => new Numeric('min_temperature', access.STATE_SET).withUnit('°C').withDescription('Minimum temperature'),
563
563
  occupancy: () => new Binary('occupancy', access.STATE, true, false).withDescription('Indicates whether the device detected occupancy'),
564
+ open_window: () => new Binary('open_window', access.STATE_SET, 'ON', 'OFF').withDescription('Enables/disables the status on the device'),
564
565
  open_window_temperature: () => new Numeric('open_window_temperature', access.STATE_SET).withUnit('°C').withDescription('Open window temperature'),
565
566
  pm10: () => new Numeric('pm10', access.STATE).withUnit('µg/m³').withDescription('Measured PM10 (particulate matter) concentration'),
566
567
  pm25: () => new Numeric('pm25', access.STATE).withUnit('µg/m³').withDescription('Measured PM2.5 (particulate matter) concentration'),
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.328",
3
+ "version": "14.0.332",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.328",
3
+ "version": "14.0.332",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [