1
0
mirror of https://github.com/home-assistant/core.git synced 2026-04-17 23:53:49 +01:00
Files
core/homeassistant/components/teslemetry/models.py
Brett Adams 4d8cedb061 Add dynamic device discovery for Teslemetry (#162143)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Erwin Douna <e.douna@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-16 20:31:05 +01:00

61 lines
1.6 KiB
Python

"""The Teslemetry integration models."""
from __future__ import annotations
import asyncio
from dataclasses import dataclass, field
from tesla_fleet_api.const import Scope
from tesla_fleet_api.teslemetry import EnergySite, Vehicle
from teslemetry_stream import TeslemetryStream, TeslemetryStreamVehicle
from homeassistant.config_entries import ConfigEntry
from homeassistant.helpers.device_registry import DeviceInfo
from .coordinator import (
TeslemetryEnergyHistoryCoordinator,
TeslemetryEnergySiteInfoCoordinator,
TeslemetryEnergySiteLiveCoordinator,
TeslemetryMetadataCoordinator,
TeslemetryVehicleDataCoordinator,
)
@dataclass
class TeslemetryData:
"""Data for the Teslemetry integration."""
vehicles: list[TeslemetryVehicleData]
energysites: list[TeslemetryEnergyData]
scopes: list[Scope]
stream: TeslemetryStream | None
metadata_coordinator: TeslemetryMetadataCoordinator
@dataclass
class TeslemetryVehicleData:
"""Data for a vehicle in the Teslemetry integration."""
api: Vehicle
config_entry: ConfigEntry
coordinator: TeslemetryVehicleDataCoordinator
poll: bool
stream: TeslemetryStream
stream_vehicle: TeslemetryStreamVehicle
vin: str
firmware: str
device: DeviceInfo
wakelock: asyncio.Lock = field(default_factory=asyncio.Lock)
@dataclass
class TeslemetryEnergyData:
"""Data for a vehicle in the Teslemetry integration."""
api: EnergySite
live_coordinator: TeslemetryEnergySiteLiveCoordinator | None
info_coordinator: TeslemetryEnergySiteInfoCoordinator
history_coordinator: TeslemetryEnergyHistoryCoordinator | None
id: int
device: DeviceInfo