66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			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,
 | 
						|
        )
 |