Home Assistant Unofficial Reference 2024.12.1
camera.py
Go to the documentation of this file.
1 """Camera for the Trafikverket Camera integration."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Mapping
6 from typing import Any
7 
8 from homeassistant.components.camera import Camera
9 from homeassistant.const import ATTR_LOCATION
10 from homeassistant.core import HomeAssistant
11 from homeassistant.helpers.entity_platform import AddEntitiesCallback
12 
13 from . import TVCameraConfigEntry
14 from .const import ATTR_DESCRIPTION, ATTR_TYPE
15 from .coordinator import TVDataUpdateCoordinator
16 from .entity import TrafikverketCameraEntity
17 
18 
20  hass: HomeAssistant,
21  entry: TVCameraConfigEntry,
22  async_add_entities: AddEntitiesCallback,
23 ) -> None:
24  """Set up a Trafikverket Camera."""
25 
26  coordinator = entry.runtime_data
27 
29  [
30  TVCamera(
31  coordinator,
32  entry.entry_id,
33  )
34  ],
35  )
36 
37 
39  """Implement Trafikverket camera."""
40 
41  _unrecorded_attributes = frozenset({ATTR_DESCRIPTION, ATTR_LOCATION})
42 
43  _attr_name = None
44  _attr_translation_key = "tv_camera"
45  coordinator: TVDataUpdateCoordinator
46 
47  def __init__(
48  self,
49  coordinator: TVDataUpdateCoordinator,
50  entry_id: str,
51  ) -> None:
52  """Initialize the camera."""
53  super().__init__(coordinator, entry_id)
54  Camera.__init__(self)
55  self._attr_unique_id_attr_unique_id = entry_id
56 
57  async def async_camera_image(
58  self, width: int | None = None, height: int | None = None
59  ) -> bytes | None:
60  """Return camera picture."""
61  return self.coordinator.data.image
62 
63  @property
64  def is_on(self) -> bool:
65  """Return camera on."""
66  return self.coordinator.data.data.active is True
67 
68  @property
69  def extra_state_attributes(self) -> Mapping[str, Any] | None:
70  """Return additional attributes."""
71  return {
72  ATTR_DESCRIPTION: self.coordinator.data.data.description,
73  ATTR_LOCATION: self.coordinator.data.data.location,
74  ATTR_TYPE: self.coordinator.data.data.camera_type,
75  }
None __init__(self, TVDataUpdateCoordinator coordinator, str entry_id)
Definition: camera.py:51
bytes|None async_camera_image(self, int|None width=None, int|None height=None)
Definition: camera.py:59
None async_setup_entry(HomeAssistant hass, TVCameraConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: camera.py:23