@camstack/addon-provider-reolink 1.2.188 → 1.2.190
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 +340 -36
- package/dist/addon.mjs +340 -36
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -36,7 +36,7 @@ let node_os = require("node:os");
|
|
|
36
36
|
node_os = require_chunk.__toESM(node_os, 1);
|
|
37
37
|
let node_fs = require("node:fs");
|
|
38
38
|
node_fs = require_chunk.__toESM(node_fs, 1);
|
|
39
|
-
//#region ../types/dist/event-category-
|
|
39
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
40
40
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
41
41
|
EventCategory["SystemBoot"] = "system.boot";
|
|
42
42
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -115,9 +115,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
115
115
|
/**
|
|
116
116
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
117
117
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
118
|
-
* alert centre turns it into one
|
|
118
|
+
* alert centre turns it into one critical alert.
|
|
119
119
|
*/
|
|
120
120
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
121
|
+
/**
|
|
122
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
123
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
124
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
125
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
126
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
127
|
+
* event may be dropped (D8, D11).
|
|
128
|
+
*/
|
|
129
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
121
130
|
EventCategory["AddonError"] = "addon.error";
|
|
122
131
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
123
132
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -5442,7 +5451,7 @@ var ZodIssueCode = {
|
|
|
5442
5451
|
var ZodFirstPartyTypeKind;
|
|
5443
5452
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5444
5453
|
//#endregion
|
|
5445
|
-
//#region ../types/dist/sleep-
|
|
5454
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
5446
5455
|
/**
|
|
5447
5456
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5448
5457
|
* window to float samples (D455).
|
|
@@ -13823,7 +13832,14 @@ var AlertSeveritySchema = _enum([
|
|
|
13823
13832
|
]);
|
|
13824
13833
|
var AlertActionSchema = object({
|
|
13825
13834
|
label: string(),
|
|
13826
|
-
href: string().optional()
|
|
13835
|
+
href: string().optional(),
|
|
13836
|
+
/**
|
|
13837
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
13838
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
13839
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
13840
|
+
* the SPA has no such route and would bounce to the home page.
|
|
13841
|
+
*/
|
|
13842
|
+
navigation: _enum(["app", "server"]).optional()
|
|
13827
13843
|
});
|
|
13828
13844
|
var AlertStatusSchema = _enum([
|
|
13829
13845
|
"active",
|
|
@@ -18317,7 +18333,11 @@ var deviceDiscoveryCapability = {
|
|
|
18317
18333
|
};
|
|
18318
18334
|
/**
|
|
18319
18335
|
* `device-adoption` — generic discovery + adoption surface,
|
|
18320
|
-
* system-scoped
|
|
18336
|
+
* system-scoped collection (one provider per integration addon), routed
|
|
18337
|
+
* by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
|
|
18338
|
+
* pin model as `connection-test`. The admin UI keeps using
|
|
18339
|
+
* `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
|
|
18340
|
+
* successor to `ha-discovery`:
|
|
18321
18341
|
* keyed by `integrationId` (the addon resolves integrationId → broker
|
|
18322
18342
|
* internally) rather than a connection-specific `brokerId`, and it
|
|
18323
18343
|
* REUSES the shared `DiscoveredChildDevice` candidate type from
|
|
@@ -42688,6 +42708,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42688
42708
|
"server-updated",
|
|
42689
42709
|
"export-completed",
|
|
42690
42710
|
"backup-completed",
|
|
42711
|
+
"alert-critical",
|
|
42712
|
+
"alert-error",
|
|
42713
|
+
"alert-critical-resolved",
|
|
42691
42714
|
"camera-online",
|
|
42692
42715
|
"camera-offline",
|
|
42693
42716
|
"camera-disabled",
|
|
@@ -51868,7 +51891,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
51868
51891
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
51869
51892
|
kind: "mutation",
|
|
51870
51893
|
auth: "admin"
|
|
51871
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
51894
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
51895
|
+
clear: boolean(),
|
|
51896
|
+
repointLocationId: string().optional()
|
|
51897
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
51872
51898
|
kind: "mutation",
|
|
51873
51899
|
auth: "admin"
|
|
51874
51900
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -56542,6 +56568,11 @@ onStatusChanged: { data: object({
|
|
|
56542
56568
|
*
|
|
56543
56569
|
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
56544
56570
|
* provider refreshes the slice on an interval and eagerly after commands.
|
|
56571
|
+
*
|
|
56572
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
56573
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
56574
|
+
* the link is down, or the description does not carry it) and is never
|
|
56575
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
56545
56576
|
*/
|
|
56546
56577
|
var DishwasherStateSchema = _enum([
|
|
56547
56578
|
"idle",
|
|
@@ -56551,35 +56582,155 @@ var DishwasherStateSchema = _enum([
|
|
|
56551
56582
|
"error",
|
|
56552
56583
|
"unavailable"
|
|
56553
56584
|
]);
|
|
56585
|
+
/**
|
|
56586
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
56587
|
+
* view for compact surfaces; this is what the appliance said.
|
|
56588
|
+
*/
|
|
56589
|
+
var DishwasherOperationStateSchema = _enum([
|
|
56590
|
+
"Inactive",
|
|
56591
|
+
"Ready",
|
|
56592
|
+
"DelayedStart",
|
|
56593
|
+
"Run",
|
|
56594
|
+
"Pause",
|
|
56595
|
+
"ActionRequired",
|
|
56596
|
+
"Finished",
|
|
56597
|
+
"Error",
|
|
56598
|
+
"Aborting"
|
|
56599
|
+
]);
|
|
56600
|
+
/**
|
|
56601
|
+
* Why fields may be `null`:
|
|
56602
|
+
* - `available` — the link is up and the description is loaded;
|
|
56603
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
56604
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
56605
|
+
* be loaded, so its values cannot be decoded.
|
|
56606
|
+
*/
|
|
56607
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
56608
|
+
"available",
|
|
56609
|
+
"offline",
|
|
56610
|
+
"description-missing"
|
|
56611
|
+
]);
|
|
56554
56612
|
var DishwasherConsumableLevelSchema = _enum([
|
|
56555
56613
|
"ok",
|
|
56556
56614
|
"low",
|
|
56557
56615
|
"empty"
|
|
56558
56616
|
]);
|
|
56559
56617
|
var DishwasherStatusSchema = object({
|
|
56618
|
+
availability: DishwasherAvailabilitySchema,
|
|
56619
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
56560
56620
|
state: DishwasherStateSchema,
|
|
56561
|
-
/**
|
|
56621
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
56622
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
56623
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
56562
56624
|
program: string().nullable(),
|
|
56563
|
-
/**
|
|
56625
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
56626
|
+
selectedProgram: string().nullable(),
|
|
56627
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
56564
56628
|
availablePrograms: array(string()),
|
|
56565
|
-
/**
|
|
56566
|
-
|
|
56629
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
56630
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
56631
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
56632
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
56567
56633
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
56568
56634
|
progressPercent: number().min(0).max(100).nullable(),
|
|
56569
|
-
/** True when the door is reported open. */
|
|
56570
|
-
doorOpen: boolean(),
|
|
56571
|
-
/** True when
|
|
56572
|
-
|
|
56573
|
-
/**
|
|
56574
|
-
|
|
56635
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
56636
|
+
doorOpen: boolean().nullable(),
|
|
56637
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
56638
|
+
doorLocked: boolean().nullable(),
|
|
56639
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
56640
|
+
remoteStartAllowed: boolean().nullable(),
|
|
56641
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
56642
|
+
remoteControlActive: boolean().nullable(),
|
|
56643
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
56644
|
+
localControlActive: boolean().nullable(),
|
|
56645
|
+
/** Main power / switched-on state; null when not known. */
|
|
56646
|
+
powerOn: boolean().nullable(),
|
|
56647
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
56648
|
+
powerState: string().nullable(),
|
|
56575
56649
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56576
56650
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56577
|
-
|
|
56578
|
-
|
|
56651
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56652
|
+
halfLoad: boolean().nullable(),
|
|
56653
|
+
hygienePlus: boolean().nullable(),
|
|
56654
|
+
/** Extra dry option when the appliance exposes it. */
|
|
56655
|
+
extraDry: boolean().nullable(),
|
|
56656
|
+
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
56657
|
+
intensiveZone: boolean().nullable(),
|
|
56658
|
+
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
56659
|
+
varioSpeedPlus: boolean().nullable(),
|
|
56660
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
56661
|
+
childLock: boolean().nullable(),
|
|
56662
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
56663
|
+
activeEvents: array(string()),
|
|
56664
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
56579
56665
|
errorCode: number().nullable(),
|
|
56666
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
56580
56667
|
errorLabel: string().nullable(),
|
|
56668
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
56581
56669
|
lastFetchedAt: number()
|
|
56582
56670
|
});
|
|
56671
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
56672
|
+
/** A value a program option or setting can take. */
|
|
56673
|
+
var DishwasherValueSchema = union([
|
|
56674
|
+
boolean(),
|
|
56675
|
+
string(),
|
|
56676
|
+
number()
|
|
56677
|
+
]);
|
|
56678
|
+
var DishwasherAccessSchema = _enum([
|
|
56679
|
+
"none",
|
|
56680
|
+
"read",
|
|
56681
|
+
"readWrite",
|
|
56682
|
+
"writeOnly",
|
|
56683
|
+
"readStatic"
|
|
56684
|
+
]);
|
|
56685
|
+
/**
|
|
56686
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
56687
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
56688
|
+
*/
|
|
56689
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
56690
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
56691
|
+
key: string(),
|
|
56692
|
+
/** Last segment of the key, for display. */
|
|
56693
|
+
name: string(),
|
|
56694
|
+
type: _enum([
|
|
56695
|
+
"boolean",
|
|
56696
|
+
"number",
|
|
56697
|
+
"enum",
|
|
56698
|
+
"string"
|
|
56699
|
+
]),
|
|
56700
|
+
access: DishwasherAccessSchema,
|
|
56701
|
+
/** The appliance reports this entity as currently available. */
|
|
56702
|
+
available: boolean(),
|
|
56703
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
56704
|
+
unit: string().nullable(),
|
|
56705
|
+
min: number().nullable(),
|
|
56706
|
+
max: number().nullable(),
|
|
56707
|
+
step: number().nullable(),
|
|
56708
|
+
/** Allowed members of an enum; null for other types. */
|
|
56709
|
+
enumValues: array(string()).nullable(),
|
|
56710
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
56711
|
+
});
|
|
56712
|
+
var DishwasherProgramSchema = object({
|
|
56713
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
56714
|
+
key: string(),
|
|
56715
|
+
name: string(),
|
|
56716
|
+
/** The appliance currently offers this program. */
|
|
56717
|
+
available: boolean(),
|
|
56718
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
56719
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
56720
|
+
});
|
|
56721
|
+
var DishwasherOptionsSchema = object({
|
|
56722
|
+
availability: DishwasherAvailabilitySchema,
|
|
56723
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
56724
|
+
supportsStart: boolean(),
|
|
56725
|
+
supportsPause: boolean(),
|
|
56726
|
+
supportsResume: boolean(),
|
|
56727
|
+
supportsStop: boolean(),
|
|
56728
|
+
supportsPower: boolean(),
|
|
56729
|
+
/** Every program the description lists, with its options. */
|
|
56730
|
+
programs: array(DishwasherProgramSchema),
|
|
56731
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
56732
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
56733
|
+
});
|
|
56583
56734
|
var dishwasherCapability = {
|
|
56584
56735
|
name: "dishwasher",
|
|
56585
56736
|
scope: "device",
|
|
@@ -56587,58 +56738,102 @@ var dishwasherCapability = {
|
|
|
56587
56738
|
mode: "singleton",
|
|
56588
56739
|
deviceTypes: [DeviceType.Dishwasher],
|
|
56589
56740
|
methods: {
|
|
56590
|
-
|
|
56741
|
+
/**
|
|
56742
|
+
* Start a program. Without `program` the selected one starts. `options` are
|
|
56743
|
+
* option feature keys; each is checked against the program's constraints.
|
|
56744
|
+
*/
|
|
56745
|
+
start: method(object({
|
|
56746
|
+
deviceId: DeviceIdSchema,
|
|
56747
|
+
program: string().min(1).optional(),
|
|
56748
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
56749
|
+
}), _void(), {
|
|
56591
56750
|
kind: "mutation",
|
|
56592
56751
|
auth: "protected"
|
|
56593
56752
|
}),
|
|
56594
|
-
pause: method(object({ deviceId:
|
|
56753
|
+
pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56595
56754
|
kind: "mutation",
|
|
56596
56755
|
auth: "protected"
|
|
56597
56756
|
}),
|
|
56598
|
-
|
|
56757
|
+
resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56599
56758
|
kind: "mutation",
|
|
56600
56759
|
auth: "protected"
|
|
56601
56760
|
}),
|
|
56761
|
+
stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56762
|
+
kind: "mutation",
|
|
56763
|
+
auth: "protected"
|
|
56764
|
+
}),
|
|
56765
|
+
/** Select (not start) a program; refused when the appliance does not offer it. */
|
|
56602
56766
|
setProgram: method(object({
|
|
56603
|
-
deviceId:
|
|
56767
|
+
deviceId: DeviceIdSchema,
|
|
56604
56768
|
program: string().min(1)
|
|
56605
56769
|
}), _void(), {
|
|
56606
56770
|
kind: "mutation",
|
|
56607
56771
|
auth: "protected"
|
|
56608
56772
|
}),
|
|
56609
56773
|
setPower: method(object({
|
|
56610
|
-
deviceId:
|
|
56774
|
+
deviceId: DeviceIdSchema,
|
|
56611
56775
|
on: boolean()
|
|
56612
56776
|
}), _void(), {
|
|
56613
56777
|
kind: "mutation",
|
|
56614
56778
|
auth: "protected"
|
|
56615
56779
|
}),
|
|
56616
56780
|
setHalfLoad: method(object({
|
|
56617
|
-
deviceId:
|
|
56781
|
+
deviceId: DeviceIdSchema,
|
|
56618
56782
|
on: boolean()
|
|
56619
56783
|
}), _void(), {
|
|
56620
56784
|
kind: "mutation",
|
|
56621
56785
|
auth: "protected"
|
|
56622
56786
|
}),
|
|
56623
56787
|
setHygienePlus: method(object({
|
|
56624
|
-
deviceId:
|
|
56788
|
+
deviceId: DeviceIdSchema,
|
|
56789
|
+
on: boolean()
|
|
56790
|
+
}), _void(), {
|
|
56791
|
+
kind: "mutation",
|
|
56792
|
+
auth: "protected"
|
|
56793
|
+
}),
|
|
56794
|
+
setExtraDry: method(object({
|
|
56795
|
+
deviceId: DeviceIdSchema,
|
|
56796
|
+
on: boolean()
|
|
56797
|
+
}), _void(), {
|
|
56798
|
+
kind: "mutation",
|
|
56799
|
+
auth: "protected"
|
|
56800
|
+
}),
|
|
56801
|
+
setIntensiveZone: method(object({
|
|
56802
|
+
deviceId: DeviceIdSchema,
|
|
56803
|
+
on: boolean()
|
|
56804
|
+
}), _void(), {
|
|
56805
|
+
kind: "mutation",
|
|
56806
|
+
auth: "protected"
|
|
56807
|
+
}),
|
|
56808
|
+
setVarioSpeedPlus: method(object({
|
|
56809
|
+
deviceId: DeviceIdSchema,
|
|
56810
|
+
on: boolean()
|
|
56811
|
+
}), _void(), {
|
|
56812
|
+
kind: "mutation",
|
|
56813
|
+
auth: "protected"
|
|
56814
|
+
}),
|
|
56815
|
+
setChildLock: method(object({
|
|
56816
|
+
deviceId: DeviceIdSchema,
|
|
56625
56817
|
on: boolean()
|
|
56626
56818
|
}), _void(), {
|
|
56627
56819
|
kind: "mutation",
|
|
56628
56820
|
auth: "protected"
|
|
56629
56821
|
}),
|
|
56822
|
+
/**
|
|
56823
|
+
* Write any option or setting by feature key. Refused when the description does
|
|
56824
|
+
* not list it, it is not writable or not available now, or the value is outside
|
|
56825
|
+
* its declared range / members.
|
|
56826
|
+
*/
|
|
56630
56827
|
setOption: method(object({
|
|
56631
|
-
deviceId:
|
|
56828
|
+
deviceId: DeviceIdSchema,
|
|
56632
56829
|
key: string().min(1),
|
|
56633
|
-
value:
|
|
56634
|
-
boolean(),
|
|
56635
|
-
string(),
|
|
56636
|
-
number()
|
|
56637
|
-
])
|
|
56830
|
+
value: DishwasherValueSchema
|
|
56638
56831
|
}), _void(), {
|
|
56639
56832
|
kind: "mutation",
|
|
56640
56833
|
auth: "protected"
|
|
56641
|
-
})
|
|
56834
|
+
}),
|
|
56835
|
+
/** What this appliance can do, from its own description — the UI is derived from it. */
|
|
56836
|
+
getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
|
|
56642
56837
|
},
|
|
56643
56838
|
status: {
|
|
56644
56839
|
schema: DishwasherStatusSchema,
|
|
@@ -71172,6 +71367,12 @@ Object.freeze({
|
|
|
71172
71367
|
addonId: null,
|
|
71173
71368
|
access: "view"
|
|
71174
71369
|
},
|
|
71370
|
+
"dishwasher.getOptions": {
|
|
71371
|
+
capName: "dishwasher",
|
|
71372
|
+
capScope: "device",
|
|
71373
|
+
addonId: null,
|
|
71374
|
+
access: "view"
|
|
71375
|
+
},
|
|
71175
71376
|
"dishwasher.getStatus": {
|
|
71176
71377
|
capName: "dishwasher",
|
|
71177
71378
|
capScope: "device",
|
|
@@ -71184,6 +71385,24 @@ Object.freeze({
|
|
|
71184
71385
|
addonId: null,
|
|
71185
71386
|
access: "create"
|
|
71186
71387
|
},
|
|
71388
|
+
"dishwasher.resume": {
|
|
71389
|
+
capName: "dishwasher",
|
|
71390
|
+
capScope: "device",
|
|
71391
|
+
addonId: null,
|
|
71392
|
+
access: "create"
|
|
71393
|
+
},
|
|
71394
|
+
"dishwasher.setChildLock": {
|
|
71395
|
+
capName: "dishwasher",
|
|
71396
|
+
capScope: "device",
|
|
71397
|
+
addonId: null,
|
|
71398
|
+
access: "create"
|
|
71399
|
+
},
|
|
71400
|
+
"dishwasher.setExtraDry": {
|
|
71401
|
+
capName: "dishwasher",
|
|
71402
|
+
capScope: "device",
|
|
71403
|
+
addonId: null,
|
|
71404
|
+
access: "create"
|
|
71405
|
+
},
|
|
71187
71406
|
"dishwasher.setHalfLoad": {
|
|
71188
71407
|
capName: "dishwasher",
|
|
71189
71408
|
capScope: "device",
|
|
@@ -71196,6 +71415,12 @@ Object.freeze({
|
|
|
71196
71415
|
addonId: null,
|
|
71197
71416
|
access: "create"
|
|
71198
71417
|
},
|
|
71418
|
+
"dishwasher.setIntensiveZone": {
|
|
71419
|
+
capName: "dishwasher",
|
|
71420
|
+
capScope: "device",
|
|
71421
|
+
addonId: null,
|
|
71422
|
+
access: "create"
|
|
71423
|
+
},
|
|
71199
71424
|
"dishwasher.setOption": {
|
|
71200
71425
|
capName: "dishwasher",
|
|
71201
71426
|
capScope: "device",
|
|
@@ -71214,6 +71439,12 @@ Object.freeze({
|
|
|
71214
71439
|
addonId: null,
|
|
71215
71440
|
access: "create"
|
|
71216
71441
|
},
|
|
71442
|
+
"dishwasher.setVarioSpeedPlus": {
|
|
71443
|
+
capName: "dishwasher",
|
|
71444
|
+
capScope: "device",
|
|
71445
|
+
addonId: null,
|
|
71446
|
+
access: "create"
|
|
71447
|
+
},
|
|
71217
71448
|
"dishwasher.start": {
|
|
71218
71449
|
capName: "dishwasher",
|
|
71219
71450
|
capScope: "device",
|
|
@@ -75660,6 +75891,12 @@ Object.freeze({
|
|
|
75660
75891
|
addonId: null,
|
|
75661
75892
|
access: "view"
|
|
75662
75893
|
},
|
|
75894
|
+
"storageMigration.moverClearance": {
|
|
75895
|
+
capName: "storage-migration",
|
|
75896
|
+
capScope: "system",
|
|
75897
|
+
addonId: null,
|
|
75898
|
+
access: "view"
|
|
75899
|
+
},
|
|
75663
75900
|
"storageMigration.movers": {
|
|
75664
75901
|
capName: "storage-migration",
|
|
75665
75902
|
capScope: "system",
|
|
@@ -78005,6 +78242,11 @@ Object.freeze({
|
|
|
78005
78242
|
form: "single",
|
|
78006
78243
|
optional: false
|
|
78007
78244
|
}],
|
|
78245
|
+
"dishwasher.getOptions": [{
|
|
78246
|
+
name: "deviceId",
|
|
78247
|
+
form: "single",
|
|
78248
|
+
optional: false
|
|
78249
|
+
}],
|
|
78008
78250
|
"dishwasher.getStatus": [{
|
|
78009
78251
|
name: "deviceId",
|
|
78010
78252
|
form: "single",
|
|
@@ -78015,6 +78257,21 @@ Object.freeze({
|
|
|
78015
78257
|
form: "single",
|
|
78016
78258
|
optional: false
|
|
78017
78259
|
}],
|
|
78260
|
+
"dishwasher.resume": [{
|
|
78261
|
+
name: "deviceId",
|
|
78262
|
+
form: "single",
|
|
78263
|
+
optional: false
|
|
78264
|
+
}],
|
|
78265
|
+
"dishwasher.setChildLock": [{
|
|
78266
|
+
name: "deviceId",
|
|
78267
|
+
form: "single",
|
|
78268
|
+
optional: false
|
|
78269
|
+
}],
|
|
78270
|
+
"dishwasher.setExtraDry": [{
|
|
78271
|
+
name: "deviceId",
|
|
78272
|
+
form: "single",
|
|
78273
|
+
optional: false
|
|
78274
|
+
}],
|
|
78018
78275
|
"dishwasher.setHalfLoad": [{
|
|
78019
78276
|
name: "deviceId",
|
|
78020
78277
|
form: "single",
|
|
@@ -78025,6 +78282,11 @@ Object.freeze({
|
|
|
78025
78282
|
form: "single",
|
|
78026
78283
|
optional: false
|
|
78027
78284
|
}],
|
|
78285
|
+
"dishwasher.setIntensiveZone": [{
|
|
78286
|
+
name: "deviceId",
|
|
78287
|
+
form: "single",
|
|
78288
|
+
optional: false
|
|
78289
|
+
}],
|
|
78028
78290
|
"dishwasher.setOption": [{
|
|
78029
78291
|
name: "deviceId",
|
|
78030
78292
|
form: "single",
|
|
@@ -78040,6 +78302,11 @@ Object.freeze({
|
|
|
78040
78302
|
form: "single",
|
|
78041
78303
|
optional: false
|
|
78042
78304
|
}],
|
|
78305
|
+
"dishwasher.setVarioSpeedPlus": [{
|
|
78306
|
+
name: "deviceId",
|
|
78307
|
+
form: "single",
|
|
78308
|
+
optional: false
|
|
78309
|
+
}],
|
|
78043
78310
|
"dishwasher.start": [{
|
|
78044
78311
|
name: "deviceId",
|
|
78045
78312
|
form: "single",
|
|
@@ -80081,6 +80348,9 @@ new Map(Object.entries({
|
|
|
80081
80348
|
"wrapper-update-available": "system",
|
|
80082
80349
|
"backup-completed": "system",
|
|
80083
80350
|
"export-completed": "system",
|
|
80351
|
+
"alert-critical": "system",
|
|
80352
|
+
"alert-error": "system",
|
|
80353
|
+
"alert-critical-resolved": "system",
|
|
80084
80354
|
"storage-location-low": "system",
|
|
80085
80355
|
"storage-location-critical": "system",
|
|
80086
80356
|
"storage-location-ok": "system",
|
|
@@ -80205,6 +80475,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
80205
80475
|
"storage-location-ok"
|
|
80206
80476
|
]
|
|
80207
80477
|
},
|
|
80478
|
+
{
|
|
80479
|
+
id: "alerts",
|
|
80480
|
+
family: "system",
|
|
80481
|
+
label: "Alerts",
|
|
80482
|
+
kinds: [
|
|
80483
|
+
"alert-critical",
|
|
80484
|
+
"alert-error",
|
|
80485
|
+
"alert-critical-resolved"
|
|
80486
|
+
]
|
|
80487
|
+
},
|
|
80208
80488
|
{
|
|
80209
80489
|
id: "alarm",
|
|
80210
80490
|
family: "alarm",
|
|
@@ -80249,6 +80529,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
80249
80529
|
return [[descriptor.kind, field]];
|
|
80250
80530
|
})));
|
|
80251
80531
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
80532
|
+
object({
|
|
80533
|
+
phase: _enum(["raised", "resolved"]),
|
|
80534
|
+
episodeId: string().min(1),
|
|
80535
|
+
alertId: string().min(1),
|
|
80536
|
+
severity: AlertSeveritySchema,
|
|
80537
|
+
category: string(),
|
|
80538
|
+
title: string(),
|
|
80539
|
+
message: string(),
|
|
80540
|
+
sourceType: string().optional(),
|
|
80541
|
+
sourceId: string().optional(),
|
|
80542
|
+
nodeId: string().optional(),
|
|
80543
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
80544
|
+
actionUrl: string().optional(),
|
|
80545
|
+
at: number()
|
|
80546
|
+
});
|
|
80252
80547
|
var RULE_BODY_ONLY = ["body"];
|
|
80253
80548
|
var RULE_TEXT = ["title", "body"];
|
|
80254
80549
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -80258,6 +80553,11 @@ var TANK = [
|
|
|
80258
80553
|
"device-tank-full",
|
|
80259
80554
|
"device-tank-normal"
|
|
80260
80555
|
];
|
|
80556
|
+
var ALERT_EPISODE = [
|
|
80557
|
+
"alert-critical",
|
|
80558
|
+
"alert-error",
|
|
80559
|
+
"alert-critical-resolved"
|
|
80560
|
+
];
|
|
80261
80561
|
var UPDATES = [
|
|
80262
80562
|
"addon-update-available",
|
|
80263
80563
|
"server-update-available",
|
|
@@ -80450,14 +80750,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
80450
80750
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
80451
80751
|
([...RULE_TEXT], [...TANK]),
|
|
80452
80752
|
[...RULE_TEXT],
|
|
80453
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
80454
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
80455
|
-
[...RULE_TEXT],
|
|
80753
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
80754
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
80456
80755
|
[...RULE_TEXT],
|
|
80457
80756
|
[...RULE_TEXT],
|
|
80458
80757
|
[...RULE_TEXT],
|
|
80459
80758
|
[...RULE_TEXT],
|
|
80460
80759
|
[...RULE_TEXT],
|
|
80760
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80461
80761
|
[...RULE_TEXT],
|
|
80462
80762
|
[...RULE_TEXT],
|
|
80463
80763
|
[...RULE_TEXT],
|
|
@@ -80475,7 +80775,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
80475
80775
|
[...RULE_TEXT],
|
|
80476
80776
|
[...RULE_TEXT],
|
|
80477
80777
|
[...RULE_TEXT],
|
|
80478
|
-
[...RULE_TEXT],
|
|
80778
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80779
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80780
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80781
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80782
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80479
80783
|
[...RULE_TEXT],
|
|
80480
80784
|
[...RULE_TEXT],
|
|
80481
80785
|
[...RULE_TEXT],
|
package/dist/addon.mjs
CHANGED
|
@@ -28,7 +28,7 @@ import { URL as URL$1 } from "url";
|
|
|
28
28
|
import { spawn as spawn$1 } from "node:child_process";
|
|
29
29
|
import os, { tmpdir } from "node:os";
|
|
30
30
|
import { createReadStream } from "node:fs";
|
|
31
|
-
//#region ../types/dist/event-category-
|
|
31
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
32
32
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
33
33
|
EventCategory["SystemBoot"] = "system.boot";
|
|
34
34
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -107,9 +107,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
107
107
|
/**
|
|
108
108
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
109
109
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
110
|
-
* alert centre turns it into one
|
|
110
|
+
* alert centre turns it into one critical alert.
|
|
111
111
|
*/
|
|
112
112
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
113
|
+
/**
|
|
114
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
115
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
116
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
117
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
118
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
119
|
+
* event may be dropped (D8, D11).
|
|
120
|
+
*/
|
|
121
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
113
122
|
EventCategory["AddonError"] = "addon.error";
|
|
114
123
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
115
124
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -5434,7 +5443,7 @@ var ZodIssueCode = {
|
|
|
5434
5443
|
var ZodFirstPartyTypeKind;
|
|
5435
5444
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5436
5445
|
//#endregion
|
|
5437
|
-
//#region ../types/dist/sleep-
|
|
5446
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
5438
5447
|
/**
|
|
5439
5448
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5440
5449
|
* window to float samples (D455).
|
|
@@ -13815,7 +13824,14 @@ var AlertSeveritySchema = _enum([
|
|
|
13815
13824
|
]);
|
|
13816
13825
|
var AlertActionSchema = object({
|
|
13817
13826
|
label: string(),
|
|
13818
|
-
href: string().optional()
|
|
13827
|
+
href: string().optional(),
|
|
13828
|
+
/**
|
|
13829
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
13830
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
13831
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
13832
|
+
* the SPA has no such route and would bounce to the home page.
|
|
13833
|
+
*/
|
|
13834
|
+
navigation: _enum(["app", "server"]).optional()
|
|
13819
13835
|
});
|
|
13820
13836
|
var AlertStatusSchema = _enum([
|
|
13821
13837
|
"active",
|
|
@@ -18309,7 +18325,11 @@ var deviceDiscoveryCapability = {
|
|
|
18309
18325
|
};
|
|
18310
18326
|
/**
|
|
18311
18327
|
* `device-adoption` — generic discovery + adoption surface,
|
|
18312
|
-
* system-scoped
|
|
18328
|
+
* system-scoped collection (one provider per integration addon), routed
|
|
18329
|
+
* by explicit `{ addonId }` on direct `deviceAdoption.*` calls — the same
|
|
18330
|
+
* pin model as `connection-test`. The admin UI keeps using
|
|
18331
|
+
* `deviceManager.adoption*` (which already threads `addonId`). The de-HA-ified
|
|
18332
|
+
* successor to `ha-discovery`:
|
|
18313
18333
|
* keyed by `integrationId` (the addon resolves integrationId → broker
|
|
18314
18334
|
* internally) rather than a connection-specific `brokerId`, and it
|
|
18315
18335
|
* REUSES the shared `DiscoveredChildDevice` candidate type from
|
|
@@ -42680,6 +42700,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42680
42700
|
"server-updated",
|
|
42681
42701
|
"export-completed",
|
|
42682
42702
|
"backup-completed",
|
|
42703
|
+
"alert-critical",
|
|
42704
|
+
"alert-error",
|
|
42705
|
+
"alert-critical-resolved",
|
|
42683
42706
|
"camera-online",
|
|
42684
42707
|
"camera-offline",
|
|
42685
42708
|
"camera-disabled",
|
|
@@ -51860,7 +51883,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
51860
51883
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
51861
51884
|
kind: "mutation",
|
|
51862
51885
|
auth: "admin"
|
|
51863
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
51886
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
51887
|
+
clear: boolean(),
|
|
51888
|
+
repointLocationId: string().optional()
|
|
51889
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
51864
51890
|
kind: "mutation",
|
|
51865
51891
|
auth: "admin"
|
|
51866
51892
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -56534,6 +56560,11 @@ onStatusChanged: { data: object({
|
|
|
56534
56560
|
*
|
|
56535
56561
|
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
56536
56562
|
* provider refreshes the slice on an interval and eagerly after commands.
|
|
56563
|
+
*
|
|
56564
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
56565
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
56566
|
+
* the link is down, or the description does not carry it) and is never
|
|
56567
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
56537
56568
|
*/
|
|
56538
56569
|
var DishwasherStateSchema = _enum([
|
|
56539
56570
|
"idle",
|
|
@@ -56543,35 +56574,155 @@ var DishwasherStateSchema = _enum([
|
|
|
56543
56574
|
"error",
|
|
56544
56575
|
"unavailable"
|
|
56545
56576
|
]);
|
|
56577
|
+
/**
|
|
56578
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
56579
|
+
* view for compact surfaces; this is what the appliance said.
|
|
56580
|
+
*/
|
|
56581
|
+
var DishwasherOperationStateSchema = _enum([
|
|
56582
|
+
"Inactive",
|
|
56583
|
+
"Ready",
|
|
56584
|
+
"DelayedStart",
|
|
56585
|
+
"Run",
|
|
56586
|
+
"Pause",
|
|
56587
|
+
"ActionRequired",
|
|
56588
|
+
"Finished",
|
|
56589
|
+
"Error",
|
|
56590
|
+
"Aborting"
|
|
56591
|
+
]);
|
|
56592
|
+
/**
|
|
56593
|
+
* Why fields may be `null`:
|
|
56594
|
+
* - `available` — the link is up and the description is loaded;
|
|
56595
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
56596
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
56597
|
+
* be loaded, so its values cannot be decoded.
|
|
56598
|
+
*/
|
|
56599
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
56600
|
+
"available",
|
|
56601
|
+
"offline",
|
|
56602
|
+
"description-missing"
|
|
56603
|
+
]);
|
|
56546
56604
|
var DishwasherConsumableLevelSchema = _enum([
|
|
56547
56605
|
"ok",
|
|
56548
56606
|
"low",
|
|
56549
56607
|
"empty"
|
|
56550
56608
|
]);
|
|
56551
56609
|
var DishwasherStatusSchema = object({
|
|
56610
|
+
availability: DishwasherAvailabilitySchema,
|
|
56611
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
56552
56612
|
state: DishwasherStateSchema,
|
|
56553
|
-
/**
|
|
56613
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
56614
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
56615
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
56554
56616
|
program: string().nullable(),
|
|
56555
|
-
/**
|
|
56617
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
56618
|
+
selectedProgram: string().nullable(),
|
|
56619
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
56556
56620
|
availablePrograms: array(string()),
|
|
56557
|
-
/**
|
|
56558
|
-
|
|
56621
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
56622
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
56623
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
56624
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
56559
56625
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
56560
56626
|
progressPercent: number().min(0).max(100).nullable(),
|
|
56561
|
-
/** True when the door is reported open. */
|
|
56562
|
-
doorOpen: boolean(),
|
|
56563
|
-
/** True when
|
|
56564
|
-
|
|
56565
|
-
/**
|
|
56566
|
-
|
|
56627
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
56628
|
+
doorOpen: boolean().nullable(),
|
|
56629
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
56630
|
+
doorLocked: boolean().nullable(),
|
|
56631
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
56632
|
+
remoteStartAllowed: boolean().nullable(),
|
|
56633
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
56634
|
+
remoteControlActive: boolean().nullable(),
|
|
56635
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
56636
|
+
localControlActive: boolean().nullable(),
|
|
56637
|
+
/** Main power / switched-on state; null when not known. */
|
|
56638
|
+
powerOn: boolean().nullable(),
|
|
56639
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
56640
|
+
powerState: string().nullable(),
|
|
56567
56641
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56568
56642
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56569
|
-
|
|
56570
|
-
|
|
56643
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56644
|
+
halfLoad: boolean().nullable(),
|
|
56645
|
+
hygienePlus: boolean().nullable(),
|
|
56646
|
+
/** Extra dry option when the appliance exposes it. */
|
|
56647
|
+
extraDry: boolean().nullable(),
|
|
56648
|
+
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
56649
|
+
intensiveZone: boolean().nullable(),
|
|
56650
|
+
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
56651
|
+
varioSpeedPlus: boolean().nullable(),
|
|
56652
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
56653
|
+
childLock: boolean().nullable(),
|
|
56654
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
56655
|
+
activeEvents: array(string()),
|
|
56656
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
56571
56657
|
errorCode: number().nullable(),
|
|
56658
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
56572
56659
|
errorLabel: string().nullable(),
|
|
56660
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
56573
56661
|
lastFetchedAt: number()
|
|
56574
56662
|
});
|
|
56663
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
56664
|
+
/** A value a program option or setting can take. */
|
|
56665
|
+
var DishwasherValueSchema = union([
|
|
56666
|
+
boolean(),
|
|
56667
|
+
string(),
|
|
56668
|
+
number()
|
|
56669
|
+
]);
|
|
56670
|
+
var DishwasherAccessSchema = _enum([
|
|
56671
|
+
"none",
|
|
56672
|
+
"read",
|
|
56673
|
+
"readWrite",
|
|
56674
|
+
"writeOnly",
|
|
56675
|
+
"readStatic"
|
|
56676
|
+
]);
|
|
56677
|
+
/**
|
|
56678
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
56679
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
56680
|
+
*/
|
|
56681
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
56682
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
56683
|
+
key: string(),
|
|
56684
|
+
/** Last segment of the key, for display. */
|
|
56685
|
+
name: string(),
|
|
56686
|
+
type: _enum([
|
|
56687
|
+
"boolean",
|
|
56688
|
+
"number",
|
|
56689
|
+
"enum",
|
|
56690
|
+
"string"
|
|
56691
|
+
]),
|
|
56692
|
+
access: DishwasherAccessSchema,
|
|
56693
|
+
/** The appliance reports this entity as currently available. */
|
|
56694
|
+
available: boolean(),
|
|
56695
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
56696
|
+
unit: string().nullable(),
|
|
56697
|
+
min: number().nullable(),
|
|
56698
|
+
max: number().nullable(),
|
|
56699
|
+
step: number().nullable(),
|
|
56700
|
+
/** Allowed members of an enum; null for other types. */
|
|
56701
|
+
enumValues: array(string()).nullable(),
|
|
56702
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
56703
|
+
});
|
|
56704
|
+
var DishwasherProgramSchema = object({
|
|
56705
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
56706
|
+
key: string(),
|
|
56707
|
+
name: string(),
|
|
56708
|
+
/** The appliance currently offers this program. */
|
|
56709
|
+
available: boolean(),
|
|
56710
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
56711
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
56712
|
+
});
|
|
56713
|
+
var DishwasherOptionsSchema = object({
|
|
56714
|
+
availability: DishwasherAvailabilitySchema,
|
|
56715
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
56716
|
+
supportsStart: boolean(),
|
|
56717
|
+
supportsPause: boolean(),
|
|
56718
|
+
supportsResume: boolean(),
|
|
56719
|
+
supportsStop: boolean(),
|
|
56720
|
+
supportsPower: boolean(),
|
|
56721
|
+
/** Every program the description lists, with its options. */
|
|
56722
|
+
programs: array(DishwasherProgramSchema),
|
|
56723
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
56724
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
56725
|
+
});
|
|
56575
56726
|
var dishwasherCapability = {
|
|
56576
56727
|
name: "dishwasher",
|
|
56577
56728
|
scope: "device",
|
|
@@ -56579,58 +56730,102 @@ var dishwasherCapability = {
|
|
|
56579
56730
|
mode: "singleton",
|
|
56580
56731
|
deviceTypes: [DeviceType.Dishwasher],
|
|
56581
56732
|
methods: {
|
|
56582
|
-
|
|
56733
|
+
/**
|
|
56734
|
+
* Start a program. Without `program` the selected one starts. `options` are
|
|
56735
|
+
* option feature keys; each is checked against the program's constraints.
|
|
56736
|
+
*/
|
|
56737
|
+
start: method(object({
|
|
56738
|
+
deviceId: DeviceIdSchema,
|
|
56739
|
+
program: string().min(1).optional(),
|
|
56740
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
56741
|
+
}), _void(), {
|
|
56583
56742
|
kind: "mutation",
|
|
56584
56743
|
auth: "protected"
|
|
56585
56744
|
}),
|
|
56586
|
-
pause: method(object({ deviceId:
|
|
56745
|
+
pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56587
56746
|
kind: "mutation",
|
|
56588
56747
|
auth: "protected"
|
|
56589
56748
|
}),
|
|
56590
|
-
|
|
56749
|
+
resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56591
56750
|
kind: "mutation",
|
|
56592
56751
|
auth: "protected"
|
|
56593
56752
|
}),
|
|
56753
|
+
stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56754
|
+
kind: "mutation",
|
|
56755
|
+
auth: "protected"
|
|
56756
|
+
}),
|
|
56757
|
+
/** Select (not start) a program; refused when the appliance does not offer it. */
|
|
56594
56758
|
setProgram: method(object({
|
|
56595
|
-
deviceId:
|
|
56759
|
+
deviceId: DeviceIdSchema,
|
|
56596
56760
|
program: string().min(1)
|
|
56597
56761
|
}), _void(), {
|
|
56598
56762
|
kind: "mutation",
|
|
56599
56763
|
auth: "protected"
|
|
56600
56764
|
}),
|
|
56601
56765
|
setPower: method(object({
|
|
56602
|
-
deviceId:
|
|
56766
|
+
deviceId: DeviceIdSchema,
|
|
56603
56767
|
on: boolean()
|
|
56604
56768
|
}), _void(), {
|
|
56605
56769
|
kind: "mutation",
|
|
56606
56770
|
auth: "protected"
|
|
56607
56771
|
}),
|
|
56608
56772
|
setHalfLoad: method(object({
|
|
56609
|
-
deviceId:
|
|
56773
|
+
deviceId: DeviceIdSchema,
|
|
56610
56774
|
on: boolean()
|
|
56611
56775
|
}), _void(), {
|
|
56612
56776
|
kind: "mutation",
|
|
56613
56777
|
auth: "protected"
|
|
56614
56778
|
}),
|
|
56615
56779
|
setHygienePlus: method(object({
|
|
56616
|
-
deviceId:
|
|
56780
|
+
deviceId: DeviceIdSchema,
|
|
56781
|
+
on: boolean()
|
|
56782
|
+
}), _void(), {
|
|
56783
|
+
kind: "mutation",
|
|
56784
|
+
auth: "protected"
|
|
56785
|
+
}),
|
|
56786
|
+
setExtraDry: method(object({
|
|
56787
|
+
deviceId: DeviceIdSchema,
|
|
56788
|
+
on: boolean()
|
|
56789
|
+
}), _void(), {
|
|
56790
|
+
kind: "mutation",
|
|
56791
|
+
auth: "protected"
|
|
56792
|
+
}),
|
|
56793
|
+
setIntensiveZone: method(object({
|
|
56794
|
+
deviceId: DeviceIdSchema,
|
|
56795
|
+
on: boolean()
|
|
56796
|
+
}), _void(), {
|
|
56797
|
+
kind: "mutation",
|
|
56798
|
+
auth: "protected"
|
|
56799
|
+
}),
|
|
56800
|
+
setVarioSpeedPlus: method(object({
|
|
56801
|
+
deviceId: DeviceIdSchema,
|
|
56802
|
+
on: boolean()
|
|
56803
|
+
}), _void(), {
|
|
56804
|
+
kind: "mutation",
|
|
56805
|
+
auth: "protected"
|
|
56806
|
+
}),
|
|
56807
|
+
setChildLock: method(object({
|
|
56808
|
+
deviceId: DeviceIdSchema,
|
|
56617
56809
|
on: boolean()
|
|
56618
56810
|
}), _void(), {
|
|
56619
56811
|
kind: "mutation",
|
|
56620
56812
|
auth: "protected"
|
|
56621
56813
|
}),
|
|
56814
|
+
/**
|
|
56815
|
+
* Write any option or setting by feature key. Refused when the description does
|
|
56816
|
+
* not list it, it is not writable or not available now, or the value is outside
|
|
56817
|
+
* its declared range / members.
|
|
56818
|
+
*/
|
|
56622
56819
|
setOption: method(object({
|
|
56623
|
-
deviceId:
|
|
56820
|
+
deviceId: DeviceIdSchema,
|
|
56624
56821
|
key: string().min(1),
|
|
56625
|
-
value:
|
|
56626
|
-
boolean(),
|
|
56627
|
-
string(),
|
|
56628
|
-
number()
|
|
56629
|
-
])
|
|
56822
|
+
value: DishwasherValueSchema
|
|
56630
56823
|
}), _void(), {
|
|
56631
56824
|
kind: "mutation",
|
|
56632
56825
|
auth: "protected"
|
|
56633
|
-
})
|
|
56826
|
+
}),
|
|
56827
|
+
/** What this appliance can do, from its own description — the UI is derived from it. */
|
|
56828
|
+
getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
|
|
56634
56829
|
},
|
|
56635
56830
|
status: {
|
|
56636
56831
|
schema: DishwasherStatusSchema,
|
|
@@ -71164,6 +71359,12 @@ Object.freeze({
|
|
|
71164
71359
|
addonId: null,
|
|
71165
71360
|
access: "view"
|
|
71166
71361
|
},
|
|
71362
|
+
"dishwasher.getOptions": {
|
|
71363
|
+
capName: "dishwasher",
|
|
71364
|
+
capScope: "device",
|
|
71365
|
+
addonId: null,
|
|
71366
|
+
access: "view"
|
|
71367
|
+
},
|
|
71167
71368
|
"dishwasher.getStatus": {
|
|
71168
71369
|
capName: "dishwasher",
|
|
71169
71370
|
capScope: "device",
|
|
@@ -71176,6 +71377,24 @@ Object.freeze({
|
|
|
71176
71377
|
addonId: null,
|
|
71177
71378
|
access: "create"
|
|
71178
71379
|
},
|
|
71380
|
+
"dishwasher.resume": {
|
|
71381
|
+
capName: "dishwasher",
|
|
71382
|
+
capScope: "device",
|
|
71383
|
+
addonId: null,
|
|
71384
|
+
access: "create"
|
|
71385
|
+
},
|
|
71386
|
+
"dishwasher.setChildLock": {
|
|
71387
|
+
capName: "dishwasher",
|
|
71388
|
+
capScope: "device",
|
|
71389
|
+
addonId: null,
|
|
71390
|
+
access: "create"
|
|
71391
|
+
},
|
|
71392
|
+
"dishwasher.setExtraDry": {
|
|
71393
|
+
capName: "dishwasher",
|
|
71394
|
+
capScope: "device",
|
|
71395
|
+
addonId: null,
|
|
71396
|
+
access: "create"
|
|
71397
|
+
},
|
|
71179
71398
|
"dishwasher.setHalfLoad": {
|
|
71180
71399
|
capName: "dishwasher",
|
|
71181
71400
|
capScope: "device",
|
|
@@ -71188,6 +71407,12 @@ Object.freeze({
|
|
|
71188
71407
|
addonId: null,
|
|
71189
71408
|
access: "create"
|
|
71190
71409
|
},
|
|
71410
|
+
"dishwasher.setIntensiveZone": {
|
|
71411
|
+
capName: "dishwasher",
|
|
71412
|
+
capScope: "device",
|
|
71413
|
+
addonId: null,
|
|
71414
|
+
access: "create"
|
|
71415
|
+
},
|
|
71191
71416
|
"dishwasher.setOption": {
|
|
71192
71417
|
capName: "dishwasher",
|
|
71193
71418
|
capScope: "device",
|
|
@@ -71206,6 +71431,12 @@ Object.freeze({
|
|
|
71206
71431
|
addonId: null,
|
|
71207
71432
|
access: "create"
|
|
71208
71433
|
},
|
|
71434
|
+
"dishwasher.setVarioSpeedPlus": {
|
|
71435
|
+
capName: "dishwasher",
|
|
71436
|
+
capScope: "device",
|
|
71437
|
+
addonId: null,
|
|
71438
|
+
access: "create"
|
|
71439
|
+
},
|
|
71209
71440
|
"dishwasher.start": {
|
|
71210
71441
|
capName: "dishwasher",
|
|
71211
71442
|
capScope: "device",
|
|
@@ -75652,6 +75883,12 @@ Object.freeze({
|
|
|
75652
75883
|
addonId: null,
|
|
75653
75884
|
access: "view"
|
|
75654
75885
|
},
|
|
75886
|
+
"storageMigration.moverClearance": {
|
|
75887
|
+
capName: "storage-migration",
|
|
75888
|
+
capScope: "system",
|
|
75889
|
+
addonId: null,
|
|
75890
|
+
access: "view"
|
|
75891
|
+
},
|
|
75655
75892
|
"storageMigration.movers": {
|
|
75656
75893
|
capName: "storage-migration",
|
|
75657
75894
|
capScope: "system",
|
|
@@ -77997,6 +78234,11 @@ Object.freeze({
|
|
|
77997
78234
|
form: "single",
|
|
77998
78235
|
optional: false
|
|
77999
78236
|
}],
|
|
78237
|
+
"dishwasher.getOptions": [{
|
|
78238
|
+
name: "deviceId",
|
|
78239
|
+
form: "single",
|
|
78240
|
+
optional: false
|
|
78241
|
+
}],
|
|
78000
78242
|
"dishwasher.getStatus": [{
|
|
78001
78243
|
name: "deviceId",
|
|
78002
78244
|
form: "single",
|
|
@@ -78007,6 +78249,21 @@ Object.freeze({
|
|
|
78007
78249
|
form: "single",
|
|
78008
78250
|
optional: false
|
|
78009
78251
|
}],
|
|
78252
|
+
"dishwasher.resume": [{
|
|
78253
|
+
name: "deviceId",
|
|
78254
|
+
form: "single",
|
|
78255
|
+
optional: false
|
|
78256
|
+
}],
|
|
78257
|
+
"dishwasher.setChildLock": [{
|
|
78258
|
+
name: "deviceId",
|
|
78259
|
+
form: "single",
|
|
78260
|
+
optional: false
|
|
78261
|
+
}],
|
|
78262
|
+
"dishwasher.setExtraDry": [{
|
|
78263
|
+
name: "deviceId",
|
|
78264
|
+
form: "single",
|
|
78265
|
+
optional: false
|
|
78266
|
+
}],
|
|
78010
78267
|
"dishwasher.setHalfLoad": [{
|
|
78011
78268
|
name: "deviceId",
|
|
78012
78269
|
form: "single",
|
|
@@ -78017,6 +78274,11 @@ Object.freeze({
|
|
|
78017
78274
|
form: "single",
|
|
78018
78275
|
optional: false
|
|
78019
78276
|
}],
|
|
78277
|
+
"dishwasher.setIntensiveZone": [{
|
|
78278
|
+
name: "deviceId",
|
|
78279
|
+
form: "single",
|
|
78280
|
+
optional: false
|
|
78281
|
+
}],
|
|
78020
78282
|
"dishwasher.setOption": [{
|
|
78021
78283
|
name: "deviceId",
|
|
78022
78284
|
form: "single",
|
|
@@ -78032,6 +78294,11 @@ Object.freeze({
|
|
|
78032
78294
|
form: "single",
|
|
78033
78295
|
optional: false
|
|
78034
78296
|
}],
|
|
78297
|
+
"dishwasher.setVarioSpeedPlus": [{
|
|
78298
|
+
name: "deviceId",
|
|
78299
|
+
form: "single",
|
|
78300
|
+
optional: false
|
|
78301
|
+
}],
|
|
78035
78302
|
"dishwasher.start": [{
|
|
78036
78303
|
name: "deviceId",
|
|
78037
78304
|
form: "single",
|
|
@@ -80073,6 +80340,9 @@ new Map(Object.entries({
|
|
|
80073
80340
|
"wrapper-update-available": "system",
|
|
80074
80341
|
"backup-completed": "system",
|
|
80075
80342
|
"export-completed": "system",
|
|
80343
|
+
"alert-critical": "system",
|
|
80344
|
+
"alert-error": "system",
|
|
80345
|
+
"alert-critical-resolved": "system",
|
|
80076
80346
|
"storage-location-low": "system",
|
|
80077
80347
|
"storage-location-critical": "system",
|
|
80078
80348
|
"storage-location-ok": "system",
|
|
@@ -80197,6 +80467,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
80197
80467
|
"storage-location-ok"
|
|
80198
80468
|
]
|
|
80199
80469
|
},
|
|
80470
|
+
{
|
|
80471
|
+
id: "alerts",
|
|
80472
|
+
family: "system",
|
|
80473
|
+
label: "Alerts",
|
|
80474
|
+
kinds: [
|
|
80475
|
+
"alert-critical",
|
|
80476
|
+
"alert-error",
|
|
80477
|
+
"alert-critical-resolved"
|
|
80478
|
+
]
|
|
80479
|
+
},
|
|
80200
80480
|
{
|
|
80201
80481
|
id: "alarm",
|
|
80202
80482
|
family: "alarm",
|
|
@@ -80241,6 +80521,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
80241
80521
|
return [[descriptor.kind, field]];
|
|
80242
80522
|
})));
|
|
80243
80523
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
80524
|
+
object({
|
|
80525
|
+
phase: _enum(["raised", "resolved"]),
|
|
80526
|
+
episodeId: string().min(1),
|
|
80527
|
+
alertId: string().min(1),
|
|
80528
|
+
severity: AlertSeveritySchema,
|
|
80529
|
+
category: string(),
|
|
80530
|
+
title: string(),
|
|
80531
|
+
message: string(),
|
|
80532
|
+
sourceType: string().optional(),
|
|
80533
|
+
sourceId: string().optional(),
|
|
80534
|
+
nodeId: string().optional(),
|
|
80535
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
80536
|
+
actionUrl: string().optional(),
|
|
80537
|
+
at: number()
|
|
80538
|
+
});
|
|
80244
80539
|
var RULE_BODY_ONLY = ["body"];
|
|
80245
80540
|
var RULE_TEXT = ["title", "body"];
|
|
80246
80541
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -80250,6 +80545,11 @@ var TANK = [
|
|
|
80250
80545
|
"device-tank-full",
|
|
80251
80546
|
"device-tank-normal"
|
|
80252
80547
|
];
|
|
80548
|
+
var ALERT_EPISODE = [
|
|
80549
|
+
"alert-critical",
|
|
80550
|
+
"alert-error",
|
|
80551
|
+
"alert-critical-resolved"
|
|
80552
|
+
];
|
|
80253
80553
|
var UPDATES = [
|
|
80254
80554
|
"addon-update-available",
|
|
80255
80555
|
"server-update-available",
|
|
@@ -80442,14 +80742,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
80442
80742
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
80443
80743
|
([...RULE_TEXT], [...TANK]),
|
|
80444
80744
|
[...RULE_TEXT],
|
|
80445
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
80446
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
80447
|
-
[...RULE_TEXT],
|
|
80745
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
80746
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
80448
80747
|
[...RULE_TEXT],
|
|
80449
80748
|
[...RULE_TEXT],
|
|
80450
80749
|
[...RULE_TEXT],
|
|
80451
80750
|
[...RULE_TEXT],
|
|
80452
80751
|
[...RULE_TEXT],
|
|
80752
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80453
80753
|
[...RULE_TEXT],
|
|
80454
80754
|
[...RULE_TEXT],
|
|
80455
80755
|
[...RULE_TEXT],
|
|
@@ -80467,7 +80767,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
80467
80767
|
[...RULE_TEXT],
|
|
80468
80768
|
[...RULE_TEXT],
|
|
80469
80769
|
[...RULE_TEXT],
|
|
80470
|
-
[...RULE_TEXT],
|
|
80770
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80771
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80772
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80773
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80774
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80471
80775
|
[...RULE_TEXT],
|
|
80472
80776
|
[...RULE_TEXT],
|
|
80473
80777
|
[...RULE_TEXT],
|