Home Assistant Unofficial Reference
2024.12.1
coordinator.py
Go to the documentation of this file.
1
"""Coordinator for the Evil Genius Labs integration."""
2
3
from
__future__
import
annotations
4
5
import
asyncio
6
from
datetime
import
timedelta
7
import
logging
8
from
typing
import
cast
9
10
from
aiohttp
import
ContentTypeError
11
import
pyevilgenius
12
13
from
homeassistant.core
import
HomeAssistant
14
from
homeassistant.helpers.update_coordinator
import
DataUpdateCoordinator
15
16
UPDATE_INTERVAL = 10
17
18
19
class
EvilGeniusUpdateCoordinator
(
DataUpdateCoordinator
[dict]):
20
"""Update coordinator for Evil Genius data."""
21
22
info: dict
23
24
product: dict |
None
25
26
def
__init__
(
27
self, hass: HomeAssistant, name: str, client: pyevilgenius.EvilGeniusDevice
28
) ->
None
:
29
"""Initialize the data update coordinator."""
30
self.
client
client = client
31
super().
__init__
(
32
hass,
33
logging.getLogger(__name__),
34
name=name,
35
update_interval=
timedelta
(seconds=UPDATE_INTERVAL),
36
)
37
38
@property
39
def
device_name
(self) -> str:
40
"""Return the device name."""
41
return
cast(str, self.
data
data[
"name"
][
"value"
])
42
43
@property
44
def
product_name
(self) -> str | None:
45
"""Return the product name."""
46
if
self.
product
product
is
None
:
47
return
None
48
49
return
cast(str, self.
product
product[
"productName"
])
50
51
async
def
_async_update_data
(self) -> dict:
52
"""Update Evil Genius data."""
53
if
not
hasattr(self,
"info"
):
54
async
with
asyncio.timeout(5):
55
self.
info
info = await self.
client
client.
get_info
()
56
57
if
not
hasattr(self,
"product"
):
58
async
with
asyncio.timeout(5):
59
try
:
60
self.
product
product = await self.
client
client.get_product()
61
except
ContentTypeError:
62
# Older versions of the API don't support this
63
self.
product
product =
None
64
65
async
with
asyncio.timeout(5):
66
return
cast(dict, await self.
client
client.get_all())
homeassistant.components.evil_genius_labs.coordinator.EvilGeniusUpdateCoordinator
Definition:
coordinator.py:19
homeassistant.components.evil_genius_labs.coordinator.EvilGeniusUpdateCoordinator.product
product
Definition:
coordinator.py:60
homeassistant.components.evil_genius_labs.coordinator.EvilGeniusUpdateCoordinator.product_name
str|None product_name(self)
Definition:
coordinator.py:44
homeassistant.components.evil_genius_labs.coordinator.EvilGeniusUpdateCoordinator.device_name
str device_name(self)
Definition:
coordinator.py:39
homeassistant.components.evil_genius_labs.coordinator.EvilGeniusUpdateCoordinator.client
client
Definition:
coordinator.py:30
homeassistant.components.evil_genius_labs.coordinator.EvilGeniusUpdateCoordinator.info
info
Definition:
coordinator.py:55
homeassistant.components.evil_genius_labs.coordinator.EvilGeniusUpdateCoordinator.__init__
None __init__(self, HomeAssistant hass, str name, pyevilgenius.EvilGeniusDevice client)
Definition:
coordinator.py:28
homeassistant.components.evil_genius_labs.coordinator.EvilGeniusUpdateCoordinator._async_update_data
dict _async_update_data(self)
Definition:
coordinator.py:51
homeassistant.helpers.update_coordinator.DataUpdateCoordinator
Definition:
update_coordinator.py:61
homeassistant.helpers.update_coordinator.DataUpdateCoordinator.data
data
Definition:
update_coordinator.py:379
homeassistant.components.hassio.coordinator.get_info
dict[str, Any]|None get_info(HomeAssistant hass)
Definition:
coordinator.py:69
homeassistant.components.nina.const.timedelta
timedelta
Definition:
const.py:11
homeassistant.core
Definition:
core.py:1
homeassistant.helpers.update_coordinator
Definition:
update_coordinator.py:1
core
homeassistant
components
evil_genius_labs
coordinator.py
Generated by
1.9.1