@camstack/addon-provider-wyze 0.2.139 → 0.2.141
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
|
@@ -31,7 +31,7 @@ let net = require("net");
|
|
|
31
31
|
net = __toESM(net, 1);
|
|
32
32
|
let node_child_process = require("node:child_process");
|
|
33
33
|
let node_tls = require("node:tls");
|
|
34
|
-
//#region ../types/dist/event-category-
|
|
34
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
35
35
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
36
36
|
EventCategory["SystemBoot"] = "system.boot";
|
|
37
37
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -110,9 +110,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
110
110
|
/**
|
|
111
111
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
112
112
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
113
|
-
* alert centre turns it into one
|
|
113
|
+
* alert centre turns it into one critical alert.
|
|
114
114
|
*/
|
|
115
115
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
116
|
+
/**
|
|
117
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
118
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
119
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
120
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
121
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
122
|
+
* event may be dropped (D8, D11).
|
|
123
|
+
*/
|
|
124
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
116
125
|
EventCategory["AddonError"] = "addon.error";
|
|
117
126
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
118
127
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -5437,7 +5446,7 @@ var ZodIssueCode = {
|
|
|
5437
5446
|
var ZodFirstPartyTypeKind;
|
|
5438
5447
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5439
5448
|
//#endregion
|
|
5440
|
-
//#region ../types/dist/sleep-
|
|
5449
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
5441
5450
|
/**
|
|
5442
5451
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5443
5452
|
* window to float samples (D455).
|
|
@@ -13234,7 +13243,14 @@ var AlertSeveritySchema = _enum([
|
|
|
13234
13243
|
]);
|
|
13235
13244
|
var AlertActionSchema = object({
|
|
13236
13245
|
label: string(),
|
|
13237
|
-
href: string().optional()
|
|
13246
|
+
href: string().optional(),
|
|
13247
|
+
/**
|
|
13248
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
13249
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
13250
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
13251
|
+
* the SPA has no such route and would bounce to the home page.
|
|
13252
|
+
*/
|
|
13253
|
+
navigation: _enum(["app", "server"]).optional()
|
|
13238
13254
|
});
|
|
13239
13255
|
var AlertStatusSchema = _enum([
|
|
13240
13256
|
"active",
|
|
@@ -17615,7 +17631,11 @@ var deviceDiscoveryCapability = {
|
|
|
17615
17631
|
};
|
|
17616
17632
|
/**
|
|
17617
17633
|
* `device-adoption` — generic discovery + adoption surface,
|
|
17618
|
-
* system-scoped
|
|
17634
|
+
* system-scoped collection (one provider per integration addon), routed
|
|
17635
|
+
* by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
|
|
17636
|
+
* pin model as `connection-test`. The admin UI keeps using
|
|
17637
|
+
* `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
|
|
17638
|
+
* successor to `ha-discovery`:
|
|
17619
17639
|
* keyed by `integrationId` (the addon resolves integrationId → broker
|
|
17620
17640
|
* internally) rather than a connection-specific `brokerId`, and it
|
|
17621
17641
|
* REUSES the shared `DiscoveredChildDevice` candidate type from
|
|
@@ -17780,7 +17800,7 @@ var ResyncResultSchema = object({
|
|
|
17780
17800
|
var deviceAdoptionCapability = {
|
|
17781
17801
|
name: "device-adoption",
|
|
17782
17802
|
scope: "system",
|
|
17783
|
-
mode: "
|
|
17803
|
+
mode: "collection",
|
|
17784
17804
|
status: {
|
|
17785
17805
|
schema: AdoptionStatusSchema,
|
|
17786
17806
|
kind: "poll"
|
|
@@ -41963,6 +41983,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
41963
41983
|
"server-updated",
|
|
41964
41984
|
"export-completed",
|
|
41965
41985
|
"backup-completed",
|
|
41986
|
+
"alert-critical",
|
|
41987
|
+
"alert-error",
|
|
41988
|
+
"alert-critical-resolved",
|
|
41966
41989
|
"camera-online",
|
|
41967
41990
|
"camera-offline",
|
|
41968
41991
|
"camera-disabled",
|
|
@@ -51143,7 +51166,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
51143
51166
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
51144
51167
|
kind: "mutation",
|
|
51145
51168
|
auth: "admin"
|
|
51146
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
51169
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
51170
|
+
clear: boolean(),
|
|
51171
|
+
repointLocationId: string().optional()
|
|
51172
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
51147
51173
|
kind: "mutation",
|
|
51148
51174
|
auth: "admin"
|
|
51149
51175
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -55407,6 +55433,11 @@ onStatusChanged: { data: object({
|
|
|
55407
55433
|
*
|
|
55408
55434
|
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
55409
55435
|
* provider refreshes the slice on an interval and eagerly after commands.
|
|
55436
|
+
*
|
|
55437
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
55438
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
55439
|
+
* the link is down, or the description does not carry it) and is never
|
|
55440
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
55410
55441
|
*/
|
|
55411
55442
|
var DishwasherStateSchema = _enum([
|
|
55412
55443
|
"idle",
|
|
@@ -55416,35 +55447,155 @@ var DishwasherStateSchema = _enum([
|
|
|
55416
55447
|
"error",
|
|
55417
55448
|
"unavailable"
|
|
55418
55449
|
]);
|
|
55450
|
+
/**
|
|
55451
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
55452
|
+
* view for compact surfaces; this is what the appliance said.
|
|
55453
|
+
*/
|
|
55454
|
+
var DishwasherOperationStateSchema = _enum([
|
|
55455
|
+
"Inactive",
|
|
55456
|
+
"Ready",
|
|
55457
|
+
"DelayedStart",
|
|
55458
|
+
"Run",
|
|
55459
|
+
"Pause",
|
|
55460
|
+
"ActionRequired",
|
|
55461
|
+
"Finished",
|
|
55462
|
+
"Error",
|
|
55463
|
+
"Aborting"
|
|
55464
|
+
]);
|
|
55465
|
+
/**
|
|
55466
|
+
* Why fields may be `null`:
|
|
55467
|
+
* - `available` — the link is up and the description is loaded;
|
|
55468
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
55469
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
55470
|
+
* be loaded, so its values cannot be decoded.
|
|
55471
|
+
*/
|
|
55472
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
55473
|
+
"available",
|
|
55474
|
+
"offline",
|
|
55475
|
+
"description-missing"
|
|
55476
|
+
]);
|
|
55419
55477
|
var DishwasherConsumableLevelSchema = _enum([
|
|
55420
55478
|
"ok",
|
|
55421
55479
|
"low",
|
|
55422
55480
|
"empty"
|
|
55423
55481
|
]);
|
|
55424
55482
|
var DishwasherStatusSchema = object({
|
|
55483
|
+
availability: DishwasherAvailabilitySchema,
|
|
55484
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
55425
55485
|
state: DishwasherStateSchema,
|
|
55426
|
-
/**
|
|
55486
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
55487
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
55488
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
55427
55489
|
program: string().nullable(),
|
|
55428
|
-
/**
|
|
55490
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
55491
|
+
selectedProgram: string().nullable(),
|
|
55492
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
55429
55493
|
availablePrograms: array(string()),
|
|
55430
|
-
/**
|
|
55431
|
-
|
|
55494
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
55495
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
55496
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
55497
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
55432
55498
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
55433
55499
|
progressPercent: number().min(0).max(100).nullable(),
|
|
55434
|
-
/** True when the door is reported open. */
|
|
55435
|
-
doorOpen: boolean(),
|
|
55436
|
-
/** True when
|
|
55437
|
-
|
|
55438
|
-
/**
|
|
55439
|
-
|
|
55500
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
55501
|
+
doorOpen: boolean().nullable(),
|
|
55502
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
55503
|
+
doorLocked: boolean().nullable(),
|
|
55504
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
55505
|
+
remoteStartAllowed: boolean().nullable(),
|
|
55506
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
55507
|
+
remoteControlActive: boolean().nullable(),
|
|
55508
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
55509
|
+
localControlActive: boolean().nullable(),
|
|
55510
|
+
/** Main power / switched-on state; null when not known. */
|
|
55511
|
+
powerOn: boolean().nullable(),
|
|
55512
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55513
|
+
powerState: string().nullable(),
|
|
55440
55514
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55441
55515
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55442
|
-
|
|
55443
|
-
|
|
55516
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
55517
|
+
halfLoad: boolean().nullable(),
|
|
55518
|
+
hygienePlus: boolean().nullable(),
|
|
55519
|
+
/** Extra dry option when the appliance exposes it. */
|
|
55520
|
+
extraDry: boolean().nullable(),
|
|
55521
|
+
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
55522
|
+
intensiveZone: boolean().nullable(),
|
|
55523
|
+
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
55524
|
+
varioSpeedPlus: boolean().nullable(),
|
|
55525
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
55526
|
+
childLock: boolean().nullable(),
|
|
55527
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
55528
|
+
activeEvents: array(string()),
|
|
55529
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
55444
55530
|
errorCode: number().nullable(),
|
|
55531
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
55445
55532
|
errorLabel: string().nullable(),
|
|
55533
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
55446
55534
|
lastFetchedAt: number()
|
|
55447
55535
|
});
|
|
55536
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
55537
|
+
/** A value a program option or setting can take. */
|
|
55538
|
+
var DishwasherValueSchema = union([
|
|
55539
|
+
boolean(),
|
|
55540
|
+
string(),
|
|
55541
|
+
number()
|
|
55542
|
+
]);
|
|
55543
|
+
var DishwasherAccessSchema = _enum([
|
|
55544
|
+
"none",
|
|
55545
|
+
"read",
|
|
55546
|
+
"readWrite",
|
|
55547
|
+
"writeOnly",
|
|
55548
|
+
"readStatic"
|
|
55549
|
+
]);
|
|
55550
|
+
/**
|
|
55551
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
55552
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
55553
|
+
*/
|
|
55554
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
55555
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
55556
|
+
key: string(),
|
|
55557
|
+
/** Last segment of the key, for display. */
|
|
55558
|
+
name: string(),
|
|
55559
|
+
type: _enum([
|
|
55560
|
+
"boolean",
|
|
55561
|
+
"number",
|
|
55562
|
+
"enum",
|
|
55563
|
+
"string"
|
|
55564
|
+
]),
|
|
55565
|
+
access: DishwasherAccessSchema,
|
|
55566
|
+
/** The appliance reports this entity as currently available. */
|
|
55567
|
+
available: boolean(),
|
|
55568
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
55569
|
+
unit: string().nullable(),
|
|
55570
|
+
min: number().nullable(),
|
|
55571
|
+
max: number().nullable(),
|
|
55572
|
+
step: number().nullable(),
|
|
55573
|
+
/** Allowed members of an enum; null for other types. */
|
|
55574
|
+
enumValues: array(string()).nullable(),
|
|
55575
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
55576
|
+
});
|
|
55577
|
+
var DishwasherProgramSchema = object({
|
|
55578
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
55579
|
+
key: string(),
|
|
55580
|
+
name: string(),
|
|
55581
|
+
/** The appliance currently offers this program. */
|
|
55582
|
+
available: boolean(),
|
|
55583
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
55584
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
55585
|
+
});
|
|
55586
|
+
var DishwasherOptionsSchema = object({
|
|
55587
|
+
availability: DishwasherAvailabilitySchema,
|
|
55588
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
55589
|
+
supportsStart: boolean(),
|
|
55590
|
+
supportsPause: boolean(),
|
|
55591
|
+
supportsResume: boolean(),
|
|
55592
|
+
supportsStop: boolean(),
|
|
55593
|
+
supportsPower: boolean(),
|
|
55594
|
+
/** Every program the description lists, with its options. */
|
|
55595
|
+
programs: array(DishwasherProgramSchema),
|
|
55596
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
55597
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
55598
|
+
});
|
|
55448
55599
|
var dishwasherCapability = {
|
|
55449
55600
|
name: "dishwasher",
|
|
55450
55601
|
scope: "device",
|
|
@@ -55452,58 +55603,102 @@ var dishwasherCapability = {
|
|
|
55452
55603
|
mode: "singleton",
|
|
55453
55604
|
deviceTypes: [DeviceType.Dishwasher],
|
|
55454
55605
|
methods: {
|
|
55455
|
-
|
|
55606
|
+
/**
|
|
55607
|
+
* Start a program. Without `program` the selected one starts. `options` are
|
|
55608
|
+
* option feature keys; each is checked against the program's constraints.
|
|
55609
|
+
*/
|
|
55610
|
+
start: method(object({
|
|
55611
|
+
deviceId: DeviceIdSchema,
|
|
55612
|
+
program: string().min(1).optional(),
|
|
55613
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
55614
|
+
}), _void(), {
|
|
55456
55615
|
kind: "mutation",
|
|
55457
55616
|
auth: "protected"
|
|
55458
55617
|
}),
|
|
55459
|
-
pause: method(object({ deviceId:
|
|
55618
|
+
pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55460
55619
|
kind: "mutation",
|
|
55461
55620
|
auth: "protected"
|
|
55462
55621
|
}),
|
|
55463
|
-
|
|
55622
|
+
resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55464
55623
|
kind: "mutation",
|
|
55465
55624
|
auth: "protected"
|
|
55466
55625
|
}),
|
|
55626
|
+
stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55627
|
+
kind: "mutation",
|
|
55628
|
+
auth: "protected"
|
|
55629
|
+
}),
|
|
55630
|
+
/** Select (not start) a program; refused when the appliance does not offer it. */
|
|
55467
55631
|
setProgram: method(object({
|
|
55468
|
-
deviceId:
|
|
55632
|
+
deviceId: DeviceIdSchema,
|
|
55469
55633
|
program: string().min(1)
|
|
55470
55634
|
}), _void(), {
|
|
55471
55635
|
kind: "mutation",
|
|
55472
55636
|
auth: "protected"
|
|
55473
55637
|
}),
|
|
55474
55638
|
setPower: method(object({
|
|
55475
|
-
deviceId:
|
|
55639
|
+
deviceId: DeviceIdSchema,
|
|
55476
55640
|
on: boolean()
|
|
55477
55641
|
}), _void(), {
|
|
55478
55642
|
kind: "mutation",
|
|
55479
55643
|
auth: "protected"
|
|
55480
55644
|
}),
|
|
55481
55645
|
setHalfLoad: method(object({
|
|
55482
|
-
deviceId:
|
|
55646
|
+
deviceId: DeviceIdSchema,
|
|
55483
55647
|
on: boolean()
|
|
55484
55648
|
}), _void(), {
|
|
55485
55649
|
kind: "mutation",
|
|
55486
55650
|
auth: "protected"
|
|
55487
55651
|
}),
|
|
55488
55652
|
setHygienePlus: method(object({
|
|
55489
|
-
deviceId:
|
|
55653
|
+
deviceId: DeviceIdSchema,
|
|
55490
55654
|
on: boolean()
|
|
55491
55655
|
}), _void(), {
|
|
55492
55656
|
kind: "mutation",
|
|
55493
55657
|
auth: "protected"
|
|
55494
55658
|
}),
|
|
55659
|
+
setExtraDry: method(object({
|
|
55660
|
+
deviceId: DeviceIdSchema,
|
|
55661
|
+
on: boolean()
|
|
55662
|
+
}), _void(), {
|
|
55663
|
+
kind: "mutation",
|
|
55664
|
+
auth: "protected"
|
|
55665
|
+
}),
|
|
55666
|
+
setIntensiveZone: method(object({
|
|
55667
|
+
deviceId: DeviceIdSchema,
|
|
55668
|
+
on: boolean()
|
|
55669
|
+
}), _void(), {
|
|
55670
|
+
kind: "mutation",
|
|
55671
|
+
auth: "protected"
|
|
55672
|
+
}),
|
|
55673
|
+
setVarioSpeedPlus: method(object({
|
|
55674
|
+
deviceId: DeviceIdSchema,
|
|
55675
|
+
on: boolean()
|
|
55676
|
+
}), _void(), {
|
|
55677
|
+
kind: "mutation",
|
|
55678
|
+
auth: "protected"
|
|
55679
|
+
}),
|
|
55680
|
+
setChildLock: method(object({
|
|
55681
|
+
deviceId: DeviceIdSchema,
|
|
55682
|
+
on: boolean()
|
|
55683
|
+
}), _void(), {
|
|
55684
|
+
kind: "mutation",
|
|
55685
|
+
auth: "protected"
|
|
55686
|
+
}),
|
|
55687
|
+
/**
|
|
55688
|
+
* Write any option or setting by feature key. Refused when the description does
|
|
55689
|
+
* not list it, it is not writable or not available now, or the value is outside
|
|
55690
|
+
* its declared range / members.
|
|
55691
|
+
*/
|
|
55495
55692
|
setOption: method(object({
|
|
55496
|
-
deviceId:
|
|
55693
|
+
deviceId: DeviceIdSchema,
|
|
55497
55694
|
key: string().min(1),
|
|
55498
|
-
value:
|
|
55499
|
-
boolean(),
|
|
55500
|
-
string(),
|
|
55501
|
-
number()
|
|
55502
|
-
])
|
|
55695
|
+
value: DishwasherValueSchema
|
|
55503
55696
|
}), _void(), {
|
|
55504
55697
|
kind: "mutation",
|
|
55505
55698
|
auth: "protected"
|
|
55506
|
-
})
|
|
55699
|
+
}),
|
|
55700
|
+
/** What this appliance can do, from its own description — the UI is derived from it. */
|
|
55701
|
+
getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
|
|
55507
55702
|
},
|
|
55508
55703
|
status: {
|
|
55509
55704
|
schema: DishwasherStatusSchema,
|
|
@@ -69452,6 +69647,12 @@ Object.freeze({
|
|
|
69452
69647
|
addonId: null,
|
|
69453
69648
|
access: "view"
|
|
69454
69649
|
},
|
|
69650
|
+
"dishwasher.getOptions": {
|
|
69651
|
+
capName: "dishwasher",
|
|
69652
|
+
capScope: "device",
|
|
69653
|
+
addonId: null,
|
|
69654
|
+
access: "view"
|
|
69655
|
+
},
|
|
69455
69656
|
"dishwasher.getStatus": {
|
|
69456
69657
|
capName: "dishwasher",
|
|
69457
69658
|
capScope: "device",
|
|
@@ -69464,6 +69665,24 @@ Object.freeze({
|
|
|
69464
69665
|
addonId: null,
|
|
69465
69666
|
access: "create"
|
|
69466
69667
|
},
|
|
69668
|
+
"dishwasher.resume": {
|
|
69669
|
+
capName: "dishwasher",
|
|
69670
|
+
capScope: "device",
|
|
69671
|
+
addonId: null,
|
|
69672
|
+
access: "create"
|
|
69673
|
+
},
|
|
69674
|
+
"dishwasher.setChildLock": {
|
|
69675
|
+
capName: "dishwasher",
|
|
69676
|
+
capScope: "device",
|
|
69677
|
+
addonId: null,
|
|
69678
|
+
access: "create"
|
|
69679
|
+
},
|
|
69680
|
+
"dishwasher.setExtraDry": {
|
|
69681
|
+
capName: "dishwasher",
|
|
69682
|
+
capScope: "device",
|
|
69683
|
+
addonId: null,
|
|
69684
|
+
access: "create"
|
|
69685
|
+
},
|
|
69467
69686
|
"dishwasher.setHalfLoad": {
|
|
69468
69687
|
capName: "dishwasher",
|
|
69469
69688
|
capScope: "device",
|
|
@@ -69476,6 +69695,12 @@ Object.freeze({
|
|
|
69476
69695
|
addonId: null,
|
|
69477
69696
|
access: "create"
|
|
69478
69697
|
},
|
|
69698
|
+
"dishwasher.setIntensiveZone": {
|
|
69699
|
+
capName: "dishwasher",
|
|
69700
|
+
capScope: "device",
|
|
69701
|
+
addonId: null,
|
|
69702
|
+
access: "create"
|
|
69703
|
+
},
|
|
69479
69704
|
"dishwasher.setOption": {
|
|
69480
69705
|
capName: "dishwasher",
|
|
69481
69706
|
capScope: "device",
|
|
@@ -69494,6 +69719,12 @@ Object.freeze({
|
|
|
69494
69719
|
addonId: null,
|
|
69495
69720
|
access: "create"
|
|
69496
69721
|
},
|
|
69722
|
+
"dishwasher.setVarioSpeedPlus": {
|
|
69723
|
+
capName: "dishwasher",
|
|
69724
|
+
capScope: "device",
|
|
69725
|
+
addonId: null,
|
|
69726
|
+
access: "create"
|
|
69727
|
+
},
|
|
69497
69728
|
"dishwasher.start": {
|
|
69498
69729
|
capName: "dishwasher",
|
|
69499
69730
|
capScope: "device",
|
|
@@ -73940,6 +74171,12 @@ Object.freeze({
|
|
|
73940
74171
|
addonId: null,
|
|
73941
74172
|
access: "view"
|
|
73942
74173
|
},
|
|
74174
|
+
"storageMigration.moverClearance": {
|
|
74175
|
+
capName: "storage-migration",
|
|
74176
|
+
capScope: "system",
|
|
74177
|
+
addonId: null,
|
|
74178
|
+
access: "view"
|
|
74179
|
+
},
|
|
73943
74180
|
"storageMigration.movers": {
|
|
73944
74181
|
capName: "storage-migration",
|
|
73945
74182
|
capScope: "system",
|
|
@@ -76133,6 +76370,11 @@ Object.freeze({
|
|
|
76133
76370
|
form: "single",
|
|
76134
76371
|
optional: false
|
|
76135
76372
|
}],
|
|
76373
|
+
"dishwasher.getOptions": [{
|
|
76374
|
+
name: "deviceId",
|
|
76375
|
+
form: "single",
|
|
76376
|
+
optional: false
|
|
76377
|
+
}],
|
|
76136
76378
|
"dishwasher.getStatus": [{
|
|
76137
76379
|
name: "deviceId",
|
|
76138
76380
|
form: "single",
|
|
@@ -76143,6 +76385,21 @@ Object.freeze({
|
|
|
76143
76385
|
form: "single",
|
|
76144
76386
|
optional: false
|
|
76145
76387
|
}],
|
|
76388
|
+
"dishwasher.resume": [{
|
|
76389
|
+
name: "deviceId",
|
|
76390
|
+
form: "single",
|
|
76391
|
+
optional: false
|
|
76392
|
+
}],
|
|
76393
|
+
"dishwasher.setChildLock": [{
|
|
76394
|
+
name: "deviceId",
|
|
76395
|
+
form: "single",
|
|
76396
|
+
optional: false
|
|
76397
|
+
}],
|
|
76398
|
+
"dishwasher.setExtraDry": [{
|
|
76399
|
+
name: "deviceId",
|
|
76400
|
+
form: "single",
|
|
76401
|
+
optional: false
|
|
76402
|
+
}],
|
|
76146
76403
|
"dishwasher.setHalfLoad": [{
|
|
76147
76404
|
name: "deviceId",
|
|
76148
76405
|
form: "single",
|
|
@@ -76153,6 +76410,11 @@ Object.freeze({
|
|
|
76153
76410
|
form: "single",
|
|
76154
76411
|
optional: false
|
|
76155
76412
|
}],
|
|
76413
|
+
"dishwasher.setIntensiveZone": [{
|
|
76414
|
+
name: "deviceId",
|
|
76415
|
+
form: "single",
|
|
76416
|
+
optional: false
|
|
76417
|
+
}],
|
|
76156
76418
|
"dishwasher.setOption": [{
|
|
76157
76419
|
name: "deviceId",
|
|
76158
76420
|
form: "single",
|
|
@@ -76168,6 +76430,11 @@ Object.freeze({
|
|
|
76168
76430
|
form: "single",
|
|
76169
76431
|
optional: false
|
|
76170
76432
|
}],
|
|
76433
|
+
"dishwasher.setVarioSpeedPlus": [{
|
|
76434
|
+
name: "deviceId",
|
|
76435
|
+
form: "single",
|
|
76436
|
+
optional: false
|
|
76437
|
+
}],
|
|
76171
76438
|
"dishwasher.start": [{
|
|
76172
76439
|
name: "deviceId",
|
|
76173
76440
|
form: "single",
|
|
@@ -78209,6 +78476,9 @@ new Map(Object.entries({
|
|
|
78209
78476
|
"wrapper-update-available": "system",
|
|
78210
78477
|
"backup-completed": "system",
|
|
78211
78478
|
"export-completed": "system",
|
|
78479
|
+
"alert-critical": "system",
|
|
78480
|
+
"alert-error": "system",
|
|
78481
|
+
"alert-critical-resolved": "system",
|
|
78212
78482
|
"storage-location-low": "system",
|
|
78213
78483
|
"storage-location-critical": "system",
|
|
78214
78484
|
"storage-location-ok": "system",
|
|
@@ -78333,6 +78603,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
78333
78603
|
"storage-location-ok"
|
|
78334
78604
|
]
|
|
78335
78605
|
},
|
|
78606
|
+
{
|
|
78607
|
+
id: "alerts",
|
|
78608
|
+
family: "system",
|
|
78609
|
+
label: "Alerts",
|
|
78610
|
+
kinds: [
|
|
78611
|
+
"alert-critical",
|
|
78612
|
+
"alert-error",
|
|
78613
|
+
"alert-critical-resolved"
|
|
78614
|
+
]
|
|
78615
|
+
},
|
|
78336
78616
|
{
|
|
78337
78617
|
id: "alarm",
|
|
78338
78618
|
family: "alarm",
|
|
@@ -78377,6 +78657,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
78377
78657
|
return [[descriptor.kind, field]];
|
|
78378
78658
|
})));
|
|
78379
78659
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
78660
|
+
object({
|
|
78661
|
+
phase: _enum(["raised", "resolved"]),
|
|
78662
|
+
episodeId: string().min(1),
|
|
78663
|
+
alertId: string().min(1),
|
|
78664
|
+
severity: AlertSeveritySchema,
|
|
78665
|
+
category: string(),
|
|
78666
|
+
title: string(),
|
|
78667
|
+
message: string(),
|
|
78668
|
+
sourceType: string().optional(),
|
|
78669
|
+
sourceId: string().optional(),
|
|
78670
|
+
nodeId: string().optional(),
|
|
78671
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
78672
|
+
actionUrl: string().optional(),
|
|
78673
|
+
at: number()
|
|
78674
|
+
});
|
|
78380
78675
|
var RULE_BODY_ONLY = ["body"];
|
|
78381
78676
|
var RULE_TEXT = ["title", "body"];
|
|
78382
78677
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -78386,6 +78681,11 @@ var TANK = [
|
|
|
78386
78681
|
"device-tank-full",
|
|
78387
78682
|
"device-tank-normal"
|
|
78388
78683
|
];
|
|
78684
|
+
var ALERT_EPISODE = [
|
|
78685
|
+
"alert-critical",
|
|
78686
|
+
"alert-error",
|
|
78687
|
+
"alert-critical-resolved"
|
|
78688
|
+
];
|
|
78389
78689
|
var UPDATES = [
|
|
78390
78690
|
"addon-update-available",
|
|
78391
78691
|
"server-update-available",
|
|
@@ -78578,14 +78878,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
78578
78878
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
78579
78879
|
([...RULE_TEXT], [...TANK]),
|
|
78580
78880
|
[...RULE_TEXT],
|
|
78581
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
78582
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
78583
|
-
[...RULE_TEXT],
|
|
78881
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
78882
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
78584
78883
|
[...RULE_TEXT],
|
|
78585
78884
|
[...RULE_TEXT],
|
|
78586
78885
|
[...RULE_TEXT],
|
|
78587
78886
|
[...RULE_TEXT],
|
|
78588
78887
|
[...RULE_TEXT],
|
|
78888
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78589
78889
|
[...RULE_TEXT],
|
|
78590
78890
|
[...RULE_TEXT],
|
|
78591
78891
|
[...RULE_TEXT],
|
|
@@ -78603,7 +78903,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
78603
78903
|
[...RULE_TEXT],
|
|
78604
78904
|
[...RULE_TEXT],
|
|
78605
78905
|
[...RULE_TEXT],
|
|
78606
|
-
[...RULE_TEXT],
|
|
78906
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78907
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78908
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78909
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78910
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78607
78911
|
[...RULE_TEXT],
|
|
78608
78912
|
[...RULE_TEXT],
|
|
78609
78913
|
[...RULE_TEXT],
|
package/dist/addon.mjs
CHANGED
|
@@ -10,7 +10,7 @@ import { getCACertificates, setDefaultCACertificates } from "node:tls";
|
|
|
10
10
|
//#region \0rolldown/runtime.js
|
|
11
11
|
var __require$1 = /* @__PURE__ */ createRequire(import.meta.url);
|
|
12
12
|
//#endregion
|
|
13
|
-
//#region ../types/dist/event-category-
|
|
13
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
14
14
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
15
15
|
EventCategory["SystemBoot"] = "system.boot";
|
|
16
16
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -89,9 +89,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
89
89
|
/**
|
|
90
90
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
91
91
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
92
|
-
* alert centre turns it into one
|
|
92
|
+
* alert centre turns it into one critical alert.
|
|
93
93
|
*/
|
|
94
94
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
95
|
+
/**
|
|
96
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
97
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
98
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
99
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
100
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
101
|
+
* event may be dropped (D8, D11).
|
|
102
|
+
*/
|
|
103
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
95
104
|
EventCategory["AddonError"] = "addon.error";
|
|
96
105
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
97
106
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -5416,7 +5425,7 @@ var ZodIssueCode = {
|
|
|
5416
5425
|
var ZodFirstPartyTypeKind;
|
|
5417
5426
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5418
5427
|
//#endregion
|
|
5419
|
-
//#region ../types/dist/sleep-
|
|
5428
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
5420
5429
|
/**
|
|
5421
5430
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5422
5431
|
* window to float samples (D455).
|
|
@@ -13213,7 +13222,14 @@ var AlertSeveritySchema = _enum([
|
|
|
13213
13222
|
]);
|
|
13214
13223
|
var AlertActionSchema = object({
|
|
13215
13224
|
label: string(),
|
|
13216
|
-
href: string().optional()
|
|
13225
|
+
href: string().optional(),
|
|
13226
|
+
/**
|
|
13227
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
13228
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
13229
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
13230
|
+
* the SPA has no such route and would bounce to the home page.
|
|
13231
|
+
*/
|
|
13232
|
+
navigation: _enum(["app", "server"]).optional()
|
|
13217
13233
|
});
|
|
13218
13234
|
var AlertStatusSchema = _enum([
|
|
13219
13235
|
"active",
|
|
@@ -17594,7 +17610,11 @@ var deviceDiscoveryCapability = {
|
|
|
17594
17610
|
};
|
|
17595
17611
|
/**
|
|
17596
17612
|
* `device-adoption` — generic discovery + adoption surface,
|
|
17597
|
-
* system-scoped
|
|
17613
|
+
* system-scoped collection (one provider per integration addon), routed
|
|
17614
|
+
* by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
|
|
17615
|
+
* pin model as `connection-test`. The admin UI keeps using
|
|
17616
|
+
* `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
|
|
17617
|
+
* successor to `ha-discovery`:
|
|
17598
17618
|
* keyed by `integrationId` (the addon resolves integrationId → broker
|
|
17599
17619
|
* internally) rather than a connection-specific `brokerId`, and it
|
|
17600
17620
|
* REUSES the shared `DiscoveredChildDevice` candidate type from
|
|
@@ -17759,7 +17779,7 @@ var ResyncResultSchema = object({
|
|
|
17759
17779
|
var deviceAdoptionCapability = {
|
|
17760
17780
|
name: "device-adoption",
|
|
17761
17781
|
scope: "system",
|
|
17762
|
-
mode: "
|
|
17782
|
+
mode: "collection",
|
|
17763
17783
|
status: {
|
|
17764
17784
|
schema: AdoptionStatusSchema,
|
|
17765
17785
|
kind: "poll"
|
|
@@ -41942,6 +41962,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
41942
41962
|
"server-updated",
|
|
41943
41963
|
"export-completed",
|
|
41944
41964
|
"backup-completed",
|
|
41965
|
+
"alert-critical",
|
|
41966
|
+
"alert-error",
|
|
41967
|
+
"alert-critical-resolved",
|
|
41945
41968
|
"camera-online",
|
|
41946
41969
|
"camera-offline",
|
|
41947
41970
|
"camera-disabled",
|
|
@@ -51122,7 +51145,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
51122
51145
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
51123
51146
|
kind: "mutation",
|
|
51124
51147
|
auth: "admin"
|
|
51125
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
51148
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
51149
|
+
clear: boolean(),
|
|
51150
|
+
repointLocationId: string().optional()
|
|
51151
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
51126
51152
|
kind: "mutation",
|
|
51127
51153
|
auth: "admin"
|
|
51128
51154
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -55386,6 +55412,11 @@ onStatusChanged: { data: object({
|
|
|
55386
55412
|
*
|
|
55387
55413
|
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
55388
55414
|
* provider refreshes the slice on an interval and eagerly after commands.
|
|
55415
|
+
*
|
|
55416
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
55417
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
55418
|
+
* the link is down, or the description does not carry it) and is never
|
|
55419
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
55389
55420
|
*/
|
|
55390
55421
|
var DishwasherStateSchema = _enum([
|
|
55391
55422
|
"idle",
|
|
@@ -55395,35 +55426,155 @@ var DishwasherStateSchema = _enum([
|
|
|
55395
55426
|
"error",
|
|
55396
55427
|
"unavailable"
|
|
55397
55428
|
]);
|
|
55429
|
+
/**
|
|
55430
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
55431
|
+
* view for compact surfaces; this is what the appliance said.
|
|
55432
|
+
*/
|
|
55433
|
+
var DishwasherOperationStateSchema = _enum([
|
|
55434
|
+
"Inactive",
|
|
55435
|
+
"Ready",
|
|
55436
|
+
"DelayedStart",
|
|
55437
|
+
"Run",
|
|
55438
|
+
"Pause",
|
|
55439
|
+
"ActionRequired",
|
|
55440
|
+
"Finished",
|
|
55441
|
+
"Error",
|
|
55442
|
+
"Aborting"
|
|
55443
|
+
]);
|
|
55444
|
+
/**
|
|
55445
|
+
* Why fields may be `null`:
|
|
55446
|
+
* - `available` — the link is up and the description is loaded;
|
|
55447
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
55448
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
55449
|
+
* be loaded, so its values cannot be decoded.
|
|
55450
|
+
*/
|
|
55451
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
55452
|
+
"available",
|
|
55453
|
+
"offline",
|
|
55454
|
+
"description-missing"
|
|
55455
|
+
]);
|
|
55398
55456
|
var DishwasherConsumableLevelSchema = _enum([
|
|
55399
55457
|
"ok",
|
|
55400
55458
|
"low",
|
|
55401
55459
|
"empty"
|
|
55402
55460
|
]);
|
|
55403
55461
|
var DishwasherStatusSchema = object({
|
|
55462
|
+
availability: DishwasherAvailabilitySchema,
|
|
55463
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
55404
55464
|
state: DishwasherStateSchema,
|
|
55405
|
-
/**
|
|
55465
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
55466
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
55467
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
55406
55468
|
program: string().nullable(),
|
|
55407
|
-
/**
|
|
55469
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
55470
|
+
selectedProgram: string().nullable(),
|
|
55471
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
55408
55472
|
availablePrograms: array(string()),
|
|
55409
|
-
/**
|
|
55410
|
-
|
|
55473
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
55474
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
55475
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
55476
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
55411
55477
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
55412
55478
|
progressPercent: number().min(0).max(100).nullable(),
|
|
55413
|
-
/** True when the door is reported open. */
|
|
55414
|
-
doorOpen: boolean(),
|
|
55415
|
-
/** True when
|
|
55416
|
-
|
|
55417
|
-
/**
|
|
55418
|
-
|
|
55479
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
55480
|
+
doorOpen: boolean().nullable(),
|
|
55481
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
55482
|
+
doorLocked: boolean().nullable(),
|
|
55483
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
55484
|
+
remoteStartAllowed: boolean().nullable(),
|
|
55485
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
55486
|
+
remoteControlActive: boolean().nullable(),
|
|
55487
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
55488
|
+
localControlActive: boolean().nullable(),
|
|
55489
|
+
/** Main power / switched-on state; null when not known. */
|
|
55490
|
+
powerOn: boolean().nullable(),
|
|
55491
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55492
|
+
powerState: string().nullable(),
|
|
55419
55493
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55420
55494
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55421
|
-
|
|
55422
|
-
|
|
55495
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
55496
|
+
halfLoad: boolean().nullable(),
|
|
55497
|
+
hygienePlus: boolean().nullable(),
|
|
55498
|
+
/** Extra dry option when the appliance exposes it. */
|
|
55499
|
+
extraDry: boolean().nullable(),
|
|
55500
|
+
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
55501
|
+
intensiveZone: boolean().nullable(),
|
|
55502
|
+
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
55503
|
+
varioSpeedPlus: boolean().nullable(),
|
|
55504
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
55505
|
+
childLock: boolean().nullable(),
|
|
55506
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
55507
|
+
activeEvents: array(string()),
|
|
55508
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
55423
55509
|
errorCode: number().nullable(),
|
|
55510
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
55424
55511
|
errorLabel: string().nullable(),
|
|
55512
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
55425
55513
|
lastFetchedAt: number()
|
|
55426
55514
|
});
|
|
55515
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
55516
|
+
/** A value a program option or setting can take. */
|
|
55517
|
+
var DishwasherValueSchema = union([
|
|
55518
|
+
boolean(),
|
|
55519
|
+
string(),
|
|
55520
|
+
number()
|
|
55521
|
+
]);
|
|
55522
|
+
var DishwasherAccessSchema = _enum([
|
|
55523
|
+
"none",
|
|
55524
|
+
"read",
|
|
55525
|
+
"readWrite",
|
|
55526
|
+
"writeOnly",
|
|
55527
|
+
"readStatic"
|
|
55528
|
+
]);
|
|
55529
|
+
/**
|
|
55530
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
55531
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
55532
|
+
*/
|
|
55533
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
55534
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
55535
|
+
key: string(),
|
|
55536
|
+
/** Last segment of the key, for display. */
|
|
55537
|
+
name: string(),
|
|
55538
|
+
type: _enum([
|
|
55539
|
+
"boolean",
|
|
55540
|
+
"number",
|
|
55541
|
+
"enum",
|
|
55542
|
+
"string"
|
|
55543
|
+
]),
|
|
55544
|
+
access: DishwasherAccessSchema,
|
|
55545
|
+
/** The appliance reports this entity as currently available. */
|
|
55546
|
+
available: boolean(),
|
|
55547
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
55548
|
+
unit: string().nullable(),
|
|
55549
|
+
min: number().nullable(),
|
|
55550
|
+
max: number().nullable(),
|
|
55551
|
+
step: number().nullable(),
|
|
55552
|
+
/** Allowed members of an enum; null for other types. */
|
|
55553
|
+
enumValues: array(string()).nullable(),
|
|
55554
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
55555
|
+
});
|
|
55556
|
+
var DishwasherProgramSchema = object({
|
|
55557
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
55558
|
+
key: string(),
|
|
55559
|
+
name: string(),
|
|
55560
|
+
/** The appliance currently offers this program. */
|
|
55561
|
+
available: boolean(),
|
|
55562
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
55563
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
55564
|
+
});
|
|
55565
|
+
var DishwasherOptionsSchema = object({
|
|
55566
|
+
availability: DishwasherAvailabilitySchema,
|
|
55567
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
55568
|
+
supportsStart: boolean(),
|
|
55569
|
+
supportsPause: boolean(),
|
|
55570
|
+
supportsResume: boolean(),
|
|
55571
|
+
supportsStop: boolean(),
|
|
55572
|
+
supportsPower: boolean(),
|
|
55573
|
+
/** Every program the description lists, with its options. */
|
|
55574
|
+
programs: array(DishwasherProgramSchema),
|
|
55575
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
55576
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
55577
|
+
});
|
|
55427
55578
|
var dishwasherCapability = {
|
|
55428
55579
|
name: "dishwasher",
|
|
55429
55580
|
scope: "device",
|
|
@@ -55431,58 +55582,102 @@ var dishwasherCapability = {
|
|
|
55431
55582
|
mode: "singleton",
|
|
55432
55583
|
deviceTypes: [DeviceType.Dishwasher],
|
|
55433
55584
|
methods: {
|
|
55434
|
-
|
|
55585
|
+
/**
|
|
55586
|
+
* Start a program. Without `program` the selected one starts. `options` are
|
|
55587
|
+
* option feature keys; each is checked against the program's constraints.
|
|
55588
|
+
*/
|
|
55589
|
+
start: method(object({
|
|
55590
|
+
deviceId: DeviceIdSchema,
|
|
55591
|
+
program: string().min(1).optional(),
|
|
55592
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
55593
|
+
}), _void(), {
|
|
55435
55594
|
kind: "mutation",
|
|
55436
55595
|
auth: "protected"
|
|
55437
55596
|
}),
|
|
55438
|
-
pause: method(object({ deviceId:
|
|
55597
|
+
pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55439
55598
|
kind: "mutation",
|
|
55440
55599
|
auth: "protected"
|
|
55441
55600
|
}),
|
|
55442
|
-
|
|
55601
|
+
resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55443
55602
|
kind: "mutation",
|
|
55444
55603
|
auth: "protected"
|
|
55445
55604
|
}),
|
|
55605
|
+
stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
55606
|
+
kind: "mutation",
|
|
55607
|
+
auth: "protected"
|
|
55608
|
+
}),
|
|
55609
|
+
/** Select (not start) a program; refused when the appliance does not offer it. */
|
|
55446
55610
|
setProgram: method(object({
|
|
55447
|
-
deviceId:
|
|
55611
|
+
deviceId: DeviceIdSchema,
|
|
55448
55612
|
program: string().min(1)
|
|
55449
55613
|
}), _void(), {
|
|
55450
55614
|
kind: "mutation",
|
|
55451
55615
|
auth: "protected"
|
|
55452
55616
|
}),
|
|
55453
55617
|
setPower: method(object({
|
|
55454
|
-
deviceId:
|
|
55618
|
+
deviceId: DeviceIdSchema,
|
|
55455
55619
|
on: boolean()
|
|
55456
55620
|
}), _void(), {
|
|
55457
55621
|
kind: "mutation",
|
|
55458
55622
|
auth: "protected"
|
|
55459
55623
|
}),
|
|
55460
55624
|
setHalfLoad: method(object({
|
|
55461
|
-
deviceId:
|
|
55625
|
+
deviceId: DeviceIdSchema,
|
|
55462
55626
|
on: boolean()
|
|
55463
55627
|
}), _void(), {
|
|
55464
55628
|
kind: "mutation",
|
|
55465
55629
|
auth: "protected"
|
|
55466
55630
|
}),
|
|
55467
55631
|
setHygienePlus: method(object({
|
|
55468
|
-
deviceId:
|
|
55632
|
+
deviceId: DeviceIdSchema,
|
|
55469
55633
|
on: boolean()
|
|
55470
55634
|
}), _void(), {
|
|
55471
55635
|
kind: "mutation",
|
|
55472
55636
|
auth: "protected"
|
|
55473
55637
|
}),
|
|
55638
|
+
setExtraDry: method(object({
|
|
55639
|
+
deviceId: DeviceIdSchema,
|
|
55640
|
+
on: boolean()
|
|
55641
|
+
}), _void(), {
|
|
55642
|
+
kind: "mutation",
|
|
55643
|
+
auth: "protected"
|
|
55644
|
+
}),
|
|
55645
|
+
setIntensiveZone: method(object({
|
|
55646
|
+
deviceId: DeviceIdSchema,
|
|
55647
|
+
on: boolean()
|
|
55648
|
+
}), _void(), {
|
|
55649
|
+
kind: "mutation",
|
|
55650
|
+
auth: "protected"
|
|
55651
|
+
}),
|
|
55652
|
+
setVarioSpeedPlus: method(object({
|
|
55653
|
+
deviceId: DeviceIdSchema,
|
|
55654
|
+
on: boolean()
|
|
55655
|
+
}), _void(), {
|
|
55656
|
+
kind: "mutation",
|
|
55657
|
+
auth: "protected"
|
|
55658
|
+
}),
|
|
55659
|
+
setChildLock: method(object({
|
|
55660
|
+
deviceId: DeviceIdSchema,
|
|
55661
|
+
on: boolean()
|
|
55662
|
+
}), _void(), {
|
|
55663
|
+
kind: "mutation",
|
|
55664
|
+
auth: "protected"
|
|
55665
|
+
}),
|
|
55666
|
+
/**
|
|
55667
|
+
* Write any option or setting by feature key. Refused when the description does
|
|
55668
|
+
* not list it, it is not writable or not available now, or the value is outside
|
|
55669
|
+
* its declared range / members.
|
|
55670
|
+
*/
|
|
55474
55671
|
setOption: method(object({
|
|
55475
|
-
deviceId:
|
|
55672
|
+
deviceId: DeviceIdSchema,
|
|
55476
55673
|
key: string().min(1),
|
|
55477
|
-
value:
|
|
55478
|
-
boolean(),
|
|
55479
|
-
string(),
|
|
55480
|
-
number()
|
|
55481
|
-
])
|
|
55674
|
+
value: DishwasherValueSchema
|
|
55482
55675
|
}), _void(), {
|
|
55483
55676
|
kind: "mutation",
|
|
55484
55677
|
auth: "protected"
|
|
55485
|
-
})
|
|
55678
|
+
}),
|
|
55679
|
+
/** What this appliance can do, from its own description — the UI is derived from it. */
|
|
55680
|
+
getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
|
|
55486
55681
|
},
|
|
55487
55682
|
status: {
|
|
55488
55683
|
schema: DishwasherStatusSchema,
|
|
@@ -69431,6 +69626,12 @@ Object.freeze({
|
|
|
69431
69626
|
addonId: null,
|
|
69432
69627
|
access: "view"
|
|
69433
69628
|
},
|
|
69629
|
+
"dishwasher.getOptions": {
|
|
69630
|
+
capName: "dishwasher",
|
|
69631
|
+
capScope: "device",
|
|
69632
|
+
addonId: null,
|
|
69633
|
+
access: "view"
|
|
69634
|
+
},
|
|
69434
69635
|
"dishwasher.getStatus": {
|
|
69435
69636
|
capName: "dishwasher",
|
|
69436
69637
|
capScope: "device",
|
|
@@ -69443,6 +69644,24 @@ Object.freeze({
|
|
|
69443
69644
|
addonId: null,
|
|
69444
69645
|
access: "create"
|
|
69445
69646
|
},
|
|
69647
|
+
"dishwasher.resume": {
|
|
69648
|
+
capName: "dishwasher",
|
|
69649
|
+
capScope: "device",
|
|
69650
|
+
addonId: null,
|
|
69651
|
+
access: "create"
|
|
69652
|
+
},
|
|
69653
|
+
"dishwasher.setChildLock": {
|
|
69654
|
+
capName: "dishwasher",
|
|
69655
|
+
capScope: "device",
|
|
69656
|
+
addonId: null,
|
|
69657
|
+
access: "create"
|
|
69658
|
+
},
|
|
69659
|
+
"dishwasher.setExtraDry": {
|
|
69660
|
+
capName: "dishwasher",
|
|
69661
|
+
capScope: "device",
|
|
69662
|
+
addonId: null,
|
|
69663
|
+
access: "create"
|
|
69664
|
+
},
|
|
69446
69665
|
"dishwasher.setHalfLoad": {
|
|
69447
69666
|
capName: "dishwasher",
|
|
69448
69667
|
capScope: "device",
|
|
@@ -69455,6 +69674,12 @@ Object.freeze({
|
|
|
69455
69674
|
addonId: null,
|
|
69456
69675
|
access: "create"
|
|
69457
69676
|
},
|
|
69677
|
+
"dishwasher.setIntensiveZone": {
|
|
69678
|
+
capName: "dishwasher",
|
|
69679
|
+
capScope: "device",
|
|
69680
|
+
addonId: null,
|
|
69681
|
+
access: "create"
|
|
69682
|
+
},
|
|
69458
69683
|
"dishwasher.setOption": {
|
|
69459
69684
|
capName: "dishwasher",
|
|
69460
69685
|
capScope: "device",
|
|
@@ -69473,6 +69698,12 @@ Object.freeze({
|
|
|
69473
69698
|
addonId: null,
|
|
69474
69699
|
access: "create"
|
|
69475
69700
|
},
|
|
69701
|
+
"dishwasher.setVarioSpeedPlus": {
|
|
69702
|
+
capName: "dishwasher",
|
|
69703
|
+
capScope: "device",
|
|
69704
|
+
addonId: null,
|
|
69705
|
+
access: "create"
|
|
69706
|
+
},
|
|
69476
69707
|
"dishwasher.start": {
|
|
69477
69708
|
capName: "dishwasher",
|
|
69478
69709
|
capScope: "device",
|
|
@@ -73919,6 +74150,12 @@ Object.freeze({
|
|
|
73919
74150
|
addonId: null,
|
|
73920
74151
|
access: "view"
|
|
73921
74152
|
},
|
|
74153
|
+
"storageMigration.moverClearance": {
|
|
74154
|
+
capName: "storage-migration",
|
|
74155
|
+
capScope: "system",
|
|
74156
|
+
addonId: null,
|
|
74157
|
+
access: "view"
|
|
74158
|
+
},
|
|
73922
74159
|
"storageMigration.movers": {
|
|
73923
74160
|
capName: "storage-migration",
|
|
73924
74161
|
capScope: "system",
|
|
@@ -76112,6 +76349,11 @@ Object.freeze({
|
|
|
76112
76349
|
form: "single",
|
|
76113
76350
|
optional: false
|
|
76114
76351
|
}],
|
|
76352
|
+
"dishwasher.getOptions": [{
|
|
76353
|
+
name: "deviceId",
|
|
76354
|
+
form: "single",
|
|
76355
|
+
optional: false
|
|
76356
|
+
}],
|
|
76115
76357
|
"dishwasher.getStatus": [{
|
|
76116
76358
|
name: "deviceId",
|
|
76117
76359
|
form: "single",
|
|
@@ -76122,6 +76364,21 @@ Object.freeze({
|
|
|
76122
76364
|
form: "single",
|
|
76123
76365
|
optional: false
|
|
76124
76366
|
}],
|
|
76367
|
+
"dishwasher.resume": [{
|
|
76368
|
+
name: "deviceId",
|
|
76369
|
+
form: "single",
|
|
76370
|
+
optional: false
|
|
76371
|
+
}],
|
|
76372
|
+
"dishwasher.setChildLock": [{
|
|
76373
|
+
name: "deviceId",
|
|
76374
|
+
form: "single",
|
|
76375
|
+
optional: false
|
|
76376
|
+
}],
|
|
76377
|
+
"dishwasher.setExtraDry": [{
|
|
76378
|
+
name: "deviceId",
|
|
76379
|
+
form: "single",
|
|
76380
|
+
optional: false
|
|
76381
|
+
}],
|
|
76125
76382
|
"dishwasher.setHalfLoad": [{
|
|
76126
76383
|
name: "deviceId",
|
|
76127
76384
|
form: "single",
|
|
@@ -76132,6 +76389,11 @@ Object.freeze({
|
|
|
76132
76389
|
form: "single",
|
|
76133
76390
|
optional: false
|
|
76134
76391
|
}],
|
|
76392
|
+
"dishwasher.setIntensiveZone": [{
|
|
76393
|
+
name: "deviceId",
|
|
76394
|
+
form: "single",
|
|
76395
|
+
optional: false
|
|
76396
|
+
}],
|
|
76135
76397
|
"dishwasher.setOption": [{
|
|
76136
76398
|
name: "deviceId",
|
|
76137
76399
|
form: "single",
|
|
@@ -76147,6 +76409,11 @@ Object.freeze({
|
|
|
76147
76409
|
form: "single",
|
|
76148
76410
|
optional: false
|
|
76149
76411
|
}],
|
|
76412
|
+
"dishwasher.setVarioSpeedPlus": [{
|
|
76413
|
+
name: "deviceId",
|
|
76414
|
+
form: "single",
|
|
76415
|
+
optional: false
|
|
76416
|
+
}],
|
|
76150
76417
|
"dishwasher.start": [{
|
|
76151
76418
|
name: "deviceId",
|
|
76152
76419
|
form: "single",
|
|
@@ -78188,6 +78455,9 @@ new Map(Object.entries({
|
|
|
78188
78455
|
"wrapper-update-available": "system",
|
|
78189
78456
|
"backup-completed": "system",
|
|
78190
78457
|
"export-completed": "system",
|
|
78458
|
+
"alert-critical": "system",
|
|
78459
|
+
"alert-error": "system",
|
|
78460
|
+
"alert-critical-resolved": "system",
|
|
78191
78461
|
"storage-location-low": "system",
|
|
78192
78462
|
"storage-location-critical": "system",
|
|
78193
78463
|
"storage-location-ok": "system",
|
|
@@ -78312,6 +78582,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
78312
78582
|
"storage-location-ok"
|
|
78313
78583
|
]
|
|
78314
78584
|
},
|
|
78585
|
+
{
|
|
78586
|
+
id: "alerts",
|
|
78587
|
+
family: "system",
|
|
78588
|
+
label: "Alerts",
|
|
78589
|
+
kinds: [
|
|
78590
|
+
"alert-critical",
|
|
78591
|
+
"alert-error",
|
|
78592
|
+
"alert-critical-resolved"
|
|
78593
|
+
]
|
|
78594
|
+
},
|
|
78315
78595
|
{
|
|
78316
78596
|
id: "alarm",
|
|
78317
78597
|
family: "alarm",
|
|
@@ -78356,6 +78636,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
78356
78636
|
return [[descriptor.kind, field]];
|
|
78357
78637
|
})));
|
|
78358
78638
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
78639
|
+
object({
|
|
78640
|
+
phase: _enum(["raised", "resolved"]),
|
|
78641
|
+
episodeId: string().min(1),
|
|
78642
|
+
alertId: string().min(1),
|
|
78643
|
+
severity: AlertSeveritySchema,
|
|
78644
|
+
category: string(),
|
|
78645
|
+
title: string(),
|
|
78646
|
+
message: string(),
|
|
78647
|
+
sourceType: string().optional(),
|
|
78648
|
+
sourceId: string().optional(),
|
|
78649
|
+
nodeId: string().optional(),
|
|
78650
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
78651
|
+
actionUrl: string().optional(),
|
|
78652
|
+
at: number()
|
|
78653
|
+
});
|
|
78359
78654
|
var RULE_BODY_ONLY = ["body"];
|
|
78360
78655
|
var RULE_TEXT = ["title", "body"];
|
|
78361
78656
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -78365,6 +78660,11 @@ var TANK = [
|
|
|
78365
78660
|
"device-tank-full",
|
|
78366
78661
|
"device-tank-normal"
|
|
78367
78662
|
];
|
|
78663
|
+
var ALERT_EPISODE = [
|
|
78664
|
+
"alert-critical",
|
|
78665
|
+
"alert-error",
|
|
78666
|
+
"alert-critical-resolved"
|
|
78667
|
+
];
|
|
78368
78668
|
var UPDATES = [
|
|
78369
78669
|
"addon-update-available",
|
|
78370
78670
|
"server-update-available",
|
|
@@ -78557,14 +78857,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
78557
78857
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
78558
78858
|
([...RULE_TEXT], [...TANK]),
|
|
78559
78859
|
[...RULE_TEXT],
|
|
78560
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
78561
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
78562
|
-
[...RULE_TEXT],
|
|
78860
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
78861
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
78563
78862
|
[...RULE_TEXT],
|
|
78564
78863
|
[...RULE_TEXT],
|
|
78565
78864
|
[...RULE_TEXT],
|
|
78566
78865
|
[...RULE_TEXT],
|
|
78567
78866
|
[...RULE_TEXT],
|
|
78867
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78568
78868
|
[...RULE_TEXT],
|
|
78569
78869
|
[...RULE_TEXT],
|
|
78570
78870
|
[...RULE_TEXT],
|
|
@@ -78582,7 +78882,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
78582
78882
|
[...RULE_TEXT],
|
|
78583
78883
|
[...RULE_TEXT],
|
|
78584
78884
|
[...RULE_TEXT],
|
|
78585
|
-
[...RULE_TEXT],
|
|
78885
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78886
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78887
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78888
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78889
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
78586
78890
|
[...RULE_TEXT],
|
|
78587
78891
|
[...RULE_TEXT],
|
|
78588
78892
|
[...RULE_TEXT],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-wyze",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.141",
|
|
4
4
|
"description": "Wyze camera device-provider addon for CamStack — wraps the @apocaliss92/wyze-bridge-js P2P/DTLS client, feeding the stream-broker via the pull-rfc4571 lazy-publish path (a structural twin of addon-provider-reolink)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|