zigbee-herdsman-converters 14.0.306 → 14.0.310

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.
@@ -216,4 +216,11 @@ module.exports = [
216
216
  description: 'Vintage LED edison bulb (ST19)',
217
217
  extend: extend.light_onoff_brightness(),
218
218
  },
219
+ {
220
+ zigbeeModel: ['E1F-N9G'],
221
+ model: 'E1F-N9G',
222
+ vendor: 'Sengled',
223
+ description: 'Smart LED filament candle (E12)',
224
+ extend: extend.light_onoff_brightness(),
225
+ },
219
226
  ];
package/devices/sinope.js CHANGED
@@ -29,12 +29,12 @@ module.exports = [
29
29
  'haElectricalMeasurement', 'seMetering', 'manuSpecificSinope'];
30
30
 
31
31
  await reporting.bind(endpoint, coordinatorEndpoint, binds);
32
- await reporting.thermostatTemperature(endpoint, {min: 10, max: 300, change: 20});
33
- await reporting.thermostatPIHeatingDemand(endpoint, {min: 10, max: 301, change: 5});
34
- await reporting.thermostatOccupiedHeatingSetpoint(endpoint, {min: 1, max: 302, change: 50});
32
+ await reporting.thermostatTemperature(endpoint);
33
+ await reporting.thermostatPIHeatingDemand(endpoint);
34
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
35
35
 
