@camstack/addon-post-analysis 1.2.647 → 1.2.648
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/{clip-model-registry-Baro8DSl.mjs → clip-model-registry-CV0OM-KE.mjs} +139 -160
- package/dist/{clip-model-registry-Bi5DcV3d.js → clip-model-registry-Dz05U9H7.js} +139 -160
- package/dist/embedding-encoder/index.js +1 -1
- package/dist/embedding-encoder/index.mjs +1 -1
- package/dist/pipeline-analytics/{_virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-M_XNqkOs.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_pipeline_analytics_widgets-DpZRdUNM.mjs} +2 -2
- package/dist/pipeline-analytics/{hostInit-DRa7YSGg.mjs → hostInit-CJRlIsq_.mjs} +2 -2
- package/dist/pipeline-analytics/index.js +4 -4
- package/dist/pipeline-analytics/index.mjs +4 -4
- package/dist/pipeline-analytics/remoteEntry.js +1 -1
- package/package.json +1 -1
|
@@ -5645,7 +5645,7 @@ var ZodIssueCode = {
|
|
|
5645
5645
|
var ZodFirstPartyTypeKind;
|
|
5646
5646
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5647
5647
|
//#endregion
|
|
5648
|
-
//#region ../types/dist/sleep-
|
|
5648
|
+
//#region ../types/dist/sleep-Crlmu_tO.mjs
|
|
5649
5649
|
/**
|
|
5650
5650
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5651
5651
|
* window to float samples (D455).
|
|
@@ -9183,11 +9183,11 @@ var CAP_NAMES = Object.freeze([
|
|
|
9183
9183
|
Object.freeze({
|
|
9184
9184
|
"air-quality-sensor": [
|
|
9185
9185
|
{
|
|
9186
|
-
"path": "
|
|
9186
|
+
"path": "co2",
|
|
9187
9187
|
"valueType": "number"
|
|
9188
9188
|
},
|
|
9189
9189
|
{
|
|
9190
|
-
"path": "
|
|
9190
|
+
"path": "voc",
|
|
9191
9191
|
"valueType": "number"
|
|
9192
9192
|
},
|
|
9193
9193
|
{
|
|
@@ -9237,7 +9237,7 @@ Object.freeze({
|
|
|
9237
9237
|
}
|
|
9238
9238
|
],
|
|
9239
9239
|
"ambient-light-sensor": [{
|
|
9240
|
-
"path": "
|
|
9240
|
+
"path": "illuminance",
|
|
9241
9241
|
"valueType": "number"
|
|
9242
9242
|
}],
|
|
9243
9243
|
"audio-metrics": [
|
|
@@ -9298,7 +9298,7 @@ Object.freeze({
|
|
|
9298
9298
|
],
|
|
9299
9299
|
"battery": [
|
|
9300
9300
|
{
|
|
9301
|
-
"path": "
|
|
9301
|
+
"path": "level",
|
|
9302
9302
|
"valueType": "number"
|
|
9303
9303
|
},
|
|
9304
9304
|
{
|
|
@@ -9320,7 +9320,7 @@ Object.freeze({
|
|
|
9320
9320
|
"valueType": "number"
|
|
9321
9321
|
},
|
|
9322
9322
|
{
|
|
9323
|
-
"path": "
|
|
9323
|
+
"path": "voltage",
|
|
9324
9324
|
"valueType": "number"
|
|
9325
9325
|
},
|
|
9326
9326
|
{
|
|
@@ -9341,7 +9341,7 @@ Object.freeze({
|
|
|
9341
9341
|
"valueType": "boolean"
|
|
9342
9342
|
}],
|
|
9343
9343
|
"brightness": [{
|
|
9344
|
-
"path": "
|
|
9344
|
+
"path": "level",
|
|
9345
9345
|
"valueType": "number"
|
|
9346
9346
|
}],
|
|
9347
9347
|
"broker": [{
|
|
@@ -9542,7 +9542,7 @@ Object.freeze({
|
|
|
9542
9542
|
"valueType": "number"
|
|
9543
9543
|
},
|
|
9544
9544
|
{
|
|
9545
|
-
"path": "
|
|
9545
|
+
"path": "colorTemperature",
|
|
9546
9546
|
"valueType": "number"
|
|
9547
9547
|
}
|
|
9548
9548
|
],
|
|
@@ -9721,15 +9721,15 @@ Object.freeze({
|
|
|
9721
9721
|
"valueType": "string"
|
|
9722
9722
|
},
|
|
9723
9723
|
{
|
|
9724
|
-
"path": "
|
|
9724
|
+
"path": "remaining",
|
|
9725
9725
|
"valueType": "number"
|
|
9726
9726
|
},
|
|
9727
9727
|
{
|
|
9728
|
-
"path": "
|
|
9728
|
+
"path": "delayedStart",
|
|
9729
9729
|
"valueType": "number"
|
|
9730
9730
|
},
|
|
9731
9731
|
{
|
|
9732
|
-
"path": "
|
|
9732
|
+
"path": "progress",
|
|
9733
9733
|
"valueType": "number"
|
|
9734
9734
|
},
|
|
9735
9735
|
{
|
|
@@ -9843,7 +9843,7 @@ Object.freeze({
|
|
|
9843
9843
|
],
|
|
9844
9844
|
"fan-control": [
|
|
9845
9845
|
{
|
|
9846
|
-
"path": "
|
|
9846
|
+
"path": "speed",
|
|
9847
9847
|
"valueType": "number"
|
|
9848
9848
|
},
|
|
9849
9849
|
{
|
|
@@ -9943,7 +9943,7 @@ Object.freeze({
|
|
|
9943
9943
|
}
|
|
9944
9944
|
],
|
|
9945
9945
|
"humidity-sensor": [{
|
|
9946
|
-
"path": "
|
|
9946
|
+
"path": "humidity",
|
|
9947
9947
|
"valueType": "number"
|
|
9948
9948
|
}],
|
|
9949
9949
|
"image": [{
|
|
@@ -10053,7 +10053,7 @@ Object.freeze({
|
|
|
10053
10053
|
"valueType": "number"
|
|
10054
10054
|
},
|
|
10055
10055
|
{
|
|
10056
|
-
"path": "
|
|
10056
|
+
"path": "progress",
|
|
10057
10057
|
"valueType": "number"
|
|
10058
10058
|
},
|
|
10059
10059
|
{
|
|
@@ -10132,11 +10132,11 @@ Object.freeze({
|
|
|
10132
10132
|
"valueType": "string"
|
|
10133
10133
|
},
|
|
10134
10134
|
{
|
|
10135
|
-
"path": "
|
|
10135
|
+
"path": "position",
|
|
10136
10136
|
"valueType": "number"
|
|
10137
10137
|
},
|
|
10138
10138
|
{
|
|
10139
|
-
"path": "
|
|
10139
|
+
"path": "duration",
|
|
10140
10140
|
"valueType": "number"
|
|
10141
10141
|
},
|
|
10142
10142
|
{
|
|
@@ -10238,11 +10238,11 @@ Object.freeze({
|
|
|
10238
10238
|
]
|
|
10239
10239
|
},
|
|
10240
10240
|
{
|
|
10241
|
-
"path": "
|
|
10241
|
+
"path": "signal",
|
|
10242
10242
|
"valueType": "number"
|
|
10243
10243
|
},
|
|
10244
10244
|
{
|
|
10245
|
-
"path": "
|
|
10245
|
+
"path": "rssi",
|
|
10246
10246
|
"valueType": "number"
|
|
10247
10247
|
},
|
|
10248
10248
|
{
|
|
@@ -10373,23 +10373,23 @@ Object.freeze({
|
|
|
10373
10373
|
],
|
|
10374
10374
|
"power-meter": [
|
|
10375
10375
|
{
|
|
10376
|
-
"path": "
|
|
10376
|
+
"path": "power",
|
|
10377
10377
|
"valueType": "number"
|
|
10378
10378
|
},
|
|
10379
10379
|
{
|
|
10380
|
-
"path": "
|
|
10380
|
+
"path": "energy",
|
|
10381
10381
|
"valueType": "number"
|
|
10382
10382
|
},
|
|
10383
10383
|
{
|
|
10384
|
-
"path": "
|
|
10384
|
+
"path": "voltage",
|
|
10385
10385
|
"valueType": "number"
|
|
10386
10386
|
},
|
|
10387
10387
|
{
|
|
10388
|
-
"path": "
|
|
10388
|
+
"path": "current",
|
|
10389
10389
|
"valueType": "number"
|
|
10390
10390
|
},
|
|
10391
10391
|
{
|
|
10392
|
-
"path": "
|
|
10392
|
+
"path": "apparentPower",
|
|
10393
10393
|
"valueType": "number"
|
|
10394
10394
|
},
|
|
10395
10395
|
{
|
|
@@ -10417,14 +10417,10 @@ Object.freeze({
|
|
|
10417
10417
|
{
|
|
10418
10418
|
"path": "gps.accuracyMeters",
|
|
10419
10419
|
"valueType": "number"
|
|
10420
|
-
},
|
|
10421
|
-
{
|
|
10422
|
-
"path": "batteryPercent",
|
|
10423
|
-
"valueType": "number"
|
|
10424
10420
|
}
|
|
10425
10421
|
],
|
|
10426
10422
|
"pressure-sensor": [{
|
|
10427
|
-
"path": "
|
|
10423
|
+
"path": "pressure",
|
|
10428
10424
|
"valueType": "number"
|
|
10429
10425
|
}],
|
|
10430
10426
|
"privacy-mask": [{
|
|
@@ -10738,7 +10734,7 @@ Object.freeze({
|
|
|
10738
10734
|
"valueType": "boolean"
|
|
10739
10735
|
}],
|
|
10740
10736
|
"temperature-sensor": [{
|
|
10741
|
-
"path": "
|
|
10737
|
+
"path": "temperature",
|
|
10742
10738
|
"valueType": "number"
|
|
10743
10739
|
}],
|
|
10744
10740
|
"update": [
|
|
@@ -10786,7 +10782,7 @@ Object.freeze({
|
|
|
10786
10782
|
"valueType": "string"
|
|
10787
10783
|
},
|
|
10788
10784
|
{
|
|
10789
|
-
"path": "
|
|
10785
|
+
"path": "progress",
|
|
10790
10786
|
"valueType": "number"
|
|
10791
10787
|
},
|
|
10792
10788
|
{
|
|
@@ -11416,7 +11412,7 @@ function errMsg(err) {
|
|
|
11416
11412
|
return String(err);
|
|
11417
11413
|
}
|
|
11418
11414
|
//#endregion
|
|
11419
|
-
//#region ../types/dist/composition-
|
|
11415
|
+
//#region ../types/dist/composition-CZImLpOI.mjs
|
|
11420
11416
|
/**
|
|
11421
11417
|
* Deterministic SHA-256 hash of an arbitrary serialisable value. The
|
|
11422
11418
|
* canonical form sorts object keys alphabetically at every depth so two
|
|
@@ -20117,7 +20113,7 @@ var CompositionEventPlanSchema = object({
|
|
|
20117
20113
|
stateField: string(),
|
|
20118
20114
|
fieldKey: string()
|
|
20119
20115
|
});
|
|
20120
|
-
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.
|
|
20116
|
+
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
|
|
20121
20117
|
var CompositionProblemSchema = object({
|
|
20122
20118
|
code: _enum([
|
|
20123
20119
|
"reserved-variant",
|
|
@@ -20436,7 +20432,7 @@ var GROUP_TEMPLATES = [
|
|
|
20436
20432
|
summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
|
|
20437
20433
|
role: DeviceRole.TemperatureSensor,
|
|
20438
20434
|
outputCap: "temperature-sensor",
|
|
20439
|
-
outputField: "
|
|
20435
|
+
outputField: "temperature",
|
|
20440
20436
|
quantity: "temperature",
|
|
20441
20437
|
defaultAggregate: "mean",
|
|
20442
20438
|
empty: "null",
|
|
@@ -20447,7 +20443,7 @@ var GROUP_TEMPLATES = [
|
|
|
20447
20443
|
summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
20448
20444
|
role: DeviceRole.HumiditySensor,
|
|
20449
20445
|
outputCap: "humidity-sensor",
|
|
20450
|
-
outputField: "
|
|
20446
|
+
outputField: "humidity",
|
|
20451
20447
|
quantity: "humidity",
|
|
20452
20448
|
defaultAggregate: "mean",
|
|
20453
20449
|
empty: "null",
|
|
@@ -20458,7 +20454,7 @@ var GROUP_TEMPLATES = [
|
|
|
20458
20454
|
summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
|
|
20459
20455
|
role: DeviceRole.PressureSensor,
|
|
20460
20456
|
outputCap: "pressure-sensor",
|
|
20461
|
-
outputField: "
|
|
20457
|
+
outputField: "pressure",
|
|
20462
20458
|
quantity: "pressure",
|
|
20463
20459
|
defaultAggregate: "mean",
|
|
20464
20460
|
empty: "null",
|
|
@@ -20469,7 +20465,7 @@ var GROUP_TEMPLATES = [
|
|
|
20469
20465
|
summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
|
|
20470
20466
|
role: DeviceRole.AmbientLightSensor,
|
|
20471
20467
|
outputCap: "ambient-light-sensor",
|
|
20472
|
-
outputField: "
|
|
20468
|
+
outputField: "illuminance",
|
|
20473
20469
|
quantity: "illuminance",
|
|
20474
20470
|
defaultAggregate: "mean",
|
|
20475
20471
|
empty: "null",
|
|
@@ -20480,7 +20476,7 @@ var GROUP_TEMPLATES = [
|
|
|
20480
20476
|
summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
|
|
20481
20477
|
role: DeviceRole.PowerSensor,
|
|
20482
20478
|
outputCap: "power-meter",
|
|
20483
|
-
outputField: "
|
|
20479
|
+
outputField: "power",
|
|
20484
20480
|
quantity: "power",
|
|
20485
20481
|
defaultAggregate: "sum",
|
|
20486
20482
|
empty: "omit",
|
|
@@ -20491,7 +20487,7 @@ var GROUP_TEMPLATES = [
|
|
|
20491
20487
|
summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
|
|
20492
20488
|
role: DeviceRole.EnergySensor,
|
|
20493
20489
|
outputCap: "power-meter",
|
|
20494
|
-
outputField: "
|
|
20490
|
+
outputField: "energy",
|
|
20495
20491
|
quantity: "energy",
|
|
20496
20492
|
defaultAggregate: "sum",
|
|
20497
20493
|
empty: "omit",
|
|
@@ -20502,7 +20498,7 @@ var GROUP_TEMPLATES = [
|
|
|
20502
20498
|
summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
20503
20499
|
role: DeviceRole.BatterySensor,
|
|
20504
20500
|
outputCap: "battery",
|
|
20505
|
-
outputField: "
|
|
20501
|
+
outputField: "level",
|
|
20506
20502
|
quantity: "percentage",
|
|
20507
20503
|
defaultAggregate: "mean",
|
|
20508
20504
|
empty: "null",
|
|
@@ -60927,9 +60923,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
60927
60923
|
*/
|
|
60928
60924
|
var AirQualitySensorStatusSchema = object({
|
|
60929
60925
|
/** Carbon dioxide concentration in ppm. */
|
|
60930
|
-
|
|
60926
|
+
co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
|
|
60931
60927
|
/** Total volatile organic compounds in ppb. */
|
|
60932
|
-
|
|
60928
|
+
voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
|
|
60933
60929
|
/** Particulate matter ≤ 2.5 μm in µg/m³. */
|
|
60934
60930
|
pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
|
|
60935
60931
|
/** Particulate matter ≤ 10 μm in µg/m³. */
|
|
@@ -60962,12 +60958,12 @@ var airQualitySensorCapability = {
|
|
|
60962
60958
|
* History (D850): recorded series.
|
|
60963
60959
|
*/
|
|
60964
60960
|
history: { fields: {
|
|
60965
|
-
|
|
60961
|
+
co2: {
|
|
60966
60962
|
kind: "gauge",
|
|
60967
60963
|
unit: "ppm",
|
|
60968
60964
|
deadband: 5
|
|
60969
60965
|
},
|
|
60970
|
-
|
|
60966
|
+
voc: {
|
|
60971
60967
|
kind: "gauge",
|
|
60972
60968
|
unit: "ppb",
|
|
60973
60969
|
deadband: 5
|
|
@@ -60998,7 +60994,7 @@ var airQualitySensorCapability = {
|
|
|
60998
60994
|
*/
|
|
60999
60995
|
var AmbientLightSensorStatusSchema = object({
|
|
61000
60996
|
/** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
|
|
61001
|
-
|
|
60997
|
+
illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
|
|
61002
60998
|
precision: 0,
|
|
61003
60999
|
label: "Illuminance"
|
|
61004
61000
|
})),
|
|
@@ -61027,7 +61023,7 @@ var ambientLightSensorCapability = {
|
|
|
61027
61023
|
/**
|
|
61028
61024
|
* History (D850): recorded series. Wide range, so a RELATIVE deadband (10 %).
|
|
61029
61025
|
*/
|
|
61030
|
-
history: { fields: {
|
|
61026
|
+
history: { fields: { illuminance: {
|
|
61031
61027
|
kind: "gauge",
|
|
61032
61028
|
unit: "lx",
|
|
61033
61029
|
deadbandPct: 10,
|
|
@@ -61340,7 +61336,7 @@ var BatteryStatusSchema = object({
|
|
|
61340
61336
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
61341
61337
|
* declines to band a non-finite reading, which is the correct shape.
|
|
61342
61338
|
*/
|
|
61343
|
-
|
|
61339
|
+
level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
|
|
61344
61340
|
/**
|
|
61345
61341
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
61346
61342
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -61350,7 +61346,7 @@ var BatteryStatusSchema = object({
|
|
|
61350
61346
|
* `'unknown'` is the absence of an answer: the provider has not read the
|
|
61351
61347
|
* power fields yet, or the firmware reported neither. Before it existed,
|
|
61352
61348
|
* two unreadable fields produced `'none'`, and a camera nobody had reached
|
|
61353
|
-
* was drawn "on battery alone" — the same D315 defect `
|
|
61349
|
+
* was drawn "on battery alone" — the same D315 defect `level` closed
|
|
61354
61350
|
* by going nullable. Consumers SKIP it (no charger state published, no
|
|
61355
61351
|
* glyph, no HomeKit ChargingState) rather than coerce it either way.
|
|
61356
61352
|
*/
|
|
@@ -61374,7 +61370,7 @@ var BatteryStatusSchema = object({
|
|
|
61374
61370
|
* that only report charge. A second reading on this cap, not a second
|
|
61375
61371
|
* `numeric-sensor` on the same device.
|
|
61376
61372
|
*/
|
|
61377
|
-
|
|
61373
|
+
voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
61378
61374
|
/**
|
|
61379
61375
|
* Ms epoch of the last time the device PROVED it was reachable — a
|
|
61380
61376
|
* completed firmware round-trip, an observed wake, or an inbound push
|
|
@@ -61408,7 +61404,7 @@ var BatteryStatusSchema = object({
|
|
|
61408
61404
|
/**
|
|
61409
61405
|
* True when the source is a BINARY low-battery indicator (HA
|
|
61410
61406
|
* `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
|
|
61411
|
-
* charge level — `
|
|
61407
|
+
* charge level — `level` is then a coarse stand-in (100 = normal,
|
|
61412
61408
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
61413
61409
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
61414
61410
|
*/
|
|
@@ -61428,15 +61424,15 @@ var BATTERY_DEVICE_TYPES = [
|
|
|
61428
61424
|
var batteryCustomize = {
|
|
61429
61425
|
version: 1,
|
|
61430
61426
|
targets: [{
|
|
61431
|
-
id: "
|
|
61427
|
+
id: "level",
|
|
61432
61428
|
cardinality: "scalar",
|
|
61433
61429
|
vocabulary: {
|
|
61434
61430
|
cap: "battery",
|
|
61435
|
-
stateField: "
|
|
61431
|
+
stateField: "level"
|
|
61436
61432
|
},
|
|
61437
61433
|
deviceTypes: BATTERY_DEVICE_TYPES,
|
|
61438
61434
|
apply: "add",
|
|
61439
|
-
path: "
|
|
61435
|
+
path: "level",
|
|
61440
61436
|
sources: [{
|
|
61441
61437
|
kind: "field",
|
|
61442
61438
|
valueKinds: ["number", "string"],
|
|
@@ -61530,7 +61526,7 @@ onStatusChanged: { data: object({
|
|
|
61530
61526
|
schema: BatteryStatusSchema,
|
|
61531
61527
|
kind: "push",
|
|
61532
61528
|
empty: {
|
|
61533
|
-
|
|
61529
|
+
level: null,
|
|
61534
61530
|
charging: "unknown",
|
|
61535
61531
|
sleeping: false,
|
|
61536
61532
|
lastUpdated: 0
|
|
@@ -61557,11 +61553,11 @@ onStatusChanged: { data: object({
|
|
|
61557
61553
|
* History (D850): recorded series. The generic capture replaces the `battery` series of `pipeline-analytics:stats-5m`.
|
|
61558
61554
|
*/
|
|
61559
61555
|
history: { fields: {
|
|
61560
|
-
|
|
61556
|
+
level: {
|
|
61561
61557
|
kind: "gauge",
|
|
61562
61558
|
unit: "%"
|
|
61563
61559
|
},
|
|
61564
|
-
|
|
61560
|
+
voltage: {
|
|
61565
61561
|
kind: "gauge",
|
|
61566
61562
|
unit: "V"
|
|
61567
61563
|
}
|
|
@@ -61621,14 +61617,14 @@ var binaryCapability = {
|
|
|
61621
61617
|
* controls to this single-method surface.
|
|
61622
61618
|
*
|
|
61623
61619
|
* The cap is intentionally minimal: a single `setBrightness({deviceId,
|
|
61624
|
-
*
|
|
61620
|
+
* level})` mutation plus the auto-injected `getStatus`. Drivers
|
|
61625
61621
|
* that expose richer controls (color temperature, scenes, schedules)
|
|
61626
61622
|
* should surface those via the device's `getSettingsUISchema()`
|
|
61627
61623
|
* instead of bloating this cap.
|
|
61628
61624
|
*/
|
|
61629
61625
|
var BrightnessStatusSchema = object({
|
|
61630
61626
|
/** Current level as 0..100 inclusive. Firmware-reported. */
|
|
61631
|
-
|
|
61627
|
+
level: number().min(0).max(100).meta(readingMeta("percentage")),
|
|
61632
61628
|
/** Ms epoch of the last operator-driven change. Useful for UI freshness. */
|
|
61633
61629
|
lastChangedAt: number()
|
|
61634
61630
|
});
|
|
@@ -61640,7 +61636,7 @@ var brightnessCapability = {
|
|
|
61640
61636
|
deviceTypes: [DeviceType.Light],
|
|
61641
61637
|
methods: { setBrightness: method(object({
|
|
61642
61638
|
deviceId: number().int().nonnegative(),
|
|
61643
|
-
|
|
61639
|
+
level: number().min(0).max(100)
|
|
61644
61640
|
}), _void(), {
|
|
61645
61641
|
kind: "mutation",
|
|
61646
61642
|
auth: "protected"
|
|
@@ -61653,7 +61649,7 @@ var brightnessCapability = {
|
|
|
61653
61649
|
*/
|
|
61654
61650
|
onBrightnessChanged: { data: object({
|
|
61655
61651
|
deviceId: number(),
|
|
61656
|
-
|
|
61652
|
+
level: number().min(0).max(100),
|
|
61657
61653
|
lastChangedAt: number()
|
|
61658
61654
|
}) } },
|
|
61659
61655
|
status: {
|
|
@@ -61676,7 +61672,7 @@ onBrightnessChanged: { data: object({
|
|
|
61676
61672
|
/**
|
|
61677
61673
|
* History (D850): recorded series. Actuator tier: level keeps every change.
|
|
61678
61674
|
*/
|
|
61679
|
-
history: { fields: {
|
|
61675
|
+
history: { fields: { level: {
|
|
61680
61676
|
kind: "gauge",
|
|
61681
61677
|
unit: "%",
|
|
61682
61678
|
minIntervalMs: 0
|
|
@@ -62300,11 +62296,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
|
|
|
62300
62296
|
}),
|
|
62301
62297
|
object({
|
|
62302
62298
|
mode: literal("mired"),
|
|
62303
|
-
|
|
62299
|
+
colorTemperature: number().int().min(50).max(1e3)
|
|
62304
62300
|
})
|
|
62305
62301
|
]);
|
|
62306
62302
|
var ColorStatusSchema = object({
|
|
62307
|
-
/** Active color mode — which of `rgb` / `hsv` / `
|
|
62303
|
+
/** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
|
|
62308
62304
|
* the bulb's current state. */
|
|
62309
62305
|
mode: _enum([
|
|
62310
62306
|
"rgb",
|
|
@@ -62316,7 +62312,7 @@ var ColorStatusSchema = object({
|
|
|
62316
62312
|
/** Populated when `mode === 'hsv'`. */
|
|
62317
62313
|
hsv: HsvTripletSchema.optional(),
|
|
62318
62314
|
/** Populated when `mode === 'mired'`. */
|
|
62319
|
-
|
|
62315
|
+
colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
|
|
62320
62316
|
/** Ms epoch of the last operator-driven change. */
|
|
62321
62317
|
lastChangedAt: number()
|
|
62322
62318
|
});
|
|
@@ -62348,7 +62344,7 @@ onColorChanged: { data: object({
|
|
|
62348
62344
|
]),
|
|
62349
62345
|
rgb: RgbTripletSchema.optional(),
|
|
62350
62346
|
hsv: HsvTripletSchema.optional(),
|
|
62351
|
-
|
|
62347
|
+
colorTemperature: number().int().optional(),
|
|
62352
62348
|
lastChangedAt: number()
|
|
62353
62349
|
}) } },
|
|
62354
62350
|
status: {
|
|
@@ -63261,11 +63257,11 @@ var DishwasherStatusSchema = object({
|
|
|
63261
63257
|
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
63262
63258
|
availablePrograms: array(string()),
|
|
63263
63259
|
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
63264
|
-
|
|
63260
|
+
remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
63265
63261
|
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
63266
|
-
|
|
63262
|
+
delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
63267
63263
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
63268
|
-
|
|
63264
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
63269
63265
|
/** True when the door is reported open; null when the door state is not known. */
|
|
63270
63266
|
doorOpen: boolean().nullable(),
|
|
63271
63267
|
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
@@ -63484,14 +63480,14 @@ var dishwasherCapability = {
|
|
|
63484
63480
|
runtimeState: DishwasherStatusSchema,
|
|
63485
63481
|
durability: "session",
|
|
63486
63482
|
history: { fields: {
|
|
63487
|
-
|
|
63483
|
+
progress: {
|
|
63488
63484
|
kind: "gauge",
|
|
63489
63485
|
unit: "%",
|
|
63490
63486
|
deadband: 2
|
|
63491
63487
|
},
|
|
63492
63488
|
state: { kind: "enum" },
|
|
63493
63489
|
operationState: { kind: "enum" },
|
|
63494
|
-
|
|
63490
|
+
remaining: {
|
|
63495
63491
|
kind: "gauge",
|
|
63496
63492
|
unit: "s",
|
|
63497
63493
|
minIntervalMs: 6e4
|
|
@@ -64122,7 +64118,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
|
|
|
64122
64118
|
var FanControlStatusSchema = object({
|
|
64123
64119
|
/** Active speed as 0..100 inclusive. Null when the device has no
|
|
64124
64120
|
* speed surface (single-speed fan). */
|
|
64125
|
-
|
|
64121
|
+
speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
64126
64122
|
/** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
|
|
64127
64123
|
* a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
|
|
64128
64124
|
percentageStep: number().positive().optional().meta(readingMeta("percentage")),
|
|
@@ -64149,7 +64145,7 @@ var fanControlCapability = {
|
|
|
64149
64145
|
methods: {
|
|
64150
64146
|
setPercentage: method(object({
|
|
64151
64147
|
deviceId: number().int().nonnegative(),
|
|
64152
|
-
|
|
64148
|
+
speed: number().min(0).max(100)
|
|
64153
64149
|
}), _void(), {
|
|
64154
64150
|
kind: "mutation",
|
|
64155
64151
|
auth: "protected"
|
|
@@ -64182,7 +64178,7 @@ var fanControlCapability = {
|
|
|
64182
64178
|
},
|
|
64183
64179
|
/**
|
|
64184
64180
|
* Runtime-state slice — mirrored by the kernel. UI fan speed
|
|
64185
|
-
* sliders read `
|
|
64181
|
+
* sliders read `speed` for live updates.
|
|
64186
64182
|
*/
|
|
64187
64183
|
runtimeState: FanControlStatusSchema,
|
|
64188
64184
|
/**
|
|
@@ -64196,7 +64192,7 @@ var fanControlCapability = {
|
|
|
64196
64192
|
* History (D850): recorded series. Actuator tier: speed keeps every change.
|
|
64197
64193
|
*/
|
|
64198
64194
|
history: { fields: {
|
|
64199
|
-
|
|
64195
|
+
speed: {
|
|
64200
64196
|
kind: "gauge",
|
|
64201
64197
|
unit: "%",
|
|
64202
64198
|
minIntervalMs: 0
|
|
@@ -64641,7 +64637,7 @@ var humidifierCapability = {
|
|
|
64641
64637
|
*/
|
|
64642
64638
|
var HumiditySensorStatusSchema = object({
|
|
64643
64639
|
/** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
|
|
64644
|
-
|
|
64640
|
+
humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
|
|
64645
64641
|
precision: 0,
|
|
64646
64642
|
label: "Humidity"
|
|
64647
64643
|
})),
|
|
@@ -64670,7 +64666,7 @@ var humiditySensorCapability = {
|
|
|
64670
64666
|
/**
|
|
64671
64667
|
* History (D850): recorded series.
|
|
64672
64668
|
*/
|
|
64673
|
-
history: { fields: {
|
|
64669
|
+
history: { fields: { humidity: {
|
|
64674
64670
|
kind: "gauge",
|
|
64675
64671
|
unit: "%",
|
|
64676
64672
|
deadband: .5
|
|
@@ -65310,7 +65306,7 @@ var LawnMowerControlStatusSchema = object({
|
|
|
65310
65306
|
batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65311
65307
|
/** 0..100 mowing-completion percentage of the current task, or null when no
|
|
65312
65308
|
* task is active / progress is unavailable. */
|
|
65313
|
-
|
|
65309
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65314
65310
|
/** Current device/event code (dynamic — mostly status, sometimes an error),
|
|
65315
65311
|
* or null when unknown. */
|
|
65316
65312
|
currentCode: number().nullable().meta(readingMeta("none")),
|
|
@@ -65831,7 +65827,7 @@ var lockControlCapability = {
|
|
|
65831
65827
|
volatileStateFields: ["lastChangedAt"]
|
|
65832
65828
|
};
|
|
65833
65829
|
/**
|
|
65834
|
-
* A monotonic total between resets (D944). Energy uses `power-meter.
|
|
65830
|
+
* A monotonic total between resets (D944). Energy uses `power-meter.energy`
|
|
65835
65831
|
* so dashboards keep one series; every other instantaneous reading lands here.
|
|
65836
65832
|
* `value` is the time integral in the source quantity's accumulated base
|
|
65837
65833
|
* (base-unit seconds, or kWh on the power meter). `null` is a gap, never zero.
|
|
@@ -65925,10 +65921,10 @@ var MediaPlayerStatusSchema = object({
|
|
|
65925
65921
|
currentMedia: MediaInfoSchema.nullable(),
|
|
65926
65922
|
/** Current playback position in ms. Null when not seekable or
|
|
65927
65923
|
* nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
|
|
65928
|
-
|
|
65924
|
+
position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
65929
65925
|
/** Total duration of the current media in ms. Null when unknown
|
|
65930
65926
|
* (live stream) or nothing is playing. */
|
|
65931
|
-
|
|
65927
|
+
duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
65932
65928
|
/** Shuffle toggle. Null when no shuffle surface.
|
|
65933
65929
|
* Pair with `DeviceFeature.MediaPlayerShuffle`. */
|
|
65934
65930
|
shuffle: boolean().nullable(),
|
|
@@ -65967,7 +65963,7 @@ var mediaPlayerCapability = {
|
|
|
65967
65963
|
}),
|
|
65968
65964
|
seek: method(object({
|
|
65969
65965
|
deviceId: number().int().nonnegative(),
|
|
65970
|
-
|
|
65966
|
+
position: number().int().nonnegative()
|
|
65971
65967
|
}), _void(), {
|
|
65972
65968
|
kind: "mutation",
|
|
65973
65969
|
auth: "protected"
|
|
@@ -66039,7 +66035,7 @@ var mediaPlayerCapability = {
|
|
|
66039
66035
|
/**
|
|
66040
66036
|
* History (D850): volume (a level an operator or an automation sets; the
|
|
66041
66037
|
* default 10 s floor folds a slider drag into its end value) and mute.
|
|
66042
|
-
* `
|
|
66038
|
+
* `position` is not recorded: it moves continuously while playing.
|
|
66043
66039
|
*/
|
|
66044
66040
|
history: { fields: {
|
|
66045
66041
|
volumeLevel: {
|
|
@@ -67026,9 +67022,9 @@ var NetworkLinkStatusSchema = object({
|
|
|
67026
67022
|
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
67027
67023
|
* SKIP a null rather than coerce it.
|
|
67028
67024
|
*/
|
|
67029
|
-
|
|
67025
|
+
signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
67030
67026
|
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
67031
|
-
|
|
67027
|
+
rssi: number().optional().meta(readingMeta("signal-level")),
|
|
67032
67028
|
/** Network name of a wireless link, when the firmware reports it. */
|
|
67033
67029
|
ssid: string().optional(),
|
|
67034
67030
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
@@ -67064,7 +67060,7 @@ onStatusChanged: { data: object({
|
|
|
67064
67060
|
kind: "push",
|
|
67065
67061
|
empty: {
|
|
67066
67062
|
type: "unknown",
|
|
67067
|
-
|
|
67063
|
+
signal: null,
|
|
67068
67064
|
lastUpdated: 0
|
|
67069
67065
|
}
|
|
67070
67066
|
},
|
|
@@ -67087,13 +67083,13 @@ onStatusChanged: { data: object({
|
|
|
67087
67083
|
* History (D850): recorded series.
|
|
67088
67084
|
*/
|
|
67089
67085
|
history: { fields: {
|
|
67090
|
-
|
|
67086
|
+
signal: {
|
|
67091
67087
|
kind: "gauge",
|
|
67092
67088
|
unit: "%",
|
|
67093
67089
|
deadband: 3,
|
|
67094
67090
|
minIntervalMs: 6e4
|
|
67095
67091
|
},
|
|
67096
|
-
|
|
67092
|
+
rssi: {
|
|
67097
67093
|
kind: "gauge",
|
|
67098
67094
|
unit: "dBm",
|
|
67099
67095
|
deadband: 2,
|
|
@@ -68448,16 +68444,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
68448
68444
|
* in real-world devices.
|
|
68449
68445
|
*/
|
|
68450
68446
|
var PowerMeterStatusSchema = object({
|
|
68451
|
-
/** Instantaneous power draw
|
|
68452
|
-
|
|
68447
|
+
/** Instantaneous power draw (watts). */
|
|
68448
|
+
power: number().optional().meta(readingMeta("power", { label: "Power" })),
|
|
68453
68449
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
68454
|
-
|
|
68455
|
-
/** Voltage
|
|
68456
|
-
|
|
68450
|
+
energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
|
|
68451
|
+
/** Voltage (volts). */
|
|
68452
|
+
voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
68457
68453
|
/** Current in amperes. */
|
|
68458
|
-
|
|
68454
|
+
current: number().optional().meta(readingMeta("current", { label: "Current" })),
|
|
68459
68455
|
/** Apparent power in volt-amperes. */
|
|
68460
|
-
|
|
68456
|
+
apparentPower: number().optional().meta(readingMeta("apparent-power")),
|
|
68461
68457
|
/** Power factor (0..1) if reported. */
|
|
68462
68458
|
powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
|
|
68463
68459
|
/** Ms epoch when the slice was last updated. */
|
|
@@ -68515,14 +68511,14 @@ function powerTarget(id, unit) {
|
|
|
68515
68511
|
advancedExpression: true
|
|
68516
68512
|
};
|
|
68517
68513
|
}
|
|
68518
|
-
/** "Power and energy" extension:
|
|
68514
|
+
/** "Power and energy" extension: power, energy, voltage and current from other devices (D951). */
|
|
68519
68515
|
var powerMeterCustomize = {
|
|
68520
68516
|
version: 1,
|
|
68521
68517
|
targets: [
|
|
68522
|
-
powerTarget("
|
|
68523
|
-
powerTarget("
|
|
68524
|
-
powerTarget("
|
|
68525
|
-
powerTarget("
|
|
68518
|
+
powerTarget("power", "W"),
|
|
68519
|
+
powerTarget("energy", "kWh"),
|
|
68520
|
+
powerTarget("voltage", "V"),
|
|
68521
|
+
powerTarget("current", "A")
|
|
68526
68522
|
]
|
|
68527
68523
|
};
|
|
68528
68524
|
var powerMeterCapability = {
|
|
@@ -68538,41 +68534,41 @@ var powerMeterCapability = {
|
|
|
68538
68534
|
},
|
|
68539
68535
|
runtimeState: PowerMeterStatusSchema,
|
|
68540
68536
|
/**
|
|
68541
|
-
* Runtime-state durability: **restored** — as `numeric-sensor`; `
|
|
68537
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`; `energy` is an accumulator whose restored value is the baseline.
|
|
68542
68538
|
*
|
|
68543
68539
|
* See `RuntimeStateDurability`. Enforced by
|
|
68544
68540
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68545
68541
|
*/
|
|
68546
68542
|
durability: "restored",
|
|
68547
68543
|
/**
|
|
68548
|
-
* History (D850): recorded series. Gauges are floored at 30 s; `
|
|
68544
|
+
* History (D850): recorded series. Gauges are floored at 30 s; `energy` is the one monotonic meter (counter).
|
|
68549
68545
|
*/
|
|
68550
68546
|
history: { fields: {
|
|
68551
|
-
|
|
68547
|
+
power: {
|
|
68552
68548
|
kind: "gauge",
|
|
68553
68549
|
unit: "W",
|
|
68554
68550
|
deadband: 1,
|
|
68555
68551
|
minIntervalMs: 3e4
|
|
68556
68552
|
},
|
|
68557
|
-
|
|
68553
|
+
energy: {
|
|
68558
68554
|
kind: "counter",
|
|
68559
68555
|
unit: "kWh",
|
|
68560
68556
|
deadband: .01,
|
|
68561
68557
|
minIntervalMs: 6e4
|
|
68562
68558
|
},
|
|
68563
|
-
|
|
68559
|
+
voltage: {
|
|
68564
68560
|
kind: "gauge",
|
|
68565
68561
|
unit: "V",
|
|
68566
68562
|
deadband: 1,
|
|
68567
68563
|
minIntervalMs: 3e4
|
|
68568
68564
|
},
|
|
68569
|
-
|
|
68565
|
+
current: {
|
|
68570
68566
|
kind: "gauge",
|
|
68571
68567
|
unit: "A",
|
|
68572
68568
|
deadband: .05,
|
|
68573
68569
|
minIntervalMs: 3e4
|
|
68574
68570
|
},
|
|
68575
|
-
|
|
68571
|
+
apparentPower: {
|
|
68576
68572
|
kind: "gauge",
|
|
68577
68573
|
unit: "VA",
|
|
68578
68574
|
deadband: 1,
|
|
@@ -68622,9 +68618,6 @@ var PresenceStatusSchema = object({
|
|
|
68622
68618
|
location: string().nullable(),
|
|
68623
68619
|
/** GPS coordinates when available. Null otherwise. */
|
|
68624
68620
|
gps: GpsLocationSchema.nullable(),
|
|
68625
|
-
/** Optional battery level of the tracking device (0..100). Null
|
|
68626
|
-
* when not reported. */
|
|
68627
|
-
batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
68628
68621
|
/** Ms epoch when the slice was last updated. */
|
|
68629
68622
|
lastChangedAt: number()
|
|
68630
68623
|
});
|
|
@@ -68653,14 +68646,7 @@ var presenceCapability = {
|
|
|
68653
68646
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68654
68647
|
*/
|
|
68655
68648
|
durability: "restored",
|
|
68656
|
-
|
|
68657
|
-
* History (D850): recorded series.
|
|
68658
|
-
*/
|
|
68659
|
-
history: { fields: { batteryPercent: {
|
|
68660
|
-
kind: "gauge",
|
|
68661
|
-
unit: "%",
|
|
68662
|
-
deadband: 1
|
|
68663
|
-
} } },
|
|
68649
|
+
history: "none",
|
|
68664
68650
|
/** Clock fields: written, but excluded from the compare that decides
|
|
68665
68651
|
* whether persisting is worth a SQLite commit. */
|
|
68666
68652
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -68675,7 +68661,7 @@ var presenceCapability = {
|
|
|
68675
68661
|
*/
|
|
68676
68662
|
var PressureSensorStatusSchema = object({
|
|
68677
68663
|
/** Current pressure in hPa. `null` when the sample was refused (D393). */
|
|
68678
|
-
|
|
68664
|
+
pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
|
|
68679
68665
|
/** Ms epoch when the slice was last updated. */
|
|
68680
68666
|
lastFetchedAt: number()
|
|
68681
68667
|
});
|
|
@@ -68701,7 +68687,7 @@ var pressureSensorCapability = {
|
|
|
68701
68687
|
/**
|
|
68702
68688
|
* History (D850): recorded series.
|
|
68703
68689
|
*/
|
|
68704
|
-
history: { fields: {
|
|
68690
|
+
history: { fields: { pressure: {
|
|
68705
68691
|
kind: "gauge",
|
|
68706
68692
|
unit: "hPa",
|
|
68707
68693
|
deadband: .1
|
|
@@ -72450,7 +72436,7 @@ var tamperCapability = {
|
|
|
72450
72436
|
*/
|
|
72451
72437
|
var TemperatureSensorStatusSchema = object({
|
|
72452
72438
|
/** Current temperature in Celsius. `null` when the sample was refused (D393). */
|
|
72453
|
-
|
|
72439
|
+
temperature: number().nullable().meta(readingMeta("temperature", {
|
|
72454
72440
|
precision: 1,
|
|
72455
72441
|
label: "Temperature"
|
|
72456
72442
|
})),
|
|
@@ -72479,7 +72465,7 @@ var temperatureSensorCapability = {
|
|
|
72479
72465
|
/**
|
|
72480
72466
|
* History (D850): recorded series.
|
|
72481
72467
|
*/
|
|
72482
|
-
history: { fields: {
|
|
72468
|
+
history: { fields: { temperature: {
|
|
72483
72469
|
kind: "gauge",
|
|
72484
72470
|
unit: "°C",
|
|
72485
72471
|
deadband: .1
|
|
@@ -72776,7 +72762,7 @@ var VacuumControlStatusSchema = object({
|
|
|
72776
72762
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
72777
72763
|
availableFanSpeeds: array(string()),
|
|
72778
72764
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
72779
|
-
|
|
72765
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
72780
72766
|
/** Current error code (0 / null = no error). */
|
|
72781
72767
|
errorCode: number().nullable().meta(readingMeta("none")),
|
|
72782
72768
|
/** Human label for {@link errorCode}, or null when none / undecodable. */
|
|
@@ -74483,7 +74469,7 @@ var BaseDevice = class {
|
|
|
74483
74469
|
* `device-local-state.ts`. Drivers access via:
|
|
74484
74470
|
*
|
|
74485
74471
|
* `this.state.battery.sleeping = true` // patches the battery slice
|
|
74486
|
-
* `const pct = this.state.battery.
|
|
74472
|
+
* `const pct = this.state.battery.level` // reads the battery slice
|
|
74487
74473
|
* `this.state.deviceStatus.online = true` // mirrors `markOnline(true)`
|
|
74488
74474
|
*
|
|
74489
74475
|
* Adding a new cap with `runtimeState:` automatically extends this
|
|
@@ -74523,7 +74509,7 @@ var BaseDevice = class {
|
|
|
74523
74509
|
* shape; drivers don't redeclare it, they just write through.
|
|
74524
74510
|
*
|
|
74525
74511
|
* Read: `this.runtimeState.getCapState('battery')` →
|
|
74526
|
-
* `{
|
|
74512
|
+
* `{level, charging, sleeping, lastUpdated}` for any
|
|
74527
74513
|
* provider that registers `batteryCapability`.
|
|
74528
74514
|
* Write: `this.runtimeState.setCapState('battery', { … })`.
|
|
74529
74515
|
*
|
|
@@ -85243,7 +85229,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85243
85229
|
label: t("Full brightness", "Luminosità massima"),
|
|
85244
85230
|
phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
|
|
85245
85231
|
icon: "sun",
|
|
85246
|
-
args: {
|
|
85232
|
+
args: { level: 100 }
|
|
85247
85233
|
},
|
|
85248
85234
|
{
|
|
85249
85235
|
id: "brightness.half",
|
|
@@ -85251,7 +85237,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85251
85237
|
label: t("Half brightness", "Luminosità a metà"),
|
|
85252
85238
|
phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
|
|
85253
85239
|
icon: "sun-dim",
|
|
85254
|
-
args: {
|
|
85240
|
+
args: { level: 50 }
|
|
85255
85241
|
},
|
|
85256
85242
|
{
|
|
85257
85243
|
id: "brightness.off",
|
|
@@ -85259,16 +85245,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85259
85245
|
label: t("Brightness off", "Luminosità a zero"),
|
|
85260
85246
|
phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
|
|
85261
85247
|
icon: "lightbulb-off",
|
|
85262
|
-
args: {
|
|
85248
|
+
args: { level: 0 }
|
|
85263
85249
|
},
|
|
85264
85250
|
{
|
|
85265
85251
|
id: "brightness.set",
|
|
85266
85252
|
method: "setBrightness",
|
|
85267
85253
|
label: t("Set brightness", "Imposta la luminosità"),
|
|
85268
|
-
phrase: t("Set the brightness of {device} to {
|
|
85254
|
+
phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
|
|
85269
85255
|
icon: "sun-medium",
|
|
85270
85256
|
openArgs: [{
|
|
85271
|
-
key: "
|
|
85257
|
+
key: "level",
|
|
85272
85258
|
label: PERCENT,
|
|
85273
85259
|
offer: {
|
|
85274
85260
|
kind: "number",
|
|
@@ -85282,13 +85268,13 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85282
85268
|
],
|
|
85283
85269
|
state: [{
|
|
85284
85270
|
kind: "numeric",
|
|
85285
|
-
field: "
|
|
85271
|
+
field: "level",
|
|
85286
85272
|
quantity: t("the brightness", "la luminosità"),
|
|
85287
85273
|
label: t("Brightness", "Luminosità"),
|
|
85288
85274
|
unit: "%",
|
|
85289
85275
|
icon: "sun"
|
|
85290
85276
|
}],
|
|
85291
|
-
events: { onBrightnessChanged: { notOperatorFacing: "the `
|
|
85277
|
+
events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
|
|
85292
85278
|
},
|
|
85293
85279
|
color: {
|
|
85294
85280
|
scope: "device",
|
|
@@ -85302,7 +85288,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85302
85288
|
icon: "sun",
|
|
85303
85289
|
args: { color: {
|
|
85304
85290
|
mode: "mired",
|
|
85305
|
-
|
|
85291
|
+
colorTemperature: 370
|
|
85306
85292
|
} }
|
|
85307
85293
|
},
|
|
85308
85294
|
{
|
|
@@ -85313,7 +85299,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85313
85299
|
icon: "snowflake",
|
|
85314
85300
|
args: { color: {
|
|
85315
85301
|
mode: "mired",
|
|
85316
|
-
|
|
85302
|
+
colorTemperature: 200
|
|
85317
85303
|
} }
|
|
85318
85304
|
},
|
|
85319
85305
|
{
|
|
@@ -85927,7 +85913,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85927
85913
|
label: t("Fan off", "Ventilatore spento"),
|
|
85928
85914
|
phrase: t("Stop {device}", "Ferma {device}"),
|
|
85929
85915
|
icon: "power-off",
|
|
85930
|
-
args: {
|
|
85916
|
+
args: { speed: 0 }
|
|
85931
85917
|
},
|
|
85932
85918
|
{
|
|
85933
85919
|
id: "fan.full",
|
|
@@ -85935,16 +85921,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85935
85921
|
label: t("Fan full", "Ventilatore al massimo"),
|
|
85936
85922
|
phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
|
|
85937
85923
|
icon: "fan",
|
|
85938
|
-
args: {
|
|
85924
|
+
args: { speed: 100 }
|
|
85939
85925
|
},
|
|
85940
85926
|
{
|
|
85941
85927
|
id: "fan.speed",
|
|
85942
85928
|
method: "setPercentage",
|
|
85943
85929
|
label: t("Set speed", "Imposta la velocità"),
|
|
85944
|
-
phrase: t("Set the speed of {device} to {
|
|
85930
|
+
phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
|
|
85945
85931
|
icon: "fan",
|
|
85946
85932
|
openArgs: [{
|
|
85947
|
-
key: "
|
|
85933
|
+
key: "speed",
|
|
85948
85934
|
label: t("Speed", "Velocità"),
|
|
85949
85935
|
offer: {
|
|
85950
85936
|
kind: "number",
|
|
@@ -86006,7 +85992,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
86006
85992
|
],
|
|
86007
85993
|
state: [{
|
|
86008
85994
|
kind: "numeric",
|
|
86009
|
-
field: "
|
|
85995
|
+
field: "speed",
|
|
86010
85996
|
quantity: t("the speed", "la velocità"),
|
|
86011
85997
|
label: t("Speed", "Velocità"),
|
|
86012
85998
|
unit: "%",
|
|
@@ -86804,7 +86790,7 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
86804
86790
|
},
|
|
86805
86791
|
{
|
|
86806
86792
|
kind: "numeric",
|
|
86807
|
-
field: "
|
|
86793
|
+
field: "progress",
|
|
86808
86794
|
quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
|
|
86809
86795
|
label: t("Progress", "Avanzamento"),
|
|
86810
86796
|
unit: "%",
|
|
@@ -87162,10 +87148,10 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
87162
87148
|
id: "media.seek",
|
|
87163
87149
|
method: "seek",
|
|
87164
87150
|
label: t("Seek", "Vai al punto"),
|
|
87165
|
-
phrase: t("Move {device} to {
|
|
87151
|
+
phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
|
|
87166
87152
|
icon: "fast-forward",
|
|
87167
87153
|
openArgs: [{
|
|
87168
|
-
key: "
|
|
87154
|
+
key: "position",
|
|
87169
87155
|
label: t("Position", "Posizione"),
|
|
87170
87156
|
offer: {
|
|
87171
87157
|
kind: "number",
|
|
@@ -88214,7 +88200,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88214
88200
|
state: [
|
|
88215
88201
|
{
|
|
88216
88202
|
kind: "numeric",
|
|
88217
|
-
field: "
|
|
88203
|
+
field: "co2",
|
|
88218
88204
|
quantity: t("the CO₂", "la CO₂"),
|
|
88219
88205
|
label: t("CO₂", "CO₂"),
|
|
88220
88206
|
unit: "ppm",
|
|
@@ -88222,7 +88208,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88222
88208
|
},
|
|
88223
88209
|
{
|
|
88224
88210
|
kind: "numeric",
|
|
88225
|
-
field: "
|
|
88211
|
+
field: "voc",
|
|
88226
88212
|
quantity: t("the VOC level", "il livello di COV"),
|
|
88227
88213
|
label: t("VOC", "COV"),
|
|
88228
88214
|
unit: "ppb",
|
|
@@ -88258,7 +88244,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88258
88244
|
noun: t("Light level", "Luminosità ambiente"),
|
|
88259
88245
|
state: [{
|
|
88260
88246
|
kind: "numeric",
|
|
88261
|
-
field: "
|
|
88247
|
+
field: "illuminance",
|
|
88262
88248
|
quantity: t("the light level", "la luminosità"),
|
|
88263
88249
|
label: t("Illuminance", "Illuminamento"),
|
|
88264
88250
|
unit: "lx",
|
|
@@ -88461,7 +88447,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88461
88447
|
noun: t("Humidity", "Umidità"),
|
|
88462
88448
|
state: [{
|
|
88463
88449
|
kind: "numeric",
|
|
88464
|
-
field: "
|
|
88450
|
+
field: "humidity",
|
|
88465
88451
|
quantity: t("the humidity", "l’umidità"),
|
|
88466
88452
|
label: t("Humidity", "Umidità"),
|
|
88467
88453
|
unit: "%",
|
|
@@ -88509,7 +88495,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88509
88495
|
state: [
|
|
88510
88496
|
{
|
|
88511
88497
|
kind: "numeric",
|
|
88512
|
-
field: "
|
|
88498
|
+
field: "power",
|
|
88513
88499
|
quantity: t("the power draw", "il consumo"),
|
|
88514
88500
|
label: t("Power", "Potenza"),
|
|
88515
88501
|
unit: "W",
|
|
@@ -88517,7 +88503,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88517
88503
|
},
|
|
88518
88504
|
{
|
|
88519
88505
|
kind: "numeric",
|
|
88520
|
-
field: "
|
|
88506
|
+
field: "energy",
|
|
88521
88507
|
quantity: t("the energy used", "l’energia consumata"),
|
|
88522
88508
|
label: t("Energy", "Energia"),
|
|
88523
88509
|
unit: "kWh",
|
|
@@ -88525,7 +88511,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88525
88511
|
},
|
|
88526
88512
|
{
|
|
88527
88513
|
kind: "numeric",
|
|
88528
|
-
field: "
|
|
88514
|
+
field: "voltage",
|
|
88529
88515
|
quantity: t("the voltage", "la tensione"),
|
|
88530
88516
|
label: t("Voltage", "Tensione"),
|
|
88531
88517
|
unit: "V",
|
|
@@ -88533,7 +88519,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88533
88519
|
},
|
|
88534
88520
|
{
|
|
88535
88521
|
kind: "numeric",
|
|
88536
|
-
field: "
|
|
88522
|
+
field: "current",
|
|
88537
88523
|
quantity: t("the current", "la corrente"),
|
|
88538
88524
|
label: t("Current", "Corrente"),
|
|
88539
88525
|
unit: "A",
|
|
@@ -88550,13 +88536,6 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88550
88536
|
label: t("Where", "Posizione"),
|
|
88551
88537
|
phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
|
|
88552
88538
|
icon: "map-pin"
|
|
88553
|
-
}, {
|
|
88554
|
-
kind: "numeric",
|
|
88555
|
-
field: "batteryPercent",
|
|
88556
|
-
quantity: t("the phone battery", "la batteria del telefono"),
|
|
88557
|
-
label: t("Battery", "Batteria"),
|
|
88558
|
-
unit: "%",
|
|
88559
|
-
icon: "battery"
|
|
88560
88539
|
}]
|
|
88561
88540
|
},
|
|
88562
88541
|
"pressure-sensor": {
|
|
@@ -88564,7 +88543,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88564
88543
|
noun: t("Pressure", "Pressione"),
|
|
88565
88544
|
state: [{
|
|
88566
88545
|
kind: "numeric",
|
|
88567
|
-
field: "
|
|
88546
|
+
field: "pressure",
|
|
88568
88547
|
quantity: t("the pressure", "la pressione"),
|
|
88569
88548
|
label: t("Pressure", "Pressione"),
|
|
88570
88549
|
unit: "hPa",
|
|
@@ -88600,7 +88579,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88600
88579
|
noun: t("Temperature", "Temperatura"),
|
|
88601
88580
|
state: [{
|
|
88602
88581
|
kind: "numeric",
|
|
88603
|
-
field: "
|
|
88582
|
+
field: "temperature",
|
|
88604
88583
|
quantity: t("the temperature", "la temperatura"),
|
|
88605
88584
|
label: t("Temperature", "Temperatura"),
|
|
88606
88585
|
unit: "°C",
|
|
@@ -88671,7 +88650,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88671
88650
|
state: [
|
|
88672
88651
|
{
|
|
88673
88652
|
kind: "numeric",
|
|
88674
|
-
field: "
|
|
88653
|
+
field: "level",
|
|
88675
88654
|
quantity: t("the battery level", "il livello della batteria"),
|
|
88676
88655
|
label: t("Battery", "Batteria"),
|
|
88677
88656
|
unit: "%",
|
|
@@ -88713,7 +88692,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88713
88692
|
icon: "battery-charging"
|
|
88714
88693
|
}
|
|
88715
88694
|
],
|
|
88716
|
-
events: { onStatusChanged: { notOperatorFacing: "the
|
|
88695
|
+
events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
|
|
88717
88696
|
extraEvents: [{
|
|
88718
88697
|
category: EventCategory.DeviceAwake,
|
|
88719
88698
|
label: t("Woke up", "Risvegliato"),
|
|
@@ -88731,7 +88710,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88731
88710
|
noun: t("Network link", "Collegamento di rete"),
|
|
88732
88711
|
state: [{
|
|
88733
88712
|
kind: "numeric",
|
|
88734
|
-
field: "
|
|
88713
|
+
field: "signal",
|
|
88735
88714
|
quantity: t("the signal strength", "l’intensità del segnale"),
|
|
88736
88715
|
label: t("Signal", "Segnale"),
|
|
88737
88716
|
unit: "%",
|