tesla-fleet-api 0.3.0 → 0.5.0
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 +284 -1
- package/dist/_virtual/_rolldown/runtime.cjs +32 -0
- package/dist/_virtual/_rolldown/runtime.mjs +12 -0
- package/dist/bluetooth/adapters/shared.cjs +38 -0
- package/dist/bluetooth/adapters/shared.mjs +36 -0
- package/dist/bluetooth/async.cjs +121 -0
- package/dist/bluetooth/async.d.cts +10 -0
- package/dist/bluetooth/async.d.mts +10 -0
- package/dist/bluetooth/async.mjs +116 -0
- package/dist/bluetooth/broadcast.cjs +153 -0
- package/dist/bluetooth/broadcast.d.cts +59 -0
- package/dist/bluetooth/broadcast.d.mts +59 -0
- package/dist/bluetooth/broadcast.mjs +151 -0
- package/dist/bluetooth/constants.cjs +99 -0
- package/dist/bluetooth/constants.d.cts +70 -0
- package/dist/bluetooth/constants.d.mts +70 -0
- package/dist/bluetooth/constants.mjs +72 -0
- package/dist/bluetooth/esphome.cjs +292 -0
- package/dist/bluetooth/esphome.d.cts +83 -0
- package/dist/bluetooth/esphome.d.mts +83 -0
- package/dist/bluetooth/esphome.mjs +291 -0
- package/dist/bluetooth/framing.cjs +125 -0
- package/dist/bluetooth/framing.d.cts +45 -0
- package/dist/bluetooth/framing.d.mts +45 -0
- package/dist/bluetooth/framing.mjs +122 -0
- package/dist/bluetooth/homey.cjs +155 -0
- package/dist/bluetooth/homey.d.cts +75 -0
- package/dist/bluetooth/homey.d.mts +75 -0
- package/dist/bluetooth/homey.mjs +150 -0
- package/dist/bluetooth/names.cjs +24 -0
- package/dist/bluetooth/names.d.cts +10 -0
- package/dist/bluetooth/names.d.mts +10 -0
- package/dist/bluetooth/names.mjs +20 -0
- package/dist/bluetooth/noble.cjs +178 -0
- package/dist/bluetooth/noble.d.cts +58 -0
- package/dist/bluetooth/noble.d.mts +58 -0
- package/dist/bluetooth/noble.mjs +177 -0
- package/dist/bluetooth/streamglue.cjs +157 -0
- package/dist/bluetooth/streamglue.d.cts +37 -0
- package/dist/bluetooth/streamglue.d.mts +37 -0
- package/dist/bluetooth/streamglue.mjs +154 -0
- package/dist/bluetooth/teslabluetooth.cjs +67 -0
- package/dist/bluetooth/teslabluetooth.d.cts +41 -0
- package/dist/bluetooth/teslabluetooth.d.mts +41 -0
- package/dist/bluetooth/teslabluetooth.mjs +66 -0
- package/dist/bluetooth/transport.cjs +10 -0
- package/dist/bluetooth/transport.d.cts +95 -0
- package/dist/bluetooth/transport.d.mts +95 -0
- package/dist/bluetooth/transport.mjs +10 -0
- package/dist/bluetooth/vehiclebluetooth.cjs +1272 -0
- package/dist/bluetooth/vehiclebluetooth.d.cts +495 -0
- package/dist/bluetooth/vehiclebluetooth.d.mts +495 -0
- package/dist/bluetooth/vehiclebluetooth.mjs +1270 -0
- package/dist/bluetooth/verify.cjs +93 -0
- package/dist/bluetooth/verify.d.cts +35 -0
- package/dist/bluetooth/verify.d.mts +35 -0
- package/dist/bluetooth/verify.mjs +91 -0
- package/dist/bluetooth.cjs +53 -0
- package/dist/bluetooth.d.cts +10 -0
- package/dist/bluetooth.d.mts +10 -0
- package/dist/bluetooth.mjs +9 -0
- package/dist/charging.cjs +53 -0
- package/dist/charging.d.cts +31 -0
- package/dist/charging.d.mts +30 -0
- package/dist/charging.mjs +53 -0
- package/dist/commands.cjs +1797 -0
- package/dist/commands.d.cts +881 -0
- package/dist/commands.d.mts +881 -0
- package/dist/commands.mjs +1791 -0
- package/dist/const.cjs +322 -0
- package/dist/const.d.cts +308 -0
- package/dist/const.d.mts +308 -0
- package/dist/const.mjs +282 -0
- package/dist/energy.cjs +142 -0
- package/dist/energy.d.cts +101 -0
- package/dist/energy.d.mts +100 -0
- package/dist/energy.mjs +142 -0
- package/dist/energyisland.cjs +38 -0
- package/dist/energyisland.mjs +37 -0
- package/dist/energyparsers.cjs +118 -0
- package/dist/energyparsers.d.cts +39 -0
- package/dist/energyparsers.d.mts +39 -0
- package/dist/energyparsers.mjs +116 -0
- package/dist/energyspecific.cjs +457 -0
- package/dist/energyspecific.d.cts +258 -0
- package/dist/energyspecific.d.mts +258 -0
- package/dist/energyspecific.mjs +451 -0
- package/dist/exceptions.cjs +1488 -0
- package/dist/exceptions.d.cts +1143 -0
- package/dist/exceptions.d.mts +1143 -0
- package/dist/exceptions.mjs +1325 -0
- package/dist/funnel.cjs +297 -0
- package/dist/funnel.d.cts +118 -0
- package/dist/funnel.d.mts +118 -0
- package/dist/funnel.mjs +292 -0
- package/dist/index.cjs +287 -0
- package/dist/index.d.cts +28 -0
- package/dist/index.d.mts +28 -0
- package/dist/index.mjs +27 -0
- package/dist/log.cjs +75 -0
- package/dist/log.d.cts +4 -0
- package/dist/log.d.mts +4 -0
- package/dist/log.mjs +71 -0
- package/dist/oauth.cjs +143 -0
- package/dist/oauth.d.cts +69 -0
- package/dist/oauth.d.mts +69 -0
- package/dist/oauth.mjs +143 -0
- package/dist/partner.cjs +32 -0
- package/dist/partner.d.cts +24 -0
- package/dist/partner.d.mts +23 -0
- package/dist/partner.mjs +32 -0
- package/dist/powerwall/client.cjs +818 -0
- package/dist/powerwall/client.d.cts +297 -0
- package/dist/powerwall/client.d.mts +297 -0
- package/dist/powerwall/client.mjs +807 -0
- package/dist/powerwall/components.cjs +188 -0
- package/dist/powerwall/components.d.cts +45 -0
- package/dist/powerwall/components.d.mts +45 -0
- package/dist/powerwall/components.mjs +182 -0
- package/dist/powerwall/energysite.cjs +216 -0
- package/dist/powerwall/energysite.d.cts +104 -0
- package/dist/powerwall/energysite.d.mts +104 -0
- package/dist/powerwall/energysite.mjs +214 -0
- package/dist/powerwall/exceptions.cjs +59 -0
- package/dist/powerwall/exceptions.d.cts +38 -0
- package/dist/powerwall/exceptions.d.mts +38 -0
- package/dist/powerwall/exceptions.mjs +51 -0
- package/dist/powerwall/gateway.cjs +102 -0
- package/dist/powerwall/gateway.d.cts +57 -0
- package/dist/powerwall/gateway.d.mts +57 -0
- package/dist/powerwall/gateway.mjs +101 -0
- package/dist/powerwall/merge.cjs +163 -0
- package/dist/powerwall/merge.d.cts +63 -0
- package/dist/powerwall/merge.d.mts +63 -0
- package/dist/powerwall/merge.mjs +159 -0
- package/dist/powerwall/models.d.cts +95 -0
- package/dist/powerwall/models.d.mts +95 -0
- package/dist/powerwall/queries.cjs +17 -0
- package/dist/powerwall/queries.mjs +10 -0
- package/dist/powerwall/transport.cjs +232 -0
- package/dist/powerwall/transport.mjs +227 -0
- package/dist/powerwall.cjs +47 -0
- package/dist/powerwall.d.cts +9 -0
- package/dist/powerwall.d.mts +9 -0
- package/dist/powerwall.mjs +8 -0
- package/dist/router/base.cjs +203 -0
- package/dist/router/base.d.cts +112 -0
- package/dist/router/base.d.mts +112 -0
- package/dist/router/base.mjs +200 -0
- package/dist/router/energysite.cjs +65 -0
- package/dist/router/energysite.d.cts +47 -0
- package/dist/router/energysite.d.mts +47 -0
- package/dist/router/energysite.mjs +60 -0
- package/dist/router.cjs +13 -0
- package/dist/router.d.cts +3 -0
- package/dist/router.d.mts +3 -0
- package/dist/router.mjs +3 -0
- package/dist/signing/crypto.cjs +59 -0
- package/dist/signing/crypto.mjs +52 -0
- package/dist/signing/energy.cjs +123 -0
- package/dist/signing/energy.d.cts +45 -0
- package/dist/signing/energy.d.mts +45 -0
- package/dist/signing/energy.mjs +120 -0
- package/dist/signing/jws.cjs +229 -0
- package/dist/signing/jws.d.cts +45 -0
- package/dist/signing/jws.d.mts +45 -0
- package/dist/signing/jws.mjs +211 -0
- package/dist/signing/keys.cjs +191 -0
- package/dist/signing/keys.d.cts +21 -0
- package/dist/signing/keys.d.mts +21 -0
- package/dist/signing/keys.mjs +182 -0
- package/dist/signing/session.cjs +186 -0
- package/dist/signing/session.d.cts +106 -0
- package/dist/signing/session.d.mts +106 -0
- package/dist/signing/session.mjs +184 -0
- package/dist/tariff.cjs +319 -0
- package/dist/tariff.d.cts +40 -0
- package/dist/tariff.d.mts +40 -0
- package/dist/tariff.mjs +317 -0
- package/dist/teslafleetapi.cjs +326 -0
- package/dist/teslafleetapi.d.cts +160 -0
- package/dist/teslafleetapi.d.mts +160 -0
- package/dist/teslafleetapi.mjs +326 -0
- package/dist/teslemetry.cjs +183 -0
- package/dist/teslemetry.d.cts +113 -0
- package/dist/teslemetry.d.mts +113 -0
- package/dist/teslemetry.mjs +181 -0
- package/dist/teslemetryenergy.cjs +287 -0
- package/dist/teslemetryenergy.d.cts +154 -0
- package/dist/teslemetryenergy.d.mts +154 -0
- package/dist/teslemetryenergy.mjs +282 -0
- package/dist/teslemetryvehicle.cjs +407 -0
- package/dist/teslemetryvehicle.d.cts +238 -0
- package/dist/teslemetryvehicle.d.mts +238 -0
- package/dist/teslemetryvehicle.mjs +405 -0
- package/dist/tessie.cjs +71 -0
- package/dist/tessie.d.cts +69 -0
- package/dist/tessie.d.mts +69 -0
- package/dist/tessie.mjs +71 -0
- package/dist/tessievehicle.cjs +514 -0
- package/dist/tessievehicle.d.cts +333 -0
- package/dist/tessievehicle.d.mts +333 -0
- package/dist/tessievehicle.mjs +513 -0
- package/dist/types/commands.d.cts +28 -0
- package/dist/types/commands.d.mts +28 -0
- package/dist/types/live_status.d.cts +30 -0
- package/dist/types/live_status.d.mts +30 -0
- package/dist/types/products.d.cts +58 -0
- package/dist/types/products.d.mts +58 -0
- package/dist/types/responses.d.cts +13 -0
- package/dist/types/responses.d.mts +13 -0
- package/dist/types/site_info.d.cts +154 -0
- package/dist/types/site_info.d.mts +154 -0
- package/dist/types/vehicle.d.cts +33 -0
- package/dist/types/vehicle.d.mts +33 -0
- package/dist/types/vehicle_data.d.cts +278 -0
- package/dist/types/vehicle_data.d.mts +278 -0
- package/dist/types.cjs +0 -0
- package/dist/types.d.cts +9 -0
- package/dist/types.d.mts +9 -0
- package/dist/types.mjs +1 -0
- package/dist/user.cjs +28 -0
- package/dist/user.d.cts +17 -0
- package/dist/user.d.mts +16 -0
- package/dist/user.mjs +28 -0
- package/dist/util.cjs +41 -0
- package/dist/util.d.cts +18 -0
- package/dist/util.d.mts +18 -0
- package/dist/util.mjs +40 -0
- package/dist/vehicle.cjs +847 -0
- package/dist/vehicle.d.cts +566 -0
- package/dist/vehicle.d.mts +565 -0
- package/dist/vehicle.mjs +847 -0
- package/dist/vehiclesigned.cjs +35 -0
- package/dist/vehiclesigned.d.cts +23 -0
- package/dist/vehiclesigned.d.mts +22 -0
- package/dist/vehiclesigned.mjs +35 -0
- package/dist/vehiclespecific.cjs +715 -0
- package/dist/vehiclespecific.d.cts +497 -0
- package/dist/vehiclespecific.d.mts +496 -0
- package/dist/vehiclespecific.mjs +715 -0
- package/package.json +178 -38
- package/dist/charging.d.ts +0 -30
- package/dist/charging.js +0 -51
- package/dist/charging.js.map +0 -1
- package/dist/commands.d.ts +0 -352
- package/dist/commands.js +0 -875
- package/dist/commands.js.map +0 -1
- package/dist/energy.d.ts +0 -94
- package/dist/energy.js +0 -125
- package/dist/energy.js.map +0 -1
- package/dist/energyspecific.d.ts +0 -77
- package/dist/energyspecific.js +0 -97
- package/dist/energyspecific.js.map +0 -1
- package/dist/helpers.d.ts +0 -2
- package/dist/helpers.js +0 -10
- package/dist/helpers.js.map +0 -1
- package/dist/index.d.ts +0 -15
- package/dist/index.js +0 -15
- package/dist/index.js.map +0 -1
- package/dist/partner.d.ts +0 -23
- package/dist/partner.js +0 -31
- package/dist/partner.js.map +0 -1
- package/dist/signing/crypto.d.ts +0 -10
- package/dist/signing/crypto.js +0 -26
- package/dist/signing/crypto.js.map +0 -1
- package/dist/signing/errors.d.ts +0 -29
- package/dist/signing/errors.js +0 -40
- package/dist/signing/errors.js.map +0 -1
- package/dist/signing/session.d.ts +0 -69
- package/dist/signing/session.js +0 -102
- package/dist/signing/session.js.map +0 -1
- package/dist/tariff.d.ts +0 -29
- package/dist/tariff.js +0 -302
- package/dist/tariff.js.map +0 -1
- package/dist/teslafleetapi.d.ts +0 -58
- package/dist/teslafleetapi.js +0 -120
- package/dist/teslafleetapi.js.map +0 -1
- package/dist/teslemetry.d.ts +0 -29
- package/dist/teslemetry.js +0 -39
- package/dist/teslemetry.js.map +0 -1
- package/dist/tessie.d.ts +0 -23
- package/dist/tessie.js +0 -28
- package/dist/tessie.js.map +0 -1
- package/dist/types/commands.d.ts +0 -44
- package/dist/types/commands.js +0 -11
- package/dist/types/commands.js.map +0 -1
- package/dist/types/live_status.d.ts +0 -26
- package/dist/types/live_status.js +0 -2
- package/dist/types/live_status.js.map +0 -1
- package/dist/types/products.d.ts +0 -54
- package/dist/types/products.js +0 -2
- package/dist/types/products.js.map +0 -1
- package/dist/types/responses.d.ts +0 -5
- package/dist/types/responses.js +0 -2
- package/dist/types/responses.js.map +0 -1
- package/dist/types/site_info.d.ts +0 -150
- package/dist/types/site_info.js +0 -2
- package/dist/types/site_info.js.map +0 -1
- package/dist/types/vehicle.d.ts +0 -23
- package/dist/types/vehicle.js +0 -10
- package/dist/types/vehicle.js.map +0 -1
- package/dist/types/vehicle_data.d.ts +0 -274
- package/dist/types/vehicle_data.js +0 -2
- package/dist/types/vehicle_data.js.map +0 -1
- package/dist/user.d.ts +0 -16
- package/dist/user.js +0 -26
- package/dist/user.js.map +0 -1
- package/dist/vehicle.d.ts +0 -548
- package/dist/vehicle.js +0 -774
- package/dist/vehicle.js.map +0 -1
- package/dist/vehiclesigned.d.ts +0 -13
- package/dist/vehiclesigned.js +0 -19
- package/dist/vehiclesigned.js.map +0 -1
- package/dist/vehiclespecific.d.ts +0 -432
- package/dist/vehiclespecific.js +0 -601
- package/dist/vehiclespecific.js.map +0 -1
- package/src/charging.ts +0 -66
- package/src/commands.ts +0 -1134
- package/src/energy.ts +0 -217
- package/src/energyspecific.ts +0 -116
- package/src/helpers.ts +0 -11
- package/src/index.ts +0 -21
- package/src/partner.ts +0 -37
- package/src/signing/crypto.ts +0 -29
- package/src/signing/errors.ts +0 -50
- package/src/signing/session.ts +0 -132
- package/src/tariff.ts +0 -375
- package/src/teslafleetapi.ts +0 -182
- package/src/teslemetry.ts +0 -54
- package/src/tessie.ts +0 -42
- package/src/types/commands.ts +0 -62
- package/src/types/live_status.ts +0 -27
- package/src/types/products.ts +0 -61
- package/src/types/responses.ts +0 -1
- package/src/types/site_info.ts +0 -159
- package/src/types/vehicle.ts +0 -33
- package/src/types/vehicle_data.ts +0 -286
- package/src/user.ts +0 -35
- package/src/vehicle.ts +0 -886
- package/src/vehiclesigned.ts +0 -20
- package/src/vehiclespecific.ts +0 -818
package/dist/energy.cjs
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
const require_energyspecific = require("./energyspecific.cjs");
|
|
2
|
+
// src/energy.ts
|
|
3
|
+
var Energy = class {
|
|
4
|
+
/** Class `create` instantiates; a subclass overrides it to supply its own site type. */
|
|
5
|
+
static Site = require_energyspecific.default;
|
|
6
|
+
parent;
|
|
7
|
+
/** Every site created by this factory, keyed by `energy_site_id`; the latest `create` call wins. */
|
|
8
|
+
byId = /* @__PURE__ */ new Map();
|
|
9
|
+
constructor(parent) {
|
|
10
|
+
this.parent = parent;
|
|
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
|
+
* @param private_key RSA key `VERIFIED` on this gateway, for client-signed device commands. Requires `din`. Without one the site is unsigned: unlike vehicles, there is no fallback to the parent's key.
|
|
16
|
+
* @param din Gateway DIN (the energy site's `gateway_id` in `products`).
|
|
17
|
+
* @returns `EnergySpecific` class
|
|
18
|
+
*/
|
|
19
|
+
create(energy_site_id, private_key, din) {
|
|
20
|
+
const site = new this.constructor.Site(this, energy_site_id, private_key, din);
|
|
21
|
+
this.byId.set(energy_site_id, site);
|
|
22
|
+
return site;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Adjust the site's backup reserve.
|
|
26
|
+
* @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.
|
|
27
|
+
* @param backup_reserve_percent The desired backup reserve percent.
|
|
28
|
+
* @returns
|
|
29
|
+
*/
|
|
30
|
+
async backup(energy_site_id, backup_reserve_percent) {
|
|
31
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/backup`, null, { backup_reserve_percent });
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Returns the backup (off-grid) event history of the site in duration of seconds.
|
|
35
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
36
|
+
* @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.
|
|
37
|
+
* @param start_date Start date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
38
|
+
* @param end_date End date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
39
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
42
|
+
async backup_history(energy_site_id, period, start_date, end_date, time_zone) {
|
|
43
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/calendar_history`, {
|
|
44
|
+
kind: "backup",
|
|
45
|
+
start_date,
|
|
46
|
+
end_date,
|
|
47
|
+
period,
|
|
48
|
+
time_zone
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Returns the charging history of a wall connector.
|
|
53
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
54
|
+
* @param start_date Start date of the window to retrieve charging events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
55
|
+
* @param end_date End date of the window to retrieve charging events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
56
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
57
|
+
* @returns
|
|
58
|
+
*/
|
|
59
|
+
async charge_history(energy_site_id, start_date, end_date, time_zone) {
|
|
60
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/telemetry_history`, {
|
|
61
|
+
kind: "charge",
|
|
62
|
+
start_date,
|
|
63
|
+
end_date,
|
|
64
|
+
time_zone
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Returns the energy measurements of the site, aggregated to the requested period.
|
|
69
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
70
|
+
* @param period Period of the window to retrieve energy measurements. This can be day, week, month, year, lifetime and should align with the window requested.
|
|
71
|
+
* @param start_date Start date of the window to retrieve energy measurements in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
72
|
+
* @param end_date End date of the window to retrieve energy measurements in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
73
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
74
|
+
* @returns
|
|
75
|
+
*/
|
|
76
|
+
async energy_history(energy_site_id, period, start_date, end_date, time_zone) {
|
|
77
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/calendar_history`, {
|
|
78
|
+
kind: "energy",
|
|
79
|
+
start_date,
|
|
80
|
+
end_date,
|
|
81
|
+
period,
|
|
82
|
+
time_zone
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Allow/disallow charging from the grid and exporting energy to the grid.
|
|
87
|
+
* @param energy_site_id
|
|
88
|
+
* @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.
|
|
89
|
+
* @param customer_preferred_export_rule The desired behavior for grid exporting. The available options are battery_ok, pv_only, and never.
|
|
90
|
+
* @returns
|
|
91
|
+
*/
|
|
92
|
+
async grid_import_export(energy_site_id, disallow_charge_from_grid_with_solar_installed = null, customer_preferred_export_rule = null) {
|
|
93
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/grid_import_export`, null, {
|
|
94
|
+
disallow_charge_from_grid_with_solar_installed,
|
|
95
|
+
customer_preferred_export_rule
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Returns the live status of the site (power, state of energy, grid status, storm mode).
|
|
100
|
+
* @param energy_site_id
|
|
101
|
+
* @returns
|
|
102
|
+
*/
|
|
103
|
+
async live_status(energy_site_id) {
|
|
104
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/live_status`);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Adjust the site's off-grid vehicle charging backup reserve.
|
|
108
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
109
|
+
* @param off_grid_vehicle_charging_reserve_percent The desired off grid vehicle charging reserve percent.
|
|
110
|
+
* @returns
|
|
111
|
+
*/
|
|
112
|
+
async off_grid_vehicle_charging_reserve(energy_site_id, off_grid_vehicle_charging_reserve_percent) {
|
|
113
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/off_grid_vehicle_charging_reserve`, null, { off_grid_vehicle_charging_reserve_percent });
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Set the site's mode.
|
|
117
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
118
|
+
* @param default_real_mode The desired operation mode. Use autonomous for time-based control and self_consumption for self-powered mode.
|
|
119
|
+
* @returns
|
|
120
|
+
*/
|
|
121
|
+
async operation(energy_site_id, default_real_mode) {
|
|
122
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/operation`, null, { default_real_mode });
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Returns information about the site. Things like assets (has solar, etc), settings (backup reserve, etc), and features (storm_mode_capable, etc).
|
|
126
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
127
|
+
* @returns
|
|
128
|
+
*/
|
|
129
|
+
async site_info(energy_site_id) {
|
|
130
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/site_info`);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Update storm watch participation.
|
|
134
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
135
|
+
* @param enabled The storm mode participation value to set.
|
|
136
|
+
* @returns
|
|
137
|
+
*/
|
|
138
|
+
async storm_mode(energy_site_id, enabled) {
|
|
139
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/storm_mode`, null, { enabled });
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
exports.default = Energy;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { TeslaEnergyPeriod } from "./const.cjs";
|
|
2
|
+
import EnergySpecific from "./energyspecific.cjs";
|
|
3
|
+
import TeslaFleetApi from "./teslafleetapi.cjs";
|
|
4
|
+
import { LiveStatusResponse } from "./types/live_status.cjs";
|
|
5
|
+
import { ResponseEnvelope } from "./types/responses.cjs";
|
|
6
|
+
import { SiteInfoResponse } from "./types/site_info.cjs";
|
|
7
|
+
import { KeyObject } from "crypto";
|
|
8
|
+
declare class Energy {
|
|
9
|
+
/** Class `create` instantiates; a subclass overrides it to supply its own site type. */
|
|
10
|
+
static Site: new (parent: Energy, energy_site_id: number, private_key?: KeyObject, din?: string) => EnergySpecific;
|
|
11
|
+
parent: TeslaFleetApi;
|
|
12
|
+
/** Every site created by this factory, keyed by `energy_site_id`; the latest `create` call wins. */
|
|
13
|
+
byId: Map<number, EnergySpecific>;
|
|
14
|
+
constructor(parent: TeslaFleetApi);
|
|
15
|
+
/**
|
|
16
|
+
* Create an Energy class for a specific site.
|
|
17
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
18
|
+
* @param private_key RSA key `VERIFIED` on this gateway, for client-signed device commands. Requires `din`. Without one the site is unsigned: unlike vehicles, there is no fallback to the parent's key.
|
|
19
|
+
* @param din Gateway DIN (the energy site's `gateway_id` in `products`).
|
|
20
|
+
* @returns `EnergySpecific` class
|
|
21
|
+
*/
|
|
22
|
+
create(energy_site_id: number, private_key?: KeyObject, din?: string): EnergySpecific;
|
|
23
|
+
/**
|
|
24
|
+
* Adjust the site's backup reserve.
|
|
25
|
+
* @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.
|
|
26
|
+
* @param backup_reserve_percent The desired backup reserve percent.
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
backup(energy_site_id: number, backup_reserve_percent: number): Promise<Record<string, any>>;
|
|
30
|
+
/**
|
|
31
|
+
* Returns the backup (off-grid) event history of the site in duration of seconds.
|
|
32
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
33
|
+
* @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.
|
|
34
|
+
* @param start_date Start date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
35
|
+
* @param end_date End date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
36
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
37
|
+
* @returns
|
|
38
|
+
*/
|
|
39
|
+
backup_history(energy_site_id: number, period: TeslaEnergyPeriod | string | null, start_date?: string | null, end_date?: string | null, time_zone?: string | null): Promise<Record<string, any>>;
|
|
40
|
+
/**
|
|
41
|
+
* Returns the charging history of a wall connector.
|
|
42
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
43
|
+
* @param start_date Start date of the window to retrieve charging events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
44
|
+
* @param end_date End date of the window to retrieve charging events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
45
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
46
|
+
* @returns
|
|
47
|
+
*/
|
|
48
|
+
charge_history(energy_site_id: number, start_date: string, end_date: string, time_zone?: string | null): Promise<Record<string, any>>;
|
|
49
|
+
/**
|
|
50
|
+
* Returns the energy measurements of the site, aggregated to the requested period.
|
|
51
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
52
|
+
* @param period Period of the window to retrieve energy measurements. This can be day, week, month, year, lifetime and should align with the window requested.
|
|
53
|
+
* @param start_date Start date of the window to retrieve energy measurements in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
54
|
+
* @param end_date End date of the window to retrieve energy measurements in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
55
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
56
|
+
* @returns
|
|
57
|
+
*/
|
|
58
|
+
energy_history(energy_site_id: number, period: TeslaEnergyPeriod | string | null, start_date?: string | null, end_date?: string | null, time_zone?: string | null): Promise<Record<string, any>>;
|
|
59
|
+
/**
|
|
60
|
+
* Allow/disallow charging from the grid and exporting energy to the grid.
|
|
61
|
+
* @param energy_site_id
|
|
62
|
+
* @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.
|
|
63
|
+
* @param customer_preferred_export_rule The desired behavior for grid exporting. The available options are battery_ok, pv_only, and never.
|
|
64
|
+
* @returns
|
|
65
|
+
*/
|
|
66
|
+
grid_import_export(energy_site_id: number, disallow_charge_from_grid_with_solar_installed?: boolean | null, customer_preferred_export_rule?: string | null): Promise<Record<string, any>>;
|
|
67
|
+
/**
|
|
68
|
+
* Returns the live status of the site (power, state of energy, grid status, storm mode).
|
|
69
|
+
* @param energy_site_id
|
|
70
|
+
* @returns
|
|
71
|
+
*/
|
|
72
|
+
live_status(energy_site_id: number): Promise<ResponseEnvelope<LiveStatusResponse>>;
|
|
73
|
+
/**
|
|
74
|
+
* Adjust the site's off-grid vehicle charging backup reserve.
|
|
75
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
76
|
+
* @param off_grid_vehicle_charging_reserve_percent The desired off grid vehicle charging reserve percent.
|
|
77
|
+
* @returns
|
|
78
|
+
*/
|
|
79
|
+
off_grid_vehicle_charging_reserve(energy_site_id: number, off_grid_vehicle_charging_reserve_percent: number): Promise<Record<string, any>>;
|
|
80
|
+
/**
|
|
81
|
+
* Set the site's mode.
|
|
82
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
83
|
+
* @param default_real_mode The desired operation mode. Use autonomous for time-based control and self_consumption for self-powered mode.
|
|
84
|
+
* @returns
|
|
85
|
+
*/
|
|
86
|
+
operation(energy_site_id: number, default_real_mode: string): Promise<Record<string, any>>;
|
|
87
|
+
/**
|
|
88
|
+
* Returns information about the site. Things like assets (has solar, etc), settings (backup reserve, etc), and features (storm_mode_capable, etc).
|
|
89
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
90
|
+
* @returns
|
|
91
|
+
*/
|
|
92
|
+
site_info(energy_site_id: number): Promise<ResponseEnvelope<SiteInfoResponse>>;
|
|
93
|
+
/**
|
|
94
|
+
* Update storm watch participation.
|
|
95
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
96
|
+
* @param enabled The storm mode participation value to set.
|
|
97
|
+
* @returns
|
|
98
|
+
*/
|
|
99
|
+
storm_mode(energy_site_id: number, enabled: boolean): Promise<Record<string, any>>;
|
|
100
|
+
}
|
|
101
|
+
export = Energy;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { TeslaEnergyPeriod } from "./const.mjs";
|
|
2
|
+
import EnergySpecific from "./energyspecific.mjs";
|
|
3
|
+
import TeslaFleetApi from "./teslafleetapi.mjs";
|
|
4
|
+
import { LiveStatusResponse } from "./types/live_status.mjs";
|
|
5
|
+
import { ResponseEnvelope } from "./types/responses.mjs";
|
|
6
|
+
import { SiteInfoResponse } from "./types/site_info.mjs";
|
|
7
|
+
import { KeyObject } from "crypto";
|
|
8
|
+
export default class Energy {
|
|
9
|
+
/** Class `create` instantiates; a subclass overrides it to supply its own site type. */
|
|
10
|
+
static Site: new (parent: Energy, energy_site_id: number, private_key?: KeyObject, din?: string) => EnergySpecific;
|
|
11
|
+
parent: TeslaFleetApi;
|
|
12
|
+
/** Every site created by this factory, keyed by `energy_site_id`; the latest `create` call wins. */
|
|
13
|
+
byId: Map<number, EnergySpecific>;
|
|
14
|
+
constructor(parent: TeslaFleetApi);
|
|
15
|
+
/**
|
|
16
|
+
* Create an Energy class for a specific site.
|
|
17
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
18
|
+
* @param private_key RSA key `VERIFIED` on this gateway, for client-signed device commands. Requires `din`. Without one the site is unsigned: unlike vehicles, there is no fallback to the parent's key.
|
|
19
|
+
* @param din Gateway DIN (the energy site's `gateway_id` in `products`).
|
|
20
|
+
* @returns `EnergySpecific` class
|
|
21
|
+
*/
|
|
22
|
+
create(energy_site_id: number, private_key?: KeyObject, din?: string): EnergySpecific;
|
|
23
|
+
/**
|
|
24
|
+
* Adjust the site's backup reserve.
|
|
25
|
+
* @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.
|
|
26
|
+
* @param backup_reserve_percent The desired backup reserve percent.
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
backup(energy_site_id: number, backup_reserve_percent: number): Promise<Record<string, any>>;
|
|
30
|
+
/**
|
|
31
|
+
* Returns the backup (off-grid) event history of the site in duration of seconds.
|
|
32
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
33
|
+
* @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.
|
|
34
|
+
* @param start_date Start date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
35
|
+
* @param end_date End date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
36
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
37
|
+
* @returns
|
|
38
|
+
*/
|
|
39
|
+
backup_history(energy_site_id: number, period: TeslaEnergyPeriod | string | null, start_date?: string | null, end_date?: string | null, time_zone?: string | null): Promise<Record<string, any>>;
|
|
40
|
+
/**
|
|
41
|
+
* Returns the charging history of a wall connector.
|
|
42
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
43
|
+
* @param start_date Start date of the window to retrieve charging events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
44
|
+
* @param end_date End date of the window to retrieve charging events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
45
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
46
|
+
* @returns
|
|
47
|
+
*/
|
|
48
|
+
charge_history(energy_site_id: number, start_date: string, end_date: string, time_zone?: string | null): Promise<Record<string, any>>;
|
|
49
|
+
/**
|
|
50
|
+
* Returns the energy measurements of the site, aggregated to the requested period.
|
|
51
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
52
|
+
* @param period Period of the window to retrieve energy measurements. This can be day, week, month, year, lifetime and should align with the window requested.
|
|
53
|
+
* @param start_date Start date of the window to retrieve energy measurements in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
54
|
+
* @param end_date End date of the window to retrieve energy measurements in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
55
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
56
|
+
* @returns
|
|
57
|
+
*/
|
|
58
|
+
energy_history(energy_site_id: number, period: TeslaEnergyPeriod | string | null, start_date?: string | null, end_date?: string | null, time_zone?: string | null): Promise<Record<string, any>>;
|
|
59
|
+
/**
|
|
60
|
+
* Allow/disallow charging from the grid and exporting energy to the grid.
|
|
61
|
+
* @param energy_site_id
|
|
62
|
+
* @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.
|
|
63
|
+
* @param customer_preferred_export_rule The desired behavior for grid exporting. The available options are battery_ok, pv_only, and never.
|
|
64
|
+
* @returns
|
|
65
|
+
*/
|
|
66
|
+
grid_import_export(energy_site_id: number, disallow_charge_from_grid_with_solar_installed?: boolean | null, customer_preferred_export_rule?: string | null): Promise<Record<string, any>>;
|
|
67
|
+
/**
|
|
68
|
+
* Returns the live status of the site (power, state of energy, grid status, storm mode).
|
|
69
|
+
* @param energy_site_id
|
|
70
|
+
* @returns
|
|
71
|
+
*/
|
|
72
|
+
live_status(energy_site_id: number): Promise<ResponseEnvelope<LiveStatusResponse>>;
|
|
73
|
+
/**
|
|
74
|
+
* Adjust the site's off-grid vehicle charging backup reserve.
|
|
75
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
76
|
+
* @param off_grid_vehicle_charging_reserve_percent The desired off grid vehicle charging reserve percent.
|
|
77
|
+
* @returns
|
|
78
|
+
*/
|
|
79
|
+
off_grid_vehicle_charging_reserve(energy_site_id: number, off_grid_vehicle_charging_reserve_percent: number): Promise<Record<string, any>>;
|
|
80
|
+
/**
|
|
81
|
+
* Set the site's mode.
|
|
82
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
83
|
+
* @param default_real_mode The desired operation mode. Use autonomous for time-based control and self_consumption for self-powered mode.
|
|
84
|
+
* @returns
|
|
85
|
+
*/
|
|
86
|
+
operation(energy_site_id: number, default_real_mode: string): Promise<Record<string, any>>;
|
|
87
|
+
/**
|
|
88
|
+
* Returns information about the site. Things like assets (has solar, etc), settings (backup reserve, etc), and features (storm_mode_capable, etc).
|
|
89
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
90
|
+
* @returns
|
|
91
|
+
*/
|
|
92
|
+
site_info(energy_site_id: number): Promise<ResponseEnvelope<SiteInfoResponse>>;
|
|
93
|
+
/**
|
|
94
|
+
* Update storm watch participation.
|
|
95
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
96
|
+
* @param enabled The storm mode participation value to set.
|
|
97
|
+
* @returns
|
|
98
|
+
*/
|
|
99
|
+
storm_mode(energy_site_id: number, enabled: boolean): Promise<Record<string, any>>;
|
|
100
|
+
}
|
package/dist/energy.mjs
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import EnergySpecific from "./energyspecific.mjs";
|
|
2
|
+
// src/energy.ts
|
|
3
|
+
var Energy = class {
|
|
4
|
+
/** Class `create` instantiates; a subclass overrides it to supply its own site type. */
|
|
5
|
+
static Site = EnergySpecific;
|
|
6
|
+
parent;
|
|
7
|
+
/** Every site created by this factory, keyed by `energy_site_id`; the latest `create` call wins. */
|
|
8
|
+
byId = /* @__PURE__ */ new Map();
|
|
9
|
+
constructor(parent) {
|
|
10
|
+
this.parent = parent;
|
|
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
|
+
* @param private_key RSA key `VERIFIED` on this gateway, for client-signed device commands. Requires `din`. Without one the site is unsigned: unlike vehicles, there is no fallback to the parent's key.
|
|
16
|
+
* @param din Gateway DIN (the energy site's `gateway_id` in `products`).
|
|
17
|
+
* @returns `EnergySpecific` class
|
|
18
|
+
*/
|
|
19
|
+
create(energy_site_id, private_key, din) {
|
|
20
|
+
const site = new this.constructor.Site(this, energy_site_id, private_key, din);
|
|
21
|
+
this.byId.set(energy_site_id, site);
|
|
22
|
+
return site;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Adjust the site's backup reserve.
|
|
26
|
+
* @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.
|
|
27
|
+
* @param backup_reserve_percent The desired backup reserve percent.
|
|
28
|
+
* @returns
|
|
29
|
+
*/
|
|
30
|
+
async backup(energy_site_id, backup_reserve_percent) {
|
|
31
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/backup`, null, { backup_reserve_percent });
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Returns the backup (off-grid) event history of the site in duration of seconds.
|
|
35
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
36
|
+
* @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.
|
|
37
|
+
* @param start_date Start date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
38
|
+
* @param end_date End date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
39
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
42
|
+
async backup_history(energy_site_id, period, start_date, end_date, time_zone) {
|
|
43
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/calendar_history`, {
|
|
44
|
+
kind: "backup",
|
|
45
|
+
start_date,
|
|
46
|
+
end_date,
|
|
47
|
+
period,
|
|
48
|
+
time_zone
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Returns the charging history of a wall connector.
|
|
53
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
54
|
+
* @param start_date Start date of the window to retrieve charging events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
55
|
+
* @param end_date End date of the window to retrieve charging events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
56
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
57
|
+
* @returns
|
|
58
|
+
*/
|
|
59
|
+
async charge_history(energy_site_id, start_date, end_date, time_zone) {
|
|
60
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/telemetry_history`, {
|
|
61
|
+
kind: "charge",
|
|
62
|
+
start_date,
|
|
63
|
+
end_date,
|
|
64
|
+
time_zone
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Returns the energy measurements of the site, aggregated to the requested period.
|
|
69
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
70
|
+
* @param period Period of the window to retrieve energy measurements. This can be day, week, month, year, lifetime and should align with the window requested.
|
|
71
|
+
* @param start_date Start date of the window to retrieve energy measurements in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
72
|
+
* @param end_date End date of the window to retrieve energy measurements in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
|
|
73
|
+
* @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
|
|
74
|
+
* @returns
|
|
75
|
+
*/
|
|
76
|
+
async energy_history(energy_site_id, period, start_date, end_date, time_zone) {
|
|
77
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/calendar_history`, {
|
|
78
|
+
kind: "energy",
|
|
79
|
+
start_date,
|
|
80
|
+
end_date,
|
|
81
|
+
period,
|
|
82
|
+
time_zone
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Allow/disallow charging from the grid and exporting energy to the grid.
|
|
87
|
+
* @param energy_site_id
|
|
88
|
+
* @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.
|
|
89
|
+
* @param customer_preferred_export_rule The desired behavior for grid exporting. The available options are battery_ok, pv_only, and never.
|
|
90
|
+
* @returns
|
|
91
|
+
*/
|
|
92
|
+
async grid_import_export(energy_site_id, disallow_charge_from_grid_with_solar_installed = null, customer_preferred_export_rule = null) {
|
|
93
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/grid_import_export`, null, {
|
|
94
|
+
disallow_charge_from_grid_with_solar_installed,
|
|
95
|
+
customer_preferred_export_rule
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Returns the live status of the site (power, state of energy, grid status, storm mode).
|
|
100
|
+
* @param energy_site_id
|
|
101
|
+
* @returns
|
|
102
|
+
*/
|
|
103
|
+
async live_status(energy_site_id) {
|
|
104
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/live_status`);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Adjust the site's off-grid vehicle charging backup reserve.
|
|
108
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
109
|
+
* @param off_grid_vehicle_charging_reserve_percent The desired off grid vehicle charging reserve percent.
|
|
110
|
+
* @returns
|
|
111
|
+
*/
|
|
112
|
+
async off_grid_vehicle_charging_reserve(energy_site_id, off_grid_vehicle_charging_reserve_percent) {
|
|
113
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/off_grid_vehicle_charging_reserve`, null, { off_grid_vehicle_charging_reserve_percent });
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Set the site's mode.
|
|
117
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
118
|
+
* @param default_real_mode The desired operation mode. Use autonomous for time-based control and self_consumption for self-powered mode.
|
|
119
|
+
* @returns
|
|
120
|
+
*/
|
|
121
|
+
async operation(energy_site_id, default_real_mode) {
|
|
122
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/operation`, null, { default_real_mode });
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Returns information about the site. Things like assets (has solar, etc), settings (backup reserve, etc), and features (storm_mode_capable, etc).
|
|
126
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
127
|
+
* @returns
|
|
128
|
+
*/
|
|
129
|
+
async site_info(energy_site_id) {
|
|
130
|
+
return this.parent._request("GET", `api/1/energy_sites/${energy_site_id}/site_info`);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Update storm watch participation.
|
|
134
|
+
* @param energy_site_id ID field of an energy site from /api/1/products endpoint.
|
|
135
|
+
* @param enabled The storm mode participation value to set.
|
|
136
|
+
* @returns
|
|
137
|
+
*/
|
|
138
|
+
async storm_mode(energy_site_id, enabled) {
|
|
139
|
+
return this.parent._request("POST", `api/1/energy_sites/${energy_site_id}/storm_mode`, null, { enabled });
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
export { Energy as default };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const require_const = require("./const.cjs");
|
|
2
|
+
let _teslemetry_tesla_protocol_energy_device_teg_api = require("@teslemetry/tesla-protocol/energy_device/teg_api");
|
|
3
|
+
// src/energyisland.ts
|
|
4
|
+
/** The `TEGSetIslandModeResult` values that mean the gateway refused. */
|
|
5
|
+
const REJECTIONS = [
|
|
6
|
+
_teslemetry_tesla_protocol_energy_device_teg_api.TEGSetIslandModeResult.TEG_SET_ISLAND_MODE_RESULT_REJECTED_NOT_READY_FOR_ISLANDING,
|
|
7
|
+
_teslemetry_tesla_protocol_energy_device_teg_api.TEGSetIslandModeResult.TEG_SET_ISLAND_MODE_RESULT_REJECTED_LOAD_DROP_EXPECTED,
|
|
8
|
+
_teslemetry_tesla_protocol_energy_device_teg_api.TEGSetIslandModeResult.TEG_SET_ISLAND_MODE_RESULT_REJECTED_LOW_ENERGY,
|
|
9
|
+
_teslemetry_tesla_protocol_energy_device_teg_api.TEGSetIslandModeResult.TEG_SET_ISLAND_MODE_RESULT_REJECTED_EXCESSIVE_SOLAR
|
|
10
|
+
];
|
|
11
|
+
/**
|
|
12
|
+
* The refusal a `setIslandModeResponse.result` reports, or `null` for anything
|
|
13
|
+
* else, which is not guessed at. Takes the enum's number or its name, because a
|
|
14
|
+
* JSON route may carry either.
|
|
15
|
+
*/
|
|
16
|
+
function island_mode_rejection(result) {
|
|
17
|
+
for (const code of REJECTIONS) {
|
|
18
|
+
const name = (0, _teslemetry_tesla_protocol_energy_device_teg_api.tEGSetIslandModeResultToJSON)(code);
|
|
19
|
+
if (result === code || result === name) return {
|
|
20
|
+
code,
|
|
21
|
+
name
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check an island command before it is signed. A contactor command takes only the
|
|
28
|
+
* two modes Python's `go_off_grid` and `reconnect_grid` use: `ON_GRID` (1) and
|
|
29
|
+
* `OFF_GRID` (6). There is no coercion and no default, because `"6"` or a missing
|
|
30
|
+
* mode could otherwise close the contactor when the caller meant to open it.
|
|
31
|
+
* @throws TypeError on any other mode, or a `force` that is not a boolean.
|
|
32
|
+
*/
|
|
33
|
+
function validate_island_mode(mode, force) {
|
|
34
|
+
if (mode !== require_const.EnergyIslandMode.ON_GRID && mode !== require_const.EnergyIslandMode.OFF_GRID) throw new TypeError("mode must be EnergyIslandMode.ON_GRID (1) or EnergyIslandMode.OFF_GRID (6)");
|
|
35
|
+
if (force !== void 0 && force !== null && typeof force !== "boolean") throw new TypeError("force must be a boolean");
|
|
36
|
+
}
|
|
37
|
+
exports.island_mode_rejection = island_mode_rejection;
|
|
38
|
+
exports.validate_island_mode = validate_island_mode;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { EnergyIslandMode } from "./const.mjs";
|
|
2
|
+
import { TEGSetIslandModeResult, tEGSetIslandModeResultToJSON } from "@teslemetry/tesla-protocol/energy_device/teg_api";
|
|
3
|
+
// src/energyisland.ts
|
|
4
|
+
/** The `TEGSetIslandModeResult` values that mean the gateway refused. */
|
|
5
|
+
const REJECTIONS = [
|
|
6
|
+
TEGSetIslandModeResult.TEG_SET_ISLAND_MODE_RESULT_REJECTED_NOT_READY_FOR_ISLANDING,
|
|
7
|
+
TEGSetIslandModeResult.TEG_SET_ISLAND_MODE_RESULT_REJECTED_LOAD_DROP_EXPECTED,
|
|
8
|
+
TEGSetIslandModeResult.TEG_SET_ISLAND_MODE_RESULT_REJECTED_LOW_ENERGY,
|
|
9
|
+
TEGSetIslandModeResult.TEG_SET_ISLAND_MODE_RESULT_REJECTED_EXCESSIVE_SOLAR
|
|
10
|
+
];
|
|
11
|
+
/**
|
|
12
|
+
* The refusal a `setIslandModeResponse.result` reports, or `null` for anything
|
|
13
|
+
* else, which is not guessed at. Takes the enum's number or its name, because a
|
|
14
|
+
* JSON route may carry either.
|
|
15
|
+
*/
|
|
16
|
+
function island_mode_rejection(result) {
|
|
17
|
+
for (const code of REJECTIONS) {
|
|
18
|
+
const name = tEGSetIslandModeResultToJSON(code);
|
|
19
|
+
if (result === code || result === name) return {
|
|
20
|
+
code,
|
|
21
|
+
name
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check an island command before it is signed. A contactor command takes only the
|
|
28
|
+
* two modes Python's `go_off_grid` and `reconnect_grid` use: `ON_GRID` (1) and
|
|
29
|
+
* `OFF_GRID` (6). There is no coercion and no default, because `"6"` or a missing
|
|
30
|
+
* mode could otherwise close the contactor when the caller meant to open it.
|
|
31
|
+
* @throws TypeError on any other mode, or a `force` that is not a boolean.
|
|
32
|
+
*/
|
|
33
|
+
function validate_island_mode(mode, force) {
|
|
34
|
+
if (mode !== EnergyIslandMode.ON_GRID && mode !== EnergyIslandMode.OFF_GRID) throw new TypeError("mode must be EnergyIslandMode.ON_GRID (1) or EnergyIslandMode.OFF_GRID (6)");
|
|
35
|
+
if (force !== void 0 && force !== null && typeof force !== "boolean") throw new TypeError("force must be a boolean");
|
|
36
|
+
}
|
|
37
|
+
export { island_mode_rejection, validate_island_mode };
|