1 """Sensor platform for Trafikverket Camera integration."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
7 from datetime
import datetime
12 SensorEntityDescription,
19 from .
import TVCameraConfigEntry
20 from .coordinator
import CameraData
21 from .entity
import TrafikverketCameraNonCameraEntity
26 @dataclass(frozen=True, kw_only=True)
28 """Describes Trafikverket Camera sensor entity."""
30 value_fn: Callable[[CameraData], StateType | datetime]
33 SENSOR_TYPES: tuple[TVCameraSensorEntityDescription, ...] = (
36 translation_key=
"direction",
37 native_unit_of_measurement=DEGREE,
38 value_fn=
lambda data: data.data.direction,
42 translation_key=
"modified",
43 device_class=SensorDeviceClass.TIMESTAMP,
44 value_fn=
lambda data: data.data.modified,
45 entity_registry_enabled_default=
False,
49 translation_key=
"photo_time",
50 device_class=SensorDeviceClass.TIMESTAMP,
51 value_fn=
lambda data: data.data.phototime,
55 translation_key=
"photo_url",
56 value_fn=
lambda data: data.data.photourl,
57 entity_registry_enabled_default=
False,
61 translation_key=
"status",
62 value_fn=
lambda data: data.data.status,
63 entity_registry_enabled_default=
False,
67 translation_key=
"camera_type",
68 value_fn=
lambda data: data.data.camera_type,
69 entity_registry_enabled_default=
False,
76 entry: TVCameraConfigEntry,
77 async_add_entities: AddEntitiesCallback,
79 """Set up Trafikverket Camera sensor platform."""
81 coordinator = entry.runtime_data
84 for description
in SENSOR_TYPES
89 """Representation of a Trafikverket Camera Sensor."""
91 entity_description: TVCameraSensorEntityDescription
None async_setup_entry(HomeAssistant hass, TVCameraConfigEntry entry, AddEntitiesCallback async_add_entities)