tesla-fleet-api 0.9.7__py3-none-any.whl → 0.9.9__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 CHANGED
@@ -3,7 +3,7 @@
3
3
  from enum import Enum
4
4
  import logging
5
5
 
6
- VERSION = "0.9.7"
6
+ VERSION = "0.9.9"
7
7
  LOGGER = logging.getLogger(__package__)
8
8
  SERVERS = {
9
9
  "na": "https://fleet-api.prd.na.vn.cloud.tesla.com",
@@ -91,15 +91,15 @@ class TeslaFleetApi:
91
91
  method: Method,
92
92
  path: str,
93
93
  params: dict[str, Any] | None = None,
94
- json: dict[str, Any] | None = None,
94
+ json: dict[str, Any] | None = {},
95
95
  ) -> dict[str, Any]:
96
96
  """Send a request to the Tesla Fleet API."""
97
97
 
98
98
  if not self.server:
99
99
  raise ValueError("Server was not set at init. Call find_server() first.")
100
100
 
101
- if method == Method.GET and json is not None:
102
- raise ValueError("GET requests cannot have a body.")
101
+ if method == Method.GET:
102
+ json = None
103
103
 
104
104
  # Call a pre-request hook if provided
105
105
  if self.refresh_hook is not None:
@@ -791,3 +791,88 @@ class Vehicle:
791
791
  return await self._request(
792
792
  Method.DELETE, f"api/1/vehicles/{vehicle_tag}/fleet_telemetry_config"
793
793
  )
794
+
795
+ async def add_charge_schedule(
796
+ self,
797
+ vehicle_tag: str | int,
798
+ days_of_week: str,
799
+ enabled: bool,
800
+ lat: float,
801
+ lon: float,
802
+ start_time: int | None = None,
803
+ end_time: int | None = None,
804
+ one_time: bool | None = None,
805
+ id: int | None = None,
806
+
807
+ ) -> dict[str, Any]:
808
+ """Add a schedule for vehicle charging."""
809
+ if not start_time and not end_time:
810
+ raise ValueError("Either start_time or end_time or both must be provided")
811
+ json_payload = {
812
+ "days_of_week": days_of_week,
813
+ "enabled": enabled,
814
+ "end_enabled": end_time is not None,
815
+ "lat": lat,
816
+ "lon": lon,
817
+ "start_enabled": start_time is not None,
818
+ }
819
+ if start_time is not None:
820
+ json_payload["start_time"] = start_time
821
+ if end_time is not None:
822
+ json_payload["end_time"] = end_time
823
+ if id is not None:
824
+ json_payload["id"] = id
825
+ if one_time is not None:
826
+ json_payload["one_time"] = one_time
827
+
828
+ return await self._request(
829
+ Method.POST,
830
+ f"api/1/vehicles/{vehicle_tag}/command/add_charge_schedule",
831
+ json=json_payload,
832
+ )
833
+
834
+ async def add_precondition_schedule(
835
+ self,
836
+ vehicle_tag: str | int,
837
+ days_of_week: str,
838
+ enabled: bool,
839
+ lat: float,
840
+ lon: float,
841
+ precondition_time: int,
842
+ id: int | None = None,
843
+ one_time: bool | None = None,
844
+ ) -> dict[str, Any]:
845
+ """Add or modify a preconditioning schedule."""
846
+ json_payload = {
847
+ "days_of_week": days_of_week,
848
+ "enabled": enabled,
849
+ "lat": lat,
850
+ "lon": lon,
851
+ "precondition_time": precondition_time,
852
+ }
853
+ if id is not None:
854
+ json_payload["id"] = id
855
+ if one_time is not None:
856
+ json_payload["one_time"] = one_time
857
+
858
+ return await self._request(
859
+ Method.POST,
860
+ f"api/1/vehicles/{vehicle_tag}/command/add_precondition_schedule",
861
+ json=json_payload,
862
+ )
863
+
864
+ async def remove_charge_schedule(
865
+ self, vehicle_tag: str | int, id: int
866
+ ) -> dict[str, Any]:
867
+ """Removes the scheduled charging settings."""
868
+ return await self._request(
869
+ Method.POST, f"api/1/vehicles/{vehicle_tag}/command/remove_charge_schedule", json={"id": id}
870
+ )
871
+
872
+ async def remove_precondition_schedule(
873
+ self, vehicle_tag: str | int, id: int
874
+ ) -> dict[str, Any]:
875
+ """Removes the scheduled precondition settings."""
876
+ return await self._request(
877
+ Method.POST, f"api/1/vehicles/{vehicle_tag}/command/remove_precondition_schedule", json={"id": id}
878
+ )
@@ -449,3 +449,57 @@ class VehicleSpecific:
449
449
  async def fleet_telemetry_config_delete(self) -> dict[str, Any]:
