Update HomeKit PM2.5 mappings based on new 2024 US EPA AQI (#109900)

This commit is contained in:
Sarabveer Singh 2024-07-04 23:10:35 -04:00 committed by GitHub
parent 62d9020261
commit b3a62a97b4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 17 additions and 6 deletions

View file

@ -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)

View file

@ -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

View file

@ -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