@camstack/addon-provider-ecowitt 0.2.128 → 0.2.129
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 +264 -44
- package/dist/addon.mjs +264 -44
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
let http = require("http");
|
|
3
3
|
let events = require("events");
|
|
4
4
|
let dgram = require("dgram");
|
|
5
|
-
//#region ../types/dist/event-category-
|
|
5
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
6
6
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
7
7
|
EventCategory["SystemBoot"] = "system.boot";
|
|
8
8
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -81,9 +81,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
81
81
|
/**
|
|
82
82
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
83
83
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
84
|
-
* alert centre turns it into one
|
|
84
|
+
* alert centre turns it into one critical alert.
|
|
85
85
|
*/
|
|
86
86
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
87
|
+
/**
|
|
88
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
89
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
90
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
91
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
92
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
93
|
+
* event may be dropped (D8, D11).
|
|
94
|
+
*/
|
|
95
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
87
96
|
EventCategory["AddonError"] = "addon.error";
|
|
88
97
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
89
98
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -5408,7 +5417,7 @@ var ZodIssueCode$1 = {
|
|
|
5408
5417
|
var ZodFirstPartyTypeKind$1;
|
|
5409
5418
|
ZodFirstPartyTypeKind$1 || (ZodFirstPartyTypeKind$1 = {});
|
|
5410
5419
|
//#endregion
|
|
5411
|
-
//#region ../types/dist/sleep-
|
|
5420
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
5412
5421
|
/**
|
|
5413
5422
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5414
5423
|
* window to float samples (D455).
|
|
@@ -13185,7 +13194,14 @@ var AlertSeveritySchema = _enum([
|
|
|
13185
13194
|
]);
|
|
13186
13195
|
var AlertActionSchema = object({
|
|
13187
13196
|
label: string(),
|
|
13188
|
-
href: string().optional()
|
|
13197
|
+
href: string().optional(),
|
|
13198
|
+
/**
|
|
13199
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
13200
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
13201
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
13202
|
+
* the SPA has no such route and would bounce to the home page.
|
|
13203
|
+
*/
|
|
13204
|
+
navigation: _enum(["app", "server"]).optional()
|
|
13189
13205
|
});
|
|
13190
13206
|
var AlertStatusSchema = _enum([
|
|
13191
13207
|
"active",
|
|
@@ -42014,6 +42030,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42014
42030
|
"server-updated",
|
|
42015
42031
|
"export-completed",
|
|
42016
42032
|
"backup-completed",
|
|
42033
|
+
"alert-critical",
|
|
42034
|
+
"alert-error",
|
|
42035
|
+
"alert-critical-resolved",
|
|
42017
42036
|
"camera-online",
|
|
42018
42037
|
"camera-offline",
|
|
42019
42038
|
"camera-disabled",
|
|
@@ -51090,7 +51109,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
51090
51109
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
51091
51110
|
kind: "mutation",
|
|
51092
51111
|
auth: "admin"
|
|
51093
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
51112
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
51113
|
+
clear: boolean(),
|
|
51114
|
+
repointLocationId: string().optional()
|
|
51115
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
51094
51116
|
kind: "mutation",
|
|
51095
51117
|
auth: "admin"
|
|
51096
51118
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -55346,6 +55368,11 @@ onStatusChanged: { data: object({
|
|
|
55346
55368
|
*
|
|
55347
55369
|
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
55348
55370
|
* provider refreshes the slice on an interval and eagerly after commands.
|
|
55371
|
+
*
|
|
55372
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
55373
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
55374
|
+
* the link is down, or the description does not carry it) and is never
|
|
55375
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
55349
55376
|
*/
|
|
55350
55377
|
var DishwasherStateSchema = _enum([
|
|
55351
55378
|
"idle",
|
|
@@ -55355,43 +55382,155 @@ var DishwasherStateSchema = _enum([
|
|
|
55355
55382
|
"error",
|
|
55356
55383
|
"unavailable"
|
|
55357
55384
|
]);
|
|
55385
|
+
/**
|
|
55386
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
55387
|
+
* view for compact surfaces; this is what the appliance said.
|
|
55388
|
+
*/
|
|
55389
|
+
var DishwasherOperationStateSchema = _enum([
|
|
55390
|
+
"Inactive",
|
|
55391
|
+
"Ready",
|
|
55392
|
+
"DelayedStart",
|
|
55393
|
+
"Run",
|
|
55394
|
+
"Pause",
|
|
55395
|
+
"ActionRequired",
|
|
55396
|
+
"Finished",
|
|
55397
|
+
"Error",
|
|
55398
|
+
"Aborting"
|
|
55399
|
+
]);
|
|
55400
|
+
/**
|
|
55401
|
+
* Why fields may be `null`:
|
|
55402
|
+
* - `available` — the link is up and the description is loaded;
|
|
55403
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
55404
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
55405
|
+
* be loaded, so its values cannot be decoded.
|
|
55406
|
+
*/
|
|
55407
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
55408
|
+
"available",
|
|
55409
|
+
"offline",
|
|
55410
|
+
"description-missing"
|
|
55411
|
+
]);
|
|
55358
55412
|
var DishwasherConsumableLevelSchema = _enum([
|
|
55359
55413
|
"ok",
|
|
55360
55414
|
"low",
|
|
55361
55415
|
"empty"
|
|
55362
55416
|
]);
|
|
55363
55417
|
var DishwasherStatusSchema = object({
|
|
55418
|
+
availability: DishwasherAvailabilitySchema,
|
|
55419
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
55364
55420
|
state: DishwasherStateSchema,
|
|
55365
|
-
/**
|
|
55421
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
55422
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
55423
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
55366
55424
|
program: string().nullable(),
|
|
55367
|
-
/**
|
|
55425
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
55426
|
+
selectedProgram: string().nullable(),
|
|
55427
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
55368
55428
|
availablePrograms: array(string()),
|
|
55369
|
-
/**
|
|
55370
|
-
|
|
55429
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
55430
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
55431
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
55432
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
55371
55433
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
55372
55434
|
progressPercent: number().min(0).max(100).nullable(),
|
|
55373
|
-
/** True when the door is reported open. */
|
|
55374
|
-
doorOpen: boolean(),
|
|
55375
|
-
/** True when
|
|
55376
|
-
|
|
55377
|
-
/**
|
|
55378
|
-
|
|
55435
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
55436
|
+
doorOpen: boolean().nullable(),
|
|
55437
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
55438
|
+
doorLocked: boolean().nullable(),
|
|
55439
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
55440
|
+
remoteStartAllowed: boolean().nullable(),
|
|
55441
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
55442
|
+
remoteControlActive: boolean().nullable(),
|
|
55443
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
55444
|
+
localControlActive: boolean().nullable(),
|
|
55445
|
+
/** Main power / switched-on state; null when not known. */
|
|
55446
|
+
powerOn: boolean().nullable(),
|
|
55447
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55448
|
+
powerState: string().nullable(),
|
|
55379
55449
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55380
55450
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55381
|
-
|
|
55382
|
-
|
|
55451
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
55452
|
+
halfLoad: boolean().nullable(),
|
|
55453
|
+
hygienePlus: boolean().nullable(),
|
|
55383
55454
|
/** Extra dry option when the appliance exposes it. */
|
|
55384
|
-
extraDry: boolean(),
|
|
55455
|
+
extraDry: boolean().nullable(),
|
|
55385
55456
|
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
55386
|
-
intensiveZone: boolean(),
|
|
55457
|
+
intensiveZone: boolean().nullable(),
|
|
55387
55458
|
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
55388
|
-
varioSpeedPlus: boolean(),
|
|
55389
|
-
/** Child lock (controls disabled on the appliance). */
|
|
55390
|
-
childLock: boolean(),
|
|
55459
|
+
varioSpeedPlus: boolean().nullable(),
|
|
55460
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
55461
|
+
childLock: boolean().nullable(),
|
|
55462
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
55463
|
+
activeEvents: array(string()),
|
|
55464
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
55391
55465
|
errorCode: number().nullable(),
|
|
55466
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
55392
55467
|
errorLabel: string().nullable(),
|
|
55468
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
55393
55469
|
lastFetchedAt: number()
|
|
55394
55470
|
});
|
|
55471
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
55472
|
+
/** A value a program option or setting can take. */
|
|
55473
|
+
var DishwasherValueSchema = union([
|
|
55474
|
+
boolean(),
|
|
55475
|
+
string(),
|
|
55476
|
+
number()
|
|
55477
|
+
]);
|
|
55478
|
+
var DishwasherAccessSchema = _enum([
|
|
55479
|
+
"none",
|
|
55480
|
+
"read",
|
|
55481
|
+
"readWrite",
|
|
55482
|
+
"writeOnly",
|
|
55483
|
+
"readStatic"
|
|
55484
|
+
]);
|
|
55485
|
+
/**
|
|
55486
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
55487
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
55488
|
+
*/
|
|
55489
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
55490
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
55491
|
+
key: string(),
|
|
55492
|
+
/** Last segment of the key, for display. */
|
|
55493
|
+
name: string(),
|
|
55494
|
+
type: _enum([
|
|
55495
|
+
"boolean",
|
|
55496
|
+
"number",
|
|
55497
|
+
"enum",
|
|
55498
|
+
"string"
|
|
55499
|
+
]),
|
|
55500
|
+
access: DishwasherAccessSchema,
|
|
55501
|
+
/** The appliance reports this entity as currently available. */
|
|
55502
|
+
available: boolean(),
|
|
55503
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
55504
|
+
unit: string().nullable(),
|
|
55505
|
+
min: number().nullable(),
|
|
55506
|
+
max: number().nullable(),
|
|
55507
|
+
step: number().nullable(),
|
|
55508
|
+
/** Allowed members of an enum; null for other types. */
|
|
55509
|
+
enumValues: array(string()).nullable(),
|
|
55510
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
55511
|
+
});
|
|
55512
|
+
var DishwasherProgramSchema = object({
|
|
55513
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
55514
|
+
key: string(),
|
|
55515
|
+
name: string(),
|
|
55516
|
+
/** The appliance currently offers this program. */
|
|
55517
|
+
available: boolean(),
|
|
55518
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
55519
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
55520
|
+
});
|
|
55521
|
+
var DishwasherOptionsSchema = object({
|
|
55522
|
+
availability: DishwasherAvailabilitySchema,
|
|
55523
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
55524
|
+
supportsStart: boolean(),
|
|
55525
|
+
supportsPause: boolean(),
|
|
55526
|
+
supportsResume: boolean(),
|
|
55527
|
+
supportsStop: boolean(),
|
|
55528
|
+
supportsPower: boolean(),
|
|
55529
|
+
/** Every program the description lists, with its options. */
|
|
55530
|
+
programs: array(DishwasherProgramSchema),
|
|
55531
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
55532
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
55533
|
+
});
|
|
55395
55534
|
var dishwasherCapability = {
|
|
55396
55535
|
name: "dishwasher",
|
|
55397
55536
|
scope: "device",
|
|
@@ -55399,86 +55538,102 @@ var dishwasherCapability = {
|
|
|
55399
55538
|
mode: "singleton",
|
|
55400
55539
|
deviceTypes: [DeviceType.Dishwasher],
|
|
55401
55540
|
methods: {
|
|
55402
|
-
|
|
55541
|
+
/**
|
|
55542
|
+
* Start a program. Without `program` the selected one starts. `options` are
|
|
55543
|
+
* option feature keys; each is checked against the program's constraints.
|
|
55544
|
+
*/
|
|
55545
|
+
start: method(object({
|
|
55546
|
+
deviceId: DeviceIdSchema,
|
|
55547
|
+
program: string().min(1).optional(),
|
|
55548
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
55549
|
+
}), _void(), {
|
|
55403
55550
|
kind: "mutation",
|
|
55404
55551
|
auth: "protected"
|
|
55405
55552
|
}),
|
|
55406
|
-
pause: method(object({ deviceId:
|
|
55553
|
+
pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55407
55554
|
kind: "mutation",
|
|
55408
55555
|
auth: "protected"
|
|
55409
55556
|
}),
|
|
55410
|
-
|
|
55557
|
+
resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55558
|
+
kind: "mutation",
|
|
55559
|
+
auth: "protected"
|
|
55560
|
+
}),
|
|
55561
|
+
stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55411
55562
|
kind: "mutation",
|
|
55412
55563
|
auth: "protected"
|
|
55413
55564
|
}),
|
|
55565
|
+
/** Select (not start) a program; refused when the appliance does not offer it. */
|
|
55414
55566
|
setProgram: method(object({
|
|
55415
|
-
deviceId:
|
|
55567
|
+
deviceId: DeviceIdSchema,
|
|
55416
55568
|
program: string().min(1)
|
|
55417
55569
|
}), _void(), {
|
|
55418
55570
|
kind: "mutation",
|
|
55419
55571
|
auth: "protected"
|
|
55420
55572
|
}),
|
|
55421
55573
|
setPower: method(object({
|
|
55422
|
-
deviceId:
|
|
55574
|
+
deviceId: DeviceIdSchema,
|
|
55423
55575
|
on: boolean()
|
|
55424
55576
|
}), _void(), {
|
|
55425
55577
|
kind: "mutation",
|
|
55426
55578
|
auth: "protected"
|
|
55427
55579
|
}),
|
|
55428
55580
|
setHalfLoad: method(object({
|
|
55429
|
-
deviceId:
|
|
55581
|
+
deviceId: DeviceIdSchema,
|
|
55430
55582
|
on: boolean()
|
|
55431
55583
|
}), _void(), {
|
|
55432
55584
|
kind: "mutation",
|
|
55433
55585
|
auth: "protected"
|
|
55434
55586
|
}),
|
|
55435
55587
|
setHygienePlus: method(object({
|
|
55436
|
-
deviceId:
|
|
55588
|
+
deviceId: DeviceIdSchema,
|
|
55437
55589
|
on: boolean()
|
|
55438
55590
|
}), _void(), {
|
|
55439
55591
|
kind: "mutation",
|
|
55440
55592
|
auth: "protected"
|
|
55441
55593
|
}),
|
|
55442
55594
|
setExtraDry: method(object({
|
|
55443
|
-
deviceId:
|
|
55595
|
+
deviceId: DeviceIdSchema,
|
|
55444
55596
|
on: boolean()
|
|
55445
55597
|
}), _void(), {
|
|
55446
55598
|
kind: "mutation",
|
|
55447
55599
|
auth: "protected"
|
|
55448
55600
|
}),
|
|
55449
55601
|
setIntensiveZone: method(object({
|
|
55450
|
-
deviceId:
|
|
55602
|
+
deviceId: DeviceIdSchema,
|
|
55451
55603
|
on: boolean()
|
|
55452
55604
|
}), _void(), {
|
|
55453
55605
|
kind: "mutation",
|
|
55454
55606
|
auth: "protected"
|
|
55455
55607
|
}),
|
|
55456
55608
|
setVarioSpeedPlus: method(object({
|
|
55457
|
-
deviceId:
|
|
55609
|
+
deviceId: DeviceIdSchema,
|
|
55458
55610
|
on: boolean()
|
|
55459
55611
|
}), _void(), {
|
|
55460
55612
|
kind: "mutation",
|
|
55461
55613
|
auth: "protected"
|
|
55462
55614
|
}),
|
|
55463
55615
|
setChildLock: method(object({
|
|
55464
|
-
deviceId:
|
|
55616
|
+
deviceId: DeviceIdSchema,
|
|
55465
55617
|
on: boolean()
|
|
55466
55618
|
}), _void(), {
|
|
55467
55619
|
kind: "mutation",
|
|
55468
55620
|
auth: "protected"
|
|
55469
55621
|
}),
|
|
55622
|
+
/**
|
|
55623
|
+
* Write any option or setting by feature key. Refused when the description does
|
|
55624
|
+
* not list it, it is not writable or not available now, or the value is outside
|
|
55625
|
+
* its declared range / members.
|
|
55626
|
+
*/
|
|
55470
55627
|
setOption: method(object({
|
|
55471
|
-
deviceId:
|
|
55628
|
+
deviceId: DeviceIdSchema,
|
|
55472
55629
|
key: string().min(1),
|
|
55473
|
-
value:
|
|
55474
|
-
boolean(),
|
|
55475
|
-
string(),
|
|
55476
|
-
number()
|
|
55477
|
-
])
|
|
55630
|
+
value: DishwasherValueSchema
|
|
55478
55631
|
}), _void(), {
|
|
55479
55632
|
kind: "mutation",
|
|
55480
55633
|
auth: "protected"
|
|
55481
|
-
})
|
|
55634
|
+
}),
|
|
55635
|
+
/** What this appliance can do, from its own description — the UI is derived from it. */
|
|
55636
|
+
getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
|
|
55482
55637
|
},
|
|
55483
55638
|
status: {
|
|
55484
55639
|
schema: DishwasherStatusSchema,
|
|
@@ -69427,6 +69582,12 @@ Object.freeze({
|
|
|
69427
69582
|
addonId: null,
|
|
69428
69583
|
access: "view"
|
|
69429
69584
|
},
|
|
69585
|
+
"dishwasher.getOptions": {
|
|
69586
|
+
capName: "dishwasher",
|
|
69587
|
+
capScope: "device",
|
|
69588
|
+
addonId: null,
|
|
69589
|
+
access: "view"
|
|
69590
|
+
},
|
|
69430
69591
|
"dishwasher.getStatus": {
|
|
69431
69592
|
capName: "dishwasher",
|
|
69432
69593
|
capScope: "device",
|
|
@@ -69439,6 +69600,12 @@ Object.freeze({
|
|
|
69439
69600
|
addonId: null,
|
|
69440
69601
|
access: "create"
|
|
69441
69602
|
},
|
|
69603
|
+
"dishwasher.resume": {
|
|
69604
|
+
capName: "dishwasher",
|
|
69605
|
+
capScope: "device",
|
|
69606
|
+
addonId: null,
|
|
69607
|
+
access: "create"
|
|
69608
|
+
},
|
|
69442
69609
|
"dishwasher.setChildLock": {
|
|
69443
69610
|
capName: "dishwasher",
|
|
69444
69611
|
capScope: "device",
|
|
@@ -73939,6 +74106,12 @@ Object.freeze({
|
|
|
73939
74106
|
addonId: null,
|
|
73940
74107
|
access: "view"
|
|
73941
74108
|
},
|
|
74109
|
+
"storageMigration.moverClearance": {
|
|
74110
|
+
capName: "storage-migration",
|
|
74111
|
+
capScope: "system",
|
|
74112
|
+
addonId: null,
|
|
74113
|
+
access: "view"
|
|
74114
|
+
},
|
|
73942
74115
|
"storageMigration.movers": {
|
|
73943
74116
|
capName: "storage-migration",
|
|
73944
74117
|
capScope: "system",
|
|
@@ -76132,6 +76305,11 @@ Object.freeze({
|
|
|
76132
76305
|
form: "single",
|
|
76133
76306
|
optional: false
|
|
76134
76307
|
}],
|
|
76308
|
+
"dishwasher.getOptions": [{
|
|
76309
|
+
name: "deviceId",
|
|
76310
|
+
form: "single",
|
|
76311
|
+
optional: false
|
|
76312
|
+
}],
|
|
76135
76313
|
"dishwasher.getStatus": [{
|
|
76136
76314
|
name: "deviceId",
|
|
76137
76315
|
form: "single",
|
|
@@ -76142,6 +76320,11 @@ Object.freeze({
|
|
|
76142
76320
|
form: "single",
|
|
76143
76321
|
optional: false
|
|
76144
76322
|
}],
|
|
76323
|
+
"dishwasher.resume": [{
|
|
76324
|
+
name: "deviceId",
|
|
76325
|
+
form: "single",
|
|
76326
|
+
optional: false
|
|
76327
|
+
}],
|
|
76145
76328
|
"dishwasher.setChildLock": [{
|
|
76146
76329
|
name: "deviceId",
|
|
76147
76330
|
form: "single",
|
|
@@ -78228,6 +78411,9 @@ new Map(Object.entries({
|
|
|
78228
78411
|
"wrapper-update-available": "system",
|
|
78229
78412
|
"backup-completed": "system",
|
|
78230
78413
|
"export-completed": "system",
|
|
78414
|
+
"alert-critical": "system",
|
|
78415
|
+
"alert-error": "system",
|
|
78416
|
+
"alert-critical-resolved": "system",
|
|
78231
78417
|
"storage-location-low": "system",
|
|
78232
78418
|
"storage-location-critical": "system",
|
|
78233
78419
|
"storage-location-ok": "system",
|
|
@@ -78352,6 +78538,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
78352
78538
|
"storage-location-ok"
|
|
78353
78539
|
]
|
|
78354
78540
|
},
|
|
78541
|
+
{
|
|
78542
|
+
id: "alerts",
|
|
78543
|
+
family: "system",
|
|
78544
|
+
label: "Alerts",
|
|
78545
|
+
kinds: [
|
|
78546
|
+
"alert-critical",
|
|
78547
|
+
"alert-error",
|
|
78548
|
+
"alert-critical-resolved"
|
|
78549
|
+
]
|
|
78550
|
+
},
|
|
78355
78551
|
{
|
|
78356
78552
|
id: "alarm",
|
|
78357
78553
|
family: "alarm",
|
|
@@ -78396,6 +78592,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
78396
78592
|
return [[descriptor.kind, field]];
|
|
78397
78593
|
})));
|
|
78398
78594
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
78595
|
+
object({
|
|
78596
|
+
phase: _enum(["raised", "resolved"]),
|
|
78597
|
+
episodeId: string().min(1),
|
|
78598
|
+
alertId: string().min(1),
|
|
78599
|
+
severity: AlertSeveritySchema,
|
|
78600
|
+
category: string(),
|
|
78601
|
+
title: string(),
|
|
78602
|
+
message: string(),
|
|
78603
|
+
sourceType: string().optional(),
|
|
78604
|
+
sourceId: string().optional(),
|
|
78605
|
+
nodeId: string().optional(),
|
|
78606
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
78607
|
+
actionUrl: string().optional(),
|
|
78608
|
+
at: number()
|
|
78609
|
+
});
|
|
78399
78610
|
var RULE_BODY_ONLY = ["body"];
|
|
78400
78611
|
var RULE_TEXT = ["title", "body"];
|
|
78401
78612
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -78405,6 +78616,11 @@ var TANK = [
|
|
|
78405
78616
|
"device-tank-full",
|
|
78406
78617
|
"device-tank-normal"
|
|
78407
78618
|
];
|
|
78619
|
+
var ALERT_EPISODE = [
|
|
78620
|
+
"alert-critical",
|
|
78621
|
+
"alert-error",
|
|
78622
|
+
"alert-critical-resolved"
|
|
78623
|
+
];
|
|
78408
78624
|
var UPDATES = [
|
|
78409
78625
|
"addon-update-available",
|
|
78410
78626
|
"server-update-available",
|
|
@@ -78597,14 +78813,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
78597
78813
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
78598
78814
|
([...RULE_TEXT], [...TANK]),
|
|
78599
78815
|
[...RULE_TEXT],
|
|
78600
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
78601
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
78602
|
-
[...RULE_TEXT],
|
|
78816
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
78817
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
78603
78818
|
[...RULE_TEXT],
|
|
78604
78819
|
[...RULE_TEXT],
|
|
78605
78820
|
[...RULE_TEXT],
|
|
78606
78821
|
[...RULE_TEXT],
|
|
78607
78822
|
[...RULE_TEXT],
|
|
78823
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78608
78824
|
[...RULE_TEXT],
|
|
78609
78825
|
[...RULE_TEXT],
|
|
78610
78826
|
[...RULE_TEXT],
|
|
@@ -78622,7 +78838,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
78622
78838
|
[...RULE_TEXT],
|
|
78623
78839
|
[...RULE_TEXT],
|
|
78624
78840
|
[...RULE_TEXT],
|
|
78625
|
-
[...RULE_TEXT],
|
|
78841
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78842
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78843
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78844
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78845
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78626
78846
|
[...RULE_TEXT],
|
|
78627
78847
|
[...RULE_TEXT],
|
|
78628
78848
|
[...RULE_TEXT],
|
package/dist/addon.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createServer } from "http";
|
|
2
2
|
import { EventEmitter } from "events";
|
|
3
3
|
import { createSocket } from "dgram";
|
|
4
|
-
//#region ../types/dist/event-category-
|
|
4
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
5
5
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
6
6
|
EventCategory["SystemBoot"] = "system.boot";
|
|
7
7
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -80,9 +80,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
80
80
|
/**
|
|
81
81
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
82
82
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
83
|
-
* alert centre turns it into one
|
|
83
|
+
* alert centre turns it into one critical alert.
|
|
84
84
|
*/
|
|
85
85
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
86
|
+
/**
|
|
87
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
88
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
89
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
90
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
91
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
92
|
+
* event may be dropped (D8, D11).
|
|
93
|
+
*/
|
|
94
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
86
95
|
EventCategory["AddonError"] = "addon.error";
|
|
87
96
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
88
97
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -5407,7 +5416,7 @@ var ZodIssueCode$1 = {
|
|
|
5407
5416
|
var ZodFirstPartyTypeKind$1;
|
|
5408
5417
|
ZodFirstPartyTypeKind$1 || (ZodFirstPartyTypeKind$1 = {});
|
|
5409
5418
|
//#endregion
|
|
5410
|
-
//#region ../types/dist/sleep-
|
|
5419
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
5411
5420
|
/**
|
|
5412
5421
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5413
5422
|
* window to float samples (D455).
|
|
@@ -13184,7 +13193,14 @@ var AlertSeveritySchema = _enum([
|
|
|
13184
13193
|
]);
|
|
13185
13194
|
var AlertActionSchema = object({
|
|
13186
13195
|
label: string(),
|
|
13187
|
-
href: string().optional()
|
|
13196
|
+
href: string().optional(),
|
|
13197
|
+
/**
|
|
13198
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
13199
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
13200
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
13201
|
+
* the SPA has no such route and would bounce to the home page.
|
|
13202
|
+
*/
|
|
13203
|
+
navigation: _enum(["app", "server"]).optional()
|
|
13188
13204
|
});
|
|
13189
13205
|
var AlertStatusSchema = _enum([
|
|
13190
13206
|
"active",
|
|
@@ -42013,6 +42029,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42013
42029
|
"server-updated",
|
|
42014
42030
|
"export-completed",
|
|
42015
42031
|
"backup-completed",
|
|
42032
|
+
"alert-critical",
|
|
42033
|
+
"alert-error",
|
|
42034
|
+
"alert-critical-resolved",
|
|
42016
42035
|
"camera-online",
|
|
42017
42036
|
"camera-offline",
|
|
42018
42037
|
"camera-disabled",
|
|
@@ -51089,7 +51108,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
51089
51108
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
51090
51109
|
kind: "mutation",
|
|
51091
51110
|
auth: "admin"
|
|
51092
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
51111
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
51112
|
+
clear: boolean(),
|
|
51113
|
+
repointLocationId: string().optional()
|
|
51114
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
51093
51115
|
kind: "mutation",
|
|
51094
51116
|
auth: "admin"
|
|
51095
51117
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -55345,6 +55367,11 @@ onStatusChanged: { data: object({
|
|
|
55345
55367
|
*
|
|
55346
55368
|
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
55347
55369
|
* provider refreshes the slice on an interval and eagerly after commands.
|
|
55370
|
+
*
|
|
55371
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
55372
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
55373
|
+
* the link is down, or the description does not carry it) and is never
|
|
55374
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
55348
55375
|
*/
|
|
55349
55376
|
var DishwasherStateSchema = _enum([
|
|
55350
55377
|
"idle",
|
|
@@ -55354,43 +55381,155 @@ var DishwasherStateSchema = _enum([
|
|
|
55354
55381
|
"error",
|
|
55355
55382
|
"unavailable"
|
|
55356
55383
|
]);
|
|
55384
|
+
/**
|
|
55385
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
55386
|
+
* view for compact surfaces; this is what the appliance said.
|
|
55387
|
+
*/
|
|
55388
|
+
var DishwasherOperationStateSchema = _enum([
|
|
55389
|
+
"Inactive",
|
|
55390
|
+
"Ready",
|
|
55391
|
+
"DelayedStart",
|
|
55392
|
+
"Run",
|
|
55393
|
+
"Pause",
|
|
55394
|
+
"ActionRequired",
|
|
55395
|
+
"Finished",
|
|
55396
|
+
"Error",
|
|
55397
|
+
"Aborting"
|
|
55398
|
+
]);
|
|
55399
|
+
/**
|
|
55400
|
+
* Why fields may be `null`:
|
|
55401
|
+
* - `available` — the link is up and the description is loaded;
|
|
55402
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
55403
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
55404
|
+
* be loaded, so its values cannot be decoded.
|
|
55405
|
+
*/
|
|
55406
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
55407
|
+
"available",
|
|
55408
|
+
"offline",
|
|
55409
|
+
"description-missing"
|
|
55410
|
+
]);
|
|
55357
55411
|
var DishwasherConsumableLevelSchema = _enum([
|
|
55358
55412
|
"ok",
|
|
55359
55413
|
"low",
|
|
55360
55414
|
"empty"
|
|
55361
55415
|
]);
|
|
55362
55416
|
var DishwasherStatusSchema = object({
|
|
55417
|
+
availability: DishwasherAvailabilitySchema,
|
|
55418
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
55363
55419
|
state: DishwasherStateSchema,
|
|
55364
|
-
/**
|
|
55420
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
55421
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
55422
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
55365
55423
|
program: string().nullable(),
|
|
55366
|
-
/**
|
|
55424
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
55425
|
+
selectedProgram: string().nullable(),
|
|
55426
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
55367
55427
|
availablePrograms: array(string()),
|
|
55368
|
-
/**
|
|
55369
|
-
|
|
55428
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
55429
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
55430
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
55431
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
55370
55432
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
55371
55433
|
progressPercent: number().min(0).max(100).nullable(),
|
|
55372
|
-
/** True when the door is reported open. */
|
|
55373
|
-
doorOpen: boolean(),
|
|
55374
|
-
/** True when
|
|
55375
|
-
|
|
55376
|
-
/**
|
|
55377
|
-
|
|
55434
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
55435
|
+
doorOpen: boolean().nullable(),
|
|
55436
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
55437
|
+
doorLocked: boolean().nullable(),
|
|
55438
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
55439
|
+
remoteStartAllowed: boolean().nullable(),
|
|
55440
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
55441
|
+
remoteControlActive: boolean().nullable(),
|
|
55442
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
55443
|
+
localControlActive: boolean().nullable(),
|
|
55444
|
+
/** Main power / switched-on state; null when not known. */
|
|
55445
|
+
powerOn: boolean().nullable(),
|
|
55446
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55447
|
+
powerState: string().nullable(),
|
|
55378
55448
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55379
55449
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55380
|
-
|
|
55381
|
-
|
|
55450
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
55451
|
+
halfLoad: boolean().nullable(),
|
|
55452
|
+
hygienePlus: boolean().nullable(),
|
|
55382
55453
|
/** Extra dry option when the appliance exposes it. */
|
|
55383
|
-
extraDry: boolean(),
|
|
55454
|
+
extraDry: boolean().nullable(),
|
|
55384
55455
|
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
55385
|
-
intensiveZone: boolean(),
|
|
55456
|
+
intensiveZone: boolean().nullable(),
|
|
55386
55457
|
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
55387
|
-
varioSpeedPlus: boolean(),
|
|
55388
|
-
/** Child lock (controls disabled on the appliance). */
|
|
55389
|
-
childLock: boolean(),
|
|
55458
|
+
varioSpeedPlus: boolean().nullable(),
|
|
55459
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
55460
|
+
childLock: boolean().nullable(),
|
|
55461
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
55462
|
+
activeEvents: array(string()),
|
|
55463
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
55390
55464
|
errorCode: number().nullable(),
|
|
55465
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
55391
55466
|
errorLabel: string().nullable(),
|
|
55467
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
55392
55468
|
lastFetchedAt: number()
|
|
55393
55469
|
});
|
|
55470
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
55471
|
+
/** A value a program option or setting can take. */
|
|
55472
|
+
var DishwasherValueSchema = union([
|
|
55473
|
+
boolean(),
|
|
55474
|
+
string(),
|
|
55475
|
+
number()
|
|
55476
|
+
]);
|
|
55477
|
+
var DishwasherAccessSchema = _enum([
|
|
55478
|
+
"none",
|
|
55479
|
+
"read",
|
|
55480
|
+
"readWrite",
|
|
55481
|
+
"writeOnly",
|
|
55482
|
+
"readStatic"
|
|
55483
|
+
]);
|
|
55484
|
+
/**
|
|
55485
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
55486
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
55487
|
+
*/
|
|
55488
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
55489
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
55490
|
+
key: string(),
|
|
55491
|
+
/** Last segment of the key, for display. */
|
|
55492
|
+
name: string(),
|
|
55493
|
+
type: _enum([
|
|
55494
|
+
"boolean",
|
|
55495
|
+
"number",
|
|
55496
|
+
"enum",
|
|
55497
|
+
"string"
|
|
55498
|
+
]),
|
|
55499
|
+
access: DishwasherAccessSchema,
|
|
55500
|
+
/** The appliance reports this entity as currently available. */
|
|
55501
|
+
available: boolean(),
|
|
55502
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
55503
|
+
unit: string().nullable(),
|
|
55504
|
+
min: number().nullable(),
|
|
55505
|
+
max: number().nullable(),
|
|
55506
|
+
step: number().nullable(),
|
|
55507
|
+
/** Allowed members of an enum; null for other types. */
|
|
55508
|
+
enumValues: array(string()).nullable(),
|
|
55509
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
55510
|
+
});
|
|
55511
|
+
var DishwasherProgramSchema = object({
|
|
55512
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
55513
|
+
key: string(),
|
|
55514
|
+
name: string(),
|
|
55515
|
+
/** The appliance currently offers this program. */
|
|
55516
|
+
available: boolean(),
|
|
55517
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
55518
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
55519
|
+
});
|
|
55520
|
+
var DishwasherOptionsSchema = object({
|
|
55521
|
+
availability: DishwasherAvailabilitySchema,
|
|
55522
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
55523
|
+
supportsStart: boolean(),
|
|
55524
|
+
supportsPause: boolean(),
|
|
55525
|
+
supportsResume: boolean(),
|
|
55526
|
+
supportsStop: boolean(),
|
|
55527
|
+
supportsPower: boolean(),
|
|
55528
|
+
/** Every program the description lists, with its options. */
|
|
55529
|
+
programs: array(DishwasherProgramSchema),
|
|
55530
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
55531
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
55532
|
+
});
|
|
55394
55533
|
var dishwasherCapability = {
|
|
55395
55534
|
name: "dishwasher",
|
|
55396
55535
|
scope: "device",
|
|
@@ -55398,86 +55537,102 @@ var dishwasherCapability = {
|
|
|
55398
55537
|
mode: "singleton",
|
|
55399
55538
|
deviceTypes: [DeviceType.Dishwasher],
|
|
55400
55539
|
methods: {
|
|
55401
|
-
|
|
55540
|
+
/**
|
|
55541
|
+
* Start a program. Without `program` the selected one starts. `options` are
|
|
55542
|
+
* option feature keys; each is checked against the program's constraints.
|
|
55543
|
+
*/
|
|
55544
|
+
start: method(object({
|
|
55545
|
+
deviceId: DeviceIdSchema,
|
|
55546
|
+
program: string().min(1).optional(),
|
|
55547
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
55548
|
+
}), _void(), {
|
|
55402
55549
|
kind: "mutation",
|
|
55403
55550
|
auth: "protected"
|
|
55404
55551
|
}),
|
|
55405
|
-
pause: method(object({ deviceId:
|
|
55552
|
+
pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55406
55553
|
kind: "mutation",
|
|
55407
55554
|
auth: "protected"
|
|
55408
55555
|
}),
|
|
55409
|
-
|
|
55556
|
+
resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55557
|
+
kind: "mutation",
|
|
55558
|
+
auth: "protected"
|
|
55559
|
+
}),
|
|
55560
|
+
stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55410
55561
|
kind: "mutation",
|
|
55411
55562
|
auth: "protected"
|
|
55412
55563
|
}),
|
|
55564
|
+
/** Select (not start) a program; refused when the appliance does not offer it. */
|
|
55413
55565
|
setProgram: method(object({
|
|
55414
|
-
deviceId:
|
|
55566
|
+
deviceId: DeviceIdSchema,
|
|
55415
55567
|
program: string().min(1)
|
|
55416
55568
|
}), _void(), {
|
|
55417
55569
|
kind: "mutation",
|
|
55418
55570
|
auth: "protected"
|
|
55419
55571
|
}),
|
|
55420
55572
|
setPower: method(object({
|
|
55421
|
-
deviceId:
|
|
55573
|
+
deviceId: DeviceIdSchema,
|
|
55422
55574
|
on: boolean()
|
|
55423
55575
|
}), _void(), {
|
|
55424
55576
|
kind: "mutation",
|
|
55425
55577
|
auth: "protected"
|
|
55426
55578
|
}),
|
|
55427
55579
|
setHalfLoad: method(object({
|
|
55428
|
-
deviceId:
|
|
55580
|
+
deviceId: DeviceIdSchema,
|
|
55429
55581
|
on: boolean()
|
|
55430
55582
|
}), _void(), {
|
|
55431
55583
|
kind: "mutation",
|
|
55432
55584
|
auth: "protected"
|
|
55433
55585
|
}),
|
|
55434
55586
|
setHygienePlus: method(object({
|
|
55435
|
-
deviceId:
|
|
55587
|
+
deviceId: DeviceIdSchema,
|
|
55436
55588
|
on: boolean()
|
|
55437
55589
|
}), _void(), {
|
|
55438
55590
|
kind: "mutation",
|
|
55439
55591
|
auth: "protected"
|
|
55440
55592
|
}),
|
|
55441
55593
|
setExtraDry: method(object({
|
|
55442
|
-
deviceId:
|
|
55594
|
+
deviceId: DeviceIdSchema,
|
|
55443
55595
|
on: boolean()
|
|
55444
55596
|
}), _void(), {
|
|
55445
55597
|
kind: "mutation",
|
|
55446
55598
|
auth: "protected"
|
|
55447
55599
|
}),
|
|
55448
55600
|
setIntensiveZone: method(object({
|
|
55449
|
-
deviceId:
|
|
55601
|
+
deviceId: DeviceIdSchema,
|
|
55450
55602
|
on: boolean()
|
|
55451
55603
|
}), _void(), {
|
|
55452
55604
|
kind: "mutation",
|
|
55453
55605
|
auth: "protected"
|
|
55454
55606
|
}),
|
|
55455
55607
|
setVarioSpeedPlus: method(object({
|
|
55456
|
-
deviceId:
|
|
55608
|
+
deviceId: DeviceIdSchema,
|
|
55457
55609
|
on: boolean()
|
|
55458
55610
|
}), _void(), {
|
|
55459
55611
|
kind: "mutation",
|
|
55460
55612
|
auth: "protected"
|
|
55461
55613
|
}),
|
|
55462
55614
|
setChildLock: method(object({
|
|
55463
|
-
deviceId:
|
|
55615
|
+
deviceId: DeviceIdSchema,
|
|
55464
55616
|
on: boolean()
|
|
55465
55617
|
}), _void(), {
|
|
55466
55618
|
kind: "mutation",
|
|
55467
55619
|
auth: "protected"
|
|
55468
55620
|
}),
|
|
55621
|
+
/**
|
|
55622
|
+
* Write any option or setting by feature key. Refused when the description does
|
|
55623
|
+
* not list it, it is not writable or not available now, or the value is outside
|
|
55624
|
+
* its declared range / members.
|
|
55625
|
+
*/
|
|
55469
55626
|
setOption: method(object({
|
|
55470
|
-
deviceId:
|
|
55627
|
+
deviceId: DeviceIdSchema,
|
|
55471
55628
|
key: string().min(1),
|
|
55472
|
-
value:
|
|
55473
|
-
boolean(),
|
|
55474
|
-
string(),
|
|
55475
|
-
number()
|
|
55476
|
-
])
|
|
55629
|
+
value: DishwasherValueSchema
|
|
55477
55630
|
}), _void(), {
|
|
55478
55631
|
kind: "mutation",
|
|
55479
55632
|
auth: "protected"
|
|
55480
|
-
})
|
|
55633
|
+
}),
|
|
55634
|
+
/** What this appliance can do, from its own description — the UI is derived from it. */
|
|
55635
|
+
getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
|
|
55481
55636
|
},
|
|
55482
55637
|
status: {
|
|
55483
55638
|
schema: DishwasherStatusSchema,
|
|
@@ -69426,6 +69581,12 @@ Object.freeze({
|
|
|
69426
69581
|
addonId: null,
|
|
69427
69582
|
access: "view"
|
|
69428
69583
|
},
|
|
69584
|
+
"dishwasher.getOptions": {
|
|
69585
|
+
capName: "dishwasher",
|
|
69586
|
+
capScope: "device",
|
|
69587
|
+
addonId: null,
|
|
69588
|
+
access: "view"
|
|
69589
|
+
},
|
|
69429
69590
|
"dishwasher.getStatus": {
|
|
69430
69591
|
capName: "dishwasher",
|
|
69431
69592
|
capScope: "device",
|
|
@@ -69438,6 +69599,12 @@ Object.freeze({
|
|
|
69438
69599
|
addonId: null,
|
|
69439
69600
|
access: "create"
|
|
69440
69601
|
},
|
|
69602
|
+
"dishwasher.resume": {
|
|
69603
|
+
capName: "dishwasher",
|
|
69604
|
+
capScope: "device",
|
|
69605
|
+
addonId: null,
|
|
69606
|
+
access: "create"
|
|
69607
|
+
},
|
|
69441
69608
|
"dishwasher.setChildLock": {
|
|
69442
69609
|
capName: "dishwasher",
|
|
69443
69610
|
capScope: "device",
|
|
@@ -73938,6 +74105,12 @@ Object.freeze({
|
|
|
73938
74105
|
addonId: null,
|
|
73939
74106
|
access: "view"
|
|
73940
74107
|
},
|
|
74108
|
+
"storageMigration.moverClearance": {
|
|
74109
|
+
capName: "storage-migration",
|
|
74110
|
+
capScope: "system",
|
|
74111
|
+
addonId: null,
|
|
74112
|
+
access: "view"
|
|
74113
|
+
},
|
|
73941
74114
|
"storageMigration.movers": {
|
|
73942
74115
|
capName: "storage-migration",
|
|
73943
74116
|
capScope: "system",
|
|
@@ -76131,6 +76304,11 @@ Object.freeze({
|
|
|
76131
76304
|
form: "single",
|
|
76132
76305
|
optional: false
|
|
76133
76306
|
}],
|
|
76307
|
+
"dishwasher.getOptions": [{
|
|
76308
|
+
name: "deviceId",
|
|
76309
|
+
form: "single",
|
|
76310
|
+
optional: false
|
|
76311
|
+
}],
|
|
76134
76312
|
"dishwasher.getStatus": [{
|
|
76135
76313
|
name: "deviceId",
|
|
76136
76314
|
form: "single",
|
|
@@ -76141,6 +76319,11 @@ Object.freeze({
|
|
|
76141
76319
|
form: "single",
|
|
76142
76320
|
optional: false
|
|
76143
76321
|
}],
|
|
76322
|
+
"dishwasher.resume": [{
|
|
76323
|
+
name: "deviceId",
|
|
76324
|
+
form: "single",
|
|
76325
|
+
optional: false
|
|
76326
|
+
}],
|
|
76144
76327
|
"dishwasher.setChildLock": [{
|
|
76145
76328
|
name: "deviceId",
|
|
76146
76329
|
form: "single",
|
|
@@ -78227,6 +78410,9 @@ new Map(Object.entries({
|
|
|
78227
78410
|
"wrapper-update-available": "system",
|
|
78228
78411
|
"backup-completed": "system",
|
|
78229
78412
|
"export-completed": "system",
|
|
78413
|
+
"alert-critical": "system",
|
|
78414
|
+
"alert-error": "system",
|
|
78415
|
+
"alert-critical-resolved": "system",
|
|
78230
78416
|
"storage-location-low": "system",
|
|
78231
78417
|
"storage-location-critical": "system",
|
|
78232
78418
|
"storage-location-ok": "system",
|
|
@@ -78351,6 +78537,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
78351
78537
|
"storage-location-ok"
|
|
78352
78538
|
]
|
|
78353
78539
|
},
|
|
78540
|
+
{
|
|
78541
|
+
id: "alerts",
|
|
78542
|
+
family: "system",
|
|
78543
|
+
label: "Alerts",
|
|
78544
|
+
kinds: [
|
|
78545
|
+
"alert-critical",
|
|
78546
|
+
"alert-error",
|
|
78547
|
+
"alert-critical-resolved"
|
|
78548
|
+
]
|
|
78549
|
+
},
|
|
78354
78550
|
{
|
|
78355
78551
|
id: "alarm",
|
|
78356
78552
|
family: "alarm",
|
|
@@ -78395,6 +78591,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
78395
78591
|
return [[descriptor.kind, field]];
|
|
78396
78592
|
})));
|
|
78397
78593
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
78594
|
+
object({
|
|
78595
|
+
phase: _enum(["raised", "resolved"]),
|
|
78596
|
+
episodeId: string().min(1),
|
|
78597
|
+
alertId: string().min(1),
|
|
78598
|
+
severity: AlertSeveritySchema,
|
|
78599
|
+
category: string(),
|
|
78600
|
+
title: string(),
|
|
78601
|
+
message: string(),
|
|
78602
|
+
sourceType: string().optional(),
|
|
78603
|
+
sourceId: string().optional(),
|
|
78604
|
+
nodeId: string().optional(),
|
|
78605
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
78606
|
+
actionUrl: string().optional(),
|
|
78607
|
+
at: number()
|
|
78608
|
+
});
|
|
78398
78609
|
var RULE_BODY_ONLY = ["body"];
|
|
78399
78610
|
var RULE_TEXT = ["title", "body"];
|
|
78400
78611
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -78404,6 +78615,11 @@ var TANK = [
|
|
|
78404
78615
|
"device-tank-full",
|
|
78405
78616
|
"device-tank-normal"
|
|
78406
78617
|
];
|
|
78618
|
+
var ALERT_EPISODE = [
|
|
78619
|
+
"alert-critical",
|
|
78620
|
+
"alert-error",
|
|
78621
|
+
"alert-critical-resolved"
|
|
78622
|
+
];
|
|
78407
78623
|
var UPDATES = [
|
|
78408
78624
|
"addon-update-available",
|
|
78409
78625
|
"server-update-available",
|
|
@@ -78596,14 +78812,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
78596
78812
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
78597
78813
|
([...RULE_TEXT], [...TANK]),
|
|
78598
78814
|
[...RULE_TEXT],
|
|
78599
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
78600
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
78601
|
-
[...RULE_TEXT],
|
|
78815
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
78816
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
78602
78817
|
[...RULE_TEXT],
|
|
78603
78818
|
[...RULE_TEXT],
|
|
78604
78819
|
[...RULE_TEXT],
|
|
78605
78820
|
[...RULE_TEXT],
|
|
78606
78821
|
[...RULE_TEXT],
|
|
78822
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78607
78823
|
[...RULE_TEXT],
|
|
78608
78824
|
[...RULE_TEXT],
|
|
78609
78825
|
[...RULE_TEXT],
|
|
@@ -78621,7 +78837,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
78621
78837
|
[...RULE_TEXT],
|
|
78622
78838
|
[...RULE_TEXT],
|
|
78623
78839
|
[...RULE_TEXT],
|
|
78624
|
-
[...RULE_TEXT],
|
|
78840
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78841
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78842
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78843
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78844
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78625
78845
|
[...RULE_TEXT],
|
|
78626
78846
|
[...RULE_TEXT],
|
|
78627
78847
|
[...RULE_TEXT],
|
package/package.json
CHANGED