From a3d6c6192edfb9742dc47915d4695e3713799477 Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Fri, 8 Sep 2023 01:15:49 +0200 Subject: [PATCH] Use shorthand attributes in Tado (#99886) --- homeassistant/components/tado/climate.py | 39 +++++-------------- homeassistant/components/tado/entity.py | 39 ++++++------------- homeassistant/components/tado/water_heater.py | 19 ++------- 3 files changed, 24 insertions(+), 73 deletions(-) diff --git a/homeassistant/components/tado/climate.py b/homeassistant/components/tado/climate.py index 36a2ab671c9..1193638c10e 100644 --- a/homeassistant/components/tado/climate.py +++ b/homeassistant/components/tado/climate.py @@ -219,6 +219,8 @@ class TadoClimate(TadoZoneEntity, ClimateEntity): _attr_temperature_unit = UnitOfTemperature.CELSIUS _attr_name = None + _attr_translation_key = DOMAIN + _available = False def __init__( self, @@ -245,22 +247,22 @@ class TadoClimate(TadoZoneEntity, ClimateEntity): self.zone_type = zone_type self._attr_unique_id = f"{zone_type} {zone_id} {tado.home_id}" - self._attr_temperature_unit = UnitOfTemperature.CELSIUS - - self._attr_translation_key = DOMAIN self._device_info = device_info self._device_id = self._device_info["shortSerialNo"] self._ac_device = zone_type == TYPE_AIR_CONDITIONING - self._supported_hvac_modes = supported_hvac_modes - self._supported_fan_modes = supported_fan_modes + self._attr_hvac_modes = supported_hvac_modes + self._attr_fan_modes = supported_fan_modes self._attr_supported_features = support_flags - self._available = False - self._cur_temp = None self._cur_humidity = None + if self.supported_features & ClimateEntityFeature.SWING_MODE: + self._attr_swing_modes = [ + TADO_TO_HA_SWING_MODE_MAP[TADO_SWING_ON], + TADO_TO_HA_SWING_MODE_MAP[TADO_SWING_OFF], + ] self._heat_min_temp = heat_min_temp self._heat_max_temp = heat_max_temp @@ -324,14 +326,6 @@ class TadoClimate(TadoZoneEntity, ClimateEntity): """ return TADO_TO_HA_HVAC_MODE_MAP.get(self._current_tado_hvac_mode, HVACMode.OFF) - @property - def hvac_modes(self) -> list[HVACMode]: - """Return the list of available hvac operation modes. - - Need to be a subset of HVAC_MODES. - """ - return self._supported_hvac_modes - @property def hvac_action(self) -> HVACAction: """Return the current running hvac operation if supported. @@ -349,11 +343,6 @@ class TadoClimate(TadoZoneEntity, ClimateEntity): return TADO_TO_HA_FAN_MODE_MAP.get(self._current_tado_fan_speed, FAN_AUTO) return None - @property - def fan_modes(self): - """List of available fan modes.""" - return self._supported_fan_modes - def set_fan_mode(self, fan_mode: str) -> None: """Turn fan on/off.""" self._control_hvac(fan_mode=HA_TO_TADO_FAN_MODE_MAP[fan_mode]) @@ -474,16 +463,6 @@ class TadoClimate(TadoZoneEntity, ClimateEntity): """Active swing mode for the device.""" return TADO_TO_HA_SWING_MODE_MAP[self._current_tado_swing_mode] - @property - def swing_modes(self): - """Swing modes for the device.""" - if self.supported_features & ClimateEntityFeature.SWING_MODE: - return [ - TADO_TO_HA_SWING_MODE_MAP[TADO_SWING_ON], - TADO_TO_HA_SWING_MODE_MAP[TADO_SWING_OFF], - ] - return None - @property def extra_state_attributes(self): """Return temperature offset.""" diff --git a/homeassistant/components/tado/entity.py b/homeassistant/components/tado/entity.py index cfc9e5b1e6e..532d784b190 100644 --- a/homeassistant/components/tado/entity.py +++ b/homeassistant/components/tado/entity.py @@ -17,18 +17,14 @@ class TadoDeviceEntity(Entity): self._device_info = device_info self.device_name = device_info["serialNo"] self.device_id = device_info["shortSerialNo"] - - @property - def device_info(self) -> DeviceInfo: - """Return the device_info of the device.""" - return DeviceInfo( + self._attr_device_info = DeviceInfo( configuration_url=f"https://app.tado.com/en/main/settings/rooms-and-devices/device/{self.device_name}", identifiers={(DOMAIN, self.device_id)}, name=self.device_name, manufacturer=DEFAULT_NAME, - sw_version=self._device_info["currentFwVersion"], - model=self._device_info["deviceType"], - via_device=(DOMAIN, self._device_info["serialNo"]), + sw_version=device_info["currentFwVersion"], + model=device_info["deviceType"], + via_device=(DOMAIN, device_info["serialNo"]), ) @@ -43,16 +39,12 @@ class TadoHomeEntity(Entity): super().__init__() self.home_name = tado.home_name self.home_id = tado.home_id - - @property - def device_info(self) -> DeviceInfo: - """Return the device_info of the device.""" - return DeviceInfo( + self._attr_device_info = DeviceInfo( configuration_url="https://app.tado.com", - identifiers={(DOMAIN, self.home_id)}, + identifiers={(DOMAIN, tado.home_id)}, manufacturer=DEFAULT_NAME, model=TADO_HOME, - name=self.home_name, + name=tado.home_name, ) @@ -65,20 +57,13 @@ class TadoZoneEntity(Entity): def __init__(self, zone_name, home_id, zone_id): """Initialize a Tado zone.""" super().__init__() - self._device_zone_id = f"{home_id}_{zone_id}" self.zone_name = zone_name self.zone_id = zone_id - - @property - def device_info(self) -> DeviceInfo: - """Return the device_info of the device.""" - return DeviceInfo( - configuration_url=( - f"https://app.tado.com/en/main/home/zoneV2/{self.zone_id}" - ), - identifiers={(DOMAIN, self._device_zone_id)}, - name=self.zone_name, + self._attr_device_info = DeviceInfo( + configuration_url=(f"https://app.tado.com/en/main/home/zoneV2/{zone_id}"), + identifiers={(DOMAIN, f"{home_id}_{zone_id}")}, + name=zone_name, manufacturer=DEFAULT_NAME, model=TADO_ZONE, - suggested_area=self.zone_name, + suggested_area=zone_name, ) diff --git a/homeassistant/components/tado/water_heater.py b/homeassistant/components/tado/water_heater.py index 6d17c85c981..b7e68bbb100 100644 --- a/homeassistant/components/tado/water_heater.py +++ b/homeassistant/components/tado/water_heater.py @@ -120,6 +120,8 @@ class TadoWaterHeater(TadoZoneEntity, WaterHeaterEntity): """Representation of a Tado water heater.""" _attr_name = None + _attr_operation_list = OPERATION_MODES + _attr_temperature_unit = UnitOfTemperature.CELSIUS def __init__( self, @@ -136,7 +138,7 @@ class TadoWaterHeater(TadoZoneEntity, WaterHeaterEntity): super().__init__(zone_name, tado.home_id, zone_id) self.zone_id = zone_id - self._unique_id = f"{zone_id} {tado.home_id}" + self._attr_unique_id = f"{zone_id} {tado.home_id}" self._device_is_active = False @@ -168,11 +170,6 @@ class TadoWaterHeater(TadoZoneEntity, WaterHeaterEntity): ) self._async_update_data() - @property - def unique_id(self): - """Return the unique id.""" - return self._unique_id - @property def current_operation(self): """Return current readable operation mode.""" @@ -188,16 +185,6 @@ class TadoWaterHeater(TadoZoneEntity, WaterHeaterEntity): """Return true if away mode is on.""" return self._tado_zone_data.is_away - @property - def operation_list(self): - """Return the list of available operation modes (readable).""" - return OPERATION_MODES - - @property - def temperature_unit(self): - """Return the unit of measurement used by the platform.""" - return UnitOfTemperature.CELSIUS - @property def min_temp(self): """Return the minimum temperature."""