Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """The Mikrotik component."""
2 
3 from homeassistant.config_entries import ConfigEntry
4 from homeassistant.const import Platform
5 from homeassistant.core import HomeAssistant
6 from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
7 from homeassistant.helpers import device_registry as dr
8 
9 from .const import ATTR_MANUFACTURER, DOMAIN
10 from .coordinator import MikrotikDataUpdateCoordinator, get_api
11 from .errors import CannotConnect, LoginError
12 
13 PLATFORMS = [Platform.DEVICE_TRACKER]
14 
15 type MikrotikConfigEntry = ConfigEntry[MikrotikDataUpdateCoordinator]
16 
17 
19  hass: HomeAssistant, config_entry: MikrotikConfigEntry
20 ) -> bool:
21  """Set up the Mikrotik component."""
22  try:
23  api = await hass.async_add_executor_job(get_api, dict(config_entry.data))
24  except CannotConnect as api_error:
25  raise ConfigEntryNotReady from api_error
26  except LoginError as err:
27  raise ConfigEntryAuthFailed from err
28 
29  coordinator = MikrotikDataUpdateCoordinator(hass, config_entry, api)
30  await hass.async_add_executor_job(coordinator.api.get_hub_details)
31  await coordinator.async_config_entry_first_refresh()
32 
33  config_entry.runtime_data = coordinator
34 
35  await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
36 
37  device_registry = dr.async_get(hass)
38  device_registry.async_get_or_create(
39  config_entry_id=config_entry.entry_id,
40  connections={(DOMAIN, coordinator.serial_num)},
41  manufacturer=ATTR_MANUFACTURER,
42  model=coordinator.model,
43  name=coordinator.hostname,
44  sw_version=coordinator.firmware,
45  )
46 
47  return True
48 
49 
50 async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool:
51  """Unload a config entry."""
52  return await hass.config_entries.async_unload_platforms(config_entry, PLATFORMS)
bool async_setup_entry(HomeAssistant hass, MikrotikConfigEntry config_entry)
Definition: __init__.py:20
bool async_unload_entry(HomeAssistant hass, ConfigEntry config_entry)
Definition: __init__.py:50