|
36 | 36 | from zha.application.gateway import Gateway
|
37 | 37 | from zha.application.platforms import PlatformEntity, sensor
|
38 | 38 | from zha.application.platforms.sensor import DanfossSoftwareErrorCode, UnitOfMass
|
39 |
| -from zha.application.platforms.sensor.const import SensorDeviceClass |
| 39 | +from zha.application.platforms.sensor.const import SensorDeviceClass, SensorStateClass |
40 | 40 | from zha.units import PERCENTAGE, UnitOfEnergy, UnitOfPressure, UnitOfVolume
|
41 | 41 | from zha.zigbee.device import Device
|
42 | 42 |
|
@@ -1245,6 +1245,34 @@ def __init__(self, *args, **kwargs) -> None:
|
1245 | 1245 | translation_key="last_feeding_size",
|
1246 | 1246 | fallback_name="Last feeding size",
|
1247 | 1247 | )
|
| 1248 | + .sensor( |
| 1249 | + "power", |
| 1250 | + OppleCluster.cluster_id, |
| 1251 | + state_class=SensorStateClass.MEASUREMENT, |
| 1252 | + device_class=SensorDeviceClass.POWER, |
| 1253 | + fallback_name="Measurement", |
| 1254 | + ) |
| 1255 | + .sensor( |
| 1256 | + "energy", |
| 1257 | + OppleCluster.cluster_id, |
| 1258 | + state_class=SensorStateClass.TOTAL, |
| 1259 | + device_class=SensorDeviceClass.ENERGY, |
| 1260 | + fallback_name="Measurement", |
| 1261 | + ) |
| 1262 | + .sensor( |
| 1263 | + "energy_delivered", |
| 1264 | + OppleCluster.cluster_id, |
| 1265 | + state_class=SensorStateClass.TOTAL_INCREASING, |
| 1266 | + device_class=SensorDeviceClass.ENERGY, |
| 1267 | + fallback_name="Measurement", |
| 1268 | + ) |
| 1269 | + .sensor( |
| 1270 | + "energy_invalid_state_class", |
| 1271 | + OppleCluster.cluster_id, |
| 1272 | + state_class=SensorDeviceClass.ENERGY, |
| 1273 | + device_class=SensorDeviceClass.ENERGY, |
| 1274 | + fallback_name="Measurement", |
| 1275 | + ) |
1248 | 1276 | .add_to_registry()
|
1249 | 1277 | )
|
1250 | 1278 |
|
@@ -1292,6 +1320,29 @@ async def test_last_feeding_size_sensor_v2(zha_gateway: Gateway) -> None:
|
1292 | 1320 | assert_state(entity, 5.0, "g")
|
1293 | 1321 |
|
1294 | 1322 |
|
| 1323 | +async def test_state_class( |
| 1324 | + zha_gateway: Gateway, caplog: pytest.LogCaptureFixture |
| 1325 | +) -> None: |
| 1326 | + """Test quirks defined sensor.""" |
| 1327 | + |
| 1328 | + zha_device, cluster = await zigpy_device_aqara_sensor_v2_mock(zha_gateway) |
| 1329 | + assert isinstance(zha_device.device, CustomDeviceV2) |
| 1330 | + power_entity = get_entity(zha_device, platform=Platform.SENSOR, qualifier="power") |
| 1331 | + energy_entity = get_entity(zha_device, platform=Platform.SENSOR, qualifier="energy") |
| 1332 | + energy_delivered_entity = get_entity( |
| 1333 | + zha_device, platform=Platform.SENSOR, qualifier="energy_delivered" |
| 1334 | + ) |
| 1335 | + energy_invalid_state_class = get_entity( |
| 1336 | + zha_device, platform=Platform.SENSOR, qualifier="energy_invalid_state_class" |
| 1337 | + ) |
| 1338 | + |
| 1339 | + assert power_entity.state_class == SensorStateClass.MEASUREMENT |
| 1340 | + assert energy_entity.state_class == SensorStateClass.TOTAL |
| 1341 | + assert energy_delivered_entity.state_class == SensorStateClass.TOTAL_INCREASING |
| 1342 | + assert energy_invalid_state_class.state_class is None |
| 1343 | + assert "Quirks provided an invalid state class: energy" in caplog.text |
| 1344 | + |
| 1345 | + |
1295 | 1346 | async def test_device_counter_sensors(zha_gateway: Gateway) -> None:
|
1296 | 1347 | """Test coordinator counter sensor."""
|
1297 | 1348 |
|
|
0 commit comments