@thecloudseeker/homebridge-skoda 0.1.3 → 0.3.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.
Files changed (38) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +42 -26
  3. package/config.schema.json +148 -69
  4. package/dist/accessory/services/battery.d.ts +21 -0
  5. package/dist/accessory/services/battery.js +38 -1
  6. package/dist/accessory/services/battery.js.map +1 -1
  7. package/dist/accessory/services/body.d.ts +5 -6
  8. package/dist/accessory/services/body.js +45 -8
  9. package/dist/accessory/services/body.js.map +1 -1
  10. package/dist/accessory/services/charging.js +31 -13
  11. package/dist/accessory/services/charging.js.map +1 -1
  12. package/dist/accessory/services/climate.js +51 -23
  13. package/dist/accessory/services/climate.js.map +1 -1
  14. package/dist/accessory/services/common.d.ts +10 -5
  15. package/dist/accessory/services/common.js +17 -8
  16. package/dist/accessory/services/common.js.map +1 -1
  17. package/dist/accessory/vehicleAccessory.d.ts +11 -2
  18. package/dist/accessory/vehicleAccessory.js +54 -5
  19. package/dist/accessory/vehicleAccessory.js.map +1 -1
  20. package/dist/api/client.d.ts +2 -2
  21. package/dist/api/client.js +8 -6
  22. package/dist/api/client.js.map +1 -1
  23. package/dist/api/rateBudget.d.ts +3 -3
  24. package/dist/api/rateBudget.js +1 -1
  25. package/dist/config.d.ts +10 -4
  26. package/dist/config.js +24 -8
  27. package/dist/config.js.map +1 -1
  28. package/dist/platform.js +19 -25
  29. package/dist/platform.js.map +1 -1
  30. package/dist/vehicle/mapping.d.ts +12 -0
  31. package/dist/vehicle/mapping.js +42 -0
  32. package/dist/vehicle/mapping.js.map +1 -1
  33. package/dist/vehicle/snapshot.js +47 -0
  34. package/dist/vehicle/snapshot.js.map +1 -1
  35. package/dist/vehicle/vehicleController.d.ts +30 -10
  36. package/dist/vehicle/vehicleController.js +92 -30
  37. package/dist/vehicle/vehicleController.js.map +1 -1
  38. package/package.json +1 -1
@@ -1,14 +1,24 @@
1
1
  import type { SkodaApiClient } from "../api/client.js";
2
- import type { Vehicle } from "../api/types.js";
2
+ import type { OperationName, Vehicle } from "../api/types.js";
3
3
  import type { Logger } from "../util/logger.js";
4
4
  import { type VehicleSnapshot } from "./snapshot.js";
5
5
  export interface VehicleControllerOptions {
6
- pollClient: SkodaApiClient;
7
- /** May be the same client as `pollClient` when no separate command key is configured. */
8
- commandClient: SkodaApiClient;
6
+ client: SkodaApiClient;
9
7
  log: Logger;
10
8
  pollingIntervalMinutes: number;
11
- commandRefreshDelaySeconds: number;
9
+ }
10
+ /** Parts that carry a `carCapturedTimestamp`, which tells when the vehicle last reported them. */
11
+ export type ReportedPart = "charging" | "airConditioning" | "auxiliaryHeating" | "activeVentilation";
12
+ export interface OptimisticPatch {
13
+ /** The part the command changes. */
14
+ part: ReportedPart;
15
+ apply: (vehicle: Vehicle) => void;
16
+ }
17
+ export interface CommandOptions {
18
+ /** Operations the command uses; `operation-not-supported` marks them as unsupported. */
19
+ operations?: readonly OperationName[];
20
+ /** Expected state, shown until the vehicle reports the part again. */
21
+ optimistic?: OptimisticPatch;
12
22
  }
13
23
  type Listener = (snapshot: VehicleSnapshot | undefined) => void;
