diff --git a/homeassistant/components/knx/climate.py b/homeassistant/components/knx/climate.py index 803ded55441..91342cca839 100644 --- a/homeassistant/components/knx/climate.py +++ b/homeassistant/components/knx/climate.py @@ -12,7 +12,6 @@ from homeassistant.components.climate import ClimateEntity from homeassistant.components.climate.const import ( CURRENT_HVAC_IDLE, CURRENT_HVAC_OFF, - HVAC_MODE_HEAT, HVAC_MODE_OFF, PRESET_AWAY, SUPPORT_PRESET_MODE, @@ -187,6 +186,7 @@ class KNXClimate(KnxEntity, ClimateEntity): f"{self._device.target_temperature.group_address}_" f"{self._device._setpoint_shift.group_address}" ) + self.default_hvac_mode: str = config[ClimateSchema.CONF_DEFAULT_CONTROLLER_MODE] async def async_update(self) -> None: """Request a state update from KNX bus.""" @@ -231,10 +231,9 @@ class KNXClimate(KnxEntity, ClimateEntity): return HVAC_MODE_OFF if self._device.mode is not None and self._device.mode.supports_controller_mode: return CONTROLLER_MODES.get( - self._device.mode.controller_mode.value, HVAC_MODE_HEAT + self._device.mode.controller_mode.value, self.default_hvac_mode ) - # default to "heat" - return HVAC_MODE_HEAT + return self.default_hvac_mode @property def hvac_modes(self) -> list[str]: @@ -248,12 +247,11 @@ class KNXClimate(KnxEntity, ClimateEntity): if self._device.supports_on_off: if not ha_controller_modes: - ha_controller_modes.append(HVAC_MODE_HEAT) + ha_controller_modes.append(self.default_hvac_mode) ha_controller_modes.append(HVAC_MODE_OFF) hvac_modes = list(set(filter(None, ha_controller_modes))) - # default to ["heat"] - return hvac_modes if hvac_modes else [HVAC_MODE_HEAT] + return hvac_modes if hvac_modes else [self.default_hvac_mode] @property def hvac_action(self) -> str | None: diff --git a/homeassistant/components/knx/schema.py b/homeassistant/components/knx/schema.py index 196c171c9b5..65ff6b3b8fa 100644 --- a/homeassistant/components/knx/schema.py +++ b/homeassistant/components/knx/schema.py @@ -16,6 +16,7 @@ from xknx.telegram.address import IndividualAddress, parse_device_group_address from homeassistant.components.binary_sensor import ( DEVICE_CLASSES as BINARY_SENSOR_DEVICE_CLASSES, ) +from homeassistant.components.climate.const import HVAC_MODE_HEAT, HVAC_MODES from homeassistant.components.cover import DEVICE_CLASSES as COVER_DEVICE_CLASSES from homeassistant.components.sensor import STATE_CLASSES_SCHEMA from homeassistant.const import ( @@ -287,6 +288,7 @@ class ClimateSchema(KNXPlatformSchema): CONF_OPERATION_MODE_STANDBY_ADDRESS = "operation_mode_standby_address" CONF_OPERATION_MODES = "operation_modes" CONF_CONTROLLER_MODES = "controller_modes" + CONF_DEFAULT_CONTROLLER_MODE = "default_controller_mode" CONF_ON_OFF_ADDRESS = "on_off_address" CONF_ON_OFF_STATE_ADDRESS = "on_off_state_address" CONF_ON_OFF_INVERT = "on_off_invert" @@ -362,6 +364,9 @@ class ClimateSchema(KNXPlatformSchema): vol.Optional(CONF_CONTROLLER_MODES): vol.All( cv.ensure_list, [vol.In(CONTROLLER_MODES)] ), + vol.Optional( + CONF_DEFAULT_CONTROLLER_MODE, default=HVAC_MODE_HEAT + ): vol.In(HVAC_MODES), vol.Optional(CONF_MIN_TEMP): vol.Coerce(float), vol.Optional(CONF_MAX_TEMP): vol.Coerce(float), }