zigbee-herdsman-converters 15.0.32 → 15.0.33

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.
@@ -6111,6 +6111,7 @@ const converters = {
6111
6111
  let result = null;
6112
6112
 
6113
6113
  if (value === 0) result = {action: 'shake'};
6114
+ else if (value === 1) result = {action: 'throw'};
6114
6115
  else if (value === 2) result = {action: 'wakeup'};
6115
6116
  else if (value === 3) result = {action: 'fall'};
6116
6117
  else if (value >= 512) result = {action: 'tap', side: value-512};
package/devices/bitron.js CHANGED
@@ -194,8 +194,8 @@ module.exports = [
194
194
  tz.thermostat_occupied_cooling_setpoint, tz.thermostat_local_temperature_calibration, tz.thermostat_local_temperature,
195
195
  tz.thermostat_running_state, tz.thermostat_temperature_display_mode, tz.thermostat_keypad_lockout, tz.thermostat_system_mode],
196
196
  exposes: [e.battery(), exposes.climate().withSetpoint('occupied_heating_setpoint', 7, 30, 0.5).withLocalTemperature()
197
- .withSystemMode(['off', 'heat']).withRunningState(['idle', 'heat', 'cool'])
198
- .withLocalTemperatureCalibration(-30, 30, 0.1), e.keypad_lockout()],
197
+ .withSystemMode(['off', 'heat']).withRunningState(['idle', 'heat'])
198
+ .withLocalTemperatureCalibration(), e.keypad_lockout()],
199
199
  meta: {battery: {voltageToPercentage: '3V_2500_3200'}},
200
200
  configure: async (device, coordinatorEndpoint, logger) => {
201
201
  const endpoint = device.getEndpoint(1);
package/devices/ecozy.js CHANGED
@@ -19,7 +19,7 @@ module.exports = [
19
19
  tz.thermostat_pi_heating_demand, tz.thermostat_running_state],
20
20
  exposes: [e.battery(), exposes.climate().withSetpoint('occupied_heating_setpoint', 7, 30, 1).withLocalTemperature()
21
21
  .withSystemMode(['off', 'auto', 'heat']).withRunningState(['idle', 'heat'])
22
- .withLocalTemperatureCalibration(-30, 30, 0.1)
22
+ .withLocalTemperatureCalibration()
23
23
  .withPiHeatingDemand(ea.STATE_GET)],
24
24
  configure: async (device, coordinatorEndpoint, logger) => {
25
25
  const endpoint = device.getEndpoint(3);
package/devices/elko.js CHANGED
@@ -60,7 +60,7 @@ module.exports = [
60
60
  '(quick) wooden floors.'),
61
61
  exposes.climate().withSetpoint('occupied_heating_setpoint', 5, 50, 1)
62
62
  .withLocalTemperature(ea.STATE)
63
- .withLocalTemperatureCalibration(-30, 30, 0.1)
63
+ .withLocalTemperatureCalibration()
64
64
  .withSystemMode(['off', 'heat']).withRunningState(['idle', 'heat']),
65
65
  e.temperature_sensor_select(['air', 'floor', 'supervisor_floor']),
66
66
  exposes.numeric('floor_temp', ea.STATE_GET).withUnit('°C')
@@ -148,4 +148,16 @@ module.exports = [
148
148
  await reporting.onOff(endpoint);
149
149
  },
150
150
  },
151
+ {
152
+ zigbeeModel: ['43109'],
153
+ model: '43109',
154
+ vendor: 'Enbrighten',
155
+ description: 'Zigbee in-wall smart switch',
156
+ extend: extend.switch(),
157
+ configure: async (device, coordinatorEndpoint, logger) => {
158
+ const endpoint = device.getEndpoint(1);
159
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff']);
160
+ await reporting.onOff(endpoint);
161
+ },
162
+ },
151
163
  ];
@@ -20,7 +20,7 @@ module.exports = [
20
20
  tz.eurotronic_current_heating_setpoint, tz.eurotronic_trv_mode, tz.eurotronic_valve_position],
