Skip to content

Commit 8c78958

Browse files
committed
Support for Tesla-Fleet-Api v1
1 parent 8e11e1b commit 8c78958

File tree

10 files changed

+39
-60
lines changed

10 files changed

+39
-60
lines changed

custom_components/teslemetry/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from collections.abc import Callable
55
from typing import Final
66

7-
from tesla_fleet_api import EnergySpecific, Teslemetry, VehicleSpecific
7+
from tesla_fleet_api import Teslemetry
88
from tesla_fleet_api.const import Scope
99
from tesla_fleet_api.exceptions import (
1010
InvalidToken,
@@ -109,7 +109,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
109109
# Remove the protobuff 'cached_data' that we do not use to save memory
110110
product.pop("cached_data", None)
111111
vin = product["vin"]
112-
api = VehicleSpecific(teslemetry.vehicle, vin)
112+
api = teslemetry.vehicles.create(vin)
113113
coordinator = TeslemetryVehicleDataCoordinator(hass, api, product)
114114
firmware = metadata[vin].get("firmware","Unknown")
115115

@@ -151,7 +151,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
151151
continue
152152

153153
site_id = product["energy_site_id"]
154-
api = EnergySpecific(teslemetry.energy, site_id)
154+
api = teslemetry.energySites.create(site_id)
155155

156156
device = DeviceInfo(
157157
identifiers={(DOMAIN, str(site_id))},

custom_components/teslemetry/coordinator.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
from typing import Any
66
from random import randint
77

8-
from tesla_fleet_api import EnergySpecific, VehicleSpecific
8+
from tesla_fleet_api.teslemetry.vehicles import TeslemetryVehicleFleet
9+
from tesla_fleet_api.tesla.energysite import EnergySite
910
from tesla_fleet_api.const import VehicleDataEndpoint
1011
from tesla_fleet_api.exceptions import (
1112
TeslaFleetError,
@@ -48,7 +49,7 @@ class TeslemetryVehicleDataCoordinator(DataUpdateCoordinator[dict[str, Any]]):
4849
"""Class to manage fetching data from the Teslemetry API."""
4950

5051
def __init__(
51-
self, hass: HomeAssistant, api: VehicleSpecific, product: dict
52+
self, hass: HomeAssistant, api: TeslemetryVehicleFleet, product: dict
5253
) -> None:
5354
"""Initialize Teslemetry Vehicle Update Coordinator."""
5455
super().__init__(
@@ -96,7 +97,7 @@ class TeslemetryEnergySiteLiveCoordinator(DataUpdateCoordinator[dict[str, Any]])
9697

9798
failures: int = 0
9899

99-
def __init__(self, hass: HomeAssistant, api: EnergySpecific) -> None:
100+
def __init__(self, hass: HomeAssistant, api: EnergySite) -> None:
100101
"""Initialize Teslemetry Energy Site Live coordinator."""
101102
super().__init__(
102103
hass,
@@ -146,7 +147,7 @@ class TeslemetryEnergySiteInfoCoordinator(DataUpdateCoordinator[dict[str, Any]])
146147

147148
failures: int = 0
148149

149-
def __init__(self, hass: HomeAssistant, api: EnergySpecific, product: dict) -> None:
150+
def __init__(self, hass: HomeAssistant, api: EnergySite, product: dict) -> None:
150151
"""Initialize Teslemetry Energy Info coordinator."""
151152
super().__init__(
152153
hass,
@@ -187,7 +188,7 @@ class TeslemetryEnergyHistoryCoordinator(DataUpdateCoordinator[dict[str, Any]]):
187188

188189
failures: int = 0
189190

190-
def __init__(self, hass: HomeAssistant, api: EnergySpecific) -> None:
191+
def __init__(self, hass: HomeAssistant, api: EnergySite) -> None:
191192
"""Initialize Teslemetry Energy Info coordinator."""
192193
super().__init__(
193194
hass,

custom_components/teslemetry/entity.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
from propcache import cached_property
55

66
from homeassistant.helpers.entity import Entity
7-
from tesla_fleet_api import EnergySpecific, VehicleSpecific
7+
from tesla_fleet_api.teslemetry.vehicles import TeslemetryVehicleFleet
8+
from tesla_fleet_api.tesla.energysite import EnergySite
89
from tesla_fleet_api.const import Scope
910
from teslemetry_stream import Signal
1011

@@ -28,7 +29,7 @@ class TeslemetryRootEntity(Entity):
2829

2930
_attr_has_entity_name = True
3031
scoped: bool
31-
api: VehicleSpecific | EnergySpecific
32+
api: TeslemetryVehicleFleet | EnergySite
3233

3334
def raise_for_scope(self, scope: Scope):
3435
"""Raise an error if a scope is not available."""
@@ -196,7 +197,7 @@ def __init__(
196197
| TeslemetryEnergySiteLiveCoordinator
197198
| TeslemetryEnergySiteInfoCoordinator
198199
| TeslemetryEnergyHistoryCoordinator,
199-
api: VehicleSpecific | EnergySpecific,
200+
api: TeslemetryVehicleFleet | EnergySite,
200201
key: str,
201202
) -> None:
202203
"""Initialize common aspects of a Teslemetry entity."""
@@ -253,7 +254,7 @@ def _async_update_attrs(self) -> None:
253254
class TeslemetryVehicleEntity(TeslemetryCoordinatorEntity):
254255
"""Parent class for polled Teslemetry Vehicle entities."""
255256

256-
api: VehicleSpecific
257+
api: TeslemetryVehicleFleet
257258

258259
def __init__(
259260
self,
@@ -287,7 +288,7 @@ async def handle_command(self, command) -> dict[str, Any]:
287288
class TeslemetryEnergyLiveEntity(TeslemetryCoordinatorEntity):
288289
"""Parent class for Teslemetry Energy Site Live entities."""
289290

290-
api: EnergySpecific
291+
api: EnergySite
291292

292293
def __init__(
293294
self,
@@ -306,7 +307,7 @@ def __init__(
306307
class TeslemetryEnergyInfoEntity(TeslemetryCoordinatorEntity):
307308
"""Parent class for Teslemetry Energy Site Info Entities."""
308309

309-
api: EnergySpecific
310+
api: EnergySite
310311

311312
def __init__(
312313
self,
@@ -324,7 +325,7 @@ def __init__(
324325
class TeslemetryEnergyHistoryEntity(TeslemetryCoordinatorEntity):
325326
"""Parent class for Teslemetry Energy History Entities."""
326327

327-
api: EnergySpecific
328+
api: EnergySite
328329

329330
def __init__(
330331
self,
@@ -346,7 +347,7 @@ class TeslemetryWallConnectorEntity(
346347
):
347348
"""Parent class for Teslemetry Wall Connector Entities."""
348349

349-
api: EnergySpecific
350+
api: EnergySite
350351

351352
_attr_has_entity_name = True
352353

custom_components/teslemetry/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
"iot_class": "cloud_polling",
88
"issue_tracker": "https://github.com/Teslemetry/hass-teslemetry/issues",
99
"loggers": ["tesla_fleet_api", "teslemetry_stream"],
10-
"requirements": ["tesla-fleet-api==0.9.10", "teslemetry-stream==0.6.12"],
10+
"requirements": ["tesla-fleet-api==1.0.6", "teslemetry-stream==0.6.12"],
1111
"version": "3.0.15"
1212
}

custom_components/teslemetry/media_player.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from homeassistant.config_entries import ConfigEntry
1313
from homeassistant.core import HomeAssistant
1414
from homeassistant.helpers.entity_platform import AddEntitiesCallback
15-
from tesla_fleet_api.vehiclesigned import VehicleSpecific
15+
from tesla_fleet_api.teslemetry.vehicles import VehicleFleet
1616

1717
from custom_components.teslemetry.helpers import handle_vehicle_command
1818

@@ -59,7 +59,7 @@ async def async_setup_entry(
5959
class TeslemetryMediaEntity(TeslemetryRootEntity, MediaPlayerEntity):
6060
"""Base vehicle media player class."""
6161

62-
api: VehicleSpecific
62+
api: VehicleFleet
6363

6464
_attr_device_class = MediaPlayerDeviceClass.SPEAKER
6565
_attr_volume_step = VOLUME_STEP

custom_components/teslemetry/models.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
import asyncio
99
from dataclasses import dataclass
1010

11-
from tesla_fleet_api import EnergySpecific, VehicleSpecific
11+
from tesla_fleet_api.teslemetry.vehicles import TeslemetryVehicleFleet
12+
from tesla_fleet_api.tesla.energysite import EnergySite
1213
from tesla_fleet_api.const import Scope
1314

1415
from teslemetry_stream import TeslemetryStream, TeslemetryStreamVehicle
@@ -37,7 +38,7 @@ class TeslemetryData:
3738
class TeslemetryVehicleData:
3839
"""Data for a vehicle in the Teslemetry integration."""
3940

40-
api: VehicleSpecific
41+
api: TeslemetryVehicleFleet
4142
config_entry: ConfigEntry
4243
coordinator: TeslemetryVehicleDataCoordinator
4344
stream: TeslemetryStream
@@ -56,7 +57,7 @@ class TeslemetryVehicleData:
5657
class TeslemetryEnergyData:
5758
"""Data for a vehicle in the Teslemetry integration."""
5859

59-
api: EnergySpecific
60+
api: EnergySite
6061
live_coordinator: TeslemetryEnergySiteLiveCoordinator
6162
info_coordinator: TeslemetryEnergySiteInfoCoordinator
6263
id: int

custom_components/teslemetry/translations/en.json

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -674,40 +674,16 @@
674674
"name": "Di slave torque command"
675675
},
676676
"di_state_front": {
677-
"name": "Front DI state",
678-
"state": {
679-
"standby": "Standby",
680-
"fault": "Fault",
681-
"abort": "Abort",
682-
"enable": "Enable"
683-
}
677+
"name": "Front DI state"
684678
},
685679
"di_state_rear": {
686-
"name": "Rear DI state",
687-
"state": {
688-
"standby": "Standby",
689-
"fault": "Fault",
690-
"abort": "Abort",
691-
"enable": "Enable"
692-
}
680+
"name": "Rear DI state"
693681
},
694682
"di_state_rear_left": {
695-
"name": "Rear left DI state",
696-
"state": {
697-
"standby": "Standby",
698-
"fault": "Fault",
699-
"abort": "Abort",
700-
"enable": "Enable"
701-
}
683+
"name": "Rear left DI state"
702684
},
703685
"di_state_rear_right": {
704-
"name": "Rear right DI state",
705-
"state": {
706-
"standby": "Standby",
707-
"fault": "Fault",
708-
"abort": "Abort",
709-
"enable": "Enable"
710-
}
686+
"name": "Rear right DI state"
711687
},
712688
"di_stator_temp_front": {
713689
"name": "Front DU stator temperature"

custom_components/teslemetry/update.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from typing import Any
66

77
from homeassistant.helpers.restore_state import RestoreEntity
8-
from tesla_fleet_api import VehicleSpecific
8+
from tesla_fleet_api.teslemetry.vehicles import VehicleFleet
99
from tesla_fleet_api.const import Scope
1010

1111
from homeassistant.components.update import UpdateEntity, UpdateEntityFeature
@@ -40,7 +40,7 @@ async def async_setup_entry(
4040
class TeslemetryUpdateEntity(TeslemetryRootEntity, UpdateEntity):
4141
"""Teslemetry Updates entity."""
4242

43-
api: VehicleSpecific
43+
api: VehicleFleet
4444
_attr_supported_features = UpdateEntityFeature.PROGRESS
4545

4646
async def async_install(

hacs.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
2-
"filename": "teslemetry.zip",
3-
"hide_default_branch": true,
4-
"homeassistant": "2024.9.0",
5-
"name": "Teslemetry",
6-
"render_readme": true,
7-
"zip_release": true
8-
}
2+
"filename": "teslemetry.zip",
3+
"hide_default_branch": true,
4+
"homeassistant": "2025.2.0",
5+
"name": "Teslemetry",
6+
"render_readme": true,
7+
"zip_release": true
8+
}

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ colorlog==6.9.0
22
homeassistant==2024.12.0
33
pip>=24.1.1,<24.3
44
ruff==0.9.6
5-
tesla-fleet-api==0.9.10
5+
tesla-fleet-api==1.0.6
66
teslemetry-stream==0.6.11

0 commit comments

Comments
 (0)