1 """Support for the JustNimbus platform."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
12 SensorEntityDescription,
27 from .
import JustNimbusCoordinator
28 from .const
import DOMAIN
29 from .entity
import JustNimbusEntity
32 @dataclass(frozen=True, kw_only=True)
34 """Describes JustNimbus sensor entity."""
36 value_fn: Callable[[JustNimbusCoordinator], Any]
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,
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,
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,
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,
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,
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,
96 translation_key=
"pump_type",
97 entity_category=EntityCategory.DIAGNOSTIC,
98 value_fn=
lambda coordinator: coordinator.data.pump_type,
104 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
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,
114 for description
in SENSOR_TYPES
119 """Implementation of the JustNimbus sensor."""
125 description: JustNimbusEntityDescription,
126 coordinator: JustNimbusCoordinator,
128 """Initialize the sensor."""
129 self.entity_description: JustNimbusEntityDescription = description
132 coordinator=coordinator,
138 """Return sensor state."""
139 return self.entity_description.
value_fn(self.coordinator)
StateType native_value(self)
None __init__(self, *str device_id, JustNimbusEntityDescription description, JustNimbusCoordinator coordinator)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)