36
36
  try {
37
- await reporting.thermostatSystemMode(endpoint, {min: 1, max: 0});
37
+ await reporting.thermostatSystemMode(endpoint);
38
38
  await reporting.thermostatRunningState(endpoint);
39
39
  await reporting.readMeteringMultiplierDivisor(endpoint);
40
40
  await reporting.currentSummDelivered(endpoint, {min: 10, max: 303, change: [1, 1]});
@@ -71,9 +71,9 @@ module.exports = [
71
71
  const binds = ['genBasic', 'genIdentify', 'genGroups', 'hvacThermostat', 'hvacUserInterfaceCfg', 'msTemperatureMeasurement',
72
72
  'haElectricalMeasurement', 'seMetering', 'manuSpecificSinope'];
73
73
  await reporting.bind(endpoint, coordinatorEndpoint, binds);
74
- await reporting.thermostatTemperature(endpoint, {min: 10, max: 300, change: 20});
75
- await reporting.thermostatPIHeatingDemand(endpoint, {min: 10, max: 301, change: 5});
76
- await reporting.thermostatOccupiedHeatingSetpoint(endpoint, {min: 1, max: 302, change: 50});
74
+ await reporting.thermostatTemperature(endpoint);
75
+ await reporting.thermostatPIHeatingDemand(endpoint);
76
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
77
77
 
78
78
  try {
79
79
  await reporting.thermostatRunningState(endpoint);
@@ -97,7 +97,7 @@ module.exports = [
97
97
  } catch (error) {/* Do nothing*/}
98
98
 
99
99
  try {
100
- await reporting.thermostatKeypadLockMode(endpoint, {min: 1, max: 0});
100
+ await reporting.thermostatKeypadLockMode(endpoint);
101
101
  } catch (error) {
102
102
  // Not all support this: https://github.com/Koenkk/zigbee2mqtt/issues/3760
103
103
  }
@@ -130,16 +130,16 @@ module.exports = [
130
130
  const binds = ['genBasic', 'genIdentify', 'genGroups', 'hvacThermostat', 'hvacUserInterfaceCfg',
131
131
  'msTemperatureMeasurement', 'manuSpecificSinope'];
132
132
  await reporting.bind(endpoint, coordinatorEndpoint, binds);
133
- await reporting.thermostatTemperature(endpoint, {min: 10, max: 300, change: 20});
134
- await reporting.thermostatPIHeatingDemand(endpoint, {min: 10, max: 301, change: 5});
135
- await reporting.thermostatOccupiedHeatingSetpoint(endpoint, {min: 1, max: 302, change: 50});
133
+ await reporting.thermostatTemperature(endpoint);
134
+ await reporting.thermostatPIHeatingDemand(endpoint);
135
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
136
136
 
137
137
  try {
138
138
  await reporting.thermostatRunningState(endpoint);
139
139
  } catch (error) {/* Not all support this */}
140
140
 
141
141
  try {
142
- await reporting.thermostatKeypadLockMode(endpoint, {min: 1, max: 0});
142
+ await reporting.thermostatKeypadLockMode(endpoint);
143
143
  } catch (error) {
144
144
  // Not all support this: https://github.com/Koenkk/zigbee2mqtt/issues/3760
145
145
  }
@@ -156,14 +156,14 @@ module.exports = [
156
156
  model: 'TH1400ZB',
157
157
  vendor: 'Sinopé',
158
158
  description: 'Zigbee low volt thermostat',
159
- fromZigbee: [fz.legacy.sinope_thermostat_att_report],
159
+ fromZigbee: [fz.legacy.sinope_thermostat_att_report, fz.legacy.sinope_thermostat_state],
160
160
  toZigbee: [tz.thermostat_local_temperature, tz.thermostat_occupied_heating_setpoint, tz.thermostat_temperature_display_mode,
161
161
  tz.thermostat_keypad_lockout, tz.thermostat_system_mode, tz.thermostat_running_state,
162
162
  tz.sinope_thermostat_backlight_autodim_param, tz.sinope_thermostat_time, tz.sinope_thermostat_enable_outdoor_temperature,
163
163
  tz.sinope_thermostat_outdoor_temperature],
164
164
  exposes: [exposes.climate().withSetpoint('occupied_heating_setpoint', 7, 30, 1).withLocalTemperature()
165
- .withSystemMode(['off', 'auto', 'heat']).withRunningState(['idle', 'heat']), exposes.enum('backlight_auto_dim',
166
- ea.SET, ['on demand', 'sensing']).withDescription('Control backlight dimming behavior')],
165
+ .withSystemMode(['off', 'auto', 'heat']).withRunningState(['idle', 'heat']).withPiHeatingDemand(), exposes.enum(
166
+ 'backlight_auto_dim', ea.SET, ['on demand', 'sensing']).withDescription('Control backlight dimming behavior')],
167
167
  configure: async (device, coordinatorEndpoint, logger) => {
168
168
  const endpoint = device.getEndpoint(1);
169
169
  const binds = ['genBasic', 'genIdentify', 'genGroups', 'hvacThermostat', 'hvacUserInterfaceCfg', 'msTemperatureMeasurement'];
@@ -3,6 +3,7 @@ const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/lega
3
3
  const tz = require('../converters/toZigbee');
4
4
  const reporting = require('../lib/reporting');
5
5
  const e = exposes.presets;
6
+ const constants = require('../lib/constants');
6
7
 
7
8
  module.exports = [
8
9
  {
@@ -23,14 +24,18 @@ module.exports = [
23
24
  await reporting.bind(endpoint, coordinatorEndpoint, binds);
24
25
 
25
26
  // Those exact parameters (min/max/change) are required for reporting to work with Stelpro Ki
26
- await reporting.thermostatTemperature(endpoint, {min: 10, max: 60, change: 50});
27
- await reporting.thermostatOccupiedHeatingSetpoint(endpoint, {min: 1, max: 0, change: 50});
28
- await reporting.thermostatSystemMode(endpoint, {min: 1, max: 0});
29
- await reporting.thermostatPIHeatingDemand(endpoint, {min: 1, max: 900, change: 5});
30
- await reporting.thermostatKeypadLockMode(endpoint, {min: 1, max: 0});
27
+ await reporting.thermostatTemperature(endpoint);
28
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
29
+ await reporting.thermostatSystemMode(endpoint);
30
+ await reporting.thermostatPIHeatingDemand(endpoint);
31
+ await reporting.thermostatKeypadLockMode(endpoint);
31
32
  // cluster 0x0201 attribute 0x401c
32
- await endpoint.configureReporting('hvacThermostat', [{attribute: 'StelproSystemMode', minimumReportInterval: 1,
33
- maximumReportInterval: 0}]);
33
+ await endpoint.configureReporting('hvacThermostat', [{
34
+ attribute: 'StelproSystemMode',
35
+ minimumReportInterval: constants.repInterval.MINUTE,
36
+ maximumReportInterval: constants.repInterval.HOUR,
37
+ reportableChange: 1,
38
+ }]);
34
39
  },
35
40
  },
36
41
  {
@@ -51,14 +56,18 @@ module.exports = [
51
56
  await reporting.bind(endpoint, coordinatorEndpoint, binds);
52
57
 
53
58
  // Those exact parameters (min/max/change) are required for reporting to work with Stelpro Ki
54
- await reporting.thermostatTemperature(endpoint, {min: 10, max: 60, change: 50});
55
- await reporting.thermostatOccupiedHeatingSetpoint(endpoint, {min: 1, max: 0, change: 50});
56
- await reporting.thermostatSystemMode(endpoint, {min: 1, max: 0});
57
- await reporting.thermostatPIHeatingDemand(endpoint, {min: 1, max: 900, change: 5});
58
- await reporting.thermostatKeypadLockMode(endpoint, {min: 1, max: 0});
59
+ await reporting.thermostatTemperature(endpoint);
60
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
61
+ await reporting.thermostatSystemMode(endpoint);
62
+ await reporting.thermostatPIHeatingDemand(endpoint);
63
+ await reporting.thermostatKeypadLockMode(endpoint);
59
64
  // cluster 0x0201 attribute 0x401c
60
- await endpoint.configureReporting('hvacThermostat', [{attribute: 'StelproSystemMode',
61
- minimumReportInterval: 1, maximumReportInterval: 0}]);
65
+ await endpoint.configureReporting('hvacThermostat', [{
66
+ attribute: 'StelproSystemMode',
67
+ minimumReportInterval: constants.repInterval.MINUTE,
68
+ maximumReportInterval: constants.repInterval.HOUR,
69
+ reportableChange: 1,
70
+ }]);
62
71
  },
63
72
  },
64
73
  {
@@ -80,15 +89,18 @@ module.exports = [
80
89
  await reporting.bind(endpoint, coordinatorEndpoint, binds);
81
90
 
82
91
  // Those exact parameters (min/max/change) are required for reporting to work with Stelpro Maestro
83
- await reporting.thermostatTemperature(endpoint, {min: 10, max: 60, change: 50});
84
- await reporting.humidity(endpoint, {min: 10, max: 300, change: 1});
85
- await reporting.thermostatOccupiedHeatingSetpoint(endpoint, {min: 1, max: 0, change: 50});
86
- await reporting.thermostatSystemMode(endpoint, {min: 1, max: 0});
87
- await reporting.thermostatPIHeatingDemand(endpoint, {min: 1, max: 900, change: 5});
88
- await reporting.thermostatKeypadLockMode(endpoint, {min: 1, max: 0});
92
+ await reporting.thermostatTemperature(endpoint);
93
+ await reporting.humidity(endpoint);
94
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
95
+ await reporting.thermostatSystemMode(endpoint);
96
+ await reporting.thermostatPIHeatingDemand(endpoint);
97
+ await reporting.thermostatKeypadLockMode(endpoint);
89
98
  // cluster 0x0201 attribute 0x401c
90
99
  await endpoint.configureReporting('hvacThermostat', [{
91
- attribute: 'StelproSystemMode', minimumReportInterval: 1, maximumReportInterval: 0}]);
100
+ attribute: 'StelproSystemMode',
101
+ minimumReportInterval: constants.repInterval.MINUTE,
102
+ maximumReportInterval: constants.repInterval.HOUR,
103
+ reportableChange: 1}]);
92
104
  },
93
105
  },
94
106
  {
@@ -110,15 +122,18 @@ module.exports = [
110
122
  await reporting.bind(endpoint, coordinatorEndpoint, binds);
111
123
 
112
124
  // Those exact parameters (min/max/change) are required for reporting to work with Stelpro Maestro
113
- await reporting.thermostatTemperature(endpoint, {min: 10, max: 60, change: 50});
114
- await reporting.humidity(endpoint, {min: 10, max: 300, change: 1});
115
- await reporting.thermostatOccupiedHeatingSetpoint(endpoint, {min: 1, max: 0, change: 50});
116
- await reporting.thermostatSystemMode(endpoint, {min: 1, max: 0});
117
- await reporting.thermostatPIHeatingDemand(endpoint, {min: 1, max: 900, change: 5});
118
- await reporting.thermostatKeypadLockMode(endpoint, {min: 1, max: 0});
125
+ await reporting.thermostatTemperature(endpoint);
126
+ await reporting.humidity(endpoint);
127
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
128
+ await reporting.thermostatSystemMode(endpoint);
129
+ await reporting.thermostatPIHeatingDemand(endpoint);
130
+ await reporting.thermostatKeypadLockMode(endpoint);
119
131
  // cluster 0x0201 attribute 0x401c
120
132
  await endpoint.configureReporting('hvacThermostat', [{
121
- attribute: 'StelproSystemMode', minimumReportInterval: 1, maximumReportInterval: 0}]);
133
+ attribute: 'StelproSystemMode',
134
+ minimumReportInterval: constants.repInterval.MINUTE,
135
+ maximumReportInterval: constants.repInterval.HOUR,
136
+ reportableChange: 1}]);
122
137
  },
123
138
  },
