@camstack/addon-post-analysis 1.2.646 → 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.
@@ -30,7 +30,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
30
  }) : target, mod));
31
31
  //#endregion
32
32
  let node_crypto = require("node:crypto");
33
- //#region ../types/dist/event-category-hdMR7CTW.mjs
33
+ //#region ../types/dist/event-category-DmZDPDf_.mjs
34
34
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
35
35
  EventCategory["SystemBoot"] = "system.boot";
36
36
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -657,7 +657,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
657
657
  * (a track was promoted to a stationary-registry entry) or departs (the
658
658
  * object moved / was removed). Telemetry (D8): lossy, drives a UI refresh of
659
659
  * the dedicated "Stationary" section — never the live event feed. Payload:
660
- * `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp }`.
660
+ * `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp, observedAt, zones }`.
661
661
  */
662
662
  EventCategory["PipelineAnalyticsStationaryChanged"] = "pipeline-analytics.stationary-changed";
663
663
  /**
@@ -5676,7 +5676,7 @@ var ZodIssueCode = {
5676
5676
  var ZodFirstPartyTypeKind;
5677
5677
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5678
5678
  //#endregion
5679
- //#region ../types/dist/sleep-BHjNez61.mjs
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": "co2Ppm",
9217
+ "path": "co2",
9218
9218
  "valueType": "number"
9219
9219
  },
9220
9220
  {
9221
- "path": "vocPpb",
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": "lux",
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": "percentage",
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": "volts",
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": "percentage",
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": "mireds",
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": "remainingSeconds",
9755
+ "path": "remaining",
9756
9756
  "valueType": "number"
9757
9757
  },
9758
9758
  {
9759
- "path": "delayedStartSeconds",
9759
+ "path": "delayedStart",
9760
9760
  "valueType": "number"
9761
9761
  },
9762
9762
  {
9763
- "path": "progressPercent",
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": "percentage",
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": "percent",
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": "progressPercent",
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": "positionMs",
10166
+ "path": "position",
10167
10167
  "valueType": "number"
10168
10168
  },
10169
10169
  {
10170
- "path": "durationMs",
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": "signalPercent",
10272
+ "path": "signal",
10273
10273
  "valueType": "number"
10274
10274
  },
10275
10275
  {
10276
- "path": "rssiDbm",
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": "watts",
10407
+ "path": "power",
10408
10408
  "valueType": "number"
10409
10409
  },
10410
10410
  {
10411
- "path": "kwhTotal",
10411
+ "path": "energy",
10412
10412
  "valueType": "number"
10413
10413
  },
10414
10414
  {
10415
- "path": "volts",
10415
+ "path": "voltage",
10416
10416
  "valueType": "number"
10417
10417
  },
10418
10418
  {
10419
- "path": "amps",
10419
+ "path": "current",
10420
10420
  "valueType": "number"
10421
10421
  },
10422
10422
  {
10423
- "path": "va",
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": "hpa",
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": "celsius",
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": "progressPercent",
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-Bb8iwHEJ.mjs
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
@@ -16887,6 +16883,14 @@ var AutomationConditionLeafSchema = object({
16887
16883
  array(union([string(), number()]))
16888
16884
  ])
16889
16885
  });
16886
+ var AutomationConditionStationaryPresentSchema = object({
16887
+ kind: literal("stationary-present"),
16888
+ deviceId: number().int().nonnegative(),
16889
+ /** Class names; a macro class matches every raw class that maps to it. */
16890
+ classes: array(string().min(1)).min(1).optional(),
16891
+ /** The parked object must be in at least one of these zones. */
16892
+ zones: array(string().min(1)).min(1).optional()
16893
+ });
16890
16894
  /**
16891
16895
  * The expression leaf, declared as a plain object rather than an intersection
16892
16896
  * with {@link ExpressionSourceSchema}: a discriminated union has to be able to
@@ -16920,7 +16924,8 @@ var AutomationConditionSchema = lazy(() => discriminatedUnion("kind", [
16920
16924
  child: AutomationConditionSchema
16921
16925
  }),
16922
16926
  AutomationConditionLeafSchema,
16923
- AutomationConditionExpressionSchema
16927
+ AutomationConditionExpressionSchema,
16928
+ AutomationConditionStationaryPresentSchema
16924
16929
  ]));
16925
16930
  /**
16926
16931
  * What starts a run.
@@ -16974,6 +16979,17 @@ var AutomationTriggerSchema = discriminatedUnion("kind", [
16974
16979
  /** Best-so-far confidence the track must reach. */
16975
16980
  minScore: number().min(0).max(1).optional()
16976
16981
  }),
