From e4ec217cfaf77e1deedb01aebed0ee7207665721 Mon Sep 17 00:00:00 2001 From: Michael <35783820+mib1185@users.noreply.github.com> Date: Sun, 9 Feb 2025 15:46:54 +0100 Subject: [PATCH] Explicitly pass in the config_entry in tesla_fleet coordinator (#137909) explicitly pass in the config_entry in coordinator --- .../components/tesla_fleet/__init__.py | 12 +++-- .../components/tesla_fleet/coordinator.py | 44 ++++++++++++++++--- 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/tesla_fleet/__init__.py b/homeassistant/components/tesla_fleet/__init__.py index 634e8f845f9..27bfb9134ab 100644 --- a/homeassistant/components/tesla_fleet/__init__.py +++ b/homeassistant/components/tesla_fleet/__init__.py @@ -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() diff --git a/homeassistant/components/tesla_fleet/coordinator.py b/homeassistant/components/tesla_fleet/coordinator.py index 4d99319d49f..129f460ff90 100644 --- a/homeassistant/components/tesla_fleet/coordinator.py +++ b/homeassistant/components/tesla_fleet/coordinator.py @@ -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), )