Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Sensor platform for Trafikverket Camera integration."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Callable
6 from dataclasses import dataclass
7 from datetime import datetime
8 
10  SensorDeviceClass,
11  SensorEntity,
12  SensorEntityDescription,
13 )
14 from homeassistant.const import DEGREE
15 from homeassistant.core import HomeAssistant, callback
16 from homeassistant.helpers.entity_platform import AddEntitiesCallback
17 from homeassistant.helpers.typing import StateType
18 
19 from . import TVCameraConfigEntry
20 from .coordinator import CameraData
21 from .entity import TrafikverketCameraNonCameraEntity
22 
23 PARALLEL_UPDATES = 0
24 
25 
26 @dataclass(frozen=True, kw_only=True)
28  """Describes Trafikverket Camera sensor entity."""
29 
30  value_fn: Callable[[CameraData], StateType | datetime]
31 
32 
33 SENSOR_TYPES: tuple[TVCameraSensorEntityDescription, ...] = (
35  key="direction",
36  translation_key="direction",
37  native_unit_of_measurement=DEGREE,
38  value_fn=lambda data: data.data.direction,
39  ),
41  key="modified",
42  translation_key="modified",
43  device_class=SensorDeviceClass.TIMESTAMP,
44  value_fn=lambda data: data.data.modified,
45  entity_registry_enabled_default=False,
46  ),
48  key="photo_time",
49  translation_key="photo_time",
50  device_class=SensorDeviceClass.TIMESTAMP,
51  value_fn=lambda data: data.data.phototime,
52  ),
54  key="photo_url",
55  translation_key="photo_url",
56  value_fn=lambda data: data.data.photourl,
57  entity_registry_enabled_default=False,
58  ),
60  key="status",
61  translation_key="status",
62  value_fn=lambda data: data.data.status,
63  entity_registry_enabled_default=False,
64  ),
66  key="camera_type",
67  translation_key="camera_type",
68  value_fn=lambda data: data.data.camera_type,
69  entity_registry_enabled_default=False,
70  ),
71 )
72 
73 
75  hass: HomeAssistant,
76  entry: TVCameraConfigEntry,
77  async_add_entities: AddEntitiesCallback,
78 ) -> None:
79  """Set up Trafikverket Camera sensor platform."""
80 
81  coordinator = entry.runtime_data
83  TrafikverketCameraSensor(coordinator, entry.entry_id, description)
84  for description in SENSOR_TYPES
85  )
86 
87 
89  """Representation of a Trafikverket Camera Sensor."""
90 
91  entity_description: TVCameraSensorEntityDescription
92 
93  @callback
94  def _update_attr(self) -> None:
95  """Update _attr."""
96  self._attr_native_value_attr_native_value = self.entity_descriptionentity_description.value_fn(
97  self.coordinator.data
98  )
None async_setup_entry(HomeAssistant hass, TVCameraConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:78