@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
|
@@ -5676,7 +5676,7 @@ var ZodIssueCode = {
|
|
|
5676
5676
|
var ZodFirstPartyTypeKind;
|
|
5677
5677
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5678
5678
|
//#endregion
|
|
5679
|
-
//#region ../types/dist/sleep-
|
|
5679
|
+
//#region ../types/dist/sleep-Crlmu_tO.mjs
|
|
5680
5680
|
/**
|
|
5681
5681
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5682
5682
|
* window to float samples (D455).
|
|
@@ -9214,11 +9214,11 @@ var CAP_NAMES = Object.freeze([
|
|
|
9214
9214
|
Object.freeze({
|
|
9215
9215
|
"air-quality-sensor": [
|
|
9216
9216
|
{
|
|
9217
|
-
"path": "
|
|
9217
|
+
"path": "co2",
|
|
9218
9218
|
"valueType": "number"
|
|
9219
9219
|
},
|
|
9220
9220
|
{
|
|
9221
|
-
"path": "
|
|
9221
|
+
"path": "voc",
|
|
9222
9222
|
"valueType": "number"
|
|
9223
9223
|
},
|
|
9224
9224
|
{
|
|
@@ -9268,7 +9268,7 @@ Object.freeze({
|
|
|
9268
9268
|
}
|
|
9269
9269
|
],
|
|
9270
9270
|
"ambient-light-sensor": [{
|
|
9271
|
-
"path": "
|
|
9271
|
+
"path": "illuminance",
|
|
9272
9272
|
"valueType": "number"
|
|
9273
9273
|
}],
|
|
9274
9274
|
"audio-metrics": [
|
|
@@ -9329,7 +9329,7 @@ Object.freeze({
|
|
|
9329
9329
|
],
|
|
9330
9330
|
"battery": [
|
|
9331
9331
|
{
|
|
9332
|
-
"path": "
|
|
9332
|
+
"path": "level",
|
|
9333
9333
|
"valueType": "number"
|
|
9334
9334
|
},
|
|
9335
9335
|
{
|
|
@@ -9351,7 +9351,7 @@ Object.freeze({
|
|
|
9351
9351
|
"valueType": "number"
|
|
9352
9352
|
},
|
|
9353
9353
|
{
|
|
9354
|
-
"path": "
|
|
9354
|
+
"path": "voltage",
|
|
9355
9355
|
"valueType": "number"
|
|
9356
9356
|
},
|
|
9357
9357
|
{
|
|
@@ -9372,7 +9372,7 @@ Object.freeze({
|
|
|
9372
9372
|
"valueType": "boolean"
|
|
9373
9373
|
}],
|
|
9374
9374
|
"brightness": [{
|
|
9375
|
-
"path": "
|
|
9375
|
+
"path": "level",
|
|
9376
9376
|
"valueType": "number"
|
|
9377
9377
|
}],
|
|
9378
9378
|
"broker": [{
|
|
@@ -9573,7 +9573,7 @@ Object.freeze({
|
|
|
9573
9573
|
"valueType": "number"
|
|
9574
9574
|
},
|
|
9575
9575
|
{
|
|
9576
|
-
"path": "
|
|
9576
|
+
"path": "colorTemperature",
|
|
9577
9577
|
"valueType": "number"
|
|
9578
9578
|
}
|
|
9579
9579
|
],
|
|
@@ -9752,15 +9752,15 @@ Object.freeze({
|
|
|
9752
9752
|
"valueType": "string"
|
|
9753
9753
|
},
|
|
9754
9754
|
{
|
|
9755
|
-
"path": "
|
|
9755
|
+
"path": "remaining",
|
|
9756
9756
|
"valueType": "number"
|
|
9757
9757
|
},
|
|
9758
9758
|
{
|
|
9759
|
-
"path": "
|
|
9759
|
+
"path": "delayedStart",
|
|
9760
9760
|
"valueType": "number"
|
|
9761
9761
|
},
|
|
9762
9762
|
{
|
|
9763
|
-
"path": "
|
|
9763
|
+
"path": "progress",
|
|
9764
9764
|
"valueType": "number"
|
|
9765
9765
|
},
|
|
9766
9766
|
{
|
|
@@ -9874,7 +9874,7 @@ Object.freeze({
|
|
|
9874
9874
|
],
|
|
9875
9875
|
"fan-control": [
|
|
9876
9876
|
{
|
|
9877
|
-
"path": "
|
|
9877
|
+
"path": "speed",
|
|
9878
9878
|
"valueType": "number"
|
|
9879
9879
|
},
|
|
9880
9880
|
{
|
|
@@ -9974,7 +9974,7 @@ Object.freeze({
|
|
|
9974
9974
|
}
|
|
9975
9975
|
],
|
|
9976
9976
|
"humidity-sensor": [{
|
|
9977
|
-
"path": "
|
|
9977
|
+
"path": "humidity",
|
|
9978
9978
|
"valueType": "number"
|
|
9979
9979
|
}],
|
|
9980
9980
|
"image": [{
|
|
@@ -10084,7 +10084,7 @@ Object.freeze({
|
|
|
10084
10084
|
"valueType": "number"
|
|
10085
10085
|
},
|
|
10086
10086
|
{
|
|
10087
|
-
"path": "
|
|
10087
|
+
"path": "progress",
|
|
10088
10088
|
"valueType": "number"
|
|
10089
10089
|
},
|
|
10090
10090
|
{
|
|
@@ -10163,11 +10163,11 @@ Object.freeze({
|
|
|
10163
10163
|
"valueType": "string"
|
|
10164
10164
|
},
|
|
10165
10165
|
{
|
|
10166
|
-
"path": "
|
|
10166
|
+
"path": "position",
|
|
10167
10167
|
"valueType": "number"
|
|
10168
10168
|
},
|
|
10169
10169
|
{
|
|
10170
|
-
"path": "
|
|
10170
|
+
"path": "duration",
|
|
10171
10171
|
"valueType": "number"
|
|
10172
10172
|
},
|
|
10173
10173
|
{
|
|
@@ -10269,11 +10269,11 @@ Object.freeze({
|
|
|
10269
10269
|
]
|
|
10270
10270
|
},
|
|
10271
10271
|
{
|
|
10272
|
-
"path": "
|
|
10272
|
+
"path": "signal",
|
|
10273
10273
|
"valueType": "number"
|
|
10274
10274
|
},
|
|
10275
10275
|
{
|
|
10276
|
-
"path": "
|
|
10276
|
+
"path": "rssi",
|
|
10277
10277
|
"valueType": "number"
|
|
10278
10278
|
},
|
|
10279
10279
|
{
|
|
@@ -10404,23 +10404,23 @@ Object.freeze({
|
|
|
10404
10404
|
],
|
|
10405
10405
|
"power-meter": [
|
|
10406
10406
|
{
|
|
10407
|
-
"path": "
|
|
10407
|
+
"path": "power",
|
|
10408
10408
|
"valueType": "number"
|
|
10409
10409
|
},
|
|
10410
10410
|
{
|
|
10411
|
-
"path": "
|
|
10411
|
+
"path": "energy",
|
|
10412
10412
|
"valueType": "number"
|
|
10413
10413
|
},
|
|
10414
10414
|
{
|
|
10415
|
-
"path": "
|
|
10415
|
+
"path": "voltage",
|
|
10416
10416
|
"valueType": "number"
|
|
10417
10417
|
},
|
|
10418
10418
|
{
|
|
10419
|
-
"path": "
|
|
10419
|
+
"path": "current",
|
|
10420
10420
|
"valueType": "number"
|
|
10421
10421
|
},
|
|
10422
10422
|
{
|
|
10423
|
-
"path": "
|
|
10423
|
+
"path": "apparentPower",
|
|
10424
10424
|
"valueType": "number"
|
|
10425
10425
|
},
|
|
10426
10426
|
{
|
|
@@ -10448,14 +10448,10 @@ Object.freeze({
|
|
|
10448
10448
|
{
|
|
10449
10449
|
"path": "gps.accuracyMeters",
|
|
10450
10450
|
"valueType": "number"
|
|
10451
|
-
},
|
|
10452
|
-
{
|
|
10453
|
-
"path": "batteryPercent",
|
|
10454
|
-
"valueType": "number"
|
|
10455
10451
|
}
|
|
10456
10452
|
],
|
|
10457
10453
|
"pressure-sensor": [{
|
|
10458
|
-
"path": "
|
|
10454
|
+
"path": "pressure",
|
|
10459
10455
|
"valueType": "number"
|
|
10460
10456
|
}],
|
|
10461
10457
|
"privacy-mask": [{
|
|
@@ -10769,7 +10765,7 @@ Object.freeze({
|
|
|
10769
10765
|
"valueType": "boolean"
|
|
10770
10766
|
}],
|
|
10771
10767
|
"temperature-sensor": [{
|
|
10772
|
-
"path": "
|
|
10768
|
+
"path": "temperature",
|
|
10773
10769
|
"valueType": "number"
|
|
10774
10770
|
}],
|
|
10775
10771
|
"update": [
|
|
@@ -10817,7 +10813,7 @@ Object.freeze({
|
|
|
10817
10813
|
"valueType": "string"
|
|
10818
10814
|
},
|
|
10819
10815
|
{
|
|
10820
|
-
"path": "
|
|
10816
|
+
"path": "progress",
|
|
10821
10817
|
"valueType": "number"
|
|
10822
10818
|
},
|
|
10823
10819
|
{
|
|
@@ -11447,7 +11443,7 @@ function errMsg(err) {
|
|
|
11447
11443
|
return String(err);
|
|
11448
11444
|
}
|
|
11449
11445
|
//#endregion
|
|
11450
|
-
//#region ../types/dist/composition-
|
|
11446
|
+
//#region ../types/dist/composition-CZImLpOI.mjs
|
|
11451
11447
|
/**
|
|
11452
11448
|
* Deterministic SHA-256 hash of an arbitrary serialisable value. The
|
|
11453
11449
|
* canonical form sorts object keys alphabetically at every depth so two
|
|
@@ -20148,7 +20144,7 @@ var CompositionEventPlanSchema = object({
|
|
|
20148
20144
|
stateField: string(),
|
|
20149
20145
|
fieldKey: string()
|
|
20150
20146
|
});
|
|
20151
|
-
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.
|
|
20147
|
+
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
|
|
20152
20148
|
var CompositionProblemSchema = object({
|
|
20153
20149
|
code: _enum([
|
|
20154
20150
|
"reserved-variant",
|
|
@@ -20467,7 +20463,7 @@ var GROUP_TEMPLATES = [
|
|
|
20467
20463
|
summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
|
|
20468
20464
|
role: DeviceRole.TemperatureSensor,
|
|
20469
20465
|
outputCap: "temperature-sensor",
|
|
20470
|
-
outputField: "
|
|
20466
|
+
outputField: "temperature",
|
|
20471
20467
|
quantity: "temperature",
|
|
20472
20468
|
defaultAggregate: "mean",
|
|
20473
20469
|
empty: "null",
|
|
@@ -20478,7 +20474,7 @@ var GROUP_TEMPLATES = [
|
|
|
20478
20474
|
summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
20479
20475
|
role: DeviceRole.HumiditySensor,
|
|
20480
20476
|
outputCap: "humidity-sensor",
|
|
20481
|
-
outputField: "
|
|
20477
|
+
outputField: "humidity",
|
|
20482
20478
|
quantity: "humidity",
|
|
20483
20479
|
defaultAggregate: "mean",
|
|
20484
20480
|
empty: "null",
|
|
@@ -20489,7 +20485,7 @@ var GROUP_TEMPLATES = [
|
|
|
20489
20485
|
summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
|
|
20490
20486
|
role: DeviceRole.PressureSensor,
|
|
20491
20487
|
outputCap: "pressure-sensor",
|
|
20492
|
-
outputField: "
|
|
20488
|
+
outputField: "pressure",
|
|
20493
20489
|
quantity: "pressure",
|
|
20494
20490
|
defaultAggregate: "mean",
|
|
20495
20491
|
empty: "null",
|
|
@@ -20500,7 +20496,7 @@ var GROUP_TEMPLATES = [
|
|
|
20500
20496
|
summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
|
|
20501
20497
|
role: DeviceRole.AmbientLightSensor,
|
|
20502
20498
|
outputCap: "ambient-light-sensor",
|
|
20503
|
-
outputField: "
|
|
20499
|
+
outputField: "illuminance",
|
|
20504
20500
|
quantity: "illuminance",
|
|
20505
20501
|
defaultAggregate: "mean",
|
|
20506
20502
|
empty: "null",
|
|
@@ -20511,7 +20507,7 @@ var GROUP_TEMPLATES = [
|
|
|
20511
20507
|
summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
|
|
20512
20508
|
role: DeviceRole.PowerSensor,
|
|
20513
20509
|
outputCap: "power-meter",
|
|
20514
|
-
outputField: "
|
|
20510
|
+
outputField: "power",
|
|
20515
20511
|
quantity: "power",
|
|
20516
20512
|
defaultAggregate: "sum",
|
|
20517
20513
|
empty: "omit",
|
|
@@ -20522,7 +20518,7 @@ var GROUP_TEMPLATES = [
|
|
|
20522
20518
|
summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
|
|
20523
20519
|
role: DeviceRole.EnergySensor,
|
|
20524
20520
|
outputCap: "power-meter",
|
|
20525
|
-
outputField: "
|
|
20521
|
+
outputField: "energy",
|
|
20526
20522
|
quantity: "energy",
|
|
20527
20523
|
defaultAggregate: "sum",
|
|
20528
20524
|
empty: "omit",
|
|
@@ -20533,7 +20529,7 @@ var GROUP_TEMPLATES = [
|
|
|
20533
20529
|
summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
20534
20530
|
role: DeviceRole.BatterySensor,
|
|
20535
20531
|
outputCap: "battery",
|
|
20536
|
-
outputField: "
|
|
20532
|
+
outputField: "level",
|
|
20537
20533
|
quantity: "percentage",
|
|
20538
20534
|
defaultAggregate: "mean",
|
|
20539
20535
|
empty: "null",
|
|
@@ -60958,9 +60954,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
60958
60954
|
*/
|
|
60959
60955
|
var AirQualitySensorStatusSchema = object({
|
|
60960
60956
|
/** Carbon dioxide concentration in ppm. */
|
|
60961
|
-
|
|
60957
|
+
co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
|
|
60962
60958
|
/** Total volatile organic compounds in ppb. */
|
|
60963
|
-
|
|
60959
|
+
voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
|
|
60964
60960
|
/** Particulate matter ≤ 2.5 μm in µg/m³. */
|
|
60965
60961
|
pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
|
|
60966
60962
|
/** Particulate matter ≤ 10 μm in µg/m³. */
|
|
@@ -60993,12 +60989,12 @@ var airQualitySensorCapability = {
|
|
|
60993
60989
|
* History (D850): recorded series.
|
|
60994
60990
|
*/
|
|
60995
60991
|
history: { fields: {
|
|
60996
|
-
|
|
60992
|
+
co2: {
|
|
60997
60993
|
kind: "gauge",
|
|
60998
60994
|
unit: "ppm",
|
|
60999
60995
|
deadband: 5
|
|
61000
60996
|
},
|
|
61001
|
-
|
|
60997
|
+
voc: {
|
|
61002
60998
|
kind: "gauge",
|
|
61003
60999
|
unit: "ppb",
|
|
61004
61000
|
deadband: 5
|
|
@@ -61029,7 +61025,7 @@ var airQualitySensorCapability = {
|
|
|
61029
61025
|
*/
|
|
61030
61026
|
var AmbientLightSensorStatusSchema = object({
|
|
61031
61027
|
/** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
|
|
61032
|
-
|
|
61028
|
+
illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
|
|
61033
61029
|
precision: 0,
|
|
61034
61030
|
label: "Illuminance"
|
|
61035
61031
|
})),
|
|
@@ -61058,7 +61054,7 @@ var ambientLightSensorCapability = {
|
|
|
61058
61054
|
/**
|
|
61059
61055
|
* History (D850): recorded series. Wide range, so a RELATIVE deadband (10 %).
|
|
61060
61056
|
*/
|
|
61061
|
-
history: { fields: {
|
|
61057
|
+
history: { fields: { illuminance: {
|
|
61062
61058
|
kind: "gauge",
|
|
61063
61059
|
unit: "lx",
|
|
61064
61060
|
deadbandPct: 10,
|
|
@@ -61371,7 +61367,7 @@ var BatteryStatusSchema = object({
|
|
|
61371
61367
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
61372
61368
|
* declines to band a non-finite reading, which is the correct shape.
|
|
61373
61369
|
*/
|
|
61374
|
-
|
|
61370
|
+
level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
|
|
61375
61371
|
/**
|
|
61376
61372
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
61377
61373
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -61381,7 +61377,7 @@ var BatteryStatusSchema = object({
|
|
|
61381
61377
|
* `'unknown'` is the absence of an answer: the provider has not read the
|
|
61382
61378
|
* power fields yet, or the firmware reported neither. Before it existed,
|
|
61383
61379
|
* two unreadable fields produced `'none'`, and a camera nobody had reached
|
|
61384
|
-
* was drawn "on battery alone" — the same D315 defect `
|
|
61380
|
+
* was drawn "on battery alone" — the same D315 defect `level` closed
|
|
61385
61381
|
* by going nullable. Consumers SKIP it (no charger state published, no
|
|
61386
61382
|
* glyph, no HomeKit ChargingState) rather than coerce it either way.
|
|
61387
61383
|
*/
|
|
@@ -61405,7 +61401,7 @@ var BatteryStatusSchema = object({
|
|
|
61405
61401
|
* that only report charge. A second reading on this cap, not a second
|
|
61406
61402
|
* `numeric-sensor` on the same device.
|
|
61407
61403
|
*/
|
|
61408
|
-
|
|
61404
|
+
voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
61409
61405
|
/**
|
|
61410
61406
|
* Ms epoch of the last time the device PROVED it was reachable — a
|
|
61411
61407
|
* completed firmware round-trip, an observed wake, or an inbound push
|
|
@@ -61439,7 +61435,7 @@ var BatteryStatusSchema = object({
|
|
|
61439
61435
|
/**
|
|
61440
61436
|
* True when the source is a BINARY low-battery indicator (HA
|
|
61441
61437
|
* `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
|
|
61442
|
-
* charge level — `
|
|
61438
|
+
* charge level — `level` is then a coarse stand-in (100 = normal,
|
|
61443
61439
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
61444
61440
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
61445
61441
|
*/
|
|
@@ -61459,15 +61455,15 @@ var BATTERY_DEVICE_TYPES = [
|
|
|
61459
61455
|
var batteryCustomize = {
|
|
61460
61456
|
version: 1,
|
|
61461
61457
|
targets: [{
|
|
61462
|
-
id: "
|
|
61458
|
+
id: "level",
|
|
61463
61459
|
cardinality: "scalar",
|
|
61464
61460
|
vocabulary: {
|
|
61465
61461
|
cap: "battery",
|
|
61466
|
-
stateField: "
|
|
61462
|
+
stateField: "level"
|
|
61467
61463
|
},
|
|
61468
61464
|
deviceTypes: BATTERY_DEVICE_TYPES,
|
|
61469
61465
|
apply: "add",
|
|
61470
|
-
path: "
|
|
61466
|
+
path: "level",
|
|
61471
61467
|
sources: [{
|
|
61472
61468
|
kind: "field",
|
|
61473
61469
|
valueKinds: ["number", "string"],
|
|
@@ -61561,7 +61557,7 @@ onStatusChanged: { data: object({
|
|
|
61561
61557
|
schema: BatteryStatusSchema,
|
|
61562
61558
|
kind: "push",
|
|
61563
61559
|
empty: {
|
|
61564
|
-
|
|
61560
|
+
level: null,
|
|
61565
61561
|
charging: "unknown",
|
|
61566
61562
|
sleeping: false,
|
|
61567
61563
|
lastUpdated: 0
|
|
@@ -61588,11 +61584,11 @@ onStatusChanged: { data: object({
|
|
|
61588
61584
|
* History (D850): recorded series. The generic capture replaces the `battery` series of `pipeline-analytics:stats-5m`.
|
|
61589
61585
|
*/
|
|
61590
61586
|
history: { fields: {
|
|
61591
|
-
|
|
61587
|
+
level: {
|
|
61592
61588
|
kind: "gauge",
|
|
61593
61589
|
unit: "%"
|
|
61594
61590
|
},
|
|
61595
|
-
|
|
61591
|
+
voltage: {
|
|
61596
61592
|
kind: "gauge",
|
|
61597
61593
|
unit: "V"
|
|
61598
61594
|
}
|
|
@@ -61652,14 +61648,14 @@ var binaryCapability = {
|
|
|
61652
61648
|
* controls to this single-method surface.
|
|
61653
61649
|
*
|
|
61654
61650
|
* The cap is intentionally minimal: a single `setBrightness({deviceId,
|
|
61655
|
-
*
|
|
61651
|
+
* level})` mutation plus the auto-injected `getStatus`. Drivers
|
|
61656
61652
|
* that expose richer controls (color temperature, scenes, schedules)
|
|
61657
61653
|
* should surface those via the device's `getSettingsUISchema()`
|
|
61658
61654
|
* instead of bloating this cap.
|
|
61659
61655
|
*/
|
|
61660
61656
|
var BrightnessStatusSchema = object({
|
|
61661
61657
|
/** Current level as 0..100 inclusive. Firmware-reported. */
|
|
61662
|
-
|
|
61658
|
+
level: number().min(0).max(100).meta(readingMeta("percentage")),
|
|
61663
61659
|
/** Ms epoch of the last operator-driven change. Useful for UI freshness. */
|
|
61664
61660
|
lastChangedAt: number()
|
|
61665
61661
|
});
|
|
@@ -61671,7 +61667,7 @@ var brightnessCapability = {
|
|
|
61671
61667
|
deviceTypes: [DeviceType.Light],
|
|
61672
61668
|
methods: { setBrightness: method(object({
|
|
61673
61669
|
deviceId: number().int().nonnegative(),
|
|
61674
|
-
|
|
61670
|
+
level: number().min(0).max(100)
|
|
61675
61671
|
}), _void(), {
|
|
61676
61672
|
kind: "mutation",
|
|
61677
61673
|
auth: "protected"
|
|
@@ -61684,7 +61680,7 @@ var brightnessCapability = {
|
|
|
61684
61680
|
*/
|
|
61685
61681
|
onBrightnessChanged: { data: object({
|
|
61686
61682
|
deviceId: number(),
|
|
61687
|
-
|
|
61683
|
+
level: number().min(0).max(100),
|
|
61688
61684
|
lastChangedAt: number()
|
|
61689
61685
|
}) } },
|
|
61690
61686
|
status: {
|
|
@@ -61707,7 +61703,7 @@ onBrightnessChanged: { data: object({
|
|
|
61707
61703
|
/**
|
|
61708
61704
|
* History (D850): recorded series. Actuator tier: level keeps every change.
|
|
61709
61705
|
*/
|
|
61710
|
-
history: { fields: {
|
|
61706
|
+
history: { fields: { level: {
|
|
61711
61707
|
kind: "gauge",
|
|
61712
61708
|
unit: "%",
|
|
61713
61709
|
minIntervalMs: 0
|
|
@@ -62331,11 +62327,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
|
|
|
62331
62327
|
}),
|
|
62332
62328
|
object({
|
|
62333
62329
|
mode: literal("mired"),
|
|
62334
|
-
|
|
62330
|
+
colorTemperature: number().int().min(50).max(1e3)
|
|
62335
62331
|
})
|
|
62336
62332
|
]);
|
|
62337
62333
|
var ColorStatusSchema = object({
|
|
62338
|
-
/** Active color mode — which of `rgb` / `hsv` / `
|
|
62334
|
+
/** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
|
|
62339
62335
|
* the bulb's current state. */
|
|
62340
62336
|
mode: _enum([
|
|
62341
62337
|
"rgb",
|
|
@@ -62347,7 +62343,7 @@ var ColorStatusSchema = object({
|
|
|
62347
62343
|
/** Populated when `mode === 'hsv'`. */
|
|
62348
62344
|
hsv: HsvTripletSchema.optional(),
|
|
62349
62345
|
/** Populated when `mode === 'mired'`. */
|
|
62350
|
-
|
|
62346
|
+
colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
|
|
62351
62347
|
/** Ms epoch of the last operator-driven change. */
|
|
62352
62348
|
lastChangedAt: number()
|
|
62353
62349
|
});
|
|
@@ -62379,7 +62375,7 @@ onColorChanged: { data: object({
|
|
|
62379
62375
|
]),
|
|
62380
62376
|
rgb: RgbTripletSchema.optional(),
|
|
62381
62377
|
hsv: HsvTripletSchema.optional(),
|
|
62382
|
-
|
|
62378
|
+
colorTemperature: number().int().optional(),
|
|
62383
62379
|
lastChangedAt: number()
|
|
62384
62380
|
}) } },
|
|
62385
62381
|
status: {
|
|
@@ -63292,11 +63288,11 @@ var DishwasherStatusSchema = object({
|
|
|
63292
63288
|
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
63293
63289
|
availablePrograms: array(string()),
|
|
63294
63290
|
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
63295
|
-
|
|
63291
|
+
remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
63296
63292
|
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
63297
|
-
|
|
63293
|
+
delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
63298
63294
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
63299
|
-
|
|
63295
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
63300
63296
|
/** True when the door is reported open; null when the door state is not known. */
|
|
63301
63297
|
doorOpen: boolean().nullable(),
|
|
63302
63298
|
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
@@ -63515,14 +63511,14 @@ var dishwasherCapability = {
|
|
|
63515
63511
|
runtimeState: DishwasherStatusSchema,
|
|
63516
63512
|
durability: "session",
|
|
63517
63513
|
history: { fields: {
|
|
63518
|
-
|
|
63514
|
+
progress: {
|
|
63519
63515
|
kind: "gauge",
|
|
63520
63516
|
unit: "%",
|
|
63521
63517
|
deadband: 2
|
|
63522
63518
|
},
|
|
63523
63519
|
state: { kind: "enum" },
|
|
63524
63520
|
operationState: { kind: "enum" },
|
|
63525
|
-
|
|
63521
|
+
remaining: {
|
|
63526
63522
|
kind: "gauge",
|
|
63527
63523
|
unit: "s",
|
|
63528
63524
|
minIntervalMs: 6e4
|
|
@@ -64153,7 +64149,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
|
|
|
64153
64149
|
var FanControlStatusSchema = object({
|
|
64154
64150
|
/** Active speed as 0..100 inclusive. Null when the device has no
|
|
64155
64151
|
* speed surface (single-speed fan). */
|
|
64156
|
-
|
|
64152
|
+
speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
64157
64153
|
/** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
|
|
64158
64154
|
* a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
|
|
64159
64155
|
percentageStep: number().positive().optional().meta(readingMeta("percentage")),
|
|
@@ -64180,7 +64176,7 @@ var fanControlCapability = {
|
|
|
64180
64176
|
methods: {
|
|
64181
64177
|
setPercentage: method(object({
|
|
64182
64178
|
deviceId: number().int().nonnegative(),
|
|
64183
|
-
|
|
64179
|
+
speed: number().min(0).max(100)
|
|
64184
64180
|
}), _void(), {
|
|
64185
64181
|
kind: "mutation",
|
|
64186
64182
|
auth: "protected"
|
|
@@ -64213,7 +64209,7 @@ var fanControlCapability = {
|
|
|
64213
64209
|
},
|
|
64214
64210
|
/**
|
|
64215
64211
|
* Runtime-state slice — mirrored by the kernel. UI fan speed
|
|
64216
|
-
* sliders read `
|
|
64212
|
+
* sliders read `speed` for live updates.
|
|
64217
64213
|
*/
|
|
64218
64214
|
runtimeState: FanControlStatusSchema,
|
|
64219
64215
|
/**
|
|
@@ -64227,7 +64223,7 @@ var fanControlCapability = {
|
|
|
64227
64223
|
* History (D850): recorded series. Actuator tier: speed keeps every change.
|
|
64228
64224
|
*/
|
|
64229
64225
|
history: { fields: {
|
|
64230
|
-
|
|
64226
|
+
speed: {
|
|
64231
64227
|
kind: "gauge",
|
|
64232
64228
|
unit: "%",
|
|
64233
64229
|
minIntervalMs: 0
|
|
@@ -64672,7 +64668,7 @@ var humidifierCapability = {
|
|
|
64672
64668
|
*/
|
|
64673
64669
|
var HumiditySensorStatusSchema = object({
|
|
64674
64670
|
/** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
|
|
64675
|
-
|
|
64671
|
+
humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
|
|
64676
64672
|
precision: 0,
|
|
64677
64673
|
label: "Humidity"
|
|
64678
64674
|
})),
|
|
@@ -64701,7 +64697,7 @@ var humiditySensorCapability = {
|
|
|
64701
64697
|
/**
|
|
64702
64698
|
* History (D850): recorded series.
|
|
64703
64699
|
*/
|
|
64704
|
-
history: { fields: {
|
|
64700
|
+
history: { fields: { humidity: {
|
|
64705
64701
|
kind: "gauge",
|
|
64706
64702
|
unit: "%",
|
|
64707
64703
|
deadband: .5
|
|
@@ -65341,7 +65337,7 @@ var LawnMowerControlStatusSchema = object({
|
|
|
65341
65337
|
batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65342
65338
|
/** 0..100 mowing-completion percentage of the current task, or null when no
|
|
65343
65339
|
* task is active / progress is unavailable. */
|
|
65344
|
-
|
|
65340
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65345
65341
|
/** Current device/event code (dynamic — mostly status, sometimes an error),
|
|
65346
65342
|
* or null when unknown. */
|
|
65347
65343
|
currentCode: number().nullable().meta(readingMeta("none")),
|
|
@@ -65862,7 +65858,7 @@ var lockControlCapability = {
|
|
|
65862
65858
|
volatileStateFields: ["lastChangedAt"]
|
|
65863
65859
|
};
|
|
65864
65860
|
/**
|
|
65865
|
-
* A monotonic total between resets (D944). Energy uses `power-meter.
|
|
65861
|
+
* A monotonic total between resets (D944). Energy uses `power-meter.energy`
|
|
65866
65862
|
* so dashboards keep one series; every other instantaneous reading lands here.
|
|
65867
65863
|
* `value` is the time integral in the source quantity's accumulated base
|
|
65868
65864
|
* (base-unit seconds, or kWh on the power meter). `null` is a gap, never zero.
|
|
@@ -65956,10 +65952,10 @@ var MediaPlayerStatusSchema = object({
|
|
|
65956
65952
|
currentMedia: MediaInfoSchema.nullable(),
|
|
65957
65953
|
/** Current playback position in ms. Null when not seekable or
|
|
65958
65954
|
* nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
|
|
65959
|
-
|
|
65955
|
+
position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
65960
65956
|
/** Total duration of the current media in ms. Null when unknown
|
|
65961
65957
|
* (live stream) or nothing is playing. */
|
|
65962
|
-
|
|
65958
|
+
duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
65963
65959
|
/** Shuffle toggle. Null when no shuffle surface.
|
|
65964
65960
|
* Pair with `DeviceFeature.MediaPlayerShuffle`. */
|
|
65965
65961
|
shuffle: boolean().nullable(),
|
|
@@ -65998,7 +65994,7 @@ var mediaPlayerCapability = {
|
|
|
65998
65994
|
}),
|
|
65999
65995
|
seek: method(object({
|
|
66000
65996
|
deviceId: number().int().nonnegative(),
|
|
66001
|
-
|
|
65997
|
+
position: number().int().nonnegative()
|
|
66002
65998
|
}), _void(), {
|
|
66003
65999
|
kind: "mutation",
|
|
66004
66000
|
auth: "protected"
|
|
@@ -66070,7 +66066,7 @@ var mediaPlayerCapability = {
|
|
|
66070
66066
|
/**
|
|
66071
66067
|
* History (D850): volume (a level an operator or an automation sets; the
|
|
66072
66068
|
* default 10 s floor folds a slider drag into its end value) and mute.
|
|
66073
|
-
* `
|
|
66069
|
+
* `position` is not recorded: it moves continuously while playing.
|
|
66074
66070
|
*/
|
|
66075
66071
|
history: { fields: {
|
|
66076
66072
|
volumeLevel: {
|
|
@@ -67057,9 +67053,9 @@ var NetworkLinkStatusSchema = object({
|
|
|
67057
67053
|
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
67058
67054
|
* SKIP a null rather than coerce it.
|
|
67059
67055
|
*/
|
|
67060
|
-
|
|
67056
|
+
signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
67061
67057
|
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
67062
|
-
|
|
67058
|
+
rssi: number().optional().meta(readingMeta("signal-level")),
|
|
67063
67059
|
/** Network name of a wireless link, when the firmware reports it. */
|
|
67064
67060
|
ssid: string().optional(),
|
|
67065
67061
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
@@ -67095,7 +67091,7 @@ onStatusChanged: { data: object({
|
|
|
67095
67091
|
kind: "push",
|
|
67096
67092
|
empty: {
|
|
67097
67093
|
type: "unknown",
|
|
67098
|
-
|
|
67094
|
+
signal: null,
|
|
67099
67095
|
lastUpdated: 0
|
|
67100
67096
|
}
|
|
67101
67097
|
},
|
|
@@ -67118,13 +67114,13 @@ onStatusChanged: { data: object({
|
|
|
67118
67114
|
* History (D850): recorded series.
|
|
67119
67115
|
*/
|
|
67120
67116
|
history: { fields: {
|
|
67121
|
-
|
|
67117
|
+
signal: {
|
|
67122
67118
|
kind: "gauge",
|
|
67123
67119
|
unit: "%",
|
|
67124
67120
|
deadband: 3,
|
|
67125
67121
|
minIntervalMs: 6e4
|
|
67126
67122
|
},
|
|
67127
|
-
|
|
67123
|
+
rssi: {
|
|
67128
67124
|
kind: "gauge",
|
|
67129
67125
|
unit: "dBm",
|
|
67130
67126
|
deadband: 2,
|
|
@@ -68479,16 +68475,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
68479
68475
|
* in real-world devices.
|
|
68480
68476
|
*/
|
|
68481
68477
|
var PowerMeterStatusSchema = object({
|
|
68482
|
-
/** Instantaneous power draw
|
|
68483
|
-
|
|
68478
|
+
/** Instantaneous power draw (watts). */
|
|
68479
|
+
power: number().optional().meta(readingMeta("power", { label: "Power" })),
|
|
68484
68480
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
68485
|
-
|
|
68486
|
-
/** Voltage
|
|
68487
|
-
|
|
68481
|
+
energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
|
|
68482
|
+
/** Voltage (volts). */
|
|
68483
|
+
voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
68488
68484
|
/** Current in amperes. */
|
|
68489
|
-
|
|
68485
|
+
current: number().optional().meta(readingMeta("current", { label: "Current" })),
|
|
68490
68486
|
/** Apparent power in volt-amperes. */
|
|
68491
|
-
|
|
68487
|
+
apparentPower: number().optional().meta(readingMeta("apparent-power")),
|
|
68492
68488
|
/** Power factor (0..1) if reported. */
|
|
68493
68489
|
powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
|
|
68494
68490
|
/** Ms epoch when the slice was last updated. */
|
|
@@ -68546,14 +68542,14 @@ function powerTarget(id, unit) {
|
|
|
68546
68542
|
advancedExpression: true
|
|
68547
68543
|
};
|
|
68548
68544
|
}
|
|
68549
|
-
/** "Power and energy" extension:
|
|
68545
|
+
/** "Power and energy" extension: power, energy, voltage and current from other devices (D951). */
|
|
68550
68546
|
var powerMeterCustomize = {
|
|
68551
68547
|
version: 1,
|
|
68552
68548
|
targets: [
|
|
68553
|
-
powerTarget("
|
|
68554
|
-
powerTarget("
|
|
68555
|
-
powerTarget("
|
|
68556
|
-
powerTarget("
|
|
68549
|
+
powerTarget("power", "W"),
|
|
68550
|
+
powerTarget("energy", "kWh"),
|
|
68551
|
+
powerTarget("voltage", "V"),
|
|
68552
|
+
powerTarget("current", "A")
|
|
68557
68553
|
]
|
|
68558
68554
|
};
|
|
68559
68555
|
var powerMeterCapability = {
|
|
@@ -68569,41 +68565,41 @@ var powerMeterCapability = {
|
|
|
68569
68565
|
},
|
|
68570
68566
|
runtimeState: PowerMeterStatusSchema,
|
|
68571
68567
|
/**
|
|
68572
|
-
* Runtime-state durability: **restored** — as `numeric-sensor`; `
|
|
68568
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`; `energy` is an accumulator whose restored value is the baseline.
|
|
68573
68569
|
*
|
|
68574
68570
|
* See `RuntimeStateDurability`. Enforced by
|
|
68575
68571
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68576
68572
|
*/
|
|
68577
68573
|
durability: "restored",
|
|
68578
68574
|
/**
|
|
68579
|
-
* History (D850): recorded series. Gauges are floored at 30 s; `
|
|
68575
|
+
* History (D850): recorded series. Gauges are floored at 30 s; `energy` is the one monotonic meter (counter).
|
|
68580
68576
|
*/
|
|
68581
68577
|
history: { fields: {
|
|
68582
|
-
|
|
68578
|
+
power: {
|
|
68583
68579
|
kind: "gauge",
|
|
68584
68580
|
unit: "W",
|
|
68585
68581
|
deadband: 1,
|
|
68586
68582
|
minIntervalMs: 3e4
|
|
68587
68583
|
},
|
|
68588
|
-
|
|
68584
|
+
energy: {
|
|
68589
68585
|
kind: "counter",
|
|
68590
68586
|
unit: "kWh",
|
|
68591
68587
|
deadband: .01,
|
|
68592
68588
|
minIntervalMs: 6e4
|
|
68593
68589
|
},
|
|
68594
|
-
|
|
68590
|
+
voltage: {
|
|
68595
68591
|
kind: "gauge",
|
|
68596
68592
|
unit: "V",
|
|
68597
68593
|
deadband: 1,
|
|
68598
68594
|
minIntervalMs: 3e4
|
|
68599
68595
|
},
|
|
68600
|
-
|
|
68596
|
+
current: {
|
|
68601
68597
|
kind: "gauge",
|
|
68602
68598
|
unit: "A",
|
|
68603
68599
|
deadband: .05,
|
|
68604
68600
|
minIntervalMs: 3e4
|
|
68605
68601
|
},
|
|
68606
|
-
|
|
68602
|
+
apparentPower: {
|
|
68607
68603
|
kind: "gauge",
|
|
68608
68604
|
unit: "VA",
|
|
68609
68605
|
deadband: 1,
|
|
@@ -68653,9 +68649,6 @@ var PresenceStatusSchema = object({
|
|
|
68653
68649
|
location: string().nullable(),
|
|
68654
68650
|
/** GPS coordinates when available. Null otherwise. */
|
|
68655
68651
|
gps: GpsLocationSchema.nullable(),
|
|
68656
|
-
/** Optional battery level of the tracking device (0..100). Null
|
|
68657
|
-
* when not reported. */
|
|
68658
|
-
batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
68659
68652
|
/** Ms epoch when the slice was last updated. */
|
|
68660
68653
|
lastChangedAt: number()
|
|
68661
68654
|
});
|
|
@@ -68684,14 +68677,7 @@ var presenceCapability = {
|
|
|
68684
68677
|
* `scripts/check-runtime-state-durability.ts`.
|
|
68685
68678
|
*/
|
|
68686
68679
|
durability: "restored",
|
|
68687
|
-
|
|
68688
|
-
* History (D850): recorded series.
|
|
68689
|
-
*/
|
|
68690
|
-
history: { fields: { batteryPercent: {
|
|
68691
|
-
kind: "gauge",
|
|
68692
|
-
unit: "%",
|
|
68693
|
-
deadband: 1
|
|
68694
|
-
} } },
|
|
68680
|
+
history: "none",
|
|
68695
68681
|
/** Clock fields: written, but excluded from the compare that decides
|
|
68696
68682
|
* whether persisting is worth a SQLite commit. */
|
|
68697
68683
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -68706,7 +68692,7 @@ var presenceCapability = {
|
|
|
68706
68692
|
*/
|
|
68707
68693
|
var PressureSensorStatusSchema = object({
|
|
68708
68694
|
/** Current pressure in hPa. `null` when the sample was refused (D393). */
|
|
68709
|
-
|
|
68695
|
+
pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
|
|
68710
68696
|
/** Ms epoch when the slice was last updated. */
|
|
68711
68697
|
lastFetchedAt: number()
|
|
68712
68698
|
});
|
|
@@ -68732,7 +68718,7 @@ var pressureSensorCapability = {
|
|
|
68732
68718
|
/**
|
|
68733
68719
|
* History (D850): recorded series.
|
|
68734
68720
|
*/
|
|
68735
|
-
history: { fields: {
|
|
68721
|
+
history: { fields: { pressure: {
|
|
68736
68722
|
kind: "gauge",
|
|
68737
68723
|
unit: "hPa",
|
|
68738
68724
|
deadband: .1
|
|
@@ -72481,7 +72467,7 @@ var tamperCapability = {
|
|
|
72481
72467
|
*/
|
|
72482
72468
|
var TemperatureSensorStatusSchema = object({
|
|
72483
72469
|
/** Current temperature in Celsius. `null` when the sample was refused (D393). */
|
|
72484
|
-
|
|
72470
|
+
temperature: number().nullable().meta(readingMeta("temperature", {
|
|
72485
72471
|
precision: 1,
|
|
72486
72472
|
label: "Temperature"
|
|
72487
72473
|
})),
|
|
@@ -72510,7 +72496,7 @@ var temperatureSensorCapability = {
|
|
|
72510
72496
|
/**
|
|
72511
72497
|
* History (D850): recorded series.
|
|
72512
72498
|
*/
|
|
72513
|
-
history: { fields: {
|
|
72499
|
+
history: { fields: { temperature: {
|
|
72514
72500
|
kind: "gauge",
|
|
72515
72501
|
unit: "°C",
|
|
72516
72502
|
deadband: .1
|
|
@@ -72807,7 +72793,7 @@ var VacuumControlStatusSchema = object({
|
|
|
72807
72793
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
72808
72794
|
availableFanSpeeds: array(string()),
|
|
72809
72795
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
72810
|
-
|
|
72796
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
72811
72797
|
/** Current error code (0 / null = no error). */
|
|
72812
72798
|
errorCode: number().nullable().meta(readingMeta("none")),
|
|
72813
72799
|
/** Human label for {@link errorCode}, or null when none / undecodable. */
|
|
@@ -74514,7 +74500,7 @@ var BaseDevice = class {
|
|
|
74514
74500
|
* `device-local-state.ts`. Drivers access via:
|
|
74515
74501
|
*
|
|
74516
74502
|
* `this.state.battery.sleeping = true` // patches the battery slice
|
|
74517
|
-
* `const pct = this.state.battery.
|
|
74503
|
+
* `const pct = this.state.battery.level` // reads the battery slice
|
|
74518
74504
|
* `this.state.deviceStatus.online = true` // mirrors `markOnline(true)`
|
|
74519
74505
|
*
|
|
74520
74506
|
* Adding a new cap with `runtimeState:` automatically extends this
|
|
@@ -74554,7 +74540,7 @@ var BaseDevice = class {
|
|
|
74554
74540
|
* shape; drivers don't redeclare it, they just write through.
|
|
74555
74541
|
*
|
|
74556
74542
|
* Read: `this.runtimeState.getCapState('battery')` →
|
|
74557
|
-
* `{
|
|
74543
|
+
* `{level, charging, sleeping, lastUpdated}` for any
|
|
74558
74544
|
* provider that registers `batteryCapability`.
|
|
74559
74545
|
* Write: `this.runtimeState.setCapState('battery', { … })`.
|
|
74560
74546
|
*
|
|
@@ -85274,7 +85260,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85274
85260
|
label: t("Full brightness", "Luminosità massima"),
|
|
85275
85261
|
phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
|
|
85276
85262
|
icon: "sun",
|
|
85277
|
-
args: {
|
|
85263
|
+
args: { level: 100 }
|
|
85278
85264
|
},
|
|
85279
85265
|
{
|
|
85280
85266
|
id: "brightness.half",
|
|
@@ -85282,7 +85268,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85282
85268
|
label: t("Half brightness", "Luminosità a metà"),
|
|
85283
85269
|
phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
|
|
85284
85270
|
icon: "sun-dim",
|
|
85285
|
-
args: {
|
|
85271
|
+
args: { level: 50 }
|
|
85286
85272
|
},
|
|
85287
85273
|
{
|
|
85288
85274
|
id: "brightness.off",
|
|
@@ -85290,16 +85276,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85290
85276
|
label: t("Brightness off", "Luminosità a zero"),
|
|
85291
85277
|
phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
|
|
85292
85278
|
icon: "lightbulb-off",
|
|
85293
|
-
args: {
|
|
85279
|
+
args: { level: 0 }
|
|
85294
85280
|
},
|
|
85295
85281
|
{
|
|
85296
85282
|
id: "brightness.set",
|
|
85297
85283
|
method: "setBrightness",
|
|
85298
85284
|
label: t("Set brightness", "Imposta la luminosità"),
|
|
85299
|
-
phrase: t("Set the brightness of {device} to {
|
|
85285
|
+
phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
|
|
85300
85286
|
icon: "sun-medium",
|
|
85301
85287
|
openArgs: [{
|
|
85302
|
-
key: "
|
|
85288
|
+
key: "level",
|
|
85303
85289
|
label: PERCENT,
|
|
85304
85290
|
offer: {
|
|
85305
85291
|
kind: "number",
|
|
@@ -85313,13 +85299,13 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85313
85299
|
],
|
|
85314
85300
|
state: [{
|
|
85315
85301
|
kind: "numeric",
|
|
85316
|
-
field: "
|
|
85302
|
+
field: "level",
|
|
85317
85303
|
quantity: t("the brightness", "la luminosità"),
|
|
85318
85304
|
label: t("Brightness", "Luminosità"),
|
|
85319
85305
|
unit: "%",
|
|
85320
85306
|
icon: "sun"
|
|
85321
85307
|
}],
|
|
85322
|
-
events: { onBrightnessChanged: { notOperatorFacing: "the `
|
|
85308
|
+
events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
|
|
85323
85309
|
},
|
|
85324
85310
|
color: {
|
|
85325
85311
|
scope: "device",
|
|
@@ -85333,7 +85319,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85333
85319
|
icon: "sun",
|
|
85334
85320
|
args: { color: {
|
|
85335
85321
|
mode: "mired",
|
|
85336
|
-
|
|
85322
|
+
colorTemperature: 370
|
|
85337
85323
|
} }
|
|
85338
85324
|
},
|
|
85339
85325
|
{
|
|
@@ -85344,7 +85330,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85344
85330
|
icon: "snowflake",
|
|
85345
85331
|
args: { color: {
|
|
85346
85332
|
mode: "mired",
|
|
85347
|
-
|
|
85333
|
+
colorTemperature: 200
|
|
85348
85334
|
} }
|
|
85349
85335
|
},
|
|
85350
85336
|
{
|
|
@@ -85958,7 +85944,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85958
85944
|
label: t("Fan off", "Ventilatore spento"),
|
|
85959
85945
|
phrase: t("Stop {device}", "Ferma {device}"),
|
|
85960
85946
|
icon: "power-off",
|
|
85961
|
-
args: {
|
|
85947
|
+
args: { speed: 0 }
|
|
85962
85948
|
},
|
|
85963
85949
|
{
|
|
85964
85950
|
id: "fan.full",
|
|
@@ -85966,16 +85952,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
85966
85952
|
label: t("Fan full", "Ventilatore al massimo"),
|
|
85967
85953
|
phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
|
|
85968
85954
|
icon: "fan",
|
|
85969
|
-
args: {
|
|
85955
|
+
args: { speed: 100 }
|
|
85970
85956
|
},
|
|
85971
85957
|
{
|
|
85972
85958
|
id: "fan.speed",
|
|
85973
85959
|
method: "setPercentage",
|
|
85974
85960
|
label: t("Set speed", "Imposta la velocità"),
|
|
85975
|
-
phrase: t("Set the speed of {device} to {
|
|
85961
|
+
phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
|
|
85976
85962
|
icon: "fan",
|
|
85977
85963
|
openArgs: [{
|
|
85978
|
-
key: "
|
|
85964
|
+
key: "speed",
|
|
85979
85965
|
label: t("Speed", "Velocità"),
|
|
85980
85966
|
offer: {
|
|
85981
85967
|
kind: "number",
|
|
@@ -86037,7 +86023,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
86037
86023
|
],
|
|
86038
86024
|
state: [{
|
|
86039
86025
|
kind: "numeric",
|
|
86040
|
-
field: "
|
|
86026
|
+
field: "speed",
|
|
86041
86027
|
quantity: t("the speed", "la velocità"),
|
|
86042
86028
|
label: t("Speed", "Velocità"),
|
|
86043
86029
|
unit: "%",
|
|
@@ -86835,7 +86821,7 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
86835
86821
|
},
|
|
86836
86822
|
{
|
|
86837
86823
|
kind: "numeric",
|
|
86838
|
-
field: "
|
|
86824
|
+
field: "progress",
|
|
86839
86825
|
quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
|
|
86840
86826
|
label: t("Progress", "Avanzamento"),
|
|
86841
86827
|
unit: "%",
|
|
@@ -87193,10 +87179,10 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
87193
87179
|
id: "media.seek",
|
|
87194
87180
|
method: "seek",
|
|
87195
87181
|
label: t("Seek", "Vai al punto"),
|
|
87196
|
-
phrase: t("Move {device} to {
|
|
87182
|
+
phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
|
|
87197
87183
|
icon: "fast-forward",
|
|
87198
87184
|
openArgs: [{
|
|
87199
|
-
key: "
|
|
87185
|
+
key: "position",
|
|
87200
87186
|
label: t("Position", "Posizione"),
|
|
87201
87187
|
offer: {
|
|
87202
87188
|
kind: "number",
|
|
@@ -88245,7 +88231,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88245
88231
|
state: [
|
|
88246
88232
|
{
|
|
88247
88233
|
kind: "numeric",
|
|
88248
|
-
field: "
|
|
88234
|
+
field: "co2",
|
|
88249
88235
|
quantity: t("the CO₂", "la CO₂"),
|
|
88250
88236
|
label: t("CO₂", "CO₂"),
|
|
88251
88237
|
unit: "ppm",
|
|
@@ -88253,7 +88239,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88253
88239
|
},
|
|
88254
88240
|
{
|
|
88255
88241
|
kind: "numeric",
|
|
88256
|
-
field: "
|
|
88242
|
+
field: "voc",
|
|
88257
88243
|
quantity: t("the VOC level", "il livello di COV"),
|
|
88258
88244
|
label: t("VOC", "COV"),
|
|
88259
88245
|
unit: "ppb",
|
|
@@ -88289,7 +88275,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88289
88275
|
noun: t("Light level", "Luminosità ambiente"),
|
|
88290
88276
|
state: [{
|
|
88291
88277
|
kind: "numeric",
|
|
88292
|
-
field: "
|
|
88278
|
+
field: "illuminance",
|
|
88293
88279
|
quantity: t("the light level", "la luminosità"),
|
|
88294
88280
|
label: t("Illuminance", "Illuminamento"),
|
|
88295
88281
|
unit: "lx",
|
|
@@ -88492,7 +88478,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88492
88478
|
noun: t("Humidity", "Umidità"),
|
|
88493
88479
|
state: [{
|
|
88494
88480
|
kind: "numeric",
|
|
88495
|
-
field: "
|
|
88481
|
+
field: "humidity",
|
|
88496
88482
|
quantity: t("the humidity", "l’umidità"),
|
|
88497
88483
|
label: t("Humidity", "Umidità"),
|
|
88498
88484
|
unit: "%",
|
|
@@ -88540,7 +88526,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88540
88526
|
state: [
|
|
88541
88527
|
{
|
|
88542
88528
|
kind: "numeric",
|
|
88543
|
-
field: "
|
|
88529
|
+
field: "power",
|
|
88544
88530
|
quantity: t("the power draw", "il consumo"),
|
|
88545
88531
|
label: t("Power", "Potenza"),
|
|
88546
88532
|
unit: "W",
|
|
@@ -88548,7 +88534,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88548
88534
|
},
|
|
88549
88535
|
{
|
|
88550
88536
|
kind: "numeric",
|
|
88551
|
-
field: "
|
|
88537
|
+
field: "energy",
|
|
88552
88538
|
quantity: t("the energy used", "l’energia consumata"),
|
|
88553
88539
|
label: t("Energy", "Energia"),
|
|
88554
88540
|
unit: "kWh",
|
|
@@ -88556,7 +88542,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88556
88542
|
},
|
|
88557
88543
|
{
|
|
88558
88544
|
kind: "numeric",
|
|
88559
|
-
field: "
|
|
88545
|
+
field: "voltage",
|
|
88560
88546
|
quantity: t("the voltage", "la tensione"),
|
|
88561
88547
|
label: t("Voltage", "Tensione"),
|
|
88562
88548
|
unit: "V",
|
|
@@ -88564,7 +88550,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88564
88550
|
},
|
|
88565
88551
|
{
|
|
88566
88552
|
kind: "numeric",
|
|
88567
|
-
field: "
|
|
88553
|
+
field: "current",
|
|
88568
88554
|
quantity: t("the current", "la corrente"),
|
|
88569
88555
|
label: t("Current", "Corrente"),
|
|
88570
88556
|
unit: "A",
|
|
@@ -88581,13 +88567,6 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88581
88567
|
label: t("Where", "Posizione"),
|
|
88582
88568
|
phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
|
|
88583
88569
|
icon: "map-pin"
|
|
88584
|
-
}, {
|
|
88585
|
-
kind: "numeric",
|
|
88586
|
-
field: "batteryPercent",
|
|
88587
|
-
quantity: t("the phone battery", "la batteria del telefono"),
|
|
88588
|
-
label: t("Battery", "Batteria"),
|
|
88589
|
-
unit: "%",
|
|
88590
|
-
icon: "battery"
|
|
88591
88570
|
}]
|
|
88592
88571
|
},
|
|
88593
88572
|
"pressure-sensor": {
|
|
@@ -88595,7 +88574,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88595
88574
|
noun: t("Pressure", "Pressione"),
|
|
88596
88575
|
state: [{
|
|
88597
88576
|
kind: "numeric",
|
|
88598
|
-
field: "
|
|
88577
|
+
field: "pressure",
|
|
88599
88578
|
quantity: t("the pressure", "la pressione"),
|
|
88600
88579
|
label: t("Pressure", "Pressione"),
|
|
88601
88580
|
unit: "hPa",
|
|
@@ -88631,7 +88610,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88631
88610
|
noun: t("Temperature", "Temperatura"),
|
|
88632
88611
|
state: [{
|
|
88633
88612
|
kind: "numeric",
|
|
88634
|
-
field: "
|
|
88613
|
+
field: "temperature",
|
|
88635
88614
|
quantity: t("the temperature", "la temperatura"),
|
|
88636
88615
|
label: t("Temperature", "Temperatura"),
|
|
88637
88616
|
unit: "°C",
|
|
@@ -88702,7 +88681,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88702
88681
|
state: [
|
|
88703
88682
|
{
|
|
88704
88683
|
kind: "numeric",
|
|
88705
|
-
field: "
|
|
88684
|
+
field: "level",
|
|
88706
88685
|
quantity: t("the battery level", "il livello della batteria"),
|
|
88707
88686
|
label: t("Battery", "Batteria"),
|
|
88708
88687
|
unit: "%",
|
|
@@ -88744,7 +88723,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88744
88723
|
icon: "battery-charging"
|
|
88745
88724
|
}
|
|
88746
88725
|
],
|
|
88747
|
-
events: { onStatusChanged: { notOperatorFacing: "the
|
|
88726
|
+
events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
|
|
88748
88727
|
extraEvents: [{
|
|
88749
88728
|
category: EventCategory.DeviceAwake,
|
|
88750
88729
|
label: t("Woke up", "Risvegliato"),
|
|
@@ -88762,7 +88741,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
88762
88741
|
noun: t("Network link", "Collegamento di rete"),
|
|
88763
88742
|
state: [{
|
|
88764
88743
|
kind: "numeric",
|
|
88765
|
-
field: "
|
|
88744
|
+
field: "signal",
|
|
88766
88745
|
quantity: t("the signal strength", "l’intensità del segnale"),
|
|
88767
88746
|
label: t("Signal", "Segnale"),
|
|
88768
88747
|
unit: "%",
|