1 """The Rabbit Air integration."""
3 from __future__
import annotations
5 from rabbitair
import Client, UdpClient
12 from .const
import DOMAIN
13 from .coordinator
import RabbitAirDataUpdateCoordinator
15 PLATFORMS: list[Platform] = [Platform.FAN]
19 """Set up Rabbit Air from a config entry."""
21 hass.data.setdefault(DOMAIN, {})
23 host: str = entry.data[CONF_HOST]
24 token: str = entry.data[CONF_ACCESS_TOKEN]
26 zeroconf_instance = await zeroconf.async_get_async_instance(hass)
27 device: Client = UdpClient(host, token, zeroconf=zeroconf_instance)
31 await coordinator.async_config_entry_first_refresh()
33 hass.data[DOMAIN][entry.entry_id] = coordinator
35 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
37 entry.async_on_unload(entry.add_update_listener(update_listener))
43 """Unload a config entry."""
44 if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
45 hass.data[DOMAIN].pop(entry.entry_id)
51 """Handle options update."""
52 await hass.config_entries.async_reload(entry.entry_id)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
None update_listener(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)