Explicitly pass in the config_entry in tesla_fleet coordinator (#137909)

explicitly pass in the config_entry in coordinator
This commit is contained in:
Michael 2025-02-09 15:46:54 +01:00 committed by GitHub
parent 017af4fcf8
commit e4ec217cfa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 47 additions and 9 deletions

View File

@ -139,7 +139,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: TeslaFleetConfigEntry) -
api = VehicleSigned(tesla.vehicle, vin)
else:
api = VehicleSpecific(tesla.vehicle, vin)
coordinator = TeslaFleetVehicleDataCoordinator(hass, api, product)
coordinator = TeslaFleetVehicleDataCoordinator(hass, entry, api, product)
await coordinator.async_config_entry_first_refresh()
@ -175,9 +175,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: TeslaFleetConfigEntry) -
api = EnergySpecific(tesla.energy, site_id)
live_coordinator = TeslaFleetEnergySiteLiveCoordinator(hass, api)
history_coordinator = TeslaFleetEnergySiteHistoryCoordinator(hass, api)
info_coordinator = TeslaFleetEnergySiteInfoCoordinator(hass, api, product)
live_coordinator = TeslaFleetEnergySiteLiveCoordinator(hass, entry, api)
history_coordinator = TeslaFleetEnergySiteHistoryCoordinator(
hass, entry, api
)
info_coordinator = TeslaFleetEnergySiteInfoCoordinator(
hass, entry, api, product
)
await live_coordinator.async_config_entry_first_refresh()
await history_coordinator.async_config_entry_first_refresh()

View File

@ -1,9 +1,11 @@
"""Tesla Fleet Data Coordinator."""
from __future__ import annotations
from datetime import datetime, timedelta
from random import randint
from time import time
from typing import Any
from typing import TYPE_CHECKING, Any
from tesla_fleet_api import EnergySpecific, VehicleSpecific
from tesla_fleet_api.const import TeslaEnergyPeriod, VehicleDataEndpoint
@ -21,6 +23,9 @@ from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryAuthFailed
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
if TYPE_CHECKING:
from . import TeslaFleetConfigEntry
from .const import ENERGY_HISTORY_FIELDS, LOGGER, TeslaFleetState
VEHICLE_INTERVAL_SECONDS = 300
@ -57,18 +62,24 @@ def flatten(data: dict[str, Any], parent: str | None = None) -> dict[str, Any]:
class TeslaFleetVehicleDataCoordinator(DataUpdateCoordinator[dict[str, Any]]):
"""Class to manage fetching data from the TeslaFleet API."""
config_entry: TeslaFleetConfigEntry
updated_once: bool
pre2021: bool
last_active: datetime
rate: RateCalculator
def __init__(
self, hass: HomeAssistant, api: VehicleSpecific, product: dict
self,
hass: HomeAssistant,
config_entry: TeslaFleetConfigEntry,
api: VehicleSpecific,
product: dict,
) -> None:
"""Initialize TeslaFleet Vehicle Update Coordinator."""
super().__init__(
hass,
LOGGER,
config_entry=config_entry,
name="Tesla Fleet Vehicle",
update_interval=VEHICLE_INTERVAL,
)
@ -141,13 +152,20 @@ class TeslaFleetVehicleDataCoordinator(DataUpdateCoordinator[dict[str, Any]]):
class TeslaFleetEnergySiteLiveCoordinator(DataUpdateCoordinator[dict[str, Any]]):
"""Class to manage fetching energy site live status from the TeslaFleet API."""
config_entry: TeslaFleetConfigEntry
updated_once: bool
def __init__(self, hass: HomeAssistant, api: EnergySpecific) -> None:
def __init__(
self,
hass: HomeAssistant,
config_entry: TeslaFleetConfigEntry,
api: EnergySpecific,
) -> None:
"""Initialize TeslaFleet Energy Site Live coordinator."""
super().__init__(
hass,
LOGGER,
config_entry=config_entry,
name="Tesla Fleet Energy Site Live",
update_interval=timedelta(seconds=10),
)
@ -188,11 +206,19 @@ class TeslaFleetEnergySiteLiveCoordinator(DataUpdateCoordinator[dict[str, Any]])
class TeslaFleetEnergySiteHistoryCoordinator(DataUpdateCoordinator[dict[str, Any]]):
"""Class to manage fetching energy site history import and export from the Tesla Fleet API."""
def __init__(self, hass: HomeAssistant, api: EnergySpecific) -> None:
config_entry: TeslaFleetConfigEntry
def __init__(
self,
hass: HomeAssistant,
config_entry: TeslaFleetConfigEntry,
api: EnergySpecific,
) -> None:
"""Initialize Tesla Fleet Energy Site History coordinator."""
super().__init__(
hass,
LOGGER,
config_entry=config_entry,
name=f"Tesla Fleet Energy History {api.energy_site_id}",
update_interval=timedelta(seconds=300),
)
@ -243,13 +269,21 @@ class TeslaFleetEnergySiteHistoryCoordinator(DataUpdateCoordinator[dict[str, Any
class TeslaFleetEnergySiteInfoCoordinator(DataUpdateCoordinator[dict[str, Any]]):
"""Class to manage fetching energy site info from the TeslaFleet API."""
config_entry: TeslaFleetConfigEntry
updated_once: bool
def __init__(self, hass: HomeAssistant, api: EnergySpecific, product: dict) -> None:
def __init__(
self,
hass: HomeAssistant,
config_entry: TeslaFleetConfigEntry,
api: EnergySpecific,
product: dict,
) -> None:
"""Initialize TeslaFleet Energy Info coordinator."""
super().__init__(
hass,
LOGGER,
config_entry=config_entry,
name="Tesla Fleet Energy Site Info",
update_interval=timedelta(seconds=15),
)