38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
|
"""Coordinator for Brother integration."""
|
||
|
|
||
|
from asyncio import timeout
|
||
|
import logging
|
||
|
|
||
|
from brother import Brother, BrotherSensors, SnmpError, UnsupportedModelError
|
||
|
|
||
|
from homeassistant.core import HomeAssistant
|
||
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
||
|
|
||
|
from .const import DOMAIN, UPDATE_INTERVAL
|
||
|
|
||
|
_LOGGER = logging.getLogger(__name__)
|
||
|
|
||
|
|
||
|
class BrotherDataUpdateCoordinator(DataUpdateCoordinator[BrotherSensors]):
|
||
|
"""Class to manage fetching Brother data from the printer."""
|
||
|
|
||
|
def __init__(self, hass: HomeAssistant, brother: Brother) -> None:
|
||
|
"""Initialize."""
|
||
|
self.brother = brother
|
||
|
|
||
|
super().__init__(
|
||
|
hass,
|
||
|
_LOGGER,
|
||
|
name=DOMAIN,
|
||
|
update_interval=UPDATE_INTERVAL,
|
||
|
)
|
||
|
|
||
|
async def _async_update_data(self) -> BrotherSensors:
|
||
|
"""Update data via library."""
|
||
|
try:
|
||
|
async with timeout(20):
|
||
|
data = await self.brother.async_update()
|
||
|
except (ConnectionError, SnmpError, UnsupportedModelError) as error:
|
||
|
raise UpdateFailed(error) from error
|
||
|
return data
|