@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.
- package/CHANGELOG.md +14 -0
- package/README.md +44 -22
- package/config.schema.json +25 -6
- package/dist/accessory/services/battery.d.ts +21 -0
- package/dist/accessory/services/battery.js +38 -1
- package/dist/accessory/services/battery.js.map +1 -1
- package/dist/accessory/services/body.d.ts +2 -2
- package/dist/accessory/services/body.js +1 -0
- package/dist/accessory/services/body.js.map +1 -1
- package/dist/accessory/services/charging.js +31 -13
- package/dist/accessory/services/charging.js.map +1 -1
- package/dist/accessory/services/climate.js +51 -23
- package/dist/accessory/services/climate.js.map +1 -1
- package/dist/accessory/services/common.d.ts +8 -5
- package/dist/accessory/services/common.js +13 -8
- package/dist/accessory/services/common.js.map +1 -1
- package/dist/accessory/vehicleAccessory.d.ts +5 -2
- package/dist/accessory/vehicleAccessory.js +32 -5
- package/dist/accessory/vehicleAccessory.js.map +1 -1
- package/dist/api/client.js +6 -4
- package/dist/api/client.js.map +1 -1
- package/dist/config.d.ts +8 -1
- package/dist/config.js +8 -3
- package/dist/config.js.map +1 -1
- package/dist/platform.js +12 -2
- package/dist/platform.js.map +1 -1
- package/dist/vehicle/mapping.d.ts +8 -0
- package/dist/vehicle/mapping.js +23 -0
- package/dist/vehicle/mapping.js.map +1 -1
- package/dist/vehicle/snapshot.js +21 -0
- package/dist/vehicle/snapshot.js.map +1 -1
- package/dist/vehicle/vehicleController.d.ts +31 -5
- package/dist/vehicle/vehicleController.js +80 -11
- package/dist/vehicle/vehicleController.js.map +1 -1
- 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():
|
|
34
|
-
|
|
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>,
|
|
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,
|
|
81
|
+
async command(label, send, options) {
|
|
77
82
|
try {
|
|
78
|
-
await this.ctx.controller.runCommand(label, send,
|
|
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":"
|
|
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
|
|
5
|
-
*
|
|
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
|
|
11
|
-
*
|
|
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.
|
|
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":"
|
|
1
|
+
{"version":3,"file":"vehicleAccessory.js","sourceRoot":"","sources":["../../src/accessory/vehicleAccessory.ts"],"names":[],"mappings":"AACA,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,WAAW,EACX,sBAAsB,EACtB,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,+GAA+G;AAC/G,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IAME;IALZ,QAAQ,CAAmB;IAC3B,kBAAkB,GAAG,IAAI,GAAG,EAAgC,CAAC;IAC9E,iGAAiG;IACzF,aAAa,CAAqB;IAE1C,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,WAAW,CAAC,GAAG,CAAC;YACpB,IAAI,sBAAsB,CAAC,GAAG,CAAC;YAC/B,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,MAAM,SAAS,GACb,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,SAAS,KAAK,IAAI,CAAC,aAAa,CAAC;QACtE,IAAI,CAAC,aAAa,GAAG,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC;QAC/D,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,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,OAAO,IAAI,SAAS,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBACvD,MAAM,KAAK,GACT,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACnD,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACpD,IAAI,KAAK,GAAG,gCAAgC,EAAE,CAAC;oBAC7C,OAAO,CAAC,MAAM,EAAE,CAAC;oBACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;oBAChC,SAAS;gBACX,CAAC;YACH,CAAC;YACD,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACpC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAChD,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC;gBACtC,SAAS;YACX,CAAC;YACD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClD,CAAC;YACD,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC3C,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,OAAO,CAAC;gBACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;CACF"}
|
package/dist/api/client.js
CHANGED
|
@@ -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
|
-
|
|
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);
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAMrB,OAAO,EACL,aAAa,GAMd,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,gBAAgB,GAAG,0CAA0C,CAAC;AAC3E,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAelC;;;;GAIG;AACH,MAAM,OAAO,cAAc;IAII;IAHZ,OAAO,CAAS;IAChB,SAAS,CAAe;IAEzC,YAA6B,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;QACzD,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IAC1C,CAAC;IAED,4GAA4G;IAC5G,KAAK,CAAC,UAAU,CACd,OAA2B,MAAM,EACjC,QAAgC,aAAa;QAE7C,MAAM,KAAK,GAAG,YAAY,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoB,CAAC;IACpD,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACjD,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB,CAAC,4BAAoC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,iBAAiB,EAAE;YAC5C,4BAA4B;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB,CAClB,aAAgD;QAEhD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,EAAE,aAAa,CAAC,CAAC;IACxE,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACxD,CAAC;IAED,qBAAqB,CACnB,aAAiD;QAEjD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,0BAA0B,EAAE,aAAa,CAAC,CAAC;IACzE,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACzD,CAAC;IAED,sBAAsB;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IAC3D,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAC1D,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,MAAsB,EACtB,IAAY,EACZ,IAAa;QAEb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACnE,uFAAuF;QACvF,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,MAAc,EACd,IAAY,EACZ,IAAiB,EACjB,IAAa,EACb,KAAK,GAAG,EAAE;QAEV,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,oBAAoB,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,oBAAoB,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;QACrG,MAAM,OAAO,GAA2B;YACtC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YAC/B,MAAM,EAAE,4CAA4C;SACrD,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACjD,CAAC;QACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAC/C,CAAC;QAED,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;gBACnC,MAAM;gBACN,OAAO;gBACP,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAC3D,MAAM,EAAE,WAAW,CAAC,OAAO,CACzB,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAC7C;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8EAA8E;YAC9E,MAAM,IAAI,iBAAiB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAEjE,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC1E,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,iBAAiB,GAAG,eAAe,CACvC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CACpC,CAAC;QACF,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
95
|
-
DEFAULT_COMMAND_REFRESH_DELAY_SECONDS
|
|
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 };
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
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
|
-
|
|
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
|
}
|
package/dist/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
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;
|
package/dist/vehicle/mapping.js
CHANGED
|
@@ -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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"}
|
package/dist/vehicle/snapshot.js
CHANGED
|
@@ -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":"
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/vehicle/snapshot.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAqBzC,mEAAmE;AACnE,MAAM,YAAY,GAA4B;IAC5C,MAAM,EAAE,gBAAgB;IACxB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,UAAU;IACpB,eAAe,EAAE,kBAAkB;IACnC,eAAe,EAAE,kBAAkB;IACnC,gBAAgB,EAAE,mBAAmB;IACrC,iBAAiB,EAAE,oBAAoB;IACvC,QAAQ,EAAE,UAAU;IACpB,gBAAgB,EAAE,mBAAmB;IACrC,UAAU,EAAE,YAAY;CACzB,CAAC;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAc,CAAC;AAEzD,MAAM,QAAQ,GAAG,CAAC,MAA+B,EAAE,IAAY,EAAE,EAAE,CACjE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAqC,EACrC,QAAyB,EACzB,GAAW;IAEX,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IACrC,MAAM,OAAO,GAAY,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;IACjD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,IACE,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS;gBAC1B,QAAQ,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,EACpD,CAAC;gBACD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AAC7C,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,WAAW,CACzB,QAAyB,EACzB,GAAY;IAEZ,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC;QAClE,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,gBAAgB,CAC9B,QAAyB,EACzB,GAAG,KAAsB;IAEzB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;IAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAC1B,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CACxD,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,QAAyB,EACzB,IAA8C;IAE9C,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,aAAa,CAAC;AACxD,CAAC;AAED,yFAAyF;AACzF,SAAS,gBAAgB,CAAC,QAAyB;IACjD,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACpD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAyB,EACzB,OAA6B;IAE7B,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS,CAAC;QACf,KAAK,qBAAqB;YACxB,OAAO,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC3C,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,+EAA+E;YAC/E,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACnD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACvB,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/C,CAAC;YACD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,iBAAiB;YACpB,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACpC,KAAK,UAAU;YACb,OAAO,gBAAgB,CAAC,QAAQ,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QACrE,KAAK,eAAe;YAClB,OAAO,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QACxD,KAAK,SAAS;YACZ,OAAO,gBAAgB,CACrB,QAAQ,EACR,sBAAsB,EACtB,qBAAqB,CACtB,CAAC;QACJ,KAAK,kBAAkB;YACrB,OAAO,gBAAgB,CACrB,QAAQ,EACR,uBAAuB,EACvB,sBAAsB,CACvB,CAAC;QACJ,KAAK,mBAAmB;YACtB,OAAO,gBAAgB,CACrB,QAAQ,EACR,wBAAwB,EACxB,uBAAuB,CACxB,CAAC;QACJ,KAAK,UAAU;YACb,OAAO,WAAW,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAClD,KAAK,OAAO;YACV,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACtE,KAAK,SAAS;YACZ,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACxE,KAAK,OAAO;YACV,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACrE,KAAK,QAAQ;YACX,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACtE,KAAK,SAAS;YACZ,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACvE,KAAK,QAAQ;YACX,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACvE,KAAK,MAAM;YACT,OAAO,kBAAkB,CACvB,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CACxE,CAAC;IACN,CAAC;AACH,CAAC"}
|