From 99ab084cdde58912dfbfe38f656ba793de3362a1 Mon Sep 17 00:00:00 2001 From: Martidjen Date: Tue, 30 Mar 2021 09:35:29 +0200 Subject: [PATCH] Add opentherm_gw option for setpoint override mode (#48465) * Adding option for setpoint override mode Temporary setpoint override mode can now be set on or off. 'Constant' setpoint override mode will be used when Temporary is set to off * Changes after review comment Added default value for the setpoint override mode --- homeassistant/components/opentherm_gw/climate.py | 5 ++++- .../components/opentherm_gw/config_flow.py | 13 ++++++++++++- homeassistant/components/opentherm_gw/const.py | 1 + homeassistant/components/opentherm_gw/strings.json | 3 ++- tests/components/opentherm_gw/test_config_flow.py | 6 ++++++ 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/opentherm_gw/climate.py b/homeassistant/components/opentherm_gw/climate.py index 1253fe4c6d2..294088ee608 100644 --- a/homeassistant/components/opentherm_gw/climate.py +++ b/homeassistant/components/opentherm_gw/climate.py @@ -32,6 +32,7 @@ from .const import ( CONF_FLOOR_TEMP, CONF_READ_PRECISION, CONF_SET_PRECISION, + CONF_TEMPORARY_OVRD_MODE, DATA_GATEWAYS, DATA_OPENTHERM_GW, ) @@ -69,6 +70,7 @@ class OpenThermClimate(ClimateEntity): self.floor_temp = options.get(CONF_FLOOR_TEMP, DEFAULT_FLOOR_TEMP) self.temp_read_precision = options.get(CONF_READ_PRECISION) self.temp_set_precision = options.get(CONF_SET_PRECISION) + self.temporary_ovrd_mode = options.get(CONF_TEMPORARY_OVRD_MODE, True) self._available = False self._current_operation = None self._current_temperature = None @@ -88,6 +90,7 @@ class OpenThermClimate(ClimateEntity): self.floor_temp = entry.options[CONF_FLOOR_TEMP] self.temp_read_precision = entry.options[CONF_READ_PRECISION] self.temp_set_precision = entry.options[CONF_SET_PRECISION] + self.temporary_ovrd_mode = entry.options[CONF_TEMPORARY_OVRD_MODE] self.async_write_ha_state() async def async_added_to_hass(self): @@ -271,7 +274,7 @@ class OpenThermClimate(ClimateEntity): if temp == self.target_temperature: return self._new_target_temperature = await self._gateway.gateway.set_target_temp( - temp + temp, self.temporary_ovrd_mode ) self.async_write_ha_state() diff --git a/homeassistant/components/opentherm_gw/config_flow.py b/homeassistant/components/opentherm_gw/config_flow.py index 8081d3bf96c..aa764b7ae9e 100644 --- a/homeassistant/components/opentherm_gw/config_flow.py +++ b/homeassistant/components/opentherm_gw/config_flow.py @@ -19,7 +19,12 @@ from homeassistant.core import callback import homeassistant.helpers.config_validation as cv from . import DOMAIN -from .const import CONF_FLOOR_TEMP, CONF_READ_PRECISION, CONF_SET_PRECISION +from .const import ( + CONF_FLOOR_TEMP, + CONF_READ_PRECISION, + CONF_SET_PRECISION, + CONF_TEMPORARY_OVRD_MODE, +) class OpenThermGwConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): @@ -138,6 +143,12 @@ class OpenThermGwOptionsFlow(config_entries.OptionsFlow): [0, PRECISION_TENTHS, PRECISION_HALVES, PRECISION_WHOLE] ), ), + vol.Optional( + CONF_TEMPORARY_OVRD_MODE, + default=self.config_entry.options.get( + CONF_TEMPORARY_OVRD_MODE, True + ), + ): bool, vol.Optional( CONF_FLOOR_TEMP, default=self.config_entry.options.get(CONF_FLOOR_TEMP, False), diff --git a/homeassistant/components/opentherm_gw/const.py b/homeassistant/components/opentherm_gw/const.py index 1a129d1dfbd..09713a69e54 100644 --- a/homeassistant/components/opentherm_gw/const.py +++ b/homeassistant/components/opentherm_gw/const.py @@ -21,6 +21,7 @@ CONF_FLOOR_TEMP = "floor_temperature" CONF_PRECISION = "precision" CONF_READ_PRECISION = "read_precision" CONF_SET_PRECISION = "set_precision" +CONF_TEMPORARY_OVRD_MODE = "temporary_override_mode" DATA_GATEWAYS = "gateways" DATA_OPENTHERM_GW = "opentherm_gw" diff --git a/homeassistant/components/opentherm_gw/strings.json b/homeassistant/components/opentherm_gw/strings.json index 937917608fa..ed9cf05cae8 100644 --- a/homeassistant/components/opentherm_gw/strings.json +++ b/homeassistant/components/opentherm_gw/strings.json @@ -23,7 +23,8 @@ "data": { "floor_temperature": "Floor Temperature", "read_precision": "Read Precision", - "set_precision": "Set Precision" + "set_precision": "Set Precision", + "temporary_override_mode": "Temporary Setpoint Override Mode" } } } diff --git a/tests/components/opentherm_gw/test_config_flow.py b/tests/components/opentherm_gw/test_config_flow.py index 43da10b19cf..6713bfecdaa 100644 --- a/tests/components/opentherm_gw/test_config_flow.py +++ b/tests/components/opentherm_gw/test_config_flow.py @@ -11,6 +11,7 @@ from homeassistant.components.opentherm_gw.const import ( CONF_PRECISION, CONF_READ_PRECISION, CONF_SET_PRECISION, + CONF_TEMPORARY_OVRD_MODE, DOMAIN, ) from homeassistant.const import ( @@ -251,12 +252,14 @@ async def test_options_form(hass): CONF_FLOOR_TEMP: True, CONF_READ_PRECISION: PRECISION_HALVES, CONF_SET_PRECISION: PRECISION_HALVES, + CONF_TEMPORARY_OVRD_MODE: True, }, ) assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY assert result["data"][CONF_READ_PRECISION] == PRECISION_HALVES assert result["data"][CONF_SET_PRECISION] == PRECISION_HALVES + assert result["data"][CONF_TEMPORARY_OVRD_MODE] is True assert result["data"][CONF_FLOOR_TEMP] is True result = await hass.config_entries.options.async_init( @@ -270,6 +273,7 @@ async def test_options_form(hass): assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY assert result["data"][CONF_READ_PRECISION] == 0.0 assert result["data"][CONF_SET_PRECISION] == PRECISION_HALVES + assert result["data"][CONF_TEMPORARY_OVRD_MODE] is True assert result["data"][CONF_FLOOR_TEMP] is True result = await hass.config_entries.options.async_init( @@ -282,10 +286,12 @@ async def test_options_form(hass): CONF_FLOOR_TEMP: False, CONF_READ_PRECISION: PRECISION_TENTHS, CONF_SET_PRECISION: PRECISION_HALVES, + CONF_TEMPORARY_OVRD_MODE: False, }, ) assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY assert result["data"][CONF_READ_PRECISION] == PRECISION_TENTHS assert result["data"][CONF_SET_PRECISION] == PRECISION_HALVES + assert result["data"][CONF_TEMPORARY_OVRD_MODE] is False assert result["data"][CONF_FLOOR_TEMP] is False