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
This commit is contained in:
Martidjen 2021-03-30 09:35:29 +02:00 committed by GitHub
parent fc8dc038e2
commit 99ab084cdd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 25 additions and 3 deletions

View file

@ -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()

View file

@ -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),

View file

@ -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"

View file

@ -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"
}
}
}

View file

@ -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