1 """Support for Freebox devices (Freebox v6 and Freebox mini 4K)."""
3 from datetime
import timedelta
6 from freebox_api.exceptions
import HttpRequestError
14 from .const
import DOMAIN, PLATFORMS, SERVICE_REBOOT
15 from .router
import FreeboxRouter, get_api
19 _LOGGER = logging.getLogger(__name__)
23 """Set up Freebox entry."""
24 api = await
get_api(hass, entry.data[CONF_HOST])
26 await api.open(entry.data[CONF_HOST], entry.data[CONF_PORT])
27 except HttpRequestError
as err:
28 raise ConfigEntryNotReady
from err
30 freebox_config = await api.system.get_config()
33 await router.update_all()
34 entry.async_on_unload(
38 hass.data.setdefault(DOMAIN, {})
39 hass.data[DOMAIN][entry.unique_id] = router
41 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
44 async
def async_reboot(call: ServiceCall) ->
None:
45 """Handle reboot service call."""
49 "The 'freebox.reboot' service is deprecated and "
50 "replaced by a dedicated reboot button entity; please "
51 "use that entity to reboot the freebox instead"
55 hass.services.async_register(DOMAIN, SERVICE_REBOOT, async_reboot)
57 async
def async_close_connection(event: Event) ->
None:
58 """Close Freebox connection on HA Stop."""
61 entry.async_on_unload(
62 hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, async_close_connection)
69 """Unload a config entry."""
70 unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
72 router: FreeboxRouter = hass.data[DOMAIN].pop(entry.unique_id)
74 hass.services.async_remove(DOMAIN, SERVICE_REBOOT)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
transmission_rpc.Client get_api(HomeAssistant hass, dict[str, Any] entry)
CALLBACK_TYPE async_track_time_interval(HomeAssistant hass, Callable[[datetime], Coroutine[Any, Any, None]|None] action, timedelta interval, *str|None name=None, bool|None cancel_on_shutdown=None)