zigbee-herdsman-converters 14.0.331 → 14.0.335

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.
@@ -596,7 +596,7 @@ const converters = {
596
596
  // handle color property sync
597
597
  // NOTE: this should the last thing we do, as we need to have processed all attributes,
598
598
  // we use assign here so we do not lose other attributes.
599
- return Object.assign(result, libColor.syncColorState(result, meta.state, options));
599
+ return Object.assign(result, libColor.syncColorState(result, meta.state, msg.endpoint, options, meta.logger));
600
600
  },
601
601
  },
602
602
  metering_datek: {
@@ -668,6 +668,10 @@ const converters = {
668
668
  constants.develcoInterfaceMode[msg.data['develcoInterfaceMode']] :
669
669
  msg.data['develcoInterfaceMode'];
670
670
  }
671
+ if (msg.data.hasOwnProperty('status')) {
672
+ result['battery_low'] = (msg.data.status & 2) > 0;
673
+ result['check_meter'] = (msg.data.status & 1) > 0;
674
+ }
671
675
 
672
676
  return result;
673
677
  },
@@ -1753,6 +1757,29 @@ const converters = {
1753
1757
  }
1754
1758
  },
1755
1759
  },
1760
+ tuya_illuminance_temperature_humidity_sensor: {
1761
+ cluster: 'manuSpecificTuya',
1762
+ type: ['commandSetDataResponse', 'commandGetData'],
1763
+ options: [exposes.options.precision('temperature'), exposes.options.calibration('temperature'),
1764
+ exposes.options.precision('humidity'), exposes.options.calibration('humidity')],
1765
+ convert: (model, msg, publish, options, meta) => {
1766
+ const dp = msg.data.dp;
1767
+ const value = tuya.getDataValue(msg.data.datatype, msg.data.data);
1768
+ switch (dp) {
1769
+ case tuya.dataPoints.thitTemperature:
1770
+ return {temperature: calibrateAndPrecisionRoundOptions(value / 10, options, 'temperature')};
1771
+ case tuya.dataPoints.thitHumidity:
1772
+ return {humidity: calibrateAndPrecisionRoundOptions(value, options, 'humidity')};
1773
+ case tuya.dataPoints.thitBatteryPercentage:
1774
+ return {battery: value};
1775
+ case tuya.dataPoints.thitIlluminanceLux:
1776
+ return {illuminance_lux: value};
1777
+ default:
1778
+ meta.logger.warn(`zigbee-herdsman-converters:tuya_illuminance_temperature_humidity_sensor: NOT RECOGNIZED ` +
1779
+ `DP #${dp} with data ${JSON.stringify(msg.data)}`);
1780
+ }
1781
+ },
1782
+ },
1756
1783
  ts0201_temperature_humidity_alarm: {
1757
1784
  cluster: 'manuSpecificTuya_2',
1758
1785
  type: ['attributeReport', 'readResponse'],
@@ -1958,7 +1985,7 @@ const converters = {
1958
1985
  result.color.s = result.color.saturation;
1959
1986
  }
1960
1987
 
1961
- return Object.assign(result, libColor.syncColorState(result, meta.state, options));
1988
+ return Object.assign(result, libColor.syncColorState(result, meta.state, msg.endpoint, options, meta.logger));
1962
1989
  },
1963
1990
  },
