Upload files to "custom_components/aguaiot"
This commit is contained in:
116
custom_components/aguaiot/coordinator.py
Normal file
116
custom_components/aguaiot/coordinator.py
Normal file
@@ -0,0 +1,116 @@
|
||||
"""Update coordinator"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from datetime import timedelta
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
||||
from homeassistant.const import CONF_EMAIL, CONF_PASSWORD
|
||||
from homeassistant.helpers.httpx_client import get_async_client
|
||||
|
||||
from .aguaiot import (
|
||||
AguaIOTConnectionError,
|
||||
AguaIOTError,
|
||||
AguaIOTUnauthorized,
|
||||
AguaIOTUpdateError,
|
||||
aguaiot,
|
||||
)
|
||||
|
||||
from .const import (
|
||||
CONF_API_URL,
|
||||
CONF_CUSTOMER_CODE,
|
||||
CONF_LOGIN_API_URL,
|
||||
CONF_UUID,
|
||||
CONF_BRAND_ID,
|
||||
CONF_BRAND,
|
||||
CONF_LANGUAGE,
|
||||
CONF_AIR_TEMP_FIX,
|
||||
CONF_READING_ERROR_FIX,
|
||||
CONF_UPDATE_INTERVAL,
|
||||
CONF_HTTP_TIMEOUT,
|
||||
CONF_BUFFER_READ_TIMEOUT,
|
||||
DOMAIN,
|
||||
)
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class AguaIOTDataUpdateCoordinator(DataUpdateCoordinator):
|
||||
"""Class to manage fetching data from the API."""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
hass: HomeAssistant,
|
||||
config_entry: ConfigEntry,
|
||||
) -> None:
|
||||
"""Initialize."""
|
||||
update_interval = config_entry.options.get(CONF_UPDATE_INTERVAL, 60)
|
||||
|
||||
super().__init__(
|
||||
hass=hass,
|
||||
logger=_LOGGER,
|
||||
name=DOMAIN,
|
||||
update_interval=timedelta(seconds=update_interval),
|
||||
config_entry=config_entry,
|
||||
)
|
||||
|
||||
"""Set up AguaIOT entry."""
|
||||
api_url = config_entry.data[CONF_API_URL]
|
||||
customer_code = config_entry.data[CONF_CUSTOMER_CODE]
|
||||
email = config_entry.data[CONF_EMAIL]
|
||||
password = config_entry.data[CONF_PASSWORD]
|
||||
gen_uuid = config_entry.data[CONF_UUID]
|
||||
login_api_url = config_entry.data.get(CONF_LOGIN_API_URL)
|
||||
brand_id = config_entry.data.get(CONF_BRAND_ID)
|
||||
brand = config_entry.data.get(CONF_BRAND)
|
||||
air_temp_fix = config_entry.options.get(CONF_AIR_TEMP_FIX, False)
|
||||
reading_error_fix = config_entry.options.get(CONF_READING_ERROR_FIX, False)
|
||||
language = config_entry.options.get(CONF_LANGUAGE)
|
||||
http_timeout = config_entry.options.get(CONF_HTTP_TIMEOUT)
|
||||
buffer_read_timeout = config_entry.options.get(CONF_BUFFER_READ_TIMEOUT)
|
||||
|
||||
self.agua = aguaiot(
|
||||
api_url=api_url,
|
||||
customer_code=customer_code,
|
||||
email=email,
|
||||
password=password,
|
||||
unique_id=gen_uuid,
|
||||
login_api_url=login_api_url,
|
||||
brand_id=brand_id,
|
||||
brand=brand,
|
||||
async_client=get_async_client(hass),
|
||||
air_temp_fix=air_temp_fix,
|
||||
reading_error_fix=reading_error_fix,
|
||||
language=language,
|
||||
http_timeout=http_timeout,
|
||||
buffer_read_timeout=buffer_read_timeout,
|
||||
)
|
||||
|
||||
async def _async_setup(self) -> None:
|
||||
"""Connect to the AguaIOT platform"""
|
||||
try:
|
||||
await self.agua.connect()
|
||||
except AguaIOTUpdateError as e:
|
||||
_LOGGER.error("Agua IOT Update error: %s", e)
|
||||
except AguaIOTUnauthorized as e:
|
||||
raise UpdateFailed(f"Agua IOT Unauthorized: {e}") from e
|
||||
except AguaIOTConnectionError as e:
|
||||
raise UpdateFailed(f"Agua IOT Connection error: {e}") from e
|
||||
except AguaIOTError as e:
|
||||
raise UpdateFailed(f"Agua IOT error: {e}") from e
|
||||
|
||||
async def _async_update_data(self) -> None:
|
||||
"""Get the latest data."""
|
||||
try:
|
||||
await self.agua.update()
|
||||
except AguaIOTUpdateError as e:
|
||||
_LOGGER.error("Agua IOT Update error: %s", e)
|
||||
except AguaIOTUnauthorized as e:
|
||||
raise UpdateFailed(f"Agua IOT Unauthorized: {e}") from e
|
||||
except AguaIOTConnectionError as e:
|
||||
raise UpdateFailed(f"Agua IOT Connection error: {e}") from e
|
||||
except AguaIOTError as e:
|
||||
raise UpdateFailed(f"Agua IOT error: {e}") from e
|
||||
Reference in New Issue
Block a user