124
139
  ];
package/devices/tuya.js CHANGED
@@ -749,14 +749,23 @@ module.exports = [
749
749
  },
750
750
  {
751
751
  zigbeeModel: ['kud7u2l'],
752
- fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_ckud7u2l'}, {modelID: 'TS0601', manufacturerName: '_TZE200_ywdxldoj'},
753
- {modelID: 'TS0601', manufacturerName: '_TZE200_cwnjrr72'}, {modelID: 'TS0601', manufacturerName: '_TZE200_chyvmhay'},
754
- {modelID: 'TS0601', manufacturerName: '_TZE200_pvvbommb'}],
752
+ fingerprint: [
753
+ {modelID: 'TS0601', manufacturerName: '_TZE200_ckud7u2l'},
754
+ {modelID: 'TS0601', manufacturerName: '_TZE200_ywdxldoj'},
755
+ {modelID: 'TS0601', manufacturerName: '_TZE200_cwnjrr72'},
756
+ {modelID: 'TS0601', manufacturerName: '_TZE200_chyvmhay'},
757
+ {modelID: 'TS0601', manufacturerName: '_TZE200_pvvbommb'},
758
+ {modelID: 'TS0601', manufacturerName: '_TZE200_2atgpdho'}, // HY367
759
+ ],
755
760
  model: 'TS0601_thermostat',
