core/homeassistant/components/nuki/entity.py

43 lines
1.3 KiB
Python

"""The nuki component."""
from __future__ import annotations
from pynuki.device import NukiDevice
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN
from .coordinator import NukiCoordinator
from .helpers import parse_id
class NukiEntity[_NukiDeviceT: NukiDevice](CoordinatorEntity[NukiCoordinator]):
"""An entity using CoordinatorEntity.
The CoordinatorEntity class provides:
should_poll
async_update
async_added_to_hass
available
"""
def __init__(self, coordinator: NukiCoordinator, nuki_device: _NukiDeviceT) -> None:
"""Pass coordinator to CoordinatorEntity."""
super().__init__(coordinator)
self._nuki_device = nuki_device
@property
def device_info(self) -> DeviceInfo:
"""Device info for Nuki entities."""
return DeviceInfo(
identifiers={(DOMAIN, parse_id(self._nuki_device.nuki_id))},
name=self._nuki_device.name,
manufacturer="Nuki Home Solutions GmbH",
model=self._nuki_device.device_model_str.capitalize(),
sw_version=self._nuki_device.firmware_version,
via_device=(DOMAIN, self.coordinator.bridge_id),
serial_number=parse_id(self._nuki_device.nuki_id),
)