mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Move nuki base entity to separate module (#126500)
This commit is contained in:
parent
5b1e4e0691
commit
9b9edecaac
@ -10,7 +10,6 @@ import logging
|
||||
from aiohttp import web
|
||||
from pynuki import NukiBridge, NukiLock, NukiOpener
|
||||
from pynuki.bridge import InvalidCredentialsException
|
||||
from pynuki.device import NukiDevice
|
||||
from requests.exceptions import RequestException
|
||||
|
||||
from homeassistant import exceptions
|
||||
@ -25,9 +24,8 @@ from homeassistant.const import (
|
||||
)
|
||||
from homeassistant.core import Event, HomeAssistant
|
||||
from homeassistant.helpers import device_registry as dr, issue_registry as ir
|
||||
from homeassistant.helpers.device_registry import DeviceInfo
|
||||
from homeassistant.helpers.network import NoURLAvailableError, get_url
|
||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity, UpdateFailed
|
||||
from homeassistant.helpers.update_coordinator import UpdateFailed
|
||||
|
||||
from .const import CONF_ENCRYPT_TOKEN, DEFAULT_TIMEOUT, DOMAIN
|
||||
from .coordinator import NukiCoordinator
|
||||
@ -266,33 +264,3 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
hass.data[DOMAIN].pop(entry.entry_id)
|
||||
|
||||
return unload_ok
|
||||
|
||||
|
||||
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),
|
||||
)
|
||||
|
@ -14,8 +14,9 @@ from homeassistant.const import EntityCategory
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from . import NukiEntity, NukiEntryData
|
||||
from . import NukiEntryData
|
||||
from .const import DOMAIN as NUKI_DOMAIN
|
||||
from .entity import NukiEntity
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
|
42
homeassistant/components/nuki/entity.py
Normal file
42
homeassistant/components/nuki/entity.py
Normal file
@ -0,0 +1,42 @@
|
||||
"""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),
|
||||
)
|
@ -17,8 +17,9 @@ from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import config_validation as cv, entity_platform
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from . import NukiEntity, NukiEntryData
|
||||
from . import NukiEntryData
|
||||
from .const import ATTR_ENABLE, ATTR_UNLATCH, DOMAIN as NUKI_DOMAIN, ERROR_STATES
|
||||
from .entity import NukiEntity
|
||||
from .helpers import CannotConnect
|
||||
|
||||
|
||||
|
@ -10,8 +10,9 @@ from homeassistant.const import PERCENTAGE, EntityCategory
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from . import NukiEntity, NukiEntryData
|
||||
from . import NukiEntryData
|
||||
from .const import DOMAIN as NUKI_DOMAIN
|
||||
from .entity import NukiEntity
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
|
Loading…
x
Reference in New Issue
Block a user