@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
|
@@ -5842,7 +5842,7 @@ var ZodIssueCode = {
|
|
|
5842
5842
|
var ZodFirstPartyTypeKind;
|
|
5843
5843
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5844
5844
|
//#endregion
|
|
5845
|
-
//#region ../types/dist/sleep-
|
|
5845
|
+
//#region ../types/dist/sleep-Crlmu_tO.mjs
|
|
5846
5846
|
/**
|
|
5847
5847
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5848
5848
|
* window to float samples (D455).
|
|
@@ -9162,11 +9162,11 @@ var CAP_NAMES = Object.freeze([
|
|
|
9162
9162
|
Object.freeze({
|
|
9163
9163
|
"air-quality-sensor": [
|
|
9164
9164
|
{
|
|
9165
|
-
"path": "
|
|
9165
|
+
"path": "co2",
|
|
9166
9166
|
"valueType": "number"
|
|
9167
9167
|
},
|
|
9168
9168
|
{
|
|
9169
|
-
"path": "
|
|
9169
|
+
"path": "voc",
|
|
9170
9170
|
"valueType": "number"
|
|
9171
9171
|
},
|
|
9172
9172
|
{
|
|
@@ -9216,7 +9216,7 @@ Object.freeze({
|
|
|
9216
9216
|
}
|
|
9217
9217
|
],
|
|
9218
9218
|
"ambient-light-sensor": [{
|
|
9219
|
-
"path": "
|
|
9219
|
+
"path": "illuminance",
|
|
9220
9220
|
"valueType": "number"
|
|
9221
9221
|
}],
|
|
9222
9222
|
"audio-metrics": [
|
|
@@ -9277,7 +9277,7 @@ Object.freeze({
|
|
|
9277
9277
|
],
|
|
9278
9278
|
"battery": [
|
|
9279
9279
|
{
|
|
9280
|
-
"path": "
|
|
9280
|
+
"path": "level",
|
|
9281
9281
|
"valueType": "number"
|
|
9282
9282
|
},
|
|
9283
9283
|
{
|
|
@@ -9299,7 +9299,7 @@ Object.freeze({
|
|
|
9299
9299
|
"valueType": "number"
|
|
9300
9300
|
},
|
|
9301
9301
|
{
|
|
9302
|
-
"path": "
|
|
9302
|
+
"path": "voltage",
|
|
9303
9303
|
"valueType": "number"
|
|
9304
9304
|
},
|
|
9305
9305
|
{
|
|
@@ -9320,7 +9320,7 @@ Object.freeze({
|
|
|
9320
9320
|
"valueType": "boolean"
|
|
9321
9321
|
}],
|
|
9322
9322
|
"brightness": [{
|
|
9323
|
-
"path": "
|
|
9323
|
+
"path": "level",
|
|
9324
9324
|
"valueType": "number"
|
|
9325
9325
|
}],
|
|
9326
9326
|
"broker": [{
|
|
@@ -9521,7 +9521,7 @@ Object.freeze({
|
|
|
9521
9521
|
"valueType": "number"
|
|
9522
9522
|
},
|
|
9523
9523
|
{
|
|
9524
|
-
"path": "
|
|
9524
|
+
"path": "colorTemperature",
|
|
9525
9525
|
"valueType": "number"
|
|
9526
9526
|
}
|
|
9527
9527
|
],
|
|
@@ -9700,15 +9700,15 @@ Object.freeze({
|
|
|
9700
9700
|
"valueType": "string"
|
|
9701
9701
|
},
|
|
9702
9702
|
{
|
|
9703
|
-
"path": "
|
|
9703
|
+
"path": "remaining",
|
|
9704
9704
|
"valueType": "number"
|
|
9705
9705
|
},
|
|
9706
9706
|
{
|
|
9707
|
-
"path": "
|
|
9707
|
+
"path": "delayedStart",
|
|
9708
9708
|
"valueType": "number"
|
|
9709
9709
|
},
|
|
9710
9710
|
{
|
|
9711
|
-
"path": "
|
|
9711
|
+
"path": "progress",
|
|
9712
9712
|
"valueType": "number"
|
|
9713
9713
|
},
|
|
9714
9714
|
{
|
|
@@ -9822,7 +9822,7 @@ Object.freeze({
|
|
|
9822
9822
|
],
|
|
9823
9823
|
"fan-control": [
|
|
9824
9824
|
{
|
|
9825
|
-
"path": "
|
|
9825
|
+
"path": "speed",
|
|
9826
9826
|
"valueType": "number"
|
|
9827
9827
|
},
|
|
9828
9828
|
{
|
|
@@ -9922,7 +9922,7 @@ Object.freeze({
|
|
|
9922
9922
|
}
|
|
9923
9923
|
],
|
|
9924
9924
|
"humidity-sensor": [{
|
|
9925
|
-
"path": "
|
|
9925
|
+
"path": "humidity",
|
|
9926
9926
|
"valueType": "number"
|
|
9927
9927
|
}],
|
|
9928
9928
|
"image": [{
|
|
@@ -10032,7 +10032,7 @@ Object.freeze({
|
|
|
10032
10032
|
"valueType": "number"
|
|
10033
10033
|
},
|
|
10034
10034
|
{
|
|
10035
|
-
"path": "
|
|
10035
|
+
"path": "progress",
|
|
10036
10036
|
"valueType": "number"
|
|
10037
10037
|
},
|
|
10038
10038
|
{
|
|
@@ -10111,11 +10111,11 @@ Object.freeze({
|
|
|
10111
10111
|
"valueType": "string"
|
|
10112
10112
|
},
|
|
10113
10113
|
{
|
|
10114
|
-
"path": "
|
|
10114
|
+
"path": "position",
|
|
10115
10115
|
"valueType": "number"
|
|
10116
10116
|
},
|
|
10117
10117
|
{
|
|
10118
|
-
"path": "
|
|
10118
|
+
"path": "duration",
|
|
10119
10119
|
"valueType": "number"
|
|
10120
10120
|
},
|
|
10121
10121
|
{
|
|
@@ -10217,11 +10217,11 @@ Object.freeze({
|
|
|
10217
10217
|
]
|
|
10218
10218
|
},
|
|
10219
10219
|
{
|
|
10220
|
-
"path": "
|
|
10220
|
+
"path": "signal",
|
|
10221
10221
|
"valueType": "number"
|
|
10222
10222
|
},
|
|
10223
10223
|
{
|
|
10224
|
-
"path": "
|
|
10224
|
+
"path": "rssi",
|
|
10225
10225
|
"valueType": "number"
|
|
10226
10226
|
},
|
|
10227
10227
|
{
|
|
@@ -10352,23 +10352,23 @@ Object.freeze({
|
|
|
10352
10352
|
],
|
|
10353
10353
|
"power-meter": [
|
|
10354
10354
|
{
|
|
10355
|
-
"path": "
|
|
10355
|
+
"path": "power",
|
|
10356
10356
|
"valueType": "number"
|
|
10357
10357
|
},
|
|
10358
10358
|
{
|
|
10359
|
-
"path": "
|
|
10359
|
+
"path": "energy",
|
|
10360
10360
|
"valueType": "number"
|
|
10361
10361
|
},
|
|
10362
10362
|
{
|
|
10363
|
-
"path": "
|
|
10363
|
+
"path": "voltage",
|
|
10364
10364
|
"valueType": "number"
|
|
10365
10365
|
},
|
|
10366
10366
|
{
|
|
10367
|
-
"path": "
|
|
10367
|
+
"path": "current",
|
|
10368
10368
|
"valueType": "number"
|
|
10369
10369
|
},
|
|
10370
10370
|
{
|
|
10371
|
-
"path": "
|
|
10371
|
+
"path": "apparentPower",
|
|
10372
10372
|
"valueType": "number"
|
|
10373
10373
|
},
|
|
10374
10374
|
{
|
|
@@ -10396,14 +10396,10 @@ Object.freeze({
|
|
|
10396
10396
|
{
|
|
10397
10397
|
"path": "gps.accuracyMeters",
|
|
10398
10398
|
"valueType": "number"
|
|
10399
|
-
},
|
|
10400
|
-
{
|
|
10401
|
-
"path": "batteryPercent",
|
|
10402
|
-
"valueType": "number"
|
|
10403
10399
|
}
|
|
10404
10400
|
],
|
|
10405
10401
|
"pressure-sensor": [{
|
|
10406
|
-
"path": "
|
|
10402
|
+
"path": "pressure",
|
|
10407
10403
|
"valueType": "number"
|
|
10408
10404
|
}],
|
|
10409
10405
|
"privacy-mask": [{
|
|
@@ -10717,7 +10713,7 @@ Object.freeze({
|
|
|
10717
10713
|
"valueType": "boolean"
|
|
10718
10714
|
}],
|
|
10719
10715
|
"temperature-sensor": [{
|
|
10720
|
-
"path": "
|
|
10716
|
+
"path": "temperature",
|
|
10721
10717
|
"valueType": "number"
|
|
10722
10718
|
}],
|
|
10723
10719
|
"update": [
|
|
@@ -10765,7 +10761,7 @@ Object.freeze({
|
|
|
10765
10761
|
"valueType": "string"
|
|
10766
10762
|
},
|
|
10767
10763
|
{
|
|
10768
|
-
"path": "
|
|
10764
|
+
"path": "progress",
|
|
10769
10765
|
"valueType": "number"
|
|
10770
10766
|
},
|
|
10771
10767
|
{
|
|
@@ -11240,7 +11236,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11240
11236
|
return DeviceRole;
|
|
11241
11237
|
}({});
|
|
11242
11238
|
//#endregion
|
|
11243
|
-
//#region ../types/dist/composition-
|
|
11239
|
+
//#region ../types/dist/composition-CZImLpOI.mjs
|
|
11244
11240
|
/**
|
|
11245
11241
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11246
11242
|
*
|
|
@@ -19026,7 +19022,7 @@ var CompositionEventPlanSchema = object({
|
|
|
19026
19022
|
stateField: string(),
|
|
19027
19023
|
fieldKey: string()
|
|
19028
19024
|
});
|
|
19029
|
-
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.
|
|
19025
|
+
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
|
|
19030
19026
|
var CompositionProblemSchema = object({
|
|
19031
19027
|
code: _enum([
|
|
19032
19028
|
"reserved-variant",
|
|
@@ -19345,7 +19341,7 @@ var GROUP_TEMPLATES = [
|
|
|
19345
19341
|
summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
|
|
19346
19342
|
role: DeviceRole.TemperatureSensor,
|
|
19347
19343
|
outputCap: "temperature-sensor",
|
|
19348
|
-
outputField: "
|
|
19344
|
+
outputField: "temperature",
|
|
19349
19345
|
quantity: "temperature",
|
|
19350
19346
|
defaultAggregate: "mean",
|
|
19351
19347
|
empty: "null",
|
|
@@ -19356,7 +19352,7 @@ var GROUP_TEMPLATES = [
|
|
|
19356
19352
|
summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19357
19353
|
role: DeviceRole.HumiditySensor,
|
|
19358
19354
|
outputCap: "humidity-sensor",
|
|
19359
|
-
outputField: "
|
|
19355
|
+
outputField: "humidity",
|
|
19360
19356
|
quantity: "humidity",
|
|
19361
19357
|
defaultAggregate: "mean",
|
|
19362
19358
|
empty: "null",
|
|
@@ -19367,7 +19363,7 @@ var GROUP_TEMPLATES = [
|
|
|
19367
19363
|
summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
|
|
19368
19364
|
role: DeviceRole.PressureSensor,
|
|
19369
19365
|
outputCap: "pressure-sensor",
|
|
19370
|
-
outputField: "
|
|
19366
|
+
outputField: "pressure",
|
|
19371
19367
|
quantity: "pressure",
|
|
19372
19368
|
defaultAggregate: "mean",
|
|
19373
19369
|
empty: "null",
|
|
@@ -19378,7 +19374,7 @@ var GROUP_TEMPLATES = [
|
|
|
19378
19374
|
summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
|
|
19379
19375
|
role: DeviceRole.AmbientLightSensor,
|
|
19380
19376
|
outputCap: "ambient-light-sensor",
|
|
19381
|
-
outputField: "
|
|
19377
|
+
outputField: "illuminance",
|
|
19382
19378
|
quantity: "illuminance",
|
|
19383
19379
|
defaultAggregate: "mean",
|
|
19384
19380
|
empty: "null",
|
|
@@ -19389,7 +19385,7 @@ var GROUP_TEMPLATES = [
|
|
|
19389
19385
|
summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
|
|
19390
19386
|
role: DeviceRole.PowerSensor,
|
|
19391
19387
|
outputCap: "power-meter",
|
|
19392
|
-
outputField: "
|
|
19388
|
+
outputField: "power",
|
|
19393
19389
|
quantity: "power",
|
|
19394
19390
|
defaultAggregate: "sum",
|
|
19395
19391
|
empty: "omit",
|
|
@@ -19400,7 +19396,7 @@ var GROUP_TEMPLATES = [
|
|
|
19400
19396
|
summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
|
|
19401
19397
|
role: DeviceRole.EnergySensor,
|
|
19402
19398
|
outputCap: "power-meter",
|
|
19403
|
-
outputField: "
|
|
19399
|
+
outputField: "energy",
|
|
19404
19400
|
quantity: "energy",
|
|
19405
19401
|
defaultAggregate: "sum",
|
|
19406
19402
|
empty: "omit",
|
|
@@ -19411,7 +19407,7 @@ var GROUP_TEMPLATES = [
|
|
|
19411
19407
|
summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19412
19408
|
role: DeviceRole.BatterySensor,
|
|
19413
19409
|
outputCap: "battery",
|
|
19414
|
-
outputField: "
|
|
19410
|
+
outputField: "level",
|
|
19415
19411
|
quantity: "percentage",
|
|
19416
19412
|
defaultAggregate: "mean",
|
|
19417
19413
|
empty: "null",
|
|
@@ -57563,9 +57559,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
57563
57559
|
}), LogStreamEntrySchema, { kind: "subscription" });
|
|
57564
57560
|
object({
|
|
57565
57561
|
/** Carbon dioxide concentration in ppm. */
|
|
57566
|
-
|
|
57562
|
+
co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
|
|
57567
57563
|
/** Total volatile organic compounds in ppb. */
|
|
57568
|
-
|
|
57564
|
+
voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
|
|
57569
57565
|
/** Particulate matter ≤ 2.5 μm in µg/m³. */
|
|
57570
57566
|
pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
|
|
57571
57567
|
/** Particulate matter ≤ 10 μm in µg/m³. */
|
|
@@ -57578,7 +57574,7 @@ object({
|
|
|
57578
57574
|
DeviceType.Sensor;
|
|
57579
57575
|
object({
|
|
57580
57576
|
/** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
|
|
57581
|
-
|
|
57577
|
+
illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
|
|
57582
57578
|
precision: 0,
|
|
57583
57579
|
label: "Illuminance"
|
|
57584
57580
|
})),
|
|
@@ -57806,7 +57802,7 @@ var BatteryStatusSchema = object({
|
|
|
57806
57802
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
57807
57803
|
* declines to band a non-finite reading, which is the correct shape.
|
|
57808
57804
|
*/
|
|
57809
|
-
|
|
57805
|
+
level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
|
|
57810
57806
|
/**
|
|
57811
57807
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
57812
57808
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -57816,7 +57812,7 @@ var BatteryStatusSchema = object({
|
|
|
57816
57812
|
* `'unknown'` is the absence of an answer: the provider has not read the
|
|
57817
57813
|
* power fields yet, or the firmware reported neither. Before it existed,
|
|
57818
57814
|
* two unreadable fields produced `'none'`, and a camera nobody had reached
|
|
57819
|
-
* was drawn "on battery alone" — the same D315 defect `
|
|
57815
|
+
* was drawn "on battery alone" — the same D315 defect `level` closed
|
|
57820
57816
|
* by going nullable. Consumers SKIP it (no charger state published, no
|
|
57821
57817
|
* glyph, no HomeKit ChargingState) rather than coerce it either way.
|
|
57822
57818
|
*/
|
|
@@ -57840,7 +57836,7 @@ var BatteryStatusSchema = object({
|
|
|
57840
57836
|
* that only report charge. A second reading on this cap, not a second
|
|
57841
57837
|
* `numeric-sensor` on the same device.
|
|
57842
57838
|
*/
|
|
57843
|
-
|
|
57839
|
+
voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
57844
57840
|
/**
|
|
57845
57841
|
* Ms epoch of the last time the device PROVED it was reachable — a
|
|
57846
57842
|
* completed firmware round-trip, an observed wake, or an inbound push
|
|
@@ -57874,7 +57870,7 @@ var BatteryStatusSchema = object({
|
|
|
57874
57870
|
/**
|
|
57875
57871
|
* True when the source is a BINARY low-battery indicator (HA
|
|
57876
57872
|
* `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
|
|
57877
|
-
* charge level — `
|
|
57873
|
+
* charge level — `level` is then a coarse stand-in (100 = normal,
|
|
57878
57874
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
57879
57875
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
57880
57876
|
*/
|
|
@@ -57900,19 +57896,19 @@ object({
|
|
|
57900
57896
|
DeviceType.Sensor;
|
|
57901
57897
|
object({
|
|
57902
57898
|
/** Current level as 0..100 inclusive. Firmware-reported. */
|
|
57903
|
-
|
|
57899
|
+
level: number().min(0).max(100).meta(readingMeta("percentage")),
|
|
57904
57900
|
/** Ms epoch of the last operator-driven change. Useful for UI freshness. */
|
|
57905
57901
|
lastChangedAt: number()
|
|
57906
57902
|
});
|
|
57907
57903
|
DeviceType.Light, method(object({
|
|
57908
57904
|
deviceId: number().int().nonnegative(),
|
|
57909
|
-
|
|
57905
|
+
level: number().min(0).max(100)
|
|
57910
57906
|
}), _void(), {
|
|
57911
57907
|
kind: "mutation",
|
|
57912
57908
|
auth: "protected"
|
|
57913
57909
|
}), object({
|
|
57914
57910
|
deviceId: number(),
|
|
57915
|
-
|
|
57911
|
+
level: number().min(0).max(100),
|
|
57916
57912
|
lastChangedAt: number()
|
|
57917
57913
|
});
|
|
57918
57914
|
DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
@@ -58413,11 +58409,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
|
|
|
58413
58409
|
}),
|
|
58414
58410
|
object({
|
|
58415
58411
|
mode: literal("mired"),
|
|
58416
|
-
|
|
58412
|
+
colorTemperature: number().int().min(50).max(1e3)
|
|
58417
58413
|
})
|
|
58418
58414
|
]);
|
|
58419
58415
|
object({
|
|
58420
|
-
/** Active color mode — which of `rgb` / `hsv` / `
|
|
58416
|
+
/** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
|
|
58421
58417
|
* the bulb's current state. */
|
|
58422
58418
|
mode: _enum([
|
|
58423
58419
|
"rgb",
|
|
@@ -58429,7 +58425,7 @@ object({
|
|
|
58429
58425
|
/** Populated when `mode === 'hsv'`. */
|
|
58430
58426
|
hsv: HsvTripletSchema.optional(),
|
|
58431
58427
|
/** Populated when `mode === 'mired'`. */
|
|
58432
|
-
|
|
58428
|
+
colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
|
|
58433
58429
|
/** Ms epoch of the last operator-driven change. */
|
|
58434
58430
|
lastChangedAt: number()
|
|
58435
58431
|
});
|
|
@@ -58448,7 +58444,7 @@ DeviceType.Light, method(object({
|
|
|
58448
58444
|
]),
|
|
58449
58445
|
rgb: RgbTripletSchema.optional(),
|
|
58450
58446
|
hsv: HsvTripletSchema.optional(),
|
|
58451
|
-
|
|
58447
|
+
colorTemperature: number().int().optional(),
|
|
58452
58448
|
lastChangedAt: number()
|
|
58453
58449
|
});
|
|
58454
58450
|
var ConnectionTestOutcomeSchema = discriminatedUnion("outcome", [
|
|
@@ -58874,11 +58870,11 @@ object({
|
|
|
58874
58870
|
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
58875
58871
|
availablePrograms: array(string()),
|
|
58876
58872
|
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
58877
|
-
|
|
58873
|
+
remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
58878
58874
|
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
58879
|
-
|
|
58875
|
+
delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
58880
58876
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
58881
|
-
|
|
58877
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
58882
58878
|
/** True when the door is reported open; null when the door state is not known. */
|
|
58883
58879
|
doorOpen: boolean().nullable(),
|
|
58884
58880
|
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
@@ -59496,7 +59492,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
|
|
|
59496
59492
|
object({
|
|
59497
59493
|
/** Active speed as 0..100 inclusive. Null when the device has no
|
|
59498
59494
|
* speed surface (single-speed fan). */
|
|
59499
|
-
|
|
59495
|
+
speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
59500
59496
|
/** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
|
|
59501
59497
|
* a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
|
|
59502
59498
|
percentageStep: number().positive().optional().meta(readingMeta("percentage")),
|
|
@@ -59516,7 +59512,7 @@ object({
|
|
|
59516
59512
|
});
|
|
59517
59513
|
DeviceType.Fan, method(object({
|
|
59518
59514
|
deviceId: number().int().nonnegative(),
|
|
59519
|
-
|
|
59515
|
+
speed: number().min(0).max(100)
|
|
59520
59516
|
}), _void(), {
|
|
59521
59517
|
kind: "mutation",
|
|
59522
59518
|
auth: "protected"
|
|
@@ -59699,7 +59695,7 @@ DeviceType.Humidifier, method(object({
|
|
|
59699
59695
|
});
|
|
59700
59696
|
object({
|
|
59701
59697
|
/** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
|
|
59702
|
-
|
|
59698
|
+
humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
|
|
59703
59699
|
precision: 0,
|
|
59704
59700
|
label: "Humidity"
|
|
59705
59701
|
})),
|
|
@@ -60142,7 +60138,7 @@ object({
|
|
|
60142
60138
|
batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
60143
60139
|
/** 0..100 mowing-completion percentage of the current task, or null when no
|
|
60144
60140
|
* task is active / progress is unavailable. */
|
|
60145
|
-
|
|
60141
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
60146
60142
|
/** Current device/event code (dynamic — mostly status, sometimes an error),
|
|
60147
60143
|
* or null when unknown. */
|
|
60148
60144
|
currentCode: number().nullable().meta(readingMeta("none")),
|
|
@@ -60632,10 +60628,10 @@ object({
|
|
|
60632
60628
|
currentMedia: MediaInfoSchema.nullable(),
|
|
60633
60629
|
/** Current playback position in ms. Null when not seekable or
|
|
60634
60630
|
* nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
|
|
60635
|
-
|
|
60631
|
+
position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
60636
60632
|
/** Total duration of the current media in ms. Null when unknown
|
|
60637
60633
|
* (live stream) or nothing is playing. */
|
|
60638
|
-
|
|
60634
|
+
duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
60639
60635
|
/** Shuffle toggle. Null when no shuffle surface.
|
|
60640
60636
|
* Pair with `DeviceFeature.MediaPlayerShuffle`. */
|
|
60641
60637
|
shuffle: boolean().nullable(),
|
|
@@ -60662,7 +60658,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
|
|
|
60662
60658
|
auth: "protected"
|
|
60663
60659
|
}), method(object({
|
|
60664
60660
|
deviceId: number().int().nonnegative(),
|
|
60665
|
-
|
|
60661
|
+
position: number().int().nonnegative()
|
|
60666
60662
|
}), _void(), {
|
|
60667
60663
|
kind: "mutation",
|
|
60668
60664
|
auth: "protected"
|
|
@@ -61335,9 +61331,9 @@ var NetworkLinkStatusSchema = object({
|
|
|
61335
61331
|
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
61336
61332
|
* SKIP a null rather than coerce it.
|
|
61337
61333
|
*/
|
|
61338
|
-
|
|
61334
|
+
signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
61339
61335
|
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
61340
|
-
|
|
61336
|
+
rssi: number().optional().meta(readingMeta("signal-level")),
|
|
61341
61337
|
/** Network name of a wireless link, when the firmware reports it. */
|
|
61342
61338
|
ssid: string().optional(),
|
|
61343
61339
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
@@ -62487,16 +62483,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
62487
62483
|
auth: "admin"
|
|
62488
62484
|
});
|
|
62489
62485
|
object({
|
|
62490
|
-
/** Instantaneous power draw
|
|
62491
|
-
|
|
62486
|
+
/** Instantaneous power draw (watts). */
|
|
62487
|
+
power: number().optional().meta(readingMeta("power", { label: "Power" })),
|
|
62492
62488
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
62493
|
-
|
|
62494
|
-
/** Voltage
|
|
62495
|
-
|
|
62489
|
+
energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
|
|
62490
|
+
/** Voltage (volts). */
|
|
62491
|
+
voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
62496
62492
|
/** Current in amperes. */
|
|
62497
|
-
|
|
62493
|
+
current: number().optional().meta(readingMeta("current", { label: "Current" })),
|
|
62498
62494
|
/** Apparent power in volt-amperes. */
|
|
62499
|
-
|
|
62495
|
+
apparentPower: number().optional().meta(readingMeta("apparent-power")),
|
|
62500
62496
|
/** Power factor (0..1) if reported. */
|
|
62501
62497
|
powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
|
|
62502
62498
|
/** Ms epoch when the slice was last updated. */
|
|
@@ -62551,16 +62547,13 @@ object({
|
|
|
62551
62547
|
location: string().nullable(),
|
|
62552
62548
|
/** GPS coordinates when available. Null otherwise. */
|
|
62553
62549
|
gps: GpsLocationSchema.nullable(),
|
|
62554
|
-
/** Optional battery level of the tracking device (0..100). Null
|
|
62555
|
-
* when not reported. */
|
|
62556
|
-
batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
62557
62550
|
/** Ms epoch when the slice was last updated. */
|
|
62558
62551
|
lastChangedAt: number()
|
|
62559
62552
|
});
|
|
62560
62553
|
DeviceType.Presence;
|
|
62561
62554
|
object({
|
|
62562
62555
|
/** Current pressure in hPa. `null` when the sample was refused (D393). */
|
|
62563
|
-
|
|
62556
|
+
pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
|
|
62564
62557
|
/** Ms epoch when the slice was last updated. */
|
|
62565
62558
|
lastFetchedAt: number()
|
|
62566
62559
|
});
|
|
@@ -65563,7 +65556,7 @@ object({
|
|
|
65563
65556
|
DeviceType.Sensor;
|
|
65564
65557
|
object({
|
|
65565
65558
|
/** Current temperature in Celsius. `null` when the sample was refused (D393). */
|
|
65566
|
-
|
|
65559
|
+
temperature: number().nullable().meta(readingMeta("temperature", {
|
|
65567
65560
|
precision: 1,
|
|
65568
65561
|
label: "Temperature"
|
|
65569
65562
|
})),
|
|
@@ -65827,7 +65820,7 @@ object({
|
|
|
65827
65820
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
65828
65821
|
availableFanSpeeds: array(string()),
|
|
65829
65822
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
65830
|
-
|
|
65823
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65831
65824
|
/** Current error code (0 / null = no error). */
|
|
65832
65825
|
errorCode: number().nullable().meta(readingMeta("none")),
|
|
65833
65826
|
/** Human label for {@link errorCode}, or null when none / undecodable. */
|
|
@@ -76895,7 +76888,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76895
76888
|
label: t("Full brightness", "Luminosità massima"),
|
|
76896
76889
|
phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
|
|
76897
76890
|
icon: "sun",
|
|
76898
|
-
args: {
|
|
76891
|
+
args: { level: 100 }
|
|
76899
76892
|
},
|
|
76900
76893
|
{
|
|
76901
76894
|
id: "brightness.half",
|
|
@@ -76903,7 +76896,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76903
76896
|
label: t("Half brightness", "Luminosità a metà"),
|
|
76904
76897
|
phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
|
|
76905
76898
|
icon: "sun-dim",
|
|
76906
|
-
args: {
|
|
76899
|
+
args: { level: 50 }
|
|
76907
76900
|
},
|
|
76908
76901
|
{
|
|
76909
76902
|
id: "brightness.off",
|
|
@@ -76911,16 +76904,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76911
76904
|
label: t("Brightness off", "Luminosità a zero"),
|
|
76912
76905
|
phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
|
|
76913
76906
|
icon: "lightbulb-off",
|
|
76914
|
-
args: {
|
|
76907
|
+
args: { level: 0 }
|
|
76915
76908
|
},
|
|
76916
76909
|
{
|
|
76917
76910
|
id: "brightness.set",
|
|
76918
76911
|
method: "setBrightness",
|
|
76919
76912
|
label: t("Set brightness", "Imposta la luminosità"),
|
|
76920
|
-
phrase: t("Set the brightness of {device} to {
|
|
76913
|
+
phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
|
|
76921
76914
|
icon: "sun-medium",
|
|
76922
76915
|
openArgs: [{
|
|
76923
|
-
key: "
|
|
76916
|
+
key: "level",
|
|
76924
76917
|
label: PERCENT,
|
|
76925
76918
|
offer: {
|
|
76926
76919
|
kind: "number",
|
|
@@ -76934,13 +76927,13 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76934
76927
|
],
|
|
76935
76928
|
state: [{
|
|
76936
76929
|
kind: "numeric",
|
|
76937
|
-
field: "
|
|
76930
|
+
field: "level",
|
|
76938
76931
|
quantity: t("the brightness", "la luminosità"),
|
|
76939
76932
|
label: t("Brightness", "Luminosità"),
|
|
76940
76933
|
unit: "%",
|
|
76941
76934
|
icon: "sun"
|
|
76942
76935
|
}],
|
|
76943
|
-
events: { onBrightnessChanged: { notOperatorFacing: "the `
|
|
76936
|
+
events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
|
|
76944
76937
|
},
|
|
76945
76938
|
color: {
|
|
76946
76939
|
scope: "device",
|
|
@@ -76954,7 +76947,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76954
76947
|
icon: "sun",
|
|
76955
76948
|
args: { color: {
|
|
76956
76949
|
mode: "mired",
|
|
76957
|
-
|
|
76950
|
+
colorTemperature: 370
|
|
76958
76951
|
} }
|
|
76959
76952
|
},
|
|
76960
76953
|
{
|
|
@@ -76965,7 +76958,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76965
76958
|
icon: "snowflake",
|
|
76966
76959
|
args: { color: {
|
|
76967
76960
|
mode: "mired",
|
|
76968
|
-
|
|
76961
|
+
colorTemperature: 200
|
|
76969
76962
|
} }
|
|
76970
76963
|
},
|
|
76971
76964
|
{
|
|
@@ -77579,7 +77572,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77579
77572
|
label: t("Fan off", "Ventilatore spento"),
|
|
77580
77573
|
phrase: t("Stop {device}", "Ferma {device}"),
|
|
77581
77574
|
icon: "power-off",
|
|
77582
|
-
args: {
|
|
77575
|
+
args: { speed: 0 }
|
|
77583
77576
|
},
|
|
77584
77577
|
{
|
|
77585
77578
|
id: "fan.full",
|
|
@@ -77587,16 +77580,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77587
77580
|
label: t("Fan full", "Ventilatore al massimo"),
|
|
77588
77581
|
phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
|
|
77589
77582
|
icon: "fan",
|
|
77590
|
-
args: {
|
|
77583
|
+
args: { speed: 100 }
|
|
77591
77584
|
},
|
|
77592
77585
|
{
|
|
77593
77586
|
id: "fan.speed",
|
|
77594
77587
|
method: "setPercentage",
|
|
77595
77588
|
label: t("Set speed", "Imposta la velocità"),
|
|
77596
|
-
phrase: t("Set the speed of {device} to {
|
|
77589
|
+
phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
|
|
77597
77590
|
icon: "fan",
|
|
77598
77591
|
openArgs: [{
|
|
77599
|
-
key: "
|
|
77592
|
+
key: "speed",
|
|
77600
77593
|
label: t("Speed", "Velocità"),
|
|
77601
77594
|
offer: {
|
|
77602
77595
|
kind: "number",
|
|
@@ -77658,7 +77651,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77658
77651
|
],
|
|
77659
77652
|
state: [{
|
|
77660
77653
|
kind: "numeric",
|
|
77661
|
-
field: "
|
|
77654
|
+
field: "speed",
|
|
77662
77655
|
quantity: t("the speed", "la velocità"),
|
|
77663
77656
|
label: t("Speed", "Velocità"),
|
|
77664
77657
|
unit: "%",
|
|
@@ -78456,7 +78449,7 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78456
78449
|
},
|
|
78457
78450
|
{
|
|
78458
78451
|
kind: "numeric",
|
|
78459
|
-
field: "
|
|
78452
|
+
field: "progress",
|
|
78460
78453
|
quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
|
|
78461
78454
|
label: t("Progress", "Avanzamento"),
|
|
78462
78455
|
unit: "%",
|
|
@@ -78814,10 +78807,10 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78814
78807
|
id: "media.seek",
|
|
78815
78808
|
method: "seek",
|
|
78816
78809
|
label: t("Seek", "Vai al punto"),
|
|
78817
|
-
phrase: t("Move {device} to {
|
|
78810
|
+
phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
|
|
78818
78811
|
icon: "fast-forward",
|
|
78819
78812
|
openArgs: [{
|
|
78820
|
-
key: "
|
|
78813
|
+
key: "position",
|
|
78821
78814
|
label: t("Position", "Posizione"),
|
|
78822
78815
|
offer: {
|
|
78823
78816
|
kind: "number",
|
|
@@ -79866,7 +79859,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79866
79859
|
state: [
|
|
79867
79860
|
{
|
|
79868
79861
|
kind: "numeric",
|
|
79869
|
-
field: "
|
|
79862
|
+
field: "co2",
|
|
79870
79863
|
quantity: t("the CO₂", "la CO₂"),
|
|
79871
79864
|
label: t("CO₂", "CO₂"),
|
|
79872
79865
|
unit: "ppm",
|
|
@@ -79874,7 +79867,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79874
79867
|
},
|
|
79875
79868
|
{
|
|
79876
79869
|
kind: "numeric",
|
|
79877
|
-
field: "
|
|
79870
|
+
field: "voc",
|
|
79878
79871
|
quantity: t("the VOC level", "il livello di COV"),
|
|
79879
79872
|
label: t("VOC", "COV"),
|
|
79880
79873
|
unit: "ppb",
|
|
@@ -79910,7 +79903,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79910
79903
|
noun: t("Light level", "Luminosità ambiente"),
|
|
79911
79904
|
state: [{
|
|
79912
79905
|
kind: "numeric",
|
|
79913
|
-
field: "
|
|
79906
|
+
field: "illuminance",
|
|
79914
79907
|
quantity: t("the light level", "la luminosità"),
|
|
79915
79908
|
label: t("Illuminance", "Illuminamento"),
|
|
79916
79909
|
unit: "lx",
|
|
@@ -80113,7 +80106,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80113
80106
|
noun: t("Humidity", "Umidità"),
|
|
80114
80107
|
state: [{
|
|
80115
80108
|
kind: "numeric",
|
|
80116
|
-
field: "
|
|
80109
|
+
field: "humidity",
|
|
80117
80110
|
quantity: t("the humidity", "l’umidità"),
|
|
80118
80111
|
label: t("Humidity", "Umidità"),
|
|
80119
80112
|
unit: "%",
|
|
@@ -80161,7 +80154,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80161
80154
|
state: [
|
|
80162
80155
|
{
|
|
80163
80156
|
kind: "numeric",
|
|
80164
|
-
field: "
|
|
80157
|
+
field: "power",
|
|
80165
80158
|
quantity: t("the power draw", "il consumo"),
|
|
80166
80159
|
label: t("Power", "Potenza"),
|
|
80167
80160
|
unit: "W",
|
|
@@ -80169,7 +80162,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80169
80162
|
},
|
|
80170
80163
|
{
|
|
80171
80164
|
kind: "numeric",
|
|
80172
|
-
field: "
|
|
80165
|
+
field: "energy",
|
|
80173
80166
|
quantity: t("the energy used", "l’energia consumata"),
|
|
80174
80167
|
label: t("Energy", "Energia"),
|
|
80175
80168
|
unit: "kWh",
|
|
@@ -80177,7 +80170,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80177
80170
|
},
|
|
80178
80171
|
{
|
|
80179
80172
|
kind: "numeric",
|
|
80180
|
-
field: "
|
|
80173
|
+
field: "voltage",
|
|
80181
80174
|
quantity: t("the voltage", "la tensione"),
|
|
80182
80175
|
label: t("Voltage", "Tensione"),
|
|
80183
80176
|
unit: "V",
|
|
@@ -80185,7 +80178,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80185
80178
|
},
|
|
80186
80179
|
{
|
|
80187
80180
|
kind: "numeric",
|
|
80188
|
-
field: "
|
|
80181
|
+
field: "current",
|
|
80189
80182
|
quantity: t("the current", "la corrente"),
|
|
80190
80183
|
label: t("Current", "Corrente"),
|
|
80191
80184
|
unit: "A",
|
|
@@ -80202,13 +80195,6 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80202
80195
|
label: t("Where", "Posizione"),
|
|
80203
80196
|
phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
|
|
80204
80197
|
icon: "map-pin"
|
|
80205
|
-
}, {
|
|
80206
|
-
kind: "numeric",
|
|
80207
|
-
field: "batteryPercent",
|
|
80208
|
-
quantity: t("the phone battery", "la batteria del telefono"),
|
|
80209
|
-
label: t("Battery", "Batteria"),
|
|
80210
|
-
unit: "%",
|
|
80211
|
-
icon: "battery"
|
|
80212
80198
|
}]
|
|
80213
80199
|
},
|
|
80214
80200
|
"pressure-sensor": {
|
|
@@ -80216,7 +80202,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80216
80202
|
noun: t("Pressure", "Pressione"),
|
|
80217
80203
|
state: [{
|
|
80218
80204
|
kind: "numeric",
|
|
80219
|
-
field: "
|
|
80205
|
+
field: "pressure",
|
|
80220
80206
|
quantity: t("the pressure", "la pressione"),
|
|
80221
80207
|
label: t("Pressure", "Pressione"),
|
|
80222
80208
|
unit: "hPa",
|
|
@@ -80252,7 +80238,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80252
80238
|
noun: t("Temperature", "Temperatura"),
|
|
80253
80239
|
state: [{
|
|
80254
80240
|
kind: "numeric",
|
|
80255
|
-
field: "
|
|
80241
|
+
field: "temperature",
|
|
80256
80242
|
quantity: t("the temperature", "la temperatura"),
|
|
80257
80243
|
label: t("Temperature", "Temperatura"),
|
|
80258
80244
|
unit: "°C",
|
|
@@ -80323,7 +80309,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80323
80309
|
state: [
|
|
80324
80310
|
{
|
|
80325
80311
|
kind: "numeric",
|
|
80326
|
-
field: "
|
|
80312
|
+
field: "level",
|
|
80327
80313
|
quantity: t("the battery level", "il livello della batteria"),
|
|
80328
80314
|
label: t("Battery", "Batteria"),
|
|
80329
80315
|
unit: "%",
|
|
@@ -80365,7 +80351,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80365
80351
|
icon: "battery-charging"
|
|
80366
80352
|
}
|
|
80367
80353
|
],
|
|
80368
|
-
events: { onStatusChanged: { notOperatorFacing: "the
|
|
80354
|
+
events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
|
|
80369
80355
|
extraEvents: [{
|
|
80370
80356
|
category: EventCategory.DeviceAwake,
|
|
80371
80357
|
label: t("Woke up", "Risvegliato"),
|
|
@@ -80383,7 +80369,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80383
80369
|
noun: t("Network link", "Collegamento di rete"),
|
|
80384
80370
|
state: [{
|
|
80385
80371
|
kind: "numeric",
|
|
80386
|
-
field: "
|
|
80372
|
+
field: "signal",
|
|
80387
80373
|
quantity: t("the signal strength", "l’intensità del segnale"),
|
|
80388
80374
|
label: t("Signal", "Segnale"),
|
|
80389
80375
|
unit: "%",
|