async def async_setup_platform(hass, config, async_add_entities, discovery_info=None): """Set up the air_quality kaiterra sensor.""" from kaiterra_async_client import KaiterraAPIClient, AQIStandard, Units api_key = config.get(CONF_API_KEY) aqi_standard = config.get(CONF_AQI_STANDARD) scan_interval = config.get(CONF_SCAN_INTERVAL) devices = config.get(CONF_DEVICES) units = [Units.from_str(unit) for unit in config.get(CONF_PREFERRED_UNITS)] api = KaiterraAPIClient(aiohttp_client.async_get_clientsession(hass), api_key=api_key, aqi_standard=AQIStandard.from_str(aqi_standard), preferred_units=units) data = KaiterraData(api, devices, aqi_standard, scan_interval) await data.async_update() sensors = [] for device in devices: id, name, genre = device.get(CONF_DEVICE_ID), device.get( CONF_NAME), device.get(CONF_TYPE) for kind, sensor in SENSORS.items(): sensors.append( KaiterraSensor(data, f"{name if name else genre} {sensor['name']}", id, kind, sensor['icon'])) async_add_entities(sensors, True)
def __init__(self, hass, config, session): """Initialize the API data object.""" api_key = config[CONF_API_KEY] aqi_standard = config[CONF_AQI_STANDARD] devices = config[CONF_DEVICES] units = config[CONF_PREFERRED_UNITS] self._hass = hass self._api = KaiterraAPIClient( session, api_key=api_key, aqi_standard=AQIStandard.from_str(aqi_standard), preferred_units=[Units.from_str(unit) for unit in units], ) self._devices_ids = [device[CONF_DEVICE_ID] for device in devices] self._devices = [ f"/{device[CONF_TYPE]}s/{device[CONF_DEVICE_ID]}" for device in devices ] self._scale = AQI_SCALE[aqi_standard] self._level = AQI_LEVEL[aqi_standard] self._update_listeners = [] self.data = {}