mirror of
https://github.com/home-assistant/core.git
synced 2025-07-28 15:47:12 +00:00
Refactor concentration level handling and tests
This commit is contained in:
parent
92d8b1cb9f
commit
ad7f512e45
@ -5,7 +5,7 @@ from __future__ import annotations
|
|||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from aranet4.client import Aranet4Advertisement, AranetType, Color
|
from aranet4.client import Aranet4Advertisement, Color
|
||||||
from bleak.backends.device import BLEDevice
|
from bleak.backends.device import BLEDevice
|
||||||
|
|
||||||
from homeassistant.components.bluetooth.passive_update_processor import (
|
from homeassistant.components.bluetooth.passive_update_processor import (
|
||||||
@ -76,8 +76,10 @@ SENSOR_DESCRIPTIONS = {
|
|||||||
),
|
),
|
||||||
"status": AranetSensorEntityDescription(
|
"status": AranetSensorEntityDescription(
|
||||||
key="concentration_level",
|
key="concentration_level",
|
||||||
|
translation_key="concentration_level",
|
||||||
name="Concentration Level",
|
name="Concentration Level",
|
||||||
device_class=SensorDeviceClass.ENUM,
|
device_class=SensorDeviceClass.ENUM,
|
||||||
|
options=[status.name for status in Color],
|
||||||
),
|
),
|
||||||
"co2": AranetSensorEntityDescription(
|
"co2": AranetSensorEntityDescription(
|
||||||
key="co2",
|
key="co2",
|
||||||
@ -166,11 +168,9 @@ def sensor_update_to_bluetooth_data_update(
|
|||||||
val = getattr(adv.readings, key)
|
val = getattr(adv.readings, key)
|
||||||
if val == -1:
|
if val == -1:
|
||||||
continue
|
continue
|
||||||
val = (
|
if key == "status":
|
||||||
get_friendly_status(val.name, adv.readings.type)
|
val = val.name
|
||||||
if key == "status"
|
val = val * desc.scale
|
||||||
else val * desc.scale
|
|
||||||
)
|
|
||||||
data[tag] = val
|
data[tag] = val
|
||||||
names[tag] = desc.name
|
names[tag] = desc.name
|
||||||
descs[tag] = desc
|
descs[tag] = desc
|
||||||
@ -222,17 +222,3 @@ class Aranet4BluetoothSensorEntity(
|
|||||||
def native_value(self) -> int | float | None:
|
def native_value(self) -> int | float | None:
|
||||||
"""Return the native value."""
|
"""Return the native value."""
|
||||||
return self.processor.entity_data.get(self.entity_key)
|
return self.processor.entity_data.get(self.entity_key)
|
||||||
|
|
||||||
|
|
||||||
def get_friendly_status(status: Color, device_type: AranetType) -> str:
|
|
||||||
"""Map status code to human-readable status based on device type."""
|
|
||||||
status_map = {
|
|
||||||
"ERROR": "Error",
|
|
||||||
"RED": "Unhealthy",
|
|
||||||
(device_type.ARANET4, "GREEN"): "Good",
|
|
||||||
(device_type.ARANET4, "YELLOW"): "Average",
|
|
||||||
(device_type.ARANET_RADON, "GREEN"): "Normal",
|
|
||||||
(device_type.ARANET_RADON, "YELLOW"): "Elevated",
|
|
||||||
}
|
|
||||||
|
|
||||||
return status_map.get((device_type, status), status_map.get(status, status))
|
|
||||||
|
@ -21,5 +21,16 @@
|
|||||||
"no_devices_found": "No unconfigured Aranet devices found.",
|
"no_devices_found": "No unconfigured Aranet devices found.",
|
||||||
"outdated_version": "This device is using outdated firmware. Please update it to at least v1.2.0 and try again."
|
"outdated_version": "This device is using outdated firmware. Please update it to at least v1.2.0 and try again."
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"entity": {
|
||||||
|
"sensor": {
|
||||||
|
"concentration_level": {
|
||||||
|
"state": {
|
||||||
|
"green": "Normal",
|
||||||
|
"yellow": "Elevated",
|
||||||
|
"red": "Unhealthy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant.components.aranet.const import DOMAIN
|
from homeassistant.components.aranet.const import DOMAIN
|
||||||
from homeassistant.components.sensor import ATTR_STATE_CLASS
|
from homeassistant.components.sensor import ATTR_OPTIONS, ATTR_STATE_CLASS
|
||||||
from homeassistant.const import ATTR_FRIENDLY_NAME, ATTR_UNIT_OF_MEASUREMENT
|
from homeassistant.const import ATTR_FRIENDLY_NAME, ATTR_UNIT_OF_MEASUREMENT
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
||||||
@ -216,10 +216,11 @@ async def test_sensors_aranet4(
|
|||||||
|
|
||||||
status_sensor = hass.states.get("sensor.aranet4_12345_concentration_level")
|
status_sensor = hass.states.get("sensor.aranet4_12345_concentration_level")
|
||||||
status_sensor_attrs = status_sensor.attributes
|
status_sensor_attrs = status_sensor.attributes
|
||||||
assert status_sensor.state == "Good"
|
assert status_sensor.state == "GREEN"
|
||||||
assert (
|
assert (
|
||||||
status_sensor_attrs[ATTR_FRIENDLY_NAME] == "Aranet4 12345 Concentration Level"
|
status_sensor_attrs[ATTR_FRIENDLY_NAME] == "Aranet4 12345 Concentration Level"
|
||||||
)
|
)
|
||||||
|
assert status_sensor_attrs[ATTR_OPTIONS] == ["ERROR", "GREEN", "YELLOW", "RED"]
|
||||||
|
|
||||||
# Check device context for the battery sensor
|
# Check device context for the battery sensor
|
||||||
entity = entity_registry.async_get("sensor.aranet4_12345_battery")
|
entity = entity_registry.async_get("sensor.aranet4_12345_battery")
|
||||||
@ -300,10 +301,11 @@ async def test_sensors_aranetrn(
|
|||||||
|
|
||||||
status_sensor = hass.states.get("sensor.aranetrn_12345_concentration_level")
|
status_sensor = hass.states.get("sensor.aranetrn_12345_concentration_level")
|
||||||
status_sensor_attrs = status_sensor.attributes
|
status_sensor_attrs = status_sensor.attributes
|
||||||
assert status_sensor.state == "Normal"
|
assert status_sensor.state == "GREEN"
|
||||||
assert (
|
assert (
|
||||||
status_sensor_attrs[ATTR_FRIENDLY_NAME] == "AranetRn+ 12345 Concentration Level"
|
status_sensor_attrs[ATTR_FRIENDLY_NAME] == "AranetRn+ 12345 Concentration Level"
|
||||||
)
|
)
|
||||||
|
assert status_sensor_attrs[ATTR_OPTIONS] == ["ERROR", "GREEN", "YELLOW", "RED"]
|
||||||
|
|
||||||
# Check device context for the battery sensor
|
# Check device context for the battery sensor
|
||||||
entity = entity_registry.async_get("sensor.aranetrn_12345_battery")
|
entity = entity_registry.async_get("sensor.aranetrn_12345_battery")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user