mirror of https://github.com/home-assistant/core
53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
"""Base entities for the Motionblinds Bluetooth integration."""
|
|
|
|
import logging
|
|
|
|
from motionblindsble.const import MotionBlindType
|
|
from motionblindsble.device import MotionDevice
|
|
|
|
from homeassistant.config_entries import ConfigEntry
|
|
from homeassistant.const import CONF_ADDRESS
|
|
from homeassistant.helpers.device_registry import CONNECTION_BLUETOOTH, DeviceInfo
|
|
from homeassistant.helpers.entity import Entity, EntityDescription
|
|
|
|
from .const import CONF_BLIND_TYPE, CONF_MAC_CODE, MANUFACTURER
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
|
|
class MotionblindsBLEEntity(Entity):
|
|
"""Base class for Motionblinds Bluetooth entities."""
|
|
|
|
_attr_has_entity_name = True
|
|
_attr_should_poll = False
|
|
|
|
device: MotionDevice
|
|
entry: ConfigEntry
|
|
|
|
def __init__(
|
|
self,
|
|
device: MotionDevice,
|
|
entry: ConfigEntry,
|
|
entity_description: EntityDescription,
|
|
unique_id_suffix: str | None = None,
|
|
) -> None:
|
|
"""Initialize the entity."""
|
|
if unique_id_suffix is None:
|
|
self._attr_unique_id = entry.data[CONF_ADDRESS]
|
|
else:
|
|
self._attr_unique_id = f"{entry.data[CONF_ADDRESS]}_{unique_id_suffix}"
|
|
self.device = device
|
|
self.entry = entry
|
|
self.entity_description = entity_description
|
|
self._attr_device_info = DeviceInfo(
|
|
connections={(CONNECTION_BLUETOOTH, entry.data[CONF_ADDRESS])},
|
|
manufacturer=MANUFACTURER,
|
|
model=MotionBlindType[entry.data[CONF_BLIND_TYPE].upper()].value,
|
|
name=device.display_name,
|
|
)
|
|
|
|
async def async_update(self) -> None:
|
|
"""Update state, called by HA if there is a poll interval and by the service homeassistant.update_entity."""
|
|
_LOGGER.debug("(%s) Updating entity", self.entry.data[CONF_MAC_CODE])
|
|
await self.device.status_query()
|