1 """Platform for sensor integration."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
12 SensorEntityDescription,
19 from .
import MonzoCoordinator
20 from .const
import DOMAIN
21 from .coordinator
import MonzoData
22 from .entity
import MonzoBaseEntity
25 @dataclass(frozen=True, kw_only=True)
27 """Describes Monzo sensor entity."""
29 value_fn: Callable[[dict[str, Any]], StateType]
35 translation_key=
"balance",
36 value_fn=
lambda data: data[
"balance"][
"balance"] / 100,
37 device_class=SensorDeviceClass.MONETARY,
38 native_unit_of_measurement=
"GBP",
39 suggested_display_precision=2,
43 translation_key=
"total_balance",
44 value_fn=
lambda data: data[
"balance"][
"total_balance"] / 100,
45 device_class=SensorDeviceClass.MONETARY,
46 native_unit_of_measurement=
"GBP",
47 suggested_display_precision=2,
54 translation_key=
"pot_balance",
55 value_fn=
lambda data: data[
"balance"] / 100,
56 device_class=SensorDeviceClass.MONETARY,
57 native_unit_of_measurement=
"GBP",
58 suggested_display_precision=2,
67 config_entry: ConfigEntry,
68 async_add_entities: AddEntitiesCallback,
70 """Defer sensor setup to the shared sensor module."""
71 coordinator: MonzoCoordinator = hass.data[DOMAIN][config_entry.entry_id]
81 for entity_description
in ACCOUNT_SENSORS
82 for index, account
in enumerate(coordinator.data.accounts)
86 MonzoSensor(coordinator, entity_description, index, MODEL_POT,
lambda x: x.pots)
87 for entity_description
in POT_SENSORS
88 for index, _pot
in enumerate(coordinator.data.pots)
95 """Represents a Monzo sensor."""
97 entity_description: MonzoSensorEntityDescription
101 coordinator: MonzoCoordinator,
102 entity_description: MonzoSensorEntityDescription,
105 data_accessor: Callable[[MonzoData], list[dict[str, Any]]],
107 """Initialize the sensor."""
108 super().
__init__(coordinator, index, device_model, data_accessor)
114 """Return the state."""
118 except (KeyError, ValueError):
dict[str, Any] data(self)
StateType native_value(self)
None __init__(self, MonzoCoordinator coordinator, MonzoSensorEntityDescription entity_description, int index, str device_model, Callable[[MonzoData], list[dict[str, Any]]] data_accessor)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)