mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 10:17:09 +00:00
Update HomeKit PM2.5 mappings based on new 2024 US EPA AQI (#109900)
This commit is contained in:
parent
62d9020261
commit
b3a62a97b4
@ -433,13 +433,13 @@ def temperature_to_states(temperature: float, unit: str) -> float:
|
|||||||
|
|
||||||
def density_to_air_quality(density: float) -> int:
|
def density_to_air_quality(density: float) -> int:
|
||||||
"""Map PM2.5 µg/m3 density to HomeKit AirQuality level."""
|
"""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
|
return 1
|
||||||
if density <= 35.4: # US AQI 51-100 (HomeKit: Good)
|
if density <= 35.4: # US AQI 51-100 (HomeKit: Good)
|
||||||
return 2
|
return 2
|
||||||
if density <= 55.4: # US AQI 101-150 (HomeKit: Fair)
|
if density <= 55.4: # US AQI 101-150 (HomeKit: Fair)
|
||||||
return 3
|
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 4
|
||||||
return 5 # US AQI 201+ (HomeKit: Poor)
|
return 5 # US AQI 201+ (HomeKit: Poor)
|
||||||
|
|
||||||
|
@ -213,6 +213,16 @@ async def test_pm25(hass: HomeAssistant, hk_driver) -> None:
|
|||||||
assert acc.char_density.value == 0
|
assert acc.char_density.value == 0
|
||||||
assert acc.char_quality.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")
|
hass.states.async_set(entity_id, "23")
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
assert acc.char_density.value == 23
|
assert acc.char_density.value == 23
|
||||||
|
@ -230,14 +230,15 @@ def test_temperature_to_states() -> None:
|
|||||||
def test_density_to_air_quality() -> None:
|
def test_density_to_air_quality() -> None:
|
||||||
"""Test map PM2.5 density to HomeKit AirQuality level."""
|
"""Test map PM2.5 density to HomeKit AirQuality level."""
|
||||||
assert density_to_air_quality(0) == 1
|
assert density_to_air_quality(0) == 1
|
||||||
assert density_to_air_quality(12) == 1
|
assert density_to_air_quality(9) == 1
|
||||||
assert density_to_air_quality(12.1) == 2
|
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.4) == 2
|
||||||
assert density_to_air_quality(35.5) == 3
|
assert density_to_air_quality(35.5) == 3
|
||||||
assert density_to_air_quality(55.4) == 3
|
assert density_to_air_quality(55.4) == 3
|
||||||
assert density_to_air_quality(55.5) == 4
|
assert density_to_air_quality(55.5) == 4
|
||||||
assert density_to_air_quality(150.4) == 4
|
assert density_to_air_quality(125.4) == 4
|
||||||
assert density_to_air_quality(150.5) == 5
|
assert density_to_air_quality(125.5) == 5
|
||||||
assert density_to_air_quality(200) == 5
|
assert density_to_air_quality(200) == 5
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user