1 """Platform for Sanix integration."""
3 from collections.abc
import Callable
4 from dataclasses
import dataclass
5 from datetime
import date, datetime
7 from sanix.const
import (
12 ATTR_API_SERVICE_DATE,
15 from sanix.models
import Measurement
20 SensorEntityDescription,
30 from .const
import DOMAIN, MANUFACTURER
31 from .coordinator
import SanixCoordinator
34 @dataclass(frozen=True, kw_only=True)
36 """Class describing Sanix Sensor entities."""
38 native_value_fn: Callable[[Measurement], int | datetime | date | str]
41 SENSOR_TYPES: tuple[SanixSensorEntityDescription, ...] = (
44 native_unit_of_measurement=PERCENTAGE,
45 device_class=SensorDeviceClass.BATTERY,
46 state_class=SensorStateClass.MEASUREMENT,
47 native_value_fn=
lambda data: data.battery,
50 key=ATTR_API_DISTANCE,
51 native_unit_of_measurement=UnitOfLength.CENTIMETERS,
52 device_class=SensorDeviceClass.DISTANCE,
53 state_class=SensorStateClass.MEASUREMENT,
54 native_value_fn=
lambda data: data.distance,
57 key=ATTR_API_SERVICE_DATE,
58 translation_key=ATTR_API_SERVICE_DATE,
59 device_class=SensorDeviceClass.DATE,
60 native_value_fn=
lambda data: data.service_date,
63 key=ATTR_API_FILL_PERC,
64 translation_key=ATTR_API_FILL_PERC,
65 native_unit_of_measurement=PERCENTAGE,
66 state_class=SensorStateClass.MEASUREMENT,
67 native_value_fn=
lambda data: data.fill_perc,
71 translation_key=ATTR_API_SSID,
72 entity_registry_enabled_default=
False,
73 native_value_fn=
lambda data: data.ssid,
76 key=ATTR_API_DEVICE_NO,
77 translation_key=ATTR_API_DEVICE_NO,
78 entity_registry_enabled_default=
False,
79 native_value_fn=
lambda data: data.device_no,
85 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
87 """Set up Sanix Sensor entities based on a config entry."""
88 coordinator = hass.data[DOMAIN][entry.entry_id]
96 """Sanix Sensor entity."""
98 _attr_has_entity_name =
True
99 entity_description: SanixSensorEntityDescription
103 coordinator: SanixCoordinator,
104 description: SanixSensorEntityDescription,
106 """Pass coordinator to CoordinatorEntity."""
108 serial_no =
str(coordinator.config_entry.unique_id)
114 identifiers={(DOMAIN, serial_no)},
115 entry_type=DeviceEntryType.SERVICE,
116 manufacturer=MANUFACTURER,
117 serial_number=serial_no,
122 """Return the state of the sensor."""
123 return self.
entity_descriptionentity_description.native_value_fn(self.coordinator.data)
None __init__(self, SanixCoordinator coordinator, SanixSensorEntityDescription description)
int|datetime|date|str native_value(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)