zigbee-herdsman-converters 14.0.360 → 14.0.361

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.
@@ -7351,7 +7351,7 @@ const converters = {
7351
7351
  case tuya.dataPoints.trsMotionSpeed:
7352
7352
  return {motion_speed: value};
7353
7353
  case tuya.dataPoints.trsMotionDirection:
7354
- return {motion_direction: {0: 'still', 1: 'forward', 2: 'backward'}[value]};
7354
+ return {motion_direction: {0: 'standing_still', 1: 'moving_forward', 2: 'moving_backward'}[value]};
7355
7355
  case tuya.dataPoints.trsScene:
7356
7356
  return {radar_scene: {'default': 0, 'area': 1, 'toilet': 2, 'bedroom': 3, 'parlour': 4, 'office': 5, 'hotel': 6}[value]};
7357
7357
  case tuya.dataPoints.trsSensitivity:
@@ -327,7 +327,7 @@ module.exports = [
327
327
  extend: gledoptoExtend.light_onoff_brightness_colortemp_color(),
328
328
  },
329
329
  {
330
- zigbeeModel: ['GL-S-007Z'],
330
+ zigbeeModel: ['GL-S-007Z', 'GL-S-007Z(lk)'],
331
331
  model: 'GL-S-007Z',
332
332
  vendor: 'Gledopto',
333
333
  description: 'Zigbee 5W GU10 Bulb RGB+CCT',
@@ -29,6 +29,15 @@ const hueExtend = {
29
29
  };
30
30
 
31
31
  module.exports = [
32
+ {
33
+ zigbeeModel: ['929003054001'],
34
+ model: '929003054001',
35
+ vendor: 'Philips',
36
+ description: 'Hue Wellness table lamp',
37
+ meta: {turnsOffAtBrightness1: true},
38
+ extend: extend.light_onoff_brightness_colortemp({colorTempRange: [153, 454]}),
39
+ ota: ota.zigbeeOTA,
40
+ },
32
41
  {
33
42
  zigbeeModel: ['4076131P6'],
34
43
  model: '4076131P6',
@@ -1913,6 +1922,39 @@ module.exports = [
1913
1922
  },
1914
1923
  ota: ota.zigbeeOTA,
1915
1924
  },
1925
+ {
1926
+ zigbeeModel: ['SML004'],
1927
+ model: '9290030674',
1928
+ vendor: 'Philips',
1929
+ description: 'Hue motion outdoor sensor',
1930
+ fromZigbee: [fz.battery, fz.occupancy, fz.temperature, fz.illuminance, fz.occupancy_timeout,
1931
+ fz.hue_motion_sensitivity, fz.hue_motion_led_indication],
1932
+ exposes: [e.temperature(), e.occupancy(), e.battery(), e.illuminance_lux(), e.illuminance(),
1933
+ exposes.enum('motion_sensitivity', ea.ALL, ['low', 'medium', 'high']),
1934
+ exposes.binary('led_indication', ea.ALL, true, false).withDescription('Blink green LED on motion detection'),
1935
+ exposes.numeric('occupancy_timeout', ea.ALL).withUnit('second').withValueMin(0).withValueMax(65535)],
1936
+ toZigbee: [tz.occupancy_timeout, tz.hue_motion_sensitivity, tz.hue_motion_led_indication],
1937
+ endpoint: (device) => {
1938
+ return {
1939
+ 'default': 2, // default
1940
+ 'ep1': 1,
1941
+ 'ep2': 2, // e.g. for write to msOccupancySensing
1942
+ };
1943
+ },
1944
+ configure: async (device, coordinatorEndpoint, logger) => {
1945
+ const endpoint = device.getEndpoint(2);
1946
+ const binds = ['genPowerCfg', 'msIlluminanceMeasurement', 'msTemperatureMeasurement', 'msOccupancySensing'];
1947
+ await reporting.bind(endpoint, coordinatorEndpoint, binds);
1948
+ await reporting.batteryPercentageRemaining(endpoint);
1949
+ await reporting.occupancy(endpoint);
1950
+ await reporting.temperature(endpoint);
1951
+ await reporting.illuminance(endpoint);
1952
+ // read occupancy_timeout and motion_sensitivity
1953
+ await endpoint.read('msOccupancySensing', ['pirOToUDelay']);
1954
+ await endpoint.read('msOccupancySensing', [48], {manufacturerCode: 4107});
1955
+ },
1956
+ ota: ota.zigbeeOTA,
1957
+ },
1916
1958
  {
1917
1959
  zigbeeModel: ['LOM001'],
1918
1960
  model: '929002240401',
package/devices/sinope.js CHANGED
@@ -151,14 +151,18 @@ module.exports = [
151
151
  await reporting.thermostatRunningState(endpoint);
152
152
  } catch (error) {/* Not all support this */}
153
153
 
154
- await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
155
154
  try {
155
+ await endpoint.read('haElectricalMeasurement', ['acPowerMultiplier', 'acPowerDivisor']);
156
156
  await reporting.activePower(endpoint, {min: 10, max: 305, change: 1}); // divider 1: 1W
157
- } catch (error) {/* Do nothing*/}
157
+ } catch (error) {
158
+ endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {'acPowerMultiplier': 1, 'acPowerDivisor': 1});
159
+ }
158
160
  try {
161
+ await endpoint.read('haElectricalMeasurement', ['acCurrentMultiplier', 'acCurrentDivisor']);
159
162
  await reporting.rmsCurrent(endpoint, {min: 10, max: 306, change: 100}); // divider 1000: 0.1Arms
160
163
  } catch (error) {/* Do nothing*/}
161
164
  try {
165
+ await endpoint.read('haElectricalMeasurement', ['acVoltageMultiplier', 'acVoltageDivisor']);
162
166
  await reporting.rmsVoltage(endpoint, {min: 10, max: 307, change: 5}); // divider 10: 0.5Vrms
163
167
  } catch (error) {/* Do nothing*/}
164
168
 
@@ -133,12 +133,18 @@ module.exports = [
133
133
  model: 'IM6001-OTP05',
134
134
  vendor: 'SmartThings',
135
135
  description: 'Outlet',
136
- extend: extend.switch(),
136
+ fromZigbee: [fz.on_off, fz.electrical_measurement],
137
+ toZigbee: [tz.on_off],
137
138
  configure: async (device, coordinatorEndpoint, logger) => {
138
139
  const endpoint = device.getEndpoint(1);
139
- await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
140
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement']);
140
141
  await reporting.onOff(endpoint);
142
+ await reporting.readEletricalMeasurementMultiplierDivisors(endpoint);
143
+ await reporting.activePower(endpoint);
144
+ await reporting.rmsCurrent(endpoint);
145
+ await reporting.rmsVoltage(endpoint);
141
146
  },
147
+ exposes: [e.switch(), e.power(), e.current(), e.voltage()],
142
148
  },
143
149
  {
144
150
  zigbeeModel: ['outletv4'],
package/devices/tuya.js CHANGED
@@ -133,7 +133,8 @@ module.exports = [
133
133
  {
134
134
  fingerprint: [{modelID: 'TS011F', manufacturerName: '_TZ3000_rk2yzt0u'},
135
135
  {modelID: 'TS0001', manufacturerName: '_TZ3000_o4cjetlm'}, {manufacturerName: '_TZ3000_o4cjetlm'},
136
- {modelID: 'TS0001', manufacturerName: '_TZ3000_iedbgyxt'}, {modelID: 'TS0001', manufacturerName: '_TZ3000_h3noz0a5'}],
136
+ {modelID: 'TS0001', manufacturerName: '_TZ3000_iedbgyxt'}, {modelID: 'TS0001', manufacturerName: '_TZ3000_h3noz0a5'},
137
+ {modelID: 'TS0001', manufacturerName: '_TYZB01_4tlksk8a'}],
137
138
  model: 'ZN231392',
138
139
  vendor: 'TuYa',
139
140
  description: 'Smart water/gas valve',
@@ -181,7 +182,8 @@ module.exports = [
181
182
  meta: {applyRedFix: true, enhancedHue: false},
182
183
  },
183
184
  {
184
- fingerprint: [{modelID: 'TS0504B', manufacturerName: '_TZ3000_ukuvyhaa'}],
185
+ fingerprint: [{modelID: 'TS0504B', manufacturerName: '_TZ3000_ukuvyhaa'},
186
+ {modelID: 'TS0504B', manufacturerName: '_TZ3210_bfvybixd'}],
185
187
  model: 'TS0504B',
186
188
  vendor: 'TuYa',
187
189
  description: 'Zigbee RGBW light',
@@ -207,6 +209,7 @@ module.exports = [
207
209
  {modelID: 'TS0202', manufacturerName: '_TYZB01_qjqgmqxr'},
208
210
  {modelID: 'TS0202', manufacturerName: '_TZ3000_mmtwjmaq'},
209
211
  {modelID: 'TS0202', manufacturerName: '_TZ3000_kmh5qpmb'},
212
+ {modelID: 'TS0202', manufacturerName: '_TYZB01_zwvaj5wy'},
210
213
  {modelID: 'TS0202', manufacturerName: '_TZ3000_mcxw5ehu'},
211
214
  {modelID: 'TS0202', manufacturerName: '_TZ3000_msl6wxk9'},
212
215
  {modelID: 'TS0202', manufacturerName: '_TYZB01_hqbdru35'},
@@ -488,6 +491,7 @@ module.exports = [
488
491
  {modelID: 'TS0502B', manufacturerName: '_TZ3210_hi1ym4bl'},
489
492
  {modelID: 'TS0502B', manufacturerName: '_TZ3210_psgq7ysz'},
490
493
  {modelID: 'TS0502B', manufacturerName: '_TZ3000_zw7wr5uo'},
494
+ {modelID: 'TS0502B', manufacturerName: '_TZ3210_pz9zmxjj'},
491
495
  ],
492
496
  model: 'TS0502B',
493
497
  vendor: 'TuYa',
@@ -862,7 +866,10 @@ module.exports = [
862
866
  exposes: [
863
867
  e.child_lock(), e.window_detection(), e.battery_low(), e.valve_detection(), e.position(),
864
868
  exposes.climate().withSetpoint('current_heating_setpoint', 5, 35, 0.5, ea.STATE_SET)
865
- .withLocalTemperature(ea.STATE).withSystemMode(['heat', 'auto', 'off'], ea.STATE_SET)
869
+ .withLocalTemperature(ea.STATE).withSystemMode(['heat', 'auto', 'off'], ea.STATE_SET,
870
+ 'Mode of this device, in the `heat` mode the TS0601 will remain continuously heating, i.e. it does not regulate ' +
871
+ 'to the desired temperature. If you want TRV to properly regulate the temperature you need to use mode `auto` ' +
872
+ 'instead setting the desired temperature.')
866
873
  .withLocalTemperatureCalibration(-30, 30, 0.1, ea.STATE_SET)
867
874
  .withAwayMode().withPreset(['schedule', 'manual', 'boost', 'complex', 'comfort', 'eco']),
868
875
  e.auto_lock(), e.away_mode(), e.away_preset_days(), e.boost_time(), e.comfort_temperature(), e.eco_temperature(), e.force(),
@@ -1142,22 +1149,25 @@ module.exports = [
1142
1149
  exposes: [e.switch().setAccess('state', ea.STATE_SET), e.voltage(), e.power(), e.current(), e.energy()],
1143
1150
  },
1144
1151
  {
1145
- fingerprint: [{modelID: 'TS1101', manufacturerName: '_TZ3000_7ysdnebc'},
1146
- {modelID: 'TS1101', manufacturerName: '_TZ3000_xfs39dbf'}],
1147
- model: 'TS1101_dimmer_module',
1152
+ fingerprint: [{modelID: 'TS1101', manufacturerName: '_TZ3000_xfs39dbf'}],
1153
+ model: 'TS1101_dimmer_module_1ch',
1148
1154
  vendor: 'TuYa',
1149
- description: '2CH Zigbee dimmer module',
1155
+ description: 'Zigbee dimmer module 1 channel',
1156
+ fromZigbee: extend.light_onoff_brightness().fromZigbee.concat([fz.tuya_min_brightness]),
1157
+ toZigbee: extend.light_onoff_brightness().toZigbee.concat([tz.tuya_min_brightness]),
1158
+ exposes: [e.light_brightness().withMinBrightness()],
1159
+ extend: extend.light_onoff_brightness(),
1160
+ },
1161
+ {
1162
+ fingerprint: [{modelID: 'TS1101', manufacturerName: '_TZ3000_7ysdnebc'}],
1163
+ model: 'TS1101_dimmer_module_2ch',
1164
+ vendor: 'TuYa',
1165
+ description: 'Zigbee dimmer module 2 channel',
1150
1166
  whiteLabel: [{vendor: 'OXT', model: 'SWTZ25'}],
1151
- fromZigbee: extend.light_onoff_brightness().fromZigbee.concat([
1152
- fz.tuya_min_brightness,
1153
- ]),
1154
- toZigbee: extend.light_onoff_brightness().toZigbee.concat([
1155
- tz.tuya_min_brightness,
1156
- ]),
1157
- exposes: [
1158
- e.light_brightness().withMinBrightness().withEndpoint('l1'),
1159
- e.light_brightness().withMinBrightness().withEndpoint('l2'),
1160
- ],
1167
+ fromZigbee: extend.light_onoff_brightness().fromZigbee.concat([fz.tuya_min_brightness]),
1168
+ toZigbee: extend.light_onoff_brightness().toZigbee.concat([tz.tuya_min_brightness]),
1169
+ exposes: [e.light_brightness().withMinBrightness().withEndpoint('l1'),
1170
+ e.light_brightness().withMinBrightness().withEndpoint('l2')],
1161
1171
  endpoint: (device) => {
1162
1172
  return {'l1': 1, 'l2': 2};
1163
1173
  },
@@ -1662,7 +1672,7 @@ module.exports = [
1662
1672
  e.illuminance_lux(), e.presence(),
1663
1673
  exposes.binary('motion', ea.STATE, [true, false]).withDescription('moving inside the range of the sensor'),
1664
1674
  exposes.numeric('motion_speed', ea.STATE).withDescription('Speed of movement'),
1665
- exposes.enum('motion_direction', ea.STATE, ['standing still', 'moving forward', 'moving backward'])
1675
+ exposes.enum('motion_direction', ea.STATE, ['standing_still', 'moving_forward', 'moving_backward'])
1666
1676
  .withDescription('direction of movement from the point of view of the radar'),
1667
1677
  exposes.numeric('radar_sensitivity', ea.STATE_SET).withValueMin(0).withValueMax(10).withValueStep(1)
1668
1678
  .withDescription('sensitivity of the radar'),
package/devices/xiaomi.js CHANGED
@@ -47,7 +47,7 @@ module.exports = [
47
47
  description: 'Aqara E1 door & window contact sensor',
48
48
  fromZigbee: [fz.ias_contact_alarm_1, fz.aqara_opple],
49
49
  toZigbee: [],
50
- exposes: [e.contact(), e.battery(), e.battery_voltage()],
50
+ exposes: [e.contact(), e.battery(), e.temperature(), e.battery_voltage()],
51
51
  },
52
52
  {
53
53
  zigbeeModel: ['lumi.magnet.ac01'],
package/lib/exposes.js CHANGED
@@ -378,11 +378,11 @@ class Climate extends Base {
378
378
  return this;
379
379
  }
380
380
 
381
- withSystemMode(modes, access=a.ALL) {
381
+ withSystemMode(modes, access=a.ALL, description='Mode of this device') {
382
382
  assert(!this.endpoint, 'Cannot add feature after adding endpoint');
383
383
  const allowed = ['off', 'heat', 'cool', 'auto', 'dry', 'fan_only', 'sleep', 'emergency_heating'];
384
384
  modes.forEach((m) => assert(allowed.includes(m)));
385
- this.features.push(new Enum('system_mode', access, modes).withDescription('Mode of this device'));
385
+ this.features.push(new Enum('system_mode', access, modes).withDescription(description));
386
386
  return this;
387
387
  }
388
388
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.360",
3
+ "version": "14.0.361",
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.360",
3
+ "version": "14.0.361",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [