1 """Platform for sensor integration."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
7 from typing
import cast
9 from geocachingapi.models
import GeocachingStatus
18 from .const
import DOMAIN
19 from .coordinator
import GeocachingDataUpdateCoordinator
22 @dataclass(frozen=True, kw_only=True)
24 """Define Sensor entity description class."""
26 value_fn: Callable[[GeocachingStatus], str | int |
None]
29 SENSORS: tuple[GeocachingSensorEntityDescription, ...] = (
32 translation_key=
"find_count",
33 native_unit_of_measurement=
"caches",
34 value_fn=
lambda status: status.user.find_count,
38 translation_key=
"hide_count",
39 native_unit_of_measurement=
"caches",
40 entity_registry_visible_default=
False,
41 value_fn=
lambda status: status.user.hide_count,
44 key=
"favorite_points",
45 translation_key=
"favorite_points",
46 native_unit_of_measurement=
"points",
47 entity_registry_visible_default=
False,
48 value_fn=
lambda status: status.user.favorite_points,
52 translation_key=
"souvenir_count",
53 native_unit_of_measurement=
"souvenirs",
54 value_fn=
lambda status: status.user.souvenir_count,
57 key=
"awarded_favorite_points",
58 translation_key=
"awarded_favorite_points",
59 native_unit_of_measurement=
"points",
60 entity_registry_visible_default=
False,
61 value_fn=
lambda status: status.user.awarded_favorite_points,
67 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
69 """Set up a Geocaching sensor entry."""
70 coordinator = hass.data[DOMAIN][entry.entry_id]
77 CoordinatorEntity[GeocachingDataUpdateCoordinator], SensorEntity
79 """Representation of a Sensor."""
81 entity_description: GeocachingSensorEntityDescription
82 _attr_has_entity_name =
True
86 coordinator: GeocachingDataUpdateCoordinator,
87 description: GeocachingSensorEntityDescription,
89 """Initialize the Geocaching sensor."""
93 f
"{coordinator.data.user.reference_code}_{description.key}"
96 name=f
"Geocaching {coordinator.data.user.username}",
97 identifiers={(DOMAIN, cast(str, coordinator.data.user.reference_code))},
98 entry_type=DeviceEntryType.SERVICE,
99 manufacturer=
"Groundspeak, Inc.",
104 """Return the state of the sensor."""
None __init__(self, GeocachingDataUpdateCoordinator coordinator, GeocachingSensorEntityDescription description)
str|int|None native_value(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)