"""Demo platform that offers fake air quality data.""" from __future__ import annotations from homeassistant.components.air_quality import AirQualityEntity from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType async def async_setup_platform( hass: HomeAssistant, config: ConfigType, async_add_entities: AddEntitiesCallback, discovery_info: DiscoveryInfoType | None = None, ) -> None: """Set up the Air Quality.""" async_add_entities( [DemoAirQuality("Home", 14, 23, 100), DemoAirQuality("Office", 4, 16, None)] ) async def async_setup_entry( hass: HomeAssistant, config_entry: ConfigEntry, async_add_entities: AddEntitiesCallback, ) -> None: """Set up the Demo config entry.""" await async_setup_platform(hass, {}, async_add_entities) class DemoAirQuality(AirQualityEntity): """Representation of Air Quality data.""" _attr_attribution = "Powered by Home Assistant" _attr_should_poll = False def __init__(self, name: str, pm_2_5: int, pm_10: int, n2o: int | None) -> None: """Initialize the Demo Air Quality.""" self._attr_name = f"Demo Air Quality {name}" self._pm_2_5 = pm_2_5 self._pm_10 = pm_10 self._n2o = n2o @property def particulate_matter_2_5(self) -> int: """Return the particulate matter 2.5 level.""" return self._pm_2_5 @property def particulate_matter_10(self) -> int: """Return the particulate matter 10 level.""" return self._pm_10 @property def nitrogen_oxide(self) -> int | None: """Return the nitrogen oxide (N2O) level.""" return self._n2o