@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
|
@@ -5613,7 +5613,7 @@ var ZodIssueCode = {
|
|
|
5613
5613
|
var ZodFirstPartyTypeKind;
|
|
5614
5614
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5615
5615
|
//#endregion
|
|
5616
|
-
//#region ../types/dist/sleep-
|
|
5616
|
+
//#region ../types/dist/sleep-Crlmu_tO.mjs
|
|
5617
5617
|
/**
|
|
5618
5618
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5619
5619
|
* window to float samples (D455).
|
|
@@ -9100,11 +9100,11 @@ var CAP_NAMES = Object.freeze([
|
|
|
9100
9100
|
Object.freeze({
|
|
9101
9101
|
"air-quality-sensor": [
|
|
9102
9102
|
{
|
|
9103
|
-
"path": "
|
|
9103
|
+
"path": "co2",
|
|
9104
9104
|
"valueType": "number"
|
|
9105
9105
|
},
|
|
9106
9106
|
{
|
|
9107
|
-
"path": "
|
|
9107
|
+
"path": "voc",
|
|
9108
9108
|
"valueType": "number"
|
|
9109
9109
|
},
|
|
9110
9110
|
{
|
|
@@ -9154,7 +9154,7 @@ Object.freeze({
|
|
|
9154
9154
|
}
|
|
9155
9155
|
],
|
|
9156
9156
|
"ambient-light-sensor": [{
|
|
9157
|
-
"path": "
|
|
9157
|
+
"path": "illuminance",
|
|
9158
9158
|
"valueType": "number"
|
|
9159
9159
|
}],
|
|
9160
9160
|
"audio-metrics": [
|
|
@@ -9215,7 +9215,7 @@ Object.freeze({
|
|
|
9215
9215
|
],
|
|
9216
9216
|
"battery": [
|
|
9217
9217
|
{
|
|
9218
|
-
"path": "
|
|
9218
|
+
"path": "level",
|
|
9219
9219
|
"valueType": "number"
|
|
9220
9220
|
},
|
|
9221
9221
|
{
|
|
@@ -9237,7 +9237,7 @@ Object.freeze({
|
|
|
9237
9237
|
"valueType": "number"
|
|
9238
9238
|
},
|
|
9239
9239
|
{
|
|
9240
|
-
"path": "
|
|
9240
|
+
"path": "voltage",
|
|
9241
9241
|
"valueType": "number"
|
|
9242
9242
|
},
|
|
9243
9243
|
{
|
|
@@ -9258,7 +9258,7 @@ Object.freeze({
|
|
|
9258
9258
|
"valueType": "boolean"
|
|
9259
9259
|
}],
|
|
9260
9260
|
"brightness": [{
|
|
9261
|
-
"path": "
|
|
9261
|
+
"path": "level",
|
|
9262
9262
|
"valueType": "number"
|
|
9263
9263
|
}],
|
|
9264
9264
|
"broker": [{
|
|
@@ -9459,7 +9459,7 @@ Object.freeze({
|
|
|
9459
9459
|
"valueType": "number"
|
|
9460
9460
|
},
|
|
9461
9461
|
{
|
|
9462
|
-
"path": "
|
|
9462
|
+
"path": "colorTemperature",
|
|
9463
9463
|
"valueType": "number"
|
|
9464
9464
|
}
|
|
9465
9465
|
],
|
|
@@ -9638,15 +9638,15 @@ Object.freeze({
|
|
|
9638
9638
|
"valueType": "string"
|
|
9639
9639
|
},
|
|
9640
9640
|
{
|
|
9641
|
-
"path": "
|
|
9641
|
+
"path": "remaining",
|
|
9642
9642
|
"valueType": "number"
|
|
9643
9643
|
},
|
|
9644
9644
|
{
|
|
9645
|
-
"path": "
|
|
9645
|
+
"path": "delayedStart",
|
|
9646
9646
|
"valueType": "number"
|
|
9647
9647
|
},
|
|
9648
9648
|
{
|
|
9649
|
-
"path": "
|
|
9649
|
+
"path": "progress",
|
|
9650
9650
|
"valueType": "number"
|
|
9651
9651
|
},
|
|
9652
9652
|
{
|
|
@@ -9760,7 +9760,7 @@ Object.freeze({
|
|
|
9760
9760
|
],
|
|
9761
9761
|
"fan-control": [
|
|
9762
9762
|
{
|
|
9763
|
-
"path": "
|
|
9763
|
+
"path": "speed",
|
|
9764
9764
|
"valueType": "number"
|
|
9765
9765
|
},
|
|
9766
9766
|
{
|
|
@@ -9860,7 +9860,7 @@ Object.freeze({
|
|
|
9860
9860
|
}
|
|
9861
9861
|
],
|
|
9862
9862
|
"humidity-sensor": [{
|
|
9863
|
-
"path": "
|
|
9863
|
+
"path": "humidity",
|
|
9864
9864
|
"valueType": "number"
|
|
9865
9865
|
}],
|
|
9866
9866
|
"image": [{
|
|
@@ -9970,7 +9970,7 @@ Object.freeze({
|
|
|
9970
9970
|
"valueType": "number"
|
|
9971
9971
|
},
|
|
9972
9972
|
{
|
|
9973
|
-
"path": "
|
|
9973
|
+
"path": "progress",
|
|
9974
9974
|
"valueType": "number"
|
|
9975
9975
|
},
|
|
9976
9976
|
{
|
|
@@ -10049,11 +10049,11 @@ Object.freeze({
|
|
|
10049
10049
|
"valueType": "string"
|
|
10050
10050
|
},
|
|
10051
10051
|
{
|
|
10052
|
-
"path": "
|
|
10052
|
+
"path": "position",
|
|
10053
10053
|
"valueType": "number"
|
|
10054
10054
|
},
|
|
10055
10055
|
{
|
|
10056
|
-
"path": "
|
|
10056
|
+
"path": "duration",
|
|
10057
10057
|
"valueType": "number"
|
|
10058
10058
|
},
|
|
10059
10059
|
{
|
|
@@ -10155,11 +10155,11 @@ Object.freeze({
|
|
|
10155
10155
|
]
|
|
10156
10156
|
},
|
|
10157
10157
|
{
|
|
10158
|
-
"path": "
|
|
10158
|
+
"path": "signal",
|
|
10159
10159
|
"valueType": "number"
|
|
10160
10160
|
},
|
|
10161
10161
|
{
|
|
10162
|
-
"path": "
|
|
10162
|
+
"path": "rssi",
|
|
10163
10163
|
"valueType": "number"
|
|
10164
10164
|
},
|
|
10165
10165
|
{
|
|
@@ -10290,23 +10290,23 @@ Object.freeze({
|
|
|
10290
10290
|
],
|
|
10291
10291
|
"power-meter": [
|
|
10292
10292
|
{
|
|
10293
|
-
"path": "
|
|
10293
|
+
"path": "power",
|
|
10294
10294
|
"valueType": "number"
|
|
10295
10295
|
},
|
|
10296
10296
|
{
|
|
10297
|
-
"path": "
|
|
10297
|
+
"path": "energy",
|
|
10298
10298
|
"valueType": "number"
|
|
10299
10299
|
},
|
|
10300
10300
|
{
|
|
10301
|
-
"path": "
|
|
10301
|
+
"path": "voltage",
|
|
10302
10302
|
"valueType": "number"
|
|
10303
10303
|
},
|
|
10304
10304
|
{
|
|
10305
|
-
"path": "
|
|
10305
|
+
"path": "current",
|
|
10306
10306
|
"valueType": "number"
|
|
10307
10307
|
},
|
|
10308
10308
|
{
|
|
10309
|
-
"path": "
|
|
10309
|
+
"path": "apparentPower",
|
|
10310
10310
|
"valueType": "number"
|
|
10311
10311
|
},
|
|
10312
10312
|
{
|
|
@@ -10334,14 +10334,10 @@ Object.freeze({
|
|
|
10334
10334
|
{
|
|
10335
10335
|
"path": "gps.accuracyMeters",
|
|
10336
10336
|
"valueType": "number"
|
|
10337
|
-
},
|
|
10338
|
-
{
|
|
10339
|
-
"path": "batteryPercent",
|
|
10340
|
-
"valueType": "number"
|
|
10341
10337
|
}
|
|
10342
10338
|
],
|
|
10343
10339
|
"pressure-sensor": [{
|
|
10344
|
-
"path": "
|
|
10340
|
+
"path": "pressure",
|
|
10345
10341
|
"valueType": "number"
|
|
10346
10342
|
}],
|
|
10347
10343
|
"privacy-mask": [{
|
|
@@ -10655,7 +10651,7 @@ Object.freeze({
|
|
|
10655
10651
|
"valueType": "boolean"
|
|
10656
10652
|
}],
|
|
10657
10653
|
"temperature-sensor": [{
|
|
10658
|
-
"path": "
|
|
10654
|
+
"path": "temperature",
|
|
10659
10655
|
"valueType": "number"
|
|
10660
10656
|
}],
|
|
10661
10657
|
"update": [
|
|
@@ -10703,7 +10699,7 @@ Object.freeze({
|
|
|
10703
10699
|
"valueType": "string"
|
|
10704
10700
|
},
|
|
10705
10701
|
{
|
|
10706
|
-
"path": "
|
|
10702
|
+
"path": "progress",
|
|
10707
10703
|
"valueType": "number"
|
|
10708
10704
|
},
|
|
10709
10705
|
{
|
|
@@ -11178,7 +11174,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11178
11174
|
return DeviceRole;
|
|
11179
11175
|
}({});
|
|
11180
11176
|
//#endregion
|
|
11181
|
-
//#region ../types/dist/composition-
|
|
11177
|
+
//#region ../types/dist/composition-CZImLpOI.mjs
|
|
11182
11178
|
/**
|
|
11183
11179
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11184
11180
|
*
|
|
@@ -18843,7 +18839,7 @@ var CompositionEventPlanSchema = object({
|
|
|
18843
18839
|
stateField: string(),
|
|
18844
18840
|
fieldKey: string()
|
|
18845
18841
|
});
|
|
18846
|
-
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.
|
|
18842
|
+
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
|
|
18847
18843
|
var CompositionProblemSchema = object({
|
|
18848
18844
|
code: _enum([
|
|
18849
18845
|
"reserved-variant",
|
|
@@ -19162,7 +19158,7 @@ var GROUP_TEMPLATES = [
|
|
|
19162
19158
|
summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
|
|
19163
19159
|
role: DeviceRole.TemperatureSensor,
|
|
19164
19160
|
outputCap: "temperature-sensor",
|
|
19165
|
-
outputField: "
|
|
19161
|
+
outputField: "temperature",
|
|
19166
19162
|
quantity: "temperature",
|
|
19167
19163
|
defaultAggregate: "mean",
|
|
19168
19164
|
empty: "null",
|
|
@@ -19173,7 +19169,7 @@ var GROUP_TEMPLATES = [
|
|
|
19173
19169
|
summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19174
19170
|
role: DeviceRole.HumiditySensor,
|
|
19175
19171
|
outputCap: "humidity-sensor",
|
|
19176
|
-
outputField: "
|
|
19172
|
+
outputField: "humidity",
|
|
19177
19173
|
quantity: "humidity",
|
|
19178
19174
|
defaultAggregate: "mean",
|
|
19179
19175
|
empty: "null",
|
|
@@ -19184,7 +19180,7 @@ var GROUP_TEMPLATES = [
|
|
|
19184
19180
|
summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
|
|
19185
19181
|
role: DeviceRole.PressureSensor,
|
|
19186
19182
|
outputCap: "pressure-sensor",
|
|
19187
|
-
outputField: "
|
|
19183
|
+
outputField: "pressure",
|
|
19188
19184
|
quantity: "pressure",
|
|
19189
19185
|
defaultAggregate: "mean",
|
|
19190
19186
|
empty: "null",
|
|
@@ -19195,7 +19191,7 @@ var GROUP_TEMPLATES = [
|
|
|
19195
19191
|
summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
|
|
19196
19192
|
role: DeviceRole.AmbientLightSensor,
|
|
19197
19193
|
outputCap: "ambient-light-sensor",
|
|
19198
|
-
outputField: "
|
|
19194
|
+
outputField: "illuminance",
|
|
19199
19195
|
quantity: "illuminance",
|
|
19200
19196
|
defaultAggregate: "mean",
|
|
19201
19197
|
empty: "null",
|
|
@@ -19206,7 +19202,7 @@ var GROUP_TEMPLATES = [
|
|
|
19206
19202
|
summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
|
|
19207
19203
|
role: DeviceRole.PowerSensor,
|
|
19208
19204
|
outputCap: "power-meter",
|
|
19209
|
-
outputField: "
|
|
19205
|
+
outputField: "power",
|
|
19210
19206
|
quantity: "power",
|
|
19211
19207
|
defaultAggregate: "sum",
|
|
19212
19208
|
empty: "omit",
|
|
@@ -19217,7 +19213,7 @@ var GROUP_TEMPLATES = [
|
|
|
19217
19213
|
summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
|
|
19218
19214
|
role: DeviceRole.EnergySensor,
|
|
19219
19215
|
outputCap: "power-meter",
|
|
19220
|
-
outputField: "
|
|
19216
|
+
outputField: "energy",
|
|
19221
19217
|
quantity: "energy",
|
|
19222
19218
|
defaultAggregate: "sum",
|
|
19223
19219
|
empty: "omit",
|
|
@@ -19228,7 +19224,7 @@ var GROUP_TEMPLATES = [
|
|
|
19228
19224
|
summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19229
19225
|
role: DeviceRole.BatterySensor,
|
|
19230
19226
|
outputCap: "battery",
|
|
19231
|
-
outputField: "
|
|
19227
|
+
outputField: "level",
|
|
19232
19228
|
quantity: "percentage",
|
|
19233
19229
|
defaultAggregate: "mean",
|
|
19234
19230
|
empty: "null",
|
|
@@ -57346,9 +57342,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
57346
57342
|
}), LogStreamEntrySchema, { kind: "subscription" });
|
|
57347
57343
|
object({
|
|
57348
57344
|
/** Carbon dioxide concentration in ppm. */
|
|
57349
|
-
|
|
57345
|
+
co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
|
|
57350
57346
|
/** Total volatile organic compounds in ppb. */
|
|
57351
|
-
|
|
57347
|
+
voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
|
|
57352
57348
|
/** Particulate matter ≤ 2.5 μm in µg/m³. */
|
|
57353
57349
|
pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
|
|
57354
57350
|
/** Particulate matter ≤ 10 μm in µg/m³. */
|
|
@@ -57361,7 +57357,7 @@ object({
|
|
|
57361
57357
|
DeviceType.Sensor;
|
|
57362
57358
|
object({
|
|
57363
57359
|
/** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
|
|
57364
|
-
|
|
57360
|
+
illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
|
|
57365
57361
|
precision: 0,
|
|
57366
57362
|
label: "Illuminance"
|
|
57367
57363
|
})),
|
|
@@ -57589,7 +57585,7 @@ var BatteryStatusSchema = object({
|
|
|
57589
57585
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
57590
57586
|
* declines to band a non-finite reading, which is the correct shape.
|
|
57591
57587
|
*/
|
|
57592
|
-
|
|
57588
|
+
level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
|
|
57593
57589
|
/**
|
|
57594
57590
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
57595
57591
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -57599,7 +57595,7 @@ var BatteryStatusSchema = object({
|
|
|
57599
57595
|
* `'unknown'` is the absence of an answer: the provider has not read the
|
|
57600
57596
|
* power fields yet, or the firmware reported neither. Before it existed,
|
|
57601
57597
|
* two unreadable fields produced `'none'`, and a camera nobody had reached
|
|
57602
|
-
* was drawn "on battery alone" — the same D315 defect `
|
|
57598
|
+
* was drawn "on battery alone" — the same D315 defect `level` closed
|
|
57603
57599
|
* by going nullable. Consumers SKIP it (no charger state published, no
|
|
57604
57600
|
* glyph, no HomeKit ChargingState) rather than coerce it either way.
|
|
57605
57601
|
*/
|
|
@@ -57623,7 +57619,7 @@ var BatteryStatusSchema = object({
|
|
|
57623
57619
|
* that only report charge. A second reading on this cap, not a second
|
|
57624
57620
|
* `numeric-sensor` on the same device.
|
|
57625
57621
|
*/
|
|
57626
|
-
|
|
57622
|
+
voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
57627
57623
|
/**
|
|
57628
57624
|
* Ms epoch of the last time the device PROVED it was reachable — a
|
|
57629
57625
|
* completed firmware round-trip, an observed wake, or an inbound push
|
|
@@ -57657,7 +57653,7 @@ var BatteryStatusSchema = object({
|
|
|
57657
57653
|
/**
|
|
57658
57654
|
* True when the source is a BINARY low-battery indicator (HA
|
|
57659
57655
|
* `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
|
|
57660
|
-
* charge level — `
|
|
57656
|
+
* charge level — `level` is then a coarse stand-in (100 = normal,
|
|
57661
57657
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
57662
57658
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
57663
57659
|
*/
|
|
@@ -57683,19 +57679,19 @@ object({
|
|
|
57683
57679
|
DeviceType.Sensor;
|
|
57684
57680
|
object({
|
|
57685
57681
|
/** Current level as 0..100 inclusive. Firmware-reported. */
|
|
57686
|
-
|
|
57682
|
+
level: number().min(0).max(100).meta(readingMeta("percentage")),
|
|
57687
57683
|
/** Ms epoch of the last operator-driven change. Useful for UI freshness. */
|
|
57688
57684
|
lastChangedAt: number()
|
|
57689
57685
|
});
|
|
57690
57686
|
DeviceType.Light, method(object({
|
|
57691
57687
|
deviceId: number().int().nonnegative(),
|
|
57692
|
-
|
|
57688
|
+
level: number().min(0).max(100)
|
|
57693
57689
|
}), _void(), {
|
|
57694
57690
|
kind: "mutation",
|
|
57695
57691
|
auth: "protected"
|
|
57696
57692
|
}), object({
|
|
57697
57693
|
deviceId: number(),
|
|
57698
|
-
|
|
57694
|
+
level: number().min(0).max(100),
|
|
57699
57695
|
lastChangedAt: number()
|
|
57700
57696
|
});
|
|
57701
57697
|
DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
@@ -58196,11 +58192,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
|
|
|
58196
58192
|
}),
|
|
58197
58193
|
object({
|
|
58198
58194
|
mode: literal("mired"),
|
|
58199
|
-
|
|
58195
|
+
colorTemperature: number().int().min(50).max(1e3)
|
|
58200
58196
|
})
|
|
58201
58197
|
]);
|
|
58202
58198
|
object({
|
|
58203
|
-
/** Active color mode — which of `rgb` / `hsv` / `
|
|
58199
|
+
/** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
|
|
58204
58200
|
* the bulb's current state. */
|
|
58205
58201
|
mode: _enum([
|
|
58206
58202
|
"rgb",
|
|
@@ -58212,7 +58208,7 @@ object({
|
|
|
58212
58208
|
/** Populated when `mode === 'hsv'`. */
|
|
58213
58209
|
hsv: HsvTripletSchema.optional(),
|
|
58214
58210
|
/** Populated when `mode === 'mired'`. */
|
|
58215
|
-
|
|
58211
|
+
colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
|
|
58216
58212
|
/** Ms epoch of the last operator-driven change. */
|
|
58217
58213
|
lastChangedAt: number()
|
|
58218
58214
|
});
|
|
@@ -58231,7 +58227,7 @@ DeviceType.Light, method(object({
|
|
|
58231
58227
|
]),
|
|
58232
58228
|
rgb: RgbTripletSchema.optional(),
|
|
58233
58229
|
hsv: HsvTripletSchema.optional(),
|
|
58234
|
-
|
|
58230
|
+
colorTemperature: number().int().optional(),
|
|
58235
58231
|
lastChangedAt: number()
|
|
58236
58232
|
});
|
|
58237
58233
|
var ConnectionTestOutcomeSchema = discriminatedUnion("outcome", [
|
|
@@ -58657,11 +58653,11 @@ object({
|
|
|
58657
58653
|
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
58658
58654
|
availablePrograms: array(string()),
|
|
58659
58655
|
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
58660
|
-
|
|
58656
|
+
remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
58661
58657
|
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
58662
|
-
|
|
58658
|
+
delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
58663
58659
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
58664
|
-
|
|
58660
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
58665
58661
|
/** True when the door is reported open; null when the door state is not known. */
|
|
58666
58662
|
doorOpen: boolean().nullable(),
|
|
58667
58663
|
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
@@ -59279,7 +59275,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
|
|
|
59279
59275
|
object({
|
|
59280
59276
|
/** Active speed as 0..100 inclusive. Null when the device has no
|
|
59281
59277
|
* speed surface (single-speed fan). */
|
|
59282
|
-
|
|
59278
|
+
speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
59283
59279
|
/** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
|
|
59284
59280
|
* a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
|
|
59285
59281
|
percentageStep: number().positive().optional().meta(readingMeta("percentage")),
|
|
@@ -59299,7 +59295,7 @@ object({
|
|
|
59299
59295
|
});
|
|
59300
59296
|
DeviceType.Fan, method(object({
|
|
59301
59297
|
deviceId: number().int().nonnegative(),
|
|
59302
|
-
|
|
59298
|
+
speed: number().min(0).max(100)
|
|
59303
59299
|
}), _void(), {
|
|
59304
59300
|
kind: "mutation",
|
|
59305
59301
|
auth: "protected"
|
|
@@ -59482,7 +59478,7 @@ DeviceType.Humidifier, method(object({
|
|
|
59482
59478
|
});
|
|
59483
59479
|
object({
|
|
59484
59480
|
/** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
|
|
59485
|
-
|
|
59481
|
+
humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
|
|
59486
59482
|
precision: 0,
|
|
59487
59483
|
label: "Humidity"
|
|
59488
59484
|
})),
|
|
@@ -59925,7 +59921,7 @@ object({
|
|
|
59925
59921
|
batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
59926
59922
|
/** 0..100 mowing-completion percentage of the current task, or null when no
|
|
59927
59923
|
* task is active / progress is unavailable. */
|
|
59928
|
-
|
|
59924
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
59929
59925
|
/** Current device/event code (dynamic — mostly status, sometimes an error),
|
|
59930
59926
|
* or null when unknown. */
|
|
59931
59927
|
currentCode: number().nullable().meta(readingMeta("none")),
|
|
@@ -60415,10 +60411,10 @@ object({
|
|
|
60415
60411
|
currentMedia: MediaInfoSchema.nullable(),
|
|
60416
60412
|
/** Current playback position in ms. Null when not seekable or
|
|
60417
60413
|
* nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
|
|
60418
|
-
|
|
60414
|
+
position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
60419
60415
|
/** Total duration of the current media in ms. Null when unknown
|
|
60420
60416
|
* (live stream) or nothing is playing. */
|
|
60421
|
-
|
|
60417
|
+
duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
60422
60418
|
/** Shuffle toggle. Null when no shuffle surface.
|
|
60423
60419
|
* Pair with `DeviceFeature.MediaPlayerShuffle`. */
|
|
60424
60420
|
shuffle: boolean().nullable(),
|
|
@@ -60445,7 +60441,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
|
|
|
60445
60441
|
auth: "protected"
|
|
60446
60442
|
}), method(object({
|
|
60447
60443
|
deviceId: number().int().nonnegative(),
|
|
60448
|
-
|
|
60444
|
+
position: number().int().nonnegative()
|
|
60449
60445
|
}), _void(), {
|
|
60450
60446
|
kind: "mutation",
|
|
60451
60447
|
auth: "protected"
|
|
@@ -61118,9 +61114,9 @@ var NetworkLinkStatusSchema = object({
|
|
|
61118
61114
|
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
61119
61115
|
* SKIP a null rather than coerce it.
|
|
61120
61116
|
*/
|
|
61121
|
-
|
|
61117
|
+
signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
61122
61118
|
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
61123
|
-
|
|
61119
|
+
rssi: number().optional().meta(readingMeta("signal-level")),
|
|
61124
61120
|
/** Network name of a wireless link, when the firmware reports it. */
|
|
61125
61121
|
ssid: string().optional(),
|
|
61126
61122
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
@@ -62270,16 +62266,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
62270
62266
|
auth: "admin"
|
|
62271
62267
|
});
|
|
62272
62268
|
object({
|
|
62273
|
-
/** Instantaneous power draw
|
|
62274
|
-
|
|
62269
|
+
/** Instantaneous power draw (watts). */
|
|
62270
|
+
power: number().optional().meta(readingMeta("power", { label: "Power" })),
|
|
62275
62271
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
62276
|
-
|
|
62277
|
-
/** Voltage
|
|
62278
|
-
|
|
62272
|
+
energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
|
|
62273
|
+
/** Voltage (volts). */
|
|
62274
|
+
voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
62279
62275
|
/** Current in amperes. */
|
|
62280
|
-
|
|
62276
|
+
current: number().optional().meta(readingMeta("current", { label: "Current" })),
|
|
62281
62277
|
/** Apparent power in volt-amperes. */
|
|
62282
|
-
|
|
62278
|
+
apparentPower: number().optional().meta(readingMeta("apparent-power")),
|
|
62283
62279
|
/** Power factor (0..1) if reported. */
|
|
62284
62280
|
powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
|
|
62285
62281
|
/** Ms epoch when the slice was last updated. */
|
|
@@ -62334,16 +62330,13 @@ object({
|
|
|
62334
62330
|
location: string().nullable(),
|
|
62335
62331
|
/** GPS coordinates when available. Null otherwise. */
|
|
62336
62332
|
gps: GpsLocationSchema.nullable(),
|
|
62337
|
-
/** Optional battery level of the tracking device (0..100). Null
|
|
62338
|
-
* when not reported. */
|
|
62339
|
-
batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
62340
62333
|
/** Ms epoch when the slice was last updated. */
|
|
62341
62334
|
lastChangedAt: number()
|
|
62342
62335
|
});
|
|
62343
62336
|
DeviceType.Presence;
|
|
62344
62337
|
object({
|
|
62345
62338
|
/** Current pressure in hPa. `null` when the sample was refused (D393). */
|
|
62346
|
-
|
|
62339
|
+
pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
|
|
62347
62340
|
/** Ms epoch when the slice was last updated. */
|
|
62348
62341
|
lastFetchedAt: number()
|
|
62349
62342
|
});
|
|
@@ -65346,7 +65339,7 @@ object({
|
|
|
65346
65339
|
DeviceType.Sensor;
|
|
65347
65340
|
object({
|
|
65348
65341
|
/** Current temperature in Celsius. `null` when the sample was refused (D393). */
|
|
65349
|
-
|
|
65342
|
+
temperature: number().nullable().meta(readingMeta("temperature", {
|
|
65350
65343
|
precision: 1,
|
|
65351
65344
|
label: "Temperature"
|
|
65352
65345
|
})),
|
|
@@ -65610,7 +65603,7 @@ object({
|
|
|
65610
65603
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
65611
65604
|
availableFanSpeeds: array(string()),
|
|
65612
65605
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
65613
|
-
|
|
65606
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65614
65607
|
/** Current error code (0 / null = no error). */
|
|
65615
65608
|
errorCode: number().nullable().meta(readingMeta("none")),
|
|
65616
65609
|
/** Human label for {@link errorCode}, or null when none / undecodable. */
|
|
@@ -76682,7 +76675,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76682
76675
|
label: t("Full brightness", "Luminosità massima"),
|
|
76683
76676
|
phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
|
|
76684
76677
|
icon: "sun",
|
|
76685
|
-
args: {
|
|
76678
|
+
args: { level: 100 }
|
|
76686
76679
|
},
|
|
76687
76680
|
{
|
|
76688
76681
|
id: "brightness.half",
|
|
@@ -76690,7 +76683,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76690
76683
|
label: t("Half brightness", "Luminosità a metà"),
|
|
76691
76684
|
phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
|
|
76692
76685
|
icon: "sun-dim",
|
|
76693
|
-
args: {
|
|
76686
|
+
args: { level: 50 }
|
|
76694
76687
|
},
|
|
76695
76688
|
{
|
|
76696
76689
|
id: "brightness.off",
|
|
@@ -76698,16 +76691,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76698
76691
|
label: t("Brightness off", "Luminosità a zero"),
|
|
76699
76692
|
phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
|
|
76700
76693
|
icon: "lightbulb-off",
|
|
76701
|
-
args: {
|
|
76694
|
+
args: { level: 0 }
|
|
76702
76695
|
},
|
|
76703
76696
|
{
|
|
76704
76697
|
id: "brightness.set",
|
|
76705
76698
|
method: "setBrightness",
|
|
76706
76699
|
label: t("Set brightness", "Imposta la luminosità"),
|
|
76707
|
-
phrase: t("Set the brightness of {device} to {
|
|
76700
|
+
phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
|
|
76708
76701
|
icon: "sun-medium",
|
|
76709
76702
|
openArgs: [{
|
|
76710
|
-
key: "
|
|
76703
|
+
key: "level",
|
|
76711
76704
|
label: PERCENT,
|
|
76712
76705
|
offer: {
|
|
76713
76706
|
kind: "number",
|
|
@@ -76721,13 +76714,13 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76721
76714
|
],
|
|
76722
76715
|
state: [{
|
|
76723
76716
|
kind: "numeric",
|
|
76724
|
-
field: "
|
|
76717
|
+
field: "level",
|
|
76725
76718
|
quantity: t("the brightness", "la luminosità"),
|
|
76726
76719
|
label: t("Brightness", "Luminosità"),
|
|
76727
76720
|
unit: "%",
|
|
76728
76721
|
icon: "sun"
|
|
76729
76722
|
}],
|
|
76730
|
-
events: { onBrightnessChanged: { notOperatorFacing: "the `
|
|
76723
|
+
events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
|
|
76731
76724
|
},
|
|
76732
76725
|
color: {
|
|
76733
76726
|
scope: "device",
|
|
@@ -76741,7 +76734,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76741
76734
|
icon: "sun",
|
|
76742
76735
|
args: { color: {
|
|
76743
76736
|
mode: "mired",
|
|
76744
|
-
|
|
76737
|
+
colorTemperature: 370
|
|
76745
76738
|
} }
|
|
76746
76739
|
},
|
|
76747
76740
|
{
|
|
@@ -76752,7 +76745,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76752
76745
|
icon: "snowflake",
|
|
76753
76746
|
args: { color: {
|
|
76754
76747
|
mode: "mired",
|
|
76755
|
-
|
|
76748
|
+
colorTemperature: 200
|
|
76756
76749
|
} }
|
|
76757
76750
|
},
|
|
76758
76751
|
{
|
|
@@ -77366,7 +77359,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77366
77359
|
label: t("Fan off", "Ventilatore spento"),
|
|
77367
77360
|
phrase: t("Stop {device}", "Ferma {device}"),
|
|
77368
77361
|
icon: "power-off",
|
|
77369
|
-
args: {
|
|
77362
|
+
args: { speed: 0 }
|
|
77370
77363
|
},
|
|
77371
77364
|
{
|
|
77372
77365
|
id: "fan.full",
|
|
@@ -77374,16 +77367,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77374
77367
|
label: t("Fan full", "Ventilatore al massimo"),
|
|
77375
77368
|
phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
|
|
77376
77369
|
icon: "fan",
|
|
77377
|
-
args: {
|
|
77370
|
+
args: { speed: 100 }
|
|
77378
77371
|
},
|
|
77379
77372
|
{
|
|
77380
77373
|
id: "fan.speed",
|
|
77381
77374
|
method: "setPercentage",
|
|
77382
77375
|
label: t("Set speed", "Imposta la velocità"),
|
|
77383
|
-
phrase: t("Set the speed of {device} to {
|
|
77376
|
+
phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
|
|
77384
77377
|
icon: "fan",
|
|
77385
77378
|
openArgs: [{
|
|
77386
|
-
key: "
|
|
77379
|
+
key: "speed",
|
|
77387
77380
|
label: t("Speed", "Velocità"),
|
|
77388
77381
|
offer: {
|
|
77389
77382
|
kind: "number",
|
|
@@ -77445,7 +77438,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77445
77438
|
],
|
|
77446
77439
|
state: [{
|
|
77447
77440
|
kind: "numeric",
|
|
77448
|
-
field: "
|
|
77441
|
+
field: "speed",
|
|
77449
77442
|
quantity: t("the speed", "la velocità"),
|
|
77450
77443
|
label: t("Speed", "Velocità"),
|
|
77451
77444
|
unit: "%",
|
|
@@ -78243,7 +78236,7 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78243
78236
|
},
|
|
78244
78237
|
{
|
|
78245
78238
|
kind: "numeric",
|
|
78246
|
-
field: "
|
|
78239
|
+
field: "progress",
|
|
78247
78240
|
quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
|
|
78248
78241
|
label: t("Progress", "Avanzamento"),
|
|
78249
78242
|
unit: "%",
|
|
@@ -78601,10 +78594,10 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78601
78594
|
id: "media.seek",
|
|
78602
78595
|
method: "seek",
|
|
78603
78596
|
label: t("Seek", "Vai al punto"),
|
|
78604
|
-
phrase: t("Move {device} to {
|
|
78597
|
+
phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
|
|
78605
78598
|
icon: "fast-forward",
|
|
78606
78599
|
openArgs: [{
|
|
78607
|
-
key: "
|
|
78600
|
+
key: "position",
|
|
78608
78601
|
label: t("Position", "Posizione"),
|
|
78609
78602
|
offer: {
|
|
78610
78603
|
kind: "number",
|
|
@@ -79653,7 +79646,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79653
79646
|
state: [
|
|
79654
79647
|
{
|
|
79655
79648
|
kind: "numeric",
|
|
79656
|
-
field: "
|
|
79649
|
+
field: "co2",
|
|
79657
79650
|
quantity: t("the CO₂", "la CO₂"),
|
|
79658
79651
|
label: t("CO₂", "CO₂"),
|
|
79659
79652
|
unit: "ppm",
|
|
@@ -79661,7 +79654,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79661
79654
|
},
|
|
79662
79655
|
{
|
|
79663
79656
|
kind: "numeric",
|
|
79664
|
-
field: "
|
|
79657
|
+
field: "voc",
|
|
79665
79658
|
quantity: t("the VOC level", "il livello di COV"),
|
|
79666
79659
|
label: t("VOC", "COV"),
|
|
79667
79660
|
unit: "ppb",
|
|
@@ -79697,7 +79690,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79697
79690
|
noun: t("Light level", "Luminosità ambiente"),
|
|
79698
79691
|
state: [{
|
|
79699
79692
|
kind: "numeric",
|
|
79700
|
-
field: "
|
|
79693
|
+
field: "illuminance",
|
|
79701
79694
|
quantity: t("the light level", "la luminosità"),
|
|
79702
79695
|
label: t("Illuminance", "Illuminamento"),
|
|
79703
79696
|
unit: "lx",
|
|
@@ -79900,7 +79893,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79900
79893
|
noun: t("Humidity", "Umidità"),
|
|
79901
79894
|
state: [{
|
|
79902
79895
|
kind: "numeric",
|
|
79903
|
-
field: "
|
|
79896
|
+
field: "humidity",
|
|
79904
79897
|
quantity: t("the humidity", "l’umidità"),
|
|
79905
79898
|
label: t("Humidity", "Umidità"),
|
|
79906
79899
|
unit: "%",
|
|
@@ -79948,7 +79941,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79948
79941
|
state: [
|
|
79949
79942
|
{
|
|
79950
79943
|
kind: "numeric",
|
|
79951
|
-
field: "
|
|
79944
|
+
field: "power",
|
|
79952
79945
|
quantity: t("the power draw", "il consumo"),
|
|
79953
79946
|
label: t("Power", "Potenza"),
|
|
79954
79947
|
unit: "W",
|
|
@@ -79956,7 +79949,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79956
79949
|
},
|
|
79957
79950
|
{
|
|
79958
79951
|
kind: "numeric",
|
|
79959
|
-
field: "
|
|
79952
|
+
field: "energy",
|
|
79960
79953
|
quantity: t("the energy used", "l’energia consumata"),
|
|
79961
79954
|
label: t("Energy", "Energia"),
|
|
79962
79955
|
unit: "kWh",
|
|
@@ -79964,7 +79957,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79964
79957
|
},
|
|
79965
79958
|
{
|
|
79966
79959
|
kind: "numeric",
|
|
79967
|
-
field: "
|
|
79960
|
+
field: "voltage",
|
|
79968
79961
|
quantity: t("the voltage", "la tensione"),
|
|
79969
79962
|
label: t("Voltage", "Tensione"),
|
|
79970
79963
|
unit: "V",
|
|
@@ -79972,7 +79965,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79972
79965
|
},
|
|
79973
79966
|
{
|
|
79974
79967
|
kind: "numeric",
|
|
79975
|
-
field: "
|
|
79968
|
+
field: "current",
|
|
79976
79969
|
quantity: t("the current", "la corrente"),
|
|
79977
79970
|
label: t("Current", "Corrente"),
|
|
79978
79971
|
unit: "A",
|
|
@@ -79989,13 +79982,6 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79989
79982
|
label: t("Where", "Posizione"),
|
|
79990
79983
|
phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
|
|
79991
79984
|
icon: "map-pin"
|
|
79992
|
-
}, {
|
|
79993
|
-
kind: "numeric",
|
|
79994
|
-
field: "batteryPercent",
|
|
79995
|
-
quantity: t("the phone battery", "la batteria del telefono"),
|
|
79996
|
-
label: t("Battery", "Batteria"),
|
|
79997
|
-
unit: "%",
|
|
79998
|
-
icon: "battery"
|
|
79999
79985
|
}]
|
|
80000
79986
|
},
|
|
80001
79987
|
"pressure-sensor": {
|
|
@@ -80003,7 +79989,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80003
79989
|
noun: t("Pressure", "Pressione"),
|
|
80004
79990
|
state: [{
|
|
80005
79991
|
kind: "numeric",
|
|
80006
|
-
field: "
|
|
79992
|
+
field: "pressure",
|
|
80007
79993
|
quantity: t("the pressure", "la pressione"),
|
|
80008
79994
|
label: t("Pressure", "Pressione"),
|
|
80009
79995
|
unit: "hPa",
|
|
@@ -80039,7 +80025,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80039
80025
|
noun: t("Temperature", "Temperatura"),
|
|
80040
80026
|
state: [{
|
|
80041
80027
|
kind: "numeric",
|
|
80042
|
-
field: "
|
|
80028
|
+
field: "temperature",
|
|
80043
80029
|
quantity: t("the temperature", "la temperatura"),
|
|
80044
80030
|
label: t("Temperature", "Temperatura"),
|
|
80045
80031
|
unit: "°C",
|
|
@@ -80110,7 +80096,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80110
80096
|
state: [
|
|
80111
80097
|
{
|
|
80112
80098
|
kind: "numeric",
|
|
80113
|
-
field: "
|
|
80099
|
+
field: "level",
|
|
80114
80100
|
quantity: t("the battery level", "il livello della batteria"),
|
|
80115
80101
|
label: t("Battery", "Batteria"),
|
|
80116
80102
|
unit: "%",
|
|
@@ -80152,7 +80138,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80152
80138
|
icon: "battery-charging"
|
|
80153
80139
|
}
|
|
80154
80140
|
],
|
|
80155
|
-
events: { onStatusChanged: { notOperatorFacing: "the
|
|
80141
|
+
events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
|
|
80156
80142
|
extraEvents: [{
|
|
80157
80143
|
category: EventCategory.DeviceAwake,
|
|
80158
80144
|
label: t("Woke up", "Risvegliato"),
|
|
@@ -80170,7 +80156,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80170
80156
|
noun: t("Network link", "Collegamento di rete"),
|
|
80171
80157
|
state: [{
|
|
80172
80158
|
kind: "numeric",
|
|
80173
|
-
field: "
|
|
80159
|
+
field: "signal",
|
|
80174
80160
|
quantity: t("the signal strength", "l’intensità del segnale"),
|
|
80175
80161
|
label: t("Signal", "Segnale"),
|
|
80176
80162
|
unit: "%",
|