@camstack/addon-training 0.1.99 → 0.1.100
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_training_page-DgVZ6skW.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-BLf4IX1e.mjs} +3 -3
- package/dist/{dist-DNGtQV92.mjs → dist-5otxE_9_.mjs} +101 -115
- package/dist/{dist-D0sqORzx.js → dist-BHRYlf1o.js} +101 -115
- package/dist/{hostInit-DA4zjIvT.mjs → hostInit-B98SkU6O.mjs} +2 -2
- package/dist/index.js +1 -1
- package/dist/orchestrator/training.addon.js +1 -1
- package/dist/orchestrator/training.addon.mjs +1 -1
- package/dist/providers/modal/training-modal.addon.js +1 -1
- package/dist/providers/modal/training-modal.addon.mjs +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-aLdhRRQr.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-4OWl-Jop.mjs} +1 -1
- package/package.json +1 -1
|
@@ -5580,7 +5580,7 @@ var ZodIssueCode = {
|
|
|
5580
5580
|
var ZodFirstPartyTypeKind;
|
|
5581
5581
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5582
5582
|
//#endregion
|
|
5583
|
-
//#region ../types/dist/sleep-
|
|
5583
|
+
//#region ../types/dist/sleep-Crlmu_tO.mjs
|
|
5584
5584
|
/**
|
|
5585
5585
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5586
5586
|
* window to float samples (D455).
|
|
@@ -9067,11 +9067,11 @@ var CAP_NAMES = Object.freeze([
|
|
|
9067
9067
|
Object.freeze({
|
|
9068
9068
|
"air-quality-sensor": [
|
|
9069
9069
|
{
|
|
9070
|
-
"path": "
|
|
9070
|
+
"path": "co2",
|
|
9071
9071
|
"valueType": "number"
|
|
9072
9072
|
},
|
|
9073
9073
|
{
|
|
9074
|
-
"path": "
|
|
9074
|
+
"path": "voc",
|
|
9075
9075
|
"valueType": "number"
|
|
9076
9076
|
},
|
|
9077
9077
|
{
|
|
@@ -9121,7 +9121,7 @@ Object.freeze({
|
|
|
9121
9121
|
}
|
|
9122
9122
|
],
|
|
9123
9123
|
"ambient-light-sensor": [{
|
|
9124
|
-
"path": "
|
|
9124
|
+
"path": "illuminance",
|
|
9125
9125
|
"valueType": "number"
|
|
9126
9126
|
}],
|
|
9127
9127
|
"audio-metrics": [
|
|
@@ -9182,7 +9182,7 @@ Object.freeze({
|
|
|
9182
9182
|
],
|
|
9183
9183
|
"battery": [
|
|
9184
9184
|
{
|
|
9185
|
-
"path": "
|
|
9185
|
+
"path": "level",
|
|
9186
9186
|
"valueType": "number"
|
|
9187
9187
|
},
|
|
9188
9188
|
{
|
|
@@ -9204,7 +9204,7 @@ Object.freeze({
|
|
|
9204
9204
|
"valueType": "number"
|
|
9205
9205
|
},
|
|
9206
9206
|
{
|
|
9207
|
-
"path": "
|
|
9207
|
+
"path": "voltage",
|
|
9208
9208
|
"valueType": "number"
|
|
9209
9209
|
},
|
|
9210
9210
|
{
|
|
@@ -9225,7 +9225,7 @@ Object.freeze({
|
|
|
9225
9225
|
"valueType": "boolean"
|
|
9226
9226
|
}],
|
|
9227
9227
|
"brightness": [{
|
|
9228
|
-
"path": "
|
|
9228
|
+
"path": "level",
|
|
9229
9229
|
"valueType": "number"
|
|
9230
9230
|
}],
|
|
9231
9231
|
"broker": [{
|
|
@@ -9426,7 +9426,7 @@ Object.freeze({
|
|
|
9426
9426
|
"valueType": "number"
|
|
9427
9427
|
},
|
|
9428
9428
|
{
|
|
9429
|
-
"path": "
|
|
9429
|
+
"path": "colorTemperature",
|
|
9430
9430
|
"valueType": "number"
|
|
9431
9431
|
}
|
|
9432
9432
|
],
|
|
@@ -9605,15 +9605,15 @@ Object.freeze({
|
|
|
9605
9605
|
"valueType": "string"
|
|
9606
9606
|
},
|
|
9607
9607
|
{
|
|
9608
|
-
"path": "
|
|
9608
|
+
"path": "remaining",
|
|
9609
9609
|
"valueType": "number"
|
|
9610
9610
|
},
|
|
9611
9611
|
{
|
|
9612
|
-
"path": "
|
|
9612
|
+
"path": "delayedStart",
|
|
9613
9613
|
"valueType": "number"
|
|
9614
9614
|
},
|
|
9615
9615
|
{
|
|
9616
|
-
"path": "
|
|
9616
|
+
"path": "progress",
|
|
9617
9617
|
"valueType": "number"
|
|
9618
9618
|
},
|
|
9619
9619
|
{
|
|
@@ -9727,7 +9727,7 @@ Object.freeze({
|
|
|
9727
9727
|
],
|
|
9728
9728
|
"fan-control": [
|
|
9729
9729
|
{
|
|
9730
|
-
"path": "
|
|
9730
|
+
"path": "speed",
|
|
9731
9731
|
"valueType": "number"
|
|
9732
9732
|
},
|
|
9733
9733
|
{
|
|
@@ -9827,7 +9827,7 @@ Object.freeze({
|
|
|
9827
9827
|
}
|
|
9828
9828
|
],
|
|
9829
9829
|
"humidity-sensor": [{
|
|
9830
|
-
"path": "
|
|
9830
|
+
"path": "humidity",
|
|
9831
9831
|
"valueType": "number"
|
|
9832
9832
|
}],
|
|
9833
9833
|
"image": [{
|
|
@@ -9937,7 +9937,7 @@ Object.freeze({
|
|
|
9937
9937
|
"valueType": "number"
|
|
9938
9938
|
},
|
|
9939
9939
|
{
|
|
9940
|
-
"path": "
|
|
9940
|
+
"path": "progress",
|
|
9941
9941
|
"valueType": "number"
|
|
9942
9942
|
},
|
|
9943
9943
|
{
|
|
@@ -10016,11 +10016,11 @@ Object.freeze({
|
|
|
10016
10016
|
"valueType": "string"
|
|
10017
10017
|
},
|
|
10018
10018
|
{
|
|
10019
|
-
"path": "
|
|
10019
|
+
"path": "position",
|
|
10020
10020
|
"valueType": "number"
|
|
10021
10021
|
},
|
|
10022
10022
|
{
|
|
10023
|
-
"path": "
|
|
10023
|
+
"path": "duration",
|
|
10024
10024
|
"valueType": "number"
|
|
10025
10025
|
},
|
|
10026
10026
|
{
|
|
@@ -10122,11 +10122,11 @@ Object.freeze({
|
|
|
10122
10122
|
]
|
|
10123
10123
|
},
|
|
10124
10124
|
{
|
|
10125
|
-
"path": "
|
|
10125
|
+
"path": "signal",
|
|
10126
10126
|
"valueType": "number"
|
|
10127
10127
|
},
|
|
10128
10128
|
{
|
|
10129
|
-
"path": "
|
|
10129
|
+
"path": "rssi",
|
|
10130
10130
|
"valueType": "number"
|
|
10131
10131
|
},
|
|
10132
10132
|
{
|
|
@@ -10257,23 +10257,23 @@ Object.freeze({
|
|
|
10257
10257
|
],
|
|
10258
10258
|
"power-meter": [
|
|
10259
10259
|
{
|
|
10260
|
-
"path": "
|
|
10260
|
+
"path": "power",
|
|
10261
10261
|
"valueType": "number"
|
|
10262
10262
|
},
|
|
10263
10263
|
{
|
|
10264
|
-
"path": "
|
|
10264
|
+
"path": "energy",
|
|
10265
10265
|
"valueType": "number"
|
|
10266
10266
|
},
|
|
10267
10267
|
{
|
|
10268
|
-
"path": "
|
|
10268
|
+
"path": "voltage",
|
|
10269
10269
|
"valueType": "number"
|
|
10270
10270
|
},
|
|
10271
10271
|
{
|
|
10272
|
-
"path": "
|
|
10272
|
+
"path": "current",
|
|
10273
10273
|
"valueType": "number"
|
|
10274
10274
|
},
|
|
10275
10275
|
{
|
|
10276
|
-
"path": "
|
|
10276
|
+
"path": "apparentPower",
|
|
10277
10277
|
"valueType": "number"
|
|
10278
10278
|
},
|
|
10279
10279
|
{
|
|
@@ -10301,14 +10301,10 @@ Object.freeze({
|
|
|
10301
10301
|
{
|
|
10302
10302
|
"path": "gps.accuracyMeters",
|
|
10303
10303
|
"valueType": "number"
|
|
10304
|
-
},
|
|
10305
|
-
{
|
|
10306
|
-
"path": "batteryPercent",
|
|
10307
|
-
"valueType": "number"
|
|
10308
10304
|
}
|
|
10309
10305
|
],
|
|
10310
10306
|
"pressure-sensor": [{
|
|
10311
|
-
"path": "
|
|
10307
|
+
"path": "pressure",
|
|
10312
10308
|
"valueType": "number"
|
|
10313
10309
|
}],
|
|
10314
10310
|
"privacy-mask": [{
|
|
@@ -10622,7 +10618,7 @@ Object.freeze({
|
|
|
10622
10618
|
"valueType": "boolean"
|
|
10623
10619
|
}],
|
|
10624
10620
|
"temperature-sensor": [{
|
|
10625
|
-
"path": "
|
|
10621
|
+
"path": "temperature",
|
|
10626
10622
|
"valueType": "number"
|
|
10627
10623
|
}],
|
|
10628
10624
|
"update": [
|
|
@@ -10670,7 +10666,7 @@ Object.freeze({
|
|
|
10670
10666
|
"valueType": "string"
|
|
10671
10667
|
},
|
|
10672
10668
|
{
|
|
10673
|
-
"path": "
|
|
10669
|
+
"path": "progress",
|
|
10674
10670
|
"valueType": "number"
|
|
10675
10671
|
},
|
|
10676
10672
|
{
|
|
@@ -11145,7 +11141,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11145
11141
|
return DeviceRole;
|
|
11146
11142
|
}({});
|
|
11147
11143
|
//#endregion
|
|
11148
|
-
//#region ../types/dist/composition-
|
|
11144
|
+
//#region ../types/dist/composition-CZImLpOI.mjs
|
|
11149
11145
|
/**
|
|
11150
11146
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11151
11147
|
*
|
|
@@ -18810,7 +18806,7 @@ var CompositionEventPlanSchema = object({
|
|
|
18810
18806
|
stateField: string(),
|
|
18811
18807
|
fieldKey: string()
|
|
18812
18808
|
});
|
|
18813
|
-
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.
|
|
18809
|
+
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
|
|
18814
18810
|
var CompositionProblemSchema = object({
|
|
18815
18811
|
code: _enum([
|
|
18816
18812
|
"reserved-variant",
|
|
@@ -19129,7 +19125,7 @@ var GROUP_TEMPLATES = [
|
|
|
19129
19125
|
summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
|
|
19130
19126
|
role: DeviceRole.TemperatureSensor,
|
|
19131
19127
|
outputCap: "temperature-sensor",
|
|
19132
|
-
outputField: "
|
|
19128
|
+
outputField: "temperature",
|
|
19133
19129
|
quantity: "temperature",
|
|
19134
19130
|
defaultAggregate: "mean",
|
|
19135
19131
|
empty: "null",
|
|
@@ -19140,7 +19136,7 @@ var GROUP_TEMPLATES = [
|
|
|
19140
19136
|
summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19141
19137
|
role: DeviceRole.HumiditySensor,
|
|
19142
19138
|
outputCap: "humidity-sensor",
|
|
19143
|
-
outputField: "
|
|
19139
|
+
outputField: "humidity",
|
|
19144
19140
|
quantity: "humidity",
|
|
19145
19141
|
defaultAggregate: "mean",
|
|
19146
19142
|
empty: "null",
|
|
@@ -19151,7 +19147,7 @@ var GROUP_TEMPLATES = [
|
|
|
19151
19147
|
summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
|
|
19152
19148
|
role: DeviceRole.PressureSensor,
|
|
19153
19149
|
outputCap: "pressure-sensor",
|
|
19154
|
-
outputField: "
|
|
19150
|
+
outputField: "pressure",
|
|
19155
19151
|
quantity: "pressure",
|
|
19156
19152
|
defaultAggregate: "mean",
|
|
19157
19153
|
empty: "null",
|
|
@@ -19162,7 +19158,7 @@ var GROUP_TEMPLATES = [
|
|
|
19162
19158
|
summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
|
|
19163
19159
|
role: DeviceRole.AmbientLightSensor,
|
|
19164
19160
|
outputCap: "ambient-light-sensor",
|
|
19165
|
-
outputField: "
|
|
19161
|
+
outputField: "illuminance",
|
|
19166
19162
|
quantity: "illuminance",
|
|
19167
19163
|
defaultAggregate: "mean",
|
|
19168
19164
|
empty: "null",
|
|
@@ -19173,7 +19169,7 @@ var GROUP_TEMPLATES = [
|
|
|
19173
19169
|
summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
|
|
19174
19170
|
role: DeviceRole.PowerSensor,
|
|
19175
19171
|
outputCap: "power-meter",
|
|
19176
|
-
outputField: "
|
|
19172
|
+
outputField: "power",
|
|
19177
19173
|
quantity: "power",
|
|
19178
19174
|
defaultAggregate: "sum",
|
|
19179
19175
|
empty: "omit",
|
|
@@ -19184,7 +19180,7 @@ var GROUP_TEMPLATES = [
|
|
|
19184
19180
|
summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
|
|
19185
19181
|
role: DeviceRole.EnergySensor,
|
|
19186
19182
|
outputCap: "power-meter",
|
|
19187
|
-
outputField: "
|
|
19183
|
+
outputField: "energy",
|
|
19188
19184
|
quantity: "energy",
|
|
19189
19185
|
defaultAggregate: "sum",
|
|
19190
19186
|
empty: "omit",
|
|
@@ -19195,7 +19191,7 @@ var GROUP_TEMPLATES = [
|
|
|
19195
19191
|
summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19196
19192
|
role: DeviceRole.BatterySensor,
|
|
19197
19193
|
outputCap: "battery",
|
|
19198
|
-
outputField: "
|
|
19194
|
+
outputField: "level",
|
|
19199
19195
|
quantity: "percentage",
|
|
19200
19196
|
defaultAggregate: "mean",
|
|
19201
19197
|
empty: "null",
|
|
@@ -57313,9 +57309,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
57313
57309
|
}), LogStreamEntrySchema, { kind: "subscription" });
|
|
57314
57310
|
object({
|
|
57315
57311
|
/** Carbon dioxide concentration in ppm. */
|
|
57316
|
-
|
|
57312
|
+
co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
|
|
57317
57313
|
/** Total volatile organic compounds in ppb. */
|
|
57318
|
-
|
|
57314
|
+
voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
|
|
57319
57315
|
/** Particulate matter ≤ 2.5 μm in µg/m³. */
|
|
57320
57316
|
pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
|
|
57321
57317
|
/** Particulate matter ≤ 10 μm in µg/m³. */
|
|
@@ -57328,7 +57324,7 @@ object({
|
|
|
57328
57324
|
DeviceType.Sensor;
|
|
57329
57325
|
object({
|
|
57330
57326
|
/** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
|
|
57331
|
-
|
|
57327
|
+
illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
|
|
57332
57328
|
precision: 0,
|
|
57333
57329
|
label: "Illuminance"
|
|
57334
57330
|
})),
|
|
@@ -57556,7 +57552,7 @@ var BatteryStatusSchema = object({
|
|
|
57556
57552
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
57557
57553
|
* declines to band a non-finite reading, which is the correct shape.
|
|
57558
57554
|
*/
|
|
57559
|
-
|
|
57555
|
+
level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
|
|
57560
57556
|
/**
|
|
57561
57557
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
57562
57558
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -57566,7 +57562,7 @@ var BatteryStatusSchema = object({
|
|
|
57566
57562
|
* `'unknown'` is the absence of an answer: the provider has not read the
|
|
57567
57563
|
* power fields yet, or the firmware reported neither. Before it existed,
|
|
57568
57564
|
* two unreadable fields produced `'none'`, and a camera nobody had reached
|
|
57569
|
-
* was drawn "on battery alone" — the same D315 defect `
|
|
57565
|
+
* was drawn "on battery alone" — the same D315 defect `level` closed
|
|
57570
57566
|
* by going nullable. Consumers SKIP it (no charger state published, no
|
|
57571
57567
|
* glyph, no HomeKit ChargingState) rather than coerce it either way.
|
|
57572
57568
|
*/
|
|
@@ -57590,7 +57586,7 @@ var BatteryStatusSchema = object({
|
|
|
57590
57586
|
* that only report charge. A second reading on this cap, not a second
|
|
57591
57587
|
* `numeric-sensor` on the same device.
|
|
57592
57588
|
*/
|
|
57593
|
-
|
|
57589
|
+
voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
57594
57590
|
/**
|
|
57595
57591
|
* Ms epoch of the last time the device PROVED it was reachable — a
|
|
57596
57592
|
* completed firmware round-trip, an observed wake, or an inbound push
|
|
@@ -57624,7 +57620,7 @@ var BatteryStatusSchema = object({
|
|
|
57624
57620
|
/**
|
|
57625
57621
|
* True when the source is a BINARY low-battery indicator (HA
|
|
57626
57622
|
* `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
|
|
57627
|
-
* charge level — `
|
|
57623
|
+
* charge level — `level` is then a coarse stand-in (100 = normal,
|
|
57628
57624
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
57629
57625
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
57630
57626
|
*/
|
|
@@ -57650,19 +57646,19 @@ object({
|
|
|
57650
57646
|
DeviceType.Sensor;
|
|
57651
57647
|
object({
|
|
57652
57648
|
/** Current level as 0..100 inclusive. Firmware-reported. */
|
|
57653
|
-
|
|
57649
|
+
level: number().min(0).max(100).meta(readingMeta("percentage")),
|
|
57654
57650
|
/** Ms epoch of the last operator-driven change. Useful for UI freshness. */
|
|
57655
57651
|
lastChangedAt: number()
|
|
57656
57652
|
});
|
|
57657
57653
|
DeviceType.Light, method(object({
|
|
57658
57654
|
deviceId: number().int().nonnegative(),
|
|
57659
|
-
|
|
57655
|
+
level: number().min(0).max(100)
|
|
57660
57656
|
}), _void(), {
|
|
57661
57657
|
kind: "mutation",
|
|
57662
57658
|
auth: "protected"
|
|
57663
57659
|
}), object({
|
|
57664
57660
|
deviceId: number(),
|
|
57665
|
-
|
|
57661
|
+
level: number().min(0).max(100),
|
|
57666
57662
|
lastChangedAt: number()
|
|
57667
57663
|
});
|
|
57668
57664
|
DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
@@ -58163,11 +58159,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
|
|
|
58163
58159
|
}),
|
|
58164
58160
|
object({
|
|
58165
58161
|
mode: literal("mired"),
|
|
58166
|
-
|
|
58162
|
+
colorTemperature: number().int().min(50).max(1e3)
|
|
58167
58163
|
})
|
|
58168
58164
|
]);
|
|
58169
58165
|
object({
|
|
58170
|
-
/** Active color mode — which of `rgb` / `hsv` / `
|
|
58166
|
+
/** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
|
|
58171
58167
|
* the bulb's current state. */
|
|
58172
58168
|
mode: _enum([
|
|
58173
58169
|
"rgb",
|
|
@@ -58179,7 +58175,7 @@ object({
|
|
|
58179
58175
|
/** Populated when `mode === 'hsv'`. */
|
|
58180
58176
|
hsv: HsvTripletSchema.optional(),
|
|
58181
58177
|
/** Populated when `mode === 'mired'`. */
|
|
58182
|
-
|
|
58178
|
+
colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
|
|
58183
58179
|
/** Ms epoch of the last operator-driven change. */
|
|
58184
58180
|
lastChangedAt: number()
|
|
58185
58181
|
});
|
|
@@ -58198,7 +58194,7 @@ DeviceType.Light, method(object({
|
|
|
58198
58194
|
]),
|
|
58199
58195
|
rgb: RgbTripletSchema.optional(),
|
|
58200
58196
|
hsv: HsvTripletSchema.optional(),
|
|
58201
|
-
|
|
58197
|
+
colorTemperature: number().int().optional(),
|
|
58202
58198
|
lastChangedAt: number()
|
|
58203
58199
|
});
|
|
58204
58200
|
var ConnectionTestOutcomeSchema = discriminatedUnion("outcome", [
|
|
@@ -58624,11 +58620,11 @@ object({
|
|
|
58624
58620
|
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
58625
58621
|
availablePrograms: array(string()),
|
|
58626
58622
|
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
58627
|
-
|
|
58623
|
+
remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
58628
58624
|
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
58629
|
-
|
|
58625
|
+
delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
58630
58626
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
58631
|
-
|
|
58627
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
58632
58628
|
/** True when the door is reported open; null when the door state is not known. */
|
|
58633
58629
|
doorOpen: boolean().nullable(),
|
|
58634
58630
|
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
@@ -59246,7 +59242,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
|
|
|
59246
59242
|
object({
|
|
59247
59243
|
/** Active speed as 0..100 inclusive. Null when the device has no
|
|
59248
59244
|
* speed surface (single-speed fan). */
|
|
59249
|
-
|
|
59245
|
+
speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
59250
59246
|
/** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
|
|
59251
59247
|
* a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
|
|
59252
59248
|
percentageStep: number().positive().optional().meta(readingMeta("percentage")),
|
|
@@ -59266,7 +59262,7 @@ object({
|
|
|
59266
59262
|
});
|
|
59267
59263
|
DeviceType.Fan, method(object({
|
|
59268
59264
|
deviceId: number().int().nonnegative(),
|
|
59269
|
-
|
|
59265
|
+
speed: number().min(0).max(100)
|
|
59270
59266
|
}), _void(), {
|
|
59271
59267
|
kind: "mutation",
|
|
59272
59268
|
auth: "protected"
|
|
@@ -59449,7 +59445,7 @@ DeviceType.Humidifier, method(object({
|
|
|
59449
59445
|
});
|
|
59450
59446
|
object({
|
|
59451
59447
|
/** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
|
|
59452
|
-
|
|
59448
|
+
humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
|
|
59453
59449
|
precision: 0,
|
|
59454
59450
|
label: "Humidity"
|
|
59455
59451
|
})),
|
|
@@ -59892,7 +59888,7 @@ object({
|
|
|
59892
59888
|
batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
59893
59889
|
/** 0..100 mowing-completion percentage of the current task, or null when no
|
|
59894
59890
|
* task is active / progress is unavailable. */
|
|
59895
|
-
|
|
59891
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
59896
59892
|
/** Current device/event code (dynamic — mostly status, sometimes an error),
|
|
59897
59893
|
* or null when unknown. */
|
|
59898
59894
|
currentCode: number().nullable().meta(readingMeta("none")),
|
|
@@ -60382,10 +60378,10 @@ object({
|
|
|
60382
60378
|
currentMedia: MediaInfoSchema.nullable(),
|
|
60383
60379
|
/** Current playback position in ms. Null when not seekable or
|
|
60384
60380
|
* nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
|
|
60385
|
-
|
|
60381
|
+
position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
60386
60382
|
/** Total duration of the current media in ms. Null when unknown
|
|
60387
60383
|
* (live stream) or nothing is playing. */
|
|
60388
|
-
|
|
60384
|
+
duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
60389
60385
|
/** Shuffle toggle. Null when no shuffle surface.
|
|
60390
60386
|
* Pair with `DeviceFeature.MediaPlayerShuffle`. */
|
|
60391
60387
|
shuffle: boolean().nullable(),
|
|
@@ -60412,7 +60408,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
|
|
|
60412
60408
|
auth: "protected"
|
|
60413
60409
|
}), method(object({
|
|
60414
60410
|
deviceId: number().int().nonnegative(),
|
|
60415
|
-
|
|
60411
|
+
position: number().int().nonnegative()
|
|
60416
60412
|
}), _void(), {
|
|
60417
60413
|
kind: "mutation",
|
|
60418
60414
|
auth: "protected"
|
|
@@ -61085,9 +61081,9 @@ var NetworkLinkStatusSchema = object({
|
|
|
61085
61081
|
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
61086
61082
|
* SKIP a null rather than coerce it.
|
|
61087
61083
|
*/
|
|
61088
|
-
|
|
61084
|
+
signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
61089
61085
|
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
61090
|
-
|
|
61086
|
+
rssi: number().optional().meta(readingMeta("signal-level")),
|
|
61091
61087
|
/** Network name of a wireless link, when the firmware reports it. */
|
|
61092
61088
|
ssid: string().optional(),
|
|
61093
61089
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
@@ -62237,16 +62233,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
62237
62233
|
auth: "admin"
|
|
62238
62234
|
});
|
|
62239
62235
|
object({
|
|
62240
|
-
/** Instantaneous power draw
|
|
62241
|
-
|
|
62236
|
+
/** Instantaneous power draw (watts). */
|
|
62237
|
+
power: number().optional().meta(readingMeta("power", { label: "Power" })),
|
|
62242
62238
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
62243
|
-
|
|
62244
|
-
/** Voltage
|
|
62245
|
-
|
|
62239
|
+
energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
|
|
62240
|
+
/** Voltage (volts). */
|
|
62241
|
+
voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
62246
62242
|
/** Current in amperes. */
|
|
62247
|
-
|
|
62243
|
+
current: number().optional().meta(readingMeta("current", { label: "Current" })),
|
|
62248
62244
|
/** Apparent power in volt-amperes. */
|
|
62249
|
-
|
|
62245
|
+
apparentPower: number().optional().meta(readingMeta("apparent-power")),
|
|
62250
62246
|
/** Power factor (0..1) if reported. */
|
|
62251
62247
|
powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
|
|
62252
62248
|
/** Ms epoch when the slice was last updated. */
|
|
@@ -62301,16 +62297,13 @@ object({
|
|
|
62301
62297
|
location: string().nullable(),
|
|
62302
62298
|
/** GPS coordinates when available. Null otherwise. */
|
|
62303
62299
|
gps: GpsLocationSchema.nullable(),
|
|
62304
|
-
/** Optional battery level of the tracking device (0..100). Null
|
|
62305
|
-
* when not reported. */
|
|
62306
|
-
batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
62307
62300
|
/** Ms epoch when the slice was last updated. */
|
|
62308
62301
|
lastChangedAt: number()
|
|
62309
62302
|
});
|
|
62310
62303
|
DeviceType.Presence;
|
|
62311
62304
|
object({
|
|
62312
62305
|
/** Current pressure in hPa. `null` when the sample was refused (D393). */
|
|
62313
|
-
|
|
62306
|
+
pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
|
|
62314
62307
|
/** Ms epoch when the slice was last updated. */
|
|
62315
62308
|
lastFetchedAt: number()
|
|
62316
62309
|
});
|
|
@@ -65313,7 +65306,7 @@ object({
|
|
|
65313
65306
|
DeviceType.Sensor;
|
|
65314
65307
|
object({
|
|
65315
65308
|
/** Current temperature in Celsius. `null` when the sample was refused (D393). */
|
|
65316
|
-
|
|
65309
|
+
temperature: number().nullable().meta(readingMeta("temperature", {
|
|
65317
65310
|
precision: 1,
|
|
65318
65311
|
label: "Temperature"
|
|
65319
65312
|
})),
|
|
@@ -65577,7 +65570,7 @@ object({
|
|
|
65577
65570
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
65578
65571
|
availableFanSpeeds: array(string()),
|
|
65579
65572
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
65580
|
-
|
|
65573
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65581
65574
|
/** Current error code (0 / null = no error). */
|
|
65582
65575
|
errorCode: number().nullable().meta(readingMeta("none")),
|
|
65583
65576
|
/** Human label for {@link errorCode}, or null when none / undecodable. */
|
|
@@ -76649,7 +76642,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76649
76642
|
label: t("Full brightness", "Luminosità massima"),
|
|
76650
76643
|
phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
|
|
76651
76644
|
icon: "sun",
|
|
76652
|
-
args: {
|
|
76645
|
+
args: { level: 100 }
|
|
76653
76646
|
},
|
|
76654
76647
|
{
|
|
76655
76648
|
id: "brightness.half",
|
|
@@ -76657,7 +76650,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76657
76650
|
label: t("Half brightness", "Luminosità a metà"),
|
|
76658
76651
|
phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
|
|
76659
76652
|
icon: "sun-dim",
|
|
76660
|
-
args: {
|
|
76653
|
+
args: { level: 50 }
|
|
76661
76654
|
},
|
|
76662
76655
|
{
|
|
76663
76656
|
id: "brightness.off",
|
|
@@ -76665,16 +76658,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76665
76658
|
label: t("Brightness off", "Luminosità a zero"),
|
|
76666
76659
|
phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
|
|
76667
76660
|
icon: "lightbulb-off",
|
|
76668
|
-
args: {
|
|
76661
|
+
args: { level: 0 }
|
|
76669
76662
|
},
|
|
76670
76663
|
{
|
|
76671
76664
|
id: "brightness.set",
|
|
76672
76665
|
method: "setBrightness",
|
|
76673
76666
|
label: t("Set brightness", "Imposta la luminosità"),
|
|
76674
|
-
phrase: t("Set the brightness of {device} to {
|
|
76667
|
+
phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
|
|
76675
76668
|
icon: "sun-medium",
|
|
76676
76669
|
openArgs: [{
|
|
76677
|
-
key: "
|
|
76670
|
+
key: "level",
|
|
76678
76671
|
label: PERCENT,
|
|
76679
76672
|
offer: {
|
|
76680
76673
|
kind: "number",
|
|
@@ -76688,13 +76681,13 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76688
76681
|
],
|
|
76689
76682
|
state: [{
|
|
76690
76683
|
kind: "numeric",
|
|
76691
|
-
field: "
|
|
76684
|
+
field: "level",
|
|
76692
76685
|
quantity: t("the brightness", "la luminosità"),
|
|
76693
76686
|
label: t("Brightness", "Luminosità"),
|
|
76694
76687
|
unit: "%",
|
|
76695
76688
|
icon: "sun"
|
|
76696
76689
|
}],
|
|
76697
|
-
events: { onBrightnessChanged: { notOperatorFacing: "the `
|
|
76690
|
+
events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
|
|
76698
76691
|
},
|
|
76699
76692
|
color: {
|
|
76700
76693
|
scope: "device",
|
|
@@ -76708,7 +76701,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76708
76701
|
icon: "sun",
|
|
76709
76702
|
args: { color: {
|
|
76710
76703
|
mode: "mired",
|
|
76711
|
-
|
|
76704
|
+
colorTemperature: 370
|
|
76712
76705
|
} }
|
|
76713
76706
|
},
|
|
76714
76707
|
{
|
|
@@ -76719,7 +76712,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76719
76712
|
icon: "snowflake",
|
|
76720
76713
|
args: { color: {
|
|
76721
76714
|
mode: "mired",
|
|
76722
|
-
|
|
76715
|
+
colorTemperature: 200
|
|
76723
76716
|
} }
|
|
76724
76717
|
},
|
|
76725
76718
|
{
|
|
@@ -77333,7 +77326,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77333
77326
|
label: t("Fan off", "Ventilatore spento"),
|
|
77334
77327
|
phrase: t("Stop {device}", "Ferma {device}"),
|
|
77335
77328
|
icon: "power-off",
|
|
77336
|
-
args: {
|
|
77329
|
+
args: { speed: 0 }
|
|
77337
77330
|
},
|
|
77338
77331
|
{
|
|
77339
77332
|
id: "fan.full",
|
|
@@ -77341,16 +77334,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77341
77334
|
label: t("Fan full", "Ventilatore al massimo"),
|
|
77342
77335
|
phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
|
|
77343
77336
|
icon: "fan",
|
|
77344
|
-
args: {
|
|
77337
|
+
args: { speed: 100 }
|
|
77345
77338
|
},
|
|
77346
77339
|
{
|
|
77347
77340
|
id: "fan.speed",
|
|
77348
77341
|
method: "setPercentage",
|
|
77349
77342
|
label: t("Set speed", "Imposta la velocità"),
|
|
77350
|
-
phrase: t("Set the speed of {device} to {
|
|
77343
|
+
phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
|
|
77351
77344
|
icon: "fan",
|
|
77352
77345
|
openArgs: [{
|
|
77353
|
-
key: "
|
|
77346
|
+
key: "speed",
|
|
77354
77347
|
label: t("Speed", "Velocità"),
|
|
77355
77348
|
offer: {
|
|
77356
77349
|
kind: "number",
|
|
@@ -77412,7 +77405,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77412
77405
|
],
|
|
77413
77406
|
state: [{
|
|
77414
77407
|
kind: "numeric",
|
|
77415
|
-
field: "
|
|
77408
|
+
field: "speed",
|
|
77416
77409
|
quantity: t("the speed", "la velocità"),
|
|
77417
77410
|
label: t("Speed", "Velocità"),
|
|
77418
77411
|
unit: "%",
|
|
@@ -78210,7 +78203,7 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78210
78203
|
},
|
|
78211
78204
|
{
|
|
78212
78205
|
kind: "numeric",
|
|
78213
|
-
field: "
|
|
78206
|
+
field: "progress",
|
|
78214
78207
|
quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
|
|
78215
78208
|
label: t("Progress", "Avanzamento"),
|
|
78216
78209
|
unit: "%",
|
|
@@ -78568,10 +78561,10 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78568
78561
|
id: "media.seek",
|
|
78569
78562
|
method: "seek",
|
|
78570
78563
|
label: t("Seek", "Vai al punto"),
|
|
78571
|
-
phrase: t("Move {device} to {
|
|
78564
|
+
phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
|
|
78572
78565
|
icon: "fast-forward",
|
|
78573
78566
|
openArgs: [{
|
|
78574
|
-
key: "
|
|
78567
|
+
key: "position",
|
|
78575
78568
|
label: t("Position", "Posizione"),
|
|
78576
78569
|
offer: {
|
|
78577
78570
|
kind: "number",
|
|
@@ -79620,7 +79613,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79620
79613
|
state: [
|
|
79621
79614
|
{
|
|
79622
79615
|
kind: "numeric",
|
|
79623
|
-
field: "
|
|
79616
|
+
field: "co2",
|
|
79624
79617
|
quantity: t("the CO₂", "la CO₂"),
|
|
79625
79618
|
label: t("CO₂", "CO₂"),
|
|
79626
79619
|
unit: "ppm",
|
|
@@ -79628,7 +79621,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79628
79621
|
},
|
|
79629
79622
|
{
|
|
79630
79623
|
kind: "numeric",
|
|
79631
|
-
field: "
|
|
79624
|
+
field: "voc",
|
|
79632
79625
|
quantity: t("the VOC level", "il livello di COV"),
|
|
79633
79626
|
label: t("VOC", "COV"),
|
|
79634
79627
|
unit: "ppb",
|
|
@@ -79664,7 +79657,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79664
79657
|
noun: t("Light level", "Luminosità ambiente"),
|
|
79665
79658
|
state: [{
|
|
79666
79659
|
kind: "numeric",
|
|
79667
|
-
field: "
|
|
79660
|
+
field: "illuminance",
|
|
79668
79661
|
quantity: t("the light level", "la luminosità"),
|
|
79669
79662
|
label: t("Illuminance", "Illuminamento"),
|
|
79670
79663
|
unit: "lx",
|
|
@@ -79867,7 +79860,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79867
79860
|
noun: t("Humidity", "Umidità"),
|
|
79868
79861
|
state: [{
|
|
79869
79862
|
kind: "numeric",
|
|
79870
|
-
field: "
|
|
79863
|
+
field: "humidity",
|
|
79871
79864
|
quantity: t("the humidity", "l’umidità"),
|
|
79872
79865
|
label: t("Humidity", "Umidità"),
|
|
79873
79866
|
unit: "%",
|
|
@@ -79915,7 +79908,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79915
79908
|
state: [
|
|
79916
79909
|
{
|
|
79917
79910
|
kind: "numeric",
|
|
79918
|
-
field: "
|
|
79911
|
+
field: "power",
|
|
79919
79912
|
quantity: t("the power draw", "il consumo"),
|
|
79920
79913
|
label: t("Power", "Potenza"),
|
|
79921
79914
|
unit: "W",
|
|
@@ -79923,7 +79916,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79923
79916
|
},
|
|
79924
79917
|
{
|
|
79925
79918
|
kind: "numeric",
|
|
79926
|
-
field: "
|
|
79919
|
+
field: "energy",
|
|
79927
79920
|
quantity: t("the energy used", "l’energia consumata"),
|
|
79928
79921
|
label: t("Energy", "Energia"),
|
|
79929
79922
|
unit: "kWh",
|
|
@@ -79931,7 +79924,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79931
79924
|
},
|
|
79932
79925
|
{
|
|
79933
79926
|
kind: "numeric",
|
|
79934
|
-
field: "
|
|
79927
|
+
field: "voltage",
|
|
79935
79928
|
quantity: t("the voltage", "la tensione"),
|
|
79936
79929
|
label: t("Voltage", "Tensione"),
|
|
79937
79930
|
unit: "V",
|
|
@@ -79939,7 +79932,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79939
79932
|
},
|
|
79940
79933
|
{
|
|
79941
79934
|
kind: "numeric",
|
|
79942
|
-
field: "
|
|
79935
|
+
field: "current",
|
|
79943
79936
|
quantity: t("the current", "la corrente"),
|
|
79944
79937
|
label: t("Current", "Corrente"),
|
|
79945
79938
|
unit: "A",
|
|
@@ -79956,13 +79949,6 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79956
79949
|
label: t("Where", "Posizione"),
|
|
79957
79950
|
phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
|
|
79958
79951
|
icon: "map-pin"
|
|
79959
|
-
}, {
|
|
79960
|
-
kind: "numeric",
|
|
79961
|
-
field: "batteryPercent",
|
|
79962
|
-
quantity: t("the phone battery", "la batteria del telefono"),
|
|
79963
|
-
label: t("Battery", "Batteria"),
|
|
79964
|
-
unit: "%",
|
|
79965
|
-
icon: "battery"
|
|
79966
79952
|
}]
|
|
79967
79953
|
},
|
|
79968
79954
|
"pressure-sensor": {
|
|
@@ -79970,7 +79956,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79970
79956
|
noun: t("Pressure", "Pressione"),
|
|
79971
79957
|
state: [{
|
|
79972
79958
|
kind: "numeric",
|
|
79973
|
-
field: "
|
|
79959
|
+
field: "pressure",
|
|
79974
79960
|
quantity: t("the pressure", "la pressione"),
|
|
79975
79961
|
label: t("Pressure", "Pressione"),
|
|
79976
79962
|
unit: "hPa",
|
|
@@ -80006,7 +79992,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80006
79992
|
noun: t("Temperature", "Temperatura"),
|
|
80007
79993
|
state: [{
|
|
80008
79994
|
kind: "numeric",
|
|
80009
|
-
field: "
|
|
79995
|
+
field: "temperature",
|
|
80010
79996
|
quantity: t("the temperature", "la temperatura"),
|
|
80011
79997
|
label: t("Temperature", "Temperatura"),
|
|
80012
79998
|
unit: "°C",
|
|
@@ -80077,7 +80063,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80077
80063
|
state: [
|
|
80078
80064
|
{
|
|
80079
80065
|
kind: "numeric",
|
|
80080
|
-
field: "
|
|
80066
|
+
field: "level",
|
|
80081
80067
|
quantity: t("the battery level", "il livello della batteria"),
|
|
80082
80068
|
label: t("Battery", "Batteria"),
|
|
80083
80069
|
unit: "%",
|
|
@@ -80119,7 +80105,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80119
80105
|
icon: "battery-charging"
|
|
80120
80106
|
}
|
|
80121
80107
|
],
|
|
80122
|
-
events: { onStatusChanged: { notOperatorFacing: "the
|
|
80108
|
+
events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
|
|
80123
80109
|
extraEvents: [{
|
|
80124
80110
|
category: EventCategory.DeviceAwake,
|
|
80125
80111
|
label: t("Woke up", "Risvegliato"),
|
|
@@ -80137,7 +80123,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80137
80123
|
noun: t("Network link", "Collegamento di rete"),
|
|
80138
80124
|
state: [{
|
|
80139
80125
|
kind: "numeric",
|
|
80140
|
-
field: "
|
|
80126
|
+
field: "signal",
|
|
80141
80127
|
quantity: t("the signal strength", "l’intensità del segnale"),
|
|
80142
80128
|
label: t("Signal", "Segnale"),
|
|
80143
80129
|
unit: "%",
|