1 """The Sensibo component."""
3 from __future__
import annotations
5 from pysensibo.exceptions
import AuthenticationError
14 from .const
import DOMAIN, LOGGER, PLATFORMS
15 from .coordinator
import SensiboDataUpdateCoordinator
16 from .util
import NoDevicesError, NoUsernameError, async_validate_api
18 type SensiboConfigEntry = ConfigEntry[SensiboDataUpdateCoordinator]
22 """Set up Sensibo from a config entry."""
25 await coordinator.async_config_entry_first_refresh()
26 entry.runtime_data = coordinator
28 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
34 """Unload Sensibo config entry."""
35 return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
39 """Migrate old entry."""
41 if entry.version == 1:
42 api_key = entry.data[CONF_API_KEY]
46 except (AuthenticationError, ConnectionError, NoDevicesError, NoUsernameError):
49 LOGGER.debug(
"Migrate Sensibo config entry unique id to %s", new_unique_id)
50 hass.config_entries.async_update_entry(
52 unique_id=new_unique_id,
60 hass: HomeAssistant, entry: ConfigEntry, device: DeviceEntry
62 """Remove Sensibo config entry from a device."""
63 entity_registry = er.async_get(hass)
64 for identifier
in device.identifiers:
65 if identifier[0] == DOMAIN
and entity_registry.async_get_entity_id(
66 CLIMATE_DOMAIN, DOMAIN, identifier[1]
str async_validate_api(HomeAssistant hass, str api_key)
bool async_migrate_entry(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
bool async_remove_config_entry_device(HomeAssistant hass, ConfigEntry entry, DeviceEntry device)
bool async_setup_entry(HomeAssistant hass, SensiboConfigEntry entry)