core/homeassistant/components/ecobee/entity.py

40 lines
1.3 KiB
Python

"""Base classes shared among Ecobee entities."""
from __future__ import annotations
import logging
from typing import Any
from homeassistant.helpers.entity import DeviceInfo, Entity
from . import EcobeeData
from .const import DOMAIN, ECOBEE_MODEL_TO_NAME, MANUFACTURER
_LOGGER = logging.getLogger(__name__)
class EcobeeBaseEntity(Entity):
"""Base methods for Ecobee entities."""
def __init__(self, data: EcobeeData, thermostat_index: int) -> None:
"""Initiate base methods for Ecobee entities."""
self.data = data
self.thermostat_index = thermostat_index
thermostat = self.thermostat
self.base_unique_id = thermostat["identifier"]
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, thermostat["identifier"])},
manufacturer=MANUFACTURER,
model=ECOBEE_MODEL_TO_NAME.get(thermostat["modelNumber"]),
name=thermostat["name"],
)
@property
def thermostat(self) -> dict[str, Any]:
"""Return the thermostat data for the entity."""
return self.data.ecobee.get_thermostat(self.thermostat_index)
@property
def available(self) -> bool:
"""Return if device is available."""
return self.thermostat["runtime"]["connected"]