core/homeassistant/components/flipr/__init__.py

60 lines
1.8 KiB
Python

"""The Flipr integration."""
import logging
from flipr_api import FliprAPIRestClient
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_EMAIL, CONF_PASSWORD, Platform
from homeassistant.core import HomeAssistant
from .coordinator import (
FliprConfigEntry,
FliprData,
FliprDataUpdateCoordinator,
FliprHubDataUpdateCoordinator,
)
PLATFORMS = [Platform.BINARY_SENSOR, Platform.SELECT, Platform.SENSOR, Platform.SWITCH]
_LOGGER = logging.getLogger(__name__)
async def async_setup_entry(hass: HomeAssistant, entry: FliprConfigEntry) -> bool:
"""Set up flipr from a config entry."""
config = entry.data
username = config[CONF_EMAIL]
password = config[CONF_PASSWORD]
_LOGGER.debug("Initializing Flipr client %s", username)
client = FliprAPIRestClient(username, password)
ids = await hass.async_add_executor_job(client.search_all_ids)
_LOGGER.debug("List of devices ids : %s", ids)
flipr_coordinators = []
for flipr_id in ids["flipr"]:
flipr_coordinator = FliprDataUpdateCoordinator(hass, entry, client, flipr_id)
await flipr_coordinator.async_config_entry_first_refresh()
flipr_coordinators.append(flipr_coordinator)
hub_coordinators = []
for hub_id in ids["hub"]:
hub_coordinator = FliprHubDataUpdateCoordinator(hass, entry, client, hub_id)
await hub_coordinator.async_config_entry_first_refresh()
hub_coordinators.append(hub_coordinator)
entry.runtime_data = FliprData(flipr_coordinators, hub_coordinators)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a config entry."""
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)