tesla-fleet-api 0.0.1
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.
- package/README.md +2 -0
- package/dist/charging.js +29 -0
- package/dist/charging.js.map +1 -0
- package/dist/energy.js +45 -0
- package/dist/energy.js.map +1 -0
- package/dist/energyspecific.js +59 -0
- package/dist/energyspecific.js.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/partner.js +15 -0
- package/dist/partner.js.map +1 -0
- package/dist/teslafleetapi.js +82 -0
- package/dist/teslafleetapi.js.map +1 -0
- package/dist/teslemetry.js +18 -0
- package/dist/teslemetry.js.map +1 -0
- package/dist/tessie.js +10 -0
- package/dist/tessie.js.map +1 -0
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -0
- package/dist/user.js +21 -0
- package/dist/user.js.map +1 -0
- package/dist/vehicle.js +316 -0
- package/dist/vehicle.js.map +1 -0
- package/dist/vehiclespecific.js +310 -0
- package/dist/vehiclespecific.js.map +1 -0
- package/package.json +23 -0
- package/src/charging.ts +66 -0
- package/src/energy.ts +153 -0
- package/src/energyspecific.ts +136 -0
- package/src/index.ts +5 -0
- package/src/partner.ts +37 -0
- package/src/teslafleetapi.ts +114 -0
- package/src/teslemetry.ts +24 -0
- package/src/tessie.ts +13 -0
- package/src/types.ts +59 -0
- package/src/user.ts +34 -0
- package/src/vehicle.ts +855 -0
- package/src/vehiclespecific.ts +769 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vehiclespecific.js","sourceRoot":"","sources":["../src/vehiclespecific.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tesla-fleet-api",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"author": {
|
|
5
|
+
"name": "Teslemetry",
|
|
6
|
+
"email": "hello@teslemetry.com",
|
|
7
|
+
"url": "https://teslemetry.com"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"devDependencies": {
|
|
11
|
+
"@types/node": "^20.12.12",
|
|
12
|
+
"typescript": "^5.4.5"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"src"
|
|
17
|
+
],
|
|
18
|
+
"main": "dist/index.js",
|
|
19
|
+
"license": "Apache-2.0",
|
|
20
|
+
"scripts": {
|
|
21
|
+
"watch": "tsc -w"
|
|
22
|
+
}
|
|
23
|
+
}
|
package/src/charging.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import TeslaFleetApi from "./teslafleetapi.js";
|
|
2
|
+
|
|
3
|
+
export default class Charging {
|
|
4
|
+
parent: TeslaFleetApi;
|
|
5
|
+
|
|
6
|
+
constructor(parent: TeslaFleetApi) {
|
|
7
|
+
this.parent = parent;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Returns the paginated charging history.
|
|
12
|
+
* @param vin Vehicle Identification Number (VIN) of the selected vehicle.
|
|
13
|
+
* @param startTime Start time of the windows to download charging history for (i,e "2023-07-27T11:43:45-07:00").
|
|
14
|
+
* @param endTime End time of the windows to download charging history for (i,e "2023-07-28T11:43:45-07:00").
|
|
15
|
+
* @param pageNo Current page number.
|
|
16
|
+
* @param pageSize Number of records per page.
|
|
17
|
+
* @param sortBy Field to sort by.
|
|
18
|
+
* @param sortOrder Sort order (ASC or DESC).
|
|
19
|
+
*/
|
|
20
|
+
async history(
|
|
21
|
+
vin?: string,
|
|
22
|
+
startTime?: string,
|
|
23
|
+
endTime?: string,
|
|
24
|
+
pageNo?: number,
|
|
25
|
+
pageSize?: number,
|
|
26
|
+
sortBy?: string,
|
|
27
|
+
sortOrder?: string
|
|
28
|
+
): Promise<Record<string, any>> {
|
|
29
|
+
return await this.parent._request("GET", "api/1/dx/charging/history", {
|
|
30
|
+
vin,
|
|
31
|
+
startTime,
|
|
32
|
+
endTime,
|
|
33
|
+
pageNo,
|
|
34
|
+
pageSize,
|
|
35
|
+
sortBy,
|
|
36
|
+
sortOrder,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Returns a charging invoice pdf for an event from charging history.
|
|
42
|
+
* @param id Content ID. This can be obtained from the invoices.contentId of a charging history event.
|
|
43
|
+
*/
|
|
44
|
+
async invoice(id: string): Promise<Record<string, any>> {
|
|
45
|
+
return await this.parent._request("GET", `api/1/dx/charging/invoices/${id}`);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Returns the charging session information including pricing and energy data. This endpoint is only available for business accounts that own a fleet of vehicles.
|
|
50
|
+
* @param vin Vehicle Identification Number (VIN) of the selected vehicle.
|
|
51
|
+
* @param date_from Start date of the windows to download charging sessions.
|
|
52
|
+
* @param date_to End date of the windows to download charging sessions.
|
|
53
|
+
* @param limit Number of entities to be returned.
|
|
54
|
+
* @param offset Number of entities to be skipped.
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
async sessions(vin?: string, date_from?: string, date_to?: string, limit?: number, offset?: number): Promise<Record<string, any>> {
|
|
58
|
+
return await this.parent._request("GET", "api/1/dx/charging/sessions", {
|
|
59
|
+
vin,
|
|
60
|
+
date_from,
|
|
61
|
+
date_to,
|
|
62
|
+
limit,
|
|
63
|
+
offset,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
package/src/energy.ts
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import EnergySpecific from "./energyspecific.js";
|
|
2
|
+
import TeslaFleetApi from "./teslafleetapi.js";
|
|
3
|
+
|
|
4
|
+
// Energy Class
|
|
5
|
+
export default class Energy {
|
|
6
|
+
parent: TeslaFleetApi;
|
|
7
|
+
|
|
8
|
+
constructor(parent: TeslaFleetApi) {
|
|
9
|
+
this.parent = parent;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Create an Energy class for a specific site.
|
|
14
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
15
|
+
* @returns `EnergySpecific` class
|
|
16
|
+
*/
|
|
17
|
+
specific(energy_site_id: number): EnergySpecific {
|
|
18
|
+
return new EnergySpecific(this, energy_site_id);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Adjust the site's backup reserve.
|
|
23
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.ID field of an energy site from /api/1/products endpoint.
|
|
24
|
+
* @param backup_reserve_percent The desired backup reserve percent.
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
async backup(energy_site_id: number, backup_reserve_percent: number): Promise<Record<string, any>> {
|
|
28
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/backup`, null, { backup_reserve_percent });
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Returns the backup (off-grid) event history of the site in duration of seconds.
|
|
33
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
34
|
+
* @param kind The kind of history to be requested. 'backup', 'charge', 'energy' are all supported.
|
|
35
|
+
* @param start_date Start date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
36
|
+
* @param end_date End date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
37
|
+
* @param period Period of the window to retrieve backup events. This can be day, week, month, year, lifetime and should align with the window requested.
|
|
38
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
39
|
+
* @returns
|
|
40
|
+
*/
|
|
41
|
+
async backup_history(
|
|
42
|
+
energy_site_id: number,
|
|
43
|
+
kind: string,
|
|
44
|
+
start_date: string,
|
|
45
|
+
end_date: string,
|
|
46
|
+
period: string,
|
|
47
|
+
time_zone: string
|
|
48
|
+
): Promise<Record<string, any>> {
|
|
49
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/calendar_history`, null, { kind, start_date, end_date, period, time_zone });
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Returns the charging history of a wall connector.
|
|
54
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
55
|
+
* @param kind The kind of history to be requested. 'backup', 'charge', 'energy' are all supported.
|
|
56
|
+
* @param start_date Start date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
57
|
+
* @param end_date End date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
58
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
59
|
+
* @returns
|
|
60
|
+
*/
|
|
61
|
+
async charge_history(energy_site_id: number, kind: string, start_date: string, end_date: string, time_zone: string): Promise<Record<string, any>> {
|
|
62
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/telemetry_history`, null, { kind, start_date, end_date, time_zone });
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Returns the energy measurements of the site, aggregated to the requested period.
|
|
67
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
68
|
+
* @param kind The kind of history to be requested. 'backup', 'charge', 'energy' are all supported.
|
|
69
|
+
* @param start_dateStart date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
70
|
+
* @param end_date End date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
71
|
+
* @param period Period of the window to retrieve backup events. This can be day, week, month, year, lifetime and should align with the window requested.
|
|
72
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
73
|
+
* @returns
|
|
74
|
+
*/
|
|
75
|
+
async energy_history(
|
|
76
|
+
energy_site_id: number,
|
|
77
|
+
kind: string,
|
|
78
|
+
start_date: string,
|
|
79
|
+
end_date: string,
|
|
80
|
+
period: string,
|
|
81
|
+
time_zone: string
|
|
82
|
+
): Promise<Record<string, any>> {
|
|
83
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/calendar_history`, null, { kind, start_date, end_date, period, time_zone });
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Allow/disallow charging from the grid and exporting energy to the grid.
|
|
88
|
+
* @param energy_site_id
|
|
89
|
+
* @param disallow_charge_from_grid_with_solar_installed The desired behavior towards importing from the grid. Charging from the grid is disabled when set to true and enabled when set to false.
|
|
90
|
+
* @param customer_preferred_export_rule The desired behavior for grid exporting. The available options are battery_ok, pv_only, and never.
|
|
91
|
+
* @returns
|
|
92
|
+
*/
|
|
93
|
+
async grid_import_export(
|
|
94
|
+
energy_site_id: number,
|
|
95
|
+
disallow_charge_from_grid_with_solar_installed: boolean | null = null,
|
|
96
|
+
customer_preferred_export_rule: string | null = null
|
|
97
|
+
): Promise<Record<string, any>> {
|
|
98
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/grid_import_export`, null, {
|
|
99
|
+
disallow_charge_from_grid_with_solar_installed,
|
|
100
|
+
customer_preferred_export_rule,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Returns the live status of the site (power, state of energy, grid status, storm mode).
|
|
106
|
+
* @param energy_site_id
|
|
107
|
+
* @returns
|
|
108
|
+
*/
|
|
109
|
+
async live_status(energy_site_id: number): Promise<Record<string, any>> {
|
|
110
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/live_status`);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Adjust the site's off-grid vehicle charging backup reserve.
|
|
115
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
116
|
+
* @param off_grid_vehicle_charging_reserve_percent The desired off grid vehicle charging reserve percent.
|
|
117
|
+
* @returns
|
|
118
|
+
*/
|
|
119
|
+
async off_grid_vehicle_charging_reserve(energy_site_id: number, off_grid_vehicle_charging_reserve_percent: number): Promise<Record<string, any>> {
|
|
120
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/off_grid_vehicle_charging_reserve`, null, {
|
|
121
|
+
off_grid_vehicle_charging_reserve_percent,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Set the site's mode.
|
|
127
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
128
|
+
* @param default_real_mode The desired operation mode. Use autonomous for time-based control and self_consumption for self-powered mode.
|
|
129
|
+
* @returns
|
|
130
|
+
*/
|
|
131
|
+
async operation(energy_site_id: number, default_real_mode: string): Promise<Record<string, any>> {
|
|
132
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/operation`, null, { default_real_mode });
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Returns information about the site. Things like assets (has solar, etc), settings (backup reserve, etc), and features (storm_mode_capable, etc).
|
|
137
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
138
|
+
* @returns
|
|
139
|
+
*/
|
|
140
|
+
async site_info(energy_site_id: number): Promise<Record<string, any>> {
|
|
141
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/site_info`);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Update storm watch participation.
|
|
146
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
147
|
+
* @param enabled The storm mode participation value to set.
|
|
148
|
+
* @returns
|
|
149
|
+
*/
|
|
150
|
+
async storm_mode(energy_site_id: number, enabled: boolean): Promise<Record<string, any>> {
|
|
151
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/storm_mode`, null, { enabled });
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import Energy from "./energy.js";
|
|
2
|
+
|
|
3
|
+
// Energy Class
|
|
4
|
+
export default class EnergySpecific {
|
|
5
|
+
parent: Energy;
|
|
6
|
+
energy_site_id: number;
|
|
7
|
+
|
|
8
|
+
constructor(parent: Energy, energy_site_id: number) {
|
|
9
|
+
this.parent = parent;
|
|
10
|
+
this.energy_site_id = energy_site_id;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Adjust the site's backup reserve.
|
|
15
|
+
* @param backup_reserve_percent The desired backup reserve percent.
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
async backup(backup_reserve_percent: number): Promise<Record<string, any>> {
|
|
19
|
+
return this.parent.parent._request("POST", `api/1/energy_sites/${this.energy_site_id}/backup`, null, { backup_reserve_percent });
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Returns the backup (off-grid) event history of the site in duration of seconds.
|
|
24
|
+
* @param kind The kind of history to be requested. 'backup', 'charge', 'energy' are all supported.
|
|
25
|
+
* @param start_date Start date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
26
|
+
* @param end_date End date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
27
|
+
* @param period Period of the window to retrieve backup events. This can be day, week, month, year, lifetime and should align with the window requested.
|
|
28
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
29
|
+
* @returns
|
|
30
|
+
*/
|
|
31
|
+
async backup_history(kind: string, start_date: string, end_date: string, period: string, time_zone: string): Promise<Record<string, any>> {
|
|
32
|
+
return this.parent.parent._request("GET", `api/1/energy_sites/${this.energy_site_id}/calendar_history`, null, {
|
|
33
|
+
kind,
|
|
34
|
+
start_date,
|
|
35
|
+
end_date,
|
|
36
|
+
period,
|
|
37
|
+
time_zone,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Returns the charging history of a wall connector.
|
|
43
|
+
* @param kind The kind of history to be requested. 'backup', 'charge', 'energy' are all supported.
|
|
44
|
+
* @param start_date Start date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
45
|
+
* @param end_date End date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
46
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
49
|
+
async charge_history(kind: string, start_date: string, end_date: string, time_zone: string): Promise<Record<string, any>> {
|
|
50
|
+
return this.parent.parent._request("GET", `api/1/energy_sites/${this.energy_site_id}/telemetry_history`, null, {
|
|
51
|
+
kind,
|
|
52
|
+
start_date,
|
|
53
|
+
end_date,
|
|
54
|
+
time_zone,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Returns the energy history of the site in duration of seconds.
|
|
60
|
+
* @param kind The kind of history to be requested. 'backup', 'charge', 'energy' are all supported.
|
|
61
|
+
* @param start_date Start date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
62
|
+
* @param end_date End date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
63
|
+
* @param period Period of the window to retrieve backup events. This can be day, week, month, year, lifetime and should align with the window requested.
|
|
64
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
65
|
+
* @returns
|
|
66
|
+
*/
|
|
67
|
+
async energy_history(kind: string, start_date: string, end_date: string, period: string, time_zone: string): Promise<Record<string, any>> {
|
|
68
|
+
return this.parent.parent._request("GET", `api/1/energy_sites/${this.energy_site_id}/calendar_history`, null, {
|
|
69
|
+
kind,
|
|
70
|
+
start_date,
|
|
71
|
+
end_date,
|
|
72
|
+
period,
|
|
73
|
+
time_zone,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Allow/disallow charging from the grid and exporting energy to the grid.
|
|
79
|
+
* @param disallow_charge_from_grid_with_solar_installed The desired behavior towards importing from the grid. Charging from the grid is disabled when set to true and enabled when set to false.
|
|
80
|
+
* @param customer_preferred_export_rule The desired behavior for grid exporting. The available options are battery_ok, pv_only, and never.
|
|
81
|
+
* @returns
|
|
82
|
+
*/
|
|
83
|
+
async grid_import_export(
|
|
84
|
+
disallow_charge_from_grid_with_solar_installed: boolean | null = null,
|
|
85
|
+
customer_preferred_export_rule: string | null = null
|
|
86
|
+
): Promise<Record<string, any>> {
|
|
87
|
+
return this.parent.parent._request("POST", `api/1/energy_sites/${this.energy_site_id}/grid_import_export`, null, {
|
|
88
|
+
disallow_charge_from_grid_with_solar_installed,
|
|
89
|
+
customer_preferred_export_rule,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Returns the live status of the site.
|
|
95
|
+
* @returns
|
|
96
|
+
*/
|
|
97
|
+
async live_status(): Promise<Record<string, any>> {
|
|
98
|
+
return this.parent.parent._request("GET", `api/1/energy_sites/${this.energy_site_id}/live_status`);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Adjust the site's off-grid vehicle charging backup reserve.
|
|
103
|
+
* @param off_grid_vehicle_charging_reserve_percent The desired off grid vehicle charging reserve percent.
|
|
104
|
+
* @returns
|
|
105
|
+
*/
|
|
106
|
+
async off_grid_vehicle_charging_reserve(off_grid_vehicle_charging_reserve_percent: number): Promise<Record<string, any>> {
|
|
107
|
+
return this.parent.parent._request("POST", `api/1/energy_sites/${this.energy_site_id}/off_grid_vehicle_charging_reserve`, null, {
|
|
108
|
+
off_grid_vehicle_charging_reserve_percent,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Set the site's mode.
|
|
114
|
+
* @param default_real_mode
|
|
115
|
+
* @returns
|
|
116
|
+
*/
|
|
117
|
+
async operation(default_real_mode: string): Promise<Record<string, any>> {
|
|
118
|
+
return this.parent.parent._request("POST", `api/1/energy_sites/${this.energy_site_id}/operation`, null, { default_real_mode });
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Returns information about the site. Things like assets (has solar, etc), settings (backup reserve, etc), and features (storm_mode_capable, etc).
|
|
123
|
+
*/
|
|
124
|
+
async site_info(): Promise<Record<string, any>> {
|
|
125
|
+
return this.parent.parent._request("GET", `api/1/energy_sites/${this.energy_site_id}/site_info`);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Update storm watch participation.
|
|
130
|
+
* @param enabled The storm mode participation value to set.
|
|
131
|
+
* @returns
|
|
132
|
+
*/
|
|
133
|
+
async storm_mode(enabled: boolean): Promise<Record<string, any>> {
|
|
134
|
+
return this.parent.parent._request("POST", `api/1/energy_sites/${this.energy_site_id}/storm_mode`, null, { enabled });
|
|
135
|
+
}
|
|
136
|
+
}
|
package/src/index.ts
ADDED
package/src/partner.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import TeslaFleetApi from "./teslafleetapi.js";
|
|
2
|
+
|
|
3
|
+
// Partner Class
|
|
4
|
+
export default class Partner {
|
|
5
|
+
parent: TeslaFleetApi;
|
|
6
|
+
|
|
7
|
+
constructor(parent: TeslaFleetApi) {
|
|
8
|
+
this.parent = parent;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Returns the public key associated with a domain. It can be used to ensure the registration was successful.
|
|
13
|
+
* @param domain Domain of the partner account.
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
async public_key(domain: string | null = null): Promise<Record<string, any>> {
|
|
17
|
+
return this.parent._request("GET", "api/1/partner_accounts/public_key", { domain });
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Registers an existing account before it can be used for general API access. Each application from developer.tesla.com must complete this step.
|
|
22
|
+
* @param domain Domain of the partner account.
|
|
23
|
+
* @returns
|
|
24
|
+
*/
|
|
25
|
+
async register(domain: string): Promise<Record<string, any>> {
|
|
26
|
+
return this.parent._request("POST", "api/1/partner_accounts", null, { domain });
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Returns recent fleet telemetry errors reported by vehicles after receiving the config.
|
|
31
|
+
* @param domain Domain of the partner account.
|
|
32
|
+
* @returns
|
|
33
|
+
*/
|
|
34
|
+
async fleet_telemetry_errors(domain: string): Promise<Record<string, any>> {
|
|
35
|
+
return this.parent._request("GET", "api/1/partner_accounts/fleet_telemetry_errors", { domain });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import Charging from "./charging.js";
|
|
2
|
+
import Energy from "./energy.js";
|
|
3
|
+
import Partner from "./partner.js";
|
|
4
|
+
import User from "./user.js";
|
|
5
|
+
import Vehicle from "./vehicle.js";
|
|
6
|
+
|
|
7
|
+
import { Method } from "./types.js";
|
|
8
|
+
|
|
9
|
+
export type Region = "na" | "eu" | "cn";
|
|
10
|
+
|
|
11
|
+
const servers: Record<Region, string> = {
|
|
12
|
+
na: "https://fleet-api.prd.na.vn.cloud.tesla.com",
|
|
13
|
+
eu: "https://fleet-api.prd.eu.vn.cloud.tesla.com",
|
|
14
|
+
cn: "https://fleet-api.prd.cn.vn.cloud.tesla.cn",
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export default class TeslaFleetApi {
|
|
18
|
+
server: string | null = null;
|
|
19
|
+
accessToken: string | null;
|
|
20
|
+
charging?: Charging;
|
|
21
|
+
energy?: Energy;
|
|
22
|
+
partner?: Partner;
|
|
23
|
+
user?: User;
|
|
24
|
+
vehicle?: Vehicle;
|
|
25
|
+
|
|
26
|
+
constructor(options: {
|
|
27
|
+
accessToken?: string;
|
|
28
|
+
region?: Region;
|
|
29
|
+
server?: string;
|
|
30
|
+
chargingScope?: boolean;
|
|
31
|
+
energyScope?: boolean;
|
|
32
|
+
partnerScope?: boolean;
|
|
33
|
+
userScope?: boolean;
|
|
34
|
+
vehicleScope?: boolean;
|
|
35
|
+
}) {
|
|
36
|
+
this.accessToken = options.accessToken;
|
|
37
|
+
|
|
38
|
+
if (options.server) {
|
|
39
|
+
this.server = options.server;
|
|
40
|
+
} else if (options.region && options.region in servers) {
|
|
41
|
+
this.server = servers[options.region];
|
|
42
|
+
} else {
|
|
43
|
+
throw new Error("Either server or region must be provided.");
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
console.debug(`Using server ${this.server}`);
|
|
47
|
+
|
|
48
|
+
if (options.chargingScope !== false) {
|
|
49
|
+
this.charging = new Charging(this);
|
|
50
|
+
}
|
|
51
|
+
if (options.energyScope !== false) {
|
|
52
|
+
this.energy = new Energy(this);
|
|
53
|
+
}
|
|
54
|
+
if (options.userScope !== false) {
|
|
55
|
+
this.user = new User(this);
|
|
56
|
+
}
|
|
57
|
+
if (options.partnerScope !== false) {
|
|
58
|
+
this.partner = new Partner(this);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (options.vehicleScope !== false) {
|
|
62
|
+
this.vehicle = new Vehicle(this);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async _request(method: Method, path: string, params: Record<string, any> | null = null, json: Record<string, any> | null = null): Promise<any> {
|
|
67
|
+
if (!this.server) {
|
|
68
|
+
throw new Error("Server was not set at init. Call findServer() first.");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (method === "GET" && json !== null) {
|
|
72
|
+
throw new Error("GET requests cannot have a body.");
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
console.debug(`Sending request to ${path}`);
|
|
76
|
+
|
|
77
|
+
// Remove null and undefined values from params and json
|
|
78
|
+
if (params) {
|
|
79
|
+
params = Object.fromEntries(Object.entries(params).filter(([_, v]) => v != null));
|
|
80
|
+
console.debug(`Parameters: ${JSON.stringify(params)}`);
|
|
81
|
+
}
|
|
82
|
+
if (json) {
|
|
83
|
+
json = Object.fromEntries(Object.entries(json).filter(([_, v]) => v != null));
|
|
84
|
+
console.debug(`Body: ${JSON.stringify(json)}`);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const headers = {
|
|
88
|
+
Authorization: `Bearer ${this.accessToken}`,
|
|
89
|
+
"Content-Type": "application/json",
|
|
90
|
+
"X-Library": `node tesla_fleet_api`,
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const query = new URLSearchParams(params).toString();
|
|
94
|
+
|
|
95
|
+
return fetch(`${this.server}/${path}${query}`, {
|
|
96
|
+
method,
|
|
97
|
+
headers,
|
|
98
|
+
body: json ? JSON.stringify(json) : null,
|
|
99
|
+
}).then((res) => {
|
|
100
|
+
console.debug(res.status);
|
|
101
|
+
if (!res.ok) {
|
|
102
|
+
throw new Error(`HTTP status code ${res.status}`);
|
|
103
|
+
}
|
|
104
|
+
if (res.headers.get("content-type").startsWith("application/json")) {
|
|
105
|
+
return res.json();
|
|
106
|
+
}
|
|
107
|
+
throw new Error(`Not JSON ${res.status}`);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
async products(): Promise<Record<string, any>> {
|
|
112
|
+
return this._request("GET", "api/1/products");
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import TeslaFleetApi from "./teslafleetapi.js";
|
|
2
|
+
|
|
3
|
+
type Region = "na" | "eu" | "api";
|
|
4
|
+
|
|
5
|
+
export default class Telemetry extends TeslaFleetApi {
|
|
6
|
+
constructor(accessToken: string, region: Region = "api") {
|
|
7
|
+
super({ accessToken, server: `https://${region}.teslemetry.com`, partnerScope: false, userScope: false });
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/** Test the connection to Teslemetry */
|
|
11
|
+
async test() {
|
|
12
|
+
return this._request("GET", "/api/test");
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/** Get details about your Teslemetry account */
|
|
16
|
+
async metadata(update_region = true) {
|
|
17
|
+
this._request("GET", "/api/metadata").then((metadata) => {
|
|
18
|
+
if (update_region) {
|
|
19
|
+
this.server = `https://${metadata.region}.teslemetry.com`;
|
|
20
|
+
}
|
|
21
|
+
return metadata;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
package/src/tessie.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import TeslaFleetApi from "./teslafleetapi.js";
|
|
2
|
+
import { Scope } from "./types.js";
|
|
3
|
+
|
|
4
|
+
export default class Telemetry extends TeslaFleetApi {
|
|
5
|
+
constructor(accessToken: string) {
|
|
6
|
+
super({ accessToken, server: `https://api.tessie.com`, partnerScope: false, userScope: false });
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/** Get your approved Tesla scopes */
|
|
10
|
+
async tesla_scopes(): Promise<Scope[]> {
|
|
11
|
+
return this._request("GET", "auth/tesla_scopes");
|
|
12
|
+
}
|
|
13
|
+
}
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export type Scope =
|
|
2
|
+
| "user_data"
|
|
3
|
+
| "vehicle_device_data"
|
|
4
|
+
| "vehicle_cmds"
|
|
5
|
+
| "vehicle_charging_cmds"
|
|
6
|
+
| "energy_device_data"
|
|
7
|
+
| "energy_cmds"
|
|
8
|
+
| "offline_access"
|
|
9
|
+
| "openid";
|
|
10
|
+
export type Method = "GET" | "POST" | "PUT" | "DELETE";
|
|
11
|
+
|
|
12
|
+
export interface RequestFunction {
|
|
13
|
+
(method: Method, endpoint: string, data?: Record<string, any>): Promise<Record<string, any>>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Vehicles
|
|
17
|
+
|
|
18
|
+
export type Trunk = "front" | "rear";
|
|
19
|
+
export const Seats = {
|
|
20
|
+
FRONT_LEFT: 0,
|
|
21
|
+
FRONT_RIGHT: 1,
|
|
22
|
+
REAR_LEFT: 2,
|
|
23
|
+
REAR_CENTER: 4,
|
|
24
|
+
REAR_RIGHT: 5,
|
|
25
|
+
THIRD_ROW_LEFT: 6,
|
|
26
|
+
THIRD_ROW_RIGHT: 7,
|
|
27
|
+
};
|
|
28
|
+
export type Seat = keyof typeof Seats;
|
|
29
|
+
export type Level = 0 | 1 | 2 | 3;
|
|
30
|
+
export const ClimateModes = { Off: 0, Keep: 1, Dog: 2, Camp: 3 };
|
|
31
|
+
export type ClimateMode = keyof typeof ClimateModes;
|
|
32
|
+
export type VehicleDataEndpoint =
|
|
33
|
+
| "charge_state"
|
|
34
|
+
| "climate_state"
|
|
35
|
+
| "closures_state"
|
|
36
|
+
| "drive_state"
|
|
37
|
+
| "gui_settings"
|
|
38
|
+
| "location_data"
|
|
39
|
+
| "vehicle_config"
|
|
40
|
+
| "vehicle_state"
|
|
41
|
+
| "vehicle_data_combo";
|
|
42
|
+
|
|
43
|
+
export type AlertTypes = "customer" | "service";
|
|
44
|
+
|
|
45
|
+
export interface FleetTelemetryConfig {
|
|
46
|
+
vins: string[];
|
|
47
|
+
config: {
|
|
48
|
+
hostname: string;
|
|
49
|
+
ca: string;
|
|
50
|
+
fields: {
|
|
51
|
+
[key: string]: {
|
|
52
|
+
interval_seconds: number;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
alert_types: AlertTypes[];
|
|
56
|
+
exp: number;
|
|
57
|
+
port: number;
|
|
58
|
+
};
|
|
59
|
+
}
|