1 """Coordinator for the P1 Monitor integration."""
3 from __future__
import annotations
5 from typing
import TypedDict
7 from p1monitor
import (
9 P1MonitorConnectionError,
35 """Class for defining data in dict."""
37 smartmeter: SmartMeter
40 watermeter: WaterMeter |
None
44 """Class to manage fetching P1 Monitor data from single endpoint."""
46 config_entry: ConfigEntry
47 has_water_meter: bool |
None =
None
53 """Initialize global P1 Monitor data updater."""
58 update_interval=SCAN_INTERVAL,
68 """Fetch data from P1 Monitor."""
69 data: P1MonitorData = {
70 SERVICE_SMARTMETER: await self.
p1monitorp1monitor.smartmeter(),
71 SERVICE_PHASES: await self.
p1monitorp1monitor.phases(),
72 SERVICE_SETTINGS: await self.
p1monitorp1monitor.settings(),
73 SERVICE_WATERMETER:
None,
78 data[SERVICE_WATERMETER] = await self.
p1monitorp1monitor.watermeter()
80 except (P1MonitorNoDataError, P1MonitorConnectionError):
81 LOGGER.debug(
"No water meter data received from P1 Monitor")
None __init__(self, HomeAssistant hass)
P1MonitorData _async_update_data(self)
aiohttp.ClientSession async_get_clientsession(HomeAssistant hass, bool verify_ssl=True, socket.AddressFamily family=socket.AF_UNSPEC, ssl_util.SSLCipherList ssl_cipher=ssl_util.SSLCipherList.PYTHON_DEFAULT)