2020-12-27 16:36:35 +01:00
|
|
|
"""Base class for Tado entity."""
|
2021-10-22 12:52:33 +02:00
|
|
|
from homeassistant.helpers.entity import DeviceInfo, Entity
|
2020-04-12 13:42:36 -05:00
|
|
|
|
2021-03-10 21:31:37 +01:00
|
|
|
from .const import DEFAULT_NAME, DOMAIN, TADO_HOME, TADO_ZONE
|
2020-12-27 16:36:35 +01:00
|
|
|
|
|
|
|
|
|
|
|
class TadoDeviceEntity(Entity):
|
|
|
|
"""Base implementation for Tado device."""
|
|
|
|
|
2022-08-27 04:03:50 +02:00
|
|
|
_attr_should_poll = False
|
|
|
|
|
2020-12-27 16:36:35 +01:00
|
|
|
def __init__(self, device_info):
|
|
|
|
"""Initialize a Tado device."""
|
|
|
|
super().__init__()
|
|
|
|
self._device_info = device_info
|
2021-01-04 03:53:15 +01:00
|
|
|
self.device_name = device_info["serialNo"]
|
|
|
|
self.device_id = device_info["shortSerialNo"]
|
2020-12-27 16:36:35 +01:00
|
|
|
|
|
|
|
@property
|
2021-10-22 12:52:33 +02:00
|
|
|
def device_info(self) -> DeviceInfo:
|
2020-12-27 16:36:35 +01:00
|
|
|
"""Return the device_info of the device."""
|
2021-10-22 12:52:33 +02:00
|
|
|
return DeviceInfo(
|
2022-04-26 23:16:39 +01:00
|
|
|
configuration_url=f"https://app.tado.com/en/main/settings/rooms-and-devices/device/{self.device_name}",
|
2021-10-22 12:52:33 +02:00
|
|
|
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"]),
|
|
|
|
)
|
2020-12-27 16:36:35 +01:00
|
|
|
|
2020-04-12 13:42:36 -05:00
|
|
|
|
2021-03-10 21:31:37 +01:00
|
|
|
class TadoHomeEntity(Entity):
|
|
|
|
"""Base implementation for Tado home."""
|
|
|
|
|
2023-03-28 13:24:19 +01:00
|
|
|
_attr_should_poll = False
|
|
|
|
|
2021-03-10 21:31:37 +01:00
|
|
|
def __init__(self, tado):
|
|
|
|
"""Initialize a Tado home."""
|
|
|
|
super().__init__()
|
|
|
|
self.home_name = tado.home_name
|
|
|
|
self.home_id = tado.home_id
|
|
|
|
|
|
|
|
@property
|
2021-10-28 18:20:09 +02:00
|
|
|
def device_info(self) -> DeviceInfo:
|
2021-03-10 21:31:37 +01:00
|
|
|
"""Return the device_info of the device."""
|
2021-10-28 18:20:09 +02:00
|
|
|
return DeviceInfo(
|
2022-04-26 23:16:39 +01:00
|
|
|
configuration_url="https://app.tado.com",
|
2021-10-28 18:20:09 +02:00
|
|
|
identifiers={(DOMAIN, self.home_id)},
|
|
|
|
manufacturer=DEFAULT_NAME,
|
|
|
|
model=TADO_HOME,
|
|
|
|
name=self.home_name,
|
|
|
|
)
|
2021-03-10 21:31:37 +01:00
|
|
|
|
|
|
|
|
2020-04-12 13:42:36 -05:00
|
|
|
class TadoZoneEntity(Entity):
|
2020-12-27 16:36:35 +01:00
|
|
|
"""Base implementation for Tado zone."""
|
2020-04-12 13:42:36 -05:00
|
|
|
|
2022-08-27 04:03:50 +02:00
|
|
|
_attr_should_poll = False
|
|
|
|
|
2020-12-28 14:57:51 +01:00
|
|
|
def __init__(self, zone_name, home_id, zone_id):
|
2020-12-27 16:36:35 +01:00
|
|
|
"""Initialize a Tado zone."""
|
2020-04-12 13:42:36 -05:00
|
|
|
super().__init__()
|
2020-12-28 14:57:51 +01:00
|
|
|
self._device_zone_id = f"{home_id}_{zone_id}"
|
2020-04-12 13:42:36 -05:00
|
|
|
self.zone_name = zone_name
|
2021-01-02 13:35:59 +01:00
|
|
|
self.zone_id = zone_id
|
2020-04-12 13:42:36 -05:00
|
|
|
|
|
|
|
@property
|
2021-10-23 12:03:14 +02:00
|
|
|
def device_info(self) -> DeviceInfo:
|
2020-04-12 13:42:36 -05:00
|
|
|
"""Return the device_info of the device."""
|
2021-10-23 12:03:14 +02:00
|
|
|
return DeviceInfo(
|
2022-12-23 16:43:17 +01:00
|
|
|
configuration_url=(
|
|
|
|
f"https://app.tado.com/en/main/home/zoneV2/{self.zone_id}"
|
|
|
|
),
|
2021-10-23 12:03:14 +02:00
|
|
|
identifiers={(DOMAIN, self._device_zone_id)},
|
|
|
|
name=self.zone_name,
|
|
|
|
manufacturer=DEFAULT_NAME,
|
|
|
|
model=TADO_ZONE,
|
|
|
|
suggested_area=self.zone_name,
|
|
|
|
)
|