16982
+ object({
16983
+ kind: literal("stationary"),
16984
+ deviceIds: array(number().int().nonnegative()).min(1),
16985
+ /** Class names; a macro class matches like the detection trigger. */
16986
+ classes: array(string().min(1)).min(1).optional(),
16987
+ /** The parked object must be in at least one of these zones. */
16988
+ zones: array(string().min(1)).min(1).optional(),
16989
+ /** `appeared`: it became parked. `departed`: the registry retired it.
16990
+ * The vocabulary of `PipelineAnalyticsStationaryChanged`. */
16991
+ phase: _enum(["appeared", "departed"])
16992
+ }),
16977
16993
  object({
16978
16994
  kind: literal("interval"),
16979
16995
  minutes: number().int().min(1).max(1440)
@@ -17205,7 +17221,8 @@ var AutomationConditionTraceNodeSchema = object({
17205
17221
  "any",
17206
17222
  "not",
17207
17223
  "condition",
17208
- "expression"
17224
+ "expression",
17225
+ "stationary-present"
17209
17226
  ]),
17210
17227
  outcome: TraceNodeOutcomeSchema,
17211
17228
  reason: string(),
@@ -20127,7 +20144,7 @@ var CompositionEventPlanSchema = object({
20127
20144
  stateField: string(),
20128
20145
  fieldKey: string()
20129
20146
  });
20130
- /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.celsius`. */
20147
+ /** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
20131
20148
  var CompositionProblemSchema = object({
20132
20149
  code: _enum([
20133
20150
  "reserved-variant",
@@ -20446,7 +20463,7 @@ var GROUP_TEMPLATES = [
20446
20463
  summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
20447
20464
  role: DeviceRole.TemperatureSensor,
20448
20465
  outputCap: "temperature-sensor",
20449
- outputField: "celsius",
20466
+ outputField: "temperature",
20450
20467
  quantity: "temperature",
20451
20468
  defaultAggregate: "mean",
20452
20469
  empty: "null",
@@ -20457,7 +20474,7 @@ var GROUP_TEMPLATES = [
20457
20474
  summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
20458
20475
  role: DeviceRole.HumiditySensor,
20459
20476
  outputCap: "humidity-sensor",
20460
- outputField: "percent",
20477
+ outputField: "humidity",
20461
20478
  quantity: "humidity",
20462
20479
  defaultAggregate: "mean",
20463
20480
  empty: "null",
@@ -20468,7 +20485,7 @@ var GROUP_TEMPLATES = [
20468
20485
  summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
20469
20486
  role: DeviceRole.PressureSensor,
20470
20487
  outputCap: "pressure-sensor",
20471
- outputField: "hpa",
20488
+ outputField: "pressure",
20472
20489
  quantity: "pressure",
20473
20490
  defaultAggregate: "mean",
20474
20491
  empty: "null",
@@ -20479,7 +20496,7 @@ var GROUP_TEMPLATES = [
20479
20496
  summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
20480
20497
  role: DeviceRole.AmbientLightSensor,
20481
20498
  outputCap: "ambient-light-sensor",
20482
- outputField: "lux",
20499
+ outputField: "illuminance",
20483
20500
  quantity: "illuminance",
20484
20501
  defaultAggregate: "mean",
20485
20502
  empty: "null",
@@ -20490,7 +20507,7 @@ var GROUP_TEMPLATES = [
20490
20507
  summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
20491
20508
  role: DeviceRole.PowerSensor,
20492
20509
  outputCap: "power-meter",
20493
- outputField: "watts",
20510
+ outputField: "power",
20494
20511
  quantity: "power",
20495
20512
  defaultAggregate: "sum",
20496
20513
  empty: "omit",
@@ -20501,7 +20518,7 @@ var GROUP_TEMPLATES = [
20501
20518
  summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
20502
20519
  role: DeviceRole.EnergySensor,
20503
20520
  outputCap: "power-meter",
20504
- outputField: "kwhTotal",
20521
+ outputField: "energy",
20505
20522
  quantity: "energy",
20506
20523
  defaultAggregate: "sum",
20507
20524
  empty: "omit",
@@ -20512,7 +20529,7 @@ var GROUP_TEMPLATES = [
20512
20529
  summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
20513
20530
  role: DeviceRole.BatterySensor,
20514
20531
  outputCap: "battery",
20515
- outputField: "percentage",
20532
+ outputField: "level",
20516
20533
  quantity: "percentage",
20517
20534
  defaultAggregate: "mean",
20518
20535
  empty: "null",
@@ -60937,9 +60954,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
60937
60954
  */
60938
60955
  var AirQualitySensorStatusSchema = object({
60939
60956
  /** Carbon dioxide concentration in ppm. */
60940
- co2Ppm: number().min(0).optional().meta(readingMeta("concentration-volume")),
60957
+ co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
60941
60958
  /** Total volatile organic compounds in ppb. */
60942
- vocPpb: number().min(0).optional().meta(readingMeta("concentration-ppb")),
60959
+ voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
60943
60960
  /** Particulate matter ≤ 2.5 μm in µg/m³. */
60944
60961
  pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
60945
60962
  /** Particulate matter ≤ 10 μm in µg/m³. */
@@ -60972,12 +60989,12 @@ var airQualitySensorCapability = {
60972
60989
  * History (D850): recorded series.
60973
60990
  */
60974
60991
  history: { fields: {
60975
- co2Ppm: {
60992
+ co2: {
60976
60993
  kind: "gauge",
60977
60994
  unit: "ppm",
60978
60995
  deadband: 5
60979
60996
  },
60980
- vocPpb: {
60997
+ voc: {
60981
60998
  kind: "gauge",
60982
60999
  unit: "ppb",
60983
61000
  deadband: 5
@@ -61008,7 +61025,7 @@ var airQualitySensorCapability = {
61008
61025
  */
61009
61026
  var AmbientLightSensorStatusSchema = object({
61010
61027
  /** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
61011
- lux: number().min(0).nullable().meta(readingMeta("illuminance", {
61028
+ illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
61012
61029
  precision: 0,
61013
61030
  label: "Illuminance"
61014
61031
  })),
@@ -61037,7 +61054,7 @@ var ambientLightSensorCapability = {
61037
61054
  /**
61038
61055
  * History (D850): recorded series. Wide range, so a RELATIVE deadband (10 %).
61039
61056
  */
61040
- history: { fields: { lux: {
61057
+ history: { fields: { illuminance: {
61041
61058
  kind: "gauge",
61042
61059
  unit: "lx",
61043
61060
  deadbandPct: 10,
@@ -61350,7 +61367,7 @@ var BatteryStatusSchema = object({
61350
61367
  * Consumers must SKIP a null rather than coerce it — `battery-band` already
61351
61368
  * declines to band a non-finite reading, which is the correct shape.
61352
61369
  */
61353
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
61370
+ level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
61354
61371
  /**
61355
61372
  * Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
61356
61373
  * Reolink-specific for the Solar Panel 2 accessory (will become
@@ -61360,7 +61377,7 @@ var BatteryStatusSchema = object({
61360
61377
  * `'unknown'` is the absence of an answer: the provider has not read the
61361
61378
  * power fields yet, or the firmware reported neither. Before it existed,
61362
61379
  * two unreadable fields produced `'none'`, and a camera nobody had reached
61363
- * was drawn "on battery alone" — the same D315 defect `percentage` closed
61380
+ * was drawn "on battery alone" — the same D315 defect `level` closed
61364
61381
  * by going nullable. Consumers SKIP it (no charger state published, no
61365
61382
  * glyph, no HomeKit ChargingState) rather than coerce it either way.
61366
61383
  */
@@ -61384,7 +61401,7 @@ var BatteryStatusSchema = object({
61384
61401
  * that only report charge. A second reading on this cap, not a second
61385
61402
  * `numeric-sensor` on the same device.
61386
61403
  */
61387
- volts: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
61404
+ voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
61388
61405
  /**
61389
61406
  * Ms epoch of the last time the device PROVED it was reachable — a
61390
61407
  * completed firmware round-trip, an observed wake, or an inbound push
@@ -61418,7 +61435,7 @@ var BatteryStatusSchema = object({
61418
61435
  /**
61419
61436
  * True when the source is a BINARY low-battery indicator (HA
61420
61437
  * `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
61421
- * charge level — `percentage` is then a coarse stand-in (100 = normal,
61438
+ * charge level — `level` is then a coarse stand-in (100 = normal,
61422
61439
  * sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
61423
61440
  * misleading exact percentage. Absent/false → genuine 0–100 % reading.
61424
61441
  */
@@ -61438,15 +61455,15 @@ var BATTERY_DEVICE_TYPES = [
61438
61455
  var batteryCustomize = {
61439
61456
  version: 1,
61440
61457
  targets: [{
61441
- id: "percentage",
61458
+ id: "level",
61442
61459
  cardinality: "scalar",
61443
61460
  vocabulary: {
61444
61461
  cap: "battery",
61445
- stateField: "percentage"
61462
+ stateField: "level"
61446
61463
  },
61447
61464
  deviceTypes: BATTERY_DEVICE_TYPES,
61448
61465
  apply: "add",
61449
- path: "percentage",
61466
+ path: "level",
61450
61467
  sources: [{
61451
61468
  kind: "field",
61452
61469
  valueKinds: ["number", "string"],
@@ -61540,7 +61557,7 @@ onStatusChanged: { data: object({
61540
61557
  schema: BatteryStatusSchema,
61541
61558
  kind: "push",
61542
61559
  empty: {
61543
- percentage: null,
61560
+ level: null,
61544
61561
  charging: "unknown",
61545
61562
  sleeping: false,
61546
61563
  lastUpdated: 0
@@ -61567,11 +61584,11 @@ onStatusChanged: { data: object({
61567
61584
  * History (D850): recorded series. The generic capture replaces the `battery` series of `pipeline-analytics:stats-5m`.
61568
61585
  */
61569
61586
  history: { fields: {
61570
- percentage: {
61587
+ level: {
61571
61588
  kind: "gauge",
61572
61589
  unit: "%"
61573
61590
  },
61574
- volts: {
61591
+ voltage: {
61575
61592
  kind: "gauge",
61576
61593
  unit: "V"
61577
61594
  }
@@ -61631,14 +61648,14 @@ var binaryCapability = {
61631
61648
  * controls to this single-method surface.
61632
61649
  *
61633
61650
  * The cap is intentionally minimal: a single `setBrightness({deviceId,
61634
- * percentage})` mutation plus the auto-injected `getStatus`. Drivers
61651
+ * level})` mutation plus the auto-injected `getStatus`. Drivers
61635
61652
  * that expose richer controls (color temperature, scenes, schedules)
61636
61653
  * should surface those via the device's `getSettingsUISchema()`
61637
61654
  * instead of bloating this cap.
61638
61655
  */
61639
61656
  var BrightnessStatusSchema = object({
61640
61657
  /** Current level as 0..100 inclusive. Firmware-reported. */
61641
- percentage: number().min(0).max(100).meta(readingMeta("percentage")),
61658
+ level: number().min(0).max(100).meta(readingMeta("percentage")),
61642
61659
  /** Ms epoch of the last operator-driven change. Useful for UI freshness. */
61643
61660
  lastChangedAt: number()
61644
61661
  });
@@ -61650,7 +61667,7 @@ var brightnessCapability = {
61650
61667
  deviceTypes: [DeviceType.Light],
61651
61668
  methods: { setBrightness: method(object({
61652
61669
  deviceId: number().int().nonnegative(),
61653
- percentage: number().min(0).max(100)
61670
+ level: number().min(0).max(100)
61654
61671
  }), _void(), {
61655
61672
  kind: "mutation",
61656
61673
  auth: "protected"
@@ -61663,7 +61680,7 @@ var brightnessCapability = {
61663
61680
  */
61664
61681
  onBrightnessChanged: { data: object({
61665
61682
  deviceId: number(),
61666
- percentage: number().min(0).max(100),
61683
+ level: number().min(0).max(100),
61667
61684
  lastChangedAt: number()
61668
61685
  }) } },
61669
61686
  status: {
@@ -61686,7 +61703,7 @@ onBrightnessChanged: { data: object({
61686
61703
  /**
61687
61704
  * History (D850): recorded series. Actuator tier: level keeps every change.
61688
61705
  */
61689
- history: { fields: { percentage: {
61706
+ history: { fields: { level: {
61690
61707
  kind: "gauge",
61691
61708
  unit: "%",
61692
61709
  minIntervalMs: 0
@@ -62310,11 +62327,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
62310
62327
  }),
62311
62328
  object({
62312
62329
  mode: literal("mired"),
62313
- mireds: number().int().min(50).max(1e3)
62330
+ colorTemperature: number().int().min(50).max(1e3)
62314
62331
  })
62315
62332
  ]);
62316
62333
  var ColorStatusSchema = object({
62317
- /** Active color mode — which of `rgb` / `hsv` / `mireds` reflects
62334
+ /** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
62318
62335
  * the bulb's current state. */
62319
62336
  mode: _enum([
62320
62337
  "rgb",
@@ -62326,7 +62343,7 @@ var ColorStatusSchema = object({
62326
62343
  /** Populated when `mode === 'hsv'`. */
62327
62344
  hsv: HsvTripletSchema.optional(),
62328
62345
  /** Populated when `mode === 'mired'`. */
62329
- mireds: number().int().optional().meta(readingMeta("colour-temperature")),
62346
+ colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
62330
62347
  /** Ms epoch of the last operator-driven change. */
62331
62348
  lastChangedAt: number()
62332
62349
  });
@@ -62358,7 +62375,7 @@ onColorChanged: { data: object({
62358
62375
  ]),
62359
62376
  rgb: RgbTripletSchema.optional(),
62360
62377
  hsv: HsvTripletSchema.optional(),
62361
- mireds: number().int().optional(),
62378
+ colorTemperature: number().int().optional(),
62362
62379
  lastChangedAt: number()
62363
62380
  }) } },
62364
62381
  status: {
@@ -63271,11 +63288,11 @@ var DishwasherStatusSchema = object({
63271
63288
  /** Feature keys of the programs the appliance currently offers — drives the UI selector. */
63272
63289
  availablePrograms: array(string()),
63273
63290
  /** Seconds remaining on the active cycle, or null when not running / not known. */
63274
- remainingSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
63291
+ remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
63275
63292
  /** Seconds the delayed start is set to (time until the cycle starts), or null. */
63276
- delayedStartSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
63293
+ delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
63277
63294
  /** Cycle completion 0..100, or null when not applicable. */
63278
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
63295
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
63279
63296
  /** True when the door is reported open; null when the door state is not known. */
63280
63297
  doorOpen: boolean().nullable(),
63281
63298
  /** True when the door is latched (locked) during a cycle; null when not reported. */
@@ -63494,14 +63511,14 @@ var dishwasherCapability = {
63494
63511
  runtimeState: DishwasherStatusSchema,
63495
63512
  durability: "session",
63496
63513
  history: { fields: {
63497
- progressPercent: {
63514
+ progress: {
63498
63515
  kind: "gauge",
63499
63516
  unit: "%",
63500
63517
  deadband: 2
63501
63518
  },
63502
63519
  state: { kind: "enum" },
63503
63520
  operationState: { kind: "enum" },
63504
- remainingSeconds: {
63521
+ remaining: {
63505
63522
  kind: "gauge",
63506
63523
  unit: "s",
63507
63524
  minIntervalMs: 6e4
@@ -64132,7 +64149,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
64132
64149
  var FanControlStatusSchema = object({
64133
64150
  /** Active speed as 0..100 inclusive. Null when the device has no
64134
64151
  * speed surface (single-speed fan). */
64135
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
64152
+ speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
64136
64153
  /** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
64137
64154
  * a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
64138
64155
  percentageStep: number().positive().optional().meta(readingMeta("percentage")),
@@ -64159,7 +64176,7 @@ var fanControlCapability = {
64159
64176
  methods: {
64160
64177
  setPercentage: method(object({
64161
64178
  deviceId: number().int().nonnegative(),
64162
- percentage: number().min(0).max(100)
64179
+ speed: number().min(0).max(100)
64163
64180
  }), _void(), {
64164
64181
  kind: "mutation",
64165
64182
  auth: "protected"
@@ -64192,7 +64209,7 @@ var fanControlCapability = {
64192
64209
  },
64193
64210
  /**
64194
64211
  * Runtime-state slice — mirrored by the kernel. UI fan speed
64195
- * sliders read `percentage` for live updates.
64212
+ * sliders read `speed` for live updates.
64196
64213
  */
64197
64214
  runtimeState: FanControlStatusSchema,
64198
64215
  /**
@@ -64206,7 +64223,7 @@ var fanControlCapability = {
64206
64223
  * History (D850): recorded series. Actuator tier: speed keeps every change.
64207
64224
  */
64208
64225
  history: { fields: {
64209
- percentage: {
64226
+ speed: {
64210
64227
  kind: "gauge",
64211
64228
  unit: "%",
64212
64229
  minIntervalMs: 0
@@ -64651,7 +64668,7 @@ var humidifierCapability = {
64651
64668
  */
64652
64669
  var HumiditySensorStatusSchema = object({
64653
64670
  /** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
64654
- percent: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
64671
+ humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
64655
64672
  precision: 0,
64656
64673
  label: "Humidity"
64657
64674
  })),
@@ -64680,7 +64697,7 @@ var humiditySensorCapability = {
64680
64697
  /**
64681
64698
  * History (D850): recorded series.
64682
64699
  */
64683
- history: { fields: { percent: {
64700
+ history: { fields: { humidity: {
64684
64701
  kind: "gauge",
64685
64702
  unit: "%",
64686
64703
  deadband: .5
@@ -65320,7 +65337,7 @@ var LawnMowerControlStatusSchema = object({
65320
65337
  batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
65321
65338
  /** 0..100 mowing-completion percentage of the current task, or null when no
65322
65339
  * task is active / progress is unavailable. */
65323
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
65340
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
65324
65341
  /** Current device/event code (dynamic — mostly status, sometimes an error),
65325
65342
  * or null when unknown. */
65326
65343
  currentCode: number().nullable().meta(readingMeta("none")),
@@ -65841,7 +65858,7 @@ var lockControlCapability = {
65841
65858
  volatileStateFields: ["lastChangedAt"]
65842
65859
  };
65843
65860
  /**
65844
- * A monotonic total between resets (D944). Energy uses `power-meter.kwhTotal`
65861
+ * A monotonic total between resets (D944). Energy uses `power-meter.energy`
65845
65862
  * so dashboards keep one series; every other instantaneous reading lands here.
65846
65863
  * `value` is the time integral in the source quantity's accumulated base
65847
65864
  * (base-unit seconds, or kWh on the power meter). `null` is a gap, never zero.
@@ -65935,10 +65952,10 @@ var MediaPlayerStatusSchema = object({
65935
65952
  currentMedia: MediaInfoSchema.nullable(),
65936
65953
  /** Current playback position in ms. Null when not seekable or
65937
65954
  * nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
65938
- positionMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
65955
+ position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
65939
65956
  /** Total duration of the current media in ms. Null when unknown
65940
65957
  * (live stream) or nothing is playing. */
65941
- durationMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
65958
+ duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
65942
65959
  /** Shuffle toggle. Null when no shuffle surface.
65943
65960
  * Pair with `DeviceFeature.MediaPlayerShuffle`. */
65944
65961
  shuffle: boolean().nullable(),
@@ -65977,7 +65994,7 @@ var mediaPlayerCapability = {
65977
65994
  }),
65978
65995
  seek: method(object({
65979
65996
  deviceId: number().int().nonnegative(),
65980
- positionMs: number().int().nonnegative()
65997
+ position: number().int().nonnegative()
65981
65998
  }), _void(), {
65982
65999
  kind: "mutation",
65983
66000
  auth: "protected"
@@ -66049,7 +66066,7 @@ var mediaPlayerCapability = {
66049
66066
  /**
66050
66067
  * History (D850): volume (a level an operator or an automation sets; the
66051
66068
  * default 10 s floor folds a slider drag into its end value) and mute.
66052
- * `positionMs` is not recorded: it moves continuously while playing.
66069
+ * `position` is not recorded: it moves continuously while playing.
66053
66070
  */
66054
66071
  history: { fields: {
66055
66072
  volumeLevel: {
@@ -67036,9 +67053,9 @@ var NetworkLinkStatusSchema = object({
67036
67053
  * one whose reading has not landed must not be drawn at 0 %. Consumers
67037
67054
  * SKIP a null rather than coerce it.
67038
67055
  */
67039
- signalPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
67056
+ signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
67040
67057
  /** Raw received signal strength in dBm, when the firmware reports one. */
67041
- rssiDbm: number().optional().meta(readingMeta("signal-level")),
67058
+ rssi: number().optional().meta(readingMeta("signal-level")),
67042
67059
  /** Network name of a wireless link, when the firmware reports it. */
67043
67060
  ssid: string().optional(),
67044
67061
  /** Ms epoch of the last observation. Lets consumers reason about freshness. */
@@ -67074,7 +67091,7 @@ onStatusChanged: { data: object({
67074
67091
  kind: "push",
67075
67092
  empty: {
67076
67093
  type: "unknown",
67077
- signalPercent: null,
67094
+ signal: null,
67078
67095
  lastUpdated: 0
67079
67096
  }
67080
67097
  },
@@ -67097,13 +67114,13 @@ onStatusChanged: { data: object({
67097
67114
  * History (D850): recorded series.
67098
67115
  */
67099
67116
  history: { fields: {
67100
- signalPercent: {
67117
+ signal: {
67101
67118
  kind: "gauge",
67102
67119
  unit: "%",
67103
67120
  deadband: 3,
67104
67121
  minIntervalMs: 6e4
67105
67122
  },
67106
- rssiDbm: {
67123
+ rssi: {
67107
67124
  kind: "gauge",
67108
67125
  unit: "dBm",
67109
67126
  deadband: 2,
@@ -68458,16 +68475,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
68458
68475
  * in real-world devices.
68459
68476
  */
68460
68477
  var PowerMeterStatusSchema = object({
68461
- /** Instantaneous power draw in watts. */
68462
- watts: number().optional().meta(readingMeta("power", { label: "Power" })),
68478
+ /** Instantaneous power draw (watts). */
68479
+ power: number().optional().meta(readingMeta("power", { label: "Power" })),
68463
68480
  /** Cumulative energy in kilowatt-hours since the meter was reset. */
68464
- kwhTotal: number().optional().meta(readingMeta("energy", { label: "Energy" })),
68465
- /** Voltage in volts. */
68466
- volts: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
68481
+ energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
68482
+ /** Voltage (volts). */
68483
+ voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
68467
68484
  /** Current in amperes. */
68468
- amps: number().optional().meta(readingMeta("current", { label: "Current" })),
68485
+ current: number().optional().meta(readingMeta("current", { label: "Current" })),
68469
68486
  /** Apparent power in volt-amperes. */
68470
- va: number().optional().meta(readingMeta("apparent-power")),
68487
+ apparentPower: number().optional().meta(readingMeta("apparent-power")),
68471
68488
  /** Power factor (0..1) if reported. */
68472
68489
  powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
68473
68490
  /** Ms epoch when the slice was last updated. */
@@ -68525,14 +68542,14 @@ function powerTarget(id, unit) {
68525
68542
  advancedExpression: true
68526
68543
  };
68527
68544
  }
68528
- /** "Power and energy" extension: watts, energy, voltage and current from other devices (D951). */
68545
+ /** "Power and energy" extension: power, energy, voltage and current from other devices (D951). */
68529
68546
  var powerMeterCustomize = {
68530
68547
  version: 1,
68531
68548
  targets: [
68532
- powerTarget("watts", "W"),
68533
- powerTarget("kwhTotal", "kWh"),
68534
- powerTarget("volts", "V"),
68535
- powerTarget("amps", "A")
68549
+ powerTarget("power", "W"),
68550
+ powerTarget("energy", "kWh"),
68551
+ powerTarget("voltage", "V"),
68552
+ powerTarget("current", "A")
68536
68553
  ]
68537
68554
  };
68538
68555
  var powerMeterCapability = {
@@ -68548,41 +68565,41 @@ var powerMeterCapability = {
68548
68565
  },
68549
68566
  runtimeState: PowerMeterStatusSchema,
68550
68567
  /**
68551
- * Runtime-state durability: **restored** — as `numeric-sensor`; `kwhTotal` is an accumulator whose restored value is the baseline.
68568
+ * Runtime-state durability: **restored** — as `numeric-sensor`; `energy` is an accumulator whose restored value is the baseline.
68552
68569
  *
68553
68570
  * See `RuntimeStateDurability`. Enforced by
68554
68571
  * `scripts/check-runtime-state-durability.ts`.
68555
68572
  */
68556
68573
  durability: "restored",
68557
68574
  /**
68558
- * History (D850): recorded series. Gauges are floored at 30 s; `kwhTotal` is the one monotonic meter (counter).
68575
+ * History (D850): recorded series. Gauges are floored at 30 s; `energy` is the one monotonic meter (counter).
68559
68576
  */
68560
68577
  history: { fields: {
68561
- watts: {
68578
+ power: {
68562
68579
  kind: "gauge",
68563
68580
  unit: "W",
68564
68581
  deadband: 1,
68565
68582
  minIntervalMs: 3e4
68566
68583
  },
68567
- kwhTotal: {
68584
+ energy: {
68568
68585
  kind: "counter",
68569
68586
  unit: "kWh",
68570
68587
  deadband: .01,
68571
68588
  minIntervalMs: 6e4
68572
68589
  },
68573
- volts: {
68590
+ voltage: {
68574
68591
  kind: "gauge",
68575
68592
  unit: "V",
68576
68593
  deadband: 1,
68577
68594
  minIntervalMs: 3e4
68578
68595
  },
68579
- amps: {
68596
+ current: {
68580
68597
  kind: "gauge",
68581
68598
  unit: "A",
68582
68599
  deadband: .05,
68583
68600
  minIntervalMs: 3e4
68584
68601
  },
68585
- va: {
68602
+ apparentPower: {
68586
68603
  kind: "gauge",
68587
68604
  unit: "VA",
68588
68605
  deadband: 1,
@@ -68632,9 +68649,6 @@ var PresenceStatusSchema = object({
68632
68649
  location: string().nullable(),
68633
68650
  /** GPS coordinates when available. Null otherwise. */
68634
68651
  gps: GpsLocationSchema.nullable(),
68635
- /** Optional battery level of the tracking device (0..100). Null
68636
- * when not reported. */
68637
- batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
68638
68652
  /** Ms epoch when the slice was last updated. */
68639
68653
  lastChangedAt: number()
68640
68654
  });
@@ -68663,14 +68677,7 @@ var presenceCapability = {
68663
68677
  * `scripts/check-runtime-state-durability.ts`.
68664
68678
  */
68665
68679
  durability: "restored",
68666
- /**
68667
- * History (D850): recorded series.
68668
- */
68669
- history: { fields: { batteryPercent: {
68670
- kind: "gauge",
68671
- unit: "%",
68672
- deadband: 1
68673
- } } },
68680
+ history: "none",
68674
68681
  /** Clock fields: written, but excluded from the compare that decides
68675
68682
  * whether persisting is worth a SQLite commit. */
68676
68683
  volatileStateFields: ["lastChangedAt"]
@@ -68685,7 +68692,7 @@ var presenceCapability = {
68685
68692
  */
68686
68693
  var PressureSensorStatusSchema = object({
68687
68694
  /** Current pressure in hPa. `null` when the sample was refused (D393). */
68688
- hpa: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
68695
+ pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
68689
68696
  /** Ms epoch when the slice was last updated. */
68690
68697
  lastFetchedAt: number()
68691
68698
  });
@@ -68711,7 +68718,7 @@ var pressureSensorCapability = {
68711
68718
  /**
68712
68719
  * History (D850): recorded series.
68713
68720
  */
68714
- history: { fields: { hpa: {
68721
+ history: { fields: { pressure: {
68715
68722
  kind: "gauge",
68716
68723
  unit: "hPa",
68717
68724
  deadband: .1
@@ -72460,7 +72467,7 @@ var tamperCapability = {
72460
72467
  */
72461
72468
  var TemperatureSensorStatusSchema = object({
72462
72469
  /** Current temperature in Celsius. `null` when the sample was refused (D393). */
72463
- celsius: number().nullable().meta(readingMeta("temperature", {
72470
+ temperature: number().nullable().meta(readingMeta("temperature", {
72464
72471
  precision: 1,
72465
72472
  label: "Temperature"
72466
72473
  })),
@@ -72489,7 +72496,7 @@ var temperatureSensorCapability = {
72489
72496
  /**
72490
72497
  * History (D850): recorded series.
72491
72498
  */
72492
- history: { fields: { celsius: {
72499
+ history: { fields: { temperature: {
72493
72500
  kind: "gauge",
72494
72501
  unit: "°C",
72495
72502
  deadband: .1
@@ -72786,7 +72793,7 @@ var VacuumControlStatusSchema = object({
72786
72793
  /** Speed tokens the hardware accepts — drives the UI selector. */
72787
72794
  availableFanSpeeds: array(string()),
72788
72795
  /** 0..100 cleaning-completion percentage of the current task, or null. */
72789
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
72796
+ progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
72790
72797
  /** Current error code (0 / null = no error). */
72791
72798
  errorCode: number().nullable().meta(readingMeta("none")),
72792
72799
  /** Human label for {@link errorCode}, or null when none / undecodable. */
@@ -74493,7 +74500,7 @@ var BaseDevice = class {
74493
74500
  * `device-local-state.ts`. Drivers access via:
74494
74501
  *
74495
74502
  * `this.state.battery.sleeping = true` // patches the battery slice
74496
- * `const pct = this.state.battery.percentage` // reads the battery slice
74503
+ * `const pct = this.state.battery.level` // reads the battery slice
74497
74504
  * `this.state.deviceStatus.online = true` // mirrors `markOnline(true)`
74498
74505
  *
74499
74506
  * Adding a new cap with `runtimeState:` automatically extends this
@@ -74533,7 +74540,7 @@ var BaseDevice = class {
74533
74540
  * shape; drivers don't redeclare it, they just write through.
74534
74541
  *
74535
74542
  * Read: `this.runtimeState.getCapState('battery')` →
74536
- * `{percentage, charging, sleeping, lastUpdated}` for any
74543
+ * `{level, charging, sleeping, lastUpdated}` for any
74537
74544
  * provider that registers `batteryCapability`.
74538
74545
  * Write: `this.runtimeState.setCapState('battery', { … })`.
74539
74546
  *
@@ -85253,7 +85260,7 @@ var ACTUATOR_CAP_VOCABULARY = {
85253
85260
  label: t("Full brightness", "Luminosità massima"),
85254
85261
  phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
85255
85262
  icon: "sun",
85256
- args: { percentage: 100 }
85263
+ args: { level: 100 }
85257
85264
  },
85258
85265
  {
85259
85266
  id: "brightness.half",
@@ -85261,7 +85268,7 @@ var ACTUATOR_CAP_VOCABULARY = {
85261
85268
  label: t("Half brightness", "Luminosità a metà"),
85262
85269
  phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
85263
85270
  icon: "sun-dim",
85264
- args: { percentage: 50 }
85271
+ args: { level: 50 }
85265
85272
  },
85266
85273
  {
85267
85274
  id: "brightness.off",
@@ -85269,16 +85276,16 @@ var ACTUATOR_CAP_VOCABULARY = {
85269
85276
  label: t("Brightness off", "Luminosità a zero"),
85270
85277
  phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
85271
85278
  icon: "lightbulb-off",
85272
- args: { percentage: 0 }
85279
+ args: { level: 0 }
85273
85280
  },
85274
85281
  {
85275
85282
  id: "brightness.set",
85276
85283
  method: "setBrightness",
85277
85284
  label: t("Set brightness", "Imposta la luminosità"),
85278
- phrase: t("Set the brightness of {device} to {percentage}", "Imposta la luminosità di {device} a {percentage}"),
85285
+ phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
85279
85286
  icon: "sun-medium",
85280
85287
  openArgs: [{
85281
- key: "percentage",
85288
+ key: "level",
85282
85289
  label: PERCENT,
85283
85290
  offer: {
85284
85291
  kind: "number",
@@ -85292,13 +85299,13 @@ var ACTUATOR_CAP_VOCABULARY = {
85292
85299
  ],
85293
85300
  state: [{
85294
85301
  kind: "numeric",
85295
- field: "percentage",
85302
+ field: "level",
85296
85303
  quantity: t("the brightness", "la luminosità"),
85297
85304
  label: t("Brightness", "Luminosità"),
85298
85305
  unit: "%",
85299
85306
  icon: "sun"
85300
85307
  }],
85301
- events: { onBrightnessChanged: { notOperatorFacing: "the `percentage` state trigger reads the same change" } }
85308
+ events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
85302
85309
  },
85303
85310
  color: {
85304
85311
  scope: "device",
@@ -85312,7 +85319,7 @@ var ACTUATOR_CAP_VOCABULARY = {
85312
85319
  icon: "sun",
85313
85320
  args: { color: {
85314
85321
  mode: "mired",
85315
- mireds: 370
85322
+ colorTemperature: 370
85316
85323
  } }
85317
85324
  },
85318
85325
  {
@@ -85323,7 +85330,7 @@ var ACTUATOR_CAP_VOCABULARY = {
85323
85330
  icon: "snowflake",
85324
85331
  args: { color: {
85325
85332
  mode: "mired",
85326
- mireds: 200
85333
+ colorTemperature: 200
85327
85334
  } }
85328
85335
  },
85329
85336
  {
@@ -85937,7 +85944,7 @@ var ACTUATOR_CAP_VOCABULARY = {
85937
85944
  label: t("Fan off", "Ventilatore spento"),
85938
85945
  phrase: t("Stop {device}", "Ferma {device}"),
85939
85946
  icon: "power-off",
85940
- args: { percentage: 0 }
85947
+ args: { speed: 0 }
85941
85948
  },
85942
85949
  {
85943
85950
  id: "fan.full",
@@ -85945,16 +85952,16 @@ var ACTUATOR_CAP_VOCABULARY = {
85945
85952
  label: t("Fan full", "Ventilatore al massimo"),
85946
85953
  phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
85947
85954
  icon: "fan",
85948
- args: { percentage: 100 }
85955
+ args: { speed: 100 }
85949
85956
  },
85950
85957
  {
85951
85958
  id: "fan.speed",
85952
85959
  method: "setPercentage",
85953
85960
  label: t("Set speed", "Imposta la velocità"),
85954
- phrase: t("Set the speed of {device} to {percentage}", "Imposta la velocità di {device} al {percentage}"),
85961
+ phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
85955
85962
  icon: "fan",
85956
85963
  openArgs: [{
85957
- key: "percentage",
85964
+ key: "speed",
85958
85965
  label: t("Speed", "Velocità"),
85959
85966
  offer: {
85960
85967
  kind: "number",
@@ -86016,7 +86023,7 @@ var ACTUATOR_CAP_VOCABULARY = {
86016
86023
  ],
86017
86024
  state: [{
86018
86025
  kind: "numeric",
86019
- field: "percentage",
86026
+ field: "speed",
86020
86027
  quantity: t("the speed", "la velocità"),
86021
86028
  label: t("Speed", "Velocità"),
86022
86029
  unit: "%",
@@ -86814,7 +86821,7 @@ var APPLIANCE_CAP_VOCABULARY = {
86814
86821
  },
86815
86822
  {
86816
86823
  kind: "numeric",
86817
- field: "progressPercent",
86824
+ field: "progress",
86818
86825
  quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
86819
86826
  label: t("Progress", "Avanzamento"),
86820
86827
  unit: "%",
@@ -87172,10 +87179,10 @@ var APPLIANCE_CAP_VOCABULARY = {
87172
87179
  id: "media.seek",
87173
87180
  method: "seek",
87174
87181
  label: t("Seek", "Vai al punto"),
87175
- phrase: t("Move {device} to {positionMs}", "Porta {device} al punto {positionMs}"),
87182
+ phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
87176
87183
  icon: "fast-forward",
87177
87184
  openArgs: [{
87178
- key: "positionMs",
87185
+ key: "position",
87179
87186
  label: t("Position", "Posizione"),
87180
87187
  offer: {
87181
87188
  kind: "number",
@@ -88224,7 +88231,7 @@ var SENSOR_CAP_VOCABULARY = {
88224
88231
  state: [
88225
88232
  {
88226
88233
  kind: "numeric",
88227
- field: "co2Ppm",
88234
+ field: "co2",
88228
88235
  quantity: t("the CO₂", "la CO₂"),
88229
88236
  label: t("CO₂", "CO₂"),
88230
88237
  unit: "ppm",
@@ -88232,7 +88239,7 @@ var SENSOR_CAP_VOCABULARY = {
88232
88239
  },
88233
88240
  {
88234
88241
  kind: "numeric",
88235
- field: "vocPpb",
88242
+ field: "voc",
88236
88243
  quantity: t("the VOC level", "il livello di COV"),
88237
88244
  label: t("VOC", "COV"),
88238
88245
  unit: "ppb",
@@ -88268,7 +88275,7 @@ var SENSOR_CAP_VOCABULARY = {
88268
88275
  noun: t("Light level", "Luminosità ambiente"),
88269
88276
  state: [{
88270
88277
  kind: "numeric",
88271
- field: "lux",
88278
+ field: "illuminance",
88272
88279
  quantity: t("the light level", "la luminosità"),
88273
88280
  label: t("Illuminance", "Illuminamento"),
88274
88281
  unit: "lx",
@@ -88471,7 +88478,7 @@ var SENSOR_CAP_VOCABULARY = {
88471
88478
  noun: t("Humidity", "Umidità"),
88472
88479
  state: [{
88473
88480
  kind: "numeric",
88474
- field: "percent",
88481
+ field: "humidity",
88475
88482
  quantity: t("the humidity", "l’umidità"),
88476
88483
  label: t("Humidity", "Umidità"),
88477
88484
  unit: "%",
@@ -88519,7 +88526,7 @@ var SENSOR_CAP_VOCABULARY = {
88519
88526
  state: [
88520
88527
  {
88521
88528
  kind: "numeric",
88522
- field: "watts",
88529
+ field: "power",
88523
88530
  quantity: t("the power draw", "il consumo"),
88524
88531
  label: t("Power", "Potenza"),
88525
88532
  unit: "W",
@@ -88527,7 +88534,7 @@ var SENSOR_CAP_VOCABULARY = {
88527
88534
  },
88528
88535
  {
88529
88536
  kind: "numeric",
88530
- field: "kwhTotal",
88537
+ field: "energy",
88531
88538
  quantity: t("the energy used", "l’energia consumata"),
88532
88539
  label: t("Energy", "Energia"),
88533
88540
  unit: "kWh",
@@ -88535,7 +88542,7 @@ var SENSOR_CAP_VOCABULARY = {
88535
88542
  },
88536
88543
  {
88537
88544
  kind: "numeric",
88538
- field: "volts",
88545
+ field: "voltage",
88539
88546
  quantity: t("the voltage", "la tensione"),
88540
88547
  label: t("Voltage", "Tensione"),
88541
88548
  unit: "V",
@@ -88543,7 +88550,7 @@ var SENSOR_CAP_VOCABULARY = {
88543
88550
  },
88544
88551
  {
88545
88552
  kind: "numeric",
88546
- field: "amps",
88553
+ field: "current",
88547
88554
  quantity: t("the current", "la corrente"),
88548
88555
  label: t("Current", "Corrente"),
88549
88556
  unit: "A",
@@ -88560,13 +88567,6 @@ var SENSOR_CAP_VOCABULARY = {
88560
88567
  label: t("Where", "Posizione"),
88561
88568
  phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
88562
88569
  icon: "map-pin"
88563
- }, {
88564
- kind: "numeric",
88565
- field: "batteryPercent",
88566
- quantity: t("the phone battery", "la batteria del telefono"),
88567
- label: t("Battery", "Batteria"),
88568
- unit: "%",
88569
- icon: "battery"
88570
88570
  }]
88571
88571
  },
88572
88572
  "pressure-sensor": {
@@ -88574,7 +88574,7 @@ var SENSOR_CAP_VOCABULARY = {
88574
88574
  noun: t("Pressure", "Pressione"),
88575
88575
  state: [{
88576
88576
  kind: "numeric",
88577
- field: "hpa",
88577
+ field: "pressure",
88578
88578
  quantity: t("the pressure", "la pressione"),
88579
88579
  label: t("Pressure", "Pressione"),
88580
88580
  unit: "hPa",
@@ -88610,7 +88610,7 @@ var SENSOR_CAP_VOCABULARY = {
88610
88610
  noun: t("Temperature", "Temperatura"),
88611
88611
  state: [{
88612
88612
  kind: "numeric",
88613
- field: "celsius",
88613
+ field: "temperature",
88614
88614
  quantity: t("the temperature", "la temperatura"),
88615
88615
  label: t("Temperature", "Temperatura"),
88616
88616
  unit: "°C",
@@ -88681,7 +88681,7 @@ var SENSOR_CAP_VOCABULARY = {
88681
88681
  state: [
88682
88682
  {
88683
88683
  kind: "numeric",
88684
- field: "percentage",
88684
+ field: "level",
88685
88685
  quantity: t("the battery level", "il livello della batteria"),
88686
88686
  label: t("Battery", "Batteria"),
88687
88687
  unit: "%",
@@ -88723,7 +88723,7 @@ var SENSOR_CAP_VOCABULARY = {
88723
88723
  icon: "battery-charging"
88724
88724
  }
88725
88725
  ],
88726
- events: { onStatusChanged: { notOperatorFacing: "the percentage / sleeping / charging state triggers each read one field of this change" } },
88726
+ events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
88727
88727
  extraEvents: [{
88728
88728
  category: EventCategory.DeviceAwake,
88729
88729
  label: t("Woke up", "Risvegliato"),
@@ -88741,7 +88741,7 @@ var SENSOR_CAP_VOCABULARY = {
88741
88741
  noun: t("Network link", "Collegamento di rete"),
88742
88742
  state: [{
88743
88743
  kind: "numeric",
88744
- field: "signalPercent",
88744
+ field: "signal",
88745
88745
  quantity: t("the signal strength", "l’intensità del segnale"),
88746
88746
  label: t("Signal", "Segnale"),
88747
88747
  unit: "%",