Skip to content

Commit ad88fd3

Browse files
committed
Add auto mode support
1 parent 16a6564 commit ad88fd3

File tree

4 files changed

+39
-8
lines changed

4 files changed

+39
-8
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setuptools.setup(
77
name="tesla_fleet_api",
8-
version="0.7.3",
8+
version="0.7.4",
99
author="Brett Adams",
1010
author_email="[email protected]",
1111
description="Tesla Fleet API library for Python",

tesla_fleet_api/const.py

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

6-
VERSION = "0.7.3"
6+
VERSION = "0.7.4"
77
LOGGER = logging.getLogger(__package__)
88
SERVERS = {
99
"na": "https://fleet-api.prd.na.vn.cloud.tesla.com",

tesla_fleet_api/teslafleetapi.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class TeslaFleetApi:
2222
server: str | None = None
2323
session: aiohttp.ClientSession
2424
headers: dict[str, str]
25-
refresh_hook: Awaitable | None
25+
refresh_hook: Awaitable | None = None
2626

2727
def __init__(
2828
self,

tesla_fleet_api/teslemetry.py

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,18 @@
22
from aiolimiter import AsyncLimiter
33
from typing import Any
44
from .teslafleetapi import TeslaFleetApi
5+
from .charging import Charging
6+
from .energy import Energy
7+
from .partner import Partner
8+
from .user import User
9+
from .vehicle import Vehicle
10+
from .vehiclespecific import VehicleSpecific
11+
512
from .const import Method, LOGGER, Scope
613

714
# Rate limit should be global, even if multiple instances are created
815
rate_limit = AsyncLimiter(5, 10)
916

10-
1117
class Teslemetry(TeslaFleetApi):
1218
def __init__(
1319
self,
@@ -16,11 +22,11 @@ def __init__(
1622
):
1723
"""Initialize the Teslemetry API."""
1824
super().__init__(
19-
session,
20-
access_token,
25+
session=session,
26+
access_token=access_token,
2127
server="https://api.teslemetry.com",
22-
partner_scope=False,
2328
user_scope=False,
29+
partner_scope=False
2430
)
2531
self.rate_limit = rate_limit
2632

@@ -38,6 +44,14 @@ async def test(self) -> dict[str, bool]:
3844
"api/test",
3945
)
4046

47+
async def userdata(self) -> dict[str, Any]:
48+
"""Get userdata."""
49+
resp = await self._request(
50+
Method.GET,
51+
"api/userdata",
52+
)
53+
return resp
54+
4155
async def metadata(self, update_region=True) -> dict[str, Any]:
4256
"""Get user metadata including scopes."""
4357
resp = await self._request(
@@ -49,7 +63,7 @@ async def metadata(self, update_region=True) -> dict[str, Any]:
4963
self.server = f"https://{self.region}.teslemetry.com"
5064
LOGGER.debug("Using server %s", self.server)
5165
return resp
52-
66+
5367
async def scopes(self) -> list[str]:
5468
"""Get user scopes."""
5569
resp = await self.metadata(False)
@@ -61,6 +75,23 @@ async def find_server(self) -> str:
6175
assert self.region
6276
return self.region
6377

78+
async def server_side_polling(self, vin: str, value: bool | None = None) -> bool | None:
79+
"""Get or set Auto mode."""
80+
if value is True:
81+
return (await self._request(
82+
Method.POST,
83+
f"api/auto/{vin}",
84+
)).get("response")
85+
if value is False:
86+
return (await self._request(
87+
Method.DELETE,
88+
f"api/auto/{vin}",
89+
)).get("response")
90+
return (await self._request(
91+
Method.GET,
92+
f"api/auto/{vin}",
93+
)).get("response")
94+
6495
async def _request(
6596
self,
6697
method: Method,

0 commit comments

Comments
 (0)