rename heating program type

This commit is contained in:
Christopher Fenner
2024-02-16 09:11:23 +01:00
parent f734f75687
commit 861d509c7b
3 changed files with 78 additions and 50 deletions

View File

@@ -40,7 +40,7 @@ from homeassistant.helpers import entity_platform
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DEVICE_LIST, DOMAIN, Program
from .const import DEVICE_LIST, DOMAIN, HeatingProgram
from .entity import ViCareEntity
from .types import ViCareDevice
from .utils import get_burners, get_circuits, get_compressors
@@ -76,17 +76,17 @@ VICARE_TO_HA_HVAC_HEATING: dict[str, HVACMode] = {
}
VICARE_TO_HA_PRESET_HEATING = {
Program.COMFORT: PRESET_COMFORT,
Program.ECO: PRESET_ECO,
Program.NORMAL: PRESET_HOME,
Program.REDUCED: PRESET_SLEEP,
HeatingProgram.COMFORT: PRESET_COMFORT,
HeatingProgram.ECO: PRESET_ECO,
HeatingProgram.NORMAL: PRESET_HOME,
HeatingProgram.REDUCED: PRESET_SLEEP,
}
HA_TO_VICARE_PRESET_HEATING = {
PRESET_COMFORT: Program.COMFORT,
PRESET_ECO: Program.ECO,
PRESET_HOME: Program.NORMAL,
PRESET_SLEEP: Program.REDUCED,
PRESET_COMFORT: HeatingProgram.COMFORT,
PRESET_ECO: HeatingProgram.ECO,
PRESET_HOME: HeatingProgram.NORMAL,
PRESET_SLEEP: HeatingProgram.REDUCED,
}
@@ -310,9 +310,11 @@ class ViCareClimate(ViCareEntity, ClimateEntity):
_LOGGER.debug("Current preset %s", self._current_program)
if self._current_program and self._current_program not in [
Program.NORMAL,
Program.REDUCED,
Program.STANDBY,
HeatingProgram.NORMAL,
HeatingProgram.NORMAL_HEATING,
HeatingProgram.REDUCED,
HeatingProgram.REDUCED_HEATING,
HeatingProgram.STANDBY,
]:
# We can't deactivate "normal", "reduced" or "standby"
_LOGGER.debug("deactivating %s", self._current_program)
@@ -329,9 +331,11 @@ class ViCareClimate(ViCareEntity, ClimateEntity):
_LOGGER.debug("Setting preset to %s / %s", preset_mode, target_program)
if target_program not in [
Program.NORMAL,
Program.REDUCED,
Program.STANDBY,
HeatingProgram.NORMAL,
HeatingProgram.NORMAL_HEATING,
HeatingProgram.REDUCED,
HeatingProgram.REDUCED_HEATING,
HeatingProgram.STANDBY,
]:
# And we can't explicitly activate "normal", "reduced" or "standby", either
_LOGGER.debug("activating %s", target_program)

View File

