zigbee-herdsman-converters 14.0.358 → 14.0.359

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.
@@ -89,6 +89,10 @@ const converters = {
89
89
  result[postfixWithEndpointName('control_sequence_of_operation', msg, model)] =
90
90
  constants.thermostatControlSequenceOfOperations[msg.data['ctrlSeqeOfOper']];
91
91
  }
92
+ if (msg.data.hasOwnProperty('programingOperMode')) {
93
+ result[postfixWithEndpointName('programming_operation_mode', msg, model)] =
94
+ constants.thermostatProgrammingOperationModes[msg.data['programingOperMode']];
95
+ }
92
96
  if (msg.data.hasOwnProperty('systemMode')) {
93
97
  result[postfixWithEndpointName('system_mode', msg, model)] = constants.thermostatSystemModes[msg.data['systemMode']];
94
98
  }
@@ -1154,6 +1154,20 @@ const converters = {
1154
1154
  await entity.read('hvacThermostat', ['ctrlSeqeOfOper']);
1155
1155
  },
1156
1156
  },
1157
+ thermostat_programming_operation_mode: {
1158
+ key: ['programming_operation_mode'],
1159
+ convertSet: async (entity, key, value, meta) => {
1160
+ const val = utils.getKey(constants.thermostatProgrammingOperationModes, value, undefined, Number);
1161
+ if (val === undefined) {
1162
+ throw new Error('Programming operation mode invalid, must be one of: ' +
1163
+ Object.values(constants.thermostatProgrammingOperationModes).join(', '));
1164
+ }
1165
+ await entity.write('hvacThermostat', {programingOperMode: val});
1166
+ },
1167
+ convertGet: async (entity, key, meta) => {
1168
+ await entity.read('hvacThermostat', ['programingOperMode']);
1169
+ },
1170
+ },
1157
1171
  thermostat_temperature_display_mode: {
1158
1172
  key: ['temperature_display_mode'],
1159
1173
  convertSet: async (entity, key, value, meta) => {
@@ -15,14 +15,15 @@ module.exports = [
15
15
  model: '014G2461',
16
16
  vendor: 'Danfoss',
17
17
  description: 'Ally thermostat',
18
- fromZigbee: [fz.battery, fz.thermostat, fz.hvac_user_interface, fz.danfoss_thermostat],
18
+ fromZigbee: [fz.battery, fz.thermostat, fz.thermostat_weekly_schedule, fz.hvac_user_interface, fz.danfoss_thermostat],
19
19
  toZigbee: [tz.danfoss_thermostat_occupied_heating_setpoint, tz.thermostat_local_temperature, tz.danfoss_mounted_mode_active,
20
20
  tz.danfoss_mounted_mode_control, tz.danfoss_thermostat_vertical_orientation, tz.danfoss_algorithm_scale_factor,
21
21
  tz.danfoss_heat_available, tz.danfoss_heat_required, tz.danfoss_day_of_week, tz.danfoss_trigger_time,
22
22
  tz.danfoss_window_open_internal, tz.danfoss_window_open_external, tz.danfoss_load_estimate,
23
23
  tz.danfoss_viewing_direction, tz.danfoss_external_measured_room_sensor, tz.danfoss_radiator_covered,
24
- tz.thermostat_keypad_lockout, tz.thermostat_system_mode, tz.danfoss_load_balancing_enable, tz.danfoss_load_room_mean],
25
- exposes: [e.battery(), e.keypad_lockout(),
24
+ tz.thermostat_keypad_lockout, tz.thermostat_system_mode, tz.danfoss_load_balancing_enable, tz.danfoss_load_room_mean,
25
+ tz.thermostat_weekly_schedule, tz.thermostat_clear_weekly_schedule, tz.thermostat_programming_operation_mode],
26
+ exposes: [e.battery(), e.keypad_lockout(), e.programming_operation_mode(),
26
27
  exposes.binary('mounted_mode_active', ea.STATE_GET, true, false)
27
28
  .withDescription('Is the unit in mounting mode. This is set to `false` for mounted (already on ' +
28
29
  'the radiator) or `true` for not mounted (after factory reset)'),
package/devices/hive.js CHANGED
@@ -156,14 +156,15 @@ module.exports = [
156
156
  model: 'UK7004240',
157
157
  vendor: 'Hive',
158
158
  description: 'Radiator valve based on Danfos Ally',
159
- fromZigbee: [fz.battery, fz.thermostat, fz.hvac_user_interface, fz.danfoss_thermostat],
159
+ fromZigbee: [fz.battery, fz.thermostat, fz.thermostat_weekly_schedule, fz.hvac_user_interface, fz.danfoss_thermostat],
160
160
  toZigbee: [tz.danfoss_thermostat_occupied_heating_setpoint, tz.thermostat_local_temperature, tz.danfoss_mounted_mode_active,
161
161
  tz.danfoss_mounted_mode_control, tz.danfoss_thermostat_vertical_orientation, tz.danfoss_algorithm_scale_factor,
162
162
  tz.danfoss_heat_available, tz.danfoss_heat_required, tz.danfoss_day_of_week, tz.danfoss_trigger_time,
163
163
  tz.danfoss_window_open_internal, tz.danfoss_window_open_external, tz.danfoss_load_estimate,
164
164
  tz.danfoss_viewing_direction, tz.danfoss_external_measured_room_sensor, tz.thermostat_keypad_lockout,
165
- tz.thermostat_system_mode, tz.danfoss_load_balancing_enable, tz.danfoss_load_room_mean],
166
- exposes: [e.battery(), e.keypad_lockout(),
165
+ tz.thermostat_system_mode, tz.danfoss_load_balancing_enable, tz.danfoss_load_room_mean,
166
+ tz.thermostat_weekly_schedule, tz.thermostat_clear_weekly_schedule, tz.thermostat_programming_operation_mode],
167
+ exposes: [e.battery(), e.keypad_lockout(), e.programming_operation_mode(),
167
168
  exposes.binary('mounted_mode_active', ea.STATE_GET, true, false)
168
169
  .withDescription('Is the unit in mounting mode. This is set to `false` for mounted (already on ' +
169
170
  'the radiator) or `true` for not mounted (after factory reset)'),
package/devices/neo.js CHANGED
@@ -7,8 +7,7 @@ const tuya = require('../lib/tuya');
7
7
 
8
8
  module.exports = [
9
9
  {
10
- fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_d0yu2xgi'},
11
- {modelID: 'TS0601', manufacturerName: '_TZE200_t1blo2bj'}],
10
+ fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_d0yu2xgi'}],
12
11
  zigbeeModel: ['0yu2xgi'],
13
12
  model: 'NAS-AB02B0',
14
13
  vendor: 'Neo',
package/devices/popp.js CHANGED
@@ -15,14 +15,15 @@ module.exports = [
15
15
  model: '701721',
16
16
  vendor: 'Popp',
17
17
  description: 'Smart thermostat',
18
- fromZigbee: [fz.battery, fz.thermostat, fz.hvac_user_interface, fz.danfoss_thermostat],
18
+ fromZigbee: [fz.battery, fz.thermostat, fz.thermostat_weekly_schedule, fz.hvac_user_interface, fz.danfoss_thermostat],
19
19
  toZigbee: [tz.danfoss_thermostat_occupied_heating_setpoint, tz.thermostat_local_temperature, tz.danfoss_mounted_mode_active,
20
20
  tz.danfoss_mounted_mode_control, tz.danfoss_thermostat_vertical_orientation, tz.danfoss_algorithm_scale_factor,
21
21
  tz.danfoss_heat_available, tz.danfoss_heat_required, tz.danfoss_day_of_week, tz.danfoss_trigger_time,
22
22
  tz.danfoss_window_open_internal, tz.danfoss_window_open_external, tz.danfoss_load_estimate,
23
23
  tz.danfoss_viewing_direction, tz.danfoss_external_measured_room_sensor, tz.thermostat_keypad_lockout,
24
- tz.thermostat_system_mode, tz.danfoss_load_balancing_enable, tz.danfoss_load_room_mean],
25
- exposes: [e.battery(), e.keypad_lockout(),
24
+ tz.thermostat_system_mode, tz.danfoss_load_balancing_enable, tz.danfoss_load_room_mean,
25
+ tz.thermostat_weekly_schedule, tz.thermostat_clear_weekly_schedule, tz.thermostat_programming_operation_mode],
26
+ exposes: [e.battery(), e.keypad_lockout(), e.programming_operation_mode(),
26
27
  exposes.binary('mounted_mode_active', ea.STATE_GET, true, false)
27
28
  .withDescription('Is the unit in mounting mode. This is set to `false` for mounted (already on ' +
28
29
  'the radiator) or `true` for not mounted (after factory reset)'),
package/lib/constants.js CHANGED
@@ -21,6 +21,11 @@ const thermostatControlSequenceOfOperations = {
21
21
  5: 'cooling_and_heating_4-pipes_with_reheat',
22
22
  };
23
23
 
24
+ const thermostatProgrammingOperationModes = {
25
+ 0: 'setpoint',
26
+ 1: 'schedule',
27
+ };
28
+
24
29
  const thermostatSystemModes = {
25
30
  0: 'off',
26
31
  1: 'auto',
@@ -247,6 +252,7 @@ module.exports = {
247
252
  repInterval,
248
253
  defaultBindGroup,
249
254
  thermostatControlSequenceOfOperations,
255
+ thermostatProgrammingOperationModes,
250
256
  thermostatSystemModes,
251
257
  thermostatRunningStates,
252
258
  thermostatRunningMode,
package/lib/exposes.js CHANGED
@@ -574,6 +574,7 @@ module.exports = {
574
574
  power_outage_memory: () => new Binary('power_outage_memory', access.ALL, true, false).withDescription('Enable/disable the power outage memory, this recovers the on/off mode after power failure'),
575
575
  presence: () => new Binary('presence', access.STATE, true, false).withDescription('Indicates whether the device detected presence'),
576
576
  pressure: () => new Numeric('pressure', access.STATE).withUnit('hPa').withDescription('The measured atmospheric pressure'),
577
+ programming_operation_mode: () => new Enum('programming_operation_mode', access.ALL, ['setpoint', 'schedule']).withDescription('Controls how programming affects the thermostat. Possible values: setpoint (only use specified setpoint), schedule (follow programmed setpoint schedule). Changing this value does not clear programmed schedules.'),
577
578
  smoke: () => new Binary('smoke', access.STATE, true, false).withDescription('Indicates whether the device detected smoke'),
578
579
  soil_moisture: () => new Numeric('soil_moisture', access.STATE).withUnit('%').withDescription('Measured soil moisture value'),
579
580
  sos: () => new Binary('sos', access.STATE, true, false).withDescription('SOS alarm'),