@thecloudseeker/homebridge-skoda 0.1.2 → 0.2.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 (35) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +44 -22
  3. package/config.schema.json +25 -6
  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 +2 -2
  8. package/dist/accessory/services/body.js +1 -0
  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 +8 -5
  15. package/dist/accessory/services/common.js +13 -8
  16. package/dist/accessory/services/common.js.map +1 -1
  17. package/dist/accessory/vehicleAccessory.d.ts +5 -2
  18. package/dist/accessory/vehicleAccessory.js +32 -5
  19. package/dist/accessory/vehicleAccessory.js.map +1 -1
  20. package/dist/api/client.js +6 -4
  21. package/dist/api/client.js.map +1 -1
  22. package/dist/config.d.ts +8 -1
  23. package/dist/config.js +8 -3
  24. package/dist/config.js.map +1 -1
  25. package/dist/platform.js +12 -2
  26. package/dist/platform.js.map +1 -1
  27. package/dist/vehicle/mapping.d.ts +8 -0
  28. package/dist/vehicle/mapping.js +23 -0
  29. package/dist/vehicle/mapping.js.map +1 -1
  30. package/dist/vehicle/snapshot.js +21 -0
  31. package/dist/vehicle/snapshot.js.map +1 -1
  32. package/dist/vehicle/vehicleController.d.ts +31 -5
  33. package/dist/vehicle/vehicleController.js +80 -11
  34. package/dist/vehicle/vehicleController.js.map +1 -1
  35. package/package.json +5 -2
@@ -4,7 +4,7 @@ import type { Vehicle } from "../../api/types.js";
4
4
  import type { FeatureToggles, VehicleSettings } from "../../config.js";
5
5
  import type { Logger } from "../../util/logger.js";
6
6
  import type { VehicleSnapshot } from "../../vehicle/snapshot.js";
7
- import type { VehicleController } from "../../vehicle/vehicleController.js";
7
+ import type { CommandOptions, VehicleController } from "../../vehicle/vehicleController.js";
8
8
  export type HAP = API["hap"];
9
9
  export type ServiceType = WithUUID<typeof Service>;
10
10
  type CharacteristicType = Parameters<Service["updateCharacteristic"]>[0];
@@ -14,6 +14,8 @@ export interface BindingContext {
14
14
  controller: VehicleController;
15
15
  settings: VehicleSettings;
16
16
  log: Logger;
17
+ /** Called after services were added or removed, so Homebridge can save its accessory cache. */
18
+ onServicesChanged?: () => void;
17
19
  }
18
20
  /**
19
21
  * One HomeKit service backed by the vehicle cache. Values are pushed into the characteristics on
@@ -29,9 +31,10 @@ export declare abstract class ServiceBinding {
29
31
  constructor(ctx: BindingContext);
30
32
  /** Whether the service exists on the (possibly cached) accessory. */
31
33
  exists(): boolean;
32
- /** Creates the service if needed and registers handlers once. */
33
- attach(): void;
34
- detach(): void;
34
+ /** Creates the service if needed and registers handlers once. Returns whether it was added. */
35
+ attach(): boolean;
36
+ /** Removes the service if it exists. Returns whether it was removed. */
37
+ detach(): boolean;
35
38
  update(snapshot: VehicleSnapshot | undefined, stale: boolean): void;
36
39
  /** Services that support `StatusFault` signal stale data with it. */
37
40
  protected get hasStatusFault(): boolean;
@@ -47,7 +50,7 @@ export declare abstract class ServiceBinding {
47
50
  * Runs a command for a set handler. A failure is reported to HomeKit as "no response" and the
48
51
  * characteristic is reverted to the cached value.
49
52
  */
50
- protected command(label: string, send: (client: SkodaApiClient) => Promise<void>, optimistic?: (vehicle: Vehicle) => void): Promise<void>;
53
+ protected command(label: string, send: (client: SkodaApiClient) => Promise<void>, options?: CommandOptions): Promise<void>;
51
54
  }
