Skip to content

Commit 318f6a8

Browse files
committed
Preparing for v1
1 parent f70e382 commit 318f6a8

File tree

5 files changed

+63
-246
lines changed

5 files changed

+63
-246
lines changed

tesla_fleet_api/const.py

Lines changed: 1 addition & 225 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from enum import Enum
44
import logging
55

6-
VERSION = "0.9.10"
6+
VERSION = "1.0.0"
77
LOGGER = logging.getLogger(__package__)
88
SERVERS = {
99
"na": "https://fleet-api.prd.na.vn.cloud.tesla.com",
@@ -151,230 +151,6 @@ class EnergyExportMode(StrEnum):
151151
NEVER = "never"
152152

153153

154-
class TelemetryField(StrEnum):
155-
"""Fields available in telemetry streams"""
156-
157-
AC_CHARGING_ENERGY_IN = "ACChargingEnergyIn"
158-
AC_CHARGING_POWER = "ACChargingPower"
159-
AUTO_SEAT_CLIMATE_LEFT = "AutoSeatClimateLeft"
160-
AUTO_SEAT_CLIMATE_RIGHT = "AutoSeatClimateRight"
161-
AUTOMATIC_BLIND_SPOT_CAMERA = "AutomaticBlindSpotCamera"
162-
AUTOMATIC_EMERGENCY_BRAKING_OFF = "AutomaticEmergencyBrakingOff"
163-
BATTERY_HEATER_ON = "BatteryHeaterOn"
164-
BATTERY_LEVEL = "BatteryLevel"
165-
BLIND_SPOT_COLLISION_WARNING_CHIME = "BlindSpotCollisionWarningChime"
166-
BMS_FULL_CHARGE_COMPLETE = "BmsFullchargecomplete"
167-
BMS_STATE = "BMSState"
168-
BRAKE_PEDAL = "BrakePedal"
169-
BRAKE_PEDAL_POS = "BrakePedalPos"
170-
BRICK_VOLTAGE_MAX = "BrickVoltageMax"
171-
BRICK_VOLTAGE_MIN = "BrickVoltageMin"
172-
CABIN_OVERHEAT_PROTECTION_MODE = "CabinOverheatProtectionMode"
173-
CABIN_OVERHEAT_PROTECTION_TEMPERATURE_LIMIT = "CabinOverheatProtectionTemperatureLimit"
174-
CAR_TYPE = "CarType"
175-
CENTER_DISPLAY = "CenterDisplay"
176-
CHARGE_AMPS = "ChargeAmps"
177-
CHARGE_CURRENT_REQUEST = "ChargeCurrentRequest"
178-
CHARGE_CURRENT_REQUEST_MAX = "ChargeCurrentRequestMax"
179-
CHARGE_ENABLE_REQUEST = "ChargeEnableRequest"
180-
CHARGE_LIMIT_SOC = "ChargeLimitSoc"
181-
CHARGE_PORT = "ChargePort"
182-
CHARGE_PORT_COLD_WEATHER_MODE = "ChargePortColdWeatherMode"
183-
CHARGE_PORT_DOOR_OPEN = "ChargePortDoorOpen"
184-
CHARGE_PORT_LATCH = "ChargePortLatch"
185-
CHARGE_STATE = "ChargeState"
186-
CHARGER_PHASES = "ChargerPhases"
187-
CHARGING_CABLE_TYPE = "ChargingCableType"
188-
CLIMATE_KEEPER_MODE = "ClimateKeeperMode"
189-
CRUISE_FOLLOW_DISTANCE = "CruiseFollowDistance"
190-
CRUISE_SET_SPEED = "CruiseSetSpeed"
191-
CRUISE_STATE = "CruiseState"
192-
CURRENT_LIMIT_MPH = "CurrentLimitMph"
193-
DC_CHARGING_ENERGY_IN = "DCChargingEnergyIn"
194-
DC_CHARGING_POWER = "DCChargingPower"
195-
DC_DC_ENABLE = "DCDCEnable"
196-
DEFROST_FOR_PRECONDITIONING = "DefrostForPreconditioning"
197-
DEFROST_MODE = "DefrostMode"
198-
DESTINATION_NAME = "DestinationName"
199-
DESTINATION_LOCATION = "DestinationLocation"
200-
DETAILED_CHARGE_STATE = "DetailedChargeState"
201-
DI_AXLE_SPEED_F = "DiAxleSpeedF"
202-
DI_AXLE_SPEED_R = "DiAxleSpeedR"
203-
DI_AXLE_SPEED_REL = "DiAxleSpeedREL"
204-
DI_AXLE_SPEED_RER = "DiAxleSpeedRER"
205-
DI_HEATSINK_TF = "DiHeatsinkTF"
206-
DI_HEATSINK_TR = "DiHeatsinkTR"
207-
DI_HEATSINK_TREL = "DiHeatsinkTREL"
208-
DI_HEATSINK_TRER = "DiHeatsinkTRER"
209-
DI_MOTOR_CURRENT_F = "DiMotorCurrentF"
210-
DI_MOTOR_CURRENT_R = "DiMotorCurrentR"
211-
DI_MOTOR_CURRENT_REL = "DiMotorCurrentREL"
212-
DI_MOTOR_CURRENT_RER = "DiMotorCurrentRER"
213-
DI_SLAVE_TORQUE_CMD = "DiSlaveTorqueCmd"
214-
DI_STATE_F = "DiStateF"
215-
DI_STATE_R = "DiStateR"
216-
DI_STATE_REL = "DiStateREL"
217-
DI_STATE_RER = "DiStateRER"
218-
DI_STATOR_TEMP_F = "DiStatorTempF"
219-
DI_STATOR_TEMP_R = "DiStatorTempR"
220-
DI_STATOR_TEMP_REL = "DiStatorTempREL"
221-
DI_STATOR_TEMP_RER = "DiStatorTempRER"
222-
DI_TORQUE_ACTUAL_F = "DiTorqueActualF"
223-
DI_TORQUE_ACTUAL_R = "DiTorqueActualR"
224-
DI_TORQUE_ACTUAL_REL = "DiTorqueActualREL"
225-
DI_TORQUE_ACTUAL_RER = "DiTorqueActualRER"
226-
DI_TORQUEMOTOR = "DiTorquemotor"
227-
DI_V_BAT_F = "DiVBatF"
228-
DI_V_BAT_R = "DiVBatR"
229-
DI_V_BAT_REL = "DiVBatREL"
230-
DI_V_BAT_RER = "DiVBatRER"
231-
DOOR_STATE = "DoorState"
232-
DRIVE_RAIL = "DriveRail"
233-
DRIVER_SEAT_BELT = "DriverSeatBelt"
234-
DRIVER_SEAT_OCCUPIED = "DriverSeatOccupied"
235-
EFFICIENCY_PACKAGE = "EfficiencyPackage"
236-
EMERGENCY_LANE_DEPARTURE_AVOIDANCE = "EmergencyLaneDepartureAvoidance"
237-
ENERGY_REMAINING = "EnergyRemaining"
238-
EST_BATTERY_RANGE = "EstBatteryRange"
239-
ESTIMATED_HOURS_TO_CHARGE_TERMINATION = "EstimatedHoursToChargeTermination"
240-
EUROPE_VEHICLE = "EuropeVehicle"
241-
EXPECTED_ENERGY_PERCENT_AT_TRIP_ARRIVAL = "ExpectedEnergyPercentAtTripArrival"
242-
EXPERIMENTAL_1 = "Experimental_1"
243-
EXPERIMENTAL_2 = "Experimental_2"
244-
EXPERIMENTAL_3 = "Experimental_3"
245-
EXPERIMENTAL_4 = "Experimental_4"
246-
EXTERIOR_COLOR = "ExteriorColor"
247-
FAST_CHARGER_PRESENT = "FastChargerPresent"
248-
FAST_CHARGER_TYPE = "FastChargerType"
249-
FD_WINDOW = "FdWindow"
250-
FORWARD_COLLISION_WARNING = "ForwardCollisionWarning"
251-
FP_WINDOW = "FpWindow"
252-
GEAR = "Gear"
253-
GPS_HEADING = "GpsHeading"
254-
GPS_STATE = "GpsState"
255-
GUEST_MODE_ENABLED = "GuestModeEnabled"
256-
GUEST_MODE_MOBILE_ACCESS_STATE = "GuestModeMobileAccessState"
257-
HOMELINK_DEVICE_COUNT = "HomelinkDeviceCount"
258-
HOMELINK_NEARBY = "HomelinkNearby"
259-
HVAC_AC_ENABLED = "HvacACEnabled"
260-
HVAC_AUTO_MODE = "HvacAutoMode"
261-
HVAC_FAN_SPEED = "HvacFanSpeed"
262-
HVAC_FAN_STATUS = "HvacFanStatus"
263-
HVAC_LEFT_TEMPERATURE_REQUEST = "HvacLeftTemperatureRequest"
264-
HVAC_POWER = "HvacPower"
265-
HVAC_RIGHT_TEMPERATURE_REQUEST = "HvacRightTemperatureRequest"
266-
HVAC_STEERING_WHEEL_HEAT_AUTO = "HvacSteeringWheelHeatAuto"
267-
HVAC_STEERING_WHEEL_HEAT_LEVEL = "HvacSteeringWheelHeatLevel"
268-
HVIL = "Hvil"
269-
IDEAL_BATTERY_RANGE = "IdealBatteryRange"
270-
INSIDE_TEMP = "InsideTemp"
271-
ISOLATION_RESISTANCE = "IsolationResistance"
272-
LANE_DEPARTURE_AVOIDANCE = "LaneDepartureAvoidance"
273-
LATERAL_ACCELERATION = "LateralAcceleration"
274-
LIFETIME_ENERGY_GAINED_REGEN = "LifetimeEnergyGainedRegen"
275-
LIFETIME_ENERGY_USED = "LifetimeEnergyUsed"
276-
LIFETIME_ENERGY_USED_DRIVE = "LifetimeEnergyUsedDrive"
277-
LOCATION = "Location"
278-
LOCKED = "Locked"
279-
LONGITUDINAL_ACCELERATION = "LongitudinalAcceleration"
280-
MILES_TO_ARRIVAL = "MilesToArrival"
281-
MINUTES_TO_ARRIVAL = "MinutesToArrival"
282-
MODULE_TEMP_MAX = "ModuleTempMax"
283-
MODULE_TEMP_MIN = "ModuleTempMin"
284-
NOT_ENOUGH_POWER_TO_HEAT = "NotEnoughPowerToHeat"
285-
NUM_BRICK_VOLTAGE_MAX = "NumBrickVoltageMax"
286-
NUM_BRICK_VOLTAGE_MIN = "NumBrickVoltageMin"
287-
NUM_MODULE_TEMP_MAX = "NumModuleTempMax"
288-
NUM_MODULE_TEMP_MIN = "NumModuleTempMin"
289-
ODOMETER = "Odometer"
290-
OFFROAD_LIGHTBAR_PRESENT = "OffroadLightbarPresent"
291-
ORIGIN_LOCATION = "OriginLocation"
292-
OUTSIDE_TEMP = "OutsideTemp"
293-
PACK_CURRENT = "PackCurrent"
294-
PACK_VOLTAGE = "PackVoltage"
295-
PAIRED_PHONE_KEY_AND_KEY_FOB_QTY = "PairedPhoneKeyAndKeyFobQty"
296-
PASSENGER_SEAT_BELT = "PassengerSeatBelt"
297-
PEDAL_POSITION = "PedalPosition"
298-
PIN_TO_DRIVE_ENABLED = "PinToDriveEnabled"
299-
POWERSHARE_HOURS_LEFT = "PowershareHoursLeft"
300-
POWERSHARE_INSTANTANEOUS_POWER_KW = "PowershareInstantaneousPowerKW"
301-
POWERSHARE_STATUS = "PowershareStatus"
302-
POWERSHARE_STOP_REASON = "PowershareStopReason"
303-
POWERSHARE_TYPE = "PowershareType"
304-
PRECONDITIONING_ENABLED = "PreconditioningEnabled"
305-
RATED_RANGE = "RatedRange"
306-
RD_WINDOW = "RdWindow"
307-
REAR_DISPLAY_HVAC_ENABLED = "RearDisplayHvacEnabled"
308-
REAR_SEAT_HEATERS = "RearSeatHeaters"
309-
REMOTE_START_ENABLED = "RemoteStartEnabled"
310-
RIGHT_HAND_DRIVE = "RightHandDrive"
311-
ROOF_COLOR = "RoofColor"
312-
ROUTE_LAST_UPDATED = "RouteLastUpdated"
313-
ROUTE_LINE = "RouteLine"
314-
ROUTE_TRAFFIC_MINUTES_DELAY = "RouteTrafficMinutesDelay"
315-
RP_WINDOW = "RpWindow"
316-
SCHEDULED_CHARGING_MODE = "ScheduledChargingMode"
317-
SCHEDULED_CHARGING_PENDING = "ScheduledChargingPending"
318-
SCHEDULED_CHARGING_START_TIME = "ScheduledChargingStartTime"
319-
SCHEDULED_DEPARTURE_TIME = "ScheduledDepartureTime"
320-
SEAT_HEATER_LEFT = "SeatHeaterLeft"
321-
SEAT_HEATER_REAR_CENTER = "SeatHeaterRearCenter"
322-
SEAT_HEATER_REAR_LEFT = "SeatHeaterRearLeft"
323-
SEAT_HEATER_REAR_RIGHT = "SeatHeaterRearRight"
324-
SEAT_HEATER_RIGHT = "SeatHeaterRight"
325-
SENTRY_MODE = "SentryMode"
326-
SERVICE_MODE = "ServiceMode"
327-
SOC = "Soc"
328-
SOFTWARE_UPDATE_DOWNLOAD_PERCENT_COMPLETE = "SoftwareUpdateDownloadPercentComplete"
329-
SOFTWARE_UPDATE_EXPECTED_DURATION_MINUTES = "SoftwareUpdateExpectedDurationMinutes"
330-
SOFTWARE_UPDATE_INSTALLATION_PERCENT_COMPLETE = "SoftwareUpdateInstallationPercentComplete"
331-
SOFTWARE_UPDATE_SCHEDULED_START_TIME = "SoftwareUpdateScheduledStartTime"
332-
SOFTWARE_UPDATE_VERSION = "SoftwareUpdateVersion"
333-
SPEED_LIMIT_MODE = "SpeedLimitMode"
334-
SPEED_LIMIT_WARNING = "SpeedLimitWarning"
335-
SUPERCHARGER_SESSION_TRIP_PLANNER = "SuperchargerSessionTripPlanner"
336-
TIME_TO_FULL_CHARGE = "TimeToFullCharge"
337-
TONNEAU_OPEN_PERCENT = "TonneauOpenPercent"
338-
TONNEAU_POSITION = "TonneauPosition"
339-
TONNEAU_TENT_MODE = "TonneauTentMode"
340-
TPMS_HARD_WARNINGS = "TpmsHardWarnings"
341-
TPMS_LAST_SEEN_PRESSURE_TIME_FL = "TpmsLastSeenPressureTimeFl"
342-
TPMS_LAST_SEEN_PRESSURE_TIME_FR = "TpmsLastSeenPressureTimeFr"
343-
TPMS_LAST_SEEN_PRESSURE_TIME_RL = "TpmsLastSeenPressureTimeRl"
344-
TPMS_LAST_SEEN_PRESSURE_TIME_RR = "TpmsLastSeenPressureTimeRr"
345-
TPMS_PRESSURE_FL = "TpmsPressureFl"
346-
TPMS_PRESSURE_FR = "TpmsPressureFr"
347-
TPMS_PRESSURE_RL = "TpmsPressureRl"
348-
TPMS_PRESSURE_RR = "TpmsPressureRr"
349-
TPMS_SOFT_WARNINGS = "TpmsSoftWarnings"
350-
TRIM = "Trim"
351-
VALET_MODE_ENABLED = "ValetModeEnabled"
352-
VEHICLE_NAME = "VehicleName"
353-
VEHICLE_SPEED = "VehicleSpeed"
354-
VERSION = "Version"
355-
WHEEL_TYPE = "WheelType"
356-
WIPER_HEAT_ENABLED = "WiperHeatEnabled"
357-
LOCATED_AT_HOME = "LocatedAtHome"
358-
LOCATED_AT_WORK = "LocatedAtWork"
359-
LOCATED_AT_FAVORITE = "LocatedAtFavorite"
360-
SETTING_DISTANCE_UNIT = "SettingDistanceUnit"
361-
SETTING_TEMPERATURE_UNIT = "SettingTemperatureUnit"
362-
SETTING_24_HOUR_TIME = "Setting24HourTime"
363-
SETTING_TIRE_PRESSURE_UNIT = "SettingTirePressureUnit"
364-
SETTING_CHARGE_UNIT = "SettingChargeUnit"
365-
CLIMATE_SEAT_COOLING_FRONT_LEFT = "ClimateSeatCoolingFrontLeft"
366-
CLIMATE_SEAT_COOLING_FRONT_RIGHT = "ClimateSeatCoolingFrontRight"
367-
368-
369-
370-
class TelemetryAlert(StrEnum):
371-
"""Alerts available in telemetry streams"""
372-
373-
CUSTOMER = "Customer"
374-
SERVICE = "Service"
375-
SERVICE_FIX = "ServiceFix"
376-
377-
378154
class TeslaEnergyPeriod(StrEnum):
379155
"""Period for history for energy sites"""
380156

tesla_fleet_api/teslemetry/teslemetry.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
from ..tesla import TeslaFleetApi
1111

1212
class Teslemetry(TeslaFleetApi):
13+
14+
server = "https://api.teslemetry.com"
15+
1316
def __init__(
1417
self,
1518
session: aiohttp.ClientSession,

tesla_fleet_api/teslemetry/vehicle.py

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from ..tesla.vehicle.fleet import VehicleFleet
1010

1111
if TYPE_CHECKING:
12-
from tesla_fleet_api.teslemetry.teslemetry import Teslemetry
12+
from .teslemetry import Teslemetry
1313

1414
class TeslemetryVehicle(Vehicle):
1515
"""Teslemetry specific base vehicle."""
@@ -50,18 +50,6 @@ async def data_refresh(self) -> dict[str, Any]:
5050
f"api/refresh/{self.vin}",
5151
)
5252

53-
class TeslemetryVehicleBluetooth(VehicleBluetooth):
54-
"""Teslemetry specific Bluetooth vehicle."""
55-
56-
_hmacs: dict[Domain, bytes]
57-
_require_keys = False
58-
59-
def __init__(
60-
self, parent: Teslemetry, vin: str
61-
):
62-
super().__init__(parent, vin)
63-
self._request = parent._request
64-
6553

6654
class TeslemetryVehicles(Vehicles):
6755
"""Class containing and creating vehicles."""
@@ -80,6 +68,6 @@ def createSigned(self, vin: str):
8068
"""Creates a specific vehicle."""
8169
raise NotImplementedError("Signing is handled by Teslemetry server-side")
8270

83-
def createBluetooth(self, vin: str) -> TeslemetryVehicleBluetooth:
71+
def createBluetooth(self, vin: str):
8472
"""Creates a specific vehicle."""
8573
raise NotImplementedError("Bluetooth is only handled locally")

tesla_fleet_api/tessie/tessie.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,31 @@
11
import aiohttp
22
from typing import Any
3+
4+
from ..tesla.charging import Charging
5+
from ..tesla.energysite import EnergySites
6+
from ..tesla.user import User
37
from ..tesla import TeslaFleetApi
48
from ..const import Method
9+
from .vehicle import TessieVehicles
510

611
class Tessie(TeslaFleetApi):
12+
13+
server="https://api.tessie.com"
14+
715
def __init__(
816
self,
917
session: aiohttp.ClientSession,
1018
access_token: str,
1119
):
1220
"""Initialize the Tessie API."""
13-
super().__init__(
14-
session,
15-
access_token,
16-
server="https://api.tessie.com",
17-
partner_scope=False,
18-
user_scope=False,
19-
)
21+
22+
self.session = session
23+
self.access_token = access_token
24+
25+
self.charging = Charging(self)
26+
self.energySites = EnergySites(self)
27+
self.user = User(self)
28+
self.vehicle = TessieVehicles(self)
2029

2130
async def scopes(self) -> list[str]:
2231
"""Get user scopes."""

tesla_fleet_api/tessie/vehicle.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from __future__ import annotations
2+
from typing import TYPE_CHECKING, Any
3+
4+
from ..const import Method
5+
from ..tesla.vehicle.proto.universal_message_pb2 import Domain
6+
from ..tesla.vehicle.vehicle import Vehicle
7+
from ..tesla.vehicle.vehicles import Vehicles
8+
from ..tesla.vehicle.bluetooth import VehicleBluetooth
9+
from ..tesla.vehicle.fleet import VehicleFleet
10+
11+
if TYPE_CHECKING:
12+
from .tessie import Tessie
13+
14+
class TessieVehicle(Vehicle):
15+
"""Tessie specific base vehicle."""
16+
pass
17+
18+
class TessieVehicleFleet(VehicleFleet):
19+
"""Tessie specific API vehicle."""
20+
pass
21+
22+
class TessieVehicles(Vehicles):
23+
"""Class containing and creating vehicles."""
24+
25+
def create(self, vin: str) -> TessieVehicleFleet:
26+
"""Creates a specific vehicle."""
27+
return self.createFleet(vin)
28+
29+
def createFleet(self, vin: str) -> TessieVehicleFleet:
30+
"""Creates a specific vehicle."""
31+
vehicle = TessieVehicleFleet(self._parent, vin)
32+
self[vin] = vehicle
33+
return vehicle
34+
35+
def createSigned(self, vin: str):
36+
"""Creates a specific vehicle."""
37+
raise NotImplementedError("Signing is handled by Tessie server-side")
38+
39+
def createBluetooth(self, vin: str):
40+
"""Creates a specific vehicle."""
41+
raise NotImplementedError("Bluetooth is only handled locally")

0 commit comments

Comments
 (0)