Update HomeKit PM2.5 mappings based on new 2024 US EPA AQI (#109900)
This commit is contained in:
parent
62d9020261
commit
b3a62a97b4
3 changed files with 17 additions and 6 deletions
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue