From b3a62a97b4a6ee9342014e6e7cab951579a69c1a Mon Sep 17 00:00:00 2001 From: Sarabveer Singh <4297171+sarabveer@users.noreply.github.com> Date: Thu, 4 Jul 2024 23:10:35 -0400 Subject: [PATCH] Update HomeKit PM2.5 mappings based on new 2024 US EPA AQI (#109900) --- homeassistant/components/homekit/util.py | 4 ++-- tests/components/homekit/test_type_sensors.py | 10 ++++++++++ tests/components/homekit/test_util.py | 9 +++++---- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/homekit/util.py b/homeassistant/components/homekit/util.py index 8fbd7c6b13b..d521fd6db0c 100644 --- a/homeassistant/components/homekit/util.py +++ b/homeassistant/components/homekit/util.py @@ -433,13 +433,13 @@ def temperature_to_states(temperature: float, unit: str) -> float: def density_to_air_quality(density: float) -> int: """Map PM2.5 µg/m3 density to HomeKit AirQuality level.""" - if density <= 12: # US AQI 0-50 (HomeKit: Excellent) + if density <= 9: # US AQI 0-50 (HomeKit: Excellent) return 1 if density <= 35.4: # US AQI 51-100 (HomeKit: Good) return 2 if density <= 55.4: # US AQI 101-150 (HomeKit: Fair) return 3 - if density <= 150.4: # US AQI 151-200 (HomeKit: Inferior) + if density <= 125.4: # US AQI 151-200 (HomeKit: Inferior) return 4 return 5 # US AQI 201+ (HomeKit: Poor) diff --git a/tests/components/homekit/test_type_sensors.py b/tests/components/homekit/test_type_sensors.py index 3b26ec8d36e..3e8e05fdcfd 100644 --- a/tests/components/homekit/test_type_sensors.py +++ b/tests/components/homekit/test_type_sensors.py @@ -213,6 +213,16 @@ async def test_pm25(hass: HomeAssistant, hk_driver) -> None: assert acc.char_density.value == 0 assert acc.char_quality.value == 0 + hass.states.async_set(entity_id, "8") + await hass.async_block_till_done() + assert acc.char_density.value == 8 + assert acc.char_quality.value == 1 + + hass.states.async_set(entity_id, "12") + await hass.async_block_till_done() + assert acc.char_density.value == 12 + assert acc.char_quality.value == 2 + hass.states.async_set(entity_id, "23") await hass.async_block_till_done() assert acc.char_density.value == 23 diff --git a/tests/components/homekit/test_util.py b/tests/components/homekit/test_util.py index 24999242dc1..ff6ee0c6aa8 100644 --- a/tests/components/homekit/test_util.py +++ b/tests/components/homekit/test_util.py @@ -230,14 +230,15 @@ def test_temperature_to_states() -> None: def test_density_to_air_quality() -> None: """Test map PM2.5 density to HomeKit AirQuality level.""" assert density_to_air_quality(0) == 1 - assert density_to_air_quality(12) == 1 - assert density_to_air_quality(12.1) == 2 + assert density_to_air_quality(9) == 1 + assert density_to_air_quality(9.1) == 2 + assert density_to_air_quality(12) == 2 assert density_to_air_quality(35.4) == 2 assert density_to_air_quality(35.5) == 3 assert density_to_air_quality(55.4) == 3 assert density_to_air_quality(55.5) == 4 - assert density_to_air_quality(150.4) == 4 - assert density_to_air_quality(150.5) == 5 + assert density_to_air_quality(125.4) == 4 + assert density_to_air_quality(125.5) == 5 assert density_to_air_quality(200) == 5