52
55
  /** Delays an action until the value has not changed for `delayMs` (sliders send many updates). */
53
56
  export declare function debounce<T>(delayMs: number, action: (value: T) => void): (value: T) => void;
@@ -16,13 +16,14 @@ export class ServiceBinding {
16
16
  return (this.ctx.accessory.getServiceById(this.serviceType, this.subtype) !==
17
17
  undefined);
18
18
  }
19
- /** Creates the service if needed and registers handlers once. */
19
+ /** Creates the service if needed and registers handlers once. Returns whether it was added. */
20
20
  attach() {
21
21
  if (this.service) {
22
- return;
22
+ return false;
23
23
  }
24
24
  const { accessory, hap } = this.ctx;
25
25
  let service = accessory.getServiceById(this.serviceType, this.subtype);
26
+ const added = !service;
26
27
  if (!service) {
27
28
  service = accessory.addService(this.serviceType, this.displayName, this.subtype);
28
29
  service.addOptionalCharacteristic(hap.Characteristic.ConfiguredName);
@@ -31,14 +32,18 @@ export class ServiceBinding {
31
32
  }
32
33
  this.service = service;
33
34
  this.configure?.(service);
35
+ return added;
34
36
  }
37
+ /** Removes the service if it exists. Returns whether it was removed. */
35
38
  detach() {
36
39
  const service = this.ctx.accessory.getServiceById(this.serviceType, this.subtype);
37
- if (service) {
38
- this.ctx.accessory.removeService(service);
39
- this.ctx.log.info(`Removed ${this.displayName}`);
40
- }
41
40
  this.service = undefined;
41
+ if (!service) {
42
+ return false;
43
+ }
44
+ this.ctx.accessory.removeService(service);
45
+ this.ctx.log.info(`Removed ${this.displayName}`);
46
+ return true;
42
47
  }
43
48
  update(snapshot, stale) {
44
49
  if (!this.service) {
@@ -73,9 +78,9 @@ export class ServiceBinding {
73
78
  * Runs a command for a set handler. A failure is reported to HomeKit as "no response" and the
74
79
  * characteristic is reverted to the cached value.
75
80
  */
76
- async command(label, send, optimistic) {
81
+ async command(label, send, options) {
77
82
  try {
78
- await this.ctx.controller.runCommand(label, send, optimistic);
83
+ await this.ctx.controller.runCommand(label, send, options);
79
84
  }
80
85
  catch {
81
86
  setTimeout(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/accessory/services/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/accessory/services/common.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,16 @@
1
1
  import type { BindingContext } from "./services/common.js";
2
2
  /**
3
3
  * One HomeKit accessory per vehicle. Services are created only for features that are enabled in
4
- * the config and that the vehicle reports as supported, and removed when the vehicle explicitly
5
- * reports them unsupported. While support is unknown (e.g. the API is unreachable), cached
4
+ * the config and that the vehicle reports as supported, and removed when two updates report them
5
+ * unsupported, so a single odd response does not cost the user the service's room and automations. While support is unknown (e.g. the API is unreachable), cached
6
6
  * services are kept as they are.
7
7
  */
8
8
  export declare class VehicleAccessory {
9
9
  private readonly ctx;
10
10
  private readonly bindings;
11
+ private readonly unsupportedUpdates;
12
+ /** `fetchedAt` of the last snapshot, so optimistic updates and stale notices are not counted. */
13
+ private lastFetchedAt;
11
14
  constructor(ctx: BindingContext);
12
15
  private sync;
13
16
  }
@@ -1,24 +1,31 @@
1
1
  import { maskVin } from "../util/redact.js";
2
2
  import { PLUGIN_VERSION } from "../settings.js";
3
3
  import { featureSupport } from "../vehicle/snapshot.js";
4
- import { BatteryBinding, StateOfChargeSensorBinding, } from "./services/battery.js";
4
+ import { BatteryBinding, FuelBinding, FuelLevelSensorBinding, StateOfChargeSensorBinding, } from "./services/battery.js";
5
5
  import { PresenceBinding, contactBindings } from "./services/body.js";
6
6
  import { ChargingBinding, ChargingLimitBinding } from "./services/charging.js";
7
7
  import { ActiveVentilationBinding, AuxiliaryHeatingBinding, ClimateBinding, } from "./services/climate.js";
8
+ /** A service is removed only after this many updates report it unsupported, with none supported in between. */
9
+ const REMOVE_AFTER_UNSUPPORTED_UPDATES = 2;
8
10
  /**
9
11
  * One HomeKit accessory per vehicle. Services are created only for features that are enabled in
10
- * the config and that the vehicle reports as supported, and removed when the vehicle explicitly
11
- * reports them unsupported. While support is unknown (e.g. the API is unreachable), cached
12
+ * the config and that the vehicle reports as supported, and removed when two updates report them
13
+ * unsupported, so a single odd response does not cost the user the service's room and automations. While support is unknown (e.g. the API is unreachable), cached
12
14
  * services are kept as they are.
13
15
  */
14
16
  export class VehicleAccessory {
15
17
  ctx;
16
18
  bindings;
19
+ unsupportedUpdates = new Map();
20
+ /** `fetchedAt` of the last snapshot, so optimistic updates and stale notices are not counted. */
21
+ lastFetchedAt;
17
22
  constructor(ctx) {
18
23
  this.ctx = ctx;
19
24
  this.bindings = [
20
25
  new BatteryBinding(ctx),
21
26
  new StateOfChargeSensorBinding(ctx),
27
+ new FuelBinding(ctx),
28
+ new FuelLevelSensorBinding(ctx),
22
29
  new ChargingBinding(ctx),
23
30
  new ChargingLimitBinding(ctx),
24
31
  new ClimateBinding(ctx),
@@ -41,20 +48,40 @@ export class VehicleAccessory {
41
48
  }
42
49
  sync(snapshot) {
43
50
  const stale = this.ctx.controller.isStale();
51
+ const newUpdate = snapshot !== undefined && snapshot.fetchedAt !== this.lastFetchedAt;
52
+ this.lastFetchedAt = snapshot?.fetchedAt ?? this.lastFetchedAt;
53
+ let changed = false;
44
54
  for (const binding of this.bindings) {
45
55
  const enabled = this.ctx.settings.features[binding.feature];
46
56
  const supported = snapshot
47
57
  ? featureSupport(snapshot, binding.feature)
48
58
  : undefined;
59
+ if (enabled && supported === false && binding.exists()) {
60
+ const count = (this.unsupportedUpdates.get(binding.feature) ?? 0) +
61
+ (newUpdate ? 1 : 0);
62
+ this.unsupportedUpdates.set(binding.feature, count);
63
+ if (count < REMOVE_AFTER_UNSUPPORTED_UPDATES) {
64
+ binding.attach();
65
+ binding.update(snapshot, stale);
66
+ continue;
67
+ }
68
+ }
49
69
  if (!enabled || supported === false) {
50
- binding.detach();
70
+ this.unsupportedUpdates.delete(binding.feature);
71
+ changed = binding.detach() || changed;
51
72
  continue;
52
73
  }
74
+ if (supported === true) {
75
+ this.unsupportedUpdates.delete(binding.feature);
76
+ }
53
77
  if (supported === true || binding.exists()) {
54
- binding.attach();
78
+ changed = binding.attach() || changed;
55
79
  binding.update(snapshot, stale);
56
80
  }
57
81
  }
82
+ if (changed) {
83
+ this.ctx.onServicesChanged?.();
84
+ }
58
85
  }
59
86
  }
60
87
  //# sourceMappingURL=vehicleAccessory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vehicleAccessory.js","sourceRoot":"","sources":["../../src/accessory/vehicleAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAwB,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EACL,cAAc,EACd,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAG/B;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IAGE;IAFZ,QAAQ,CAAmB;IAE5C,YAA6B,GAAmB;QAAnB,QAAG,GAAH,GAAG,CAAgB;QAC9C,IAAI,CAAC,QAAQ,GAAG;YACd,IAAI,cAAc,CAAC,GAAG,CAAC;YACvB,IAAI,0BAA0B,CAAC,GAAG,CAAC;YACnC,IAAI,eAAe,CAAC,GAAG,CAAC;YACxB,IAAI,oBAAoB,CAAC,GAAG,CAAC;YAC7B,IAAI,cAAc,CAAC,GAAG,CAAC;YACvB,IAAI,uBAAuB,CAAC,GAAG,CAAC;YAChC,IAAI,wBAAwB,CAAC,GAAG,CAAC;YACjC,IAAI,eAAe,CAAC,GAAG,CAAC;YACxB,GAAG,eAAe,CAAC,GAAG,CAAC;SACxB,CAAC;QAEF,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;QAC5C,GAAG,CAAC,SAAS;aACV,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC;YACzC,EAAE,iBAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;aACxD,iBAAiB,CAAC,cAAc,CAAC,KAAK,EAAE,iBAAiB,CAAC;aAC1D,iBAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACzE,iBAAiB,CAAC,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAEtE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,IAAI,CAAC,QAAqC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5D,MAAM,SAAS,GAAG,QAAQ;gBACxB,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC;gBAC3C,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACpC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC3C,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"vehicleAccessory.js","sourceRoot":"","sources":["../../src/accessory/vehicleAccessory.ts"],"names":[],"mappings":"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"}
@@ -95,14 +95,16 @@ export class SkodaApiClient {
95
95
  return response;
96
96
  }
97
97
  const retryAfterSeconds = parseRetryAfter(response.headers.get("Retry-After"));
98
+ const problem = await readProblem(response);
99
+ const problemType = parseProblemType(problem?.type);
98
100
  if (response.status === 401 ||
99
101
  response.status === 403 ||
100
- response.status === 429) {
101
- // Documented: these responses do not consume quota.
102
+ (response.status === 429 &&
103
+ problemType !== "vehicle-not-accepting-requests")) {
104
+ // Documented: 401 and 403 do not consume quota, and a rejected 429 does not prolong the
105
+ // window. Every other response counts, including one the vehicle declined.
102
106
  budget.refund();
103
107
  }
104
- const problem = await readProblem(response);
105
- const problemType = parseProblemType(problem?.type);
106
108
  if (response.status === 429 &&
107
109
  problemType !== "vehicle-not-accepting-requests") {
108
110
  budget.blockUntil(Date.now() + (retryAfterSeconds ?? 60) * 1000);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -3,6 +3,10 @@ export interface FeatureToggles {
3
3
  battery: boolean;
4
4
  /** Humidity sensor that mirrors the state of charge, for automations. */
5
5
  stateOfChargeSensor: boolean;
6
+ /** Battery service with the fuel level, for combustion vehicles. */
7
+ fuelLevel: boolean;
8
+ /** Humidity sensor that mirrors the fuel level, for automations. */
9
+ fuelLevelSensor: boolean;
6
10
  /** Outlet to start and stop charging. */
7
11
  charging: boolean;
8
12
  /** Lightbulb whose brightness sets the charging limit. */
@@ -22,6 +26,8 @@ export interface FeatureToggles {
22
26
  sunroof: boolean;
23
27
  /** Contact sensor that is closed while the vehicle is locked. */
24
28
  lock: boolean;
29
+ /** Contact sensor that is open while the lights are on. */
30
+ lights: boolean;
25
31
  }
26
32
  export declare const DEFAULT_FEATURES: Readonly<FeatureToggles>;
27
33
  export interface HomeLocation {
@@ -56,7 +62,8 @@ export declare const DEFAULT_CLIMATE_TEMPERATURE = 21;
56
62
  export declare const CLIMATE_TEMPERATURE_MIN = 16;
57
63
  export declare const CLIMATE_TEMPERATURE_MAX = 29.5;
58
64
  export declare const CLIMATE_TEMPERATURE_STEP = 0.5;
59
- export declare const DEFAULT_COMMAND_REFRESH_DELAY_SECONDS = 90;
65
+ /** 0: no follow-up refresh; the next scheduled poll confirms a command. */
66
+ export declare const DEFAULT_COMMAND_REFRESH_DELAY_SECONDS = 0;
60
67
  export type ConfigResult = {
61
68
  ok: true;
62
69
  settings: VehicleSettings;
package/dist/config.js CHANGED
@@ -3,6 +3,8 @@ import { maskVin } from "./util/redact.js";
3
3
  export const DEFAULT_FEATURES = {
4
4
  battery: true,
5
5
  stateOfChargeSensor: false,
6
+ fuelLevel: true,
7
+ fuelLevelSensor: false,
6
8
  charging: true,
7
9
  chargingLimit: true,
8
10
  climate: true,
@@ -15,6 +17,7 @@ export const DEFAULT_FEATURES = {
15
17
  bonnet: true,
16
18
  sunroof: true,
17
19
  lock: true,
20
+ lights: false,
18
21
  };
19
22
  export const DEFAULT_POLLING_INTERVAL_MINUTES = 5;
20
23
  export const MIN_POLLING_INTERVAL_MINUTES = minimumPollingIntervalMinutes(DEFAULT_RATE_LIMIT, DEFAULT_COMMAND_RESERVE);
@@ -26,7 +29,8 @@ export const DEFAULT_CLIMATE_TEMPERATURE = 21;
26
29
  export const CLIMATE_TEMPERATURE_MIN = 16;
27
30
  export const CLIMATE_TEMPERATURE_MAX = 29.5;
28
31
  export const CLIMATE_TEMPERATURE_STEP = 0.5;
29
- export const DEFAULT_COMMAND_REFRESH_DELAY_SECONDS = 90;
32
+ /** 0: no follow-up refresh; the next scheduled poll confirms a command. */
33
+ export const DEFAULT_COMMAND_REFRESH_DELAY_SECONDS = 0;
30
34
  const VIN_PATTERN = /^[A-HJ-NPR-Z0-9]{17}$/;
31
35
  const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
32
36
  function optionalString(value) {
@@ -91,8 +95,9 @@ export function parseVehicleConfig(raw, index) {
91
95
  pollingIntervalMinutes = Math.min(pollingIntervalMinutes, MAX_POLLING_INTERVAL_MINUTES);
92
96
  const climateTemperature = clampTemperature(optionalNumber(raw.climateTemperature) ?? DEFAULT_CLIMATE_TEMPERATURE);
93
97
  const lowBatteryThreshold = clamp(optionalNumber(raw.lowBatteryThreshold) ?? DEFAULT_LOW_BATTERY_THRESHOLD, 0, 100);
94
- const commandRefreshDelaySeconds = clamp(optionalNumber(raw.commandRefreshDelaySeconds) ??
95
- DEFAULT_COMMAND_REFRESH_DELAY_SECONDS, 15, 600);
98
+ const refreshDelay = optionalNumber(raw.commandRefreshDelaySeconds) ??
99
+ DEFAULT_COMMAND_REFRESH_DELAY_SECONDS;
100
+ const commandRefreshDelaySeconds = refreshDelay <= 0 ? 0 : clamp(refreshDelay, 15, 600);
96
101
  const auxiliaryHeatingDuration = optionalNumber(raw.auxiliaryHeatingDurationMinutes);
97
102
  if (errors.length > 0 || !vin || !token) {
98
103
  return { ok: false, errors };
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAkC3C,MAAM,CAAC,MAAM,gBAAgB,GAA6B;IACxD,OAAO,EAAE,IAAI;IACb,mBAAmB,EAAE,KAAK;IAC1B,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,KAAK;IACtB,QAAQ,EAAE,IAAI;IACd,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,IAAI;IACb,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,KAAK;IACxB,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,KAAK;CACd,CAAC;AA0BF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAClD,MAAM,CAAC,MAAM,4BAA4B,GAAG,6BAA6B,CACvE,kBAAkB,EAClB,uBAAuB,CACxB,CAAC;AACF,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,GAAG,EAAE,CAAC;AACpD,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAChD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAC9C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAC1C,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAC5C,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAC5C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC;AAEvD,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAQ5C,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAsB,EAAE,CACtD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEvE,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QACrD,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;QACd,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QACnB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAC9B,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,kBAAkB,CAAC,GAAY,EAAE,KAAa;IAC5D,MAAM,KAAK,GAAG,YAAY,KAAK,GAAG,CAAC;IACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,mBAAmB,CAAC,EAAE,CAAC;IAC9D,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,iBAAiB,CAAC,CAAC;IACzC,CAAC;SAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CACT,GAAG,KAAK,SAAS,OAAO,CAAC,GAAG,CAAC,mCAAmC,CACjE,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,EAAE,MAAM,CAAC,CAAC;IAE1D,MAAM,QAAQ,GAAmB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACzD,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAC3B,gBAAgB,CACW,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,QAAQ,CAAC,gBAAgB,IAAI,CAAC,IAAI,EAAE,CAAC;QACvC,QAAQ,CAAC,gBAAgB,GAAG,KAAK,CAAC;IACpC,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,sBAAsB,GACxB,cAAc,CAAC,GAAG,CAAC,sBAAsB,CAAC;QAC1C,gCAAgC,CAAC;IACnC,IAAI,sBAAsB,GAAG,4BAA4B,EAAE,CAAC;QAC1D,QAAQ,CAAC,IAAI,CACX,0BAA0B,sBAAsB,4BAA4B,4BAA4B,GAAG;YACzG,qCAAqC,4BAA4B,EAAE,CACtE,CAAC;QACF,sBAAsB,GAAG,4BAA4B,CAAC;IACxD,CAAC;IACD,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAC/B,sBAAsB,EACtB,4BAA4B,CAC7B,CAAC;IAEF,MAAM,kBAAkB,GAAG,gBAAgB,CACzC,cAAc,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,2BAA2B,CACtE,CAAC;IACF,MAAM,mBAAmB,GAAG,KAAK,CAC/B,cAAc,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,6BAA6B,EACxE,CAAC,EACD,GAAG,CACJ,CAAC;IACF,MAAM,YAAY,GAChB,cAAc,CAAC,GAAG,CAAC,0BAA0B,CAAC;QAC9C,qCAAqC,CAAC;IACxC,MAAM,0BAA0B,GAC9B,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,wBAAwB,GAAG,cAAc,CAC7C,GAAG,CAAC,+BAA+B,CACpC,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACxC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,QAAQ;QACR,QAAQ,EAAE;YACR,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1D,GAAG;YACH,KAAK;YACL,YAAY,EAAE,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC;YAC9C,IAAI;YACJ,IAAI;YACJ,sBAAsB;YACtB,mBAAmB;YACnB,kBAAkB;YAClB,mCAAmC,EACjC,OAAO,GAAG,CAAC,mCAAmC,KAAK,SAAS;gBAC1D,CAAC,CAAC,GAAG,CAAC,mCAAmC;gBACzC,CAAC,CAAC,SAAS;YACf,+BAA+B,EAC7B,wBAAwB,KAAK,SAAS;gBACpC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxD,0BAA0B;YAC1B,QAAQ;SACT;KACF,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,GAAY,EACZ,KAAa,EACb,MAAgB;IAEhB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,CAAC,EAAE,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,iCAAiC,CAAC,CAAC;QACvD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,CAAC,GAAG,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,mCAAmC,CAAC,CAAC;QACzD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,EAAE,EACF,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,0BAA0B,CAC/D,CAAC;IACF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,OAAO,GACX,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,wBAAwB,CAAC,GAAG,wBAAwB,CAAC;IAC5E,OAAO,KAAK,CAAC,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,CAAC,CAAC;AAC1E,CAAC"}
package/dist/platform.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { SkodaApiClient } from "./api/client.js";
2
- import { RateBudget } from "./api/rateBudget.js";
2
+ import { DEFAULT_RATE_LIMIT, RateBudget } from "./api/rateBudget.js";
3
3
  import { parseVehicleConfig } from "./config.js";
4
4
  import { VehicleAccessory } from "./accessory/vehicleAccessory.js";
5
5
  import { PLATFORM_NAME, PLUGIN_NAME, PLUGIN_VERSION } from "./settings.js";
@@ -103,12 +103,19 @@ export class SkodaPlatform {
103
103
  commandRefreshDelaySeconds: settings.commandRefreshDelaySeconds,
104
104
  });
105
105
  this.controllers.push(controller);
106
+ // A new vehicle is saved with its services when it is registered below.
107
+ let registered = cached !== undefined;
106
108
  new VehicleAccessory({
107
109
  hap: this.api.hap,
108
110
  accessory,
109
111
  controller,
110
112
  settings,
111
113
  log,
114
+ onServicesChanged: () => {
115
+ if (registered) {
116
+ this.api.updatePlatformAccessories([accessory]);
117
+ }
118
+ },
112
119
  });
113
120
  if (!cached) {
114
121
  // A new vehicle is published once the first poll has created its services. Services added
@@ -119,13 +126,16 @@ export class SkodaPlatform {
119
126
  return;
120
127
  }
121
128
  unsubscribe();
129
+ registered = true;
122
130
  this.api.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [
123
131
  accessory,
124
132
  ]);
125
133
  log.info("Added vehicle");
126
134
  });
127
135
  }
128
- log.info(`Polling every ${settings.pollingIntervalMinutes} min${settings.commandToken ? ", separate command key" : ""}`);
136
+ const pollsPerHour = Math.ceil(60 / settings.pollingIntervalMinutes);
137
+ log.info(`Polling every ${settings.pollingIntervalMinutes} min (${pollsPerHour} of ${DEFAULT_RATE_LIMIT} requests per hour, ` +
138
+ `${Math.max(0, DEFAULT_RATE_LIMIT - pollsPerHour)} left for commands)${settings.commandToken ? ", separate command key" : ""}`);
129
139
  controller.start();
130
140
  }
131
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,13 @@ import type { TargetTemperature, Vehicle } from "../api/types.js";
7
7
  export declare function stateOfCharge(vehicle: Vehicle): number | undefined;
8
8
  export declare function isCharging(vehicle: Vehicle): boolean | undefined;
9
9
  export declare function isPlugConnected(vehicle: Vehicle): boolean | undefined;
10
+ /** Fuel level of the combustion engine; the electric range of a hybrid does not count. */
11
+ export declare function fuelLevel(vehicle: Vehicle): number | undefined;
12
+ export interface FuelValues {
13
+ level: number | undefined;
14
+ low: boolean | undefined;
15
+ }
16
+ export declare function fuelValues(vehicle: Vehicle, lowThreshold: number): FuelValues;
10
17
  export interface BatteryValues {
11
18
  level: number | undefined;
12
19
  charging: boolean | undefined;
@@ -35,5 +42,6 @@ export interface BodyValues {
35
42
  bonnetOpen: boolean | undefined;
36
43
  sunroofOpen: boolean | undefined;
37
44
  locked: boolean | undefined;
45
+ lightsOn: boolean | undefined;
38
46
  }
39
47
  export declare function bodyValues(vehicle: Vehicle): BodyValues;
@@ -46,6 +46,22 @@ export function isPlugConnected(vehicle) {
46
46
  ? true
47
47
  : undefined;
48
48
  }
49
+ /** Fuel level of the combustion engine; the electric range of a hybrid does not count. */
50
+ export function fuelLevel(vehicle) {
51
+ const level = [
52
+ vehicle.fuelStatus?.primaryEngineRange,
53
+ vehicle.fuelStatus?.secondaryEngineRange,
54
+ ].find((range) => range?.engineType !== "ELECTRIC" &&
55
+ range?.currentFuelLevelInPercent !== undefined)?.currentFuelLevelInPercent;
56
+ return level === undefined ? undefined : clampPercent(level);
57
+ }
58
+ export function fuelValues(vehicle, lowThreshold) {
59
+ const level = fuelLevel(vehicle);
60
+ return {
61
+ level,
62
+ low: level === undefined ? undefined : level < lowThreshold,
63
+ };
64
+ }
49
65
  export function batteryValues(vehicle, lowBatteryThreshold) {
50
66
  const level = stateOfCharge(vehicle);
51
67
  return {
@@ -135,8 +151,15 @@ export function bodyValues(vehicle) {
135
151
  bonnetOpen: isOpen(detail?.bonnet),
136
152
  sunroofOpen: isOpen(detail?.sunroof),
137
153
  locked: lockState(vehicle),
154
+ lightsOn: onOff(overall?.lights),
138
155
  };
139
156
  }
157
+ function onOff(value) {
158
+ if (value === "ON") {
159
+ return true;
160
+ }
161
+ return value === "OFF" ? false : undefined;
162
+ }
140
163
  function lockState(vehicle) {
141
164
  const overall = vehicle.status?.overall;
142
165
  // reliableLockStatus reports UNLOCKED only for MOD4 vehicles, so fall back to `locked`.
@@ -1 +1 @@
1
- {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../src/vehicle/mapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../src/vehicle/mapping.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { fuelLevel } from "./mapping.js";
1
2
  /** Prefix of the `errors[].type` codes that describe each part. */
2
3
  const ERROR_PREFIX = {
3
4
  status: "VEHICLE_STATUS",
@@ -55,6 +56,14 @@ function statusFieldSupport(snapshot, read) {
55
56
  const value = read(snapshot.vehicle);
56
57
  return value !== undefined && value !== "UNSUPPORTED";
57
58
  }
59
+ /** `true` once a combustion fuel level is reported; a missing field alone is unknown. */
60
+ function fuelLevelSupport(snapshot) {
61
+ const support = partSupport(snapshot, "fuelStatus");
62
+ if (support !== true) {
63
+ return support;
64
+ }
65
+ return fuelLevel(snapshot.vehicle) === undefined ? undefined : true;
66
+ }
58
67
  /**
59
68
  * Whether the vehicle supports a feature. `undefined` means "cannot tell right now"; callers keep
60
69
  * whatever they had, so a transient outage never removes services from HomeKit.
@@ -64,6 +73,16 @@ export function featureSupport(snapshot, feature) {
64
73
  case "battery":
65
74
  case "stateOfChargeSensor":
66
75
  return partSupport(snapshot, "charging");
76
+ case "fuelLevel": {
77
+ // Vehicles with a high-voltage battery show it in the battery service instead.
78
+ const charging = partSupport(snapshot, "charging");
79
+ if (charging !== false) {
80
+ return charging === true ? false : undefined;
81
+ }
82
+ return fuelLevelSupport(snapshot);
83
+ }
84
+ case "fuelLevelSensor":
85
+ return fuelLevelSupport(snapshot);
67
86
  case "charging":
68
87
  return operationSupport(snapshot, "startCharging", "stopCharging");
69
88
  case "chargingLimit":
@@ -86,6 +105,8 @@ export function featureSupport(snapshot, feature) {
86
105
  return statusFieldSupport(snapshot, (v) => v.status?.detail.bonnet);
87
106
  case "sunroof":
88
107
  return statusFieldSupport(snapshot, (v) => v.status?.detail.sunroof);
108
+ case "lights":
109
+ return statusFieldSupport(snapshot, (v) => v.status?.overall.lights);
89
110
  case "lock":
90
111
  return statusFieldSupport(snapshot, (v) => v.status?.overall.reliableLockStatus ?? v.status?.overall.locked);
91
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/vehicle/snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/vehicle/snapshot.ts"],"names":[],"mappings":"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"}