Move pure_energie coordinator to separate module (#117560)
parent
e168cb96e9
commit
d670f1d81d
|
@ -2,18 +2,13 @@
|
|||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import NamedTuple
|
||||
|
||||
from gridnet import Device, GridNet, SmartBridge
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_HOST, Platform
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.exceptions import ConfigEntryNotReady
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
||||
|
||||
from .const import DOMAIN, LOGGER, SCAN_INTERVAL
|
||||
from .const import DOMAIN
|
||||
from .coordinator import PureEnergieDataUpdateCoordinator
|
||||
|
||||
PLATFORMS = [Platform.SENSOR]
|
||||
|
||||
|
@ -39,39 +34,3 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
|
||||
del hass.data[DOMAIN][entry.entry_id]
|
||||
return unload_ok
|
||||
|
||||
|
||||
class PureEnergieData(NamedTuple):
|
||||
"""Class for defining data in dict."""
|
||||
|
||||
device: Device
|
||||
smartbridge: SmartBridge
|
||||
|
||||
|
||||
class PureEnergieDataUpdateCoordinator(DataUpdateCoordinator[PureEnergieData]): # pylint: disable=hass-enforce-coordinator-module
|
||||
"""Class to manage fetching Pure Energie data from single eindpoint."""
|
||||
|
||||
config_entry: ConfigEntry
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
hass: HomeAssistant,
|
||||
) -> None:
|
||||
"""Initialize global Pure Energie data updater."""
|
||||
super().__init__(
|
||||
hass,
|
||||
LOGGER,
|
||||
name=DOMAIN,
|
||||
update_interval=SCAN_INTERVAL,
|
||||
)
|
||||
|
||||
self.gridnet = GridNet(
|
||||
self.config_entry.data[CONF_HOST], session=async_get_clientsession(hass)
|
||||
)
|
||||
|
||||
async def _async_update_data(self) -> PureEnergieData:
|
||||
"""Fetch data from SmartBridge."""
|
||||
return PureEnergieData(
|
||||
device=await self.gridnet.device(),
|
||||
smartbridge=await self.gridnet.smartbridge(),
|
||||
)
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
"""Coordinator for the Pure Energie integration."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import NamedTuple
|
||||
|
||||
from gridnet import Device, GridNet, SmartBridge
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_HOST
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
||||
|
||||
from .const import DOMAIN, LOGGER, SCAN_INTERVAL
|
||||
|
||||
|
||||
class PureEnergieData(NamedTuple):
|
||||
"""Class for defining data in dict."""
|
||||
|
||||
device: Device
|
||||
smartbridge: SmartBridge
|
||||
|
||||
|
||||
class PureEnergieDataUpdateCoordinator(DataUpdateCoordinator[PureEnergieData]):
|
||||
"""Class to manage fetching Pure Energie data from single eindpoint."""
|
||||
|
||||
config_entry: ConfigEntry
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
hass: HomeAssistant,
|
||||
) -> None:
|
||||
"""Initialize global Pure Energie data updater."""
|
||||
super().__init__(
|
||||
hass,
|
||||
LOGGER,
|
||||
name=DOMAIN,
|
||||
update_interval=SCAN_INTERVAL,
|
||||
)
|
||||
|
||||
self.gridnet = GridNet(
|
||||
self.config_entry.data[CONF_HOST], session=async_get_clientsession(hass)
|
||||
)
|
||||
|
||||
async def _async_update_data(self) -> PureEnergieData:
|
||||
"""Fetch data from SmartBridge."""
|
||||
return PureEnergieData(
|
||||
device=await self.gridnet.device(),
|
||||
smartbridge=await self.gridnet.smartbridge(),
|
||||
)
|
|
@ -10,8 +10,8 @@ from homeassistant.config_entries import ConfigEntry
|
|||
from homeassistant.const import CONF_HOST
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from . import PureEnergieDataUpdateCoordinator
|
||||
from .const import DOMAIN
|
||||
from .coordinator import PureEnergieDataUpdateCoordinator
|
||||
|
||||
TO_REDACT = {
|
||||
CONF_HOST,
|
||||
|
|
|
@ -19,8 +19,8 @@ from homeassistant.helpers.device_registry import DeviceInfo
|
|||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||
|
||||
from . import PureEnergieData, PureEnergieDataUpdateCoordinator
|
||||
from .const import DOMAIN
|
||||
from .coordinator import PureEnergieData, PureEnergieDataUpdateCoordinator
|
||||
|
||||
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
|
|
|
@ -53,7 +53,7 @@ def mock_pure_energie_config_flow(
|
|||
def mock_pure_energie():
|
||||
"""Return a mocked Pure Energie client."""
|
||||
with patch(
|
||||
"homeassistant.components.pure_energie.GridNet", autospec=True
|
||||
"homeassistant.components.pure_energie.coordinator.GridNet", autospec=True
|
||||
) as pure_energie_mock:
|
||||
pure_energie = pure_energie_mock.return_value
|
||||
pure_energie.smartbridge = AsyncMock(
|
||||
|
|
|
@ -37,7 +37,7 @@ async def test_load_unload_config_entry(
|
|||
|
||||
|
||||
@patch(
|
||||
"homeassistant.components.pure_energie.GridNet._request",
|
||||
"homeassistant.components.pure_energie.coordinator.GridNet._request",
|
||||
side_effect=GridNetConnectionError,
|
||||
)
|
||||
async def test_config_entry_not_ready(
|
||||
|
|
Loading…
Reference in New Issue