1964
1991
  tuya_cover: {
@@ -3610,7 +3637,7 @@ const converters = {
3610
3637
  case tuya.dataPoints.tvFrostDetection:
3611
3638
  return {frost_protection: value ? 'ON' : 'OFF'};
3612
3639
  case tuya.dataPoints.tvWindowDetection:
3613
- return {window_detection: value ? 'ON' : 'OFF'};
3640
+ return {open_window: value ? 'ON' : 'OFF'};
3614
3641
  case tuya.dataPoints.tvHeatingStop:
3615
3642
  return {heating_stop: value ? 'ON' : 'OFF'};
3616
3643
  case tuya.dataPoints.tvLocalTemp:
@@ -913,8 +913,8 @@ const converters = {
913
913
  const payload = {colortemp: value, transtime: utils.getTransition(entity, key, meta).time};
914
914
  await entity.command('lightingColorCtrl', 'moveToColorTemp', payload, utils.getOptions(meta.mapped, entity));
915
915
  return {
916
- state: libColor.syncColorState({'color_mode': constants.colorMode[2], 'color_temp': value}, meta.state, meta.options),
917
- readAfterWriteTime: payload.transtime * 100,
916
+ state: libColor.syncColorState({'color_mode': constants.colorMode[2], 'color_temp': value}, meta.state,
917
+ entity, meta.options, meta.logger), readAfterWriteTime: payload.transtime * 100,
918
918
  };
919
919
  },
920
920
  convertGet: async (entity, key, meta) => {
@@ -1030,7 +1030,8 @@ const converters = {
1030
1030
  }
1031
1031
 
1032
1032
  await entity.command('lightingColorCtrl', command, zclData, utils.getOptions(meta.mapped, entity));
1033
- return {state: libColor.syncColorState(newState, meta.state, meta.options), readAfterWriteTime: zclData.transtime * 100};
1033
+ return {state: libColor.syncColorState(newState, meta.state, entity, meta.options, meta.logger),
1034
+ readAfterWriteTime: zclData.transtime * 100};
1034
1035
  },
1035
1036
  convertGet: async (entity, key, meta) => {
1036
1037
  await entity.read('lightingColorCtrl', light.readColorAttributes(entity, meta));
@@ -2810,11 +2811,10 @@ const converters = {
2810
2811
  },
2811
2812
  tvtwo_thermostat: {
2812
2813
  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',
2814
+ 'child_lock', 'open_window', 'open_window_temperature', 'frost_protection', 'heating_stop',
2815
+ 'current_heating_setpoint', 'local_temperature_calibration', 'preset', 'boost_timeset_countdown',
2816
+ 'holiday_mode_date', 'holiday_temperature', 'comfort_temperature', 'eco_temperature',
2817
+ 'working_day', 'week_schedule', 'week', 'online',
2818
2818
  ],
2819
2819
  convertSet: async (entity, key, value, meta) => {
2820
2820
  switch (key) {
@@ -2838,7 +2838,7 @@ const converters = {
2838
2838
  await tuya.sendDataPointEnum(entity, tuya.dataPoints.tvMode, 1 /* manual */);
2839
2839
  }
2840
2840
  break;
2841
- case 'window_detection':
2841
+ case 'open_window':
2842
2842
  await tuya.sendDataPointBool(entity, tuya.dataPoints.tvWindowDetection, value === 'ON');
2843
2843
  break;
2844
2844
  case 'child_lock':
@@ -2851,6 +2851,7 @@ const converters = {
2851
2851
  break;
2852
2852
  case 'current_heating_setpoint':
2853
2853
  await tuya.sendDataPointValue(entity, tuya.dataPoints.tvHeatingSetpoint, value * 10);
2854
+ await tuya.sendDataPointEnum(entity, tuya.dataPoints.tvMode, 1 /* manual */);
2854
2855
  break;
2855
2856
  case 'holiday_temperature':
2856
2857
  await tuya.sendDataPointValue(entity, tuya.dataPoints.tvHolidayTemp, value * 10);
@@ -3023,7 +3024,8 @@ const converters = {
3023
3024
  color_temp: meta.message.color_temp,
3024
3025
  };
3025
3026
 
3026
- return {state: libColor.syncColorState(newState, meta.state, meta.options), readAfterWriteTime: zclData.transtime * 100};
3027
+ return {state: libColor.syncColorState(newState, meta.state, entity, meta.options, meta.logger),
3028
+ readAfterWriteTime: zclData.transtime * 100};
3027
3029
  }
3028
3030
 
3029
3031
  if (key === 'color_temp') {
@@ -3040,7 +3042,8 @@ const converters = {
3040
3042
  color_temp: value,
3041
3043
  };
3042
3044
 
3043
- return {state: libColor.syncColorState(newState, meta.state, meta.options), readAfterWriteTime: zclData.transtime * 100};
3045
+ return {state: libColor.syncColorState(newState, meta.state, entity, meta.options, meta.logger),
3046
+ readAfterWriteTime: zclData.transtime * 100};
3044
3047
  }
3045
3048
 
3046
3049
  const zclData = {
@@ -3104,7 +3107,8 @@ const converters = {
3104
3107
  color_mode: constants.colorMode[0],
3105
3108
  };
3106
3109
 
3107
- return {state: libColor.syncColorState(newState, meta.state, meta.options), readAfterWriteTime: zclData.transtime * 100};
3110
+ return {state: libColor.syncColorState(newState, meta.state, entity, meta.options, meta.logger),
3111
+ readAfterWriteTime: zclData.transtime * 100};
3108
3112
  },
3109
3113
  convertGet: async (entity, key, meta) => {
3110
3114
  await entity.read('lightingColorCtrl', [
@@ -5063,7 +5067,7 @@ const converters = {
5063
5067
  recalledState = addColorMode(recalledState);
5064
5068
  }
5065
5069
 
5066
- Object.assign(recalledState, libColor.syncColorState(recalledState, meta.state, meta.options));
5070
+ Object.assign(recalledState, libColor.syncColorState(recalledState, meta.state, entity, meta.options, meta.logger));
5067
5071
  membersState[member.getDevice().ieeeAddr] = recalledState;
5068
5072
  } else {
5069
5073
  meta.logger.warn(`Unknown scene was recalled for ${member.getDevice().ieeeAddr}, can't restore state.`);
@@ -5080,7 +5084,7 @@ const converters = {
5080
5084
  recalledState = addColorMode(recalledState);
5081
5085
  }
5082
5086
 
5083
- Object.assign(recalledState, libColor.syncColorState(recalledState, meta.state, meta.options));
5087
+ Object.assign(recalledState, libColor.syncColorState(recalledState, meta.state, entity, meta.options, meta.logger));
5084
5088
  meta.logger.info('Successfully recalled scene');
5085
5089
  return {state: recalledState};
5086
5090
  } else {
package/devices/casaia.js CHANGED
@@ -2,6 +2,7 @@ const exposes = require('../lib/exposes');
2
2
  const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
3
3
  const reporting = require('../lib/reporting');
4
4
  const e = exposes.presets;
5
+ const tz = require('../converters/toZigbee');
5
6
 
6
7
  module.exports = [
7
8
  {
@@ -22,4 +23,21 @@ module.exports = [
22
23
  },
23
24
  exposes: [e.temperature(), e.battery_low(), e.battery()],
24
25
  },
26
+ {
27
+ zigbeeModel: ['CCB432'],
28
+ model: 'CCB432',
29
+ vendor: 'CASAIA',
30
+ description: 'Rail-Din relay and energy meter',
31
+ fromZigbee: [fz.electrical_measurement, fz.metering, fz.on_off],
32
+ toZigbee: [tz.on_off],
33
+ exposes: [e.switch(), e.power(), e.energy()],
34
+ configure: async (device, coordinatorEndpoint, logger) => {
35
+ const endpoint = device.getEndpoint(1);
36
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering']);
37
+ await reporting.onOff(endpoint);
38
+ await reporting.readMeteringMultiplierDivisor(endpoint);
39
+ await reporting.instantaneousDemand(endpoint);
40
+ await reporting.currentSummDelivered(endpoint);
41
+ },
42
+ },
25
43
  ];
@@ -311,6 +311,7 @@ module.exports = [
311
311
  exposes: [
312
312
  e.power(),
313
313
  e.energy(),
314
+ e.battery_low(),
314
315
  exposes.numeric('pulse_configuration', ea.ALL).withValueMin(0).withValueMax(65535)
315
316
  .withDescription('Pulses per kwh. Default 1000 imp/kWh. Range 0 to 65535'),
316
317
  exposes.enum('interface_mode', ea.ALL,
@@ -318,6 +319,8 @@ module.exports = [
318
319
  .withDescription('Operating mode/probe'),
319
320
  exposes.numeric('current_summation', ea.SET)
320
321
  .withDescription('Current summation value sent to the display. e.g. 570 = 0,570 kWh'),
322
+ exposes.binary('check_meter', ea.STATE, true, false)
323
+ .withDescription('Is true if communication problem with meter is experienced'),
321
324
  ],
322
325
  },
323
326
  {
package/devices/icasa.js CHANGED
@@ -81,6 +81,7 @@ module.exports = [
81
81
  model: 'ICZB-RM11S',
82
82
  vendor: 'iCasa',
83
83
  description: 'Zigbee 3.0 remote control',
84
+ meta: {battery: {dontDividePercentage: true}},
84
85
  fromZigbee: [fz.command_recall, fz.command_on, fz.command_off, fz.command_move, fz.command_stop, fz.battery],
85
86
  exposes: [e.battery(), e.action(['recall_*', 'on', 'off', 'brightness_stop', 'brightness_move_up', 'brightness_move_down'])],
86
87
  toZigbee: [],
package/devices/ikea.js CHANGED
@@ -146,10 +146,12 @@ const ikea = {
146
146
  convertSet: async (entity, key, value, meta) => {
147
147
  if (key == 'fan_state' && value.toLowerCase() == 'on') {
148
148
  value = getMetaValue(entity, meta.mapped, 'fanStateOn', 'allEqual', 'on');
149
+ } else {
150
+ value = value.toString().toLowerCase();
149
151
  }
150
152
 
151
153
  let fanMode;
152
- switch (value.toLowerCase()) {
154
+ switch (value) {
153
155
  case 'off':
154
156
  fanMode = 0;
155
157
  break;
@@ -161,7 +163,7 @@ const ikea = {
161
163
  }
162
164
 
163
165
  await entity.write('manuSpecificIkeaAirPurifier', {'fanMode': fanMode}, manufacturerOptions.ikea);
164
- return {state: {fan_mode: value.toLowerCase(), fan_state: value.toLowerCase() === 'off' ? 'OFF' : 'ON'}};
166
+ return {state: {fan_mode: value, fan_state: value === 'off' ? 'OFF' : 'ON'}};
165
167
  },
166
168
  convertGet: async (entity, key, meta) => {
167
169
  await entity.read('manuSpecificIkeaAirPurifier', ['fanMode']);
package/devices/immax.js CHANGED
@@ -140,4 +140,23 @@ module.exports = [
140
140
  description: 'Neo RECUADRO SMART, color temp, dimmable, Zigbee 3.0',
141
141
  extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 370]}),
142
142
  },
143
+ {
144
+ fingerprint: [{modelID: 'TS0202', manufacturerName: '_TZ3210_jijr1sss'}],
145
+ model: '07502L',
146
+ vendor: 'Immax',
147
+ description: '4 in 1 multi sensor',
148
+ fromZigbee: [fz.battery, fz.ignore_basic_report, fz.illuminance, fz.ZB003X, fz.ZB003X_attr, fz.ZB003X_occupancy],
149
+ toZigbee: [tz.ZB003X],
150
+ exposes: [e.occupancy(), e.tamper(), e.battery(), e.illuminance(), e.illuminance_lux().withUnit('lx'), e.temperature(),
151
+ e.humidity(), exposes.numeric('reporting_time', ea.STATE_SET).withDescription('Reporting interval in minutes'),
152
+ exposes.numeric('temperature_calibration', ea.STATE_SET).withDescription('Temperature calibration'),
153
+ exposes.numeric('humidity_calibration', ea.STATE_SET).withDescription('Humidity calibration'),
154
+ exposes.numeric('illuminance_calibration', ea.STATE_SET).withDescription('Illuminance calibration'),
155
+ exposes.binary('pir_enable', ea.STATE_SET, true, false).withDescription('Enable PIR sensor'),
156
+ exposes.binary('led_enable', ea.STATE_SET, true, false).withDescription('Enabled LED'),
157
+ exposes.binary('reporting_enable', ea.STATE_SET, true, false).withDescription('Enabled reporting'),
158
+ exposes.enum('sensitivity', ea.STATE_SET, ['low', 'medium', 'high']).withDescription('PIR sensor sensitivity'),
159
+ // eslint-disable-next-line
160
+ exposes.enum('keep_time', ea.STATE_SET, ['0', '30', '60', '120', '240']).withDescription('PIR keep time in seconds')],
161
+ },
143
162
  ];
@@ -85,7 +85,7 @@ module.exports = [
85
85
  extend: extend.light_onoff_brightness_colortemp(),
86
86
  },
87
87
  {
88
- zigbeeModel: ['ZHA-PIRSensor'],
88
+ fingerprint: [{modelID: 'ZHA-PIRSensor', manufacturerName: 'Leedarson'}],
89
89
  model: '5AA-SS-ZA-H0',
90
90
  vendor: 'Leedarson',
91
91
  description: 'Motion sensor',
package/devices/moes.js CHANGED
@@ -76,7 +76,8 @@ module.exports = [
76
76
  },
77
77
  {
78
78
  fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_aoclfnxz'},
79
- {modelID: 'TS0601', manufacturerName: '_TZE200_ztvwu4nk'}],
79
+ {modelID: 'TS0601', manufacturerName: '_TZE200_ztvwu4nk'},
80
+ {modelID: 'TS0601', manufacturerName: '_TZE200_u9bfwha0'}],
80
81
  model: 'BHT-002-GCLZB',
81
82
  vendor: 'Moes',
82
83
  description: 'Moes BHT series Thermostat',
package/devices/owon.js CHANGED
@@ -83,4 +83,23 @@ module.exports = [
83
83
  await reporting.thermostatAcLouverPosition(endpoint);
84
84
  },
85
85
  },
86
+ {
87
+ zigbeeModel: ['THS317'],
88
+ model: 'THS317',
89
+ vendor: 'OWON',
90
+ description: 'Temperature and humidity sensor',
91
+ fromZigbee: [fz.temperature, fz.humidity, fz.battery],
92
+ toZigbee: [],
93
+ exposes: [e.battery(), e.temperature(), e.humidity()],
94
+ configure: async (device, coordinatorEndpoint, logger) => {
95
+ const endpoint = device.getEndpoint(2);
96
+ await reporting.bind(endpoint, coordinatorEndpoint, ['msTemperatureMeasurement', 'msRelativeHumidity', 'genPowerCfg']);
97
+ await reporting.temperature(endpoint);
98
+ await reporting.humidity(endpoint);
99
+ await reporting.batteryVoltage(endpoint);
100
+ await reporting.batteryPercentageRemaining(endpoint);
101
+ device.powerSource = 'Battery';
102
+ device.save();
103
+ },
104
+ },
86
105
  ];
@@ -33,4 +33,19 @@ module.exports = [
33
33
  await reporting.batteryPercentageRemaining(endpoint);
34
34
  },
35
35
  },
36
+ {
37
+ fingerprint: [{modelID: 'ZHA-PirSensor', manufacturerName: 'LDS'}],
38
+ model: 'PECMS01',
39
+ vendor: 'Perenio',
40
+ description: 'Motion sensor',
41
+ fromZigbee: [fz.battery, fz.ias_occupancy_alarm_1],
42
+ toZigbee: [],
43
+ meta: {battery: {dontDividePercentage: true}},
44
+ exposes: [e.occupancy(), e.battery_low(), e.tamper(), e.battery()],
45
+ configure: async (device, coordinatorEndpoint, logger) => {
46
+ const endpoint = device.getEndpoint(1);
47
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
48
+ await reporting.batteryPercentageRemaining(endpoint);
49
+ },
50
+ },
36
51
  ];
@@ -2244,6 +2244,15 @@ module.exports = [
2244
2244
  extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
2245
2245
  ota: ota.zigbeeOTA,
2246
2246
  },
2247
+ {
2248
+ zigbeeModel: ['5047230P6', '5047230P6'],
2249
+ model: '5047230P6',
2250
+ vendor: 'Philips',
2251
+ description: 'Hue White ambiance Buckram double spotlight',
2252
+ meta: {turnsOffAtBrightness1: true},
2253
+ extend: hueExtend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
2254
+ ota: ota.zigbeeOTA,
2255
+ },
2247
2256
  {
2248
2257
  zigbeeModel: ['5047430P6'],
2249
2258
  model: '5047430P6',
package/devices/tuya.js CHANGED
@@ -36,6 +36,15 @@ module.exports = [
36
36
  toZigbee: [],
37
37
  exposes: [e.temperature(), e.humidity(), e.battery()],
38
38
  },
39
+ {
40
+ fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_vzqtvljm'}],
41
+ model: 'TS0601_illuminance_temperature_humidity_sensor',
42
+ vendor: 'TuYa',
43
+ description: 'Illuminance, temperature & humidity sensor',
44
+ fromZigbee: [fz.tuya_illuminance_temperature_humidity_sensor],
45
+ toZigbee: [],
46
+ exposes: [e.temperature(), e.humidity(), e.illuminance_lux(), e.battery()],
47
+ },
39
48
  {
40
49
  fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_8ygsuhe1'},
41
50
  {modelID: 'TS0601', manufacturerName: '_TZE200_yvx5lh6k'}, {modelID: 'TS0601', manufacturerName: '_TZE200_ryfmq5rl'}],
@@ -804,8 +813,8 @@ module.exports = [
804
813
  toZigbee: [tz.tvtwo_thermostat],
805
814
  onEvent: tuya.onEventSetLocalTime,
806
815
  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(),
816
+ e.battery_low(), e.child_lock(), e.open_window(), e.open_window_temperature(), e.holiday_temperature(),
817
+ e.comfort_temperature(), e.eco_temperature(),
809
818
  exposes.climate().withPreset(['auto', 'manual', 'holiday']).withLocalTemperatureCalibration(-20, 20, 1, ea.STATE_SET)
810
819
  .withLocalTemperature(ea.STATE).withSetpoint('current_heating_setpoint', 0, 30, 0.5, ea.STATE_SET),
811
820
  exposes.numeric('boost_timeset_countdown', ea.STATE_SET).withUnit('second').withDescription('Setting '+
@@ -1517,7 +1526,8 @@ module.exports = [
1517
1526
  exposes: [e.battery(), e.illuminance(), e.illuminance_lux()],
1518
1527
  },
1519
1528
  {
1520
- fingerprint: [{modelID: 'TS0210', manufacturerName: '_TYZB01_3zv6oleo'}],
1529
+ fingerprint: [{modelID: 'TS0210', manufacturerName: '_TYZB01_3zv6oleo'},
1530
+ {modelID: 'TS0210', manufacturerName: '_TYZB01_j9xxahcl'}],
1521
1531
  model: 'TS0210',
1522
1532
  vendor: 'TuYa',
1523
1533
  description: 'Vibration sensor',
package/devices/xiaomi.js CHANGED
@@ -1772,6 +1772,21 @@ module.exports = [
1772
1772
  await endpoint1.write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
1773
1773
  },
1774
1774
  },
1775
+ {
1776
+ zigbeeModel: ['lumi.remote.acn003'],
1777
+ model: 'WXKG16LM',
1778
+ vendor: 'Xiaomi',
1779
+ description: 'Aqara wireless remote switch E1 (single rocker)',
1780
+ fromZigbee: [fz.xiaomi_multistate_action, fz.aqara_opple],
1781
+ toZigbee: [tz.xiaomi_switch_click_mode],
1782
+ exposes: [e.battery(), e.battery_voltage(), e.action(['single', 'double', 'hold']),
1783
+ exposes.enum('click_mode', ea.SET, ['fast', 'multi'])
1784
+ .withDescription('Click mode, fast: only supports single click which will be send immediately after clicking.' +
1785
+ 'multi: supports more events like double and hold')],
1786
+ configure: async (device, coordinatorEndpoint, logger) => {
1787
+ await device.getEndpoint(1).write('aqaraOpple', {0x0125: {value: 0x02, type: 0x20}}, {manufacturerCode: 0x115f});
1788
+ },
1789
+ },
1775
1790
  {
1776
1791
  zigbeeModel: ['lumi.remote.acn004'],
1777
1792
  model: 'WXKG17LM',
package/lib/color.js CHANGED
@@ -1,5 +1,6 @@
1
1
  const kelvinToXyLookup = require('./kelvinToXy');
2
2
  const {precisionRound} = require('./utils');
3
+ const {findColorTempRange, clampColorTemp} = require('./light');
3
4
 
4
5
  /**
5
6
  * Color represented in HSV space
@@ -637,14 +638,17 @@ class Color {
637
638
  * NOTE: behavior can be disable by setting the 'color_sync' device/group option
638
639
  * @param {Object} newState state with only the changed attributes set
639
640
  * @param {Object} oldState state from the cache with all the old attributes set
641
+ * @param {Object} endpoint with lightingColorCtrl cluster
640
642
  * @param {Object} options meta.options for the device or group
643
+ * @param {Object} logger used for logging
641
644
  * @return {Object} state with color, color_temp, and color_mode set and syncronized from newState's attributes
642
645
  * (other attributes are not included make sure to merge yourself)
643
646
  */
644
- function syncColorState(newState, oldState, options) {
647
+ function syncColorState(newState, oldState, endpoint, options, logger) {
645
648
  const colorTargets = [];
646
649
  const colorSync = (options && options.hasOwnProperty('color_sync')) ? options.color_sync : true;
647
650
  const result = {};
651
+ const [colorTempMin, colorTempMax] = findColorTempRange(endpoint, logger);
648
652
 
649
653
  // check if color sync is enabled
650
654
  if (!colorSync) {
@@ -704,7 +708,8 @@ function syncColorState(newState, oldState, options) {
704
708
  if (result.color.hasOwnProperty('hue') && result.color.hasOwnProperty('saturation')) {
705
709
  const hsv = new ColorHSV(result.color.hue, result.color.saturation);
706
710
  if (colorTargets.includes('color_temp')) {
707
- result.color_temp = precisionRound(hsv.toMireds(), 0);
711
+ result.color_temp = clampColorTemp(precisionRound(hsv.toMireds(), 0),
712
+ colorTempMin, colorTempMax, logger);
708
713
  }
709
714
  if (colorTargets.includes('xy')) {
710
715
  Object.assign(result.color, hsv.toXY().rounded(4).toObject());
@@ -726,7 +731,8 @@ function syncColorState(newState, oldState, options) {
726
731
  if (result.color.hasOwnProperty('x') && result.color.hasOwnProperty('y')) {
727
732
  const xy = new ColorXY(result.color.x, result.color.y);
728
733
  if (colorTargets.includes('color_temp')) {
729
- result.color_temp = precisionRound(xy.toMireds(), 0);
734
+ result.color_temp = clampColorTemp(precisionRound(xy.toMireds(), 0),
735
+ colorTempMin, colorTempMax, logger);
730
736
  }
731
737
  if (colorTargets.includes('hs')) {
732
738
  Object.assign(result.color, xy.toHSV().rounded(0).toObject(false, false));
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'),
package/lib/tuya.js CHANGED
@@ -471,6 +471,12 @@ const dataPoints = {
471
471
  hochTotalReverseActivePower: 117,
472
472
  hochHistoricalVoltage: 118,
473
473
  hochHistoricalCurrent: 119,
474
+
475
+ // TUYA / HUMIDITY/ILLUMINANCE/TEMPERATURE SENSOR
476
+ thitBatteryPercentage: 3,
477
+ thitIlluminanceLux: 7,
478
+ thitHumidity: 9,
479
+ thitTemperature: 8,
474
480
  };
475
481
 
476
482
  const thermostatWeekFormat = {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.331",
3
+ "version": "14.0.335",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
@@ -872,9 +872,9 @@
872
872
  "dev": true
873
873
  },
874
874
  "@types/node": {
875
- "version": "16.11.9",
876
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz",
877
- "integrity": "sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A==",
875
+ "version": "16.11.10",
876
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.10.tgz",
877
+ "integrity": "sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA==",
878
878
  "dev": true
879
879
  },
880
880
  "@types/prettier": {
@@ -1306,9 +1306,9 @@
1306
1306
  "dev": true
1307
1307
  },
1308
1308
  "caniuse-lite": {
1309
- "version": "1.0.30001282",
1310
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz",
1311
- "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==",
1309
+ "version": "1.0.30001283",
1310
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001283.tgz",
1311
+ "integrity": "sha512-9RoKo841j1GQFSJz/nCXOj0sD7tHBtlowjYlrqIUS812x9/emfBLBt6IyMz1zIaYc/eRL8Cs6HPUVi2Hzq4sIg==",
1312
1312
  "dev": true
1313
1313
  },
1314
1314
  "chalk": {
@@ -1328,9 +1328,9 @@
1328
1328
  "dev": true
1329
1329
  },
1330
1330
  "ci-info": {
1331
- "version": "3.2.0",
1332
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz",
1333
- "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==",
1331
+ "version": "3.3.0",
1332
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz",
1333
+ "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==",
1334
1334
  "dev": true
1335
1335
  },
1336
1336
  "cjs-module-lexer": {
@@ -1455,9 +1455,9 @@
1455
1455
  }
1456
1456
  },
1457
1457
  "debug": {
1458
- "version": "4.3.2",
1459
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
1460
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
1458
+ "version": "4.3.3",
1459
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
1460
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
1461
1461
  "requires": {
1462
1462
  "ms": "2.1.2"
1463
1463
  }
@@ -1540,9 +1540,9 @@
1540
1540
  }
1541
1541
  },
1542
1542
  "electron-to-chromium": {
1543
- "version": "1.3.904",
1544
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz",
1545
- "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==",
1543
+ "version": "1.4.4",
1544
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.4.tgz",
1545
+ "integrity": "sha512-teHtgwcmVcL46jlFvAaqjyiTLWuMrUQO1JqV303JKB4ysXG6m8fXSFhbjal9st0r9mNskI22AraJZorb1VcLVg==",
1546
1546
  "dev": true
1547
1547
  },
1548
1548
  "emittery": {
@@ -1641,9 +1641,9 @@
1641
1641
  }
1642
1642
  },
1643
1643
  "eslint": {
1644
- "version": "8.2.0",
1645
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz",
1646
- "integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==",
1644
+ "version": "8.3.0",
1645
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz",
1646
+ "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==",
1647
1647
  "dev": true,
1648
1648
  "requires": {
1649
1649
  "@eslint/eslintrc": "^1.0.4",
@@ -1655,10 +1655,10 @@
1655
1655
  "doctrine": "^3.0.0",
1656
1656
  "enquirer": "^2.3.5",
1657
1657
  "escape-string-regexp": "^4.0.0",
1658
- "eslint-scope": "^6.0.0",
1658
+ "eslint-scope": "^7.1.0",
1659
1659
  "eslint-utils": "^3.0.0",
1660
- "eslint-visitor-keys": "^3.0.0",
1661
- "espree": "^9.0.0",
1660
+ "eslint-visitor-keys": "^3.1.0",
1661
+ "espree": "^9.1.0",
1662
1662
  "esquery": "^1.4.0",
1663
1663
  "esutils": "^2.0.2",
1664
1664
  "fast-deep-equal": "^3.1.3",
@@ -1693,18 +1693,18 @@
1693
1693
  "dev": true
1694
1694
  },
1695
1695
  "eslint-plugin-jest": {
1696
- "version": "25.2.4",
1697
- "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.2.4.tgz",
1698
- "integrity": "sha512-HRyinpgmEdkVr7pNPaYPHCoGqEzpgk79X8pg/xCeoAdurbyQjntJQ4pTzHl7BiVEBlam/F1Qsn+Dk0HtJO7Aaw==",
1696
+ "version": "25.3.0",
1697
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.3.0.tgz",
1698
+ "integrity": "sha512-79WQtuBsTN1S8Y9+7euBYwxIOia/k7ykkl9OCBHL3xuww5ecursHy/D8GCIlvzHVWv85gOkS5Kv6Sh7RxOgK1Q==",
1699
1699
  "dev": true,
1700
1700
  "requires": {
1701
1701
  "@typescript-eslint/experimental-utils": "^5.0.0"
1702
1702
  }
1703
1703
  },
1704
1704
  "eslint-scope": {
1705
- "version": "6.0.0",
1706
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz",
1707
- "integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==",
1705
+ "version": "7.1.0",
1706
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
1707
+ "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==",
1708
1708
  "dev": true,
1709
1709
  "requires": {
1710
1710
  "esrecurse": "^4.3.0",
@@ -1735,14 +1735,14 @@
1735
1735
  "dev": true
1736
1736
  },
1737
1737
  "espree": {
1738
- "version": "9.0.0",
1739
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz",
1740
- "integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==",
1738
+ "version": "9.1.0",
1739
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz",
1740
+ "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==",
1741
1741
  "dev": true,
1742
1742
  "requires": {
1743
- "acorn": "^8.5.0",
1743
+ "acorn": "^8.6.0",
1744
1744
  "acorn-jsx": "^5.3.1",
1745
- "eslint-visitor-keys": "^3.0.0"
1745
+ "eslint-visitor-keys": "^3.1.0"
1746
1746
  }
1747
1747
  },
1748
1748
  "esprima": {
@@ -3791,9 +3791,9 @@
3791
3791
  }
3792
3792
  },
3793
3793
  "ws": {
3794
- "version": "7.5.5",
3795
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz",
3796
- "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==",
3794
+ "version": "7.5.6",
3795
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz",
3796
+ "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==",
3797
3797
  "dev": true
3798
3798
  },
3799
3799
  "xml-name-validator": {
@@ -3842,16 +3842,16 @@
3842
3842
  "dev": true
3843
3843
  },
3844
3844
  "zigbee-herdsman": {
3845
- "version": "0.13.172",
3846
- "resolved": "https://registry.npmjs.org/zigbee-herdsman/-/zigbee-herdsman-0.13.172.tgz",
3847
- "integrity": "sha512-J3q26SsJMkmXCq1pru2ugSE6nwjL5xLT/LuNUm8I00uhcPxpQseZh3n/dDhDN9NPgvAIF2n8VGvC6oYm6jLW3w==",
3845
+ "version": "0.13.174",
3846
+ "resolved": "https://registry.npmjs.org/zigbee-herdsman/-/zigbee-herdsman-0.13.174.tgz",
3847
+ "integrity": "sha512-cRnoQJm6dgnWmqFQuyoECW2KAeTNRZnTbFOYttSv4bQ27LBfayiHuTPXQ9lb6EROLoK2v7D5qDVfWYv4o9eYnQ==",
3848
3848
  "requires": {
3849
3849
  "debounce": "^1.2.1",
3850
3850
  "debug": "^4.3.2",
3851
3851
  "fast-deep-equal": "^3.1.3",
3852
3852
  "mixin-deep": "^2.0.1",
3853
3853
  "mz": "^2.7.0",
3854
- "serialport": "9.2.5",
3854
+ "serialport": "9.2.7",
3855
3855
  "slip": "^1.0.2"
3856
3856
  },
3857
3857
  "dependencies": {
@@ -3880,9 +3880,9 @@
3880
3880
  }
3881
3881
  },
3882
3882
  "@babel/compat-data": {
3883
- "version": "7.16.0",
3884
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz",
3885
- "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew=="
3883
+ "version": "7.16.4",
3884
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz",
3885
+ "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q=="
3886
3886
  },
3887
3887
  "@babel/core": {
3888
3888
  "version": "7.16.0",
@@ -3981,9 +3981,9 @@
3981
3981
  }
3982
3982
  },
3983
3983
  "@babel/helper-define-polyfill-provider": {
3984
- "version": "0.2.4",
3985
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz",
3986
- "integrity": "sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==",
3984
+ "version": "0.3.0",
3985
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz",
3986
+ "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==",
3987
3987
  "requires": {
3988
3988
  "@babel/helper-compilation-targets": "^7.13.0",
3989
3989
  "@babel/helper-module-imports": "^7.12.13",
@@ -4081,9 +4081,9 @@
4081
4081
  "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ=="
4082
4082
  },
4083
4083
  "@babel/helper-remap-async-to-generator": {
4084
- "version": "7.16.0",
4085
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.0.tgz",
4086
- "integrity": "sha512-MLM1IOMe9aQBqMWxcRw8dcb9jlM86NIw7KA0Wri91Xkfied+dE0QuBFSBjMNvqzmS0OSIDsMNC24dBEkPUi7ew==",
4084
+ "version": "7.16.4",
4085
+ "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz",
4086
+ "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==",
4087
4087
  "requires": {
4088
4088
  "@babel/helper-annotate-as-pure": "^7.16.0",
4089
4089
  "@babel/helper-wrap-function": "^7.16.0",
@@ -4167,9 +4167,9 @@
4167
4167
  }
4168
4168
  },
4169
4169
  "@babel/parser": {
4170
- "version": "7.16.3",
4171
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.3.tgz",
4172
- "integrity": "sha512-dcNwU1O4sx57ClvLBVFbEgx0UZWfd0JQX5X6fxFRCLHelFBGXFfSz6Y0FAq2PEwUqlqLkdVjVr4VASEOuUnLJw=="
4170
+ "version": "7.16.4",
4171
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz",
4172
+ "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng=="
4173
4173
  },
4174
4174
  "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
4175
4175
  "version": "7.16.2",
@@ -4190,12 +4190,12 @@
4190
4190
  }
4191
4191
  },
4192
4192
  "@babel/plugin-proposal-async-generator-functions": {
4193
- "version": "7.16.0",
4194
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.0.tgz",
4195
- "integrity": "sha512-nyYmIo7ZqKsY6P4lnVmBlxp9B3a96CscbLotlsNuktMHahkDwoPYEjXrZHU0Tj844Z9f1IthVxQln57mhkcExw==",
4193
+ "version": "7.16.4",
4194
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz",
4195
+ "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==",
4196
4196
  "requires": {
4197
4197
  "@babel/helper-plugin-utils": "^7.14.5",
4198
- "@babel/helper-remap-async-to-generator": "^7.16.0",
4198
+ "@babel/helper-remap-async-to-generator": "^7.16.4",
4199
4199
  "@babel/plugin-syntax-async-generators": "^7.8.4"
4200
4200
  }
4201
4201
  },
@@ -4759,17 +4759,17 @@
4759
4759
  }
4760
4760
  },
4761
4761
  "@babel/preset-env": {
4762
- "version": "7.16.0",
4763
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.0.tgz",
4764
- "integrity": "sha512-cdTu/W0IrviamtnZiTfixPfIncr2M1VqRrkjzZWlr1B4TVYimCFK5jkyOdP4qw2MrlKHi+b3ORj6x8GoCew8Dg==",
4762
+ "version": "7.16.4",
4763
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz",
4764
+ "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==",
4765
4765
  "requires": {
4766
- "@babel/compat-data": "^7.16.0",
4767
- "@babel/helper-compilation-targets": "^7.16.0",
4766
+ "@babel/compat-data": "^7.16.4",
4767
+ "@babel/helper-compilation-targets": "^7.16.3",
4768
4768
  "@babel/helper-plugin-utils": "^7.14.5",
4769
4769
  "@babel/helper-validator-option": "^7.14.5",
4770
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.0",
4770
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2",
4771
4771
  "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0",
4772
- "@babel/plugin-proposal-async-generator-functions": "^7.16.0",
4772
+ "@babel/plugin-proposal-async-generator-functions": "^7.16.4",
4773
4773
  "@babel/plugin-proposal-class-properties": "^7.16.0",
4774
4774
  "@babel/plugin-proposal-class-static-block": "^7.16.0",
4775
4775
  "@babel/plugin-proposal-dynamic-import": "^7.16.0",
@@ -4819,7 +4819,7 @@
4819
4819
  "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0",
4820
4820
  "@babel/plugin-transform-new-target": "^7.16.0",
4821
4821
  "@babel/plugin-transform-object-super": "^7.16.0",
4822
- "@babel/plugin-transform-parameters": "^7.16.0",
4822
+ "@babel/plugin-transform-parameters": "^7.16.3",
4823
4823
  "@babel/plugin-transform-property-literals": "^7.16.0",
4824
4824
  "@babel/plugin-transform-regenerator": "^7.16.0",
4825
4825
  "@babel/plugin-transform-reserved-words": "^7.16.0",
@@ -4832,10 +4832,10 @@
4832
4832
  "@babel/plugin-transform-unicode-regex": "^7.16.0",
4833
4833
  "@babel/preset-modules": "^0.1.5",
4834
4834
  "@babel/types": "^7.16.0",
4835
- "babel-plugin-polyfill-corejs2": "^0.2.3",
4836
- "babel-plugin-polyfill-corejs3": "^0.3.0",
4837
- "babel-plugin-polyfill-regenerator": "^0.2.3",
4838
- "core-js-compat": "^3.19.0",
4835
+ "babel-plugin-polyfill-corejs2": "^0.3.0",
4836
+ "babel-plugin-polyfill-corejs3": "^0.4.0",
4837
+ "babel-plugin-polyfill-regenerator": "^0.3.0",
4838
+ "core-js-compat": "^3.19.1",
4839
4839
  "semver": "^6.3.0"
4840
4840
  },
4841
4841
  "dependencies": {
@@ -5515,9 +5515,9 @@
5515
5515
  }
5516
5516
  },
5517
5517
  "@serialport/bindings": {
5518
- "version": "9.2.5",
5519
- "resolved": "https://registry.npmjs.org/@serialport/bindings/-/bindings-9.2.5.tgz",
5520
- "integrity": "sha512-fyabNg56gWbOMuYJc5c45z94sANC/WzTnGeML7Nr1IYVk0SJ1uksN4ETI8Nea9ZAtr4DhNiIMQ3/IOkyof6Tqg==",
5518
+ "version": "9.2.7",
5519
+ "resolved": "https://registry.npmjs.org/@serialport/bindings/-/bindings-9.2.7.tgz",
5520
+ "integrity": "sha512-glbCqpMYyyfxiUSgGt/ayf84nVDRer9bxvxRv8JDwTYo+Wp2JTofbW4gC5wDa8xNtxMhD90J6PJTJA8E9YhrBg==",
5521
5521
  "requires": {
5522
5522
  "@serialport/binding-abstract": "9.2.3",
5523
5523
  "@serialport/parser-readline": "9.2.4",
@@ -5674,9 +5674,9 @@
5674
5674
  }
5675
5675
  },
5676
5676
  "@types/jest": {
5677
- "version": "27.0.2",
5678
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.2.tgz",
5679
- "integrity": "sha512-4dRxkS/AFX0c5XW6IPMNOydLn2tEhNhJV7DnYK+0bjoJZ+QTmfucBlihX7aoEsh/ocYtkLC73UbnBXBXIxsULA==",
5677
+ "version": "27.0.3",
5678
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.3.tgz",
5679
+ "integrity": "sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==",
5680
5680
  "requires": {
5681
5681
  "jest-diff": "^27.0.0",
5682
5682
  "pretty-format": "^27.0.0"
@@ -5709,9 +5709,9 @@
5709
5709
  }
5710
5710
  },
5711
5711
  "@types/node": {
5712
- "version": "16.11.7",
5713
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz",
5714
- "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw=="
5712
+ "version": "16.11.9",
5713
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz",
5714
+ "integrity": "sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A=="
5715
5715
  },
5716
5716
  "@types/prettier": {
5717
5717
  "version": "2.4.2",
@@ -5745,12 +5745,12 @@
5745
5745
  "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw=="
5746
5746
  },
5747
5747
  "@typescript-eslint/eslint-plugin": {
5748
- "version": "5.3.1",
5749
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.3.1.tgz",
5750
- "integrity": "sha512-cFImaoIr5Ojj358xI/SDhjog57OK2NqlpxwdcgyxDA3bJlZcJq5CPzUXtpD7CxI2Hm6ATU7w5fQnnkVnmwpHqw==",
5748
+ "version": "5.4.0",
5749
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.4.0.tgz",
5750
+ "integrity": "sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==",
5751
5751
  "requires": {
5752
- "@typescript-eslint/experimental-utils": "5.3.1",
5753
- "@typescript-eslint/scope-manager": "5.3.1",
5752
+ "@typescript-eslint/experimental-utils": "5.4.0",
5753
+ "@typescript-eslint/scope-manager": "5.4.0",
5754
5754
  "debug": "^4.3.2",
5755
5755
  "functional-red-black-tree": "^1.0.1",
5756
5756
  "ignore": "^5.1.8",
@@ -5770,50 +5770,50 @@
5770
5770
  }
5771
5771
  },
5772
5772
  "@typescript-eslint/experimental-utils": {
5773
- "version": "5.3.1",
5774
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.3.1.tgz",
5775
- "integrity": "sha512-RgFn5asjZ5daUhbK5Sp0peq0SSMytqcrkNfU4pnDma2D8P3ElZ6JbYjY8IMSFfZAJ0f3x3tnO3vXHweYg0g59w==",
5773
+ "version": "5.4.0",
5774
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.4.0.tgz",
5775
+ "integrity": "sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==",
5776
5776
  "requires": {
5777
5777
  "@types/json-schema": "^7.0.9",
5778
- "@typescript-eslint/scope-manager": "5.3.1",
5779
- "@typescript-eslint/types": "5.3.1",
5780
- "@typescript-eslint/typescript-estree": "5.3.1",
5778
+ "@typescript-eslint/scope-manager": "5.4.0",
5779
+ "@typescript-eslint/types": "5.4.0",
5780
+ "@typescript-eslint/typescript-estree": "5.4.0",
5781
5781
  "eslint-scope": "^5.1.1",
5782
5782
  "eslint-utils": "^3.0.0"
5783
5783
  }
5784
5784
  },
5785
5785
  "@typescript-eslint/parser": {
5786
- "version": "5.3.1",
5787
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.3.1.tgz",
5788
- "integrity": "sha512-TD+ONlx5c+Qhk21x9gsJAMRohWAUMavSOmJgv3JGy9dgPhuBd5Wok0lmMClZDyJNLLZK1JRKiATzCKZNUmoyfw==",
5786
+ "version": "5.4.0",
5787
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.4.0.tgz",
5788
+ "integrity": "sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==",
5789
5789
  "requires": {
5790
- "@typescript-eslint/scope-manager": "5.3.1",
5791
- "@typescript-eslint/types": "5.3.1",
5792
- "@typescript-eslint/typescript-estree": "5.3.1",
5790
+ "@typescript-eslint/scope-manager": "5.4.0",
5791
+ "@typescript-eslint/types": "5.4.0",
5792
+ "@typescript-eslint/typescript-estree": "5.4.0",
5793
5793
  "debug": "^4.3.2"
5794
5794
  }
5795
5795
  },
5796
5796
  "@typescript-eslint/scope-manager": {
5797
- "version": "5.3.1",
5798
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.3.1.tgz",
5799
- "integrity": "sha512-XksFVBgAq0Y9H40BDbuPOTUIp7dn4u8oOuhcgGq7EoDP50eqcafkMVGrypyVGvDYHzjhdUCUwuwVUK4JhkMAMg==",
5797
+ "version": "5.4.0",
5798
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz",
5799
+ "integrity": "sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==",
5800
5800
  "requires": {
5801
- "@typescript-eslint/types": "5.3.1",
5802
- "@typescript-eslint/visitor-keys": "5.3.1"
5801
+ "@typescript-eslint/types": "5.4.0",
5802
+ "@typescript-eslint/visitor-keys": "5.4.0"
5803
5803
  }
5804
5804
  },
5805
5805
  "@typescript-eslint/types": {
5806
- "version": "5.3.1",
5807
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.3.1.tgz",
5808
- "integrity": "sha512-bG7HeBLolxKHtdHG54Uac750eXuQQPpdJfCYuw4ZI3bZ7+GgKClMWM8jExBtp7NSP4m8PmLRM8+lhzkYnSmSxQ=="
5806
+ "version": "5.4.0",
5807
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.4.0.tgz",
5808
+ "integrity": "sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA=="
5809
5809
  },
5810
5810
  "@typescript-eslint/typescript-estree": {
5811
- "version": "5.3.1",
5812
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.3.1.tgz",
5813
- "integrity": "sha512-PwFbh/PKDVo/Wct6N3w+E4rLZxUDgsoII/GrWM2A62ETOzJd4M6s0Mu7w4CWsZraTbaC5UQI+dLeyOIFF1PquQ==",
5811
+ "version": "5.4.0",
5812
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz",
5813
+ "integrity": "sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==",
5814
5814
  "requires": {
5815
- "@typescript-eslint/types": "5.3.1",
5816
- "@typescript-eslint/visitor-keys": "5.3.1",
5815
+ "@typescript-eslint/types": "5.4.0",
5816
+ "@typescript-eslint/visitor-keys": "5.4.0",
5817
5817
  "debug": "^4.3.2",
5818
5818
  "globby": "^11.0.4",
5819
5819
  "is-glob": "^4.0.3",
@@ -5832,11 +5832,11 @@
5832
5832
  }
5833
5833
  },
5834
5834
  "@typescript-eslint/visitor-keys": {
5835
- "version": "5.3.1",
5836
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.3.1.tgz",
5837
- "integrity": "sha512-3cHUzUuVTuNHx0Gjjt5pEHa87+lzyqOiHXy/Gz+SJOCW1mpw9xQHIIEwnKn+Thph1mgWyZ90nboOcSuZr/jTTQ==",
5835
+ "version": "5.4.0",
5836
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz",
5837
+ "integrity": "sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==",
5838
5838
  "requires": {
5839
- "@typescript-eslint/types": "5.3.1",
5839
+ "@typescript-eslint/types": "5.4.0",
5840
5840
  "eslint-visitor-keys": "^3.0.0"
5841
5841
  }
5842
5842
  },
@@ -5846,9 +5846,9 @@
5846
5846
  "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q=="
5847
5847
  },
5848
5848
  "acorn": {
5849
- "version": "8.5.0",
5850
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz",
5851
- "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q=="
5849
+ "version": "8.6.0",
5850
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz",
5851
+ "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw=="
5852
5852
  },
5853
5853
  "acorn-globals": {
5854
5854
  "version": "6.0.0",
@@ -6071,12 +6071,12 @@
6071
6071
  }
6072
6072
  },
6073
6073
  "babel-plugin-polyfill-corejs2": {
6074
- "version": "0.2.3",
6075
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz",
6076
- "integrity": "sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==",
6074
+ "version": "0.3.0",
6075
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz",
6076
+ "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==",
6077
6077
  "requires": {
6078
6078
  "@babel/compat-data": "^7.13.11",
6079
- "@babel/helper-define-polyfill-provider": "^0.2.4",
6079
+ "@babel/helper-define-polyfill-provider": "^0.3.0",
6080
6080
  "semver": "^6.1.1"
6081
6081
  },
6082
6082
  "dependencies": {
@@ -6088,20 +6088,20 @@
6088
6088
  }
6089
6089
  },
6090
6090
  "babel-plugin-polyfill-corejs3": {
6091
- "version": "0.3.0",
6092
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.3.0.tgz",
6093
- "integrity": "sha512-JLwi9vloVdXLjzACL80j24bG6/T1gYxwowG44dg6HN/7aTPdyPbJJidf6ajoA3RPHHtW0j9KMrSOLpIZpAnPpg==",
6091
+ "version": "0.4.0",
6092
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz",
6093
+ "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==",
6094
6094
  "requires": {
6095
- "@babel/helper-define-polyfill-provider": "^0.2.4",
6095
+ "@babel/helper-define-polyfill-provider": "^0.3.0",
6096
6096
  "core-js-compat": "^3.18.0"
6097
6097
  }
6098
6098
  },
6099
6099
  "babel-plugin-polyfill-regenerator": {
6100
- "version": "0.2.3",
6101
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz",
6102
- "integrity": "sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==",
6100
+ "version": "0.3.0",
6101
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz",
6102
+ "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==",
6103
6103
  "requires": {
6104
- "@babel/helper-define-polyfill-provider": "^0.2.4"
6104
+ "@babel/helper-define-polyfill-provider": "^0.3.0"
6105
6105
  }
6106
6106
  },
6107
6107
  "babel-preset-current-node-syntax": {
@@ -6201,9 +6201,9 @@
6201
6201
  "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="
6202
6202
  },
6203
6203
  "browserslist": {
6204
- "version": "4.18.0",
6205
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.0.tgz",
6206
- "integrity": "sha512-ER2M0g5iAR84fS/zjBDqEgU6iO5fS9JI2EkHr5zxDxYEFk3LjhU9Vpp/INb6RMQphxko7PDV1FH38H/qVP5yCA==",
6204
+ "version": "4.18.1",
6205
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz",
6206
+ "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==",
6207
6207
  "requires": {
6208
6208
  "caniuse-lite": "^1.0.30001280",
6209
6209
  "electron-to-chromium": "^1.3.896",
@@ -6254,9 +6254,9 @@
6254
6254
  "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
6255
6255
  },
6256
6256
  "caniuse-lite": {
6257
- "version": "1.0.30001280",
6258
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001280.tgz",
6259
- "integrity": "sha512-kFXwYvHe5rix25uwueBxC569o53J6TpnGu0BEEn+6Lhl2vsnAumRFWEBhDft1fwyo6m1r4i+RqA4+163FpeFcA=="
6257
+ "version": "1.0.30001282",
6258
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz",
6259
+ "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg=="
6260
6260
  },
6261
6261
  "chalk": {
6262
6262
  "version": "2.4.2",
@@ -6575,9 +6575,9 @@
6575
6575
  }
6576
6576
  },
6577
6577
  "electron-to-chromium": {
6578
- "version": "1.3.896",
6579
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.896.tgz",
6580
- "integrity": "sha512-NcGkBVXePiuUrPLV8IxP43n1EOtdg+dudVjrfVEUd/bOqpQUFZ2diL5PPYzbgEhZFEltdXV3AcyKwGnEQ5lhMA=="
6578
+ "version": "1.3.904",
6579
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz",
6580
+ "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw=="
6581
6581
  },
6582
6582
  "emittery": {
6583
6583
  "version": "0.8.1",
@@ -8543,9 +8543,9 @@
8543
8543
  }
8544
8544
  },
8545
8545
  "camelcase": {
8546
- "version": "6.2.0",
8547
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
8548
- "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg=="
8546
+ "version": "6.2.1",
8547
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz",
8548
+ "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA=="
8549
8549
  },
8550
8550
  "chalk": {
8551
8551
  "version": "4.1.2",
@@ -9412,12 +9412,12 @@
9412
9412
  "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
9413
9413
  },
9414
9414
  "serialport": {
9415
- "version": "9.2.5",
9416
- "resolved": "https://registry.npmjs.org/serialport/-/serialport-9.2.5.tgz",
9417
- "integrity": "sha512-nsDsD2GN/43T2a8jQYr1HH76gmDZ575Ts8FOdcBRUY8ecaI16BPbXa612cPPkQjOfg28+KL5qtQL9c0vvTaidg==",
9415
+ "version": "9.2.7",
9416
+ "resolved": "https://registry.npmjs.org/serialport/-/serialport-9.2.7.tgz",
9417
+ "integrity": "sha512-jH5mC0CtmDcE5Z1UXSDrYpzNzCFTGGyaAN/1D38olDbgTKqTrJ1VSfP1LzcKpHCL8M6UEiL+hs3xKP9PWrFeKQ==",
9418
9418
  "requires": {
9419
9419
  "@serialport/binding-mock": "9.2.4",
9420
- "@serialport/bindings": "9.2.5",
9420
+ "@serialport/bindings": "9.2.7",
9421
9421
  "@serialport/parser-byte-length": "9.2.4",
9422
9422
  "@serialport/parser-cctalk": "9.2.4",
9423
9423
  "@serialport/parser-delimiter": "9.2.4",
@@ -9458,9 +9458,9 @@
9458
9458
  }
9459
9459
  },
9460
9460
  "signal-exit": {
9461
- "version": "3.0.5",
9462
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz",
9463
- "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ=="
9461
+ "version": "3.0.6",
9462
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz",
9463
+ "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ=="
9464
9464
  },
9465
9465
  "simple-concat": {
9466
9466
  "version": "1.0.1",
@@ -9498,9 +9498,9 @@
9498
9498
  "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
9499
9499
  },
9500
9500
  "source-map-support": {
9501
- "version": "0.5.20",
9502
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz",
9503
- "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==",
9501
+ "version": "0.5.21",
9502
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
9503
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
9504
9504
  "requires": {
9505
9505
  "buffer-from": "^1.0.0",
9506
9506
  "source-map": "^0.6.0"
@@ -9799,9 +9799,9 @@
9799
9799
  }
9800
9800
  },
9801
9801
  "typedoc": {
9802
- "version": "0.22.8",
9803
- "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.8.tgz",
9804
- "integrity": "sha512-92S+YzyhospdXN5rnkYUTgirdTYqNWY7NP9vco+IqQQoiSXzVSUsawVro+tMyEEsWUS7EMaJ2YOjB9uE0CBi6A==",
9802
+ "version": "0.22.9",
9803
+ "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.22.9.tgz",
9804
+ "integrity": "sha512-84PjudoXVcap6bwdZFbYIUWlgdz/iLV09ZHwrCzhtHWXaDQG6mlosJ8te6DSThuRkRvQjp46HO+qY/P7Gpm78g==",
9805
9805
  "requires": {
9806
9806
  "glob": "^7.2.0",
9807
9807
  "lunr": "^2.3.9",
@@ -9811,9 +9811,9 @@
9811
9811
  }
9812
9812
  },
9813
9813
  "typedoc-plugin-markdown": {
9814
- "version": "3.11.5",
9815
- "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.11.5.tgz",
9816
- "integrity": "sha512-eofjcalj8FObwVqiH8EPwurxUBKYwfJDOlx2zF3Iege1mGgy0KdBquVikglKvnXuB1d60b5K8BRqkYsquiGReQ==",
9814
+ "version": "3.11.7",
9815
+ "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.11.7.tgz",
9816
+ "integrity": "sha512-Wm3HP5gcBOGOOTeDA8GLgw+BY+GAI31RP9Lyog21BvTaSeWUcdXls5TG1MK+XDatS2/0dup9gFO+emoyoQJm9Q==",
9817
9817
  "requires": {
9818
9818
  "handlebars": "^4.7.7"
9819
9819
  }
@@ -9829,9 +9829,9 @@
9829
9829
  "integrity": "sha512-xHq9DzkoQywS7FyPneMm2/Hr9GRoCpjSQXkVN0W6SCJKP7fguqg2tasgh+8l5/mW6YSYvqCqEbkSYLbuD4Y6gA=="
9830
9830
  },
9831
9831
  "typescript": {
9832
- "version": "4.4.4",
9833
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
9834
- "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA=="
9832
+ "version": "4.5.2",
9833
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz",
9834
+ "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw=="
9835
9835
  },
9836
9836
  "uglify-js": {
9837
9837
  "version": "3.14.3",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.331",
3
+ "version": "14.0.335",
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.0",
40
40
  "tar-stream": "^2.2.0",
41
- "zigbee-herdsman": "^0.13.172"
41
+ "zigbee-herdsman": "^0.13.174"
42
42
  },
43
43
  "devDependencies": {
44
44
  "eslint": "*",