14
24
  /**
@@ -20,13 +30,14 @@ export declare class VehicleController {
20
30
  private current;
21
31
  private readonly listeners;
22
32
  private readonly intervalMs;
23
- private readonly refreshDelayMs;
24
33
  private pollTimer;
25
34
  private staleTimer;
26
35
  private inFlight;
27
36
  private failures;
28
37
  private lastErrorKey;
29
38
  private readonly keyExpiryWarnedAt;
39
+ private pending;
40
+ private readonly rejectedOperations;
30
41
  private stopped;
31
42
  constructor(options: VehicleControllerOptions);
32
43
  get snapshot(): VehicleSnapshot | undefined;
@@ -36,17 +47,26 @@ export declare class VehicleController {
36
47
  start(): void;
37
48
  stop(): void;
38
49
  /**
39
- * Sends a command and schedules one follow-up refresh. On success the optional `optimistic`
40
- * patch is applied to the cache right away, so HomeKit shows the expected state until the
41
- * refresh confirms it. Errors are logged and rethrown for the caller to revert the UI.
50
+ * Sends a command. On success the optional optimistic patch is applied to the cache right away
51
+ * and re-applied after every poll until the vehicle reports the changed part again, because the
52
+ * vehicle reports new state with a delay, so no extra request is spent on confirming it. Errors
53
+ * are logged and rethrown for the caller to revert the UI.
42
54
  */
43
- runCommand(label: string, send: (client: SkodaApiClient) => Promise<void>, optimistic?: (vehicle: Vehicle) => void): Promise<void>;
55
+ runCommand(label: string, send: (client: SkodaApiClient) => Promise<void>, options?: CommandOptions): Promise<void>;
44
56
  /** Warns ahead of the expiry announced in `X-API-Key-Expires-At`, at most once a day per key. */
45
57
  noteKeyExpiry(keyLabel: string, expiresAt: Date, now?: number): void;
46
58
  private schedule;
47
59
  private poll;
48
60
  private fetch;
49
61
  private handlePollError;
62
+ /**
63
+ * Re-applies optimistic patches the vehicle has not confirmed yet, and hides operations the
64
+ * vehicle rejected as unsupported.
65
+ */
66
+ private applyLocalState;
67
+ /** Remembered until restart: the vehicle lacks the capability, so retrying does not help. */
68
+ private rejectOperations;
69
+ private removeRejectedOperations;
50
70
  /** Exponential backoff starting at the polling interval, capped at 30 minutes (or the interval if longer). */
51
71
  private backoffMs;
52
72
  private logOnce;
@@ -9,6 +9,8 @@ const CONFIG_ERROR_RETRY_MS = HOUR;
9
9
  const STALE_AFTER_INTERVALS = 3;
10
10
  const KEY_EXPIRY_WARNING_MS = 7 * 24 * HOUR;
11
11
  const KEY_EXPIRY_WARNING_REPEAT_MS = 24 * HOUR;
12
+ /** An optimistic state is dropped after this long, even if the vehicle never reports back. */
13
+ const OPTIMISTIC_TTL_MS = 15 * MINUTE;
12
14
  /**
13
15
  * Owns the cached state of one vehicle. HomeKit only ever reads from this cache; the controller
14
16
  * alone decides when to talk to the API, so the rate budget is never exceeded.
@@ -18,18 +20,18 @@ export class VehicleController {
18
20
  current;
19
21
  listeners = new Set();
20
22
  intervalMs;
21
- refreshDelayMs;
22
23
  pollTimer;
23
24
  staleTimer;
24
25
  inFlight;
25
26
  failures = 0;
26
27
  lastErrorKey;
27
28
  keyExpiryWarnedAt = new Map();
29
+ pending = [];
30
+ rejectedOperations = new Set();
28
31
  stopped = true;
29
32
  constructor(options) {
30
33
  this.options = options;
31
34
  this.intervalMs = options.pollingIntervalMinutes * MINUTE;
32
- this.refreshDelayMs = options.commandRefreshDelaySeconds * 1000;
33
35
  }
34
36
  get snapshot() {
35
37
  return this.current;
@@ -45,7 +47,7 @@ export class VehicleController {
45
47
  }
46
48
  start() {
47
49
  this.stopped = false;
48
- this.schedule(0, "poll");
50
+ this.schedule(0);
49
51
  }
50
52
  stop() {
51
53
  this.stopped = true;
@@ -53,26 +55,39 @@ export class VehicleController {
53
55
  clearTimeout(this.staleTimer);
54
56
  }
55
57
  /**
56
- * Sends a command and schedules one follow-up refresh. On success the optional `optimistic`
57
- * patch is applied to the cache right away, so HomeKit shows the expected state until the
58
- * refresh confirms it. Errors are logged and rethrown for the caller to revert the UI.
58
+ * Sends a command. On success the optional optimistic patch is applied to the cache right away
59
+ * and re-applied after every poll until the vehicle reports the changed part again, because the
60
+ * vehicle reports new state with a delay, so no extra request is spent on confirming it. Errors
61
+ * are logged and rethrown for the caller to revert the UI.
59
62
  */
