1 """The NWS coordinator."""
3 from datetime
import datetime
6 from aiohttp
import ClientResponseError
7 from pynws
import NwsNoDataError, SimpleNWS, call_with_retry
12 TimestampDataUpdateCoordinator,
19 DEFAULT_SCAN_INTERVAL,
20 OBSERVATION_VALID_TIME,
26 _LOGGER = logging.getLogger(__name__)
30 """Class to manage fetching NWS observation data."""
45 name=f
"NWS observation station {nws.station}",
46 update_interval=DEFAULT_SCAN_INTERVAL,
47 request_refresh_debouncer=debounce.Debouncer(
48 hass, _LOGGER, cooldown=DEBOUNCE_TIME, immediate=
True
53 """Update data via library."""
60 """Update data without retries first."""
62 await self.
nwsnws.update_observation(
64 start_time=
utcnow() - UPDATE_TIME_PERIOD,
66 except (NwsNoDataError, ClientResponseError)
as err:
74 """Update data with retries and caching data over multiple failed rounds."""
76 await call_with_retry(
77 self.
nwsnws.update_observation,
81 start_time=
utcnow() - UPDATE_TIME_PERIOD,
83 except (NwsNoDataError, ClientResponseError)
as err:
89 "NWS observation update failed, but data still valid. Last success: %s",
def _async_first_update_data(self)
None __init__(self, HomeAssistant hass, SimpleNWS nws)
None _async_subsequent_update_data(self)
None _async_update_data(self)