Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """Support for Volvo On Call."""
2 
3 from volvooncall import Connection
4 
5 from homeassistant.config_entries import ConfigEntry
6 from homeassistant.const import (
7  CONF_PASSWORD,
8  CONF_REGION,
9  CONF_UNIT_SYSTEM,
10  CONF_USERNAME,
11 )
12 from homeassistant.core import HomeAssistant
13 from homeassistant.helpers.aiohttp_client import async_get_clientsession
14 
15 from .const import (
16  CONF_SCANDINAVIAN_MILES,
17  DOMAIN,
18  PLATFORMS,
19  UNIT_SYSTEM_METRIC,
20  UNIT_SYSTEM_SCANDINAVIAN_MILES,
21 )
22 from .coordinator import VolvoUpdateCoordinator
23 from .models import VolvoData
24 
25 
26 async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
27  """Set up the Volvo On Call component from a ConfigEntry."""
28 
29  # added CONF_UNIT_SYSTEM / deprecated CONF_SCANDINAVIAN_MILES in 2022.10 to support imperial units
30  if CONF_UNIT_SYSTEM not in entry.data:
31  new_conf = {**entry.data}
32 
33  scandinavian_miles: bool = entry.data[CONF_SCANDINAVIAN_MILES]
34 
35  new_conf[CONF_UNIT_SYSTEM] = (
36  UNIT_SYSTEM_SCANDINAVIAN_MILES if scandinavian_miles else UNIT_SYSTEM_METRIC
37  )
38 
39  hass.config_entries.async_update_entry(entry, data=new_conf)
40 
41  session = async_get_clientsession(hass)
42 
43  connection = Connection(
44  session=session,
45  username=entry.data[CONF_USERNAME],
46  password=entry.data[CONF_PASSWORD],
47  service_url=None,
48  region=entry.data[CONF_REGION],
49  )
50 
51  hass.data.setdefault(DOMAIN, {})
52 
53  volvo_data = VolvoData(hass, connection, entry)
54 
55  coordinator = VolvoUpdateCoordinator(hass, volvo_data)
56 
57  await coordinator.async_config_entry_first_refresh()
58 
59  hass.data[DOMAIN][entry.entry_id] = coordinator
60 
61  await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
62 
63  return True
64 
65 
66 async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
67  """Unload a config entry."""
68  if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
69  hass.data[DOMAIN].pop(entry.entry_id)
70 
71  return unload_ok
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
Definition: __init__.py:66
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
Definition: __init__.py:26
aiohttp.ClientSession async_get_clientsession(HomeAssistant hass, bool verify_ssl=True, socket.AddressFamily family=socket.AF_UNSPEC, ssl_util.SSLCipherList ssl_cipher=ssl_util.SSLCipherList.PYTHON_DEFAULT)