450
450
  """Configures fleet telemetry."""
451
451
  return await self._parent.fleet_telemetry_config_delete(self.vin)
452
+
453
+ async def add_charge_schedule(
454
+ self,
455
+ days_of_week: str,
456
+ enabled: bool,
457
+ lat: float,
458
+ lon: float,
459
+ start_time: int | None = None,
460
+ end_time: int | None = None,
461
+ one_time: bool | None = None,
462
+ id: int | None = None,
463
+ ) -> dict[str, Any]:
464
+ """Adds a scheduled charging setting."""
465
+ return await self._parent.add_charge_schedule(
466
+ self.vin,
467
+ days_of_week,
468
+ enabled,
469
+ lat,
470
+ lon,
471
+ start_time,
472
+ end_time,
473
+ one_time,
474
+ id,
475
+ )
476
+
477
+ async def add_precondition_schedule(
478
+ self,
479
+ days_of_week: str,
480
+ enabled: bool,
481
+ lat: float,
482
+ lon: float,
483
+ precondition_time: int,
484
+ id: int | None = None,
485
+ one_time: bool | None = None,
486
+ ) -> dict[str, Any]:
487
+ """Adds a scheduled precondition setting."""
488
+ return await self._parent.add_precondition_schedule(
489
+ self.vin,
490
+ days_of_week,
491
+ enabled,
492
+ lat,
493
+ lon,
494
+ precondition_time,
495
+ id,
496
+ one_time,
497
+ )
498
+
499
+ async def remove_charge_schedule(self, id: int) -> dict[str, Any]:
500
+ """Removes the scheduled charging settings."""
501
+ return await self._parent.remove_charge_schedule(self.vin, id)
502
+
503
+ async def remove_precondition_schedule(self, id: int) -> dict[str, Any]:
504
+ """Removes the scheduled precondition settings."""
505
+ return await self._parent.remove_precondition_schedule(self.vin, id)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tesla_fleet_api
3
- Version: 0.9.7
3
+ Version: 0.9.9
4
4
  Summary: Tesla Fleet API library for Python
5
5
  Home-page: https://github.com/Teslemetry/python-tesla-fleet-api
6
6
  Author: Brett Adams
@@ -1,20 +1,20 @@
1
1
  tesla_fleet_api/__init__.py,sha256=BVZUDsfaxT05tAfcMHHWiyFyXwmDOx_wP_IHZBscgho,729
2
2
  tesla_fleet_api/charging.py,sha256=N_mc8axrXj3iduqLj_jCt4Vx86tHqe3xqQT4R1R7HvU,1689
3
- tesla_fleet_api/const.py,sha256=mXVzA4arIzrL9WOnfvqEtf2ImNnje36hG7kJkHKRpXc,12888
3
+ tesla_fleet_api/const.py,sha256=rKbU1HbadpELyCe1aRNHMwTO-cfBfoVTzmwnxf2R9ew,12888
4
4
  tesla_fleet_api/energy.py,sha256=S7D75MPuMVsHgkyUcFfMqjGCLZBM5YVFlWLEHbaX-zw,5957
5
5
  tesla_fleet_api/energyspecific.py,sha256=UfeaGE59aoAa8UhpQCXUi0sOrNCA40xZlqwF73BXTVY,4254
6
6
  tesla_fleet_api/exceptions.py,sha256=qnRWqPJ_5gia4-j3o4mP5OwUuBRtC3SAbZKo-_XSRiI,29729
7
7
  tesla_fleet_api/partner.py,sha256=1vIBUaxKLIfqcC0X6VXZN0dMAzj_CLNPUMjA6QVqZ1k,1223
8
8
  tesla_fleet_api/ratecalculator.py,sha256=4lz8yruUeouHXh_3ezsXX-CTpIegp1T1J4VuRV_qdHA,1791
