Home Assistant Unofficial Reference 2024.12.1
camera.py
Go to the documentation of this file.
1 """Support for Homekit cameras."""
2 
3 from __future__ import annotations
4 
5 from aiohomekit.model import Accessory
6 from aiohomekit.model.services import ServicesTypes
7 
8 from homeassistant.components.camera import Camera
9 from homeassistant.config_entries import ConfigEntry
10 from homeassistant.const import Platform
11 from homeassistant.core import HomeAssistant, callback
12 from homeassistant.helpers.entity_platform import AddEntitiesCallback
13 
14 from . import KNOWN_DEVICES
15 from .connection import HKDevice
16 from .entity import AccessoryEntity
17 
18 
20  """Representation of a Homekit camera."""
21 
22  # content_type = "image/jpeg"
23 
24  def get_characteristic_types(self) -> list[str]:
25  """Define the homekit characteristics the entity is tracking."""
26  return []
27 
28  async def async_camera_image(
29  self, width: int | None = None, height: int | None = None
30  ) -> bytes | None:
31  """Return a jpeg with the current camera snapshot."""
32  return await self._accessory_accessory.pairing.image( # type: ignore[attr-defined]
33  self._aid,
34  width or 640,
35  height or 480,
36  )
37 
38 
40  hass: HomeAssistant,
41  config_entry: ConfigEntry,
42  async_add_entities: AddEntitiesCallback,
43 ) -> None:
44  """Set up Homekit sensors."""
45  hkid: str = config_entry.data["AccessoryPairingID"]
46  conn: HKDevice = hass.data[KNOWN_DEVICES][hkid]
47 
48  @callback
49  def async_add_accessory(accessory: Accessory) -> bool:
50  stream_mgmt = accessory.services.first(
51  service_type=ServicesTypes.CAMERA_RTP_STREAM_MANAGEMENT
52  )
53  if not stream_mgmt:
54  return False
55 
56  info = {"aid": accessory.aid, "iid": stream_mgmt.iid}
57  entity = HomeKitCamera(conn, info)
58  conn.async_migrate_unique_id(
59  entity.old_unique_id, entity.unique_id, Platform.CAMERA
60  )
61  async_add_entities([entity])
62  return True
63 
64  conn.add_accessory_factory(async_add_accessory)
bytes|None async_camera_image(self, int|None width=None, int|None height=None)
Definition: camera.py:30
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Definition: camera.py:43