@camstack/addon-provider-mqtt-ha 0.1.5 → 0.1.7
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/dist/addon.js +341 -37
- package/dist/addon.mjs +341 -37
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -33,7 +33,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
33
33
|
}) : target, mod));
|
|
34
34
|
var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
35
35
|
//#endregion
|
|
36
|
-
//#region ../types/dist/event-category-
|
|
36
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
37
37
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
38
38
|
EventCategory["SystemBoot"] = "system.boot";
|
|
39
39
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -112,9 +112,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
112
112
|
/**
|
|
113
113
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
114
114
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
115
|
-
* alert centre turns it into one
|
|
115
|
+
* alert centre turns it into one critical alert.
|
|
116
116
|
*/
|
|
117
117
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
118
|
+
/**
|
|
119
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
120
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
121
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
122
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
123
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
124
|
+
* event may be dropped (D8, D11).
|
|
125
|
+
*/
|
|
126
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
118
127
|
EventCategory["AddonError"] = "addon.error";
|
|
119
128
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
120
129
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -5439,7 +5448,7 @@ var ZodIssueCode = {
|
|
|
5439
5448
|
var ZodFirstPartyTypeKind;
|
|
5440
5449
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5441
5450
|
//#endregion
|
|
5442
|
-
//#region ../types/dist/sleep-
|
|
5451
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
5443
5452
|
/**
|
|
5444
5453
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5445
5454
|
* window to float samples (D455).
|
|
@@ -13202,7 +13211,14 @@ var AlertSeveritySchema = _enum([
|
|
|
13202
13211
|
]);
|
|
13203
13212
|
var AlertActionSchema = object({
|
|
13204
13213
|
label: string(),
|
|
13205
|
-
href: string().optional()
|
|
13214
|
+
href: string().optional(),
|
|
13215
|
+
/**
|
|
13216
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
13217
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
13218
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
13219
|
+
* the SPA has no such route and would bounce to the home page.
|
|
13220
|
+
*/
|
|
13221
|
+
navigation: _enum(["app", "server"]).optional()
|
|
13206
13222
|
});
|
|
13207
13223
|
var AlertStatusSchema = _enum([
|
|
13208
13224
|
"active",
|
|
@@ -17583,7 +17599,11 @@ var deviceDiscoveryCapability = {
|
|
|
17583
17599
|
};
|
|
17584
17600
|
/**
|
|
17585
17601
|
* `device-adoption` — generic discovery + adoption surface,
|
|
17586
|
-
* system-scoped
|
|
17602
|
+
* system-scoped collection (one provider per integration addon), routed
|
|
17603
|
+
* by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
|
|
17604
|
+
* pin model as `connection-test`. The admin UI keeps using
|
|
17605
|
+
* `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
|
|
17606
|
+
* successor to `ha-discovery`:
|
|
17587
17607
|
* keyed by `integrationId` (the addon resolves integrationId → broker
|
|
17588
17608
|
* internally) rather than a connection-specific `brokerId`, and it
|
|
17589
17609
|
* REUSES the shared `DiscoveredChildDevice` candidate type from
|
|
@@ -17748,7 +17768,7 @@ var ResyncResultSchema = object({
|
|
|
17748
17768
|
var deviceAdoptionCapability = {
|
|
17749
17769
|
name: "device-adoption",
|
|
17750
17770
|
scope: "system",
|
|
17751
|
-
mode: "
|
|
17771
|
+
mode: "collection",
|
|
17752
17772
|
status: {
|
|
17753
17773
|
schema: AdoptionStatusSchema,
|
|
17754
17774
|
kind: "poll"
|
|
@@ -41931,6 +41951,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
41931
41951
|
"server-updated",
|
|
41932
41952
|
"export-completed",
|
|
41933
41953
|
"backup-completed",
|
|
41954
|
+
"alert-critical",
|
|
41955
|
+
"alert-error",
|
|
41956
|
+
"alert-critical-resolved",
|
|
41934
41957
|
"camera-online",
|
|
41935
41958
|
"camera-offline",
|
|
41936
41959
|
"camera-disabled",
|
|
@@ -51007,7 +51030,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
51007
51030
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
51008
51031
|
kind: "mutation",
|
|
51009
51032
|
auth: "admin"
|
|
51010
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
51033
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
51034
|
+
clear: boolean(),
|
|
51035
|
+
repointLocationId: string().optional()
|
|
51036
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
51011
51037
|
kind: "mutation",
|
|
51012
51038
|
auth: "admin"
|
|
51013
51039
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -55263,6 +55289,11 @@ onStatusChanged: { data: object({
|
|
|
55263
55289
|
*
|
|
55264
55290
|
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
55265
55291
|
* provider refreshes the slice on an interval and eagerly after commands.
|
|
55292
|
+
*
|
|
55293
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
55294
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
55295
|
+
* the link is down, or the description does not carry it) and is never
|
|
55296
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
55266
55297
|
*/
|
|
55267
55298
|
var DishwasherStateSchema = _enum([
|
|
55268
55299
|
"idle",
|
|
@@ -55272,35 +55303,155 @@ var DishwasherStateSchema = _enum([
|
|
|
55272
55303
|
"error",
|
|
55273
55304
|
"unavailable"
|
|
55274
55305
|
]);
|
|
55306
|
+
/**
|
|
55307
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
55308
|
+
* view for compact surfaces; this is what the appliance said.
|
|
55309
|
+
*/
|
|
55310
|
+
var DishwasherOperationStateSchema = _enum([
|
|
55311
|
+
"Inactive",
|
|
55312
|
+
"Ready",
|
|
55313
|
+
"DelayedStart",
|
|
55314
|
+
"Run",
|
|
55315
|
+
"Pause",
|
|
55316
|
+
"ActionRequired",
|
|
55317
|
+
"Finished",
|
|
55318
|
+
"Error",
|
|
55319
|
+
"Aborting"
|
|
55320
|
+
]);
|
|
55321
|
+
/**
|
|
55322
|
+
* Why fields may be `null`:
|
|
55323
|
+
* - `available` — the link is up and the description is loaded;
|
|
55324
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
55325
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
55326
|
+
* be loaded, so its values cannot be decoded.
|
|
55327
|
+
*/
|
|
55328
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
55329
|
+
"available",
|
|
55330
|
+
"offline",
|
|
55331
|
+
"description-missing"
|
|
55332
|
+
]);
|
|
55275
55333
|
var DishwasherConsumableLevelSchema = _enum([
|
|
55276
55334
|
"ok",
|
|
55277
55335
|
"low",
|
|
55278
55336
|
"empty"
|
|
55279
55337
|
]);
|
|
55280
55338
|
var DishwasherStatusSchema = object({
|
|
55339
|
+
availability: DishwasherAvailabilitySchema,
|
|
55340
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
55281
55341
|
state: DishwasherStateSchema,
|
|
55282
|
-
/**
|
|
55342
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
55343
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
55344
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
55283
55345
|
program: string().nullable(),
|
|
55284
|
-
/**
|
|
55346
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
55347
|
+
selectedProgram: string().nullable(),
|
|
55348
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
55285
55349
|
availablePrograms: array(string()),
|
|
55286
|
-
/**
|
|
55287
|
-
|
|
55350
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
55351
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
55352
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
55353
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
55288
55354
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
55289
55355
|
progressPercent: number().min(0).max(100).nullable(),
|
|
55290
|
-
/** True when the door is reported open. */
|
|
55291
|
-
doorOpen: boolean(),
|
|
55292
|
-
/** True when
|
|
55293
|
-
|
|
55294
|
-
/**
|
|
55295
|
-
|
|
55356
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
55357
|
+
doorOpen: boolean().nullable(),
|
|
55358
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
55359
|
+
doorLocked: boolean().nullable(),
|
|
55360
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
55361
|
+
remoteStartAllowed: boolean().nullable(),
|
|
55362
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
55363
|
+
remoteControlActive: boolean().nullable(),
|
|
55364
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
55365
|
+
localControlActive: boolean().nullable(),
|
|
55366
|
+
/** Main power / switched-on state; null when not known. */
|
|
55367
|
+
powerOn: boolean().nullable(),
|
|
55368
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55369
|
+
powerState: string().nullable(),
|
|
55296
55370
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55297
55371
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55298
|
-
|
|
55299
|
-
|
|
55372
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
55373
|
+
halfLoad: boolean().nullable(),
|
|
55374
|
+
hygienePlus: boolean().nullable(),
|
|
55375
|
+
/** Extra dry option when the appliance exposes it. */
|
|
55376
|
+
extraDry: boolean().nullable(),
|
|
55377
|
+
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
55378
|
+
intensiveZone: boolean().nullable(),
|
|
55379
|
+
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
55380
|
+
varioSpeedPlus: boolean().nullable(),
|
|
55381
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
55382
|
+
childLock: boolean().nullable(),
|
|
55383
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
55384
|
+
activeEvents: array(string()),
|
|
55385
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
55300
55386
|
errorCode: number().nullable(),
|
|
55387
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
55301
55388
|
errorLabel: string().nullable(),
|
|
55389
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
55302
55390
|
lastFetchedAt: number()
|
|
55303
55391
|
});
|
|
55392
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
55393
|
+
/** A value a program option or setting can take. */
|
|
55394
|
+
var DishwasherValueSchema = union([
|
|
55395
|
+
boolean(),
|
|
55396
|
+
string(),
|
|
55397
|
+
number()
|
|
55398
|
+
]);
|
|
55399
|
+
var DishwasherAccessSchema = _enum([
|
|
55400
|
+
"none",
|
|
55401
|
+
"read",
|
|
55402
|
+
"readWrite",
|
|
55403
|
+
"writeOnly",
|
|
55404
|
+
"readStatic"
|
|
55405
|
+
]);
|
|
55406
|
+
/**
|
|
55407
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
55408
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
55409
|
+
*/
|
|
55410
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
55411
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
55412
|
+
key: string(),
|
|
55413
|
+
/** Last segment of the key, for display. */
|
|
55414
|
+
name: string(),
|
|
55415
|
+
type: _enum([
|
|
55416
|
+
"boolean",
|
|
55417
|
+
"number",
|
|
55418
|
+
"enum",
|
|
55419
|
+
"string"
|
|
55420
|
+
]),
|
|
55421
|
+
access: DishwasherAccessSchema,
|
|
55422
|
+
/** The appliance reports this entity as currently available. */
|
|
55423
|
+
available: boolean(),
|
|
55424
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
55425
|
+
unit: string().nullable(),
|
|
55426
|
+
min: number().nullable(),
|
|
55427
|
+
max: number().nullable(),
|
|
55428
|
+
step: number().nullable(),
|
|
55429
|
+
/** Allowed members of an enum; null for other types. */
|
|
55430
|
+
enumValues: array(string()).nullable(),
|
|
55431
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
55432
|
+
});
|
|
55433
|
+
var DishwasherProgramSchema = object({
|
|
55434
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
55435
|
+
key: string(),
|
|
55436
|
+
name: string(),
|
|
55437
|
+
/** The appliance currently offers this program. */
|
|
55438
|
+
available: boolean(),
|
|
55439
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
55440
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
55441
|
+
});
|
|
55442
|
+
var DishwasherOptionsSchema = object({
|
|
55443
|
+
availability: DishwasherAvailabilitySchema,
|
|
55444
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
55445
|
+
supportsStart: boolean(),
|
|
55446
|
+
supportsPause: boolean(),
|
|
55447
|
+
supportsResume: boolean(),
|
|
55448
|
+
supportsStop: boolean(),
|
|
55449
|
+
supportsPower: boolean(),
|
|
55450
|
+
/** Every program the description lists, with its options. */
|
|
55451
|
+
programs: array(DishwasherProgramSchema),
|
|
55452
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
55453
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
55454
|
+
});
|
|
55304
55455
|
var dishwasherCapability = {
|
|
55305
55456
|
name: "dishwasher",
|
|
55306
55457
|
scope: "device",
|
|
@@ -55308,58 +55459,102 @@ var dishwasherCapability = {
|
|
|
55308
55459
|
mode: "singleton",
|
|
55309
55460
|
deviceTypes: [DeviceType.Dishwasher],
|
|
55310
55461
|
methods: {
|
|
55311
|
-
|
|
55462
|
+
/**
|
|
55463
|
+
* Start a program. Without `program` the selected one starts. `options` are
|
|
55464
|
+
* option feature keys; each is checked against the program's constraints.
|
|
55465
|
+
*/
|
|
55466
|
+
start: method(object({
|
|
55467
|
+
deviceId: DeviceIdSchema,
|
|
55468
|
+
program: string().min(1).optional(),
|
|
55469
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
55470
|
+
}), _void(), {
|
|
55312
55471
|
kind: "mutation",
|
|
55313
55472
|
auth: "protected"
|
|
55314
55473
|
}),
|
|
55315
|
-
pause: method(object({ deviceId:
|
|
55474
|
+
pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55316
55475
|
kind: "mutation",
|
|
55317
55476
|
auth: "protected"
|
|
55318
55477
|
}),
|
|
55319
|
-
|
|
55478
|
+
resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55320
55479
|
kind: "mutation",
|
|
55321
55480
|
auth: "protected"
|
|
55322
55481
|
}),
|
|
55482
|
+
stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55483
|
+
kind: "mutation",
|
|
55484
|
+
auth: "protected"
|
|
55485
|
+
}),
|
|
55486
|
+
/** Select (not start) a program; refused when the appliance does not offer it. */
|
|
55323
55487
|
setProgram: method(object({
|
|
55324
|
-
deviceId:
|
|
55488
|
+
deviceId: DeviceIdSchema,
|
|
55325
55489
|
program: string().min(1)
|
|
55326
55490
|
}), _void(), {
|
|
55327
55491
|
kind: "mutation",
|
|
55328
55492
|
auth: "protected"
|
|
55329
55493
|
}),
|
|
55330
55494
|
setPower: method(object({
|
|
55331
|
-
deviceId:
|
|
55495
|
+
deviceId: DeviceIdSchema,
|
|
55332
55496
|
on: boolean()
|
|
55333
55497
|
}), _void(), {
|
|
55334
55498
|
kind: "mutation",
|
|
55335
55499
|
auth: "protected"
|
|
55336
55500
|
}),
|
|
55337
55501
|
setHalfLoad: method(object({
|
|
55338
|
-
deviceId:
|
|
55502
|
+
deviceId: DeviceIdSchema,
|
|
55339
55503
|
on: boolean()
|
|
55340
55504
|
}), _void(), {
|
|
55341
55505
|
kind: "mutation",
|
|
55342
55506
|
auth: "protected"
|
|
55343
55507
|
}),
|
|
55344
55508
|
setHygienePlus: method(object({
|
|
55345
|
-
deviceId:
|
|
55509
|
+
deviceId: DeviceIdSchema,
|
|
55346
55510
|
on: boolean()
|
|
55347
55511
|
}), _void(), {
|
|
55348
55512
|
kind: "mutation",
|
|
55349
55513
|
auth: "protected"
|
|
55350
55514
|
}),
|
|
55515
|
+
setExtraDry: method(object({
|
|
55516
|
+
deviceId: DeviceIdSchema,
|
|
55517
|
+
on: boolean()
|
|
55518
|
+
}), _void(), {
|
|
55519
|
+
kind: "mutation",
|
|
55520
|
+
auth: "protected"
|
|
55521
|
+
}),
|
|
55522
|
+
setIntensiveZone: method(object({
|
|
55523
|
+
deviceId: DeviceIdSchema,
|
|
55524
|
+
on: boolean()
|
|
55525
|
+
}), _void(), {
|
|
55526
|
+
kind: "mutation",
|
|
55527
|
+
auth: "protected"
|
|
55528
|
+
}),
|
|
55529
|
+
setVarioSpeedPlus: method(object({
|
|
55530
|
+
deviceId: DeviceIdSchema,
|
|
55531
|
+
on: boolean()
|
|
55532
|
+
}), _void(), {
|
|
55533
|
+
kind: "mutation",
|
|
55534
|
+
auth: "protected"
|
|
55535
|
+
}),
|
|
55536
|
+
setChildLock: method(object({
|
|
55537
|
+
deviceId: DeviceIdSchema,
|
|
55538
|
+
on: boolean()
|
|
55539
|
+
}), _void(), {
|
|
55540
|
+
kind: "mutation",
|
|
55541
|
+
auth: "protected"
|
|
55542
|
+
}),
|
|
55543
|
+
/**
|
|
55544
|
+
* Write any option or setting by feature key. Refused when the description does
|
|
55545
|
+
* not list it, it is not writable or not available now, or the value is outside
|
|
55546
|
+
* its declared range / members.
|
|
55547
|
+
*/
|
|
55351
55548
|
setOption: method(object({
|
|
55352
|
-
deviceId:
|
|
55549
|
+
deviceId: DeviceIdSchema,
|
|
55353
55550
|
key: string().min(1),
|
|
55354
|
-
value:
|
|
55355
|
-
boolean(),
|
|
55356
|
-
string(),
|
|
55357
|
-
number()
|
|
55358
|
-
])
|
|
55551
|
+
value: DishwasherValueSchema
|
|
55359
55552
|
}), _void(), {
|
|
55360
55553
|
kind: "mutation",
|
|
55361
55554
|
auth: "protected"
|
|
55362
|
-
})
|
|
55555
|
+
}),
|
|
55556
|
+
/** What this appliance can do, from its own description — the UI is derived from it. */
|
|
55557
|
+
getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
|
|
55363
55558
|
},
|
|
55364
55559
|
status: {
|
|
55365
55560
|
schema: DishwasherStatusSchema,
|
|
@@ -69308,6 +69503,12 @@ Object.freeze({
|
|
|
69308
69503
|
addonId: null,
|
|
69309
69504
|
access: "view"
|
|
69310
69505
|
},
|
|
69506
|
+
"dishwasher.getOptions": {
|
|
69507
|
+
capName: "dishwasher",
|
|
69508
|
+
capScope: "device",
|
|
69509
|
+
addonId: null,
|
|
69510
|
+
access: "view"
|
|
69511
|
+
},
|
|
69311
69512
|
"dishwasher.getStatus": {
|
|
69312
69513
|
capName: "dishwasher",
|
|
69313
69514
|
capScope: "device",
|
|
@@ -69320,6 +69521,24 @@ Object.freeze({
|
|
|
69320
69521
|
addonId: null,
|
|
69321
69522
|
access: "create"
|
|
69322
69523
|
},
|
|
69524
|
+
"dishwasher.resume": {
|
|
69525
|
+
capName: "dishwasher",
|
|
69526
|
+
capScope: "device",
|
|
69527
|
+
addonId: null,
|
|
69528
|
+
access: "create"
|
|
69529
|
+
},
|
|
69530
|
+
"dishwasher.setChildLock": {
|
|
69531
|
+
capName: "dishwasher",
|
|
69532
|
+
capScope: "device",
|
|
69533
|
+
addonId: null,
|
|
69534
|
+
access: "create"
|
|
69535
|
+
},
|
|
69536
|
+
"dishwasher.setExtraDry": {
|
|
69537
|
+
capName: "dishwasher",
|
|
69538
|
+
capScope: "device",
|
|
69539
|
+
addonId: null,
|
|
69540
|
+
access: "create"
|
|
69541
|
+
},
|
|
69323
69542
|
"dishwasher.setHalfLoad": {
|
|
69324
69543
|
capName: "dishwasher",
|
|
69325
69544
|
capScope: "device",
|
|
@@ -69332,6 +69551,12 @@ Object.freeze({
|
|
|
69332
69551
|
addonId: null,
|
|
69333
69552
|
access: "create"
|
|
69334
69553
|
},
|
|
69554
|
+
"dishwasher.setIntensiveZone": {
|
|
69555
|
+
capName: "dishwasher",
|
|
69556
|
+
capScope: "device",
|
|
69557
|
+
addonId: null,
|
|
69558
|
+
access: "create"
|
|
69559
|
+
},
|
|
69335
69560
|
"dishwasher.setOption": {
|
|
69336
69561
|
capName: "dishwasher",
|
|
69337
69562
|
capScope: "device",
|
|
@@ -69350,6 +69575,12 @@ Object.freeze({
|
|
|
69350
69575
|
addonId: null,
|
|
69351
69576
|
access: "create"
|
|
69352
69577
|
},
|
|
69578
|
+
"dishwasher.setVarioSpeedPlus": {
|
|
69579
|
+
capName: "dishwasher",
|
|
69580
|
+
capScope: "device",
|
|
69581
|
+
addonId: null,
|
|
69582
|
+
access: "create"
|
|
69583
|
+
},
|
|
69353
69584
|
"dishwasher.start": {
|
|
69354
69585
|
capName: "dishwasher",
|
|
69355
69586
|
capScope: "device",
|
|
@@ -73796,6 +74027,12 @@ Object.freeze({
|
|
|
73796
74027
|
addonId: null,
|
|
73797
74028
|
access: "view"
|
|
73798
74029
|
},
|
|
74030
|
+
"storageMigration.moverClearance": {
|
|
74031
|
+
capName: "storage-migration",
|
|
74032
|
+
capScope: "system",
|
|
74033
|
+
addonId: null,
|
|
74034
|
+
access: "view"
|
|
74035
|
+
},
|
|
73799
74036
|
"storageMigration.movers": {
|
|
73800
74037
|
capName: "storage-migration",
|
|
73801
74038
|
capScope: "system",
|
|
@@ -75989,6 +76226,11 @@ Object.freeze({
|
|
|
75989
76226
|
form: "single",
|
|
75990
76227
|
optional: false
|
|
75991
76228
|
}],
|
|
76229
|
+
"dishwasher.getOptions": [{
|
|
76230
|
+
name: "deviceId",
|
|
76231
|
+
form: "single",
|
|
76232
|
+
optional: false
|
|
76233
|
+
}],
|
|
75992
76234
|
"dishwasher.getStatus": [{
|
|
75993
76235
|
name: "deviceId",
|
|
75994
76236
|
form: "single",
|
|
@@ -75999,6 +76241,21 @@ Object.freeze({
|
|
|
75999
76241
|
form: "single",
|
|
76000
76242
|
optional: false
|
|
76001
76243
|
}],
|
|
76244
|
+
"dishwasher.resume": [{
|
|
76245
|
+
name: "deviceId",
|
|
76246
|
+
form: "single",
|
|
76247
|
+
optional: false
|
|
76248
|
+
}],
|
|
76249
|
+
"dishwasher.setChildLock": [{
|
|
76250
|
+
name: "deviceId",
|
|
76251
|
+
form: "single",
|
|
76252
|
+
optional: false
|
|
76253
|
+
}],
|
|
76254
|
+
"dishwasher.setExtraDry": [{
|
|
76255
|
+
name: "deviceId",
|
|
76256
|
+
form: "single",
|
|
76257
|
+
optional: false
|
|
76258
|
+
}],
|
|
76002
76259
|
"dishwasher.setHalfLoad": [{
|
|
76003
76260
|
name: "deviceId",
|
|
76004
76261
|
form: "single",
|
|
@@ -76009,6 +76266,11 @@ Object.freeze({
|
|
|
76009
76266
|
form: "single",
|
|
76010
76267
|
optional: false
|
|
76011
76268
|
}],
|
|
76269
|
+
"dishwasher.setIntensiveZone": [{
|
|
76270
|
+
name: "deviceId",
|
|
76271
|
+
form: "single",
|
|
76272
|
+
optional: false
|
|
76273
|
+
}],
|
|
76012
76274
|
"dishwasher.setOption": [{
|
|
76013
76275
|
name: "deviceId",
|
|
76014
76276
|
form: "single",
|
|
@@ -76024,6 +76286,11 @@ Object.freeze({
|
|
|
76024
76286
|
form: "single",
|
|
76025
76287
|
optional: false
|
|
76026
76288
|
}],
|
|
76289
|
+
"dishwasher.setVarioSpeedPlus": [{
|
|
76290
|
+
name: "deviceId",
|
|
76291
|
+
form: "single",
|
|
76292
|
+
optional: false
|
|
76293
|
+
}],
|
|
76027
76294
|
"dishwasher.start": [{
|
|
76028
76295
|
name: "deviceId",
|
|
76029
76296
|
form: "single",
|
|
@@ -78065,6 +78332,9 @@ new Map(Object.entries({
|
|
|
78065
78332
|
"wrapper-update-available": "system",
|
|
78066
78333
|
"backup-completed": "system",
|
|
78067
78334
|
"export-completed": "system",
|
|
78335
|
+
"alert-critical": "system",
|
|
78336
|
+
"alert-error": "system",
|
|
78337
|
+
"alert-critical-resolved": "system",
|
|
78068
78338
|
"storage-location-low": "system",
|
|
78069
78339
|
"storage-location-critical": "system",
|
|
78070
78340
|
"storage-location-ok": "system",
|
|
@@ -78189,6 +78459,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
78189
78459
|
"storage-location-ok"
|
|
78190
78460
|
]
|
|
78191
78461
|
},
|
|
78462
|
+
{
|
|
78463
|
+
id: "alerts",
|
|
78464
|
+
family: "system",
|
|
78465
|
+
label: "Alerts",
|
|
78466
|
+
kinds: [
|
|
78467
|
+
"alert-critical",
|
|
78468
|
+
"alert-error",
|
|
78469
|
+
"alert-critical-resolved"
|
|
78470
|
+
]
|
|
78471
|
+
},
|
|
78192
78472
|
{
|
|
78193
78473
|
id: "alarm",
|
|
78194
78474
|
family: "alarm",
|
|
@@ -78233,6 +78513,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
78233
78513
|
return [[descriptor.kind, field]];
|
|
78234
78514
|
})));
|
|
78235
78515
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
78516
|
+
object({
|
|
78517
|
+
phase: _enum(["raised", "resolved"]),
|
|
78518
|
+
episodeId: string().min(1),
|
|
78519
|
+
alertId: string().min(1),
|
|
78520
|
+
severity: AlertSeveritySchema,
|
|
78521
|
+
category: string(),
|
|
78522
|
+
title: string(),
|
|
78523
|
+
message: string(),
|
|
78524
|
+
sourceType: string().optional(),
|
|
78525
|
+
sourceId: string().optional(),
|
|
78526
|
+
nodeId: string().optional(),
|
|
78527
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
78528
|
+
actionUrl: string().optional(),
|
|
78529
|
+
at: number()
|
|
78530
|
+
});
|
|
78236
78531
|
var RULE_BODY_ONLY = ["body"];
|
|
78237
78532
|
var RULE_TEXT = ["title", "body"];
|
|
78238
78533
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -78242,6 +78537,11 @@ var TANK = [
|
|
|
78242
78537
|
"device-tank-full",
|
|
78243
78538
|
"device-tank-normal"
|
|
78244
78539
|
];
|
|
78540
|
+
var ALERT_EPISODE = [
|
|
78541
|
+
"alert-critical",
|
|
78542
|
+
"alert-error",
|
|
78543
|
+
"alert-critical-resolved"
|
|
78544
|
+
];
|
|
78245
78545
|
var UPDATES = [
|
|
78246
78546
|
"addon-update-available",
|
|
78247
78547
|
"server-update-available",
|
|
@@ -78434,14 +78734,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
78434
78734
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
78435
78735
|
([...RULE_TEXT], [...TANK]),
|
|
78436
78736
|
[...RULE_TEXT],
|
|
78437
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
78438
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
78439
|
-
[...RULE_TEXT],
|
|
78737
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
78738
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
78440
78739
|
[...RULE_TEXT],
|
|
78441
78740
|
[...RULE_TEXT],
|
|
78442
78741
|
[...RULE_TEXT],
|
|
78443
78742
|
[...RULE_TEXT],
|
|
78444
78743
|
[...RULE_TEXT],
|
|
78744
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78445
78745
|
[...RULE_TEXT],
|
|
78446
78746
|
[...RULE_TEXT],
|
|
78447
78747
|
[...RULE_TEXT],
|
|
@@ -78459,7 +78759,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
78459
78759
|
[...RULE_TEXT],
|
|
78460
78760
|
[...RULE_TEXT],
|
|
78461
78761
|
[...RULE_TEXT],
|
|
78462
|
-
[...RULE_TEXT],
|
|
78762
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78763
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78764
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78765
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78766
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78463
78767
|
[...RULE_TEXT],
|
|
78464
78768
|
[...RULE_TEXT],
|
|
78465
78769
|
[...RULE_TEXT],
|
package/dist/addon.mjs
CHANGED
|
@@ -34,7 +34,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
34
34
|
var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
35
35
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
36
36
|
//#endregion
|
|
37
|
-
//#region ../types/dist/event-category-
|
|
37
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
38
38
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
39
39
|
EventCategory["SystemBoot"] = "system.boot";
|
|
40
40
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -113,9 +113,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
113
113
|
/**
|
|
114
114
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
115
115
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
116
|
-
* alert centre turns it into one
|
|
116
|
+
* alert centre turns it into one critical alert.
|
|
117
117
|
*/
|
|
118
118
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
119
|
+
/**
|
|
120
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
121
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
122
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
123
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
124
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
125
|
+
* event may be dropped (D8, D11).
|
|
126
|
+
*/
|
|
127
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
119
128
|
EventCategory["AddonError"] = "addon.error";
|
|
120
129
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
121
130
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -5440,7 +5449,7 @@ var ZodIssueCode = {
|
|
|
5440
5449
|
var ZodFirstPartyTypeKind;
|
|
5441
5450
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5442
5451
|
//#endregion
|
|
5443
|
-
//#region ../types/dist/sleep-
|
|
5452
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
5444
5453
|
/**
|
|
5445
5454
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5446
5455
|
* window to float samples (D455).
|
|
@@ -13203,7 +13212,14 @@ var AlertSeveritySchema = _enum([
|
|
|
13203
13212
|
]);
|
|
13204
13213
|
var AlertActionSchema = object({
|
|
13205
13214
|
label: string(),
|
|
13206
|
-
href: string().optional()
|
|
13215
|
+
href: string().optional(),
|
|
13216
|
+
/**
|
|
13217
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
13218
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
13219
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
13220
|
+
* the SPA has no such route and would bounce to the home page.
|
|
13221
|
+
*/
|
|
13222
|
+
navigation: _enum(["app", "server"]).optional()
|
|
13207
13223
|
});
|
|
13208
13224
|
var AlertStatusSchema = _enum([
|
|
13209
13225
|
"active",
|
|
@@ -17584,7 +17600,11 @@ var deviceDiscoveryCapability = {
|
|
|
17584
17600
|
};
|
|
17585
17601
|
/**
|
|
17586
17602
|
* `device-adoption` — generic discovery + adoption surface,
|
|
17587
|
-
* system-scoped
|
|
17603
|
+
* system-scoped collection (one provider per integration addon), routed
|
|
17604
|
+
* by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
|
|
17605
|
+
* pin model as `connection-test`. The admin UI keeps using
|
|
17606
|
+
* `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
|
|
17607
|
+
* successor to `ha-discovery`:
|
|
17588
17608
|
* keyed by `integrationId` (the addon resolves integrationId → broker
|
|
17589
17609
|
* internally) rather than a connection-specific `brokerId`, and it
|
|
17590
17610
|
* REUSES the shared `DiscoveredChildDevice` candidate type from
|
|
@@ -17749,7 +17769,7 @@ var ResyncResultSchema = object({
|
|
|
17749
17769
|
var deviceAdoptionCapability = {
|
|
17750
17770
|
name: "device-adoption",
|
|
17751
17771
|
scope: "system",
|
|
17752
|
-
mode: "
|
|
17772
|
+
mode: "collection",
|
|
17753
17773
|
status: {
|
|
17754
17774
|
schema: AdoptionStatusSchema,
|
|
17755
17775
|
kind: "poll"
|
|
@@ -41932,6 +41952,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
41932
41952
|
"server-updated",
|
|
41933
41953
|
"export-completed",
|
|
41934
41954
|
"backup-completed",
|
|
41955
|
+
"alert-critical",
|
|
41956
|
+
"alert-error",
|
|
41957
|
+
"alert-critical-resolved",
|
|
41935
41958
|
"camera-online",
|
|
41936
41959
|
"camera-offline",
|
|
41937
41960
|
"camera-disabled",
|
|
@@ -51008,7 +51031,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
51008
51031
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
51009
51032
|
kind: "mutation",
|
|
51010
51033
|
auth: "admin"
|
|
51011
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
51034
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
51035
|
+
clear: boolean(),
|
|
51036
|
+
repointLocationId: string().optional()
|
|
51037
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
51012
51038
|
kind: "mutation",
|
|
51013
51039
|
auth: "admin"
|
|
51014
51040
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -55264,6 +55290,11 @@ onStatusChanged: { data: object({
|
|
|
55264
55290
|
*
|
|
55265
55291
|
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
55266
55292
|
* provider refreshes the slice on an interval and eagerly after commands.
|
|
55293
|
+
*
|
|
55294
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
55295
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
55296
|
+
* the link is down, or the description does not carry it) and is never
|
|
55297
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
55267
55298
|
*/
|
|
55268
55299
|
var DishwasherStateSchema = _enum([
|
|
55269
55300
|
"idle",
|
|
@@ -55273,35 +55304,155 @@ var DishwasherStateSchema = _enum([
|
|
|
55273
55304
|
"error",
|
|
55274
55305
|
"unavailable"
|
|
55275
55306
|
]);
|
|
55307
|
+
/**
|
|
55308
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
55309
|
+
* view for compact surfaces; this is what the appliance said.
|
|
55310
|
+
*/
|
|
55311
|
+
var DishwasherOperationStateSchema = _enum([
|
|
55312
|
+
"Inactive",
|
|
55313
|
+
"Ready",
|
|
55314
|
+
"DelayedStart",
|
|
55315
|
+
"Run",
|
|
55316
|
+
"Pause",
|
|
55317
|
+
"ActionRequired",
|
|
55318
|
+
"Finished",
|
|
55319
|
+
"Error",
|
|
55320
|
+
"Aborting"
|
|
55321
|
+
]);
|
|
55322
|
+
/**
|
|
55323
|
+
* Why fields may be `null`:
|
|
55324
|
+
* - `available` — the link is up and the description is loaded;
|
|
55325
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
55326
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
55327
|
+
* be loaded, so its values cannot be decoded.
|
|
55328
|
+
*/
|
|
55329
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
55330
|
+
"available",
|
|
55331
|
+
"offline",
|
|
55332
|
+
"description-missing"
|
|
55333
|
+
]);
|
|
55276
55334
|
var DishwasherConsumableLevelSchema = _enum([
|
|
55277
55335
|
"ok",
|
|
55278
55336
|
"low",
|
|
55279
55337
|
"empty"
|
|
55280
55338
|
]);
|
|
55281
55339
|
var DishwasherStatusSchema = object({
|
|
55340
|
+
availability: DishwasherAvailabilitySchema,
|
|
55341
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
55282
55342
|
state: DishwasherStateSchema,
|
|
55283
|
-
/**
|
|
55343
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
55344
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
55345
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
55284
55346
|
program: string().nullable(),
|
|
55285
|
-
/**
|
|
55347
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
55348
|
+
selectedProgram: string().nullable(),
|
|
55349
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
55286
55350
|
availablePrograms: array(string()),
|
|
55287
|
-
/**
|
|
55288
|
-
|
|
55351
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
55352
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
55353
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
55354
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
55289
55355
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
55290
55356
|
progressPercent: number().min(0).max(100).nullable(),
|
|
55291
|
-
/** True when the door is reported open. */
|
|
55292
|
-
doorOpen: boolean(),
|
|
55293
|
-
/** True when
|
|
55294
|
-
|
|
55295
|
-
/**
|
|
55296
|
-
|
|
55357
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
55358
|
+
doorOpen: boolean().nullable(),
|
|
55359
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
55360
|
+
doorLocked: boolean().nullable(),
|
|
55361
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
55362
|
+
remoteStartAllowed: boolean().nullable(),
|
|
55363
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
55364
|
+
remoteControlActive: boolean().nullable(),
|
|
55365
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
55366
|
+
localControlActive: boolean().nullable(),
|
|
55367
|
+
/** Main power / switched-on state; null when not known. */
|
|
55368
|
+
powerOn: boolean().nullable(),
|
|
55369
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55370
|
+
powerState: string().nullable(),
|
|
55297
55371
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55298
55372
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55299
|
-
|
|
55300
|
-
|
|
55373
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
55374
|
+
halfLoad: boolean().nullable(),
|
|
55375
|
+
hygienePlus: boolean().nullable(),
|
|
55376
|
+
/** Extra dry option when the appliance exposes it. */
|
|
55377
|
+
extraDry: boolean().nullable(),
|
|
55378
|
+
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
55379
|
+
intensiveZone: boolean().nullable(),
|
|
55380
|
+
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
55381
|
+
varioSpeedPlus: boolean().nullable(),
|
|
55382
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
55383
|
+
childLock: boolean().nullable(),
|
|
55384
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
55385
|
+
activeEvents: array(string()),
|
|
55386
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
55301
55387
|
errorCode: number().nullable(),
|
|
55388
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
55302
55389
|
errorLabel: string().nullable(),
|
|
55390
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
55303
55391
|
lastFetchedAt: number()
|
|
55304
55392
|
});
|
|
55393
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
55394
|
+
/** A value a program option or setting can take. */
|
|
55395
|
+
var DishwasherValueSchema = union([
|
|
55396
|
+
boolean(),
|
|
55397
|
+
string(),
|
|
55398
|
+
number()
|
|
55399
|
+
]);
|
|
55400
|
+
var DishwasherAccessSchema = _enum([
|
|
55401
|
+
"none",
|
|
55402
|
+
"read",
|
|
55403
|
+
"readWrite",
|
|
55404
|
+
"writeOnly",
|
|
55405
|
+
"readStatic"
|
|
55406
|
+
]);
|
|
55407
|
+
/**
|
|
55408
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
55409
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
55410
|
+
*/
|
|
55411
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
55412
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
55413
|
+
key: string(),
|
|
55414
|
+
/** Last segment of the key, for display. */
|
|
55415
|
+
name: string(),
|
|
55416
|
+
type: _enum([
|
|
55417
|
+
"boolean",
|
|
55418
|
+
"number",
|
|
55419
|
+
"enum",
|
|
55420
|
+
"string"
|
|
55421
|
+
]),
|
|
55422
|
+
access: DishwasherAccessSchema,
|
|
55423
|
+
/** The appliance reports this entity as currently available. */
|
|
55424
|
+
available: boolean(),
|
|
55425
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
55426
|
+
unit: string().nullable(),
|
|
55427
|
+
min: number().nullable(),
|
|
55428
|
+
max: number().nullable(),
|
|
55429
|
+
step: number().nullable(),
|
|
55430
|
+
/** Allowed members of an enum; null for other types. */
|
|
55431
|
+
enumValues: array(string()).nullable(),
|
|
55432
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
55433
|
+
});
|
|
55434
|
+
var DishwasherProgramSchema = object({
|
|
55435
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
55436
|
+
key: string(),
|
|
55437
|
+
name: string(),
|
|
55438
|
+
/** The appliance currently offers this program. */
|
|
55439
|
+
available: boolean(),
|
|
55440
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
55441
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
55442
|
+
});
|
|
55443
|
+
var DishwasherOptionsSchema = object({
|
|
55444
|
+
availability: DishwasherAvailabilitySchema,
|
|
55445
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
55446
|
+
supportsStart: boolean(),
|
|
55447
|
+
supportsPause: boolean(),
|
|
55448
|
+
supportsResume: boolean(),
|
|
55449
|
+
supportsStop: boolean(),
|
|
55450
|
+
supportsPower: boolean(),
|
|
55451
|
+
/** Every program the description lists, with its options. */
|
|
55452
|
+
programs: array(DishwasherProgramSchema),
|
|
55453
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
55454
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
55455
|
+
});
|
|
55305
55456
|
var dishwasherCapability = {
|
|
55306
55457
|
name: "dishwasher",
|
|
55307
55458
|
scope: "device",
|
|
@@ -55309,58 +55460,102 @@ var dishwasherCapability = {
|
|
|
55309
55460
|
mode: "singleton",
|
|
55310
55461
|
deviceTypes: [DeviceType.Dishwasher],
|
|
55311
55462
|
methods: {
|
|
55312
|
-
|
|
55463
|
+
/**
|
|
55464
|
+
* Start a program. Without `program` the selected one starts. `options` are
|
|
55465
|
+
* option feature keys; each is checked against the program's constraints.
|
|
55466
|
+
*/
|
|
55467
|
+
start: method(object({
|
|
55468
|
+
deviceId: DeviceIdSchema,
|
|
55469
|
+
program: string().min(1).optional(),
|
|
55470
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
55471
|
+
}), _void(), {
|
|
55313
55472
|
kind: "mutation",
|
|
55314
55473
|
auth: "protected"
|
|
55315
55474
|
}),
|
|
55316
|
-
pause: method(object({ deviceId:
|
|
55475
|
+
pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55317
55476
|
kind: "mutation",
|
|
55318
55477
|
auth: "protected"
|
|
55319
55478
|
}),
|
|
55320
|
-
|
|
55479
|
+
resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55321
55480
|
kind: "mutation",
|
|
55322
55481
|
auth: "protected"
|
|
55323
55482
|
}),
|
|
55483
|
+
stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55484
|
+
kind: "mutation",
|
|
55485
|
+
auth: "protected"
|
|
55486
|
+
}),
|
|
55487
|
+
/** Select (not start) a program; refused when the appliance does not offer it. */
|
|
55324
55488
|
setProgram: method(object({
|
|
55325
|
-
deviceId:
|
|
55489
|
+
deviceId: DeviceIdSchema,
|
|
55326
55490
|
program: string().min(1)
|
|
55327
55491
|
}), _void(), {
|
|
55328
55492
|
kind: "mutation",
|
|
55329
55493
|
auth: "protected"
|
|
55330
55494
|
}),
|
|
55331
55495
|
setPower: method(object({
|
|
55332
|
-
deviceId:
|
|
55496
|
+
deviceId: DeviceIdSchema,
|
|
55333
55497
|
on: boolean()
|
|
55334
55498
|
}), _void(), {
|
|
55335
55499
|
kind: "mutation",
|
|
55336
55500
|
auth: "protected"
|
|
55337
55501
|
}),
|
|
55338
55502
|
setHalfLoad: method(object({
|
|
55339
|
-
deviceId:
|
|
55503
|
+
deviceId: DeviceIdSchema,
|
|
55340
55504
|
on: boolean()
|
|
55341
55505
|
}), _void(), {
|
|
55342
55506
|
kind: "mutation",
|
|
55343
55507
|
auth: "protected"
|
|
55344
55508
|
}),
|
|
55345
55509
|
setHygienePlus: method(object({
|
|
55346
|
-
deviceId:
|
|
55510
|
+
deviceId: DeviceIdSchema,
|
|
55347
55511
|
on: boolean()
|
|
55348
55512
|
}), _void(), {
|
|
55349
55513
|
kind: "mutation",
|
|
55350
55514
|
auth: "protected"
|
|
55351
55515
|
}),
|
|
55516
|
+
setExtraDry: method(object({
|
|
55517
|
+
deviceId: DeviceIdSchema,
|
|
55518
|
+
on: boolean()
|
|
55519
|
+
}), _void(), {
|
|
55520
|
+
kind: "mutation",
|
|
55521
|
+
auth: "protected"
|
|
55522
|
+
}),
|
|
55523
|
+
setIntensiveZone: method(object({
|
|
55524
|
+
deviceId: DeviceIdSchema,
|
|
55525
|
+
on: boolean()
|
|
55526
|
+
}), _void(), {
|
|
55527
|
+
kind: "mutation",
|
|
55528
|
+
auth: "protected"
|
|
55529
|
+
}),
|
|
55530
|
+
setVarioSpeedPlus: method(object({
|
|
55531
|
+
deviceId: DeviceIdSchema,
|
|
55532
|
+
on: boolean()
|
|
55533
|
+
}), _void(), {
|
|
55534
|
+
kind: "mutation",
|
|
55535
|
+
auth: "protected"
|
|
55536
|
+
}),
|
|
55537
|
+
setChildLock: method(object({
|
|
55538
|
+
deviceId: DeviceIdSchema,
|
|
55539
|
+
on: boolean()
|
|
55540
|
+
}), _void(), {
|
|
55541
|
+
kind: "mutation",
|
|
55542
|
+
auth: "protected"
|
|
55543
|
+
}),
|
|
55544
|
+
/**
|
|
55545
|
+
* Write any option or setting by feature key. Refused when the description does
|
|
55546
|
+
* not list it, it is not writable or not available now, or the value is outside
|
|
55547
|
+
* its declared range / members.
|
|
55548
|
+
*/
|
|
55352
55549
|
setOption: method(object({
|
|
55353
|
-
deviceId:
|
|
55550
|
+
deviceId: DeviceIdSchema,
|
|
55354
55551
|
key: string().min(1),
|
|
55355
|
-
value:
|
|
55356
|
-
boolean(),
|
|
55357
|
-
string(),
|
|
55358
|
-
number()
|
|
55359
|
-
])
|
|
55552
|
+
value: DishwasherValueSchema
|
|
55360
55553
|
}), _void(), {
|
|
55361
55554
|
kind: "mutation",
|
|
55362
55555
|
auth: "protected"
|
|
55363
|
-
})
|
|
55556
|
+
}),
|
|
55557
|
+
/** What this appliance can do, from its own description — the UI is derived from it. */
|
|
55558
|
+
getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
|
|
55364
55559
|
},
|
|
55365
55560
|
status: {
|
|
55366
55561
|
schema: DishwasherStatusSchema,
|
|
@@ -69309,6 +69504,12 @@ Object.freeze({
|
|
|
69309
69504
|
addonId: null,
|
|
69310
69505
|
access: "view"
|
|
69311
69506
|
},
|
|
69507
|
+
"dishwasher.getOptions": {
|
|
69508
|
+
capName: "dishwasher",
|
|
69509
|
+
capScope: "device",
|
|
69510
|
+
addonId: null,
|
|
69511
|
+
access: "view"
|
|
69512
|
+
},
|
|
69312
69513
|
"dishwasher.getStatus": {
|
|
69313
69514
|
capName: "dishwasher",
|
|
69314
69515
|
capScope: "device",
|
|
@@ -69321,6 +69522,24 @@ Object.freeze({
|
|
|
69321
69522
|
addonId: null,
|
|
69322
69523
|
access: "create"
|
|
69323
69524
|
},
|
|
69525
|
+
"dishwasher.resume": {
|
|
69526
|
+
capName: "dishwasher",
|
|
69527
|
+
capScope: "device",
|
|
69528
|
+
addonId: null,
|
|
69529
|
+
access: "create"
|
|
69530
|
+
},
|
|
69531
|
+
"dishwasher.setChildLock": {
|
|
69532
|
+
capName: "dishwasher",
|
|
69533
|
+
capScope: "device",
|
|
69534
|
+
addonId: null,
|
|
69535
|
+
access: "create"
|
|
69536
|
+
},
|
|
69537
|
+
"dishwasher.setExtraDry": {
|
|
69538
|
+
capName: "dishwasher",
|
|
69539
|
+
capScope: "device",
|
|
69540
|
+
addonId: null,
|
|
69541
|
+
access: "create"
|
|
69542
|
+
},
|
|
69324
69543
|
"dishwasher.setHalfLoad": {
|
|
69325
69544
|
capName: "dishwasher",
|
|
69326
69545
|
capScope: "device",
|
|
@@ -69333,6 +69552,12 @@ Object.freeze({
|
|
|
69333
69552
|
addonId: null,
|
|
69334
69553
|
access: "create"
|
|
69335
69554
|
},
|
|
69555
|
+
"dishwasher.setIntensiveZone": {
|
|
69556
|
+
capName: "dishwasher",
|
|
69557
|
+
capScope: "device",
|
|
69558
|
+
addonId: null,
|
|
69559
|
+
access: "create"
|
|
69560
|
+
},
|
|
69336
69561
|
"dishwasher.setOption": {
|
|
69337
69562
|
capName: "dishwasher",
|
|
69338
69563
|
capScope: "device",
|
|
@@ -69351,6 +69576,12 @@ Object.freeze({
|
|
|
69351
69576
|
addonId: null,
|
|
69352
69577
|
access: "create"
|
|
69353
69578
|
},
|
|
69579
|
+
"dishwasher.setVarioSpeedPlus": {
|
|
69580
|
+
capName: "dishwasher",
|
|
69581
|
+
capScope: "device",
|
|
69582
|
+
addonId: null,
|
|
69583
|
+
access: "create"
|
|
69584
|
+
},
|
|
69354
69585
|
"dishwasher.start": {
|
|
69355
69586
|
capName: "dishwasher",
|
|
69356
69587
|
capScope: "device",
|
|
@@ -73797,6 +74028,12 @@ Object.freeze({
|
|
|
73797
74028
|
addonId: null,
|
|
73798
74029
|
access: "view"
|
|
73799
74030
|
},
|
|
74031
|
+
"storageMigration.moverClearance": {
|
|
74032
|
+
capName: "storage-migration",
|
|
74033
|
+
capScope: "system",
|
|
74034
|
+
addonId: null,
|
|
74035
|
+
access: "view"
|
|
74036
|
+
},
|
|
73800
74037
|
"storageMigration.movers": {
|
|
73801
74038
|
capName: "storage-migration",
|
|
73802
74039
|
capScope: "system",
|
|
@@ -75990,6 +76227,11 @@ Object.freeze({
|
|
|
75990
76227
|
form: "single",
|
|
75991
76228
|
optional: false
|
|
75992
76229
|
}],
|
|
76230
|
+
"dishwasher.getOptions": [{
|
|
76231
|
+
name: "deviceId",
|
|
76232
|
+
form: "single",
|
|
76233
|
+
optional: false
|
|
76234
|
+
}],
|
|
75993
76235
|
"dishwasher.getStatus": [{
|
|
75994
76236
|
name: "deviceId",
|
|
75995
76237
|
form: "single",
|
|
@@ -76000,6 +76242,21 @@ Object.freeze({
|
|
|
76000
76242
|
form: "single",
|
|
76001
76243
|
optional: false
|
|
76002
76244
|
}],
|
|
76245
|
+
"dishwasher.resume": [{
|
|
76246
|
+
name: "deviceId",
|
|
76247
|
+
form: "single",
|
|
76248
|
+
optional: false
|
|
76249
|
+
}],
|
|
76250
|
+
"dishwasher.setChildLock": [{
|
|
76251
|
+
name: "deviceId",
|
|
76252
|
+
form: "single",
|
|
76253
|
+
optional: false
|
|
76254
|
+
}],
|
|
76255
|
+
"dishwasher.setExtraDry": [{
|
|
76256
|
+
name: "deviceId",
|
|
76257
|
+
form: "single",
|
|
76258
|
+
optional: false
|
|
76259
|
+
}],
|
|
76003
76260
|
"dishwasher.setHalfLoad": [{
|
|
76004
76261
|
name: "deviceId",
|
|
76005
76262
|
form: "single",
|
|
@@ -76010,6 +76267,11 @@ Object.freeze({
|
|
|
76010
76267
|
form: "single",
|
|
76011
76268
|
optional: false
|
|
76012
76269
|
}],
|
|
76270
|
+
"dishwasher.setIntensiveZone": [{
|
|
76271
|
+
name: "deviceId",
|
|
76272
|
+
form: "single",
|
|
76273
|
+
optional: false
|
|
76274
|
+
}],
|
|
76013
76275
|
"dishwasher.setOption": [{
|
|
76014
76276
|
name: "deviceId",
|
|
76015
76277
|
form: "single",
|
|
@@ -76025,6 +76287,11 @@ Object.freeze({
|
|
|
76025
76287
|
form: "single",
|
|
76026
76288
|
optional: false
|
|
76027
76289
|
}],
|
|
76290
|
+
"dishwasher.setVarioSpeedPlus": [{
|
|
76291
|
+
name: "deviceId",
|
|
76292
|
+
form: "single",
|
|
76293
|
+
optional: false
|
|
76294
|
+
}],
|
|
76028
76295
|
"dishwasher.start": [{
|
|
76029
76296
|
name: "deviceId",
|
|
76030
76297
|
form: "single",
|
|
@@ -78066,6 +78333,9 @@ new Map(Object.entries({
|
|
|
78066
78333
|
"wrapper-update-available": "system",
|
|
78067
78334
|
"backup-completed": "system",
|
|
78068
78335
|
"export-completed": "system",
|
|
78336
|
+
"alert-critical": "system",
|
|
78337
|
+
"alert-error": "system",
|
|
78338
|
+
"alert-critical-resolved": "system",
|
|
78069
78339
|
"storage-location-low": "system",
|
|
78070
78340
|
"storage-location-critical": "system",
|
|
78071
78341
|
"storage-location-ok": "system",
|
|
@@ -78190,6 +78460,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
78190
78460
|
"storage-location-ok"
|
|
78191
78461
|
]
|
|
78192
78462
|
},
|
|
78463
|
+
{
|
|
78464
|
+
id: "alerts",
|
|
78465
|
+
family: "system",
|
|
78466
|
+
label: "Alerts",
|
|
78467
|
+
kinds: [
|
|
78468
|
+
"alert-critical",
|
|
78469
|
+
"alert-error",
|
|
78470
|
+
"alert-critical-resolved"
|
|
78471
|
+
]
|
|
78472
|
+
},
|
|
78193
78473
|
{
|
|
78194
78474
|
id: "alarm",
|
|
78195
78475
|
family: "alarm",
|
|
@@ -78234,6 +78514,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
78234
78514
|
return [[descriptor.kind, field]];
|
|
78235
78515
|
})));
|
|
78236
78516
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
78517
|
+
object({
|
|
78518
|
+
phase: _enum(["raised", "resolved"]),
|
|
78519
|
+
episodeId: string().min(1),
|
|
78520
|
+
alertId: string().min(1),
|
|
78521
|
+
severity: AlertSeveritySchema,
|
|
78522
|
+
category: string(),
|
|
78523
|
+
title: string(),
|
|
78524
|
+
message: string(),
|
|
78525
|
+
sourceType: string().optional(),
|
|
78526
|
+
sourceId: string().optional(),
|
|
78527
|
+
nodeId: string().optional(),
|
|
78528
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
78529
|
+
actionUrl: string().optional(),
|
|
78530
|
+
at: number()
|
|
78531
|
+
});
|
|
78237
78532
|
var RULE_BODY_ONLY = ["body"];
|
|
78238
78533
|
var RULE_TEXT = ["title", "body"];
|
|
78239
78534
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -78243,6 +78538,11 @@ var TANK = [
|
|
|
78243
78538
|
"device-tank-full",
|
|
78244
78539
|
"device-tank-normal"
|
|
78245
78540
|
];
|
|
78541
|
+
var ALERT_EPISODE = [
|
|
78542
|
+
"alert-critical",
|
|
78543
|
+
"alert-error",
|
|
78544
|
+
"alert-critical-resolved"
|
|
78545
|
+
];
|
|
78246
78546
|
var UPDATES = [
|
|
78247
78547
|
"addon-update-available",
|
|
78248
78548
|
"server-update-available",
|
|
@@ -78435,14 +78735,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
78435
78735
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
78436
78736
|
([...RULE_TEXT], [...TANK]),
|
|
78437
78737
|
[...RULE_TEXT],
|
|
78438
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
78439
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
78440
|
-
[...RULE_TEXT],
|
|
78738
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
78739
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
78441
78740
|
[...RULE_TEXT],
|
|
78442
78741
|
[...RULE_TEXT],
|
|
78443
78742
|
[...RULE_TEXT],
|
|
78444
78743
|
[...RULE_TEXT],
|
|
78445
78744
|
[...RULE_TEXT],
|
|
78745
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78446
78746
|
[...RULE_TEXT],
|
|
78447
78747
|
[...RULE_TEXT],
|
|
78448
78748
|
[...RULE_TEXT],
|
|
@@ -78460,7 +78760,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
78460
78760
|
[...RULE_TEXT],
|
|
78461
78761
|
[...RULE_TEXT],
|
|
78462
78762
|
[...RULE_TEXT],
|
|
78463
|
-
[...RULE_TEXT],
|
|
78763
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78764
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78765
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78766
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78767
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78464
78768
|
[...RULE_TEXT],
|
|
78465
78769
|
[...RULE_TEXT],
|
|
78466
78770
|
[...RULE_TEXT],
|
package/package.json
CHANGED