Пример #1
0
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)
Пример #2
0
    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 = {}