@camstack/addon-model-studio 1.1.313 → 1.1.314
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/CHANGELOG.md +6 -0
- package/dist/_stub.js +43 -43
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-vhAznt0g.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BtG6KzLk.mjs} +3 -3
- package/dist/{hostInit-BIVqb0f7.mjs → hostInit-XUNzuCDs.mjs} +2 -2
- package/dist/model-studio.addon.js +101 -115
- package/dist/model-studio.addon.mjs +101 -115
- package/dist/remoteEntry.js +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-CeE6-aSe.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-D2YHXWx9.mjs} +1 -1
- package/package.json +1 -1
|
@@ -5816,7 +5816,7 @@ var ZodIssueCode = {
|
|
|
5816
5816
|
var ZodFirstPartyTypeKind;
|
|
5817
5817
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5818
5818
|
//#endregion
|
|
5819
|
-
//#region ../types/dist/sleep-
|
|
5819
|
+
//#region ../types/dist/sleep-Crlmu_tO.mjs
|
|
5820
5820
|
/**
|
|
5821
5821
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5822
5822
|
* window to float samples (D455).
|
|
@@ -9136,11 +9136,11 @@ var CAP_NAMES = Object.freeze([
|
|
|
9136
9136
|
Object.freeze({
|
|
9137
9137
|
"air-quality-sensor": [
|
|
9138
9138
|
{
|
|
9139
|
-
"path": "
|
|
9139
|
+
"path": "co2",
|
|
9140
9140
|
"valueType": "number"
|
|
9141
9141
|
},
|
|
9142
9142
|
{
|
|
9143
|
-
"path": "
|
|
9143
|
+
"path": "voc",
|
|
9144
9144
|
"valueType": "number"
|
|
9145
9145
|
},
|
|
9146
9146
|
{
|
|
@@ -9190,7 +9190,7 @@ Object.freeze({
|
|
|
9190
9190
|
}
|
|
9191
9191
|
],
|
|
9192
9192
|
"ambient-light-sensor": [{
|
|
9193
|
-
"path": "
|
|
9193
|
+
"path": "illuminance",
|
|
9194
9194
|
"valueType": "number"
|
|
9195
9195
|
}],
|
|
9196
9196
|
"audio-metrics": [
|
|
@@ -9251,7 +9251,7 @@ Object.freeze({
|
|
|
9251
9251
|
],
|
|
9252
9252
|
"battery": [
|
|
9253
9253
|
{
|
|
9254
|
-
"path": "
|
|
9254
|
+
"path": "level",
|
|
9255
9255
|
"valueType": "number"
|
|
9256
9256
|
},
|
|
9257
9257
|
{
|
|
@@ -9273,7 +9273,7 @@ Object.freeze({
|
|
|
9273
9273
|
"valueType": "number"
|
|
9274
9274
|
},
|
|
9275
9275
|
{
|
|
9276
|
-
"path": "
|
|
9276
|
+
"path": "voltage",
|
|
9277
9277
|
"valueType": "number"
|
|
9278
9278
|
},
|
|
9279
9279
|
{
|
|
@@ -9294,7 +9294,7 @@ Object.freeze({
|
|
|
9294
9294
|
"valueType": "boolean"
|
|
9295
9295
|
}],
|
|
9296
9296
|
"brightness": [{
|
|
9297
|
-
"path": "
|
|
9297
|
+
"path": "level",
|
|
9298
9298
|
"valueType": "number"
|
|
9299
9299
|
}],
|
|
9300
9300
|
"broker": [{
|
|
@@ -9495,7 +9495,7 @@ Object.freeze({
|
|
|
9495
9495
|
"valueType": "number"
|
|
9496
9496
|
},
|
|
9497
9497
|
{
|
|
9498
|
-
"path": "
|
|
9498
|
+
"path": "colorTemperature",
|
|
9499
9499
|
"valueType": "number"
|
|
9500
9500
|
}
|
|
9501
9501
|
],
|
|
@@ -9674,15 +9674,15 @@ Object.freeze({
|
|
|
9674
9674
|
"valueType": "string"
|
|
9675
9675
|
},
|
|
9676
9676
|
{
|
|
9677
|
-
"path": "
|
|
9677
|
+
"path": "remaining",
|
|
9678
9678
|
"valueType": "number"
|
|
9679
9679
|
},
|
|
9680
9680
|
{
|
|
9681
|
-
"path": "
|
|
9681
|
+
"path": "delayedStart",
|
|
9682
9682
|
"valueType": "number"
|
|
9683
9683
|
},
|
|
9684
9684
|
{
|
|
9685
|
-
"path": "
|
|
9685
|
+
"path": "progress",
|
|
9686
9686
|
"valueType": "number"
|
|
9687
9687
|
},
|
|
9688
9688
|
{
|
|
@@ -9796,7 +9796,7 @@ Object.freeze({
|
|
|
9796
9796
|
],
|
|
9797
9797
|
"fan-control": [
|
|
9798
9798
|
{
|
|
9799
|
-
"path": "
|
|
9799
|
+
"path": "speed",
|
|
9800
9800
|
"valueType": "number"
|
|
9801
9801
|
},
|
|
9802
9802
|
{
|
|
@@ -9896,7 +9896,7 @@ Object.freeze({
|
|
|
9896
9896
|
}
|
|
9897
9897
|
],
|
|
9898
9898
|
"humidity-sensor": [{
|
|
9899
|
-
"path": "
|
|
9899
|
+
"path": "humidity",
|
|
9900
9900
|
"valueType": "number"
|
|
9901
9901
|
}],
|
|
9902
9902
|
"image": [{
|
|
@@ -10006,7 +10006,7 @@ Object.freeze({
|
|
|
10006
10006
|
"valueType": "number"
|
|
10007
10007
|
},
|
|
10008
10008
|
{
|
|
10009
|
-
"path": "
|
|
10009
|
+
"path": "progress",
|
|
10010
10010
|
"valueType": "number"
|
|
10011
10011
|
},
|
|
10012
10012
|
{
|
|
@@ -10085,11 +10085,11 @@ Object.freeze({
|
|
|
10085
10085
|
"valueType": "string"
|
|
10086
10086
|
},
|
|
10087
10087
|
{
|
|
10088
|
-
"path": "
|
|
10088
|
+
"path": "position",
|
|
10089
10089
|
"valueType": "number"
|
|
10090
10090
|
},
|
|
10091
10091
|
{
|
|
10092
|
-
"path": "
|
|
10092
|
+
"path": "duration",
|
|
10093
10093
|
"valueType": "number"
|
|
10094
10094
|
},
|
|
10095
10095
|
{
|
|
@@ -10191,11 +10191,11 @@ Object.freeze({
|
|
|
10191
10191
|
]
|
|
10192
10192
|
},
|
|
10193
10193
|
{
|
|
10194
|
-
"path": "
|
|
10194
|
+
"path": "signal",
|
|
10195
10195
|
"valueType": "number"
|
|
10196
10196
|
},
|
|
10197
10197
|
{
|
|
10198
|
-
"path": "
|
|
10198
|
+
"path": "rssi",
|
|
10199
10199
|
"valueType": "number"
|
|
10200
10200
|
},
|
|
10201
10201
|
{
|
|
@@ -10326,23 +10326,23 @@ Object.freeze({
|
|
|
10326
10326
|
],
|
|
10327
10327
|
"power-meter": [
|
|
10328
10328
|
{
|
|
10329
|
-
"path": "
|
|
10329
|
+
"path": "power",
|
|
10330
10330
|
"valueType": "number"
|
|
10331
10331
|
},
|
|
10332
10332
|
{
|
|
10333
|
-
"path": "
|
|
10333
|
+
"path": "energy",
|
|
10334
10334
|
"valueType": "number"
|
|
10335
10335
|
},
|
|
10336
10336
|
{
|
|
10337
|
-
"path": "
|
|
10337
|
+
"path": "voltage",
|
|
10338
10338
|
"valueType": "number"
|
|
10339
10339
|
},
|
|
10340
10340
|
{
|
|
10341
|
-
"path": "
|
|
10341
|
+
"path": "current",
|
|
10342
10342
|
"valueType": "number"
|
|
10343
10343
|
},
|
|
10344
10344
|
{
|
|
10345
|
-
"path": "
|
|
10345
|
+
"path": "apparentPower",
|
|
10346
10346
|
"valueType": "number"
|
|
10347
10347
|
},
|
|
10348
10348
|
{
|
|
@@ -10370,14 +10370,10 @@ Object.freeze({
|
|
|
10370
10370
|
{
|
|
10371
10371
|
"path": "gps.accuracyMeters",
|
|
10372
10372
|
"valueType": "number"
|
|
10373
|
-
},
|
|
10374
|
-
{
|
|
10375
|
-
"path": "batteryPercent",
|
|
10376
|
-
"valueType": "number"
|
|
10377
10373
|
}
|
|
10378
10374
|
],
|
|
10379
10375
|
"pressure-sensor": [{
|
|
10380
|
-
"path": "
|
|
10376
|
+
"path": "pressure",
|
|
10381
10377
|
"valueType": "number"
|
|
10382
10378
|
}],
|
|
10383
10379
|
"privacy-mask": [{
|
|
@@ -10691,7 +10687,7 @@ Object.freeze({
|
|
|
10691
10687
|
"valueType": "boolean"
|
|
10692
10688
|
}],
|
|
10693
10689
|
"temperature-sensor": [{
|
|
10694
|
-
"path": "
|
|
10690
|
+
"path": "temperature",
|
|
10695
10691
|
"valueType": "number"
|
|
10696
10692
|
}],
|
|
10697
10693
|
"update": [
|
|
@@ -10739,7 +10735,7 @@ Object.freeze({
|
|
|
10739
10735
|
"valueType": "string"
|
|
10740
10736
|
},
|
|
10741
10737
|
{
|
|
10742
|
-
"path": "
|
|
10738
|
+
"path": "progress",
|
|
10743
10739
|
"valueType": "number"
|
|
10744
10740
|
},
|
|
10745
10741
|
{
|
|
@@ -11214,7 +11210,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11214
11210
|
return DeviceRole;
|
|
11215
11211
|
}({});
|
|
11216
11212
|
//#endregion
|
|
11217
|
-
//#region ../types/dist/composition-
|
|
11213
|
+
//#region ../types/dist/composition-CZImLpOI.mjs
|
|
11218
11214
|
/**
|
|
11219
11215
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11220
11216
|
*
|
|
@@ -19000,7 +18996,7 @@ var CompositionEventPlanSchema = object({
|
|
|
19000
18996
|
stateField: string(),
|
|
19001
18997
|
fieldKey: string()
|
|
19002
18998
|
});
|
|
19003
|
-
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.
|
|
18999
|
+
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
|
|
19004
19000
|
var CompositionProblemSchema = object({
|
|
19005
19001
|
code: _enum([
|
|
19006
19002
|
"reserved-variant",
|
|
@@ -19319,7 +19315,7 @@ var GROUP_TEMPLATES = [
|
|
|
19319
19315
|
summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
|
|
19320
19316
|
role: DeviceRole.TemperatureSensor,
|
|
19321
19317
|
outputCap: "temperature-sensor",
|
|
19322
|
-
outputField: "
|
|
19318
|
+
outputField: "temperature",
|
|
19323
19319
|
quantity: "temperature",
|
|
19324
19320
|
defaultAggregate: "mean",
|
|
19325
19321
|
empty: "null",
|
|
@@ -19330,7 +19326,7 @@ var GROUP_TEMPLATES = [
|
|
|
19330
19326
|
summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19331
19327
|
role: DeviceRole.HumiditySensor,
|
|
19332
19328
|
outputCap: "humidity-sensor",
|
|
19333
|
-
outputField: "
|
|
19329
|
+
outputField: "humidity",
|
|
19334
19330
|
quantity: "humidity",
|
|
19335
19331
|
defaultAggregate: "mean",
|
|
19336
19332
|
empty: "null",
|
|
@@ -19341,7 +19337,7 @@ var GROUP_TEMPLATES = [
|
|
|
19341
19337
|
summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
|
|
19342
19338
|
role: DeviceRole.PressureSensor,
|
|
19343
19339
|
outputCap: "pressure-sensor",
|
|
19344
|
-
outputField: "
|
|
19340
|
+
outputField: "pressure",
|
|
19345
19341
|
quantity: "pressure",
|
|
19346
19342
|
defaultAggregate: "mean",
|
|
19347
19343
|
empty: "null",
|
|
@@ -19352,7 +19348,7 @@ var GROUP_TEMPLATES = [
|
|
|
19352
19348
|
summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
|
|
19353
19349
|
role: DeviceRole.AmbientLightSensor,
|
|
19354
19350
|
outputCap: "ambient-light-sensor",
|
|
19355
|
-
outputField: "
|
|
19351
|
+
outputField: "illuminance",
|
|
19356
19352
|
quantity: "illuminance",
|
|
19357
19353
|
defaultAggregate: "mean",
|
|
19358
19354
|
empty: "null",
|
|
@@ -19363,7 +19359,7 @@ var GROUP_TEMPLATES = [
|
|
|
19363
19359
|
summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
|
|
19364
19360
|
role: DeviceRole.PowerSensor,
|
|
19365
19361
|
outputCap: "power-meter",
|
|
19366
|
-
outputField: "
|
|
19362
|
+
outputField: "power",
|
|
19367
19363
|
quantity: "power",
|
|
19368
19364
|
defaultAggregate: "sum",
|
|
19369
19365
|
empty: "omit",
|
|
@@ -19374,7 +19370,7 @@ var GROUP_TEMPLATES = [
|
|
|
19374
19370
|
summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
|
|
19375
19371
|
role: DeviceRole.EnergySensor,
|
|
19376
19372
|
outputCap: "power-meter",
|
|
19377
|
-
outputField: "
|
|
19373
|
+
outputField: "energy",
|
|
19378
19374
|
quantity: "energy",
|
|
19379
19375
|
defaultAggregate: "sum",
|
|
19380
19376
|
empty: "omit",
|
|
@@ -19385,7 +19381,7 @@ var GROUP_TEMPLATES = [
|
|
|
19385
19381
|
summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19386
19382
|
role: DeviceRole.BatterySensor,
|
|
19387
19383
|
outputCap: "battery",
|
|
19388
|
-
outputField: "
|
|
19384
|
+
outputField: "level",
|
|
19389
19385
|
quantity: "percentage",
|
|
19390
19386
|
defaultAggregate: "mean",
|
|
19391
19387
|
empty: "null",
|
|
@@ -57537,9 +57533,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
57537
57533
|
}), LogStreamEntrySchema, { kind: "subscription" });
|
|
57538
57534
|
object({
|
|
57539
57535
|
/** Carbon dioxide concentration in ppm. */
|
|
57540
|
-
|
|
57536
|
+
co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
|
|
57541
57537
|
/** Total volatile organic compounds in ppb. */
|
|
57542
|
-
|
|
57538
|
+
voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
|
|
57543
57539
|
/** Particulate matter ≤ 2.5 μm in µg/m³. */
|
|
57544
57540
|
pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
|
|
57545
57541
|
/** Particulate matter ≤ 10 μm in µg/m³. */
|
|
@@ -57552,7 +57548,7 @@ object({
|
|
|
57552
57548
|
DeviceType.Sensor;
|
|
57553
57549
|
object({
|
|
57554
57550
|
/** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
|
|
57555
|
-
|
|
57551
|
+
illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
|
|
57556
57552
|
precision: 0,
|
|
57557
57553
|
label: "Illuminance"
|
|
57558
57554
|
})),
|
|
@@ -57780,7 +57776,7 @@ var BatteryStatusSchema = object({
|
|
|
57780
57776
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
57781
57777
|
* declines to band a non-finite reading, which is the correct shape.
|
|
57782
57778
|
*/
|
|
57783
|
-
|
|
57779
|
+
level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
|
|
57784
57780
|
/**
|
|
57785
57781
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
57786
57782
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -57790,7 +57786,7 @@ var BatteryStatusSchema = object({
|
|
|
57790
57786
|
* `'unknown'` is the absence of an answer: the provider has not read the
|
|
57791
57787
|
* power fields yet, or the firmware reported neither. Before it existed,
|
|
57792
57788
|
* two unreadable fields produced `'none'`, and a camera nobody had reached
|
|
57793
|
-
* was drawn "on battery alone" — the same D315 defect `
|
|
57789
|
+
* was drawn "on battery alone" — the same D315 defect `level` closed
|
|
57794
57790
|
* by going nullable. Consumers SKIP it (no charger state published, no
|
|
57795
57791
|
* glyph, no HomeKit ChargingState) rather than coerce it either way.
|
|
57796
57792
|
*/
|
|
@@ -57814,7 +57810,7 @@ var BatteryStatusSchema = object({
|
|
|
57814
57810
|
* that only report charge. A second reading on this cap, not a second
|
|
57815
57811
|
* `numeric-sensor` on the same device.
|
|
57816
57812
|
*/
|
|
57817
|
-
|
|
57813
|
+
voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
57818
57814
|
/**
|
|
57819
57815
|
* Ms epoch of the last time the device PROVED it was reachable — a
|
|
57820
57816
|
* completed firmware round-trip, an observed wake, or an inbound push
|
|
@@ -57848,7 +57844,7 @@ var BatteryStatusSchema = object({
|
|
|
57848
57844
|
/**
|
|
57849
57845
|
* True when the source is a BINARY low-battery indicator (HA
|
|
57850
57846
|
* `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
|
|
57851
|
-
* charge level — `
|
|
57847
|
+
* charge level — `level` is then a coarse stand-in (100 = normal,
|
|
57852
57848
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
57853
57849
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
57854
57850
|
*/
|
|
@@ -57874,19 +57870,19 @@ object({
|
|
|
57874
57870
|
DeviceType.Sensor;
|
|
57875
57871
|
object({
|
|
57876
57872
|
/** Current level as 0..100 inclusive. Firmware-reported. */
|
|
57877
|
-
|
|
57873
|
+
level: number().min(0).max(100).meta(readingMeta("percentage")),
|
|
57878
57874
|
/** Ms epoch of the last operator-driven change. Useful for UI freshness. */
|
|
57879
57875
|
lastChangedAt: number()
|
|
57880
57876
|
});
|
|
57881
57877
|
DeviceType.Light, method(object({
|
|
57882
57878
|
deviceId: number().int().nonnegative(),
|
|
57883
|
-
|
|
57879
|
+
level: number().min(0).max(100)
|
|
57884
57880
|
}), _void(), {
|
|
57885
57881
|
kind: "mutation",
|
|
57886
57882
|
auth: "protected"
|
|
57887
57883
|
}), object({
|
|
57888
57884
|
deviceId: number(),
|
|
57889
|
-
|
|
57885
|
+
level: number().min(0).max(100),
|
|
57890
57886
|
lastChangedAt: number()
|
|
57891
57887
|
});
|
|
57892
57888
|
DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
@@ -58387,11 +58383,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
|
|
|
58387
58383
|
}),
|
|
58388
58384
|
object({
|
|
58389
58385
|
mode: literal("mired"),
|
|
58390
|
-
|
|
58386
|
+
colorTemperature: number().int().min(50).max(1e3)
|
|
58391
58387
|
})
|
|
58392
58388
|
]);
|
|
58393
58389
|
object({
|
|
58394
|
-
/** Active color mode — which of `rgb` / `hsv` / `
|
|
58390
|
+
/** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
|
|
58395
58391
|
* the bulb's current state. */
|
|
58396
58392
|
mode: _enum([
|
|
58397
58393
|
"rgb",
|
|
@@ -58403,7 +58399,7 @@ object({
|
|
|
58403
58399
|
/** Populated when `mode === 'hsv'`. */
|
|
58404
58400
|
hsv: HsvTripletSchema.optional(),
|
|
58405
58401
|
/** Populated when `mode === 'mired'`. */
|
|
58406
|
-
|
|
58402
|
+
colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
|
|
58407
58403
|
/** Ms epoch of the last operator-driven change. */
|
|
58408
58404
|
lastChangedAt: number()
|
|
58409
58405
|
});
|
|
@@ -58422,7 +58418,7 @@ DeviceType.Light, method(object({
|
|
|
58422
58418
|
]),
|
|
58423
58419
|
rgb: RgbTripletSchema.optional(),
|
|
58424
58420
|
hsv: HsvTripletSchema.optional(),
|
|
58425
|
-
|
|
58421
|
+
colorTemperature: number().int().optional(),
|
|
58426
58422
|
lastChangedAt: number()
|
|
58427
58423
|
});
|
|
58428
58424
|
var ConnectionTestOutcomeSchema = discriminatedUnion("outcome", [
|
|
@@ -58848,11 +58844,11 @@ object({
|
|
|
58848
58844
|
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
58849
58845
|
availablePrograms: array(string()),
|
|
58850
58846
|
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
58851
|
-
|
|
58847
|
+
remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
58852
58848
|
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
58853
|
-
|
|
58849
|
+
delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
58854
58850
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
58855
|
-
|
|
58851
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
58856
58852
|
/** True when the door is reported open; null when the door state is not known. */
|
|
58857
58853
|
doorOpen: boolean().nullable(),
|
|
58858
58854
|
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
@@ -59470,7 +59466,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
|
|
|
59470
59466
|
object({
|
|
59471
59467
|
/** Active speed as 0..100 inclusive. Null when the device has no
|
|
59472
59468
|
* speed surface (single-speed fan). */
|
|
59473
|
-
|
|
59469
|
+
speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
59474
59470
|
/** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
|
|
59475
59471
|
* a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
|
|
59476
59472
|
percentageStep: number().positive().optional().meta(readingMeta("percentage")),
|
|
@@ -59490,7 +59486,7 @@ object({
|
|
|
59490
59486
|
});
|
|
59491
59487
|
DeviceType.Fan, method(object({
|
|
59492
59488
|
deviceId: number().int().nonnegative(),
|
|
59493
|
-
|
|
59489
|
+
speed: number().min(0).max(100)
|
|
59494
59490
|
}), _void(), {
|
|
59495
59491
|
kind: "mutation",
|
|
59496
59492
|
auth: "protected"
|
|
@@ -59673,7 +59669,7 @@ DeviceType.Humidifier, method(object({
|
|
|
59673
59669
|
});
|
|
59674
59670
|
object({
|
|
59675
59671
|
/** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
|
|
59676
|
-
|
|
59672
|
+
humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
|
|
59677
59673
|
precision: 0,
|
|
59678
59674
|
label: "Humidity"
|
|
59679
59675
|
})),
|
|
@@ -60116,7 +60112,7 @@ object({
|
|
|
60116
60112
|
batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
60117
60113
|
/** 0..100 mowing-completion percentage of the current task, or null when no
|
|
60118
60114
|
* task is active / progress is unavailable. */
|
|
60119
|
-
|
|
60115
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
60120
60116
|
/** Current device/event code (dynamic — mostly status, sometimes an error),
|
|
60121
60117
|
* or null when unknown. */
|
|
60122
60118
|
currentCode: number().nullable().meta(readingMeta("none")),
|
|
@@ -60606,10 +60602,10 @@ object({
|
|
|
60606
60602
|
currentMedia: MediaInfoSchema.nullable(),
|
|
60607
60603
|
/** Current playback position in ms. Null when not seekable or
|
|
60608
60604
|
* nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
|
|
60609
|
-
|
|
60605
|
+
position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
60610
60606
|
/** Total duration of the current media in ms. Null when unknown
|
|
60611
60607
|
* (live stream) or nothing is playing. */
|
|
60612
|
-
|
|
60608
|
+
duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
60613
60609
|
/** Shuffle toggle. Null when no shuffle surface.
|
|
60614
60610
|
* Pair with `DeviceFeature.MediaPlayerShuffle`. */
|
|
60615
60611
|
shuffle: boolean().nullable(),
|
|
@@ -60636,7 +60632,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
|
|
|
60636
60632
|
auth: "protected"
|
|
60637
60633
|
}), method(object({
|
|
60638
60634
|
deviceId: number().int().nonnegative(),
|
|
60639
|
-
|
|
60635
|
+
position: number().int().nonnegative()
|
|
60640
60636
|
}), _void(), {
|
|
60641
60637
|
kind: "mutation",
|
|
60642
60638
|
auth: "protected"
|
|
@@ -61309,9 +61305,9 @@ var NetworkLinkStatusSchema = object({
|
|
|
61309
61305
|
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
61310
61306
|
* SKIP a null rather than coerce it.
|
|
61311
61307
|
*/
|
|
61312
|
-
|
|
61308
|
+
signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
61313
61309
|
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
61314
|
-
|
|
61310
|
+
rssi: number().optional().meta(readingMeta("signal-level")),
|
|
61315
61311
|
/** Network name of a wireless link, when the firmware reports it. */
|
|
61316
61312
|
ssid: string().optional(),
|
|
61317
61313
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
@@ -62461,16 +62457,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
62461
62457
|
auth: "admin"
|
|
62462
62458
|
});
|
|
62463
62459
|
object({
|
|
62464
|
-
/** Instantaneous power draw
|
|
62465
|
-
|
|
62460
|
+
/** Instantaneous power draw (watts). */
|
|
62461
|
+
power: number().optional().meta(readingMeta("power", { label: "Power" })),
|
|
62466
62462
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
62467
|
-
|
|
62468
|
-
/** Voltage
|
|
62469
|
-
|
|
62463
|
+
energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
|
|
62464
|
+
/** Voltage (volts). */
|
|
62465
|
+
voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
62470
62466
|
/** Current in amperes. */
|
|
62471
|
-
|
|
62467
|
+
current: number().optional().meta(readingMeta("current", { label: "Current" })),
|
|
62472
62468
|
/** Apparent power in volt-amperes. */
|
|
62473
|
-
|
|
62469
|
+
apparentPower: number().optional().meta(readingMeta("apparent-power")),
|
|
62474
62470
|
/** Power factor (0..1) if reported. */
|
|
62475
62471
|
powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
|
|
62476
62472
|
/** Ms epoch when the slice was last updated. */
|
|
@@ -62525,16 +62521,13 @@ object({
|
|
|
62525
62521
|
location: string().nullable(),
|
|
62526
62522
|
/** GPS coordinates when available. Null otherwise. */
|
|
62527
62523
|
gps: GpsLocationSchema.nullable(),
|
|
62528
|
-
/** Optional battery level of the tracking device (0..100). Null
|
|
62529
|
-
* when not reported. */
|
|
62530
|
-
batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
62531
62524
|
/** Ms epoch when the slice was last updated. */
|
|
62532
62525
|
lastChangedAt: number()
|
|
62533
62526
|
});
|
|
62534
62527
|
DeviceType.Presence;
|
|
62535
62528
|
object({
|
|
62536
62529
|
/** Current pressure in hPa. `null` when the sample was refused (D393). */
|
|
62537
|
-
|
|
62530
|
+
pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
|
|
62538
62531
|
/** Ms epoch when the slice was last updated. */
|
|
62539
62532
|
lastFetchedAt: number()
|
|
62540
62533
|
});
|
|
@@ -65537,7 +65530,7 @@ object({
|
|
|
65537
65530
|
DeviceType.Sensor;
|
|
65538
65531
|
object({
|
|
65539
65532
|
/** Current temperature in Celsius. `null` when the sample was refused (D393). */
|
|
65540
|
-
|
|
65533
|
+
temperature: number().nullable().meta(readingMeta("temperature", {
|
|
65541
65534
|
precision: 1,
|
|
65542
65535
|
label: "Temperature"
|
|
65543
65536
|
})),
|
|
@@ -65801,7 +65794,7 @@ object({
|
|
|
65801
65794
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
65802
65795
|
availableFanSpeeds: array(string()),
|
|
65803
65796
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
65804
|
-
|
|
65797
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65805
65798
|
/** Current error code (0 / null = no error). */
|
|
65806
65799
|
errorCode: number().nullable().meta(readingMeta("none")),
|
|
65807
65800
|
/** Human label for {@link errorCode}, or null when none / undecodable. */
|
|
@@ -76869,7 +76862,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76869
76862
|
label: t("Full brightness", "Luminosità massima"),
|
|
76870
76863
|
phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
|
|
76871
76864
|
icon: "sun",
|
|
76872
|
-
args: {
|
|
76865
|
+
args: { level: 100 }
|
|
76873
76866
|
},
|
|
76874
76867
|
{
|
|
76875
76868
|
id: "brightness.half",
|
|
@@ -76877,7 +76870,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76877
76870
|
label: t("Half brightness", "Luminosità a metà"),
|
|
76878
76871
|
phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
|
|
76879
76872
|
icon: "sun-dim",
|
|
76880
|
-
args: {
|
|
76873
|
+
args: { level: 50 }
|
|
76881
76874
|
},
|
|
76882
76875
|
{
|
|
76883
76876
|
id: "brightness.off",
|
|
@@ -76885,16 +76878,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76885
76878
|
label: t("Brightness off", "Luminosità a zero"),
|
|
76886
76879
|
phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
|
|
76887
76880
|
icon: "lightbulb-off",
|
|
76888
|
-
args: {
|
|
76881
|
+
args: { level: 0 }
|
|
76889
76882
|
},
|
|
76890
76883
|
{
|
|
76891
76884
|
id: "brightness.set",
|
|
76892
76885
|
method: "setBrightness",
|
|
76893
76886
|
label: t("Set brightness", "Imposta la luminosità"),
|
|
76894
|
-
phrase: t("Set the brightness of {device} to {
|
|
76887
|
+
phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
|
|
76895
76888
|
icon: "sun-medium",
|
|
76896
76889
|
openArgs: [{
|
|
76897
|
-
key: "
|
|
76890
|
+
key: "level",
|
|
76898
76891
|
label: PERCENT,
|
|
76899
76892
|
offer: {
|
|
76900
76893
|
kind: "number",
|
|
@@ -76908,13 +76901,13 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76908
76901
|
],
|
|
76909
76902
|
state: [{
|
|
76910
76903
|
kind: "numeric",
|
|
76911
|
-
field: "
|
|
76904
|
+
field: "level",
|
|
76912
76905
|
quantity: t("the brightness", "la luminosità"),
|
|
76913
76906
|
label: t("Brightness", "Luminosità"),
|
|
76914
76907
|
unit: "%",
|
|
76915
76908
|
icon: "sun"
|
|
76916
76909
|
}],
|
|
76917
|
-
events: { onBrightnessChanged: { notOperatorFacing: "the `
|
|
76910
|
+
events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
|
|
76918
76911
|
},
|
|
76919
76912
|
color: {
|
|
76920
76913
|
scope: "device",
|
|
@@ -76928,7 +76921,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76928
76921
|
icon: "sun",
|
|
76929
76922
|
args: { color: {
|
|
76930
76923
|
mode: "mired",
|
|
76931
|
-
|
|
76924
|
+
colorTemperature: 370
|
|
76932
76925
|
} }
|
|
76933
76926
|
},
|
|
76934
76927
|
{
|
|
@@ -76939,7 +76932,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76939
76932
|
icon: "snowflake",
|
|
76940
76933
|
args: { color: {
|
|
76941
76934
|
mode: "mired",
|
|
76942
|
-
|
|
76935
|
+
colorTemperature: 200
|
|
76943
76936
|
} }
|
|
76944
76937
|
},
|
|
76945
76938
|
{
|
|
@@ -77553,7 +77546,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77553
77546
|
label: t("Fan off", "Ventilatore spento"),
|
|
77554
77547
|
phrase: t("Stop {device}", "Ferma {device}"),
|
|
77555
77548
|
icon: "power-off",
|
|
77556
|
-
args: {
|
|
77549
|
+
args: { speed: 0 }
|
|
77557
77550
|
},
|
|
77558
77551
|
{
|
|
77559
77552
|
id: "fan.full",
|
|
@@ -77561,16 +77554,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77561
77554
|
label: t("Fan full", "Ventilatore al massimo"),
|
|
77562
77555
|
phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
|
|
77563
77556
|
icon: "fan",
|
|
77564
|
-
args: {
|
|
77557
|
+
args: { speed: 100 }
|
|
77565
77558
|
},
|
|
77566
77559
|
{
|
|
77567
77560
|
id: "fan.speed",
|
|
77568
77561
|
method: "setPercentage",
|
|
77569
77562
|
label: t("Set speed", "Imposta la velocità"),
|
|
77570
|
-
phrase: t("Set the speed of {device} to {
|
|
77563
|
+
phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
|
|
77571
77564
|
icon: "fan",
|
|
77572
77565
|
openArgs: [{
|
|
77573
|
-
key: "
|
|
77566
|
+
key: "speed",
|
|
77574
77567
|
label: t("Speed", "Velocità"),
|
|
77575
77568
|
offer: {
|
|
77576
77569
|
kind: "number",
|
|
@@ -77632,7 +77625,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77632
77625
|
],
|
|
77633
77626
|
state: [{
|
|
77634
77627
|
kind: "numeric",
|
|
77635
|
-
field: "
|
|
77628
|
+
field: "speed",
|
|
77636
77629
|
quantity: t("the speed", "la velocità"),
|
|
77637
77630
|
label: t("Speed", "Velocità"),
|
|
77638
77631
|
unit: "%",
|
|
@@ -78430,7 +78423,7 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78430
78423
|
},
|
|
78431
78424
|
{
|
|
78432
78425
|
kind: "numeric",
|
|
78433
|
-
field: "
|
|
78426
|
+
field: "progress",
|
|
78434
78427
|
quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
|
|
78435
78428
|
label: t("Progress", "Avanzamento"),
|
|
78436
78429
|
unit: "%",
|
|
@@ -78788,10 +78781,10 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78788
78781
|
id: "media.seek",
|
|
78789
78782
|
method: "seek",
|
|
78790
78783
|
label: t("Seek", "Vai al punto"),
|
|
78791
|
-
phrase: t("Move {device} to {
|
|
78784
|
+
phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
|
|
78792
78785
|
icon: "fast-forward",
|
|
78793
78786
|
openArgs: [{
|
|
78794
|
-
key: "
|
|
78787
|
+
key: "position",
|
|
78795
78788
|
label: t("Position", "Posizione"),
|
|
78796
78789
|
offer: {
|
|
78797
78790
|
kind: "number",
|
|
@@ -79840,7 +79833,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79840
79833
|
state: [
|
|
79841
79834
|
{
|
|
79842
79835
|
kind: "numeric",
|
|
79843
|
-
field: "
|
|
79836
|
+
field: "co2",
|
|
79844
79837
|
quantity: t("the CO₂", "la CO₂"),
|
|
79845
79838
|
label: t("CO₂", "CO₂"),
|
|
79846
79839
|
unit: "ppm",
|
|
@@ -79848,7 +79841,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79848
79841
|
},
|
|
79849
79842
|
{
|
|
79850
79843
|
kind: "numeric",
|
|
79851
|
-
field: "
|
|
79844
|
+
field: "voc",
|
|
79852
79845
|
quantity: t("the VOC level", "il livello di COV"),
|
|
79853
79846
|
label: t("VOC", "COV"),
|
|
79854
79847
|
unit: "ppb",
|
|
@@ -79884,7 +79877,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79884
79877
|
noun: t("Light level", "Luminosità ambiente"),
|
|
79885
79878
|
state: [{
|
|
79886
79879
|
kind: "numeric",
|
|
79887
|
-
field: "
|
|
79880
|
+
field: "illuminance",
|
|
79888
79881
|
quantity: t("the light level", "la luminosità"),
|
|
79889
79882
|
label: t("Illuminance", "Illuminamento"),
|
|
79890
79883
|
unit: "lx",
|
|
@@ -80087,7 +80080,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80087
80080
|
noun: t("Humidity", "Umidità"),
|
|
80088
80081
|
state: [{
|
|
80089
80082
|
kind: "numeric",
|
|
80090
|
-
field: "
|
|
80083
|
+
field: "humidity",
|
|
80091
80084
|
quantity: t("the humidity", "l’umidità"),
|
|
80092
80085
|
label: t("Humidity", "Umidità"),
|
|
80093
80086
|
unit: "%",
|
|
@@ -80135,7 +80128,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80135
80128
|
state: [
|
|
80136
80129
|
{
|
|
80137
80130
|
kind: "numeric",
|
|
80138
|
-
field: "
|
|
80131
|
+
field: "power",
|
|
80139
80132
|
quantity: t("the power draw", "il consumo"),
|
|
80140
80133
|
label: t("Power", "Potenza"),
|
|
80141
80134
|
unit: "W",
|
|
@@ -80143,7 +80136,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80143
80136
|
},
|
|
80144
80137
|
{
|
|
80145
80138
|
kind: "numeric",
|
|
80146
|
-
field: "
|
|
80139
|
+
field: "energy",
|
|
80147
80140
|
quantity: t("the energy used", "l’energia consumata"),
|
|
80148
80141
|
label: t("Energy", "Energia"),
|
|
80149
80142
|
unit: "kWh",
|
|
@@ -80151,7 +80144,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80151
80144
|
},
|
|
80152
80145
|
{
|
|
80153
80146
|
kind: "numeric",
|
|
80154
|
-
field: "
|
|
80147
|
+
field: "voltage",
|
|
80155
80148
|
quantity: t("the voltage", "la tensione"),
|
|
80156
80149
|
label: t("Voltage", "Tensione"),
|
|
80157
80150
|
unit: "V",
|
|
@@ -80159,7 +80152,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80159
80152
|
},
|
|
80160
80153
|
{
|
|
80161
80154
|
kind: "numeric",
|
|
80162
|
-
field: "
|
|
80155
|
+
field: "current",
|
|
80163
80156
|
quantity: t("the current", "la corrente"),
|
|
80164
80157
|
label: t("Current", "Corrente"),
|
|
80165
80158
|
unit: "A",
|
|
@@ -80176,13 +80169,6 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80176
80169
|
label: t("Where", "Posizione"),
|
|
80177
80170
|
phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
|
|
80178
80171
|
icon: "map-pin"
|
|
80179
|
-
}, {
|
|
80180
|
-
kind: "numeric",
|
|
80181
|
-
field: "batteryPercent",
|
|
80182
|
-
quantity: t("the phone battery", "la batteria del telefono"),
|
|
80183
|
-
label: t("Battery", "Batteria"),
|
|
80184
|
-
unit: "%",
|
|
80185
|
-
icon: "battery"
|
|
80186
80172
|
}]
|
|
80187
80173
|
},
|
|
80188
80174
|
"pressure-sensor": {
|
|
@@ -80190,7 +80176,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80190
80176
|
noun: t("Pressure", "Pressione"),
|
|
80191
80177
|
state: [{
|
|
80192
80178
|
kind: "numeric",
|
|
80193
|
-
field: "
|
|
80179
|
+
field: "pressure",
|
|
80194
80180
|
quantity: t("the pressure", "la pressione"),
|
|
80195
80181
|
label: t("Pressure", "Pressione"),
|
|
80196
80182
|
unit: "hPa",
|
|
@@ -80226,7 +80212,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80226
80212
|
noun: t("Temperature", "Temperatura"),
|
|
80227
80213
|
state: [{
|
|
80228
80214
|
kind: "numeric",
|
|
80229
|
-
field: "
|
|
80215
|
+
field: "temperature",
|
|
80230
80216
|
quantity: t("the temperature", "la temperatura"),
|
|
80231
80217
|
label: t("Temperature", "Temperatura"),
|
|
80232
80218
|
unit: "°C",
|
|
@@ -80297,7 +80283,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80297
80283
|
state: [
|
|
80298
80284
|
{
|
|
80299
80285
|
kind: "numeric",
|
|
80300
|
-
field: "
|
|
80286
|
+
field: "level",
|
|
80301
80287
|
quantity: t("the battery level", "il livello della batteria"),
|
|
80302
80288
|
label: t("Battery", "Batteria"),
|
|
80303
80289
|
unit: "%",
|
|
@@ -80339,7 +80325,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80339
80325
|
icon: "battery-charging"
|
|
80340
80326
|
}
|
|
80341
80327
|
],
|
|
80342
|
-
events: { onStatusChanged: { notOperatorFacing: "the
|
|
80328
|
+
events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
|
|
80343
80329
|
extraEvents: [{
|
|
80344
80330
|
category: EventCategory.DeviceAwake,
|
|
80345
80331
|
label: t("Woke up", "Risvegliato"),
|
|
@@ -80357,7 +80343,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80357
80343
|
noun: t("Network link", "Collegamento di rete"),
|
|
80358
80344
|
state: [{
|
|
80359
80345
|
kind: "numeric",
|
|
80360
|
-
field: "
|
|
80346
|
+
field: "signal",
|
|
80361
80347
|
quantity: t("the signal strength", "l’intensità del segnale"),
|
|
80362
80348
|
label: t("Signal", "Segnale"),
|
|
80363
80349
|
unit: "%",
|