@camstack/addon-provider-wyze 0.2.155 → 0.2.156
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 +193 -117
- package/dist/addon.mjs +193 -117
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -5463,7 +5463,7 @@ var ZodIssueCode = {
|
|
|
5463
5463
|
var ZodFirstPartyTypeKind;
|
|
5464
5464
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5465
5465
|
//#endregion
|
|
5466
|
-
//#region ../types/dist/sleep-
|
|
5466
|
+
//#region ../types/dist/sleep-CUp20JkO.mjs
|
|
5467
5467
|
/**
|
|
5468
5468
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5469
5469
|
* window to float samples (D455).
|
|
@@ -8355,7 +8355,11 @@ var ContributionSectionSchema = object({
|
|
|
8355
8355
|
literal(4)
|
|
8356
8356
|
]).optional(),
|
|
8357
8357
|
tab: string().optional(),
|
|
8358
|
-
location: _enum([
|
|
8358
|
+
location: _enum([
|
|
8359
|
+
"settings",
|
|
8360
|
+
"top-tab",
|
|
8361
|
+
"hero"
|
|
8362
|
+
]).optional(),
|
|
8359
8363
|
order: number().optional(),
|
|
8360
8364
|
fields: array(any())
|
|
8361
8365
|
});
|
|
@@ -13322,7 +13326,11 @@ var ConfigSectionWithValuesSchema = object({
|
|
|
13322
13326
|
literal(4)
|
|
13323
13327
|
]).optional(),
|
|
13324
13328
|
tab: string().optional(),
|
|
13325
|
-
location: _enum([
|
|
13329
|
+
location: _enum([
|
|
13330
|
+
"settings",
|
|
13331
|
+
"top-tab",
|
|
13332
|
+
"hero"
|
|
13333
|
+
]).optional(),
|
|
13326
13334
|
order: number().optional(),
|
|
13327
13335
|
fields: array(any())
|
|
13328
13336
|
});
|
|
@@ -17202,6 +17210,52 @@ var TierStatusSchema = object({
|
|
|
17202
17210
|
countedAt: number().nullable()
|
|
17203
17211
|
});
|
|
17204
17212
|
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
17213
|
+
/**
|
|
17214
|
+
* Why a series is orphan. `device-gone`: its device is absent from the
|
|
17215
|
+
* successful device listings (the departure clock). `undeclared`: its `cap:`
|
|
17216
|
+
* key is declared by no capability any more (a field a cap removed).
|
|
17217
|
+
*/
|
|
17218
|
+
var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
|
|
17219
|
+
/** Rows held per stored tier. */
|
|
17220
|
+
var TierRowsSchema = object({
|
|
17221
|
+
raw: number().int(),
|
|
17222
|
+
"5m": number().int(),
|
|
17223
|
+
"1h": number().int(),
|
|
17224
|
+
"1d": number().int()
|
|
17225
|
+
});
|
|
17226
|
+
var OrphanSeriesSchema = object({
|
|
17227
|
+
seriesId: number().int(),
|
|
17228
|
+
deviceId: number().int(),
|
|
17229
|
+
key: string(),
|
|
17230
|
+
scope: string(),
|
|
17231
|
+
/** The metric's display name; `null` when its metric row is gone too. */
|
|
17232
|
+
displayName: string().nullable(),
|
|
17233
|
+
reason: DeviceHistoryOrphanReasonSchema,
|
|
17234
|
+
/** `device-gone`: since when the device has been absent; `null` otherwise. */
|
|
17235
|
+
missingSince: number().nullable(),
|
|
17236
|
+
firstTs: number(),
|
|
17237
|
+
lastTs: number(),
|
|
17238
|
+
rows: TierRowsSchema
|
|
17239
|
+
});
|
|
17240
|
+
var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
|
|
17241
|
+
"not-found",
|
|
17242
|
+
"not-orphan",
|
|
17243
|
+
"failed"
|
|
17244
|
+
]);
|
|
17245
|
+
var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
|
|
17246
|
+
seriesId: number().int(),
|
|
17247
|
+
ok: literal(true),
|
|
17248
|
+
deleted: TierRowsSchema
|
|
17249
|
+
}), object({
|
|
17250
|
+
seriesId: number().int(),
|
|
17251
|
+
ok: literal(false),
|
|
17252
|
+
reason: DeviceHistoryOrphanDeleteRefusalSchema
|
|
17253
|
+
})]);
|
|
17254
|
+
var OrphanListSchema = object({
|
|
17255
|
+
series: array(OrphanSeriesSchema).readonly(),
|
|
17256
|
+
/** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
|
|
17257
|
+
truncated: boolean()
|
|
17258
|
+
});
|
|
17205
17259
|
var DeviceHistoryStatusSchema = object({
|
|
17206
17260
|
startedAt: number(),
|
|
17207
17261
|
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
@@ -17299,7 +17353,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
17299
17353
|
}), object({ enabled: boolean() }), {
|
|
17300
17354
|
kind: "mutation",
|
|
17301
17355
|
auth: "admin"
|
|
17302
|
-
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
17356
|
+
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" }), method(object({}), OrphanListSchema, { auth: "admin" }), method(object({ seriesIds: array(number().int()).min(1).max(50) }), object({ results: array(OrphanDeleteEntrySchema).readonly() }), {
|
|
17357
|
+
kind: "mutation",
|
|
17358
|
+
auth: "admin"
|
|
17359
|
+
});
|
|
17303
17360
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
17304
17361
|
object({ state: literal("absent") }),
|
|
17305
17362
|
object({
|
|
@@ -55271,17 +55328,69 @@ var connectivityCapability = {
|
|
|
55271
55328
|
volatileStateFields: ["lastChangedAt"]
|
|
55272
55329
|
};
|
|
55273
55330
|
/**
|
|
55274
|
-
* Generic device-consumables capability —
|
|
55275
|
-
*
|
|
55276
|
-
* descaling cycles,
|
|
55277
|
-
*
|
|
55278
|
-
*
|
|
55279
|
-
*
|
|
55331
|
+
* Generic device-consumables capability — the ONE place a device reports what
|
|
55332
|
+
* it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
|
|
55333
|
+
* descaling cycles), supplies it draws from (a vacuum's clean-water tank and
|
|
55334
|
+
* detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
|
|
55335
|
+
* water tank, a dust bin). Each item carries its remaining life or fill and an
|
|
55336
|
+
* optional "Replaced" reset action. Device-agnostic: any provider that knows
|
|
55337
|
+
* its device tracks consumables registers it; the provider names each item
|
|
55338
|
+
* verbatim and says which `kind` it is.
|
|
55339
|
+
*
|
|
55340
|
+
* The admin UI renders it as ONE collapsible section directly under the
|
|
55341
|
+
* device page's hero card (`placement: 'hero'`), for every device bound to
|
|
55342
|
+
* this cap — never drawn by a device type's hero card itself (D915).
|
|
55280
55343
|
*
|
|
55281
55344
|
* Like `childLayout`, the cap is INERT until a provider sets items: no
|
|
55282
55345
|
* provider populates it by guessing (no HA inference). The UI renders a
|
|
55283
55346
|
* "No consumables reported" placeholder when `items` is empty.
|
|
55284
55347
|
*/
|
|
55348
|
+
/**
|
|
55349
|
+
* What an item IS, which decides which direction is bad:
|
|
55350
|
+
* - `wear` — a part that wears out (a brush, a filter); low life is bad.
|
|
55351
|
+
* - `supply` — something the device draws from (clean water, detergent,
|
|
55352
|
+
* salt, rinse aid); low or empty is bad.
|
|
55353
|
+
* - `waste` — something the device fills (dirty water, a dust bin); full is
|
|
55354
|
+
* bad.
|
|
55355
|
+
* Absent = `wear`.
|
|
55356
|
+
*/
|
|
55357
|
+
var ConsumableKindSchema = _enum([
|
|
55358
|
+
"wear",
|
|
55359
|
+
"supply",
|
|
55360
|
+
"waste"
|
|
55361
|
+
]);
|
|
55362
|
+
/**
|
|
55363
|
+
* What an item LOOKS like, which decides how a client draws it — independent
|
|
55364
|
+
* of `kind`, which decides which direction is bad:
|
|
55365
|
+
* - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
|
|
55366
|
+
* remaining time and a reset.
|
|
55367
|
+
* - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
|
|
55368
|
+
* - `product` — something bought and refilled (detergent, salt, rinse aid):
|
|
55369
|
+
* a stepped level and "refill".
|
|
55370
|
+
* - `bin` — a container that collects waste (a dust bin): a fill gauge
|
|
55371
|
+
* that warns when full.
|
|
55372
|
+
* Absent = derived from the kind ({@link consumableFormOf}).
|
|
55373
|
+
*/
|
|
55374
|
+
var ConsumableFormSchema = _enum([
|
|
55375
|
+
"part",
|
|
55376
|
+
"tank",
|
|
55377
|
+
"product",
|
|
55378
|
+
"bin"
|
|
55379
|
+
]);
|
|
55380
|
+
/** The provider's own discrete verdict on an item. */
|
|
55381
|
+
var ConsumableStatusSchema = _enum([
|
|
55382
|
+
"ok",
|
|
55383
|
+
"low",
|
|
55384
|
+
"empty",
|
|
55385
|
+
"full",
|
|
55386
|
+
"replace"
|
|
55387
|
+
]);
|
|
55388
|
+
_enum([
|
|
55389
|
+
"ok",
|
|
55390
|
+
"low",
|
|
55391
|
+
"empty",
|
|
55392
|
+
"full"
|
|
55393
|
+
]);
|
|
55285
55394
|
/** Units a remaining-life counter is reported in. Closed: the panel renders
|
|
55286
55395
|
* each. */
|
|
55287
55396
|
var ConsumableRemainingUnitSchema = _enum([
|
|
@@ -55296,18 +55405,23 @@ var ConsumableRemainingSchema = object({
|
|
|
55296
55405
|
unit: ConsumableRemainingUnitSchema
|
|
55297
55406
|
});
|
|
55298
55407
|
/** A single consumable item. Either a continuous `level` (remaining
|
|
55299
|
-
* life
|
|
55300
|
-
*
|
|
55301
|
-
* mutually exclusive; a provider may
|
|
55408
|
+
* life %, or fill % for a `supply` / `waste` item) or a discrete `status`
|
|
55409
|
+
* may be known — both may be null when a provider only knows the item
|
|
55410
|
+
* exists. `level` and `status` are not mutually exclusive; a provider may
|
|
55411
|
+
* report both. */
|
|
55302
55412
|
var ConsumableItemSchema = object({
|
|
55303
55413
|
/** Stable id, e.g. 'main-brush'. */
|
|
55304
55414
|
key: string().min(1),
|
|
55305
55415
|
/** Display name. */
|
|
55306
55416
|
label: string().min(1),
|
|
55307
|
-
/** Remaining life % when known (0..100). */
|
|
55417
|
+
/** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
|
|
55308
55418
|
level: number().min(0).max(100).nullable(),
|
|
55309
|
-
/**
|
|
55310
|
-
status:
|
|
55419
|
+
/** The provider's discrete verdict when known (binary mode). */
|
|
55420
|
+
status: ConsumableStatusSchema.nullable(),
|
|
55421
|
+
/** What the item is — decides whether low or full is bad. Absent = `wear`. */
|
|
55422
|
+
kind: ConsumableKindSchema.optional(),
|
|
55423
|
+
/** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
|
|
55424
|
+
form: ConsumableFormSchema.optional(),
|
|
55311
55425
|
/** Ms epoch of the last replace, when known. */
|
|
55312
55426
|
lastResetAt: number().nullable(),
|
|
55313
55427
|
/** Whether `reset()` is meaningful for this item. */
|
|
@@ -55330,7 +55444,7 @@ var consumablesCapability = {
|
|
|
55330
55444
|
kind: "widget",
|
|
55331
55445
|
widgetId: "host/consumables-panel",
|
|
55332
55446
|
tab: "consumables",
|
|
55333
|
-
|
|
55447
|
+
placement: "hero",
|
|
55334
55448
|
label: "Consumables",
|
|
55335
55449
|
order: 5
|
|
55336
55450
|
} },
|
|
@@ -55391,9 +55505,37 @@ reset: method(object({
|
|
|
55391
55505
|
*/
|
|
55392
55506
|
durability: "restored",
|
|
55393
55507
|
/**
|
|
55394
|
-
* History (D850):
|
|
55508
|
+
* History (D850, D917): one series per (item field, item `key`) — the item key
|
|
55509
|
+
* is the series scope, the item `label` names it. A vacuum tank's fill, a
|
|
55510
|
+
* brush's remaining life and a dishwasher's salt are each recorded the moment
|
|
55511
|
+
* their provider reports them; an item that appears later gets its series.
|
|
55395
55512
|
*/
|
|
55396
|
-
history:
|
|
55513
|
+
history: {
|
|
55514
|
+
fields: {},
|
|
55515
|
+
items: {
|
|
55516
|
+
path: "items",
|
|
55517
|
+
key: "key",
|
|
55518
|
+
label: "label",
|
|
55519
|
+
fields: {
|
|
55520
|
+
level: {
|
|
55521
|
+
kind: "gauge",
|
|
55522
|
+
unit: "%",
|
|
55523
|
+
deadband: 2,
|
|
55524
|
+
displayName: "Level"
|
|
55525
|
+
},
|
|
55526
|
+
status: {
|
|
55527
|
+
kind: "enum",
|
|
55528
|
+
displayName: "Status"
|
|
55529
|
+
},
|
|
55530
|
+
"remaining.value": {
|
|
55531
|
+
kind: "gauge",
|
|
55532
|
+
unitFrom: "remaining.unit",
|
|
55533
|
+
deadband: 1,
|
|
55534
|
+
displayName: "Remaining"
|
|
55535
|
+
}
|
|
55536
|
+
}
|
|
55537
|
+
}
|
|
55538
|
+
},
|
|
55397
55539
|
/** Clocks, not content: a re-read that changed no item costs no commit. */
|
|
55398
55540
|
volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
|
|
55399
55541
|
};
|
|
@@ -55808,8 +55950,9 @@ onStatusChanged: { data: object({
|
|
|
55808
55950
|
volatileStateFields: ["lastChangedAt"]
|
|
55809
55951
|
};
|
|
55810
55952
|
/**
|
|
55811
|
-
* Smart-dishwasher cap — program lifecycle, door / remote-start gates
|
|
55812
|
-
*
|
|
55953
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates and
|
|
55954
|
+
* common program options. Salt and rinse aid are NOT here: they are items of
|
|
55955
|
+
* the device's `consumables` cap, like every other device's (D915).
|
|
55813
55956
|
*
|
|
55814
55957
|
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
55815
55958
|
* by any integration that exposes the same program / option surface.
|
|
@@ -55857,11 +56000,6 @@ var DishwasherAvailabilitySchema = _enum([
|
|
|
55857
56000
|
"offline",
|
|
55858
56001
|
"description-missing"
|
|
55859
56002
|
]);
|
|
55860
|
-
var DishwasherConsumableLevelSchema = _enum([
|
|
55861
|
-
"ok",
|
|
55862
|
-
"low",
|
|
55863
|
-
"empty"
|
|
55864
|
-
]);
|
|
55865
56003
|
var DishwasherStatusSchema = object({
|
|
55866
56004
|
availability: DishwasherAvailabilitySchema,
|
|
55867
56005
|
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
@@ -55894,8 +56032,6 @@ var DishwasherStatusSchema = object({
|
|
|
55894
56032
|
powerOn: boolean().nullable(),
|
|
55895
56033
|
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55896
56034
|
powerState: string().nullable(),
|
|
55897
|
-
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55898
|
-
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55899
56035
|
/**
|
|
55900
56036
|
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
55901
56037
|
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
@@ -64711,60 +64847,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
64711
64847
|
auth: "admin",
|
|
64712
64848
|
access: "delete"
|
|
64713
64849
|
});
|
|
64714
|
-
/**
|
|
64715
|
-
* Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
|
|
64716
|
-
* cleaning lifecycle plus a return-to-base / locate surface and an
|
|
64717
|
-
* optional fan-speed selector.
|
|
64718
|
-
*
|
|
64719
|
-
* State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
|
|
64720
|
-
* `paused` / `returning` / `docked` / `error`. `batteryLevel`
|
|
64721
|
-
* (0..100) is nullable — some vacuums don't report a battery
|
|
64722
|
-
* percentage. `fanSpeed` is the current speed token (provider-verbatim,
|
|
64723
|
-
* e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
|
|
64724
|
-
* tokens the hardware accepts so the UI renders only supported choices.
|
|
64725
|
-
*
|
|
64726
|
-
* The `setFanSpeed` method takes the bare `speed` token — the provider
|
|
64727
|
-
* validates it against the vacuum's own list. `locate` triggers the
|
|
64728
|
-
* find-me chirp; `returnToBase` sends it home.
|
|
64729
|
-
*
|
|
64730
|
-
* Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
|
|
64731
|
-
* `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
|
|
64732
|
-
* 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
|
|
64733
|
-
* SHOULD populate whichever tanks the hardware has — leave a field `null`
|
|
64734
|
-
* only when the device has no such tank at all, and use a `TankStatus`
|
|
64735
|
-
* with both inner fields `null` when the tank exists but its level is
|
|
64736
|
-
* currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
|
|
64737
|
-
* so the HA provider leaves all four `null`.
|
|
64738
|
-
*/
|
|
64739
|
-
var VacuumStateSchema = _enum([
|
|
64740
|
-
"idle",
|
|
64741
|
-
"cleaning",
|
|
64742
|
-
"paused",
|
|
64743
|
-
"returning",
|
|
64744
|
-
"docked",
|
|
64745
|
-
"drying",
|
|
64746
|
-
"error"
|
|
64747
|
-
]);
|
|
64748
|
-
/**
|
|
64749
|
-
* One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
|
|
64750
|
-
* detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
|
|
64751
|
-
* a discrete `status` (binary-style hardware), or both. Both `null` means the
|
|
64752
|
-
* level is currently unknown; the OWNING field being `null` means the
|
|
64753
|
-
* hardware has no such tank at all.
|
|
64754
|
-
*/
|
|
64755
|
-
var TankStatusSchema = object({
|
|
64756
|
-
/** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
|
|
64757
|
-
level: number().min(0).max(100).nullable(),
|
|
64758
|
-
/** Discrete state when the hardware is binary-mode; null otherwise. */
|
|
64759
|
-
status: _enum([
|
|
64760
|
-
"ok",
|
|
64761
|
-
"low",
|
|
64762
|
-
"full"
|
|
64763
|
-
]).nullable()
|
|
64764
|
-
});
|
|
64765
64850
|
var VacuumControlStatusSchema = object({
|
|
64766
64851
|
/** Lifecycle state of the vacuum. */
|
|
64767
|
-
state:
|
|
64852
|
+
state: _enum([
|
|
64853
|
+
"idle",
|
|
64854
|
+
"cleaning",
|
|
64855
|
+
"paused",
|
|
64856
|
+
"returning",
|
|
64857
|
+
"docked",
|
|
64858
|
+
"drying",
|
|
64859
|
+
"error"
|
|
64860
|
+
]),
|
|
64768
64861
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
64769
64862
|
* reading. */
|
|
64770
64863
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
@@ -64773,14 +64866,6 @@ var VacuumControlStatusSchema = object({
|
|
|
64773
64866
|
fanSpeed: string().nullable(),
|
|
64774
64867
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
64775
64868
|
availableFanSpeeds: array(string()),
|
|
64776
|
-
/** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
|
|
64777
|
-
cleanWater: TankStatusSchema.nullable(),
|
|
64778
|
-
/** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
|
|
64779
|
-
dirtyWater: TankStatusSchema.nullable(),
|
|
64780
|
-
/** Detergent tank. Null when the hardware has no detergent tank. */
|
|
64781
|
-
detergent: TankStatusSchema.nullable(),
|
|
64782
|
-
/** Dust bin. Null when the hardware has no dust bin. */
|
|
64783
|
-
dustBin: TankStatusSchema.nullable(),
|
|
64784
64869
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
64785
64870
|
progressPercent: number().min(0).max(100).nullable(),
|
|
64786
64871
|
/** Current error code (0 / null = no error). */
|
|
@@ -64842,35 +64927,14 @@ var vacuumControlCapability = {
|
|
|
64842
64927
|
*/
|
|
64843
64928
|
durability: "session",
|
|
64844
64929
|
/**
|
|
64845
|
-
* History (D850): recorded series.
|
|
64930
|
+
* History (D850): recorded series. The tanks moved to `consumables` (D915), whose
|
|
64931
|
+
* items are keyed by runtime ids and record no history.
|
|
64846
64932
|
*/
|
|
64847
|
-
history: { fields: {
|
|
64848
|
-
|
|
64849
|
-
|
|
64850
|
-
|
|
64851
|
-
|
|
64852
|
-
},
|
|
64853
|
-
"cleanWater.level": {
|
|
64854
|
-
kind: "gauge",
|
|
64855
|
-
unit: "%",
|
|
64856
|
-
deadband: 2
|
|
64857
|
-
},
|
|
64858
|
-
"dirtyWater.level": {
|
|
64859
|
-
kind: "gauge",
|
|
64860
|
-
unit: "%",
|
|
64861
|
-
deadband: 2
|
|
64862
|
-
},
|
|
64863
|
-
"detergent.level": {
|
|
64864
|
-
kind: "gauge",
|
|
64865
|
-
unit: "%",
|
|
64866
|
-
deadband: 2
|
|
64867
|
-
},
|
|
64868
|
-
"dustBin.level": {
|
|
64869
|
-
kind: "gauge",
|
|
64870
|
-
unit: "%",
|
|
64871
|
-
deadband: 2
|
|
64872
|
-
}
|
|
64873
|
-
} }
|
|
64933
|
+
history: { fields: { batteryLevel: {
|
|
64934
|
+
kind: "gauge",
|
|
64935
|
+
unit: "%",
|
|
64936
|
+
deadband: 2
|
|
64937
|
+
} } }
|
|
64874
64938
|
};
|
|
64875
64939
|
var ValveStatusSchema = object({
|
|
64876
64940
|
/** Lifecycle state of the valve. */
|
|
@@ -69264,6 +69328,12 @@ Object.freeze({
|
|
|
69264
69328
|
addonId: null,
|
|
69265
69329
|
access: "create"
|
|
69266
69330
|
},
|
|
69331
|
+
"deviceHistory.deleteOrphanSeries": {
|
|
69332
|
+
capName: "device-history",
|
|
69333
|
+
capScope: "system",
|
|
69334
|
+
addonId: null,
|
|
69335
|
+
access: "delete"
|
|
69336
|
+
},
|
|
69267
69337
|
"deviceHistory.getDeviceEnabled": {
|
|
69268
69338
|
capName: "device-history",
|
|
69269
69339
|
capScope: "system",
|
|
@@ -69282,6 +69352,12 @@ Object.freeze({
|
|
|
69282
69352
|
addonId: null,
|
|
69283
69353
|
access: "view"
|
|
69284
69354
|
},
|
|
69355
|
+
"deviceHistory.listOrphanSeries": {
|
|
69356
|
+
capName: "device-history",
|
|
69357
|
+
capScope: "system",
|
|
69358
|
+
addonId: null,
|
|
69359
|
+
access: "view"
|
|
69360
|
+
},
|
|
69285
69361
|
"deviceHistory.listSeries": {
|
|
69286
69362
|
capName: "device-history",
|
|
69287
69363
|
capScope: "system",
|
|
@@ -79287,7 +79363,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
79287
79363
|
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
79288
79364
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
79289
79365
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
79290
|
-
([...RULE_TEXT], [...CONSUMABLE]),
|
|
79366
|
+
([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
|
|
79291
79367
|
([...RULE_TEXT], [...TANK]),
|
|
79292
79368
|
[...RULE_TEXT],
|
|
79293
79369
|
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
package/dist/addon.mjs
CHANGED
|
@@ -5442,7 +5442,7 @@ var ZodIssueCode = {
|
|
|
5442
5442
|
var ZodFirstPartyTypeKind;
|
|
5443
5443
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5444
5444
|
//#endregion
|
|
5445
|
-
//#region ../types/dist/sleep-
|
|
5445
|
+
//#region ../types/dist/sleep-CUp20JkO.mjs
|
|
5446
5446
|
/**
|
|
5447
5447
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5448
5448
|
* window to float samples (D455).
|
|
@@ -8334,7 +8334,11 @@ var ContributionSectionSchema = object({
|
|
|
8334
8334
|
literal(4)
|
|
8335
8335
|
]).optional(),
|
|
8336
8336
|
tab: string().optional(),
|
|
8337
|
-
location: _enum([
|
|
8337
|
+
location: _enum([
|
|
8338
|
+
"settings",
|
|
8339
|
+
"top-tab",
|
|
8340
|
+
"hero"
|
|
8341
|
+
]).optional(),
|
|
8338
8342
|
order: number().optional(),
|
|
8339
8343
|
fields: array(any())
|
|
8340
8344
|
});
|
|
@@ -13301,7 +13305,11 @@ var ConfigSectionWithValuesSchema = object({
|
|
|
13301
13305
|
literal(4)
|
|
13302
13306
|
]).optional(),
|
|
13303
13307
|
tab: string().optional(),
|
|
13304
|
-
location: _enum([
|
|
13308
|
+
location: _enum([
|
|
13309
|
+
"settings",
|
|
13310
|
+
"top-tab",
|
|
13311
|
+
"hero"
|
|
13312
|
+
]).optional(),
|
|
13305
13313
|
order: number().optional(),
|
|
13306
13314
|
fields: array(any())
|
|
13307
13315
|
});
|
|
@@ -17181,6 +17189,52 @@ var TierStatusSchema = object({
|
|
|
17181
17189
|
countedAt: number().nullable()
|
|
17182
17190
|
});
|
|
17183
17191
|
/** Operator/diagnostic view: rows per tier, last runs, refusals and drops since boot. */
|
|
17192
|
+
/**
|
|
17193
|
+
* Why a series is orphan. `device-gone`: its device is absent from the
|
|
17194
|
+
* successful device listings (the departure clock). `undeclared`: its `cap:`
|
|
17195
|
+
* key is declared by no capability any more (a field a cap removed).
|
|
17196
|
+
*/
|
|
17197
|
+
var DeviceHistoryOrphanReasonSchema = _enum(["device-gone", "undeclared"]);
|
|
17198
|
+
/** Rows held per stored tier. */
|
|
17199
|
+
var TierRowsSchema = object({
|
|
17200
|
+
raw: number().int(),
|
|
17201
|
+
"5m": number().int(),
|
|
17202
|
+
"1h": number().int(),
|
|
17203
|
+
"1d": number().int()
|
|
17204
|
+
});
|
|
17205
|
+
var OrphanSeriesSchema = object({
|
|
17206
|
+
seriesId: number().int(),
|
|
17207
|
+
deviceId: number().int(),
|
|
17208
|
+
key: string(),
|
|
17209
|
+
scope: string(),
|
|
17210
|
+
/** The metric's display name; `null` when its metric row is gone too. */
|
|
17211
|
+
displayName: string().nullable(),
|
|
17212
|
+
reason: DeviceHistoryOrphanReasonSchema,
|
|
17213
|
+
/** `device-gone`: since when the device has been absent; `null` otherwise. */
|
|
17214
|
+
missingSince: number().nullable(),
|
|
17215
|
+
firstTs: number(),
|
|
17216
|
+
lastTs: number(),
|
|
17217
|
+
rows: TierRowsSchema
|
|
17218
|
+
});
|
|
17219
|
+
var DeviceHistoryOrphanDeleteRefusalSchema = _enum([
|
|
17220
|
+
"not-found",
|
|
17221
|
+
"not-orphan",
|
|
17222
|
+
"failed"
|
|
17223
|
+
]);
|
|
17224
|
+
var OrphanDeleteEntrySchema = discriminatedUnion("ok", [object({
|
|
17225
|
+
seriesId: number().int(),
|
|
17226
|
+
ok: literal(true),
|
|
17227
|
+
deleted: TierRowsSchema
|
|
17228
|
+
}), object({
|
|
17229
|
+
seriesId: number().int(),
|
|
17230
|
+
ok: literal(false),
|
|
17231
|
+
reason: DeviceHistoryOrphanDeleteRefusalSchema
|
|
17232
|
+
})]);
|
|
17233
|
+
var OrphanListSchema = object({
|
|
17234
|
+
series: array(OrphanSeriesSchema).readonly(),
|
|
17235
|
+
/** More orphans exist than {@link DEVICE_HISTORY_ORPHAN_LIST_MAX}. */
|
|
17236
|
+
truncated: boolean()
|
|
17237
|
+
});
|
|
17184
17238
|
var DeviceHistoryStatusSchema = object({
|
|
17185
17239
|
startedAt: number(),
|
|
17186
17240
|
/** The store is declared, series loaded and the first reconcile has answered. */
|
|
@@ -17278,7 +17332,10 @@ method(object({ deviceId: number().int() }), array(SeriesInfoSchema).readonly())
|
|
|
17278
17332
|
}), object({ enabled: boolean() }), {
|
|
17279
17333
|
kind: "mutation",
|
|
17280
17334
|
auth: "admin"
|
|
17281
|
-
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" })
|
|
17335
|
+
}), method(object({}), DeviceHistoryStatusSchema, { auth: "admin" }), method(object({}), OrphanListSchema, { auth: "admin" }), method(object({ seriesIds: array(number().int()).min(1).max(50) }), object({ results: array(OrphanDeleteEntrySchema).readonly() }), {
|
|
17336
|
+
kind: "mutation",
|
|
17337
|
+
auth: "admin"
|
|
17338
|
+
});
|
|
17282
17339
|
var DeviceCaStatusSchema = discriminatedUnion("state", [
|
|
17283
17340
|
object({ state: literal("absent") }),
|
|
17284
17341
|
object({
|
|
@@ -55250,17 +55307,69 @@ var connectivityCapability = {
|
|
|
55250
55307
|
volatileStateFields: ["lastChangedAt"]
|
|
55251
55308
|
};
|
|
55252
55309
|
/**
|
|
55253
|
-
* Generic device-consumables capability —
|
|
55254
|
-
*
|
|
55255
|
-
* descaling cycles,
|
|
55256
|
-
*
|
|
55257
|
-
*
|
|
55258
|
-
*
|
|
55310
|
+
* Generic device-consumables capability — the ONE place a device reports what
|
|
55311
|
+
* it uses up or fills: wear parts (vacuum filters/brushes, cartridges,
|
|
55312
|
+
* descaling cycles), supplies it draws from (a vacuum's clean-water tank and
|
|
55313
|
+
* detergent, a dishwasher's salt and rinse aid) and waste it collects (a dirty
|
|
55314
|
+
* water tank, a dust bin). Each item carries its remaining life or fill and an
|
|
55315
|
+
* optional "Replaced" reset action. Device-agnostic: any provider that knows
|
|
55316
|
+
* its device tracks consumables registers it; the provider names each item
|
|
55317
|
+
* verbatim and says which `kind` it is.
|
|
55318
|
+
*
|
|
55319
|
+
* The admin UI renders it as ONE collapsible section directly under the
|
|
55320
|
+
* device page's hero card (`placement: 'hero'`), for every device bound to
|
|
55321
|
+
* this cap — never drawn by a device type's hero card itself (D915).
|
|
55259
55322
|
*
|
|
55260
55323
|
* Like `childLayout`, the cap is INERT until a provider sets items: no
|
|
55261
55324
|
* provider populates it by guessing (no HA inference). The UI renders a
|
|
55262
55325
|
* "No consumables reported" placeholder when `items` is empty.
|
|
55263
55326
|
*/
|
|
55327
|
+
/**
|
|
55328
|
+
* What an item IS, which decides which direction is bad:
|
|
55329
|
+
* - `wear` — a part that wears out (a brush, a filter); low life is bad.
|
|
55330
|
+
* - `supply` — something the device draws from (clean water, detergent,
|
|
55331
|
+
* salt, rinse aid); low or empty is bad.
|
|
55332
|
+
* - `waste` — something the device fills (dirty water, a dust bin); full is
|
|
55333
|
+
* bad.
|
|
55334
|
+
* Absent = `wear`.
|
|
55335
|
+
*/
|
|
55336
|
+
var ConsumableKindSchema = _enum([
|
|
55337
|
+
"wear",
|
|
55338
|
+
"supply",
|
|
55339
|
+
"waste"
|
|
55340
|
+
]);
|
|
55341
|
+
/**
|
|
55342
|
+
* What an item LOOKS like, which decides how a client draws it — independent
|
|
55343
|
+
* of `kind`, which decides which direction is bad:
|
|
55344
|
+
* - `part` — a part that wears (a brush, a filter, a mop pad): a wear bar,
|
|
55345
|
+
* remaining time and a reset.
|
|
55346
|
+
* - `tank` — a container of liquid (clean water, dirty water): a fill gauge.
|
|
55347
|
+
* - `product` — something bought and refilled (detergent, salt, rinse aid):
|
|
55348
|
+
* a stepped level and "refill".
|
|
55349
|
+
* - `bin` — a container that collects waste (a dust bin): a fill gauge
|
|
55350
|
+
* that warns when full.
|
|
55351
|
+
* Absent = derived from the kind ({@link consumableFormOf}).
|
|
55352
|
+
*/
|
|
55353
|
+
var ConsumableFormSchema = _enum([
|
|
55354
|
+
"part",
|
|
55355
|
+
"tank",
|
|
55356
|
+
"product",
|
|
55357
|
+
"bin"
|
|
55358
|
+
]);
|
|
55359
|
+
/** The provider's own discrete verdict on an item. */
|
|
55360
|
+
var ConsumableStatusSchema = _enum([
|
|
55361
|
+
"ok",
|
|
55362
|
+
"low",
|
|
55363
|
+
"empty",
|
|
55364
|
+
"full",
|
|
55365
|
+
"replace"
|
|
55366
|
+
]);
|
|
55367
|
+
_enum([
|
|
55368
|
+
"ok",
|
|
55369
|
+
"low",
|
|
55370
|
+
"empty",
|
|
55371
|
+
"full"
|
|
55372
|
+
]);
|
|
55264
55373
|
/** Units a remaining-life counter is reported in. Closed: the panel renders
|
|
55265
55374
|
* each. */
|
|
55266
55375
|
var ConsumableRemainingUnitSchema = _enum([
|
|
@@ -55275,18 +55384,23 @@ var ConsumableRemainingSchema = object({
|
|
|
55275
55384
|
unit: ConsumableRemainingUnitSchema
|
|
55276
55385
|
});
|
|
55277
55386
|
/** A single consumable item. Either a continuous `level` (remaining
|
|
55278
|
-
* life
|
|
55279
|
-
*
|
|
55280
|
-
* mutually exclusive; a provider may
|
|
55387
|
+
* life %, or fill % for a `supply` / `waste` item) or a discrete `status`
|
|
55388
|
+
* may be known — both may be null when a provider only knows the item
|
|
55389
|
+
* exists. `level` and `status` are not mutually exclusive; a provider may
|
|
55390
|
+
* report both. */
|
|
55281
55391
|
var ConsumableItemSchema = object({
|
|
55282
55392
|
/** Stable id, e.g. 'main-brush'. */
|
|
55283
55393
|
key: string().min(1),
|
|
55284
55394
|
/** Display name. */
|
|
55285
55395
|
label: string().min(1),
|
|
55286
|
-
/** Remaining life % when known (0..100). */
|
|
55396
|
+
/** Remaining life % (`wear`) or fill % (`supply`, `waste`) when known (0..100). */
|
|
55287
55397
|
level: number().min(0).max(100).nullable(),
|
|
55288
|
-
/**
|
|
55289
|
-
status:
|
|
55398
|
+
/** The provider's discrete verdict when known (binary mode). */
|
|
55399
|
+
status: ConsumableStatusSchema.nullable(),
|
|
55400
|
+
/** What the item is — decides whether low or full is bad. Absent = `wear`. */
|
|
55401
|
+
kind: ConsumableKindSchema.optional(),
|
|
55402
|
+
/** How the item is drawn (part, tank, product, bin). Absent = derived from `kind`. */
|
|
55403
|
+
form: ConsumableFormSchema.optional(),
|
|
55290
55404
|
/** Ms epoch of the last replace, when known. */
|
|
55291
55405
|
lastResetAt: number().nullable(),
|
|
55292
55406
|
/** Whether `reset()` is meaningful for this item. */
|
|
@@ -55309,7 +55423,7 @@ var consumablesCapability = {
|
|
|
55309
55423
|
kind: "widget",
|
|
55310
55424
|
widgetId: "host/consumables-panel",
|
|
55311
55425
|
tab: "consumables",
|
|
55312
|
-
|
|
55426
|
+
placement: "hero",
|
|
55313
55427
|
label: "Consumables",
|
|
55314
55428
|
order: 5
|
|
55315
55429
|
} },
|
|
@@ -55370,9 +55484,37 @@ reset: method(object({
|
|
|
55370
55484
|
*/
|
|
55371
55485
|
durability: "restored",
|
|
55372
55486
|
/**
|
|
55373
|
-
* History (D850):
|
|
55487
|
+
* History (D850, D917): one series per (item field, item `key`) — the item key
|
|
55488
|
+
* is the series scope, the item `label` names it. A vacuum tank's fill, a
|
|
55489
|
+
* brush's remaining life and a dishwasher's salt are each recorded the moment
|
|
55490
|
+
* their provider reports them; an item that appears later gets its series.
|
|
55374
55491
|
*/
|
|
55375
|
-
history:
|
|
55492
|
+
history: {
|
|
55493
|
+
fields: {},
|
|
55494
|
+
items: {
|
|
55495
|
+
path: "items",
|
|
55496
|
+
key: "key",
|
|
55497
|
+
label: "label",
|
|
55498
|
+
fields: {
|
|
55499
|
+
level: {
|
|
55500
|
+
kind: "gauge",
|
|
55501
|
+
unit: "%",
|
|
55502
|
+
deadband: 2,
|
|
55503
|
+
displayName: "Level"
|
|
55504
|
+
},
|
|
55505
|
+
status: {
|
|
55506
|
+
kind: "enum",
|
|
55507
|
+
displayName: "Status"
|
|
55508
|
+
},
|
|
55509
|
+
"remaining.value": {
|
|
55510
|
+
kind: "gauge",
|
|
55511
|
+
unitFrom: "remaining.unit",
|
|
55512
|
+
deadband: 1,
|
|
55513
|
+
displayName: "Remaining"
|
|
55514
|
+
}
|
|
55515
|
+
}
|
|
55516
|
+
}
|
|
55517
|
+
},
|
|
55376
55518
|
/** Clocks, not content: a re-read that changed no item costs no commit. */
|
|
55377
55519
|
volatileStateFields: ["lastChangedAt", "lastFetchedAt"]
|
|
55378
55520
|
};
|
|
@@ -55787,8 +55929,9 @@ onStatusChanged: { data: object({
|
|
|
55787
55929
|
volatileStateFields: ["lastChangedAt"]
|
|
55788
55930
|
};
|
|
55789
55931
|
/**
|
|
55790
|
-
* Smart-dishwasher cap — program lifecycle, door / remote-start gates
|
|
55791
|
-
*
|
|
55932
|
+
* Smart-dishwasher cap — program lifecycle, door / remote-start gates and
|
|
55933
|
+
* common program options. Salt and rinse aid are NOT here: they are items of
|
|
55934
|
+
* the device's `consumables` cap, like every other device's (D915).
|
|
55792
55935
|
*
|
|
55793
55936
|
* Sources: native Bosch Home Connect (`dishwasher` device type). Reusable
|
|
55794
55937
|
* by any integration that exposes the same program / option surface.
|
|
@@ -55836,11 +55979,6 @@ var DishwasherAvailabilitySchema = _enum([
|
|
|
55836
55979
|
"offline",
|
|
55837
55980
|
"description-missing"
|
|
55838
55981
|
]);
|
|
55839
|
-
var DishwasherConsumableLevelSchema = _enum([
|
|
55840
|
-
"ok",
|
|
55841
|
-
"low",
|
|
55842
|
-
"empty"
|
|
55843
|
-
]);
|
|
55844
55982
|
var DishwasherStatusSchema = object({
|
|
55845
55983
|
availability: DishwasherAvailabilitySchema,
|
|
55846
55984
|
/** Coarse state for compact surfaces; `unavailable` whenever the appliance state is not known. */
|
|
@@ -55873,8 +56011,6 @@ var DishwasherStatusSchema = object({
|
|
|
55873
56011
|
powerOn: boolean().nullable(),
|
|
55874
56012
|
/** The raw power state (`On`, `Off`, `Standby`, …); null when not known. */
|
|
55875
56013
|
powerState: string().nullable(),
|
|
55876
|
-
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55877
|
-
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55878
56014
|
/**
|
|
55879
56015
|
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
55880
56016
|
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
@@ -64690,60 +64826,17 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
64690
64826
|
auth: "admin",
|
|
64691
64827
|
access: "delete"
|
|
64692
64828
|
});
|
|
64693
|
-
/**
|
|
64694
|
-
* Robot-vacuum cap. Models HA `vacuum.*` entities — anything with a
|
|
64695
|
-
* cleaning lifecycle plus a return-to-base / locate surface and an
|
|
64696
|
-
* optional fan-speed selector.
|
|
64697
|
-
*
|
|
64698
|
-
* State follows HA's canonical vacuum lifecycle: `idle` / `cleaning` /
|
|
64699
|
-
* `paused` / `returning` / `docked` / `error`. `batteryLevel`
|
|
64700
|
-
* (0..100) is nullable — some vacuums don't report a battery
|
|
64701
|
-
* percentage. `fanSpeed` is the current speed token (provider-verbatim,
|
|
64702
|
-
* e.g. `'standard'` / `'turbo'`) and `availableFanSpeeds` lists the
|
|
64703
|
-
* tokens the hardware accepts so the UI renders only supported choices.
|
|
64704
|
-
*
|
|
64705
|
-
* The `setFanSpeed` method takes the bare `speed` token — the provider
|
|
64706
|
-
* validates it against the vacuum's own list. `locate` triggers the
|
|
64707
|
-
* find-me chirp; `returnToBase` sends it home.
|
|
64708
|
-
*
|
|
64709
|
-
* Consumable / waste tanks: `cleanWater` / `dirtyWater` / `detergent` /
|
|
64710
|
-
* `dustBin` each carry a nullable `{ level (0..100 %), status ('ok' |
|
|
64711
|
-
* 'low' | 'full') }` reading. Native providers (e.g. Dreame, Roborock)
|
|
64712
|
-
* SHOULD populate whichever tanks the hardware has — leave a field `null`
|
|
64713
|
-
* only when the device has no such tank at all, and use a `TankStatus`
|
|
64714
|
-
* with both inner fields `null` when the tank exists but its level is
|
|
64715
|
-
* currently unknown. HA `vacuum.*` entities expose no per-tank telemetry,
|
|
64716
|
-
* so the HA provider leaves all four `null`.
|
|
64717
|
-
*/
|
|
64718
|
-
var VacuumStateSchema = _enum([
|
|
64719
|
-
"idle",
|
|
64720
|
-
"cleaning",
|
|
64721
|
-
"paused",
|
|
64722
|
-
"returning",
|
|
64723
|
-
"docked",
|
|
64724
|
-
"drying",
|
|
64725
|
-
"error"
|
|
64726
|
-
]);
|
|
64727
|
-
/**
|
|
64728
|
-
* One consumable / waste tank on a robot vacuum (clean-water, dirty-water,
|
|
64729
|
-
* detergent or dust-bin). A tank can report a numeric fill `level` (0..100),
|
|
64730
|
-
* a discrete `status` (binary-style hardware), or both. Both `null` means the
|
|
64731
|
-
* level is currently unknown; the OWNING field being `null` means the
|
|
64732
|
-
* hardware has no such tank at all.
|
|
64733
|
-
*/
|
|
64734
|
-
var TankStatusSchema = object({
|
|
64735
|
-
/** Numeric fill 0..100 when the hardware reports a percentage; null otherwise. */
|
|
64736
|
-
level: number().min(0).max(100).nullable(),
|
|
64737
|
-
/** Discrete state when the hardware is binary-mode; null otherwise. */
|
|
64738
|
-
status: _enum([
|
|
64739
|
-
"ok",
|
|
64740
|
-
"low",
|
|
64741
|
-
"full"
|
|
64742
|
-
]).nullable()
|
|
64743
|
-
});
|
|
64744
64829
|
var VacuumControlStatusSchema = object({
|
|
64745
64830
|
/** Lifecycle state of the vacuum. */
|
|
64746
|
-
state:
|
|
64831
|
+
state: _enum([
|
|
64832
|
+
"idle",
|
|
64833
|
+
"cleaning",
|
|
64834
|
+
"paused",
|
|
64835
|
+
"returning",
|
|
64836
|
+
"docked",
|
|
64837
|
+
"drying",
|
|
64838
|
+
"error"
|
|
64839
|
+
]),
|
|
64747
64840
|
/** 0..100 battery percentage. Null when the device has no battery
|
|
64748
64841
|
* reading. */
|
|
64749
64842
|
batteryLevel: number().min(0).max(100).nullable(),
|
|
@@ -64752,14 +64845,6 @@ var VacuumControlStatusSchema = object({
|
|
|
64752
64845
|
fanSpeed: string().nullable(),
|
|
64753
64846
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
64754
64847
|
availableFanSpeeds: array(string()),
|
|
64755
|
-
/** Clean-water (mop) tank. Null when the hardware has no clean-water tank. */
|
|
64756
|
-
cleanWater: TankStatusSchema.nullable(),
|
|
64757
|
-
/** Dirty-water (recovery) tank. Null when the hardware has no dirty-water tank. */
|
|
64758
|
-
dirtyWater: TankStatusSchema.nullable(),
|
|
64759
|
-
/** Detergent tank. Null when the hardware has no detergent tank. */
|
|
64760
|
-
detergent: TankStatusSchema.nullable(),
|
|
64761
|
-
/** Dust bin. Null when the hardware has no dust bin. */
|
|
64762
|
-
dustBin: TankStatusSchema.nullable(),
|
|
64763
64848
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
64764
64849
|
progressPercent: number().min(0).max(100).nullable(),
|
|
64765
64850
|
/** Current error code (0 / null = no error). */
|
|
@@ -64821,35 +64906,14 @@ var vacuumControlCapability = {
|
|
|
64821
64906
|
*/
|
|
64822
64907
|
durability: "session",
|
|
64823
64908
|
/**
|
|
64824
|
-
* History (D850): recorded series.
|
|
64909
|
+
* History (D850): recorded series. The tanks moved to `consumables` (D915), whose
|
|
64910
|
+
* items are keyed by runtime ids and record no history.
|
|
64825
64911
|
*/
|
|
64826
|
-
history: { fields: {
|
|
64827
|
-
|
|
64828
|
-
|
|
64829
|
-
|
|
64830
|
-
|
|
64831
|
-
},
|
|
64832
|
-
"cleanWater.level": {
|
|
64833
|
-
kind: "gauge",
|
|
64834
|
-
unit: "%",
|
|
64835
|
-
deadband: 2
|
|
64836
|
-
},
|
|
64837
|
-
"dirtyWater.level": {
|
|
64838
|
-
kind: "gauge",
|
|
64839
|
-
unit: "%",
|
|
64840
|
-
deadband: 2
|
|
64841
|
-
},
|
|
64842
|
-
"detergent.level": {
|
|
64843
|
-
kind: "gauge",
|
|
64844
|
-
unit: "%",
|
|
64845
|
-
deadband: 2
|
|
64846
|
-
},
|
|
64847
|
-
"dustBin.level": {
|
|
64848
|
-
kind: "gauge",
|
|
64849
|
-
unit: "%",
|
|
64850
|
-
deadband: 2
|
|
64851
|
-
}
|
|
64852
|
-
} }
|
|
64912
|
+
history: { fields: { batteryLevel: {
|
|
64913
|
+
kind: "gauge",
|
|
64914
|
+
unit: "%",
|
|
64915
|
+
deadband: 2
|
|
64916
|
+
} } }
|
|
64853
64917
|
};
|
|
64854
64918
|
var ValveStatusSchema = object({
|
|
64855
64919
|
/** Lifecycle state of the valve. */
|
|
@@ -69243,6 +69307,12 @@ Object.freeze({
|
|
|
69243
69307
|
addonId: null,
|
|
69244
69308
|
access: "create"
|
|
69245
69309
|
},
|
|
69310
|
+
"deviceHistory.deleteOrphanSeries": {
|
|
69311
|
+
capName: "device-history",
|
|
69312
|
+
capScope: "system",
|
|
69313
|
+
addonId: null,
|
|
69314
|
+
access: "delete"
|
|
69315
|
+
},
|
|
69246
69316
|
"deviceHistory.getDeviceEnabled": {
|
|
69247
69317
|
capName: "device-history",
|
|
69248
69318
|
capScope: "system",
|
|
@@ -69261,6 +69331,12 @@ Object.freeze({
|
|
|
69261
69331
|
addonId: null,
|
|
69262
69332
|
access: "view"
|
|
69263
69333
|
},
|
|
69334
|
+
"deviceHistory.listOrphanSeries": {
|
|
69335
|
+
capName: "device-history",
|
|
69336
|
+
capScope: "system",
|
|
69337
|
+
addonId: null,
|
|
69338
|
+
access: "view"
|
|
69339
|
+
},
|
|
69264
69340
|
"deviceHistory.listSeries": {
|
|
69265
69341
|
capName: "device-history",
|
|
69266
69342
|
capScope: "system",
|
|
@@ -79266,7 +79342,7 @@ var STATE_SUMMARY_VARS = [
|
|
|
79266
79342
|
([...RULE_TEXT], [...COMBINED_ALARM]),
|
|
79267
79343
|
([...RULE_TEXT], [...DEVICE_EVENTS]),
|
|
79268
79344
|
([...RULE_TEXT], [...BATTERY, ...CONSUMABLE]),
|
|
79269
|
-
([...RULE_TEXT], [...CONSUMABLE]),
|
|
79345
|
+
([...RULE_TEXT], [...CONSUMABLE, ...TANK]),
|
|
79270
79346
|
([...RULE_TEXT], [...TANK]),
|
|
79271
79347
|
[...RULE_TEXT],
|
|
79272
79348
|
([...RULE_TEXT], [...UPDATES, ...ALERT_EPISODE]),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-wyze",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.156",
|
|
4
4
|
"description": "Wyze camera device-provider addon for CamStack — wraps the @apocaliss92/wyze-bridge-js P2P/DTLS client, feeding the stream-broker via the pull-rfc4571 lazy-publish path (a structural twin of addon-provider-reolink)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|