Climate entity now supports independent horizontal swing
· 2 min read
As of Home Assistant Core 2024.12, we have implemented an independent property and method for controlling horizontal swing in ClimateEntity
.
Integrations that support completely independent control and state for vertical and horizontal swing can now use the previous swing_mode
for vertical swing only and use the new swing_horizontal_mode
for providing the horizontal swing state and control.
Integrations that don't have independent control should still keep using the current swing_mode
for both vertical and horizontal support.
Example
Example requirements to implement swing
and swing_horizontal
in your climate entity.
class MyClimateEntity(ClimateEntity):
"""Implementation of my climate entity."""
@property
def supported_features(self) -> ClimateEntityFeature:
"""Return the list of supported features."""
return ClimateEntityFeature.SWING_MODE | ClimateEntityFeature.SWING_HORIZONTAL_MODE
@property
def swing_mode(self) -> str | None:
"""Return the swing setting.
Requires ClimateEntityFeature.SWING_MODE.
"""
return self._attr_swing_mode
@property
def swing_modes(self) -> list[str] | None:
"""Return the list of available swing modes.
Requires ClimateEntityFeature.SWING_MODE.
"""
return self._attr_swing_modes
@property
def swing_horizontal_mode(self) -> str | None:
"""Return the swing setting.
Requires ClimateEntityFeature.SWING_HORIZONTAL_MODE.
"""
return self._attr_swing_horizontal_mode
@property
def swing_horizontal_modes(self) -> list[str] | None:
"""Return the list of available swing modes.
Requires ClimateEntityFeature.SWING_HORIZONTAL_MODE.
"""
return self._attr_swing_horizontal_modes
async def async_set_swing_mode(self, swing_mode: str) -> None:
"""Set new target swing operation."""
await self.api.set_swing_mode(swing_mode)
async def async_set_swing_horizontal_mode(self, swing_horizontal_mode: str) -> None:
"""Set new target horizontal swing operation."""
await self.api.set_swing_horizontal_mode(swing_horizontal_mode)
More details can be found in the climate documentation.