core/homeassistant/components/intellifire/coordinator.py

60 lines
1.8 KiB
Python

"""The IntelliFire integration."""
from __future__ import annotations
from datetime import timedelta
from intellifire4py import UnifiedFireplace
from intellifire4py.control import IntelliFireController
from intellifire4py.model import IntelliFirePollData
from intellifire4py.read import IntelliFireDataProvider
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from .const import DOMAIN, LOGGER
class IntellifireDataUpdateCoordinator(DataUpdateCoordinator[IntelliFirePollData]):
"""Class to manage the polling of the fireplace API."""
def __init__(
self,
hass: HomeAssistant,
fireplace: UnifiedFireplace,
) -> None:
"""Initialize the Coordinator."""
super().__init__(
hass,
LOGGER,
name=DOMAIN,
update_interval=timedelta(seconds=15),
)
self.fireplace = fireplace
@property
def read_api(self) -> IntelliFireDataProvider:
"""Return the Status API pointer."""
return self.fireplace.read_api
@property
def control_api(self) -> IntelliFireController:
"""Return the control API."""
return self.fireplace.control_api
async def _async_update_data(self) -> IntelliFirePollData:
return self.fireplace.data
@property
def device_info(self) -> DeviceInfo:
"""Return the device info."""
return DeviceInfo(
manufacturer="Hearth and Home",
model="IFT-WFM",
name="IntelliFire",
identifiers={("IntelliFire", str(self.fireplace.serial))},
configuration_url=f"http://{self.fireplace.ip_address}/poll",
)