1 """Platform for sensor integration."""
3 from __future__
import annotations
8 SensorEntityDescription,
13 CONCENTRATION_PARTS_PER_MILLION,
15 UnitOfElectricPotential,
24 from .const
import DOMAIN
25 from .coordinator
import OndiloIcoCoordinator, OndiloIcoData
27 SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
30 native_unit_of_measurement=UnitOfTemperature.CELSIUS,
31 device_class=SensorDeviceClass.TEMPERATURE,
32 state_class=SensorStateClass.MEASUREMENT,
36 translation_key=
"oxydo_reduction_potential",
37 native_unit_of_measurement=UnitOfElectricPotential.MILLIVOLT,
38 state_class=SensorStateClass.MEASUREMENT,
42 device_class=SensorDeviceClass.PH,
43 state_class=SensorStateClass.MEASUREMENT,
47 translation_key=
"tds",
48 native_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
49 state_class=SensorStateClass.MEASUREMENT,
53 native_unit_of_measurement=PERCENTAGE,
54 device_class=SensorDeviceClass.BATTERY,
55 state_class=SensorStateClass.MEASUREMENT,
59 translation_key=
"rssi",
60 native_unit_of_measurement=PERCENTAGE,
61 state_class=SensorStateClass.MEASUREMENT,
65 translation_key=
"salt",
66 native_unit_of_measurement=
"mg/L",
67 state_class=SensorStateClass.MEASUREMENT,
73 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
75 """Set up the Ondilo ICO sensors."""
77 coordinator: OndiloIcoCoordinator = hass.data[DOMAIN][entry.entry_id]
80 OndiloICO(coordinator, pool_id, description)
81 for pool_id, pool
in coordinator.data.items()
82 for description
in SENSOR_TYPES
83 if description.key
in pool.sensors
88 """Representation of a Sensor."""
90 _attr_has_entity_name =
True
94 coordinator: OndiloIcoCoordinator,
96 description: SensorEntityDescription,
98 """Initialize sensor entity with data from coordinator."""
105 self.
_attr_unique_id_attr_unique_id = f
"{data.ico['serial_number']}-{description.key}"
107 identifiers={(DOMAIN, data.ico[
"serial_number"])},
108 manufacturer=
"Ondilo",
110 name=data.pool[
"name"],
111 sw_version=data.ico[
"sw_version"],
117 return self.coordinator.data[self.
_pool_id_pool_id]
121 """Last value of the sensor."""
StateType native_value(self)
None __init__(self, OndiloIcoCoordinator coordinator, str pool_id, SensorEntityDescription description)
OndiloIcoData pool_data(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)