@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.
@@ -5676,7 +5676,7 @@ var ZodIssueCode = {
5676
5676
  var ZodFirstPartyTypeKind;
5677
5677
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5678
5678
  //#endregion
5679
- //#region ../types/dist/sleep-DFaVPxfm.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
@@ -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.celsius`. */
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: "celsius",
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: "percent",
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: "hpa",
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: "lux",
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: "watts",
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: "kwhTotal",
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: "percentage",
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
- co2Ppm: number().min(0).optional().meta(readingMeta("concentration-volume")),
60957
+ co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
60962
60958
  /** Total volatile organic compounds in ppb. */
60963
- vocPpb: number().min(0).optional().meta(readingMeta("concentration-ppb")),
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
- co2Ppm: {
60992
+ co2: {
60997
60993
  kind: "gauge",
60998
60994
  unit: "ppm",
60999
60995
  deadband: 5
61000
60996
  },
61001
- vocPpb: {
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
- lux: number().min(0).nullable().meta(readingMeta("illuminance", {
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: { lux: {
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
- 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" })),
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 `percentage` closed
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
- volts: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
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 — `percentage` is then a coarse stand-in (100 = normal,
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: "percentage",
61458
+ id: "level",
61463
61459
  cardinality: "scalar",
61464
61460
  vocabulary: {
61465
61461
  cap: "battery",
61466
- stateField: "percentage"
61462
+ stateField: "level"
61467
61463
  },
61468
61464
  deviceTypes: BATTERY_DEVICE_TYPES,
61469
61465
  apply: "add",
61470
- path: "percentage",
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
- percentage: null,
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
- percentage: {
61587
+ level: {
61592
61588
  kind: "gauge",
61593
61589
  unit: "%"
61594
61590
  },
61595
- volts: {
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
- * percentage})` mutation plus the auto-injected `getStatus`. Drivers
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
- percentage: number().min(0).max(100).meta(readingMeta("percentage")),
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
- percentage: number().min(0).max(100)
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
- percentage: number().min(0).max(100),
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: { percentage: {
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
- mireds: number().int().min(50).max(1e3)
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` / `mireds` reflects
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
- mireds: number().int().optional().meta(readingMeta("colour-temperature")),
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
- mireds: number().int().optional(),
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
- remainingSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
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
- delayedStartSeconds: number().int().nonnegative().nullable().meta(readingMeta("duration")),
63293
+ delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
63298
63294
  /** Cycle completion 0..100, or null when not applicable. */
63299
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
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
- progressPercent: {
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
- remainingSeconds: {
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
- percentage: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
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
- percentage: number().min(0).max(100)
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 `percentage` for live updates.
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
- percentage: {
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
- percent: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
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: { percent: {
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
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
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.kwhTotal`
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
- positionMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
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
- durationMs: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
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
- positionMs: number().int().nonnegative()
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
- * `positionMs` is not recorded: it moves continuously while playing.
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
- signalPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
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
- rssiDbm: number().optional().meta(readingMeta("signal-level")),
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
- signalPercent: null,
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
- signalPercent: {
67117
+ signal: {
67122
67118
  kind: "gauge",
67123
67119
  unit: "%",
67124
67120
  deadband: 3,
67125
67121
  minIntervalMs: 6e4
67126
67122
  },
67127
- rssiDbm: {
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 in watts. */
68483
- watts: number().optional().meta(readingMeta("power", { label: "Power" })),
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
- kwhTotal: number().optional().meta(readingMeta("energy", { label: "Energy" })),
68486
- /** Voltage in volts. */
68487
- 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" })),
68488
68484
  /** Current in amperes. */
68489
- amps: number().optional().meta(readingMeta("current", { label: "Current" })),
68485
+ current: number().optional().meta(readingMeta("current", { label: "Current" })),
68490
68486
  /** Apparent power in volt-amperes. */
68491
- va: number().optional().meta(readingMeta("apparent-power")),
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: watts, energy, voltage and current from other devices (D951). */
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("watts", "W"),
68554
- powerTarget("kwhTotal", "kWh"),
68555
- powerTarget("volts", "V"),
68556
- powerTarget("amps", "A")
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`; `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.
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; `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).
68580
68576
  */
68581
68577
  history: { fields: {
68582
- watts: {
68578
+ power: {
68583
68579
  kind: "gauge",
68584
68580
  unit: "W",
68585
68581
  deadband: 1,
68586
68582
  minIntervalMs: 3e4
68587
68583
  },
68588
- kwhTotal: {
68584
+ energy: {
68589
68585
  kind: "counter",
68590
68586
  unit: "kWh",
68591
68587
  deadband: .01,
68592
68588
  minIntervalMs: 6e4
68593
68589
  },
68594
- volts: {
68590
+ voltage: {
68595
68591
  kind: "gauge",
68596
68592
  unit: "V",
68597
68593
  deadband: 1,
68598
68594
  minIntervalMs: 3e4
68599
68595
  },
68600
- amps: {
68596
+ current: {
68601
68597
  kind: "gauge",
68602
68598
  unit: "A",
68603
68599
  deadband: .05,
68604
68600
  minIntervalMs: 3e4
68605
68601
  },
68606
- va: {
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
- hpa: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
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: { hpa: {
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
- celsius: number().nullable().meta(readingMeta("temperature", {
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: { celsius: {
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
- progressPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
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.percentage` // reads the battery slice
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
- * `{percentage, charging, sleeping, lastUpdated}` for any
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: { percentage: 100 }
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: { percentage: 50 }
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: { percentage: 0 }
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 {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}"),
85300
85286
  icon: "sun-medium",
85301
85287
  openArgs: [{
85302
- key: "percentage",
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: "percentage",
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 `percentage` state trigger reads the same change" } }
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
- mireds: 370
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
- mireds: 200
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: { percentage: 0 }
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: { percentage: 100 }
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 {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}"),
85976
85962
  icon: "fan",
85977
85963
  openArgs: [{
85978
- key: "percentage",
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: "percentage",
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: "progressPercent",
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 {positionMs}", "Porta {device} al punto {positionMs}"),
87182
+ phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
87197
87183
  icon: "fast-forward",
87198
87184
  openArgs: [{
87199
- key: "positionMs",
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: "co2Ppm",
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: "vocPpb",
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: "lux",
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: "percent",
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: "watts",
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: "kwhTotal",
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: "volts",
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: "amps",
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: "hpa",
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: "celsius",
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: "percentage",
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 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" } },
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: "signalPercent",
88744
+ field: "signal",
88766
88745
  quantity: t("the signal strength", "l’intensità del segnale"),
88767
88746
  label: t("Signal", "Segnale"),
88768
88747
  unit: "%",