9
- tesla_fleet_api/teslafleetapi.py,sha256=8j-kvV6_oCuIlDdS5kWlCbo9chWsT48Gn2iKt3uOAjg,7409
9
+ tesla_fleet_api/teslafleetapi.py,sha256=39g52Q7C__ijOOgGy2EHvvNKwqCTu7zn9MIdTRCHmak,7345
10
10
  tesla_fleet_api/teslafleetoauth.py,sha256=NmzycAeg68sWASjiWan3B5LdIgrfmoLTDqLHYCmoKKg,4108
11
11
  tesla_fleet_api/teslafleetopensource.py,sha256=TJfVPcqJlA1b3kMoGuLr-g5Gn8UDyYsTZhjvGY1MtIk,2007
12
12
  tesla_fleet_api/teslemetry.py,sha256=_n59RQvJKl82ylLe09bLY_8iyfjz_DHqCdRVsWeif4s,3308
13
13
  tesla_fleet_api/tessie.py,sha256=4dBYxe1G2v9JvJGRbb01wXrAmvWT4jOfV4f_VQE_vkE,2302
14
14
  tesla_fleet_api/user.py,sha256=TZE2oh-n5zrhKXmGRuiNL9voKVODD7rBhGE_IObYVGA,1179
15
- tesla_fleet_api/vehicle.py,sha256=mSFJG-bLBNh_iSJnruk9EZSypZUxMpKwMgKA9_8CPDc,32146
15
+ tesla_fleet_api/vehicle.py,sha256=idgsWnLCbrnMLNSRUR-gw2tug2TYEUi4AzFDqYzVur0,34961
16
16
  tesla_fleet_api/vehiclesigned.py,sha256=uwfX3MwPAtn5Otf5jUwSGuKWDVbswd3dDnNjPoxoYrM,41863
17
- tesla_fleet_api/vehiclespecific.py,sha256=P7KI8MqUbAyM2cfDC8NqbJXzGL2ZsOIx3IBeqB8xYQY,20656
17
+ tesla_fleet_api/vehiclespecific.py,sha256=L9vmqaH0UJ9p7RQXMT1kfOtVL2jWxzZcHxKcYmC-eyQ,22247
18
18
  tesla_fleet_api/pb2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  tesla_fleet_api/pb2/__init__.pyi,sha256=qFXWNIgl71wB260u-XPzaAwWAHL6krw21q-aXnBtop0,252
20
20
  tesla_fleet_api/pb2/car_server_pb2.py,sha256=v_eb4NDIkx_ZYPYW29_EFRky5vQ4b2q14gwuQSbouYw,29202
@@ -35,8 +35,8 @@ tesla_fleet_api/pb2/vcsec_pb2.py,sha256=PDv9TfiXnNs6sQ0D5vBrsSSPinSqu3eBUwvTcG8x
35
35
  tesla_fleet_api/pb2/vcsec_pb2.pyi,sha256=cyK1uyRtDjRVqVlyl5uRQYY1RhFlWSJheLg3PGfs-_s,28524
36
36
  tesla_fleet_api/pb2/vehicle_pb2.py,sha256=bqyFJM-1qZ7W9XKREINhYZx8yXAudmq6W8_Pdfkhbkk,44711
37
37
  tesla_fleet_api/pb2/vehicle_pb2.pyi,sha256=sAUW_9aVB8NqJCnhZjXMLfqfePLVZv_7PfSKZKEBaQA,74251
38
- tesla_fleet_api-0.9.7.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
39
- tesla_fleet_api-0.9.7.dist-info/METADATA,sha256=kzwE1qQtPqXFC5sWlf4bvF9wA4f9tpqan5b10uEganA,4022
40
- tesla_fleet_api-0.9.7.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
41
- tesla_fleet_api-0.9.7.dist-info/top_level.txt,sha256=jeNbog_1saXBFrGpom9WyPWmilxsyP3szL_G7JLWQfM,16
42
- tesla_fleet_api-0.9.7.dist-info/RECORD,,
38
+ tesla_fleet_api-0.9.9.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
39
+ tesla_fleet_api-0.9.9.dist-info/METADATA,sha256=z_-mVNY1ceIhV6W0x9cQVGCNOXfjI4tTajjBL05M9ZQ,4022
40
+ tesla_fleet_api-0.9.9.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
41
+ tesla_fleet_api-0.9.9.dist-info/top_level.txt,sha256=jeNbog_1saXBFrGpom9WyPWmilxsyP3szL_G7JLWQfM,16
42
+ tesla_fleet_api-0.9.9.dist-info/RECORD,,