mirror of
https://github.com/Andre0512/hon.git
synced 2026-02-24 19:12:19 +00:00
Replace deprecated HomeAssistantType with HomeAssistant from homeassistant.core. HomeAssistantType was removed in newer Home Assistant versions, causing ImportError. This updates all imports from homeassistant.helpers.typing to homeassistant.core. Fixes compatibility with Home Assistant 2026.x and later versions. Files updated: - __init__.py - binary_sensor.py - button.py - climate.py - entity.py - fan.py - light.py - lock.py - number.py - select.py - sensor.py - switch.py
74 lines
2.4 KiB
Python
74 lines
2.4 KiB
Python
import logging
|
|
from pathlib import Path
|
|
from typing import Any
|
|
|
|
import voluptuous as vol # type: ignore[import-untyped]
|
|
from homeassistant.config_entries import ConfigEntry
|
|
from homeassistant.const import CONF_EMAIL, CONF_PASSWORD
|
|
from homeassistant.helpers import config_validation as cv, aiohttp_client
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
|
from pyhon import Hon
|
|
|
|
from .const import DOMAIN, PLATFORMS, MOBILE_ID, CONF_REFRESH_TOKEN
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
HON_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(CONF_EMAIL): cv.string,
|
|
vol.Required(CONF_PASSWORD): cv.string,
|
|
}
|
|
)
|
|
|
|
CONFIG_SCHEMA = vol.Schema(
|
|
{DOMAIN: vol.Schema(vol.All(cv.ensure_list, [HON_SCHEMA]))},
|
|
extra=vol.ALLOW_EXTRA,
|
|
)
|
|
|
|
|
|
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|
session = aiohttp_client.async_get_clientsession(hass)
|
|
if (config_dir := hass.config.config_dir) is None:
|
|
raise ValueError("Missing Config Dir")
|
|
hon = await Hon(
|
|
email=entry.data[CONF_EMAIL],
|
|
password=entry.data[CONF_PASSWORD],
|
|
mobile_id=MOBILE_ID,
|
|
session=session,
|
|
test_data_path=Path(config_dir),
|
|
refresh_token=entry.data.get(CONF_REFRESH_TOKEN, ""),
|
|
).create()
|
|
|
|
# Save the new refresh token
|
|
hass.config_entries.async_update_entry(
|
|
entry, data={**entry.data, CONF_REFRESH_TOKEN: hon.api.auth.refresh_token}
|
|
)
|
|
|
|
coordinator: DataUpdateCoordinator[dict[str, Any]] = DataUpdateCoordinator(
|
|
hass, _LOGGER, name=DOMAIN
|
|
)
|
|
hon.subscribe_updates(coordinator.async_set_updated_data)
|
|
|
|
hass.data.setdefault(DOMAIN, {})
|
|
hass.data[DOMAIN][entry.unique_id] = {"hon": hon, "coordinator": coordinator}
|
|
|
|
for platform in PLATFORMS:
|
|
hass.async_create_task(
|
|
hass.config_entries.async_forward_entry_setup(entry, platform)
|
|
)
|
|
return True
|
|
|
|
|
|
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|
refresh_token = hass.data[DOMAIN][entry.unique_id]["hon"].api.auth.refresh_token
|
|
|
|
hass.config_entries.async_update_entry(
|
|
entry, data={**entry.data, CONF_REFRESH_TOKEN: refresh_token}
|
|
)
|
|
unload = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|
|
if unload:
|
|
if not hass.data[DOMAIN]:
|
|
hass.data.pop(DOMAIN, None)
|
|
return unload
|