Home Assistant Unofficial Reference 2024.12.1
coordinator.py
Go to the documentation of this file.
1 """The foscam coordinator object."""
2 
3 import asyncio
4 from datetime import timedelta
5 from typing import Any
6 
7 from libpyfoscam import FoscamCamera
8 
9 from homeassistant.core import HomeAssistant
10 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
11 
12 from .const import DOMAIN, LOGGER
13 
14 
16  """Foscam coordinator."""
17 
18  def __init__(
19  self,
20  hass: HomeAssistant,
21  session: FoscamCamera,
22  ) -> None:
23  """Initialize my coordinator."""
24  super().__init__(
25  hass,
26  LOGGER,
27  name=DOMAIN,
28  update_interval=timedelta(seconds=30),
29  )
30  self.sessionsession = session
31 
32  async def _async_update_data(self) -> dict[str, Any]:
33  """Fetch data from API endpoint."""
34 
35  async with asyncio.timeout(30):
36  data = {}
37  ret, dev_info = await self.hasshass.async_add_executor_job(
38  self.sessionsession.get_dev_info
39  )
40  if ret == 0:
41  data["dev_info"] = dev_info
42 
43  all_info = await self.hasshass.async_add_executor_job(
44  self.sessionsession.get_product_all_info
45  )
46  data["product_info"] = all_info[1]
47 
48  ret, is_asleep = await self.hasshass.async_add_executor_job(
49  self.sessionsession.is_asleep
50  )
51  data["is_asleep"] = {"supported": ret == 0, "status": is_asleep}
52  return data
None __init__(self, HomeAssistant hass, FoscamCamera session)
Definition: coordinator.py:22