@camstack/addon-provider-tuya 0.2.127 → 0.2.128
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +264 -44
- package/dist/addon.mjs +264 -44
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -819,7 +819,7 @@ async function discoverDevices(options = {}, binder = createDgramBinder()) {
|
|
|
819
819
|
return [...byId.values()];
|
|
820
820
|
}
|
|
821
821
|
//#endregion
|
|
822
|
-
//#region ../types/dist/event-category-
|
|
822
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
823
823
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
824
824
|
EventCategory["SystemBoot"] = "system.boot";
|
|
825
825
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -898,9 +898,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
898
898
|
/**
|
|
899
899
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
900
900
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
901
|
-
* alert centre turns it into one
|
|
901
|
+
* alert centre turns it into one critical alert.
|
|
902
902
|
*/
|
|
903
903
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
904
|
+
/**
|
|
905
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
906
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
907
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
908
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
909
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
910
|
+
* event may be dropped (D8, D11).
|
|
911
|
+
*/
|
|
912
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
904
913
|
EventCategory["AddonError"] = "addon.error";
|
|
905
914
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
906
915
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -6225,7 +6234,7 @@ var ZodIssueCode = {
|
|
|
6225
6234
|
var ZodFirstPartyTypeKind;
|
|
6226
6235
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
6227
6236
|
//#endregion
|
|
6228
|
-
//#region ../types/dist/sleep-
|
|
6237
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
6229
6238
|
/**
|
|
6230
6239
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
6231
6240
|
* window to float samples (D455).
|
|
@@ -13988,7 +13997,14 @@ var AlertSeveritySchema = _enum([
|
|
|
13988
13997
|
]);
|
|
13989
13998
|
var AlertActionSchema = object({
|
|
13990
13999
|
label: string(),
|
|
13991
|
-
href: string().optional()
|
|
14000
|
+
href: string().optional(),
|
|
14001
|
+
/**
|
|
14002
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
14003
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
14004
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
14005
|
+
* the SPA has no such route and would bounce to the home page.
|
|
14006
|
+
*/
|
|
14007
|
+
navigation: _enum(["app", "server"]).optional()
|
|
13992
14008
|
});
|
|
13993
14009
|
var AlertStatusSchema = _enum([
|
|
13994
14010
|
"active",
|
|
@@ -42721,6 +42737,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42721
42737
|
"server-updated",
|
|
42722
42738
|
"export-completed",
|
|
42723
42739
|
"backup-completed",
|
|
42740
|
+
"alert-critical",
|
|
42741
|
+
"alert-error",
|
|
42742
|
+
"alert-critical-resolved",
|
|
42724
42743
|
"camera-online",
|
|
42725
42744
|
"camera-offline",
|
|
42726
42745
|
"camera-disabled",
|
|
@@ -51797,7 +51816,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
51797
51816
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
51798
51817
|
kind: "mutation",
|
|
51799
51818
|
auth: "admin"
|
|
51800
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
51819
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
51820
|
+
clear: boolean(),
|
|
51821
|
+
repointLocationId: string().optional()
|
|
51822
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
51801
51823
|
kind: "mutation",
|
|
51802
51824
|
auth: "admin"
|
|
51803
51825
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -56061,6 +56083,11 @@ onStatusChanged: { data: object({
|
|
|
56061
56083
|
*
|
|
56062
56084
|
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
56063
56085
|
* provider refreshes the slice on an interval and eagerly after commands.
|
|
56086
|
+
*
|
|
56087
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
56088
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
56089
|
+
* the link is down, or the description does not carry it) and is never
|
|
56090
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
56064
56091
|
*/
|
|
56065
56092
|
var DishwasherStateSchema = _enum([
|
|
56066
56093
|
"idle",
|
|
@@ -56070,43 +56097,155 @@ var DishwasherStateSchema = _enum([
|
|
|
56070
56097
|
"error",
|
|
56071
56098
|
"unavailable"
|
|
56072
56099
|
]);
|
|
56100
|
+
/**
|
|
56101
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
56102
|
+
* view for compact surfaces; this is what the appliance said.
|
|
56103
|
+
*/
|
|
56104
|
+
var DishwasherOperationStateSchema = _enum([
|
|
56105
|
+
"Inactive",
|
|
56106
|
+
"Ready",
|
|
56107
|
+
"DelayedStart",
|
|
56108
|
+
"Run",
|
|
56109
|
+
"Pause",
|
|
56110
|
+
"ActionRequired",
|
|
56111
|
+
"Finished",
|
|
56112
|
+
"Error",
|
|
56113
|
+
"Aborting"
|
|
56114
|
+
]);
|
|
56115
|
+
/**
|
|
56116
|
+
* Why fields may be `null`:
|
|
56117
|
+
* - `available` — the link is up and the description is loaded;
|
|
56118
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
56119
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
56120
|
+
* be loaded, so its values cannot be decoded.
|
|
56121
|
+
*/
|
|
56122
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
56123
|
+
"available",
|
|
56124
|
+
"offline",
|
|
56125
|
+
"description-missing"
|
|
56126
|
+
]);
|
|
56073
56127
|
var DishwasherConsumableLevelSchema = _enum([
|
|
56074
56128
|
"ok",
|
|
56075
56129
|
"low",
|
|
56076
56130
|
"empty"
|
|
56077
56131
|
]);
|
|
56078
56132
|
var DishwasherStatusSchema = object({
|
|
56133
|
+
availability: DishwasherAvailabilitySchema,
|
|
56134
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
56079
56135
|
state: DishwasherStateSchema,
|
|
56080
|
-
/**
|
|
56136
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
56137
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
56138
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
56081
56139
|
program: string().nullable(),
|
|
56082
|
-
/**
|
|
56140
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
56141
|
+
selectedProgram: string().nullable(),
|
|
56142
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
56083
56143
|
availablePrograms: array(string()),
|
|
56084
|
-
/**
|
|
56085
|
-
|
|
56144
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
56145
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
56146
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
56147
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
56086
56148
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
56087
56149
|
progressPercent: number().min(0).max(100).nullable(),
|
|
56088
|
-
/** True when the door is reported open. */
|
|
56089
|
-
doorOpen: boolean(),
|
|
56090
|
-
/** True when
|
|
56091
|
-
|
|
56092
|
-
/**
|
|
56093
|
-
|
|
56150
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
56151
|
+
doorOpen: boolean().nullable(),
|
|
56152
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
56153
|
+
doorLocked: boolean().nullable(),
|
|
56154
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
56155
|
+
remoteStartAllowed: boolean().nullable(),
|
|
56156
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
56157
|
+
remoteControlActive: boolean().nullable(),
|
|
56158
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
56159
|
+
localControlActive: boolean().nullable(),
|
|
56160
|
+
/** Main power / switched-on state; null when not known. */
|
|
56161
|
+
powerOn: boolean().nullable(),
|
|
56162
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
56163
|
+
powerState: string().nullable(),
|
|
56094
56164
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56095
56165
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56096
|
-
|
|
56097
|
-
|
|
56166
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56167
|
+
halfLoad: boolean().nullable(),
|
|
56168
|
+
hygienePlus: boolean().nullable(),
|
|
56098
56169
|
/** Extra dry option when the appliance exposes it. */
|
|
56099
|
-
extraDry: boolean(),
|
|
56170
|
+
extraDry: boolean().nullable(),
|
|
56100
56171
|
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
56101
|
-
intensiveZone: boolean(),
|
|
56172
|
+
intensiveZone: boolean().nullable(),
|
|
56102
56173
|
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
56103
|
-
varioSpeedPlus: boolean(),
|
|
56104
|
-
/** Child lock (controls disabled on the appliance). */
|
|
56105
|
-
childLock: boolean(),
|
|
56174
|
+
varioSpeedPlus: boolean().nullable(),
|
|
56175
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
56176
|
+
childLock: boolean().nullable(),
|
|
56177
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
56178
|
+
activeEvents: array(string()),
|
|
56179
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
56106
56180
|
errorCode: number().nullable(),
|
|
56181
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
56107
56182
|
errorLabel: string().nullable(),
|
|
56183
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
56108
56184
|
lastFetchedAt: number()
|
|
56109
56185
|
});
|
|
56186
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
56187
|
+
/** A value a program option or setting can take. */
|
|
56188
|
+
var DishwasherValueSchema = union([
|
|
56189
|
+
boolean(),
|
|
56190
|
+
string(),
|
|
56191
|
+
number()
|
|
56192
|
+
]);
|
|
56193
|
+
var DishwasherAccessSchema = _enum([
|
|
56194
|
+
"none",
|
|
56195
|
+
"read",
|
|
56196
|
+
"readWrite",
|
|
56197
|
+
"writeOnly",
|
|
56198
|
+
"readStatic"
|
|
56199
|
+
]);
|
|
56200
|
+
/**
|
|
56201
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
56202
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
56203
|
+
*/
|
|
56204
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
56205
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
56206
|
+
key: string(),
|
|
56207
|
+
/** Last segment of the key, for display. */
|
|
56208
|
+
name: string(),
|
|
56209
|
+
type: _enum([
|
|
56210
|
+
"boolean",
|
|
56211
|
+
"number",
|
|
56212
|
+
"enum",
|
|
56213
|
+
"string"
|
|
56214
|
+
]),
|
|
56215
|
+
access: DishwasherAccessSchema,
|
|
56216
|
+
/** The appliance reports this entity as currently available. */
|
|
56217
|
+
available: boolean(),
|
|
56218
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
56219
|
+
unit: string().nullable(),
|
|
56220
|
+
min: number().nullable(),
|
|
56221
|
+
max: number().nullable(),
|
|
56222
|
+
step: number().nullable(),
|
|
56223
|
+
/** Allowed members of an enum; null for other types. */
|
|
56224
|
+
enumValues: array(string()).nullable(),
|
|
56225
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
56226
|
+
});
|
|
56227
|
+
var DishwasherProgramSchema = object({
|
|
56228
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
56229
|
+
key: string(),
|
|
56230
|
+
name: string(),
|
|
56231
|
+
/** The appliance currently offers this program. */
|
|
56232
|
+
available: boolean(),
|
|
56233
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
56234
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
56235
|
+
});
|
|
56236
|
+
var DishwasherOptionsSchema = object({
|
|
56237
|
+
availability: DishwasherAvailabilitySchema,
|
|
56238
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
56239
|
+
supportsStart: boolean(),
|
|
56240
|
+
supportsPause: boolean(),
|
|
56241
|
+
supportsResume: boolean(),
|
|
56242
|
+
supportsStop: boolean(),
|
|
56243
|
+
supportsPower: boolean(),
|
|
56244
|
+
/** Every program the description lists, with its options. */
|
|
56245
|
+
programs: array(DishwasherProgramSchema),
|
|
56246
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
56247
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
56248
|
+
});
|
|
56110
56249
|
var dishwasherCapability = {
|
|
56111
56250
|
name: "dishwasher",
|
|
56112
56251
|
scope: "device",
|
|
@@ -56114,86 +56253,102 @@ var dishwasherCapability = {
|
|
|
56114
56253
|
mode: "singleton",
|
|
56115
56254
|
deviceTypes: [DeviceType.Dishwasher],
|
|
56116
56255
|
methods: {
|
|
56117
|
-
|
|
56256
|
+
/**
|
|
56257
|
+
* Start a program. Without `program` the selected one starts. `options` are
|
|
56258
|
+
* option feature keys; each is checked against the program's constraints.
|
|
56259
|
+
*/
|
|
56260
|
+
start: method(object({
|
|
56261
|
+
deviceId: DeviceIdSchema,
|
|
56262
|
+
program: string().min(1).optional(),
|
|
56263
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
56264
|
+
}), _void(), {
|
|
56118
56265
|
kind: "mutation",
|
|
56119
56266
|
auth: "protected"
|
|
56120
56267
|
}),
|
|
56121
|
-
pause: method(object({ deviceId:
|
|
56268
|
+
pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56122
56269
|
kind: "mutation",
|
|
56123
56270
|
auth: "protected"
|
|
56124
56271
|
}),
|
|
56125
|
-
|
|
56272
|
+
resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56273
|
+
kind: "mutation",
|
|
56274
|
+
auth: "protected"
|
|
56275
|
+
}),
|
|
56276
|
+
stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56126
56277
|
kind: "mutation",
|
|
56127
56278
|
auth: "protected"
|
|
56128
56279
|
}),
|
|
56280
|
+
/** Select (not start) a program; refused when the appliance does not offer it. */
|
|
56129
56281
|
setProgram: method(object({
|
|
56130
|
-
deviceId:
|
|
56282
|
+
deviceId: DeviceIdSchema,
|
|
56131
56283
|
program: string().min(1)
|
|
56132
56284
|
}), _void(), {
|
|
56133
56285
|
kind: "mutation",
|
|
56134
56286
|
auth: "protected"
|
|
56135
56287
|
}),
|
|
56136
56288
|
setPower: method(object({
|
|
56137
|
-
deviceId:
|
|
56289
|
+
deviceId: DeviceIdSchema,
|
|
56138
56290
|
on: boolean()
|
|
56139
56291
|
}), _void(), {
|
|
56140
56292
|
kind: "mutation",
|
|
56141
56293
|
auth: "protected"
|
|
56142
56294
|
}),
|
|
56143
56295
|
setHalfLoad: method(object({
|
|
56144
|
-
deviceId:
|
|
56296
|
+
deviceId: DeviceIdSchema,
|
|
56145
56297
|
on: boolean()
|
|
56146
56298
|
}), _void(), {
|
|
56147
56299
|
kind: "mutation",
|
|
56148
56300
|
auth: "protected"
|
|
56149
56301
|
}),
|
|
56150
56302
|
setHygienePlus: method(object({
|
|
56151
|
-
deviceId:
|
|
56303
|
+
deviceId: DeviceIdSchema,
|
|
56152
56304
|
on: boolean()
|
|
56153
56305
|
}), _void(), {
|
|
56154
56306
|
kind: "mutation",
|
|
56155
56307
|
auth: "protected"
|
|
56156
56308
|
}),
|
|
56157
56309
|
setExtraDry: method(object({
|
|
56158
|
-
deviceId:
|
|
56310
|
+
deviceId: DeviceIdSchema,
|
|
56159
56311
|
on: boolean()
|
|
56160
56312
|
}), _void(), {
|
|
56161
56313
|
kind: "mutation",
|
|
56162
56314
|
auth: "protected"
|
|
56163
56315
|
}),
|
|
56164
56316
|
setIntensiveZone: method(object({
|
|
56165
|
-
deviceId:
|
|
56317
|
+
deviceId: DeviceIdSchema,
|
|
56166
56318
|
on: boolean()
|
|
56167
56319
|
}), _void(), {
|
|
56168
56320
|
kind: "mutation",
|
|
56169
56321
|
auth: "protected"
|
|
56170
56322
|
}),
|
|
56171
56323
|
setVarioSpeedPlus: method(object({
|
|
56172
|
-
deviceId:
|
|
56324
|
+
deviceId: DeviceIdSchema,
|
|
56173
56325
|
on: boolean()
|
|
56174
56326
|
}), _void(), {
|
|
56175
56327
|
kind: "mutation",
|
|
56176
56328
|
auth: "protected"
|
|
56177
56329
|
}),
|
|
56178
56330
|
setChildLock: method(object({
|
|
56179
|
-
deviceId:
|
|
56331
|
+
deviceId: DeviceIdSchema,
|
|
56180
56332
|
on: boolean()
|
|
56181
56333
|
}), _void(), {
|
|
56182
56334
|
kind: "mutation",
|
|
56183
56335
|
auth: "protected"
|
|
56184
56336
|
}),
|
|
56337
|
+
/**
|
|
56338
|
+
* Write any option or setting by feature key. Refused when the description does
|
|
56339
|
+
* not list it, it is not writable or not available now, or the value is outside
|
|
56340
|
+
* its declared range / members.
|
|
56341
|
+
*/
|
|
56185
56342
|
setOption: method(object({
|
|
56186
|
-
deviceId:
|
|
56343
|
+
deviceId: DeviceIdSchema,
|
|
56187
56344
|
key: string().min(1),
|
|
56188
|
-
value:
|
|
56189
|
-
boolean(),
|
|
56190
|
-
string(),
|
|
56191
|
-
number()
|
|
56192
|
-
])
|
|
56345
|
+
value: DishwasherValueSchema
|
|
56193
56346
|
}), _void(), {
|
|
56194
56347
|
kind: "mutation",
|
|
56195
56348
|
auth: "protected"
|
|
56196
|
-
})
|
|
56349
|
+
}),
|
|
56350
|
+
/** What this appliance can do, from its own description — the UI is derived from it. */
|
|
56351
|
+
getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
|
|
56197
56352
|
},
|
|
56198
56353
|
status: {
|
|
56199
56354
|
schema: DishwasherStatusSchema,
|
|
@@ -70142,6 +70297,12 @@ Object.freeze({
|
|
|
70142
70297
|
addonId: null,
|
|
70143
70298
|
access: "view"
|
|
70144
70299
|
},
|
|
70300
|
+
"dishwasher.getOptions": {
|
|
70301
|
+
capName: "dishwasher",
|
|
70302
|
+
capScope: "device",
|
|
70303
|
+
addonId: null,
|
|
70304
|
+
access: "view"
|
|
70305
|
+
},
|
|
70145
70306
|
"dishwasher.getStatus": {
|
|
70146
70307
|
capName: "dishwasher",
|
|
70147
70308
|
capScope: "device",
|
|
@@ -70154,6 +70315,12 @@ Object.freeze({
|
|
|
70154
70315
|
addonId: null,
|
|
70155
70316
|
access: "create"
|
|
70156
70317
|
},
|
|
70318
|
+
"dishwasher.resume": {
|
|
70319
|
+
capName: "dishwasher",
|
|
70320
|
+
capScope: "device",
|
|
70321
|
+
addonId: null,
|
|
70322
|
+
access: "create"
|
|
70323
|
+
},
|
|
70157
70324
|
"dishwasher.setChildLock": {
|
|
70158
70325
|
capName: "dishwasher",
|
|
70159
70326
|
capScope: "device",
|
|
@@ -74654,6 +74821,12 @@ Object.freeze({
|
|
|
74654
74821
|
addonId: null,
|
|
74655
74822
|
access: "view"
|
|
74656
74823
|
},
|
|
74824
|
+
"storageMigration.moverClearance": {
|
|
74825
|
+
capName: "storage-migration",
|
|
74826
|
+
capScope: "system",
|
|
74827
|
+
addonId: null,
|
|
74828
|
+
access: "view"
|
|
74829
|
+
},
|
|
74657
74830
|
"storageMigration.movers": {
|
|
74658
74831
|
capName: "storage-migration",
|
|
74659
74832
|
capScope: "system",
|
|
@@ -76847,6 +77020,11 @@ Object.freeze({
|
|
|
76847
77020
|
form: "single",
|
|
76848
77021
|
optional: false
|
|
76849
77022
|
}],
|
|
77023
|
+
"dishwasher.getOptions": [{
|
|
77024
|
+
name: "deviceId",
|
|
77025
|
+
form: "single",
|
|
77026
|
+
optional: false
|
|
77027
|
+
}],
|
|
76850
77028
|
"dishwasher.getStatus": [{
|
|
76851
77029
|
name: "deviceId",
|
|
76852
77030
|
form: "single",
|
|
@@ -76857,6 +77035,11 @@ Object.freeze({
|
|
|
76857
77035
|
form: "single",
|
|
76858
77036
|
optional: false
|
|
76859
77037
|
}],
|
|
77038
|
+
"dishwasher.resume": [{
|
|
77039
|
+
name: "deviceId",
|
|
77040
|
+
form: "single",
|
|
77041
|
+
optional: false
|
|
77042
|
+
}],
|
|
76860
77043
|
"dishwasher.setChildLock": [{
|
|
76861
77044
|
name: "deviceId",
|
|
76862
77045
|
form: "single",
|
|
@@ -78943,6 +79126,9 @@ new Map(Object.entries({
|
|
|
78943
79126
|
"wrapper-update-available": "system",
|
|
78944
79127
|
"backup-completed": "system",
|
|
78945
79128
|
"export-completed": "system",
|
|
79129
|
+
"alert-critical": "system",
|
|
79130
|
+
"alert-error": "system",
|
|
79131
|
+
"alert-critical-resolved": "system",
|
|
78946
79132
|
"storage-location-low": "system",
|
|
78947
79133
|
"storage-location-critical": "system",
|
|
78948
79134
|
"storage-location-ok": "system",
|
|
@@ -79067,6 +79253,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79067
79253
|
"storage-location-ok"
|
|
79068
79254
|
]
|
|
79069
79255
|
},
|
|
79256
|
+
{
|
|
79257
|
+
id: "alerts",
|
|
79258
|
+
family: "system",
|
|
79259
|
+
label: "Alerts",
|
|
79260
|
+
kinds: [
|
|
79261
|
+
"alert-critical",
|
|
79262
|
+
"alert-error",
|
|
79263
|
+
"alert-critical-resolved"
|
|
79264
|
+
]
|
|
79265
|
+
},
|
|
79070
79266
|
{
|
|
79071
79267
|
id: "alarm",
|
|
79072
79268
|
family: "alarm",
|
|
@@ -79111,6 +79307,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
79111
79307
|
return [[descriptor.kind, field]];
|
|
79112
79308
|
})));
|
|
79113
79309
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
79310
|
+
object({
|
|
79311
|
+
phase: _enum(["raised", "resolved"]),
|
|
79312
|
+
episodeId: string().min(1),
|
|
79313
|
+
alertId: string().min(1),
|
|
79314
|
+
severity: AlertSeveritySchema,
|
|
79315
|
+
category: string(),
|
|
79316
|
+
title: string(),
|
|
79317
|
+
message: string(),
|
|
79318
|
+
sourceType: string().optional(),
|
|
79319
|
+
sourceId: string().optional(),
|
|
79320
|
+
nodeId: string().optional(),
|
|
79321
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
79322
|
+
actionUrl: string().optional(),
|
|
79323
|
+
at: number()
|
|
79324
|
+
});
|
|
79114
79325
|
var RULE_BODY_ONLY = ["body"];
|
|
79115
79326
|
var RULE_TEXT = ["title", "body"];
|
|
79116
79327
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -79120,6 +79331,11 @@ var TANK = [
|
|
|
79120
79331
|
"device-tank-full",
|
|
79121
79332
|
"device-tank-normal"
|
|
79122
79333
|
];
|
|
79334
|
+
var ALERT_EPISODE = [
|
|
79335
|
+
"alert-critical",
|
|
79336
|
+
"alert-error",
|
|
79337
|
+
"alert-critical-resolved"
|
|
79338
|
+
];
|
|
79123
79339
|
var UPDATES = [
|
|
79124
79340
|
"addon-update-available",
|
|
79125
79341
|
"server-update-available",
|
|
@@ -79312,14 +79528,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
79312
79528
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
79313
79529
|
([...RULE_TEXT], [...TANK]),
|
|
79314
79530
|
[...RULE_TEXT],
|
|
79315
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
79316
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
79317
|
-
[...RULE_TEXT],
|
|
79531
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
79532
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
79318
79533
|
[...RULE_TEXT],
|
|
79319
79534
|
[...RULE_TEXT],
|
|
79320
79535
|
[...RULE_TEXT],
|
|
79321
79536
|
[...RULE_TEXT],
|
|
79322
79537
|
[...RULE_TEXT],
|
|
79538
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79323
79539
|
[...RULE_TEXT],
|
|
79324
79540
|
[...RULE_TEXT],
|
|
79325
79541
|
[...RULE_TEXT],
|
|
@@ -79337,7 +79553,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
79337
79553
|
[...RULE_TEXT],
|
|
79338
79554
|
[...RULE_TEXT],
|
|
79339
79555
|
[...RULE_TEXT],
|
|
79340
|
-
[...RULE_TEXT],
|
|
79556
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79557
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79558
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79559
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79560
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79341
79561
|
[...RULE_TEXT],
|
|
79342
79562
|
[...RULE_TEXT],
|
|
79343
79563
|
[...RULE_TEXT],
|
package/dist/addon.mjs
CHANGED
|
@@ -818,7 +818,7 @@ async function discoverDevices(options = {}, binder = createDgramBinder()) {
|
|
|
818
818
|
return [...byId.values()];
|
|
819
819
|
}
|
|
820
820
|
//#endregion
|
|
821
|
-
//#region ../types/dist/event-category-
|
|
821
|
+
//#region ../types/dist/event-category-DOl51-Ij.mjs
|
|
822
822
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
823
823
|
EventCategory["SystemBoot"] = "system.boot";
|
|
824
824
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -897,9 +897,18 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
897
897
|
/**
|
|
898
898
|
* The node's one-shot runner boot check (D877): planned runners against the
|
|
899
899
|
* process service, `degraded` when any is failed, refused or missing. The
|
|
900
|
-
* alert centre turns it into one
|
|
900
|
+
* alert centre turns it into one critical alert.
|
|
901
901
|
*/
|
|
902
902
|
EventCategory["SystemRunnerCheck"] = "system.runner-check";
|
|
903
|
+
/**
|
|
904
|
+
* An alert EPISODE opened or closed, emitted by the alert centre for alerts
|
|
905
|
+
* of severity `critical` or `error` (`AlertEpisodePayload`). The alert
|
|
906
|
+
* centre sends no notification of its own: Notification Center turns this
|
|
907
|
+
* into the `alert-critical` / `alert-error` / `alert-critical-resolved`
|
|
908
|
+
* system-event kinds, and reconciles from the alerts store because a bus
|
|
909
|
+
* event may be dropped (D8, D11).
|
|
910
|
+
*/
|
|
911
|
+
EventCategory["AlertEpisode"] = "alert.episode";
|
|
903
912
|
EventCategory["AddonError"] = "addon.error";
|
|
904
913
|
EventCategory["AddonPageReady"] = "addon.page-ready";
|
|
905
914
|
EventCategory["AddonWidgetReady"] = "addon.widget-ready";
|
|
@@ -6224,7 +6233,7 @@ var ZodIssueCode = {
|
|
|
6224
6233
|
var ZodFirstPartyTypeKind;
|
|
6225
6234
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
6226
6235
|
//#endregion
|
|
6227
|
-
//#region ../types/dist/sleep-
|
|
6236
|
+
//#region ../types/dist/sleep-BxjU_fJM.mjs
|
|
6228
6237
|
/**
|
|
6229
6238
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
6230
6239
|
* window to float samples (D455).
|
|
@@ -13987,7 +13996,14 @@ var AlertSeveritySchema = _enum([
|
|
|
13987
13996
|
]);
|
|
13988
13997
|
var AlertActionSchema = object({
|
|
13989
13998
|
label: string(),
|
|
13990
|
-
href: string().optional()
|
|
13999
|
+
href: string().optional(),
|
|
14000
|
+
/**
|
|
14001
|
+
* How `href` is followed. Absent / `app`: an admin-ui route (client-side).
|
|
14002
|
+
* `server`: a route the HUB serves (an addon HTTP route such as an OAuth
|
|
14003
|
+
* start) — the browser must leave the SPA with a full navigation, because
|
|
14004
|
+
* the SPA has no such route and would bounce to the home page.
|
|
14005
|
+
*/
|
|
14006
|
+
navigation: _enum(["app", "server"]).optional()
|
|
13991
14007
|
});
|
|
13992
14008
|
var AlertStatusSchema = _enum([
|
|
13993
14009
|
"active",
|
|
@@ -42720,6 +42736,9 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42720
42736
|
"server-updated",
|
|
42721
42737
|
"export-completed",
|
|
42722
42738
|
"backup-completed",
|
|
42739
|
+
"alert-critical",
|
|
42740
|
+
"alert-error",
|
|
42741
|
+
"alert-critical-resolved",
|
|
42723
42742
|
"camera-online",
|
|
42724
42743
|
"camera-offline",
|
|
42725
42744
|
"camera-disabled",
|
|
@@ -51796,7 +51815,10 @@ method(StorageMigrationInputSchema, StorageMigrationPlanSchema, { auth: "admin"
|
|
|
51796
51815
|
}), method(object({ jobId: string().optional() }), StorageMigrationJobSchema.nullable(), { auth: "admin" }), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
51797
51816
|
kind: "mutation",
|
|
51798
51817
|
auth: "admin"
|
|
51799
|
-
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({
|
|
51818
|
+
}), method(object({}), array(StorageMigrationMoverSchema).readonly(), { auth: "admin" }), method(object({ locationIds: array(string()).readonly() }), object({
|
|
51819
|
+
clear: boolean(),
|
|
51820
|
+
repointLocationId: string().optional()
|
|
51821
|
+
}), { auth: "admin" }), method(object({}), array(StorageMigrationResidueSchema).readonly(), { auth: "admin" }), method(StorageMigrationDrainInputSchema, object({ jobId: string() }), {
|
|
51800
51822
|
kind: "mutation",
|
|
51801
51823
|
auth: "admin"
|
|
51802
51824
|
}), method(StorageCleanupInputSchema, object({ jobId: string() }), {
|
|
@@ -56060,6 +56082,11 @@ onStatusChanged: { data: object({
|
|
|
56060
56082
|
*
|
|
56061
56083
|
* `kind: 'poll'` — cloud REST APIs typically have no push channel; the
|
|
56062
56084
|
* provider refreshes the slice on an interval and eagerly after commands.
|
|
56085
|
+
*
|
|
56086
|
+
* UNKNOWN IS NOT OFF. Every field the appliance reports separately is
|
|
56087
|
+
* nullable: `null` means "not known right now" (the appliance has not said,
|
|
56088
|
+
* the link is down, or the description does not carry it) and is never
|
|
56089
|
+
* rendered or exported as `false` / `0`. `availability` says why.
|
|
56063
56090
|
*/
|
|
56064
56091
|
var DishwasherStateSchema = _enum([
|
|
56065
56092
|
"idle",
|
|
@@ -56069,43 +56096,155 @@ var DishwasherStateSchema = _enum([
|
|
|
56069
56096
|
"error",
|
|
56070
56097
|
"unavailable"
|
|
56071
56098
|
]);
|
|
56099
|
+
/**
|
|
56100
|
+
* The appliance's own operation state, uncollapsed. `state` above is the coarse
|
|
56101
|
+
* view for compact surfaces; this is what the appliance said.
|
|
56102
|
+
*/
|
|
56103
|
+
var DishwasherOperationStateSchema = _enum([
|
|
56104
|
+
"Inactive",
|
|
56105
|
+
"Ready",
|
|
56106
|
+
"DelayedStart",
|
|
56107
|
+
"Run",
|
|
56108
|
+
"Pause",
|
|
56109
|
+
"ActionRequired",
|
|
56110
|
+
"Finished",
|
|
56111
|
+
"Error",
|
|
56112
|
+
"Aborting"
|
|
56113
|
+
]);
|
|
56114
|
+
/**
|
|
56115
|
+
* Why fields may be `null`:
|
|
56116
|
+
* - `available` — the link is up and the description is loaded;
|
|
56117
|
+
* - `offline` — the local link is down (values are unknown, not last-known);
|
|
56118
|
+
* - `description-missing` — the link is up but the appliance's description could not
|
|
56119
|
+
* be loaded, so its values cannot be decoded.
|
|
56120
|
+
*/
|
|
56121
|
+
var DishwasherAvailabilitySchema = _enum([
|
|
56122
|
+
"available",
|
|
56123
|
+
"offline",
|
|
56124
|
+
"description-missing"
|
|
56125
|
+
]);
|
|
56072
56126
|
var DishwasherConsumableLevelSchema = _enum([
|
|
56073
56127
|
"ok",
|
|
56074
56128
|
"low",
|
|
56075
56129
|
"empty"
|
|
56076
56130
|
]);
|
|
56077
56131
|
var DishwasherStatusSchema = object({
|
|
56132
|
+
availability: DishwasherAvailabilitySchema,
|
|
56133
|
+
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
56078
56134
|
state: DishwasherStateSchema,
|
|
56079
|
-
/**
|
|
56135
|
+
/** The appliance's operation state as reported; null when not known. */
|
|
56136
|
+
operationState: DishwasherOperationStateSchema.nullable(),
|
|
56137
|
+
/** Feature key of the ACTIVE (running) program, or null when none runs / not known. */
|
|
56080
56138
|
program: string().nullable(),
|
|
56081
|
-
/**
|
|
56139
|
+
/** Feature key of the SELECTED program (what Start would run), or null when none / not known. */
|
|
56140
|
+
selectedProgram: string().nullable(),
|
|
56141
|
+
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
56082
56142
|
availablePrograms: array(string()),
|
|
56083
|
-
/**
|
|
56084
|
-
|
|
56143
|
+
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
56144
|
+
remainingSeconds: number().int().nonnegative().nullable(),
|
|
56145
|
+
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
56146
|
+
delayedStartSeconds: number().int().nonnegative().nullable(),
|
|
56085
56147
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
56086
56148
|
progressPercent: number().min(0).max(100).nullable(),
|
|
56087
|
-
/** True when the door is reported open. */
|
|
56088
|
-
doorOpen: boolean(),
|
|
56089
|
-
/** True when
|
|
56090
|
-
|
|
56091
|
-
/**
|
|
56092
|
-
|
|
56149
|
+
/** True when the door is reported open; null when the door state is not known. */
|
|
56150
|
+
doorOpen: boolean().nullable(),
|
|
56151
|
+
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
56152
|
+
doorLocked: boolean().nullable(),
|
|
56153
|
+
/** True when remote start is allowed (door closed, power on, etc.); null when not known. */
|
|
56154
|
+
remoteStartAllowed: boolean().nullable(),
|
|
56155
|
+
/** True when the appliance accepts remote control now; null when not known. */
|
|
56156
|
+
remoteControlActive: boolean().nullable(),
|
|
56157
|
+
/** True while somebody operates the appliance at its panel; null when not reported. */
|
|
56158
|
+
localControlActive: boolean().nullable(),
|
|
56159
|
+
/** Main power / switched-on state; null when not known. */
|
|
56160
|
+
powerOn: boolean().nullable(),
|
|
56161
|
+
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
56162
|
+
powerState: string().nullable(),
|
|
56093
56163
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56094
56164
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56095
|
-
|
|
56096
|
-
|
|
56165
|
+
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56166
|
+
halfLoad: boolean().nullable(),
|
|
56167
|
+
hygienePlus: boolean().nullable(),
|
|
56097
56168
|
/** Extra dry option when the appliance exposes it. */
|
|
56098
|
-
extraDry: boolean(),
|
|
56169
|
+
extraDry: boolean().nullable(),
|
|
56099
56170
|
/** Intensive zone (lower basket) when the appliance exposes it. */
|
|
56100
|
-
intensiveZone: boolean(),
|
|
56171
|
+
intensiveZone: boolean().nullable(),
|
|
56101
56172
|
/** VarioSpeed / VarioSpeed+ when the appliance exposes it. */
|
|
56102
|
-
varioSpeedPlus: boolean(),
|
|
56103
|
-
/** Child lock (controls disabled on the appliance). */
|
|
56104
|
-
childLock: boolean(),
|
|
56173
|
+
varioSpeedPlus: boolean().nullable(),
|
|
56174
|
+
/** Child lock (controls disabled on the appliance); null when not known. */
|
|
56175
|
+
childLock: boolean().nullable(),
|
|
56176
|
+
/** Feature keys of the events currently raised (salt low, rinse aid low, program finished, …). */
|
|
56177
|
+
activeEvents: array(string()),
|
|
56178
|
+
/** Numeric error code when the appliance reports one; null otherwise. */
|
|
56105
56179
|
errorCode: number().nullable(),
|
|
56180
|
+
/** Name of the raised alert-level event while the appliance is in error; null otherwise. */
|
|
56106
56181
|
errorLabel: string().nullable(),
|
|
56182
|
+
/** Ms epoch of the last value received from the appliance; 0 = never. */
|
|
56107
56183
|
lastFetchedAt: number()
|
|
56108
56184
|
});
|
|
56185
|
+
var DeviceIdSchema = number().int().nonnegative();
|
|
56186
|
+
/** A value a program option or setting can take. */
|
|
56187
|
+
var DishwasherValueSchema = union([
|
|
56188
|
+
boolean(),
|
|
56189
|
+
string(),
|
|
56190
|
+
number()
|
|
56191
|
+
]);
|
|
56192
|
+
var DishwasherAccessSchema = _enum([
|
|
56193
|
+
"none",
|
|
56194
|
+
"read",
|
|
56195
|
+
"readWrite",
|
|
56196
|
+
"writeOnly",
|
|
56197
|
+
"readStatic"
|
|
56198
|
+
]);
|
|
56199
|
+
/**
|
|
56200
|
+
* One option or setting the appliance declares, with the constraints its description
|
|
56201
|
+
* gives. A `readWrite` descriptor that is `available` is what `setOption` accepts.
|
|
56202
|
+
*/
|
|
56203
|
+
var DishwasherOptionDescriptorSchema = object({
|
|
56204
|
+
/** Feature key (`Dishcare.Dishwasher.Option.ExtraDry`). */
|
|
56205
|
+
key: string(),
|
|
56206
|
+
/** Last segment of the key, for display. */
|
|
56207
|
+
name: string(),
|
|
56208
|
+
type: _enum([
|
|
56209
|
+
"boolean",
|
|
56210
|
+
"number",
|
|
56211
|
+
"enum",
|
|
56212
|
+
"string"
|
|
56213
|
+
]),
|
|
56214
|
+
access: DishwasherAccessSchema,
|
|
56215
|
+
/** The appliance reports this entity as currently available. */
|
|
56216
|
+
available: boolean(),
|
|
56217
|
+
/** Unit the description declares for a number; null when it declares none. */
|
|
56218
|
+
unit: string().nullable(),
|
|
56219
|
+
min: number().nullable(),
|
|
56220
|
+
max: number().nullable(),
|
|
56221
|
+
step: number().nullable(),
|
|
56222
|
+
/** Allowed members of an enum; null for other types. */
|
|
56223
|
+
enumValues: array(string()).nullable(),
|
|
56224
|
+
defaultValue: DishwasherValueSchema.nullable()
|
|
56225
|
+
});
|
|
56226
|
+
var DishwasherProgramSchema = object({
|
|
56227
|
+
/** Feature key (`Dishcare.Dishwasher.Program.Eco50`) — what `setProgram` / `start` take. */
|
|
56228
|
+
key: string(),
|
|
56229
|
+
name: string(),
|
|
56230
|
+
/** The appliance currently offers this program. */
|
|
56231
|
+
available: boolean(),
|
|
56232
|
+
/** The options this program lists, with the program-level access / availability / default. */
|
|
56233
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
56234
|
+
});
|
|
56235
|
+
var DishwasherOptionsSchema = object({
|
|
56236
|
+
availability: DishwasherAvailabilitySchema,
|
|
56237
|
+
/** What the appliance can be told to do, from the commands its description declares. */
|
|
56238
|
+
supportsStart: boolean(),
|
|
56239
|
+
supportsPause: boolean(),
|
|
56240
|
+
supportsResume: boolean(),
|
|
56241
|
+
supportsStop: boolean(),
|
|
56242
|
+
supportsPower: boolean(),
|
|
56243
|
+
/** Every program the description lists, with its options. */
|
|
56244
|
+
programs: array(DishwasherProgramSchema),
|
|
56245
|
+
/** Every option and setting entity the description lists (programs reference these by key). */
|
|
56246
|
+
options: array(DishwasherOptionDescriptorSchema)
|
|
56247
|
+
});
|
|
56109
56248
|
var dishwasherCapability = {
|
|
56110
56249
|
name: "dishwasher",
|
|
56111
56250
|
scope: "device",
|
|
@@ -56113,86 +56252,102 @@ var dishwasherCapability = {
|
|
|
56113
56252
|
mode: "singleton",
|
|
56114
56253
|
deviceTypes: [DeviceType.Dishwasher],
|
|
56115
56254
|
methods: {
|
|
56116
|
-
|
|
56255
|
+
/**
|
|
56256
|
+
* Start a program. Without `program` the selected one starts. `options` are
|
|
56257
|
+
* option feature keys; each is checked against the program's constraints.
|
|
56258
|
+
*/
|
|
56259
|
+
start: method(object({
|
|
56260
|
+
deviceId: DeviceIdSchema,
|
|
56261
|
+
program: string().min(1).optional(),
|
|
56262
|
+
options: record(string(), DishwasherValueSchema).optional()
|
|
56263
|
+
}), _void(), {
|
|
56117
56264
|
kind: "mutation",
|
|
56118
56265
|
auth: "protected"
|
|
56119
56266
|
}),
|
|
56120
|
-
pause: method(object({ deviceId:
|
|
56267
|
+
pause: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56121
56268
|
kind: "mutation",
|
|
56122
56269
|
auth: "protected"
|
|
56123
56270
|
}),
|
|
56124
|
-
|
|
56271
|
+
resume: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56272
|
+
kind: "mutation",
|
|
56273
|
+
auth: "protected"
|
|
56274
|
+
}),
|
|
56275
|
+
stop: method(object({ deviceId: DeviceIdSchema }), _void(), {
|
|
56125
56276
|
kind: "mutation",
|
|
56126
56277
|
auth: "protected"
|
|
56127
56278
|
}),
|
|
56279
|
+
/** Select (not start) a program; refused when the appliance does not offer it. */
|
|
56128
56280
|
setProgram: method(object({
|
|
56129
|
-
deviceId:
|
|
56281
|
+
deviceId: DeviceIdSchema,
|
|
56130
56282
|
program: string().min(1)
|
|
56131
56283
|
}), _void(), {
|
|
56132
56284
|
kind: "mutation",
|
|
56133
56285
|
auth: "protected"
|
|
56134
56286
|
}),
|
|
56135
56287
|
setPower: method(object({
|
|
56136
|
-
deviceId:
|
|
56288
|
+
deviceId: DeviceIdSchema,
|
|
56137
56289
|
on: boolean()
|
|
56138
56290
|
}), _void(), {
|
|
56139
56291
|
kind: "mutation",
|
|
56140
56292
|
auth: "protected"
|
|
56141
56293
|
}),
|
|
56142
56294
|
setHalfLoad: method(object({
|
|
56143
|
-
deviceId:
|
|
56295
|
+
deviceId: DeviceIdSchema,
|
|
56144
56296
|
on: boolean()
|
|
56145
56297
|
}), _void(), {
|
|
56146
56298
|
kind: "mutation",
|
|
56147
56299
|
auth: "protected"
|
|
56148
56300
|
}),
|
|
56149
56301
|
setHygienePlus: method(object({
|
|
56150
|
-
deviceId:
|
|
56302
|
+
deviceId: DeviceIdSchema,
|
|
56151
56303
|
on: boolean()
|
|
56152
56304
|
}), _void(), {
|
|
56153
56305
|
kind: "mutation",
|
|
56154
56306
|
auth: "protected"
|
|
56155
56307
|
}),
|
|
56156
56308
|
setExtraDry: method(object({
|
|
56157
|
-
deviceId:
|
|
56309
|
+
deviceId: DeviceIdSchema,
|
|
56158
56310
|
on: boolean()
|
|
56159
56311
|
}), _void(), {
|
|
56160
56312
|
kind: "mutation",
|
|
56161
56313
|
auth: "protected"
|
|
56162
56314
|
}),
|
|
56163
56315
|
setIntensiveZone: method(object({
|
|
56164
|
-
deviceId:
|
|
56316
|
+
deviceId: DeviceIdSchema,
|
|
56165
56317
|
on: boolean()
|
|
56166
56318
|
}), _void(), {
|
|
56167
56319
|
kind: "mutation",
|
|
56168
56320
|
auth: "protected"
|
|
56169
56321
|
}),
|
|
56170
56322
|
setVarioSpeedPlus: method(object({
|
|
56171
|
-
deviceId:
|
|
56323
|
+
deviceId: DeviceIdSchema,
|
|
56172
56324
|
on: boolean()
|
|
56173
56325
|
}), _void(), {
|
|
56174
56326
|
kind: "mutation",
|
|
56175
56327
|
auth: "protected"
|
|
56176
56328
|
}),
|
|
56177
56329
|
setChildLock: method(object({
|
|
56178
|
-
deviceId:
|
|
56330
|
+
deviceId: DeviceIdSchema,
|
|
56179
56331
|
on: boolean()
|
|
56180
56332
|
}), _void(), {
|
|
56181
56333
|
kind: "mutation",
|
|
56182
56334
|
auth: "protected"
|
|
56183
56335
|
}),
|
|
56336
|
+
/**
|
|
56337
|
+
* Write any option or setting by feature key. Refused when the description does
|
|
56338
|
+
* not list it, it is not writable or not available now, or the value is outside
|
|
56339
|
+
* its declared range / members.
|
|
56340
|
+
*/
|
|
56184
56341
|
setOption: method(object({
|
|
56185
|
-
deviceId:
|
|
56342
|
+
deviceId: DeviceIdSchema,
|
|
56186
56343
|
key: string().min(1),
|
|
56187
|
-
value:
|
|
56188
|
-
boolean(),
|
|
56189
|
-
string(),
|
|
56190
|
-
number()
|
|
56191
|
-
])
|
|
56344
|
+
value: DishwasherValueSchema
|
|
56192
56345
|
}), _void(), {
|
|
56193
56346
|
kind: "mutation",
|
|
56194
56347
|
auth: "protected"
|
|
56195
|
-
})
|
|
56348
|
+
}),
|
|
56349
|
+
/** What this appliance can do, from its own description — the UI is derived from it. */
|
|
56350
|
+
getOptions: method(object({ deviceId: DeviceIdSchema }), DishwasherOptionsSchema, { auth: "protected" })
|
|
56196
56351
|
},
|
|
56197
56352
|
status: {
|
|
56198
56353
|
schema: DishwasherStatusSchema,
|
|
@@ -70141,6 +70296,12 @@ Object.freeze({
|
|
|
70141
70296
|
addonId: null,
|
|
70142
70297
|
access: "view"
|
|
70143
70298
|
},
|
|
70299
|
+
"dishwasher.getOptions": {
|
|
70300
|
+
capName: "dishwasher",
|
|
70301
|
+
capScope: "device",
|
|
70302
|
+
addonId: null,
|
|
70303
|
+
access: "view"
|
|
70304
|
+
},
|
|
70144
70305
|
"dishwasher.getStatus": {
|
|
70145
70306
|
capName: "dishwasher",
|
|
70146
70307
|
capScope: "device",
|
|
@@ -70153,6 +70314,12 @@ Object.freeze({
|
|
|
70153
70314
|
addonId: null,
|
|
70154
70315
|
access: "create"
|
|
70155
70316
|
},
|
|
70317
|
+
"dishwasher.resume": {
|
|
70318
|
+
capName: "dishwasher",
|
|
70319
|
+
capScope: "device",
|
|
70320
|
+
addonId: null,
|
|
70321
|
+
access: "create"
|
|
70322
|
+
},
|
|
70156
70323
|
"dishwasher.setChildLock": {
|
|
70157
70324
|
capName: "dishwasher",
|
|
70158
70325
|
capScope: "device",
|
|
@@ -74653,6 +74820,12 @@ Object.freeze({
|
|
|
74653
74820
|
addonId: null,
|
|
74654
74821
|
access: "view"
|
|
74655
74822
|
},
|
|
74823
|
+
"storageMigration.moverClearance": {
|
|
74824
|
+
capName: "storage-migration",
|
|
74825
|
+
capScope: "system",
|
|
74826
|
+
addonId: null,
|
|
74827
|
+
access: "view"
|
|
74828
|
+
},
|
|
74656
74829
|
"storageMigration.movers": {
|
|
74657
74830
|
capName: "storage-migration",
|
|
74658
74831
|
capScope: "system",
|
|
@@ -76846,6 +77019,11 @@ Object.freeze({
|
|
|
76846
77019
|
form: "single",
|
|
76847
77020
|
optional: false
|
|
76848
77021
|
}],
|
|
77022
|
+
"dishwasher.getOptions": [{
|
|
77023
|
+
name: "deviceId",
|
|
77024
|
+
form: "single",
|
|
77025
|
+
optional: false
|
|
77026
|
+
}],
|
|
76849
77027
|
"dishwasher.getStatus": [{
|
|
76850
77028
|
name: "deviceId",
|
|
76851
77029
|
form: "single",
|
|
@@ -76856,6 +77034,11 @@ Object.freeze({
|
|
|
76856
77034
|
form: "single",
|
|
76857
77035
|
optional: false
|
|
76858
77036
|
}],
|
|
77037
|
+
"dishwasher.resume": [{
|
|
77038
|
+
name: "deviceId",
|
|
77039
|
+
form: "single",
|
|
77040
|
+
optional: false
|
|
77041
|
+
}],
|
|
76859
77042
|
"dishwasher.setChildLock": [{
|
|
76860
77043
|
name: "deviceId",
|
|
76861
77044
|
form: "single",
|
|
@@ -78942,6 +79125,9 @@ new Map(Object.entries({
|
|
|
78942
79125
|
"wrapper-update-available": "system",
|
|
78943
79126
|
"backup-completed": "system",
|
|
78944
79127
|
"export-completed": "system",
|
|
79128
|
+
"alert-critical": "system",
|
|
79129
|
+
"alert-error": "system",
|
|
79130
|
+
"alert-critical-resolved": "system",
|
|
78945
79131
|
"storage-location-low": "system",
|
|
78946
79132
|
"storage-location-critical": "system",
|
|
78947
79133
|
"storage-location-ok": "system",
|
|
@@ -79066,6 +79252,16 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
79066
79252
|
"storage-location-ok"
|
|
79067
79253
|
]
|
|
79068
79254
|
},
|
|
79255
|
+
{
|
|
79256
|
+
id: "alerts",
|
|
79257
|
+
family: "system",
|
|
79258
|
+
label: "Alerts",
|
|
79259
|
+
kinds: [
|
|
79260
|
+
"alert-critical",
|
|
79261
|
+
"alert-error",
|
|
79262
|
+
"alert-critical-resolved"
|
|
79263
|
+
]
|
|
79264
|
+
},
|
|
79069
79265
|
{
|
|
79070
79266
|
id: "alarm",
|
|
79071
79267
|
family: "alarm",
|
|
@@ -79110,6 +79306,21 @@ var NC_SENSOR_RAISED_FIELD_BY_KIND = Object.freeze(Object.fromEntries(Object.ent
|
|
|
79110
79306
|
return [[descriptor.kind, field]];
|
|
79111
79307
|
})));
|
|
79112
79308
|
Object.freeze(Object.keys(NC_SENSOR_RAISED_FIELD_BY_KIND));
|
|
79309
|
+
object({
|
|
79310
|
+
phase: _enum(["raised", "resolved"]),
|
|
79311
|
+
episodeId: string().min(1),
|
|
79312
|
+
alertId: string().min(1),
|
|
79313
|
+
severity: AlertSeveritySchema,
|
|
79314
|
+
category: string(),
|
|
79315
|
+
title: string(),
|
|
79316
|
+
message: string(),
|
|
79317
|
+
sourceType: string().optional(),
|
|
79318
|
+
sourceId: string().optional(),
|
|
79319
|
+
nodeId: string().optional(),
|
|
79320
|
+
/** The alert's own action link (where the operator acts on it), when it has one. */
|
|
79321
|
+
actionUrl: string().optional(),
|
|
79322
|
+
at: number()
|
|
79323
|
+
});
|
|
79113
79324
|
var RULE_BODY_ONLY = ["body"];
|
|
79114
79325
|
var RULE_TEXT = ["title", "body"];
|
|
79115
79326
|
var BATTERY = ["device-battery-low", "device-battery-normal"];
|
|
@@ -79119,6 +79330,11 @@ var TANK = [
|
|
|
79119
79330
|
"device-tank-full",
|
|
79120
79331
|
"device-tank-normal"
|
|
79121
79332
|
];
|
|
79333
|
+
var ALERT_EPISODE = [
|
|
79334
|
+
"alert-critical",
|
|
79335
|
+
"alert-error",
|
|
79336
|
+
"alert-critical-resolved"
|
|
79337
|
+
];
|
|
79122
79338
|
var UPDATES = [
|
|
79123
79339
|
"addon-update-available",
|
|
79124
79340
|
"server-update-available",
|
|
@@ -79311,14 +79527,14 @@ var STATE_SUMMARY_VARS = [
|
|
|
79311
79527
|
([...RULE_TEXT], [...CONSUMABLE]),
|
|
79312
79528
|
([...RULE_TEXT], [...TANK]),
|
|
79313
79529
|
[...RULE_TEXT],
|
|
79314
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
79315
|
-
([...RULE_TEXT], [...UPDATES]),
|
|
79316
|
-
[...RULE_TEXT],
|
|
79530
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
79531
|
+
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
|
79317
79532
|
[...RULE_TEXT],
|
|
79318
79533
|
[...RULE_TEXT],
|
|
79319
79534
|
[...RULE_TEXT],
|
|
79320
79535
|
[...RULE_TEXT],
|
|
79321
79536
|
[...RULE_TEXT],
|
|
79537
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79322
79538
|
[...RULE_TEXT],
|
|
79323
79539
|
[...RULE_TEXT],
|
|
79324
79540
|
[...RULE_TEXT],
|
|
@@ -79336,7 +79552,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
79336
79552
|
[...RULE_TEXT],
|
|
79337
79553
|
[...RULE_TEXT],
|
|
79338
79554
|
[...RULE_TEXT],
|
|
79339
|
-
[...RULE_TEXT],
|
|
79555
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79556
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79557
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79558
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79559
|
+
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79340
79560
|
[...RULE_TEXT],
|
|
79341
79561
|
[...RULE_TEXT],
|
|
79342
79562
|
[...RULE_TEXT],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-tuya",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.128",
|
|
4
4
|
"description": "Tuya / Smart Life device-provider addon for CamStack — account-onboarded (Tuya IoT cloud fetch of device localKeys) + LOCAL DP control via the @apocaliss92/nodetuya encrypted-LAN client, exposing switch / water-heater-family kettle entities",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|