@@ -32,7 +32,7 @@ VICARE_UNIT_TO_UNIT_OF_MEASUREMENT = {
}
class Program(enum.StrEnum):
class HeatingProgram(enum.StrEnum):
"""ViCare preset heating programs.
As listed inhttps://github.com/somm15/PyViCare/blob/63f9f7fea505fdf9a26c77c6cd0bff889abcdb05/PyViCare/PyViCareHeatingDevice.py#L606

View File

@@ -29,7 +29,7 @@ from homeassistant.const import EntityCategory, UnitOfTemperature
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DEVICE_LIST, DOMAIN, Program
from .const import DEVICE_LIST, DOMAIN, HeatingProgram
from .entity import ViCareEntity
from .types import ViCareDevice, ViCareRequiredKeysMixin
from .utils import get_circuits, is_supported
@@ -89,13 +89,19 @@ CIRCUIT_ENTITY_DESCRIPTIONS: tuple[ViCareNumberEntityDescription, ...] = (
entity_category=EntityCategory.CONFIG,
device_class=NumberDeviceClass.TEMPERATURE,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
value_getter=lambda api: api.getDesiredTemperatureForProgram(Program.NORMAL),
value_setter=lambda api, value: api.setProgramTemperature(
Program.NORMAL, value
value_getter=lambda api: api.getDesiredTemperatureForProgram(
HeatingProgram.NORMAL
),
min_value_getter=lambda api: api.getProgramMinTemperature(Program.NORMAL),
max_value_getter=lambda api: api.getProgramMaxTemperature(Program.NORMAL),
stepping_getter=lambda api: api.getProgramStepping(Program.NORMAL),
value_setter=lambda api, value: api.setProgramTemperature(
HeatingProgram.NORMAL, value
),
min_value_getter=lambda api: api.getProgramMinTemperature(
HeatingProgram.NORMAL
),
max_value_getter=lambda api: api.getProgramMaxTemperature(
HeatingProgram.NORMAL
),
stepping_getter=lambda api: api.getProgramStepping(HeatingProgram.NORMAL),
),
ViCareNumberEntityDescription(
key="reduced_temperature",
@@ -103,13 +109,19 @@ CIRCUIT_ENTITY_DESCRIPTIONS: tuple[ViCareNumberEntityDescription, ...] = (
entity_category=EntityCategory.CONFIG,
device_class=NumberDeviceClass.TEMPERATURE,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
value_getter=lambda api: api.getDesiredTemperatureForProgram(Program.REDUCED),
value_setter=lambda api, value: api.setProgramTemperature(
Program.REDUCED, value
value_getter=lambda api: api.getDesiredTemperatureForProgram(
HeatingProgram.REDUCED
),
min_value_getter=lambda api: api.getProgramMinTemperature(Program.REDUCED),
max_value_getter=lambda api: api.getProgramMaxTemperature(Program.REDUCED),
stepping_getter=lambda api: api.getProgramStepping(Program.REDUCED),
value_setter=lambda api, value: api.setProgramTemperature(
HeatingProgram.REDUCED, value
),
min_value_getter=lambda api: api.getProgramMinTemperature(
HeatingProgram.REDUCED
),
max_value_getter=lambda api: api.getProgramMaxTemperature(
HeatingProgram.REDUCED
),
stepping_getter=lambda api: api.getProgramStepping(HeatingProgram.REDUCED),
),
ViCareNumberEntityDescription(
key="comfort_temperature",
@@ -117,13 +129,19 @@ CIRCUIT_ENTITY_DESCRIPTIONS: tuple[ViCareNumberEntityDescription, ...] = (
entity_category=EntityCategory.CONFIG,
device_class=NumberDeviceClass.TEMPERATURE,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
value_getter=lambda api: api.getDesiredTemperatureForProgram(Program.COMFORT),
value_setter=lambda api, value: api.setProgramTemperature(
Program.COMFORT, value
value_getter=lambda api: api.getDesiredTemperatureForProgram(
HeatingProgram.COMFORT
),
min_value_getter=lambda api: api.getProgramMinTemperature(Program.COMFORT),
max_value_getter=lambda api: api.getProgramMaxTemperature(Program.COMFORT),
stepping_getter=lambda api: api.getProgramStepping(Program.COMFORT),
value_setter=lambda api, value: api.setProgramTemperature(
HeatingProgram.COMFORT, value
),
min_value_getter=lambda api: api.getProgramMinTemperature(
HeatingProgram.COMFORT
),
max_value_getter=lambda api: api.getProgramMaxTemperature(
HeatingProgram.COMFORT
),
stepping_getter=lambda api: api.getProgramStepping(HeatingProgram.COMFORT),
),
ViCareNumberEntityDescription(
key="normal_heating_temperature",
@@ -132,18 +150,20 @@ CIRCUIT_ENTITY_DESCRIPTIONS: tuple[ViCareNumberEntityDescription, ...] = (
device_class=NumberDeviceClass.TEMPERATURE,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
value_getter=lambda api: api.getDesiredTemperatureForProgram(
Program.NORMAL_HEATING
HeatingProgram.NORMAL_HEATING
),
value_setter=lambda api, value: api.setProgramTemperature(
Program.NORMAL_HEATING, value
HeatingProgram.NORMAL_HEATING, value
),
min_value_getter=lambda api: api.getProgramMinTemperature(
Program.NORMAL_HEATING
HeatingProgram.NORMAL_HEATING
),
max_value_getter=lambda api: api.getProgramMaxTemperature(
Program.NORMAL_HEATING
HeatingProgram.NORMAL_HEATING
),
stepping_getter=lambda api: api.getProgramStepping(
HeatingProgram.NORMAL_HEATING
),
stepping_getter=lambda api: api.getProgramStepping(Program.NORMAL_HEATING),
),
ViCareNumberEntityDescription(
key="reduced_heating_temperature",
@@ -152,18 +172,20 @@ CIRCUIT_ENTITY_DESCRIPTIONS: tuple[ViCareNumberEntityDescription, ...] = (
device_class=NumberDeviceClass.TEMPERATURE,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
value_getter=lambda api: api.getDesiredTemperatureForProgram(
Program.REDUCED_HEATING
HeatingProgram.REDUCED_HEATING
),
value_setter=lambda api, value: api.setProgramTemperature(
Program.NORMAL_HEATING, value
HeatingProgram.NORMAL_HEATING, value
),
min_value_getter=lambda api: api.getProgramMinTemperature(
Program.REDUCED_HEATING
HeatingProgram.REDUCED_HEATING
),
max_value_getter=lambda api: api.getProgramMaxTemperature(
Program.REDUCED_HEATING
HeatingProgram.REDUCED_HEATING
),
stepping_getter=lambda api: api.getProgramStepping(
HeatingProgram.REDUCED_HEATING
),
stepping_getter=lambda api: api.getProgramStepping(Program.REDUCED_HEATING),
),
ViCareNumberEntityDescription(
key="comfort_heating_temperature",
@@ -172,18 +194,20 @@ CIRCUIT_ENTITY_DESCRIPTIONS: tuple[ViCareNumberEntityDescription, ...] = (
device_class=NumberDeviceClass.TEMPERATURE,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
value_getter=lambda api: api.getDesiredTemperatureForProgram(
Program.COMFORT_HEATING
HeatingProgram.COMFORT_HEATING
),
value_setter=lambda api, value: api.setProgramTemperature(
Program.COMFORT_HEATING, value
HeatingProgram.COMFORT_HEATING, value
),
min_value_getter=lambda api: api.getProgramMinTemperature(
Program.COMFORT_HEATING
HeatingProgram.COMFORT_HEATING
),
max_value_getter=lambda api: api.getProgramMaxTemperature(
Program.COMFORT_HEATING
HeatingProgram.COMFORT_HEATING
),
stepping_getter=lambda api: api.getProgramStepping(
HeatingProgram.COMFORT_HEATING
),
stepping_getter=lambda api: api.getProgramStepping(Program.COMFORT_HEATING),
),
)