756
761
  vendor: 'TuYa',
757
762
  description: 'Radiator valve with thermostat',
758
- whiteLabel: [{vendor: 'Moes', model: 'HY368'}, {vendor: 'Moes', model: 'HY369RT'}, {vendor: 'SHOJZJ', model: '378RT'},
759
- {vendor: 'Silvercrest', model: 'TVR01'}],
763
+ whiteLabel: [
764
+ {vendor: 'Moes', model: 'HY368'},
765
+ {vendor: 'Moes', model: 'HY369RT'},
766
+ {vendor: 'SHOJZJ', model: '378RT'},
767
+ {vendor: 'Silvercrest', model: 'TVR01'},
768
+ ],
760
769
  meta: {tuyaThermostatPreset: tuya.thermostatPresets, tuyaThermostatSystemMode: tuya.thermostatSystemModes3},
761
770
  ota: ota.zigbeeOTA,
762
771
  onEvent: tuya.onEventSetLocalTime,
@@ -1503,8 +1512,8 @@ module.exports = [
1503
1512
  exposes.numeric('countdown_timer', ea.STATE_SET).withValueMin(0).withValueMax(86400).withUnit('s'),
1504
1513
  exposes.numeric('voltage', ea.STATE).withUnit('V'),
1505
1514
  exposes.numeric('voltage_rms', ea.STATE).withUnit('V'),
1506
- exposes.numeric('current', ea.STATE).withUnit('mA'),
1507
- exposes.numeric('current_average', ea.STATE).withUnit('mA'),
1515
+ exposes.numeric('current', ea.STATE).withUnit('A'),
1516
+ exposes.numeric('current_average', ea.STATE).withUnit('A'),
1508
1517
  exposes.numeric('power', ea.STATE).withUnit('W'),
1509
1518
  exposes.numeric('energy_consumed', ea.STATE).withUnit('kWh'),
1510
1519
  exposes.numeric('temperature', ea.STATE).withUnit('°C'),
@@ -31,10 +31,10 @@ module.exports = [
31
31
  await reporting.bind(endpoint, coordinatorEndpoint, ['genBasic', 'genPowerCfg', 'genIdentify', 'genTime', 'hvacThermostat']);
32
32
 
33
33
  // standard ZCL attributes
34
- await reporting.batteryPercentageRemaining(endpoint, {min: 60, max: 43200, change: 1});
35
- await reporting.thermostatTemperature(endpoint, {min: 90, max: 900, change: 10});
36
- await reporting.thermostatOccupiedHeatingSetpoint(endpoint, {min: 0, max: 65534, change: 1});
37
- await reporting.thermostatPIHeatingDemand(endpoint, {min: 60, max: 3600, change: 1});
34
+ await reporting.batteryPercentageRemaining(endpoint);
35
+ await reporting.thermostatTemperature(endpoint);
36
+ await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
37
+ await reporting.thermostatPIHeatingDemand(endpoint);
38
38
 
39
39
  // manufacturer attributes
40
40
  await endpoint.configureReporting('hvacThermostat', [{attribute: 'viessmannWindowOpenInternal', minimumReportInterval: 60,
package/devices/xiaomi.js CHANGED
@@ -801,7 +801,7 @@ module.exports = [
801
801
  vendor: 'Xiaomi',
802
802
  description: 'Aqara temperature, humidity and pressure sensor',
803
803
  meta: {battery: {voltageToPercentage: '3V_2100'}},
804
- fromZigbee: [fz.xiaomi_battery, fz.xiaomi_temperature, fz.humidity, fz.WSDCGQ11LM_pressure, fz.WSDCGQ01LM_WSDCGQ11LM_interval],
804
+ fromZigbee: [fz.xiaomi_battery, fz.xiaomi_temperature, fz.humidity, fz.pressure, fz.WSDCGQ01LM_WSDCGQ11LM_interval],
805
805
  toZigbee: [],
806
806
  exposes: [e.battery(), e.temperature(), e.humidity(), e.pressure(), e.battery_voltage()],
807
807
  configure: async (device, coordinatorEndpoint, logger) => {
@@ -1401,23 +1401,14 @@ module.exports = [
1401
1401
  model: 'DLKZMK11LM',
1402
1402
  vendor: 'Xiaomi',
1403
1403
  description: 'Aqara single switch module T1 (with neutral)',
1404
- fromZigbee: [fz.on_off, fz.metering, fz.electrical_measurement, fz.device_temperature, fz.xiaomi_switch_type,
1405
- fz.xiaomi_switch_power_outage_memory],
1406
- exposes: [e.switch(), e.energy(), e.power(), e.device_temperature(), e.power_outage_memory(), e.switch_type()],
1407
- toZigbee: [tz.xiaomi_switch_type, tz.on_off, tz.xiaomi_switch_power_outage_memory],
1404
+ fromZigbee: [fz.on_off, fz.xiaomi_power, fz.xiaomi_switch_type, fz.xiaomi_switch_opple_basic],
1405
+ toZigbee: [tz.on_off, tz.xiaomi_power, tz.xiaomi_switch_type, tz.xiaomi_switch_power_outage_memory, tz.xiaomi_led_disabled_night],
1406
+ exposes: [e.switch(), e.power().withAccess(ea.STATE_GET), e.energy(), e.temperature().withAccess(ea.STATE),
1407
+ e.voltage().withAccess(ea.STATE), e.power_outage_memory(), e.led_disabled_night(), e.switch_type()],
1408
1408
  configure: async (device, coordinatorEndpoint, logger) => {
1409
- const endpoint = device.getEndpoint(1);
1410
- await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering', 'genDeviceTempCfg']);
1411
- await reporting.onOff(endpoint);
1412
- // Gives UNSUPPORTED_ATTRIBUTE on reporting.readEletricalMeasurementMultiplierDivisors.
1413
- await endpoint.read('haElectricalMeasurement', ['acPowerMultiplier', 'acPowerDivisor']);
1414
- await reporting.readMeteringMultiplierDivisor(endpoint);
1415
- await reporting.currentSummDelivered(endpoint);
1416
- await reporting.activePower(endpoint, {min: 5, max: 600, change: 10});
1417
- await reporting.deviceTemperature(endpoint);
1418
- device.powerSource = 'Mains (single phase)';
1419
- device.save();
1409
+ await device.getEndpoint(1).write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
1420
1410
  },
1411
+ ota: ota.zigbeeOTA,
1421
1412
  },
1422
1413
  {
1423
1414
  zigbeeModel: ['lumi.switch.l0agl1'],
@@ -1769,4 +1760,24 @@ module.exports = [
1769
1760
  await endpoint1.write('aqaraOpple', {'mode': 1}, {manufacturerCode: 0x115f, disableResponse: true});
1770
1761
  },
1771
1762
  },
1763
+ {
1764
+ zigbeeModel: ['lumi.remote.acn004'],
1765
+ model: 'WXKG17LM',
1766
+ vendor: 'Xiaomi',
1767
+ description: 'Aqara E1 double key wireless switch',
1768
+ meta: {battery: {voltageToPercentage: '3V_2100'}},
1769
+ exposes: [e.battery(), e.battery_voltage(),
1770
+ e.action(['single_left', 'single_right', 'single_both', 'double_left', 'double_right', 'hold_left', 'hold_right']),
1771
+ // eslint-disable-next-line max-len
1772
+ exposes.enum('click_mode', ea.SET, ['fast', 'multi']).withDescription('Click mode, fast: only supports single click which will be send immediately after clicking, multi: supports more events like double and hold'),
1773
+ ],
1774
+ fromZigbee: [fz.xiaomi_multistate_action, fz.aqara_opple_report],
1775
+ toZigbee: [tz.xiaomi_switch_click_mode],
1776
+ onEvent: preventReset,
1777
+ configure: async (device, coordinatorEndpoint, logger) => {
1778
+ const endpoint1 = device.getEndpoint(1);
1779
+ // set multiclick mode
1780
+ await endpoint1.write('aqaraOpple', {0x0125: {value: 0x02, type: 0x20}}, {manufacturerCode: 0x115f});
1781
+ },
1782
+ },
1772
1783
  ];
package/lib/exposes.js CHANGED
@@ -477,8 +477,8 @@ module.exports = {
477
477
  expose_pin: () => new Binary(`expose_pin`, access.SET, true, false).withDescription(`Expose pin of this lock in the published payload (default false).`),
478
478
  occupancy_timeout: () => new Numeric(`occupancy_timeout`, access.SET).withValueMin(0).withDescription('Time in seconds after which occupancy is cleared after detecting it (default 90 seconds).'),
479
479
  vibration_timeout: () => new Numeric(`vibration_timeout`, access.SET).withValueMin(0).withDescription('Time in seconds after which vibration is cleared after detecting it (default 90 seconds).'),
480
- simulated_brightness: () => new Composite('simulated_brightness', 'simulated_brightness')
481
- .withDescription('Simulate a brightness value. If this device provides a brightness_move_up or brightness_move_down action it is possible to specify the update interval and delta.')
480
+ simulated_brightness: (extraNote='') => new Composite('simulated_brightness', 'simulated_brightness')
481
+ .withDescription(`Simulate a brightness value. If this device provides a brightness_move_up or brightness_move_down action it is possible to specify the update interval and delta.${extraNote}`)
482
482
  .withFeature(new Numeric('delta', access.SET).withValueMin(0).withDescription('Delta per interval, 20 by default'))
483
483
  .withFeature(new Numeric('interval', access.SET).withValueMin(0).withUnit('ms').withDescription('Interval duration')),
484
484
  no_occupancy_since: () => new List(`no_occupancy_since`, access.SET).withDescription('Sends a message the last time occupancy was detected. When setting this for example to [10, 60] a `{"no_occupancy_since": 10}` will be send after 10 seconds and a `{"no_occupancy_since": 60}` after 60 seconds.'),
package/lib/legacy.js CHANGED
@@ -885,7 +885,7 @@ const fromZigbee = {
885
885
  cmd_move: {
886
886
  cluster: 'genLevelCtrl',
887
887
  type: 'commandMove',
888
- options: [exposes.options.legacy()],
888
+ options: [exposes.options.legacy(), exposes.options.simulated_brightness(' Note: will only work when legacy: false is set.')],
889
889
  convert: (model, msg, publish, options, meta) => {
890
890
  if (hasAlreadyProcessedMessage(msg)) return;
891
891
  if (isLegacyEnabled(options)) {
@@ -900,7 +900,7 @@ const fromZigbee = {
900
900
  cmd_move_with_onoff: {
901
901
  cluster: 'genLevelCtrl',
902
902
  type: 'commandMoveWithOnOff',
903
- options: [exposes.options.legacy()],
903
+ options: [exposes.options.legacy(), exposes.options.simulated_brightness(' Note: will only work when legacy: false is set.')],
904
904
  convert: (model, msg, publish, options, meta) => {
905
905
  if (isLegacyEnabled(options)) {
906
906
  ictcg1(model, msg, publish, options, 'move');