Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """The Mullvad VPN integration."""
2 
3 import asyncio
4 from datetime import timedelta
5 import logging
6 
7 from mullvad_api import MullvadAPI
8 
9 from homeassistant.config_entries import ConfigEntry
10 from homeassistant.const import Platform
11 from homeassistant.core import HomeAssistant
12 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
13 
14 from .const import DOMAIN
15 
16 PLATFORMS = [Platform.BINARY_SENSOR]
17 
18 
19 async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
20  """Set up Mullvad VPN integration."""
21 
22  async def async_get_mullvad_api_data():
23  async with asyncio.timeout(10):
24  api = await hass.async_add_executor_job(MullvadAPI)
25  return api.data
26 
27  coordinator = DataUpdateCoordinator(
28  hass,
29  logging.getLogger(__name__),
30  config_entry=entry,
31  name=DOMAIN,
32  update_method=async_get_mullvad_api_data,
33  update_interval=timedelta(minutes=1),
34  )
35  await coordinator.async_config_entry_first_refresh()
36 
37  hass.data[DOMAIN] = coordinator
38 
39  await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
40 
41  return True
42 
43 
44 async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
45  """Unload a config entry."""
46  unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
47  if unload_ok:
48  del hass.data[DOMAIN]
49 
50  return unload_ok
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
Definition: __init__.py:19
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
Definition: __init__.py:44