Home Assistant Unofficial Reference 2024.12.1
sensor.py
Go to the documentation of this file.
1 """Support for the JustNimbus platform."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Callable
6 from dataclasses import dataclass
7 from typing import Any
8 
10  SensorDeviceClass,
11  SensorEntity,
12  SensorEntityDescription,
13  SensorStateClass,
14 )
15 from homeassistant.config_entries import ConfigEntry
16 from homeassistant.const import (
17  CONF_CLIENT_ID,
18  EntityCategory,
19  UnitOfPressure,
20  UnitOfTemperature,
21  UnitOfVolume,
22 )
23 from homeassistant.core import HomeAssistant
24 from homeassistant.helpers.entity_platform import AddEntitiesCallback
25 from homeassistant.helpers.typing import StateType
26 
27 from . import JustNimbusCoordinator
28 from .const import DOMAIN
29 from .entity import JustNimbusEntity
30 
31 
32 @dataclass(frozen=True, kw_only=True)
34  """Describes JustNimbus sensor entity."""
35 
36  value_fn: Callable[[JustNimbusCoordinator], Any]
37 
38 
39 SENSOR_TYPES = (
41  key="pump_pressure",
42  translation_key="pump_pressure",
43  native_unit_of_measurement=UnitOfPressure.BAR,
44  device_class=SensorDeviceClass.PRESSURE,
45  state_class=SensorStateClass.MEASUREMENT,
46  entity_category=EntityCategory.DIAGNOSTIC,
47  value_fn=lambda coordinator: coordinator.data.pump_pressure,
48  ),
50  key="reservoir_temp",
51  translation_key="reservoir_temperature",
52  native_unit_of_measurement=UnitOfTemperature.CELSIUS,
53  device_class=SensorDeviceClass.TEMPERATURE,
54  state_class=SensorStateClass.MEASUREMENT,
55  entity_category=EntityCategory.DIAGNOSTIC,
56  value_fn=lambda coordinator: coordinator.data.reservoir_temp,
57  ),
59  key="reservoir_content",
60  translation_key="reservoir_content",
61  native_unit_of_measurement=UnitOfVolume.LITERS,
62  device_class=SensorDeviceClass.VOLUME,
63  state_class=SensorStateClass.TOTAL,
64  entity_category=EntityCategory.DIAGNOSTIC,
65  value_fn=lambda coordinator: coordinator.data.reservoir_content,
66  ),
68  key="water_saved",
69  translation_key="water_saved",
70  native_unit_of_measurement=UnitOfVolume.LITERS,
71  device_class=SensorDeviceClass.VOLUME,
72  state_class=SensorStateClass.TOTAL_INCREASING,
73  entity_category=EntityCategory.DIAGNOSTIC,
74  value_fn=lambda coordinator: coordinator.data.water_saved,
75  ),
77  key="water_used",
78  translation_key="water_used",
79  native_unit_of_measurement=UnitOfVolume.LITERS,
80  device_class=SensorDeviceClass.VOLUME,
81  state_class=SensorStateClass.TOTAL_INCREASING,
82  entity_category=EntityCategory.DIAGNOSTIC,
83  value_fn=lambda coordinator: coordinator.data.water_used,
84  ),
86  key="reservoir_capacity",
87  translation_key="reservoir_capacity",
88  native_unit_of_measurement=UnitOfVolume.LITERS,
89  device_class=SensorDeviceClass.VOLUME,
90  state_class=SensorStateClass.TOTAL,
91  entity_category=EntityCategory.DIAGNOSTIC,
92  value_fn=lambda coordinator: coordinator.data.reservoir_capacity,
93  ),
95  key="pump_type",
96  translation_key="pump_type",
97  entity_category=EntityCategory.DIAGNOSTIC,
98  value_fn=lambda coordinator: coordinator.data.pump_type,
99  ),
100 )
101 
102 
104  hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
105 ) -> None:
106  """Set up the JustNimbus sensor."""
107  coordinator: JustNimbusCoordinator = hass.data[DOMAIN][entry.entry_id]
110  device_id=entry.data[CONF_CLIENT_ID],
111  description=description,
112  coordinator=coordinator,
113  )
114  for description in SENSOR_TYPES
115  )
116 
117 
119  """Implementation of the JustNimbus sensor."""
120 
121  def __init__(
122  self,
123  *,
124  device_id: str,
125  description: JustNimbusEntityDescription,
126  coordinator: JustNimbusCoordinator,
127  ) -> None:
128  """Initialize the sensor."""
129  self.entity_description: JustNimbusEntityDescription = description
130  super().__init__(
131  device_id=device_id,
132  coordinator=coordinator,
133  )
134  self._attr_unique_id_attr_unique_id = f"{device_id}_{description.key}"
135 
136  @property
137  def native_value(self) -> StateType:
138  """Return sensor state."""
139  return self.entity_description.value_fn(self.coordinator)
None __init__(self, *str device_id, JustNimbusEntityDescription description, JustNimbusCoordinator coordinator)
Definition: sensor.py:127
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: sensor.py:105