mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Configurable default hvac_mode
for KNX climate (#54289)
This commit is contained in:
parent
0fdea8ec8f
commit
17a7f7adeb
@ -12,7 +12,6 @@ from homeassistant.components.climate import ClimateEntity
|
|||||||
from homeassistant.components.climate.const import (
|
from homeassistant.components.climate.const import (
|
||||||
CURRENT_HVAC_IDLE,
|
CURRENT_HVAC_IDLE,
|
||||||
CURRENT_HVAC_OFF,
|
CURRENT_HVAC_OFF,
|
||||||
HVAC_MODE_HEAT,
|
|
||||||
HVAC_MODE_OFF,
|
HVAC_MODE_OFF,
|
||||||
PRESET_AWAY,
|
PRESET_AWAY,
|
||||||
SUPPORT_PRESET_MODE,
|
SUPPORT_PRESET_MODE,
|
||||||
@ -187,6 +186,7 @@ class KNXClimate(KnxEntity, ClimateEntity):
|
|||||||
f"{self._device.target_temperature.group_address}_"
|
f"{self._device.target_temperature.group_address}_"
|
||||||
f"{self._device._setpoint_shift.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:
|
async def async_update(self) -> None:
|
||||||
"""Request a state update from KNX bus."""
|
"""Request a state update from KNX bus."""
|
||||||
@ -231,10 +231,9 @@ class KNXClimate(KnxEntity, ClimateEntity):
|
|||||||
return HVAC_MODE_OFF
|
return HVAC_MODE_OFF
|
||||||
if self._device.mode is not None and self._device.mode.supports_controller_mode:
|
if self._device.mode is not None and self._device.mode.supports_controller_mode:
|
||||||
return CONTROLLER_MODES.get(
|
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 self.default_hvac_mode
|
||||||
return HVAC_MODE_HEAT
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def hvac_modes(self) -> list[str]:
|
def hvac_modes(self) -> list[str]:
|
||||||
@ -248,12 +247,11 @@ class KNXClimate(KnxEntity, ClimateEntity):
|
|||||||
|
|
||||||
if self._device.supports_on_off:
|
if self._device.supports_on_off:
|
||||||
if not ha_controller_modes:
|
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)
|
ha_controller_modes.append(HVAC_MODE_OFF)
|
||||||
|
|
||||||
hvac_modes = list(set(filter(None, ha_controller_modes)))
|
hvac_modes = list(set(filter(None, ha_controller_modes)))
|
||||||
# default to ["heat"]
|
return hvac_modes if hvac_modes else [self.default_hvac_mode]
|
||||||
return hvac_modes if hvac_modes else [HVAC_MODE_HEAT]
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def hvac_action(self) -> str | None:
|
def hvac_action(self) -> str | None:
|
||||||
|
@ -16,6 +16,7 @@ from xknx.telegram.address import IndividualAddress, parse_device_group_address
|
|||||||
from homeassistant.components.binary_sensor import (
|
from homeassistant.components.binary_sensor import (
|
||||||
DEVICE_CLASSES as BINARY_SENSOR_DEVICE_CLASSES,
|
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.cover import DEVICE_CLASSES as COVER_DEVICE_CLASSES
|
||||||
from homeassistant.components.sensor import STATE_CLASSES_SCHEMA
|
from homeassistant.components.sensor import STATE_CLASSES_SCHEMA
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
@ -287,6 +288,7 @@ class ClimateSchema(KNXPlatformSchema):
|
|||||||
CONF_OPERATION_MODE_STANDBY_ADDRESS = "operation_mode_standby_address"
|
CONF_OPERATION_MODE_STANDBY_ADDRESS = "operation_mode_standby_address"
|
||||||
CONF_OPERATION_MODES = "operation_modes"
|
CONF_OPERATION_MODES = "operation_modes"
|
||||||
CONF_CONTROLLER_MODES = "controller_modes"
|
CONF_CONTROLLER_MODES = "controller_modes"
|
||||||
|
CONF_DEFAULT_CONTROLLER_MODE = "default_controller_mode"
|
||||||
CONF_ON_OFF_ADDRESS = "on_off_address"
|
CONF_ON_OFF_ADDRESS = "on_off_address"
|
||||||
CONF_ON_OFF_STATE_ADDRESS = "on_off_state_address"
|
CONF_ON_OFF_STATE_ADDRESS = "on_off_state_address"
|
||||||
CONF_ON_OFF_INVERT = "on_off_invert"
|
CONF_ON_OFF_INVERT = "on_off_invert"
|
||||||
@ -362,6 +364,9 @@ class ClimateSchema(KNXPlatformSchema):
|
|||||||
vol.Optional(CONF_CONTROLLER_MODES): vol.All(
|
vol.Optional(CONF_CONTROLLER_MODES): vol.All(
|
||||||
cv.ensure_list, [vol.In(CONTROLLER_MODES)]
|
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_MIN_TEMP): vol.Coerce(float),
|
||||||
vol.Optional(CONF_MAX_TEMP): vol.Coerce(float),
|
vol.Optional(CONF_MAX_TEMP): vol.Coerce(float),
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user