1 """Support for Oncue sensors."""
3 from __future__
import annotations
5 from aiooncue
import OncueDevice, OncueSensor
10 SensorEntityDescription,
16 UnitOfElectricCurrent,
17 UnitOfElectricPotential,
28 from .entity
import OncueEntity
29 from .types
import OncueConfigEntry
31 SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
35 entity_category=EntityCategory.DIAGNOSTIC,
39 icon=
"mdi:speedometer",
40 entity_category=EntityCategory.DIAGNOSTIC,
43 key=
"EngineTargetSpeed",
44 icon=
"mdi:speedometer",
45 entity_category=EntityCategory.DIAGNOSTIC,
48 key=
"EngineOilPressure",
49 native_unit_of_measurement=UnitOfPressure.PSI,
50 device_class=SensorDeviceClass.PRESSURE,
51 state_class=SensorStateClass.MEASUREMENT,
52 entity_category=EntityCategory.DIAGNOSTIC,
55 key=
"EngineCoolantTemperature",
56 device_class=SensorDeviceClass.TEMPERATURE,
57 state_class=SensorStateClass.MEASUREMENT,
58 entity_category=EntityCategory.DIAGNOSTIC,
62 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
63 device_class=SensorDeviceClass.VOLTAGE,
64 state_class=SensorStateClass.MEASUREMENT,
65 entity_category=EntityCategory.DIAGNOSTIC,
68 key=
"LubeOilTemperature",
69 device_class=SensorDeviceClass.TEMPERATURE,
70 state_class=SensorStateClass.MEASUREMENT,
71 entity_category=EntityCategory.DIAGNOSTIC,
74 key=
"GensetControllerTemperature",
75 device_class=SensorDeviceClass.TEMPERATURE,
76 state_class=SensorStateClass.MEASUREMENT,
77 entity_category=EntityCategory.DIAGNOSTIC,
80 key=
"EngineCompartmentTemperature",
81 device_class=SensorDeviceClass.TEMPERATURE,
82 state_class=SensorStateClass.MEASUREMENT,
83 entity_category=EntityCategory.DIAGNOSTIC,
86 key=
"GeneratorTrueTotalPower",
87 native_unit_of_measurement=UnitOfPower.WATT,
88 device_class=SensorDeviceClass.POWER,
89 state_class=SensorStateClass.MEASUREMENT,
90 entity_category=EntityCategory.DIAGNOSTIC,
93 key=
"GeneratorTruePercentOfRatedPower",
94 native_unit_of_measurement=PERCENTAGE,
95 entity_category=EntityCategory.DIAGNOSTIC,
98 key=
"GeneratorVoltageAverageLineToLine",
99 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
100 device_class=SensorDeviceClass.VOLTAGE,
101 state_class=SensorStateClass.MEASUREMENT,
102 entity_category=EntityCategory.DIAGNOSTIC,
105 key=
"GeneratorFrequency",
106 native_unit_of_measurement=UnitOfFrequency.HERTZ,
107 device_class=SensorDeviceClass.FREQUENCY,
108 state_class=SensorStateClass.MEASUREMENT,
109 entity_category=EntityCategory.DIAGNOSTIC,
113 key=
"GensetControllerTotalOperationTime",
115 entity_category=EntityCategory.DIAGNOSTIC,
118 key=
"EngineTotalRunTime",
120 entity_category=EntityCategory.DIAGNOSTIC,
123 key=
"EngineTotalRunTimeLoaded",
125 entity_category=EntityCategory.DIAGNOSTIC,
130 icon=
"mdi:ip-network",
131 entity_category=EntityCategory.DIAGNOSTIC,
134 key=
"ConnectedServerIPAddress",
135 icon=
"mdi:server-network",
136 entity_category=EntityCategory.DIAGNOSTIC,
139 key=
"Source1VoltageAverageLineToLine",
140 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
141 device_class=SensorDeviceClass.VOLTAGE,
142 state_class=SensorStateClass.MEASUREMENT,
143 entity_category=EntityCategory.DIAGNOSTIC,
146 key=
"Source2VoltageAverageLineToLine",
147 native_unit_of_measurement=UnitOfElectricPotential.VOLT,
148 device_class=SensorDeviceClass.VOLTAGE,
149 state_class=SensorStateClass.MEASUREMENT,
150 entity_category=EntityCategory.DIAGNOSTIC,
153 key=
"GensetTotalEnergy",
154 native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
155 device_class=SensorDeviceClass.ENERGY,
156 state_class=SensorStateClass.TOTAL_INCREASING,
159 key=
"EngineTotalNumberOfStarts",
161 entity_category=EntityCategory.DIAGNOSTIC,
164 key=
"GeneratorCurrentAverage",
165 native_unit_of_measurement=UnitOfElectricCurrent.AMPERE,
166 device_class=SensorDeviceClass.CURRENT,
167 state_class=SensorStateClass.MEASUREMENT,
168 entity_category=EntityCategory.DIAGNOSTIC,
172 SENSOR_MAP = {description.key: description
for description
in SENSOR_TYPES}
175 "C": UnitOfTemperature.CELSIUS,
176 "F": UnitOfTemperature.FAHRENHEIT,
182 config_entry: OncueConfigEntry,
183 async_add_entities: AddEntitiesCallback,
185 """Set up sensors."""
186 coordinator = config_entry.runtime_data
187 devices = coordinator.data
190 for device_id, device
in devices.items()
191 for key, sensor
in device.sensors.items()
197 """Representation of an Oncue sensor."""
201 coordinator: DataUpdateCoordinator[dict[str, OncueDevice]],
205 description: SensorEntityDescription,
207 """Initialize the sensor."""
208 super().
__init__(coordinator, device_id, device, sensor, description)
209 if not description.native_unit_of_measurement
and sensor.unit
is not None:
211 sensor.unit, sensor.unit
216 """Return the sensors state."""
None __init__(self, DataUpdateCoordinator[dict[str, OncueDevice]] coordinator, str device_id, OncueDevice device, OncueSensor sensor, SensorEntityDescription description)
_attr_native_unit_of_measurement
None async_setup_entry(HomeAssistant hass, OncueConfigEntry config_entry, AddEntitiesCallback async_add_entities)