22from aiolimiter import AsyncLimiter
33from typing import Any
44from .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+
512from .const import Method , LOGGER , Scope
613
714# Rate limit should be global, even if multiple instances are created
815rate_limit = AsyncLimiter (5 , 10 )
916
10-
1117class 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