60
- async runCommand(label, send, optimistic) {
63
+ async runCommand(label, send, options = {}) {
64
+ const { operations = [], optimistic } = options;
61
65
  try {
62
- await send(this.options.commandClient);
66
+ await send(this.options.client);
63
67
  }
64
68
  catch (error) {
65
69
  this.options.log.warn(`${label} failed: ${describeCommandError(error)}`);
70
+ if (error instanceof SkodaApiError &&
71
+ error.problemType === "operation-not-supported" &&
72
+ operations.length > 0) {
73
+ this.rejectOperations(operations);
74
+ }
66
75
  throw error;
67
76
  }
68
77
  this.options.log.info(`${label}: accepted by the vehicle`);
69
- if (optimistic && this.current) {
70
- const patched = structuredClone(this.current);
71
- optimistic(patched.vehicle);
72
- this.current = patched;
73
- this.emit();
78
+ if (optimistic) {
79
+ this.pending.push({
80
+ ...optimistic,
81
+ sentAt: Date.now(),
82
+ capturedBefore: capturedAt(this.current?.vehicle, optimistic.part),
83
+ });
84
+ if (this.current) {
85
+ const patched = structuredClone(this.current);
86
+ optimistic.apply(patched.vehicle);
87
+ this.current = patched;
88
+ this.emit();
89
+ }
74
90
  }
75
- this.schedule(this.refreshDelayMs, "refresh");
76
91
  }
77
92
  /** Warns ahead of the expiry announced in `X-API-Key-Expires-At`, at most once a day per key. */
78
93
  noteKeyExpiry(keyLabel, expiresAt, now = Date.now()) {
@@ -90,47 +105,46 @@ export class VehicleController {
90
105
  this.options.log.warn(`The ${keyLabel} expires on ${expiresAt.toISOString()} (in ${days} day(s)). ` +
91
106
  "Renew it in the MyŠkoda app under Profile > Smart Home (https://go.skoda.eu/api-keys).");
92
107
  }
93
- schedule(delayMs, kind) {
108
+ schedule(delayMs) {
94
109
  if (this.stopped) {
95
110
  return;
96
111
  }
97
112
  clearTimeout(this.pollTimer);
98
113
  this.pollTimer = setTimeout(() => {
99
- void this.poll(kind);
114
+ void this.poll();
100
115
  }, Math.max(0, delayMs));
101
116
  this.pollTimer.unref();
102
117
  }
103
- poll(kind) {
104
- // A command may schedule a refresh while a poll is running; the running poll is enough.
105
- this.inFlight ??= this.fetch(kind).finally(() => {
118
+ poll() {
119
+ this.inFlight ??= this.fetch().finally(() => {
106
120
  this.inFlight = undefined;
107
121
  });
108
122
  return this.inFlight;
109
123
  }
110
- async fetch(kind) {
124
+ async fetch() {
111
125
  try {
112
- const response = await this.options.pollClient.getVehicle(kind);
113
- this.current = mergeSnapshot(this.current, response, Date.now());
126
+ const response = await this.options.client.getVehicle();
127
+ this.current = this.applyLocalState(mergeSnapshot(this.current, response, Date.now()));
114
128
  if (this.failures > 0 || this.lastErrorKey) {
115
129
  this.options.log.info("Connection to the MyŠkoda API restored");
116
130
  }
117
131
  this.failures = 0;
118
132
  this.lastErrorKey = undefined;
119
133
  this.options.log.debug(`Vehicle data updated (${response.errors?.length ?? 0} partial-data notice(s))`);
120
- this.schedule(this.intervalMs, "poll");
134
+ this.schedule(this.intervalMs);
121
135
  }
122
136
  catch (error) {
123
- this.handlePollError(error, kind);
137
+ this.handlePollError(error);
124
138
  }
125
139
  this.armStaleTimer();
126
140
  this.emit();
127
141
  }
128
- handlePollError(error, kind) {
142
+ handlePollError(error) {
129
143
  const { log } = this.options;
130
144
  const now = Date.now();
131
145
  if (error instanceof BudgetExhaustedError) {
132
- log.debug(`Request budget exhausted, next ${kind} at ${new Date(error.availableAt).toISOString()}`);
133
- this.schedule(error.availableAt - now + 1000, kind);
146
+ log.debug(`Request budget exhausted, next update at ${new Date(error.availableAt).toISOString()}`);
147
+ this.schedule(error.availableAt - now + 1000);
134
148
  return;
135
149
  }
136
150
  this.failures++;
@@ -139,13 +153,13 @@ export class VehicleController {
139
153
  this.logOnce(`${error.status}:${error.problemType ?? ""}`, () => {
140
154
  log.error(`${describeConfigError(error)} Retrying every hour.`);
141
155
  });
142
- this.schedule(CONFIG_ERROR_RETRY_MS, "poll");
156
+ this.schedule(CONFIG_ERROR_RETRY_MS);
143
157
  return;
144
158
  }
145
159
  if (error.status === 429 || error.status === 503) {
146
160
  const retryMs = (error.retryAfterSeconds ?? 0) * 1000;
147
161
  log.warn(`Vehicle update deferred (${error.message}); retrying in ${formatDelay(Math.max(retryMs, this.backoffMs()))}`);
148
- this.schedule(Math.max(retryMs, this.backoffMs()), "poll");
162
+ this.schedule(Math.max(retryMs, this.backoffMs()));
149
163
  return;
150
164
  }
151
165
  if (error.status === 400) {
@@ -161,7 +175,43 @@ export class VehicleController {
161
175
  else {
162
176
  log.error(`Unexpected error while updating the vehicle: ${error instanceof Error ? error.message : String(error)}`);
163
177
  }
164
- this.schedule(this.backoffMs(), "poll");
178
+ this.schedule(this.backoffMs());
179
+ }
180
+ /**
181
+ * Re-applies optimistic patches the vehicle has not confirmed yet, and hides operations the
182
+ * vehicle rejected as unsupported.
183
+ */
184
+ applyLocalState(snapshot) {
185
+ const now = snapshot.fetchedAt;
186
+ this.pending = this.pending.filter((patch) => now - patch.sentAt < OPTIMISTIC_TTL_MS &&
187
+ !reportedSince(snapshot.vehicle, patch));
188
+ if (this.pending.length === 0 && this.rejectedOperations.size === 0) {
189
+ return snapshot;
190
+ }
191
+ const patched = structuredClone(snapshot);
192
+ for (const patch of this.pending) {
193
+ patch.apply(patched.vehicle);
194
+ }
195
+ this.removeRejectedOperations(patched.vehicle);
196
+ return patched;
197
+ }
198
+ /** Remembered until restart: the vehicle lacks the capability, so retrying does not help. */
199
+ rejectOperations(operations) {
200
+ for (const name of operations) {
201
+ this.rejectedOperations.add(name);
202
+ }
203
+ this.options.log.warn(`The vehicle does not support ${operations.join(", ")}; the control will be removed`);
204
+ if (this.current) {
205
+ const patched = structuredClone(this.current);
206
+ this.removeRejectedOperations(patched.vehicle);
207
+ this.current = patched;
208
+ this.emit();
209
+ }
210
+ }
211
+ removeRejectedOperations(vehicle) {
212
+ if (vehicle.operations && this.rejectedOperations.size > 0) {
213
+ vehicle.operations = vehicle.operations.filter((operation) => !this.rejectedOperations.has(operation.name));
214
+ }
165
215
  }
166
216
  /** Exponential backoff starting at the polling interval, capped at 30 minutes (or the interval if longer). */
167
217
  backoffMs() {
@@ -197,6 +247,18 @@ export class VehicleController {
197
247
  }
198
248
  }
199
249
  }
250
+ function capturedAt(vehicle, part) {
251
+ return vehicle?.[part]?.carCapturedTimestamp;
252
+ }
253
+ /** The vehicle has reported the part since the command: a new timestamp, captured after sending. */
254
+ function reportedSince(vehicle, patch) {
255
+ const captured = capturedAt(vehicle, patch.part);
256
+ if (captured === undefined || captured === patch.capturedBefore) {
257
+ return false;
258
+ }
259
+ const capturedMs = Date.parse(captured);
260
+ return Number.isFinite(capturedMs) && capturedMs > patch.sentAt;
261
+ }
200
262
  function describeConfigError(error) {
201
263
  switch (error.problemType) {
202
264
  case "api-key-expired":
@@ -1 +1 @@
1
- {"version":3,"file":"vehicleController.js","sourceRoot":"","sources":["../../src/vehicle/vehicleController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vehicleController.js","sourceRoot":"","sources":["../../src/vehicle/vehicleController.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@thecloudseeker/homebridge-skoda",
3
3
  "displayName": "Homebridge Škoda",
4
- "version": "0.1.3",
4
+ "version": "0.3.0",
5
5
  "description": "Homebridge plugin for Škoda vehicles using the official MyŠkoda Public API.",
6
6
  "author": {
7
7
  "name": "thecloudseeker",