diff --git a/homeassistant/components/melcloud/climate.py b/homeassistant/components/melcloud/climate.py index 4c085821ee7..b16221923de 100644 --- a/homeassistant/components/melcloud/climate.py +++ b/homeassistant/components/melcloud/climate.py @@ -14,17 +14,13 @@ from pymelcloud.atw_device import ( ) import voluptuous as vol -from homeassistant.components.climate import ClimateEntity, ClimateEntityFeature +from homeassistant.components.climate import ClimateEntity from homeassistant.components.climate.const import ( ATTR_HVAC_MODE, DEFAULT_MAX_TEMP, DEFAULT_MIN_TEMP, - HVAC_MODE_COOL, - HVAC_MODE_DRY, - HVAC_MODE_FAN_ONLY, - HVAC_MODE_HEAT, - HVAC_MODE_HEAT_COOL, - HVAC_MODE_OFF, + ClimateEntityFeature, + HVACMode, ) from homeassistant.config_entries import ConfigEntry from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS @@ -49,18 +45,18 @@ SCAN_INTERVAL = timedelta(seconds=60) ATA_HVAC_MODE_LOOKUP = { - ata.OPERATION_MODE_HEAT: HVAC_MODE_HEAT, - ata.OPERATION_MODE_DRY: HVAC_MODE_DRY, - ata.OPERATION_MODE_COOL: HVAC_MODE_COOL, - ata.OPERATION_MODE_FAN_ONLY: HVAC_MODE_FAN_ONLY, - ata.OPERATION_MODE_HEAT_COOL: HVAC_MODE_HEAT_COOL, + ata.OPERATION_MODE_HEAT: HVACMode.HEAT, + ata.OPERATION_MODE_DRY: HVACMode.DRY, + ata.OPERATION_MODE_COOL: HVACMode.COOL, + ata.OPERATION_MODE_FAN_ONLY: HVACMode.FAN_ONLY, + ata.OPERATION_MODE_HEAT_COOL: HVACMode.HEAT_COOL, } ATA_HVAC_MODE_REVERSE_LOOKUP = {v: k for k, v in ATA_HVAC_MODE_LOOKUP.items()} ATW_ZONE_HVAC_MODE_LOOKUP = { - atw.ZONE_OPERATION_MODE_HEAT: HVAC_MODE_HEAT, - atw.ZONE_OPERATION_MODE_COOL: HVAC_MODE_COOL, + atw.ZONE_OPERATION_MODE_HEAT: HVACMode.HEAT, + atw.ZONE_OPERATION_MODE_COOL: HVACMode.COOL, } ATW_ZONE_HVAC_MODE_REVERSE_LOOKUP = {v: k for k, v in ATW_ZONE_HVAC_MODE_LOOKUP.items()} @@ -161,16 +157,16 @@ class AtaDeviceClimate(MelCloudClimate): return attr @property - def hvac_mode(self) -> str: + def hvac_mode(self) -> HVACMode: """Return hvac operation ie. heat, cool mode.""" mode = self._device.operation_mode if not self._device.power or mode is None: - return HVAC_MODE_OFF + return HVACMode.OFF return ATA_HVAC_MODE_LOOKUP.get(mode) def _apply_set_hvac_mode(self, hvac_mode: str, set_dict: dict[str, Any]) -> None: """Apply hvac mode changes to a dict used to call _device.set.""" - if hvac_mode == HVAC_MODE_OFF: + if hvac_mode == HVACMode.OFF: set_dict["power"] = False return @@ -179,19 +175,19 @@ class AtaDeviceClimate(MelCloudClimate): raise ValueError(f"Invalid hvac_mode [{hvac_mode}]") set_dict["operation_mode"] = operation_mode - if self.hvac_mode == HVAC_MODE_OFF: + if self.hvac_mode == HVACMode.OFF: set_dict["power"] = True - async def async_set_hvac_mode(self, hvac_mode: str) -> None: + async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None: """Set new target hvac mode.""" set_dict = {} self._apply_set_hvac_mode(hvac_mode, set_dict) await self._device.set(set_dict) @property - def hvac_modes(self) -> list[str]: + def hvac_modes(self) -> list[HVACMode]: """Return the list of available hvac operation modes.""" - return [HVAC_MODE_OFF] + [ + return [HVACMode.OFF] + [ ATA_HVAC_MODE_LOOKUP.get(mode) for mode in self._device.operation_modes ] @@ -319,16 +315,16 @@ class AtwDeviceZoneClimate(MelCloudClimate): return data @property - def hvac_mode(self) -> str: + def hvac_mode(self) -> HVACMode: """Return hvac operation ie. heat, cool mode.""" mode = self._zone.operation_mode if not self._device.power or mode is None: - return HVAC_MODE_OFF - return ATW_ZONE_HVAC_MODE_LOOKUP.get(mode, HVAC_MODE_OFF) + return HVACMode.OFF + return ATW_ZONE_HVAC_MODE_LOOKUP.get(mode, HVACMode.OFF) - async def async_set_hvac_mode(self, hvac_mode: str) -> None: + async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None: """Set new target hvac mode.""" - if hvac_mode == HVAC_MODE_OFF: + if hvac_mode == HVACMode.OFF: await self._device.set({"power": False}) return @@ -340,12 +336,12 @@ class AtwDeviceZoneClimate(MelCloudClimate): props = {PROPERTY_ZONE_1_OPERATION_MODE: operation_mode} else: props = {PROPERTY_ZONE_2_OPERATION_MODE: operation_mode} - if self.hvac_mode == HVAC_MODE_OFF: + if self.hvac_mode == HVACMode.OFF: props["power"] = True await self._device.set(props) @property - def hvac_modes(self) -> list[str]: + def hvac_modes(self) -> list[HVACMode]: """Return the list of available hvac operation modes.""" return [self.hvac_mode]