tesla-fleet-api 1.0.0__py3-none-any.whl → 1.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tesla_fleet_api/const.py +1 -1
- tesla_fleet_api/tesla/bluetooth.py +6 -1
- tesla_fleet_api/tesla/vehicle/__init__.py +13 -0
- tesla_fleet_api/tesla/vehicle/bluetooth.py +219 -0
- tesla_fleet_api/tesla/vehicle/commands.py +1286 -0
- tesla_fleet_api/tesla/vehicle/fleet.py +847 -0
- tesla_fleet_api/tesla/vehicle/proto/__init__.py +0 -0
- tesla_fleet_api/tesla/vehicle/proto/__init__.pyi +9 -0
- tesla_fleet_api/tesla/vehicle/proto/car_server_pb2.py +175 -0
- tesla_fleet_api/tesla/vehicle/proto/car_server_pb2.pyi +904 -0
- tesla_fleet_api/tesla/vehicle/proto/common_pb2.py +33 -0
- tesla_fleet_api/tesla/vehicle/proto/common_pb2.pyi +130 -0
- tesla_fleet_api/tesla/vehicle/proto/errors_pb2.py +17 -0
- tesla_fleet_api/tesla/vehicle/proto/errors_pb2.pyi +32 -0
- tesla_fleet_api/tesla/vehicle/proto/keys_pb2.py +15 -0
- tesla_fleet_api/tesla/vehicle/proto/keys_pb2.pyi +21 -0
- tesla_fleet_api/tesla/vehicle/proto/managed_charging_pb2.py +15 -0
- tesla_fleet_api/tesla/vehicle/proto/managed_charging_pb2.pyi +17 -0
- tesla_fleet_api/tesla/vehicle/proto/signatures_pb2.py +35 -0
- tesla_fleet_api/tesla/vehicle/proto/signatures_pb2.pyi +152 -0
- tesla_fleet_api/tesla/vehicle/proto/universal_message_pb2.py +30 -0
- tesla_fleet_api/tesla/vehicle/proto/universal_message_pb2.pyi +148 -0
- tesla_fleet_api/tesla/vehicle/proto/vcsec_pb2.py +79 -0
- tesla_fleet_api/tesla/vehicle/proto/vcsec_pb2.pyi +482 -0
- tesla_fleet_api/tesla/vehicle/proto/vehicle_pb2.py +125 -0
- tesla_fleet_api/tesla/vehicle/proto/vehicle_pb2.pyi +1183 -0
- tesla_fleet_api/tesla/vehicle/signed.py +56 -0
- tesla_fleet_api/tesla/vehicle/vehicle.py +19 -0
- tesla_fleet_api/tesla/vehicle/vehicles.py +46 -0
- {tesla_fleet_api-1.0.0.dist-info → tesla_fleet_api-1.0.1.dist-info}/METADATA +1 -1
- tesla_fleet_api-1.0.1.dist-info/RECORD +51 -0
- tesla_fleet_api-1.0.0.dist-info/RECORD +0 -24
- {tesla_fleet_api-1.0.0.dist-info → tesla_fleet_api-1.0.1.dist-info}/LICENSE +0 -0
- {tesla_fleet_api-1.0.0.dist-info → tesla_fleet_api-1.0.1.dist-info}/WHEEL +0 -0
- {tesla_fleet_api-1.0.0.dist-info → tesla_fleet_api-1.0.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,56 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
import base64
|
4
|
+
from typing import TYPE_CHECKING
|
5
|
+
|
6
|
+
from .fleet import VehicleFleet
|
7
|
+
from .commands import Commands
|
8
|
+
|
9
|
+
from ...exceptions import (
|
10
|
+
MESSAGE_FAULTS,
|
11
|
+
)
|
12
|
+
from .proto.signatures_pb2 import (
|
13
|
+
SessionInfo,
|
14
|
+
)
|
15
|
+
from .proto.universal_message_pb2 import (
|
16
|
+
RoutableMessage,
|
17
|
+
)
|
18
|
+
|
19
|
+
if TYPE_CHECKING:
|
20
|
+
from ..fleet import TeslaFleetApi
|
21
|
+
|
22
|
+
|
23
|
+
class VehicleSigned(VehicleFleet, Commands):
|
24
|
+
"""Class describing the Tesla Fleet API vehicle endpoints and commands for a specific vehicle with command signing."""
|
25
|
+
|
26
|
+
|
27
|
+
_auth_method = "hmac"
|
28
|
+
|
29
|
+
def __init__(self, parent: TeslaFleetApi, vin: str):
|
30
|
+
"""Initialize the VehicleSigned class."""
|
31
|
+
super().__init__(parent, vin)
|
32
|
+
super(Commands, self).__init__(parent, vin)
|
33
|
+
|
34
|
+
|
35
|
+
async def _send(self, msg: RoutableMessage) -> RoutableMessage:
|
36
|
+
"""Serialize a message and send to the signed command endpoint."""
|
37
|
+
|
38
|
+
async with self._sessions[msg.to_destination.domain].lock:
|
39
|
+
resp = await self.signed_command(
|
40
|
+
base64.b64encode(msg.SerializeToString()).decode()
|
41
|
+
)
|
42
|
+
|
43
|
+
resp_msg = RoutableMessage.FromString(base64.b64decode(resp["response"]))
|
44
|
+
|
45
|
+
# Check UUID?
|
46
|
+
# Check RoutingAdress?
|
47
|
+
|
48
|
+
if resp_msg.session_info:
|
49
|
+
self._sessions[resp_msg.from_destination.domain].update(
|
50
|
+
SessionInfo.FromString(resp_msg.session_info), self.private_key
|
51
|
+
)
|
52
|
+
|
53
|
+
if resp_msg.signedMessageStatus.signed_message_fault:
|
54
|
+
raise MESSAGE_FAULTS[resp_msg.signedMessageStatus.signed_message_fault]
|
55
|
+
|
56
|
+
return resp_msg
|
@@ -0,0 +1,19 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
from typing import TYPE_CHECKING
|
3
|
+
|
4
|
+
|
5
|
+
if TYPE_CHECKING:
|
6
|
+
from ..tesla import Tesla
|
7
|
+
|
8
|
+
|
9
|
+
class Vehicle:
|
10
|
+
"""Base class describing a Tesla vehicle."""
|
11
|
+
|
12
|
+
vin: str
|
13
|
+
|
14
|
+
def __init__(self, parent: Tesla, vin: str):
|
15
|
+
self.vin = vin
|
16
|
+
|
17
|
+
def pre2021(self, vin: str) -> bool:
|
18
|
+
"""Checks if a vehicle is a pre-2021 model S or X."""
|
19
|
+
return vin[3] in ["S", "X"] and (vin[9] <= "L" or (vin[9] == "M" and vin[7] in ['1', '2', '3', '4']))
|
@@ -0,0 +1,46 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
from typing import TYPE_CHECKING
|
3
|
+
|
4
|
+
from .signed import VehicleSigned
|
5
|
+
from .bluetooth import VehicleBluetooth
|
6
|
+
from .fleet import VehicleFleet
|
7
|
+
from .vehicle import Vehicle
|
8
|
+
|
9
|
+
if TYPE_CHECKING:
|
10
|
+
from ..fleet import TeslaFleetApi
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
class Vehicles(dict[str, Vehicle]):
|
15
|
+
"""Class containing and creating vehicles."""
|
16
|
+
|
17
|
+
_parent: TeslaFleetApi
|
18
|
+
|
19
|
+
def __init__(self, parent: TeslaFleetApi):
|
20
|
+
self._parent = parent
|
21
|
+
|
22
|
+
def createFleet(self, vin: str) -> VehicleFleet:
|
23
|
+
"""Creates a Fleet API vehicle."""
|
24
|
+
vehicle = VehicleFleet(self._parent, vin)
|
25
|
+
self[vin] = vehicle
|
26
|
+
return vehicle
|
27
|
+
|
28
|
+
def createSigned(self, vin: str) -> VehicleSigned:
|
29
|
+
"""Creates a Fleet API vehicle that uses command protocol."""
|
30
|
+
vehicle = VehicleSigned(self._parent, vin)
|
31
|
+
self[vin] = vehicle
|
32
|
+
return vehicle
|
33
|
+
|
34
|
+
def createBluetooth(self, vin: str) -> VehicleBluetooth:
|
35
|
+
"""Creates a bluetooth vehicle that uses command protocol."""
|
36
|
+
vehicle = VehicleBluetooth(self._parent, vin)
|
37
|
+
self[vin] = vehicle
|
38
|
+
return vehicle
|
39
|
+
|
40
|
+
def specific(self, vin: str) -> Vehicle:
|
41
|
+
"""Legacy method for creating a Fleet API vehicle."""
|
42
|
+
return self.createFleet(vin)
|
43
|
+
|
44
|
+
def specificSigned(self, vin: str) -> VehicleSigned:
|
45
|
+
"""Legacy method for creating a Fleet API vehicle that uses command protocol."""
|
46
|
+
return self.createSigned(vin)
|
@@ -0,0 +1,51 @@
|
|
1
|
+
tesla_fleet_api/__init__.py,sha256=FewtEncMLxOZa3dVA3SsT3tY--RMNF9-GXIpOTkbXvk,396
|
2
|
+
tesla_fleet_api/const.py,sha256=8KPO_bQbwwspp1Gm-DrHt4EsuQQSFsp1n9yMk0b2hZA,3158
|
3
|
+
tesla_fleet_api/exceptions.py,sha256=nTo9MIJrAxL-UxzbrMrr00QhSvrLaSc6ee00Ko9pB1Q,34213
|
4
|
+
tesla_fleet_api/ratecalculator.py,sha256=4lz8yruUeouHXh_3ezsXX-CTpIegp1T1J4VuRV_qdHA,1791
|
5
|
+
tesla_fleet_api/tesla/__init__.py,sha256=sWIkVh4lesdp5eGQPC9Hjk_eoyN1_g9zz7vpMsJzTgo,219
|
6
|
+
tesla_fleet_api/tesla/bluetooth.py,sha256=7L6U8_xr2JiAX2YJOCLcsCOD7NkGdLLSf3-qnopHQtg,1092
|
7
|
+
tesla_fleet_api/tesla/charging.py,sha256=9zNSFi9vo8v03KQRKyosO5me49_tDrg3_25BRZibfQ0,1690
|
8
|
+
tesla_fleet_api/tesla/energysite.py,sha256=jauUrh14LL-EaMruxhye1YsNHjtTMmgCl1HCf_8mBeI,6070
|
9
|
+
tesla_fleet_api/tesla/fleet.py,sha256=NCkHLd-ddpa0wkSu_CEOG7ru9ea5HTLXud4lvkh3DWM,5516
|
10
|
+
tesla_fleet_api/tesla/oauth.py,sha256=pFGtIcERjsNKrO5VUEHm8WsNo1xF4DVbx3Yt2MhlGPQ,4070
|
11
|
+
tesla_fleet_api/tesla/partner.py,sha256=TU3Xg18x2w3PHv6Dy3Mo40pb417pp5lqnF0c1vDCt6g,1224
|
12
|
+
tesla_fleet_api/tesla/tesla.py,sha256=Jlz90-fM0nJbhnQN0k3ukNv59-9KqZZbyQ91IiLIbfo,2010
|
13
|
+
tesla_fleet_api/tesla/user.py,sha256=1LVwarEU-wmkqkPw0LGvNiPRy6uGRZkYL-vr17sz51M,1180
|
14
|
+
tesla_fleet_api/tesla/vehicle/__init__.py,sha256=luJKFuTGxmo4ef4tURaZgYwdkmWqCQrjxKogQzlFBtI,265
|
15
|
+
tesla_fleet_api/tesla/vehicle/bluetooth.py,sha256=QjnFT4UYNsS4UWD_Spq-2T6Qlh4HnVCX_1ZCS18XjT8,8153
|
16
|
+
tesla_fleet_api/tesla/vehicle/commands.py,sha256=INHps_29kPjblFSFJdQCrf2Ob3tURy6J9pO85NbGDVU,46874
|
17
|
+
tesla_fleet_api/tesla/vehicle/fleet.py,sha256=j9jGE6kGUnmlO6kvB2CBJcwaEPaJ-CGxP7Cgv2AI9AU,32018
|
18
|
+
tesla_fleet_api/tesla/vehicle/signed.py,sha256=lhf_zzMc9xL9P2S8GC7IQC-CEVkQNUIrT_gR8AvODCc,1659
|
19
|
+
tesla_fleet_api/tesla/vehicle/vehicle.py,sha256=kbL6o-doro5wD-pMBbFcphfSUz1jNApfAUDEZmleKNs,485
|
20
|
+
tesla_fleet_api/tesla/vehicle/vehicles.py,sha256=gG7I9tCr3-fag5DSLK2lXayBpjbgEpE61DeDzJZs4f8,1449
|
21
|
+
tesla_fleet_api/tesla/vehicle/proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
+
tesla_fleet_api/tesla/vehicle/proto/__init__.pyi,sha256=qFXWNIgl71wB260u-XPzaAwWAHL6krw21q-aXnBtop0,252
|
23
|
+
tesla_fleet_api/tesla/vehicle/proto/car_server_pb2.py,sha256=v_eb4NDIkx_ZYPYW29_EFRky5vQ4b2q14gwuQSbouYw,29202
|
24
|
+
tesla_fleet_api/tesla/vehicle/proto/car_server_pb2.pyi,sha256=qkig9HEsOE4Dk2-r38BAWOyALqt7CtUnlirgSVt_oa8,46334
|
25
|
+
tesla_fleet_api/tesla/vehicle/proto/common_pb2.py,sha256=C5O6BBTckU3F-XItLfivaPG_XVCnzF_JX4mpVfM_jFk,3931
|
26
|
+
tesla_fleet_api/tesla/vehicle/proto/common_pb2.pyi,sha256=8aZiigp74MfSOMpHtMw0D9Jj0kwPz1zV_BIZfVWhh_0,5012
|
27
|
+
tesla_fleet_api/tesla/vehicle/proto/errors_pb2.py,sha256=nfOvriyjVgVxnJZIAYNRHiBa1_14dOXhC9Pokc5anV8,1631
|
28
|
+
tesla_fleet_api/tesla/vehicle/proto/errors_pb2.pyi,sha256=CNsAR7Oe6wavnqjzhInEyAFxMio6TtXfaNT0DUztn6o,1478
|
29
|
+
tesla_fleet_api/tesla/vehicle/proto/keys_pb2.py,sha256=-hyVP9-W1DypTYLaWwkOSUzgia6l9R3M9wUIgvNs-T0,1252
|
30
|
+
tesla_fleet_api/tesla/vehicle/proto/keys_pb2.pyi,sha256=HH-TfhE5ihwmoPCGdiVnZ5B7KkaMJglEpusgLc1J02M,676
|
31
|
+
tesla_fleet_api/tesla/vehicle/proto/managed_charging_pb2.py,sha256=4crkLo6uC0YPkgw90jRjAqlGMFnRze_koUt2-pw14m4,1430
|
32
|
+
tesla_fleet_api/tesla/vehicle/proto/managed_charging_pb2.pyi,sha256=SqEmrfknTfzYTUYHtsoCpt1Fw2YpU3OyQllX247UfyQ,1227
|
33
|
+
tesla_fleet_api/tesla/vehicle/proto/signatures_pb2.py,sha256=TRaJ6lzmJtryhhmBC_PbYzftc-pqCmwC6wuBCXHeuTg,4734
|
34
|
+
tesla_fleet_api/tesla/vehicle/proto/signatures_pb2.pyi,sha256=-OGm9ctBnEJiXk-3nkFCPRTxKgFiqFgMbKeq3x2zGGM,6101
|
35
|
+
tesla_fleet_api/tesla/vehicle/proto/universal_message_pb2.py,sha256=UklH73qoYsqxylie6IK8iIcw2tmykSqDiaBKSWz66OQ,5093
|
36
|
+
tesla_fleet_api/tesla/vehicle/proto/universal_message_pb2.pyi,sha256=a_RygTJL26v0rA7QuUwsxiG1_ZBcliwXCqOAqTIJ6UE,7647
|
37
|
+
tesla_fleet_api/tesla/vehicle/proto/vcsec_pb2.py,sha256=PDv9TfiXnNs6sQ0D5vBrsSSPinSqu3eBUwvTcG8xMWo,15919
|
38
|
+
tesla_fleet_api/tesla/vehicle/proto/vcsec_pb2.pyi,sha256=cyK1uyRtDjRVqVlyl5uRQYY1RhFlWSJheLg3PGfs-_s,28524
|
39
|
+
tesla_fleet_api/tesla/vehicle/proto/vehicle_pb2.py,sha256=bqyFJM-1qZ7W9XKREINhYZx8yXAudmq6W8_Pdfkhbkk,44711
|
40
|
+
tesla_fleet_api/tesla/vehicle/proto/vehicle_pb2.pyi,sha256=sAUW_9aVB8NqJCnhZjXMLfqfePLVZv_7PfSKZKEBaQA,74251
|
41
|
+
tesla_fleet_api/teslemetry/__init__.py,sha256=OnHrZEkPGVFrziwMA-vArvh5vgBn6vT_nMbIhjN49V0,68
|
42
|
+
tesla_fleet_api/teslemetry/teslemetry.py,sha256=BtV__OSenTg_dwM0aovbL--mv3HhIIWtoWHQp58sViQ,2990
|
43
|
+
tesla_fleet_api/teslemetry/vehicle.py,sha256=aCe4Vhs4WHd6OQ-gzdxsPubKF_C5aLBoHrDvzyVgucI,2277
|
44
|
+
tesla_fleet_api/tessie/__init__.py,sha256=UNsWgx5w0DJSIFcMd7jBBdSxklF3Vhubq9tSL8vfegg,56
|
45
|
+
tesla_fleet_api/tessie/tessie.py,sha256=Z6t-ulDL7zfBIAJ6L7EBUMux2iawWjR1cR4jvYIhVFg,2523
|
46
|
+
tesla_fleet_api/tessie/vehicle.py,sha256=C2Q0en3Uo3xtI2sU9jSHXUtYhgBrNJYYhl8gP2zVmfQ,1315
|
47
|
+
tesla_fleet_api-1.0.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
48
|
+
tesla_fleet_api-1.0.1.dist-info/METADATA,sha256=6wVdb-DMTVaAa9hKPrYQNjphXXMbE6Rabxf003sDSB8,4056
|
49
|
+
tesla_fleet_api-1.0.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
50
|
+
tesla_fleet_api-1.0.1.dist-info/top_level.txt,sha256=jeNbog_1saXBFrGpom9WyPWmilxsyP3szL_G7JLWQfM,16
|
51
|
+
tesla_fleet_api-1.0.1.dist-info/RECORD,,
|
@@ -1,24 +0,0 @@
|
|
1
|
-
tesla_fleet_api/__init__.py,sha256=FewtEncMLxOZa3dVA3SsT3tY--RMNF9-GXIpOTkbXvk,396
|
2
|
-
tesla_fleet_api/const.py,sha256=uyfy2ZOfFZd4sunTRiIuB3FtGxIzmO1VAcSRs1pztSY,3158
|
3
|
-
tesla_fleet_api/exceptions.py,sha256=nTo9MIJrAxL-UxzbrMrr00QhSvrLaSc6ee00Ko9pB1Q,34213
|
4
|
-
tesla_fleet_api/ratecalculator.py,sha256=4lz8yruUeouHXh_3ezsXX-CTpIegp1T1J4VuRV_qdHA,1791
|
5
|
-
tesla_fleet_api/tesla/__init__.py,sha256=sWIkVh4lesdp5eGQPC9Hjk_eoyN1_g9zz7vpMsJzTgo,219
|
6
|
-
tesla_fleet_api/tesla/bluetooth.py,sha256=H4LQwNJ4RwtKMWMwfHTOyG2om11MtvC9px0Go2GCRNE,915
|
7
|
-
tesla_fleet_api/tesla/charging.py,sha256=9zNSFi9vo8v03KQRKyosO5me49_tDrg3_25BRZibfQ0,1690
|
8
|
-
tesla_fleet_api/tesla/energysite.py,sha256=jauUrh14LL-EaMruxhye1YsNHjtTMmgCl1HCf_8mBeI,6070
|
9
|
-
tesla_fleet_api/tesla/fleet.py,sha256=NCkHLd-ddpa0wkSu_CEOG7ru9ea5HTLXud4lvkh3DWM,5516
|
10
|
-
tesla_fleet_api/tesla/oauth.py,sha256=pFGtIcERjsNKrO5VUEHm8WsNo1xF4DVbx3Yt2MhlGPQ,4070
|
11
|
-
tesla_fleet_api/tesla/partner.py,sha256=TU3Xg18x2w3PHv6Dy3Mo40pb417pp5lqnF0c1vDCt6g,1224
|
12
|
-
tesla_fleet_api/tesla/tesla.py,sha256=Jlz90-fM0nJbhnQN0k3ukNv59-9KqZZbyQ91IiLIbfo,2010
|
13
|
-
tesla_fleet_api/tesla/user.py,sha256=1LVwarEU-wmkqkPw0LGvNiPRy6uGRZkYL-vr17sz51M,1180
|
14
|
-
tesla_fleet_api/teslemetry/__init__.py,sha256=OnHrZEkPGVFrziwMA-vArvh5vgBn6vT_nMbIhjN49V0,68
|
15
|
-
tesla_fleet_api/teslemetry/teslemetry.py,sha256=BtV__OSenTg_dwM0aovbL--mv3HhIIWtoWHQp58sViQ,2990
|
16
|
-
tesla_fleet_api/teslemetry/vehicle.py,sha256=aCe4Vhs4WHd6OQ-gzdxsPubKF_C5aLBoHrDvzyVgucI,2277
|
17
|
-
tesla_fleet_api/tessie/__init__.py,sha256=UNsWgx5w0DJSIFcMd7jBBdSxklF3Vhubq9tSL8vfegg,56
|
18
|
-
tesla_fleet_api/tessie/tessie.py,sha256=Z6t-ulDL7zfBIAJ6L7EBUMux2iawWjR1cR4jvYIhVFg,2523
|
19
|
-
tesla_fleet_api/tessie/vehicle.py,sha256=C2Q0en3Uo3xtI2sU9jSHXUtYhgBrNJYYhl8gP2zVmfQ,1315
|
20
|
-
tesla_fleet_api-1.0.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
21
|
-
tesla_fleet_api-1.0.0.dist-info/METADATA,sha256=vmW8VMIM1jR6N_64JNBgkivup9NBaM9blKTkFULRDxY,4056
|
22
|
-
tesla_fleet_api-1.0.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
23
|
-
tesla_fleet_api-1.0.0.dist-info/top_level.txt,sha256=jeNbog_1saXBFrGpom9WyPWmilxsyP3szL_G7JLWQfM,16
|
24
|
-
tesla_fleet_api-1.0.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|