Home Assistant Unofficial Reference
2024.12.1
coordinator.py
Go to the documentation of this file.
1
"""DataUpdateCoordinator for LaCrosse View."""
2
3
from
__future__
import
annotations
4
5
from
datetime
import
timedelta
6
import
logging
7
from
time
import
time
8
9
from
lacrosse_view
import
HTTPError, LaCrosse, Location, LoginError, Sensor
10
11
from
homeassistant.config_entries
import
ConfigEntry
12
from
homeassistant.core
import
HomeAssistant
13
from
homeassistant.exceptions
import
ConfigEntryAuthFailed, ConfigEntryNotReady
14
from
homeassistant.helpers.update_coordinator
import
DataUpdateCoordinator
15
16
from
.const
import
SCAN_INTERVAL
17
18
_LOGGER = logging.getLogger(__name__)
19
20
21
class
LaCrosseUpdateCoordinator
(
DataUpdateCoordinator
[list[Sensor]]):
22
"""DataUpdateCoordinator for LaCrosse View."""
23
24
username: str
25
password: str
26
name: str
27
id: str
28
hass: HomeAssistant
29
30
def
__init__
(
31
self,
32
hass: HomeAssistant,
33
api: LaCrosse,
34
entry: ConfigEntry,
35
) ->
None
:
36
"""Initialize DataUpdateCoordinator for LaCrosse View."""
37
self.
api
api = api
38
self.
last_update
last_update =
time
()
39
self.
username
username = entry.data[
"username"
]
40
self.
password
password = entry.data[
"password"
]
41
self.
hass
hass
hass = hass
42
self.
name
name
name = entry.data[
"name"
]
43
self.
id
id = entry.data[
"id"
]
44
super().
__init__
(
45
hass,
46
_LOGGER,
47
name=
"LaCrosse View"
,
48
update_interval=
timedelta
(seconds=SCAN_INTERVAL),
49
)
50
51
async
def
_async_update_data
(self) -> list[Sensor]:
52
"""Get the data for LaCrosse View."""
53
now =
int
(
time
())
54
55
if
self.
last_update
last_update < now - 59 * 60:
# Get new token once in a hour
56
_LOGGER.debug(
"Refreshing token"
)
57
self.
last_update
last_update = now
58
try
:
59
await self.
api
api.login(self.
username
username, self.
password
password)
60
except
LoginError
as
error:
61
raise
ConfigEntryAuthFailed
from
error
62
63
try
:
64
# Fetch last hour of data
65
sensors = await self.
api
api.get_sensors(
66
location=Location(id=self.
id
id, name=self.
name
name
name),
67
tz=self.
hass
hass
hass.config.time_zone,
68
start=
str
(now - 3600),
69
end=
str
(now),
70
)
71
except
HTTPError
as
error:
72
raise
ConfigEntryNotReady
from
error
73
74
_LOGGER.debug(
"Got data: %s"
, sensors)
75
76
# Verify that we have permission to read the sensors
77
for
sensor
in
sensors:
78
if
not
sensor.permissions.get(
"read"
,
False
):
79
raise
ConfigEntryAuthFailed
(
80
f
"This account does not have permission to read {sensor.name}"
81
)
82
83
return
sensors
homeassistant.components.lacrosse_view.coordinator.LaCrosseUpdateCoordinator
Definition:
coordinator.py:21
homeassistant.components.lacrosse_view.coordinator.LaCrosseUpdateCoordinator.api
api
Definition:
coordinator.py:37
homeassistant.components.lacrosse_view.coordinator.LaCrosseUpdateCoordinator.last_update
last_update
Definition:
coordinator.py:38
homeassistant.components.lacrosse_view.coordinator.LaCrosseUpdateCoordinator.hass
hass
Definition:
coordinator.py:41
homeassistant.components.lacrosse_view.coordinator.LaCrosseUpdateCoordinator.password
password
Definition:
coordinator.py:40
homeassistant.components.lacrosse_view.coordinator.LaCrosseUpdateCoordinator.name
name
Definition:
coordinator.py:42
homeassistant.components.lacrosse_view.coordinator.LaCrosseUpdateCoordinator.username
username
Definition:
coordinator.py:39
homeassistant.components.lacrosse_view.coordinator.LaCrosseUpdateCoordinator.id
id
Definition:
coordinator.py:43
homeassistant.components.lacrosse_view.coordinator.LaCrosseUpdateCoordinator._async_update_data
list[Sensor] _async_update_data(self)
Definition:
coordinator.py:51
homeassistant.components.lacrosse_view.coordinator.LaCrosseUpdateCoordinator.__init__
None __init__(self, HomeAssistant hass, LaCrosse api, ConfigEntry entry)
Definition:
coordinator.py:35
homeassistant.exceptions.ConfigEntryAuthFailed
Definition:
exceptions.py:218
homeassistant.helpers.update_coordinator.DataUpdateCoordinator
Definition:
update_coordinator.py:61
homeassistant.helpers.update_coordinator.DataUpdateCoordinator.name
name
Definition:
update_coordinator.py:85
homeassistant.helpers.update_coordinator.DataUpdateCoordinator.hass
hass
Definition:
update_coordinator.py:83
homeassistant.components.apcupsd.const.int
int
Definition:
const.py:6
homeassistant.components.bond.const.str
str
Definition:
const.py:7
homeassistant.components.nina.const.timedelta
timedelta
Definition:
const.py:11
homeassistant.config_entries
Definition:
config_entries.py:1
homeassistant.core
Definition:
core.py:1
homeassistant.exceptions
Definition:
exceptions.py:1
homeassistant.helpers.condition.time
bool time(HomeAssistant hass, dt_time|str|None before=None, dt_time|str|None after=None, str|Container[str]|None weekday=None)
Definition:
condition.py:802
homeassistant.helpers.update_coordinator
Definition:
update_coordinator.py:1
core
homeassistant
components
lacrosse_view
coordinator.py
Generated by
1.9.1