21
21
  exposes: [e.battery(), exposes.climate().withSetpoint('occupied_heating_setpoint', 5, 30, 0.5).withLocalTemperature()
22
22
  .withSystemMode(['off', 'auto', 'heat']).withRunningState(['idle', 'heat'])
23
- .withLocalTemperatureCalibration(-30, 30, 0.1)
23
+ .withLocalTemperatureCalibration()
24
24
  .withPiHeatingDemand(),
25
25
  exposes.enum('trv_mode', exposes.access.ALL, [1, 2])
26
26
  .withDescription('Select between direct control of the valve via the `valve_position` or automatic control of the '+
@@ -111,7 +111,7 @@ module.exports = [
111
111
  exposes.climate().withSetpoint('occupied_heating_setpoint', 10, 30, 1).withLocalTemperature()
112
112
  .withSystemMode(['off', 'auto', 'heat', 'cool']).withFanMode(['auto', 'on', 'smart'])
113
113
  .withSetpoint('occupied_cooling_setpoint', 10, 30, 1)
114
- .withLocalTemperatureCalibration(-30, 30, 0.1).withPiHeatingDemand()],
114
+ .withLocalTemperatureCalibration().withPiHeatingDemand()],
115
115
  },
116
116
  {
117
117
  // Reference from a similar switch: https://gist.github.com/nebhead/dc5a0a827ec14eef6196ded4be6e2dd0
@@ -119,7 +119,7 @@ module.exports = [
119
119
  exposes: [e.light_brightness().withMinBrightness()],
120
120
  },
121
121
  {
122
- fingerprint: [{modelID: 'TS110F', manufacturerName: '_TYZB01_v8gtiaed'}, {modelID: 'TS110E', manufacturerName: '_TZ3210_pagajpog'}],
122
+ fingerprint: [{modelID: 'TS110F', manufacturerName: '_TYZB01_v8gtiaed'}],
123
123
  model: 'QS-Zigbee-D02-TRIAC-2C-LN',
124
124
  vendor: 'Lonsonho',
125
125
  description: '2 gang smart dimmer switch module with neutral',
@@ -9,7 +9,7 @@ module.exports = [
9
9
  model: '501.34',
10
10
  vendor: 'Paulmann',
11
11
  description: 'Smart switch 4 buttons white',
12
- fromZigbee: [fz.command_on, fz.command_off, fz.battery],
12
+ fromZigbee: [fz.command_on, fz.command_off, fz.battery, fz.command_move, fz.command_stop],
13
13
  toZigbee: [],
14
14
  exposes: [e.battery(), e.action(['on_1', 'off_1', 'on_2', 'off_2', 'brightness_move_up_1', 'brightness_move_down_1',
15
15
  'brightness_move_stop_1', 'brightness_move_up_2', 'brightness_move_down_2', 'brightness_move_stop_2'])],
@@ -704,7 +704,7 @@ module.exports = [
704
704
  exposes.climate()
705
705
  .withSetpoint('occupied_heating_setpoint', 7, 30, 0.5, ea.STATE_SET)
706
706
  .withLocalTemperature(ea.STATE)
707
- .withLocalTemperatureCalibration(-30, 30, 0.1, ea.STATE_SET)
707
+ .withLocalTemperatureCalibration(-12.8, 12.7, 0.1, ea.STATE_SET)
708
708
  .withPiHeatingDemand()],
709
709
  meta: {battery: {voltageToPercentage: '3V_2500'}},
710
710
  configure: async (device, coordinatorEndpoint, logger) => {
package/devices/sonoff.js CHANGED
@@ -1,5 +1,6 @@
1
1
  const exposes = require('../lib/exposes');
2
2
  const fz = require('../converters/fromZigbee');
3
+ const tz = require('../converters/toZigbee');
3
4
  const constants = require('../lib/constants');
4
5
  const reporting = require('../lib/reporting');
5
6
  const extend = require('../lib/extend');
@@ -246,4 +247,13 @@ module.exports = [
246
247
  device.save();
247
248
  },
248
249
  },
250
+ {
251
+ zigbeeModel: ['ZBCurtain'],
252
+ model: 'ZBCurtain',
253
+ vendor: 'SONOFF',
254
+ description: 'Zigbee smart curtain motor',
255
+ fromZigbee: [fz.cover_position_tilt, fz.battery],
256
+ toZigbee: [tz.cover_state, tz.cover_position_tilt],
257
+ exposes: [e.cover_position(), e.battery()],
258
+ },
249
259
  ];
package/devices/tuya.js CHANGED
@@ -3886,7 +3886,7 @@ module.exports = [
3886
3886
  },
3887
3887
  {
3888
3888
  fingerprint: [{modelID: 'TS110E', manufacturerName: '_TZ3210_wdexaypg'}, {modelID: 'TS110E', manufacturerName: '_TZ3210_3mpwqzuu'}],
3889
- model: 'TS110E_2gang',
3889
+ model: 'TS110E_2gang_1',
3890
3890
  vendor: 'TuYa',
3891
3891
  description: '2 channel dimmer',
3892
3892
  fromZigbee: extend.light_onoff_brightness({disablePowerOnBehavior: true, disableMoveStep: true, disableTransition: true})
@@ -3911,6 +3911,28 @@ module.exports = [
3911
3911
  return {l1: 1, l2: 2};
3912
3912
  },
3913
3913
  },
3914
+ {
3915
+ fingerprint: tuya.fingerprint('TS110E', ['_TZ3210_pagajpog']),
3916
+ model: 'TS110E_2gang_2',
3917
+ vendor: 'TuYa',
3918
+ description: '2 channel dimmer',
3919
+ fromZigbee: [fzLocal.TS110E, fzLocal.TS110E_light_type, tuya.fz.power_on_behavior, fz.on_off],
3920
+ toZigbee: [tzLocal.TS110E_onoff_brightness, tzLocal.TS110E_options, tuya.tz.power_on_behavior, tz.light_brightness_move],
3921
+ meta: {multiEndpoint: true},
3922
+ exposes: [
3923
+ e.light_brightness().withMinBrightness().withMaxBrightness().withEndpoint('l1'),
3924
+ e.light_brightness().withMinBrightness().withMaxBrightness().withEndpoint('l2'),
3925
+ e.power_on_behavior().withAccess(ea.ALL)],
3926
+ configure: async (device, coordinatorEndpoint, logger) => {
3927
+ await tuya.configureMagicPacket(device, coordinatorEndpoint, logger);
3928
+ const endpoint = device.getEndpoint(1);
3929
+ await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
3930
+ await reporting.onOff(endpoint);
3931
+ },
3932
+ endpoint: (device) => {
3933
+ return {l1: 1, l2: 2};
3934
+ },
3935
+ },
3914
3936
  {
3915
3937
  fingerprint: tuya.fingerprint('TS0601', ['_TZE200_nslr42tt']),
3916
3938
  model: 'TS0601_3_phase_clamp_meter',
package/devices/xiaomi.js CHANGED
@@ -1782,7 +1782,7 @@ module.exports = [
1782
1782
  fromZigbee: [fz.xiaomi_basic, fz.MFKZQ01LM_action_multistate, fz.MFKZQ01LM_action_analog],
1783
1783
  exposes: [e.battery(), e.battery_voltage(), e.angle('action_angle'), e.device_temperature(), e.power_outage_count(false),
1784
1784
  e.cube_side('action_from_side'), e.cube_side('action_side'), e.cube_side('action_to_side'), e.cube_side('side'),
1785
- e.action(['shake', 'wakeup', 'fall', 'tap', 'slide', 'flip180', 'flip90', 'rotate_left', 'rotate_right'])],
1785
+ e.action(['shake', 'throw', 'wakeup', 'fall', 'tap', 'slide', 'flip180', 'flip90', 'rotate_left', 'rotate_right'])],
1786
1786
  toZigbee: [],
1787
1787
  },
1788
1788
  {
package/devices/zen.js CHANGED
@@ -18,7 +18,7 @@ module.exports = [
18
18
  exposes: [exposes.climate().withSetpoint('occupied_heating_setpoint', 10, 30, 0.5)
19
19
  .withSetpoint('occupied_cooling_setpoint', 10, 31, 0.5).withLocalTemperature()
20
20
  .withSystemMode(['off', 'auto', 'heat', 'cool']).withRunningState(['idle', 'heat', 'cool'])
21
- .withLocalTemperatureCalibration(-30, 30, 0.1).withPiHeatingDemand()],
21
+ .withLocalTemperatureCalibration().withPiHeatingDemand()],
22
22
  configure: async (device, coordinatorEndpoint, logger) => {
23
23
  const endpoint = device.getEndpoint(3) || device.getEndpoint(1);
24
24
  const binds = ['genBasic', 'genIdentify', 'genPowerCfg', 'genTime', 'hvacThermostat', 'hvacUserInterfaceCfg'];
package/lib/exposes.js CHANGED
@@ -391,7 +391,8 @@ class Climate extends Base {
391
391
  return this;
392
392
  }
393
393
 
394
- withLocalTemperatureCalibration(min, max, step, access=a.ALL) {
394
+ withLocalTemperatureCalibration(min=-12.8, max=12.7, step=0.1, access=a.ALL) {
395
+ // For devices following the ZCL local_temperature_calibration is an int8, so min = -12.8 and max 12.7
395
396
  assert(!this.endpoint, 'Cannot add feature after adding endpoint');
396
397
  this.features.push(new Numeric('local_temperature_calibration', access)
397
398
  .withValueMin(min).withValueMax(max).withValueStep(step).withUnit('°C').withDescription('Offset to be used in the local_temperature'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "15.0.32",
3
+ "version": "15.0.33",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [