mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Use climate enums in melcloud (#70689)
This commit is contained in:
parent
c5abf54f10
commit
0e6b543375
@ -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]
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user