Home Assistant Unofficial Reference 2024.12.1
entity.py
Go to the documentation of this file.
1 """The motionEye integration."""
2 
3 from __future__ import annotations
4 
5 from types import MappingProxyType
6 from typing import Any
7 
8 from motioneye_client.client import MotionEyeClient
9 from motioneye_client.const import KEY_ID
10 
11 from homeassistant.helpers.device_registry import DeviceInfo
12 from homeassistant.helpers.entity import EntityDescription
14  CoordinatorEntity,
15  DataUpdateCoordinator,
16 )
17 
18 from . import get_motioneye_device_identifier
19 
20 
22  config_entry_id: str, camera_id: int, entity_type: str
23 ) -> str:
24  """Get the unique_id for a motionEye entity."""
25  return f"{config_entry_id}_{camera_id}_{entity_type}"
26 
27 
29  """Base class for motionEye entities."""
30 
31  _attr_has_entity_name = True
32 
33  def __init__(
34  self,
35  config_entry_id: str,
36  type_name: str,
37  camera: dict[str, Any],
38  client: MotionEyeClient,
39  coordinator: DataUpdateCoordinator,
40  options: MappingProxyType[str, Any],
41  entity_description: EntityDescription | None = None,
42  ) -> None:
43  """Initialize a motionEye entity."""
44  self._camera_id_camera_id = camera[KEY_ID]
46  config_entry_id, self._camera_id_camera_id
47  )
49  config_entry_id,
50  self._camera_id_camera_id,
51  type_name,
52  )
53  self._client_client = client
54  self._camera: dict[str, Any] | None = camera
55  self._options_options = options
56  if entity_description is not None:
57  self.entity_descriptionentity_description = entity_description
58  super().__init__(coordinator)
59 
60  @property
61  def unique_id(self) -> str:
62  """Return a unique id for this instance."""
63  return self._unique_id_unique_id
64 
65  @property
66  def device_info(self) -> DeviceInfo:
67  """Return the device information."""
68  return DeviceInfo(identifiers={self._device_identifier_device_identifier})
69 
70  @property
71  def available(self) -> bool:
72  """Return if entity is available."""
73  return self._camera is not None and super().available
None __init__(self, str config_entry_id, str type_name, dict[str, Any] camera, MotionEyeClient client, DataUpdateCoordinator coordinator, MappingProxyType[str, Any] options, EntityDescription|None entity_description=None)
Definition: entity.py:42
str get_motioneye_entity_unique_id(str config_entry_id, int camera_id, str entity_type)
Definition: entity.py:23
tuple[str, str] get_motioneye_device_identifier(str config_entry_id, int camera_id)
Definition: __init__.py:102