core/homeassistant/components/volvooncall/__init__.py

72 lines
2.0 KiB
Python

"""Support for Volvo On Call."""
from volvooncall import Connection
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
CONF_PASSWORD,
CONF_REGION,
CONF_UNIT_SYSTEM,
CONF_USERNAME,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import (
CONF_SCANDINAVIAN_MILES,
DOMAIN,
PLATFORMS,
UNIT_SYSTEM_METRIC,
UNIT_SYSTEM_SCANDINAVIAN_MILES,
)
from .coordinator import VolvoUpdateCoordinator
from .models import VolvoData
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up the Volvo On Call component from a ConfigEntry."""
# added CONF_UNIT_SYSTEM / deprecated CONF_SCANDINAVIAN_MILES in 2022.10 to support imperial units
if CONF_UNIT_SYSTEM not in entry.data:
new_conf = {**entry.data}
scandinavian_miles: bool = entry.data[CONF_SCANDINAVIAN_MILES]
new_conf[CONF_UNIT_SYSTEM] = (
UNIT_SYSTEM_SCANDINAVIAN_MILES if scandinavian_miles else UNIT_SYSTEM_METRIC
)
hass.config_entries.async_update_entry(entry, data=new_conf)
session = async_get_clientsession(hass)
connection = Connection(
session=session,
username=entry.data[CONF_USERNAME],
password=entry.data[CONF_PASSWORD],
service_url=None,
region=entry.data[CONF_REGION],
)
hass.data.setdefault(DOMAIN, {})
volvo_data = VolvoData(hass, connection, entry)
coordinator = VolvoUpdateCoordinator(hass, volvo_data)
await coordinator.async_config_entry_first_refresh()
hass.data[DOMAIN][entry.entry_id] = coordinator
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a config entry."""
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok