text: """Support for Freebox devices (Freebox v6 and Freebox mini 4K)."""
  import logging
  
  import voluptuous as vol
  
  from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
  from homeassistant.const import CONF_HOST, CONF_PORT, EVENT_HOMEASSISTANT_STOP
  from homeassistant.core import HomeAssistant, ServiceCall
  from homeassistant.helpers import config_validation as cv
  
  from .const import DOMAIN, PLATFORMS, SERVICE_REBOOT
  from .router import FreeboxRouter
  
  _LOGGER = logging.getLogger(__name__)
  
  FREEBOX_SCHEMA = vol.Schema(
      {vol.Required(CONF_HOST): cv.string, vol.Required(CONF_PORT): cv.port}
  )
  
  CONFIG_SCHEMA = vol.Schema(
      vol.All(
          cv.deprecated(DOMAIN),
          {DOMAIN: vol.Schema(vol.All(cv.ensure_list, [FREEBOX_SCHEMA]))},
      ),
      extra=vol.ALLOW_EXTRA,
  )
  
  
  async def async_setup(hass, config):
      """Set up the Freebox integration."""
      if DOMAIN in config:
          for entry_config in config[DOMAIN]:
              hass.async_create_task(
                  hass.config_entries.flow.async_init(
                      DOMAIN, context={"source": SOURCE_IMPORT}, data=entry_config
                  )
              )
  
      return True
  
  
  async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
      """Set up Freebox entry."""
      router = FreeboxRouter(hass, entry)
      await router.setup()
  
      hass.data.setdefault(DOMAIN, {})
      hass.data[DOMAIN][entry.unique_id] = router
  
      hass.config_entries.async_setup_platforms(entry, PLATFORMS)
  
      # Services
      async def async_reboot(call: ServiceCall) -> None:
          """Handle reboot service call."""
          await router.reboot()
  
      hass.services.async_register(DOMAIN, SERVICE_REBOOT, async_reboot)
  
      async def async_close_connection(event):
          """Close Freebox connection on HA Stop."""
          await router.close()
  
      entry.async_on_unload(
          hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, async_close_connection)
      )
  
      return True
  
  
  async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
      """Unload a config entry."""
      unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
      if unload_ok:
          router = hass.data[DOMAIN].pop(entry.unique_id)
          await router.close()
          hass.services.async_remove(DOMAIN, SERVICE_REBOOT)
  
      return unload_ok
  