core/homeassistant/components/tailwind/entity.py

66 lines
2.2 KiB
Python

"""Base entity for the Tailwind integration."""
from __future__ import annotations
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity import EntityDescription
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN
from .coordinator import TailwindDataUpdateCoordinator
class TailwindEntity(CoordinatorEntity[TailwindDataUpdateCoordinator]):
"""Defines an Tailwind entity."""
_attr_has_entity_name = True
def __init__(
self,
coordinator: TailwindDataUpdateCoordinator,
entity_description: EntityDescription,
) -> None:
"""Initialize an Tailwind entity."""
super().__init__(coordinator)
self.entity_description = entity_description
self._attr_unique_id = f"{coordinator.data.device_id}-{entity_description.key}"
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, coordinator.data.device_id)},
)
class TailwindDoorEntity(CoordinatorEntity[TailwindDataUpdateCoordinator]):
"""Defines an Tailwind door entity.
These are the entities that belong to a specific garage door opener
that is connected via the Tailwind controller.
"""
_attr_has_entity_name = True
def __init__(
self,
coordinator: TailwindDataUpdateCoordinator,
door_id: str,
entity_description: EntityDescription | None = None,
) -> None:
"""Initialize an Tailwind door entity."""
super().__init__(coordinator)
self.door_id = door_id
self._attr_unique_id = f"{coordinator.data.device_id}-{door_id}"
if entity_description:
self.entity_description = entity_description
self._attr_unique_id = (
f"{coordinator.data.device_id}-{door_id}-{entity_description.key}"
)
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, f"{coordinator.data.device_id}-{door_id}")},
via_device=(DOMAIN, coordinator.data.device_id),
name=f"Door {coordinator.data.doors[door_id].index+1}",
manufacturer="Tailwind",
model=coordinator.data.product,
sw_version=coordinator.data.firmware_version,
)