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.
- package/converters/fromZigbee.js +4 -0
- package/converters/toZigbee.js +14 -0
- package/devices/danfoss.js +4 -3
- package/devices/hive.js +4 -3
- package/devices/neo.js +1 -2
- package/devices/popp.js +4 -3
- package/lib/constants.js +6 -0
- package/lib/exposes.js +1 -0
- package/npm-shrinkwrap.json +542 -530
- package/package.json +2 -2
package/converters/fromZigbee.js
CHANGED
|
@@ -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
|
}
|
package/converters/toZigbee.js
CHANGED
|
@@ -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) => {
|
package/devices/danfoss.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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'),
|