1
0
mirror of https://github.com/home-assistant/core.git synced 2026-06-02 05:34:15 +01:00
Files
core/homeassistant/components/rova/__init__.py
T
2026-04-30 21:14:48 +02:00

58 lines
1.9 KiB
Python

"""The rova component."""
from requests.exceptions import ConnectTimeout, HTTPError
from rova.rova import Rova
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryError, ConfigEntryNotReady
from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue
from .const import CONF_HOUSE_NUMBER, CONF_HOUSE_NUMBER_SUFFIX, CONF_ZIP_CODE, DOMAIN
from .coordinator import RovaConfigEntry, RovaCoordinator
PLATFORMS: list[Platform] = [Platform.SENSOR]
async def async_setup_entry(hass: HomeAssistant, entry: RovaConfigEntry) -> bool:
"""Set up ROVA from a config entry."""
api = Rova(
entry.data[CONF_ZIP_CODE],
entry.data[CONF_HOUSE_NUMBER],
entry.data[CONF_HOUSE_NUMBER_SUFFIX],
)
try:
rova_area = await hass.async_add_executor_job(api.is_rova_area)
except (ConnectTimeout, HTTPError) as ex:
raise ConfigEntryNotReady from ex
if not rova_area:
async_create_issue(
hass,
DOMAIN,
f"no_rova_area_{entry.data[CONF_ZIP_CODE]}",
is_fixable=False,
issue_domain=DOMAIN,
severity=IssueSeverity.ERROR,
translation_key="no_rova_area",
translation_placeholders={
CONF_ZIP_CODE: entry.data[CONF_ZIP_CODE],
},
)
raise ConfigEntryError("Rova does not collect garbage in this area")
coordinator = RovaCoordinator(hass, entry, api)
await coordinator.async_config_entry_first_refresh()
entry.runtime_data = coordinator
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: RovaConfigEntry) -> bool:
"""Unload ROVA config entry."""
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)