@camstack/addon-model-studio 1.1.312 → 1.1.314
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/{MotionZonesSettings-DInCzvsZ.mjs → MotionZonesSettings-Bbq95ygz.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-CmrBaDuA.mjs → PrivacyMaskSettings-ZpD6VN7X.mjs} +4 -4
- package/dist/{SceneMonitorEditor-RTv6NbW6.mjs → SceneMonitorEditor-BvsLHttM.mjs} +3 -3
- package/dist/_stub.js +51 -51
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BrYK-jYX.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_model_studio_page-BtG6KzLk.mjs} +3 -3
- package/dist/{_virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Ce9Sfoip.mjs → _virtual_mf___mfe_internal__addon_model_studio_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DxAMUMtD.mjs} +1 -1
- package/dist/{hostInit-GYZT1Fyq.mjs → hostInit-XUNzuCDs.mjs} +2 -2
- package/dist/model-studio.addon.js +126 -119
- package/dist/model-studio.addon.mjs +126 -119
- package/dist/{player-overlays-DsE4YtZ1.mjs → player-overlays-Dc4klu5U.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-D_CPQ5yV.mjs → responsive-D28CBU7-.mjs} +1 -1
- package/dist/{scene-monitor-copy-DHj78OC7.mjs → scene-monitor-copy-KG_LV8wy.mjs} +1 -1
- package/dist/{square-DbA6Yd2X.mjs → square-BpIRNy9u.mjs} +1 -1
- package/dist/{trash-2-B9wTfggN.mjs → trash-2-BwbD1FGM.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-BkSr2wEh.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_model_studio_page__remoteEntry_js-D2YHXWx9.mjs} +1 -1
- package/package.json +1 -1
|
@@ -368,7 +368,7 @@ function buildPluginCatalogRegistryDescriptor(entry) {
|
|
|
368
368
|
};
|
|
369
369
|
}
|
|
370
370
|
//#endregion
|
|
371
|
-
//#region ../types/dist/event-category-
|
|
371
|
+
//#region ../types/dist/event-category-DmZDPDf_.mjs
|
|
372
372
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
373
373
|
EventCategory["SystemBoot"] = "system.boot";
|
|
374
374
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -995,7 +995,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
995
995
|
* (a track was promoted to a stationary-registry entry) or departs (the
|
|
996
996
|
* object moved / was removed). Telemetry (D8): lossy, drives a UI refresh of
|
|
997
997
|
* the dedicated "Stationary" section — never the live event feed. Payload:
|
|
998
|
-
* `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp }`.
|
|
998
|
+
* `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp, observedAt, zones }`.
|
|
999
999
|
*/
|
|
1000
1000
|
EventCategory["PipelineAnalyticsStationaryChanged"] = "pipeline-analytics.stationary-changed";
|
|
1001
1001
|
/**
|
|
@@ -5816,7 +5816,7 @@ var ZodIssueCode = {
|
|
|
5816
5816
|
var ZodFirstPartyTypeKind;
|
|
5817
5817
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5818
5818
|
//#endregion
|
|
5819
|
-
//#region ../types/dist/sleep-
|
|
5819
|
+
//#region ../types/dist/sleep-Crlmu_tO.mjs
|
|
5820
5820
|
/**
|
|
5821
5821
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5822
5822
|
* window to float samples (D455).
|
|
@@ -9136,11 +9136,11 @@ var CAP_NAMES = Object.freeze([
|
|
|
9136
9136
|
Object.freeze({
|
|
9137
9137
|
"air-quality-sensor": [
|
|
9138
9138
|
{
|
|
9139
|
-
"path": "
|
|
9139
|
+
"path": "co2",
|
|
9140
9140
|
"valueType": "number"
|
|
9141
9141
|
},
|
|
9142
9142
|
{
|
|
9143
|
-
"path": "
|
|
9143
|
+
"path": "voc",
|
|
9144
9144
|
"valueType": "number"
|
|
9145
9145
|
},
|
|
9146
9146
|
{
|
|
@@ -9190,7 +9190,7 @@ Object.freeze({
|
|
|
9190
9190
|
}
|
|
9191
9191
|
],
|
|
9192
9192
|
"ambient-light-sensor": [{
|
|
9193
|
-
"path": "
|
|
9193
|
+
"path": "illuminance",
|
|
9194
9194
|
"valueType": "number"
|
|
9195
9195
|
}],
|
|
9196
9196
|
"audio-metrics": [
|
|
@@ -9251,7 +9251,7 @@ Object.freeze({
|
|
|
9251
9251
|
],
|
|
9252
9252
|
"battery": [
|
|
9253
9253
|
{
|
|
9254
|
-
"path": "
|
|
9254
|
+
"path": "level",
|
|
9255
9255
|
"valueType": "number"
|
|
9256
9256
|
},
|
|
9257
9257
|
{
|
|
@@ -9273,7 +9273,7 @@ Object.freeze({
|
|
|
9273
9273
|
"valueType": "number"
|
|
9274
9274
|
},
|
|
9275
9275
|
{
|
|
9276
|
-
"path": "
|
|
9276
|
+
"path": "voltage",
|
|
9277
9277
|
"valueType": "number"
|
|
9278
9278
|
},
|
|
9279
9279
|
{
|
|
@@ -9294,7 +9294,7 @@ Object.freeze({
|
|
|
9294
9294
|
"valueType": "boolean"
|
|
9295
9295
|
}],
|
|
9296
9296
|
"brightness": [{
|
|
9297
|
-
"path": "
|
|
9297
|
+
"path": "level",
|
|
9298
9298
|
"valueType": "number"
|
|
9299
9299
|
}],
|
|
9300
9300
|
"broker": [{
|
|
@@ -9495,7 +9495,7 @@ Object.freeze({
|
|
|
9495
9495
|
"valueType": "number"
|
|
9496
9496
|
},
|
|
9497
9497
|
{
|
|
9498
|
-
"path": "
|
|
9498
|
+
"path": "colorTemperature",
|
|
9499
9499
|
"valueType": "number"
|
|
9500
9500
|
}
|
|
9501
9501
|
],
|
|
@@ -9674,15 +9674,15 @@ Object.freeze({
|
|
|
9674
9674
|
"valueType": "string"
|
|
9675
9675
|
},
|
|
9676
9676
|
{
|
|
9677
|
-
"path": "
|
|
9677
|
+
"path": "remaining",
|
|
9678
9678
|
"valueType": "number"
|
|
9679
9679
|
},
|
|
9680
9680
|
{
|
|
9681
|
-
"path": "
|
|
9681
|
+
"path": "delayedStart",
|
|
9682
9682
|
"valueType": "number"
|
|
9683
9683
|
},
|
|
9684
9684
|
{
|
|
9685
|
-
"path": "
|
|
9685
|
+
"path": "progress",
|
|
9686
9686
|
"valueType": "number"
|
|
9687
9687
|
},
|
|
9688
9688
|
{
|
|
@@ -9796,7 +9796,7 @@ Object.freeze({
|
|
|
9796
9796
|
],
|
|
9797
9797
|
"fan-control": [
|
|
9798
9798
|
{
|
|
9799
|
-
"path": "
|
|
9799
|
+
"path": "speed",
|
|
9800
9800
|
"valueType": "number"
|
|
9801
9801
|
},
|
|
9802
9802
|
{
|
|
@@ -9896,7 +9896,7 @@ Object.freeze({
|
|
|
9896
9896
|
}
|
|
9897
9897
|
],
|
|
9898
9898
|
"humidity-sensor": [{
|
|
9899
|
-
"path": "
|
|
9899
|
+
"path": "humidity",
|
|
9900
9900
|
"valueType": "number"
|
|
9901
9901
|
}],
|
|
9902
9902
|
"image": [{
|
|
@@ -10006,7 +10006,7 @@ Object.freeze({
|
|
|
10006
10006
|
"valueType": "number"
|
|
10007
10007
|
},
|
|
10008
10008
|
{
|
|
10009
|
-
"path": "
|
|
10009
|
+
"path": "progress",
|
|
10010
10010
|
"valueType": "number"
|
|
10011
10011
|
},
|
|
10012
10012
|
{
|
|
@@ -10085,11 +10085,11 @@ Object.freeze({
|
|
|
10085
10085
|
"valueType": "string"
|
|
10086
10086
|
},
|
|
10087
10087
|
{
|
|
10088
|
-
"path": "
|
|
10088
|
+
"path": "position",
|
|
10089
10089
|
"valueType": "number"
|
|
10090
10090
|
},
|
|
10091
10091
|
{
|
|
10092
|
-
"path": "
|
|
10092
|
+
"path": "duration",
|
|
10093
10093
|
"valueType": "number"
|
|
10094
10094
|
},
|
|
10095
10095
|
{
|
|
@@ -10191,11 +10191,11 @@ Object.freeze({
|
|
|
10191
10191
|
]
|
|
10192
10192
|
},
|
|
10193
10193
|
{
|
|
10194
|
-
"path": "
|
|
10194
|
+
"path": "signal",
|
|
10195
10195
|
"valueType": "number"
|
|
10196
10196
|
},
|
|
10197
10197
|
{
|
|
10198
|
-
"path": "
|
|
10198
|
+
"path": "rssi",
|
|
10199
10199
|
"valueType": "number"
|
|
10200
10200
|
},
|
|
10201
10201
|
{
|
|
@@ -10326,23 +10326,23 @@ Object.freeze({
|
|
|
10326
10326
|
],
|
|
10327
10327
|
"power-meter": [
|
|
10328
10328
|
{
|
|
10329
|
-
"path": "
|
|
10329
|
+
"path": "power",
|
|
10330
10330
|
"valueType": "number"
|
|
10331
10331
|
},
|
|
10332
10332
|
{
|
|
10333
|
-
"path": "
|
|
10333
|
+
"path": "energy",
|
|
10334
10334
|
"valueType": "number"
|
|
10335
10335
|
},
|
|
10336
10336
|
{
|
|
10337
|
-
"path": "
|
|
10337
|
+
"path": "voltage",
|
|
10338
10338
|
"valueType": "number"
|
|
10339
10339
|
},
|
|
10340
10340
|
{
|
|
10341
|
-
"path": "
|
|
10341
|
+
"path": "current",
|
|
10342
10342
|
"valueType": "number"
|
|
10343
10343
|
},
|
|
10344
10344
|
{
|
|
10345
|
-
"path": "
|
|
10345
|
+
"path": "apparentPower",
|
|
10346
10346
|
"valueType": "number"
|
|
10347
10347
|
},
|
|
10348
10348
|
{
|
|
@@ -10370,14 +10370,10 @@ Object.freeze({
|
|
|
10370
10370
|
{
|
|
10371
10371
|
"path": "gps.accuracyMeters",
|
|
10372
10372
|
"valueType": "number"
|
|
10373
|
-
},
|
|
10374
|
-
{
|
|
10375
|
-
"path": "batteryPercent",
|
|
10376
|
-
"valueType": "number"
|
|
10377
10373
|
}
|
|
10378
10374
|
],
|
|
10379
10375
|
"pressure-sensor": [{
|
|
10380
|
-
"path": "
|
|
10376
|
+
"path": "pressure",
|
|
10381
10377
|
"valueType": "number"
|
|
10382
10378
|
}],
|
|
10383
10379
|
"privacy-mask": [{
|
|
@@ -10691,7 +10687,7 @@ Object.freeze({
|
|
|
10691
10687
|
"valueType": "boolean"
|
|
10692
10688
|
}],
|
|
10693
10689
|
"temperature-sensor": [{
|
|
10694
|
-
"path": "
|
|
10690
|
+
"path": "temperature",
|
|
10695
10691
|
"valueType": "number"
|
|
10696
10692
|
}],
|
|
10697
10693
|
"update": [
|
|
@@ -10739,7 +10735,7 @@ Object.freeze({
|
|
|
10739
10735
|
"valueType": "string"
|
|
10740
10736
|
},
|
|
10741
10737
|
{
|
|
10742
|
-
"path": "
|
|
10738
|
+
"path": "progress",
|
|
10743
10739
|
"valueType": "number"
|
|
10744
10740
|
},
|
|
10745
10741
|
{
|
|
@@ -11214,7 +11210,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11214
11210
|
return DeviceRole;
|
|
11215
11211
|
}({});
|
|
11216
11212
|
//#endregion
|
|
11217
|
-
//#region ../types/dist/composition-
|
|
11213
|
+
//#region ../types/dist/composition-CZImLpOI.mjs
|
|
11218
11214
|
/**
|
|
11219
11215
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11220
11216
|
*
|
|
@@ -15873,6 +15869,14 @@ var AutomationConditionLeafSchema = object({
|
|
|
15873
15869
|
array(union([string(), number()]))
|
|
15874
15870
|
])
|
|
15875
15871
|
});
|
|
15872
|
+
var AutomationConditionStationaryPresentSchema = object({
|
|
15873
|
+
kind: literal("stationary-present"),
|
|
15874
|
+
deviceId: number().int().nonnegative(),
|
|
15875
|
+
/** Class names; a macro class matches every raw class that maps to it. */
|
|
15876
|
+
classes: array(string().min(1)).min(1).optional(),
|
|
15877
|
+
/** The parked object must be in at least one of these zones. */
|
|
15878
|
+
zones: array(string().min(1)).min(1).optional()
|
|
15879
|
+
});
|
|
15876
15880
|
/**
|
|
15877
15881
|
* The expression leaf, declared as a plain object rather than an intersection
|
|
15878
15882
|
* with {@link ExpressionSourceSchema}: a discriminated union has to be able to
|
|
@@ -15906,7 +15910,8 @@ var AutomationConditionSchema = lazy(() => discriminatedUnion("kind", [
|
|
|
15906
15910
|
child: AutomationConditionSchema
|
|
15907
15911
|
}),
|
|
15908
15912
|
AutomationConditionLeafSchema,
|
|
15909
|
-
AutomationConditionExpressionSchema
|
|
15913
|
+
AutomationConditionExpressionSchema,
|
|
15914
|
+
AutomationConditionStationaryPresentSchema
|
|
15910
15915
|
]));
|
|
15911
15916
|
/**
|
|
15912
15917
|
* What starts a run.
|
|
@@ -15960,6 +15965,17 @@ var AutomationTriggerSchema = discriminatedUnion("kind", [
|
|
|
15960
15965
|
/** Best-so-far confidence the track must reach. */
|
|
15961
15966
|
minScore: number().min(0).max(1).optional()
|
|
15962
15967
|
}),
|
|
15968
|
+
object({
|
|
15969
|
+
kind: literal("stationary"),
|
|
15970
|
+
deviceIds: array(number().int().nonnegative()).min(1),
|
|
15971
|
+
/** Class names; a macro class matches like the detection trigger. */
|
|
15972
|
+
classes: array(string().min(1)).min(1).optional(),
|
|
15973
|
+
/** The parked object must be in at least one of these zones. */
|
|
15974
|
+
zones: array(string().min(1)).min(1).optional(),
|
|
15975
|
+
/** `appeared`: it became parked. `departed`: the registry retired it.
|
|
15976
|
+
* The vocabulary of `PipelineAnalyticsStationaryChanged`. */
|
|
15977
|
+
phase: _enum(["appeared", "departed"])
|
|
15978
|
+
}),
|
|
15963
15979
|
object({
|
|
15964
15980
|
kind: literal("interval"),
|
|
15965
15981
|
minutes: number().int().min(1).max(1440)
|
|
@@ -16169,7 +16185,8 @@ var AutomationConditionTraceNodeSchema = object({
|
|
|
16169
16185
|
"any",
|
|
16170
16186
|
"not",
|
|
16171
16187
|
"condition",
|
|
16172
|
-
"expression"
|
|
16188
|
+
"expression",
|
|
16189
|
+
"stationary-present"
|
|
16173
16190
|
]),
|
|
16174
16191
|
outcome: TraceNodeOutcomeSchema,
|
|
16175
16192
|
reason: string(),
|
|
@@ -18979,7 +18996,7 @@ var CompositionEventPlanSchema = object({
|
|
|
18979
18996
|
stateField: string(),
|
|
18980
18997
|
fieldKey: string()
|
|
18981
18998
|
});
|
|
18982
|
-
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.
|
|
18999
|
+
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
|
|
18983
19000
|
var CompositionProblemSchema = object({
|
|
18984
19001
|
code: _enum([
|
|
18985
19002
|
"reserved-variant",
|
|
@@ -19298,7 +19315,7 @@ var GROUP_TEMPLATES = [
|
|
|
19298
19315
|
summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
|
|
19299
19316
|
role: DeviceRole.TemperatureSensor,
|
|
19300
19317
|
outputCap: "temperature-sensor",
|
|
19301
|
-
outputField: "
|
|
19318
|
+
outputField: "temperature",
|
|
19302
19319
|
quantity: "temperature",
|
|
19303
19320
|
defaultAggregate: "mean",
|
|
19304
19321
|
empty: "null",
|
|
@@ -19309,7 +19326,7 @@ var GROUP_TEMPLATES = [
|
|
|
19309
19326
|
summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19310
19327
|
role: DeviceRole.HumiditySensor,
|
|
19311
19328
|
outputCap: "humidity-sensor",
|
|
19312
|
-
outputField: "
|
|
19329
|
+
outputField: "humidity",
|
|
19313
19330
|
quantity: "humidity",
|
|
19314
19331
|
defaultAggregate: "mean",
|
|
19315
19332
|
empty: "null",
|
|
@@ -19320,7 +19337,7 @@ var GROUP_TEMPLATES = [
|
|
|
19320
19337
|
summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
|
|
19321
19338
|
role: DeviceRole.PressureSensor,
|
|
19322
19339
|
outputCap: "pressure-sensor",
|
|
19323
|
-
outputField: "
|
|
19340
|
+
outputField: "pressure",
|
|
19324
19341
|
quantity: "pressure",
|
|
19325
19342
|
defaultAggregate: "mean",
|
|
19326
19343
|
empty: "null",
|
|
@@ -19331,7 +19348,7 @@ var GROUP_TEMPLATES = [
|
|
|
19331
19348
|
summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
|
|
19332
19349
|
role: DeviceRole.AmbientLightSensor,
|
|
19333
19350
|
outputCap: "ambient-light-sensor",
|
|
19334
|
-
outputField: "
|
|
19351
|
+
outputField: "illuminance",
|
|
19335
19352
|
quantity: "illuminance",
|
|
19336
19353
|
defaultAggregate: "mean",
|
|
19337
19354
|
empty: "null",
|
|
@@ -19342,7 +19359,7 @@ var GROUP_TEMPLATES = [
|
|
|
19342
19359
|
summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
|
|
19343
19360
|
role: DeviceRole.PowerSensor,
|
|
19344
19361
|
outputCap: "power-meter",
|
|
19345
|
-
outputField: "
|
|
19362
|
+
outputField: "power",
|
|
19346
19363
|
quantity: "power",
|
|
19347
19364
|
defaultAggregate: "sum",
|
|
19348
19365
|
empty: "omit",
|
|
@@ -19353,7 +19370,7 @@ var GROUP_TEMPLATES = [
|
|
|
19353
19370
|
summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
|
|
19354
19371
|
role: DeviceRole.EnergySensor,
|
|
19355
19372
|
outputCap: "power-meter",
|
|
19356
|
-
outputField: "
|
|
19373
|
+
outputField: "energy",
|
|
19357
19374
|
quantity: "energy",
|
|
19358
19375
|
defaultAggregate: "sum",
|
|
19359
19376
|
empty: "omit",
|
|
@@ -19364,7 +19381,7 @@ var GROUP_TEMPLATES = [
|
|
|
19364
19381
|
summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19365
19382
|
role: DeviceRole.BatterySensor,
|
|
19366
19383
|
outputCap: "battery",
|
|
19367
|
-
outputField: "
|
|
19384
|
+
outputField: "level",
|
|
19368
19385
|
quantity: "percentage",
|
|
19369
19386
|
defaultAggregate: "mean",
|
|
19370
19387
|
empty: "null",
|
|
@@ -57516,9 +57533,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
57516
57533
|
}), LogStreamEntrySchema, { kind: "subscription" });
|
|
57517
57534
|
object({
|
|
57518
57535
|
/** Carbon dioxide concentration in ppm. */
|
|
57519
|
-
|
|
57536
|
+
co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
|
|
57520
57537
|
/** Total volatile organic compounds in ppb. */
|
|
57521
|
-
|
|
57538
|
+
voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
|
|
57522
57539
|
/** Particulate matter ≤ 2.5 μm in µg/m³. */
|
|
57523
57540
|
pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
|
|
57524
57541
|
/** Particulate matter ≤ 10 μm in µg/m³. */
|
|
@@ -57531,7 +57548,7 @@ object({
|
|
|
57531
57548
|
DeviceType.Sensor;
|
|
57532
57549
|
object({
|
|
57533
57550
|
/** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
|
|
57534
|
-
|
|
57551
|
+
illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
|
|
57535
57552
|
precision: 0,
|
|
57536
57553
|
label: "Illuminance"
|
|
57537
57554
|
})),
|
|
@@ -57759,7 +57776,7 @@ var BatteryStatusSchema = object({
|
|
|
57759
57776
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
57760
57777
|
* declines to band a non-finite reading, which is the correct shape.
|
|
57761
57778
|
*/
|
|
57762
|
-
|
|
57779
|
+
level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
|
|
57763
57780
|
/**
|
|
57764
57781
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
57765
57782
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -57769,7 +57786,7 @@ var BatteryStatusSchema = object({
|
|
|
57769
57786
|
* `'unknown'` is the absence of an answer: the provider has not read the
|
|
57770
57787
|
* power fields yet, or the firmware reported neither. Before it existed,
|
|
57771
57788
|
* two unreadable fields produced `'none'`, and a camera nobody had reached
|
|
57772
|
-
* was drawn "on battery alone" — the same D315 defect `
|
|
57789
|
+
* was drawn "on battery alone" — the same D315 defect `level` closed
|
|
57773
57790
|
* by going nullable. Consumers SKIP it (no charger state published, no
|
|
57774
57791
|
* glyph, no HomeKit ChargingState) rather than coerce it either way.
|
|
57775
57792
|
*/
|
|
@@ -57793,7 +57810,7 @@ var BatteryStatusSchema = object({
|
|
|
57793
57810
|
* that only report charge. A second reading on this cap, not a second
|
|
57794
57811
|
* `numeric-sensor` on the same device.
|
|
57795
57812
|
*/
|
|
57796
|
-
|
|
57813
|
+
voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
57797
57814
|
/**
|
|
57798
57815
|
* Ms epoch of the last time the device PROVED it was reachable — a
|
|
57799
57816
|
* completed firmware round-trip, an observed wake, or an inbound push
|
|
@@ -57827,7 +57844,7 @@ var BatteryStatusSchema = object({
|
|
|
57827
57844
|
/**
|
|
57828
57845
|
* True when the source is a BINARY low-battery indicator (HA
|
|
57829
57846
|
* `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
|
|
57830
|
-
* charge level — `
|
|
57847
|
+
* charge level — `level` is then a coarse stand-in (100 = normal,
|
|
57831
57848
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
57832
57849
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
57833
57850
|
*/
|
|
@@ -57853,19 +57870,19 @@ object({
|
|
|
57853
57870
|
DeviceType.Sensor;
|
|
57854
57871
|
object({
|
|
57855
57872
|
/** Current level as 0..100 inclusive. Firmware-reported. */
|
|
57856
|
-
|
|
57873
|
+
level: number().min(0).max(100).meta(readingMeta("percentage")),
|
|
57857
57874
|
/** Ms epoch of the last operator-driven change. Useful for UI freshness. */
|
|
57858
57875
|
lastChangedAt: number()
|
|
57859
57876
|
});
|
|
57860
57877
|
DeviceType.Light, method(object({
|
|
57861
57878
|
deviceId: number().int().nonnegative(),
|
|
57862
|
-
|
|
57879
|
+
level: number().min(0).max(100)
|
|
57863
57880
|
}), _void(), {
|
|
57864
57881
|
kind: "mutation",
|
|
57865
57882
|
auth: "protected"
|
|
57866
57883
|
}), object({
|
|
57867
57884
|
deviceId: number(),
|
|
57868
|
-
|
|
57885
|
+
level: number().min(0).max(100),
|
|
57869
57886
|
lastChangedAt: number()
|
|
57870
57887
|
});
|
|
57871
57888
|
DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
@@ -58366,11 +58383,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
|
|
|
58366
58383
|
}),
|
|
58367
58384
|
object({
|
|
58368
58385
|
mode: literal("mired"),
|
|
58369
|
-
|
|
58386
|
+
colorTemperature: number().int().min(50).max(1e3)
|
|
58370
58387
|
})
|
|
58371
58388
|
]);
|
|
58372
58389
|
object({
|
|
58373
|
-
/** Active color mode — which of `rgb` / `hsv` / `
|
|
58390
|
+
/** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
|
|
58374
58391
|
* the bulb's current state. */
|
|
58375
58392
|
mode: _enum([
|
|
58376
58393
|
"rgb",
|
|
@@ -58382,7 +58399,7 @@ object({
|
|
|
58382
58399
|
/** Populated when `mode === 'hsv'`. */
|
|
58383
58400
|
hsv: HsvTripletSchema.optional(),
|
|
58384
58401
|
/** Populated when `mode === 'mired'`. */
|
|
58385
|
-
|
|
58402
|
+
colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
|
|
58386
58403
|
/** Ms epoch of the last operator-driven change. */
|
|
58387
58404
|
lastChangedAt: number()
|
|
58388
58405
|
});
|
|
@@ -58401,7 +58418,7 @@ DeviceType.Light, method(object({
|
|
|
58401
58418
|
]),
|
|
58402
58419
|
rgb: RgbTripletSchema.optional(),
|
|
58403
58420
|
hsv: HsvTripletSchema.optional(),
|
|
58404
|
-
|
|
58421
|
+
colorTemperature: number().int().optional(),
|
|
58405
58422
|
lastChangedAt: number()
|
|
58406
58423
|
});
|
|
58407
58424
|
var ConnectionTestOutcomeSchema = discriminatedUnion("outcome", [
|
|
@@ -58827,11 +58844,11 @@ object({
|
|
|
58827
58844
|
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
58828
58845
|
availablePrograms: array(string()),
|
|
58829
58846
|
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
58830
|
-
|
|
58847
|
+
remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
58831
58848
|
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
58832
|
-
|
|
58849
|
+
delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
58833
58850
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
58834
|
-
|
|
58851
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
58835
58852
|
/** True when the door is reported open; null when the door state is not known. */
|
|
58836
58853
|
doorOpen: boolean().nullable(),
|
|
58837
58854
|
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
@@ -59449,7 +59466,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
|
|
|
59449
59466
|
object({
|
|
59450
59467
|
/** Active speed as 0..100 inclusive. Null when the device has no
|
|
59451
59468
|
* speed surface (single-speed fan). */
|
|
59452
|
-
|
|
59469
|
+
speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
59453
59470
|
/** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
|
|
59454
59471
|
* a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
|
|
59455
59472
|
percentageStep: number().positive().optional().meta(readingMeta("percentage")),
|
|
@@ -59469,7 +59486,7 @@ object({
|
|
|
59469
59486
|
});
|
|
59470
59487
|
DeviceType.Fan, method(object({
|
|
59471
59488
|
deviceId: number().int().nonnegative(),
|
|
59472
|
-
|
|
59489
|
+
speed: number().min(0).max(100)
|
|
59473
59490
|
}), _void(), {
|
|
59474
59491
|
kind: "mutation",
|
|
59475
59492
|
auth: "protected"
|
|
@@ -59652,7 +59669,7 @@ DeviceType.Humidifier, method(object({
|
|
|
59652
59669
|
});
|
|
59653
59670
|
object({
|
|
59654
59671
|
/** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
|
|
59655
|
-
|
|
59672
|
+
humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
|
|
59656
59673
|
precision: 0,
|
|
59657
59674
|
label: "Humidity"
|
|
59658
59675
|
})),
|
|
@@ -60095,7 +60112,7 @@ object({
|
|
|
60095
60112
|
batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
60096
60113
|
/** 0..100 mowing-completion percentage of the current task, or null when no
|
|
60097
60114
|
* task is active / progress is unavailable. */
|
|
60098
|
-
|
|
60115
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
60099
60116
|
/** Current device/event code (dynamic — mostly status, sometimes an error),
|
|
60100
60117
|
* or null when unknown. */
|
|
60101
60118
|
currentCode: number().nullable().meta(readingMeta("none")),
|
|
@@ -60585,10 +60602,10 @@ object({
|
|
|
60585
60602
|
currentMedia: MediaInfoSchema.nullable(),
|
|
60586
60603
|
/** Current playback position in ms. Null when not seekable or
|
|
60587
60604
|
* nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
|
|
60588
|
-
|
|
60605
|
+
position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
60589
60606
|
/** Total duration of the current media in ms. Null when unknown
|
|
60590
60607
|
* (live stream) or nothing is playing. */
|
|
60591
|
-
|
|
60608
|
+
duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
60592
60609
|
/** Shuffle toggle. Null when no shuffle surface.
|
|
60593
60610
|
* Pair with `DeviceFeature.MediaPlayerShuffle`. */
|
|
60594
60611
|
shuffle: boolean().nullable(),
|
|
@@ -60615,7 +60632,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
|
|
|
60615
60632
|
auth: "protected"
|
|
60616
60633
|
}), method(object({
|
|
60617
60634
|
deviceId: number().int().nonnegative(),
|
|
60618
|
-
|
|
60635
|
+
position: number().int().nonnegative()
|
|
60619
60636
|
}), _void(), {
|
|
60620
60637
|
kind: "mutation",
|
|
60621
60638
|
auth: "protected"
|
|
@@ -61288,9 +61305,9 @@ var NetworkLinkStatusSchema = object({
|
|
|
61288
61305
|
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
61289
61306
|
* SKIP a null rather than coerce it.
|
|
61290
61307
|
*/
|
|
61291
|
-
|
|
61308
|
+
signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
61292
61309
|
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
61293
|
-
|
|
61310
|
+
rssi: number().optional().meta(readingMeta("signal-level")),
|
|
61294
61311
|
/** Network name of a wireless link, when the firmware reports it. */
|
|
61295
61312
|
ssid: string().optional(),
|
|
61296
61313
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
@@ -62440,16 +62457,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
62440
62457
|
auth: "admin"
|
|
62441
62458
|
});
|
|
62442
62459
|
object({
|
|
62443
|
-
/** Instantaneous power draw
|
|
62444
|
-
|
|
62460
|
+
/** Instantaneous power draw (watts). */
|
|
62461
|
+
power: number().optional().meta(readingMeta("power", { label: "Power" })),
|
|
62445
62462
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
62446
|
-
|
|
62447
|
-
/** Voltage
|
|
62448
|
-
|
|
62463
|
+
energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
|
|
62464
|
+
/** Voltage (volts). */
|
|
62465
|
+
voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
62449
62466
|
/** Current in amperes. */
|
|
62450
|
-
|
|
62467
|
+
current: number().optional().meta(readingMeta("current", { label: "Current" })),
|
|
62451
62468
|
/** Apparent power in volt-amperes. */
|
|
62452
|
-
|
|
62469
|
+
apparentPower: number().optional().meta(readingMeta("apparent-power")),
|
|
62453
62470
|
/** Power factor (0..1) if reported. */
|
|
62454
62471
|
powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
|
|
62455
62472
|
/** Ms epoch when the slice was last updated. */
|
|
@@ -62504,16 +62521,13 @@ object({
|
|
|
62504
62521
|
location: string().nullable(),
|
|
62505
62522
|
/** GPS coordinates when available. Null otherwise. */
|
|
62506
62523
|
gps: GpsLocationSchema.nullable(),
|
|
62507
|
-
/** Optional battery level of the tracking device (0..100). Null
|
|
62508
|
-
* when not reported. */
|
|
62509
|
-
batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
62510
62524
|
/** Ms epoch when the slice was last updated. */
|
|
62511
62525
|
lastChangedAt: number()
|
|
62512
62526
|
});
|
|
62513
62527
|
DeviceType.Presence;
|
|
62514
62528
|
object({
|
|
62515
62529
|
/** Current pressure in hPa. `null` when the sample was refused (D393). */
|
|
62516
|
-
|
|
62530
|
+
pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
|
|
62517
62531
|
/** Ms epoch when the slice was last updated. */
|
|
62518
62532
|
lastFetchedAt: number()
|
|
62519
62533
|
});
|
|
@@ -65516,7 +65530,7 @@ object({
|
|
|
65516
65530
|
DeviceType.Sensor;
|
|
65517
65531
|
object({
|
|
65518
65532
|
/** Current temperature in Celsius. `null` when the sample was refused (D393). */
|
|
65519
|
-
|
|
65533
|
+
temperature: number().nullable().meta(readingMeta("temperature", {
|
|
65520
65534
|
precision: 1,
|
|
65521
65535
|
label: "Temperature"
|
|
65522
65536
|
})),
|
|
@@ -65780,7 +65794,7 @@ object({
|
|
|
65780
65794
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
65781
65795
|
availableFanSpeeds: array(string()),
|
|
65782
65796
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
65783
|
-
|
|
65797
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65784
65798
|
/** Current error code (0 / null = no error). */
|
|
65785
65799
|
errorCode: number().nullable().meta(readingMeta("none")),
|
|
65786
65800
|
/** Human label for {@link errorCode}, or null when none / undecodable. */
|
|
@@ -76848,7 +76862,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76848
76862
|
label: t("Full brightness", "Luminosità massima"),
|
|
76849
76863
|
phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
|
|
76850
76864
|
icon: "sun",
|
|
76851
|
-
args: {
|
|
76865
|
+
args: { level: 100 }
|
|
76852
76866
|
},
|
|
76853
76867
|
{
|
|
76854
76868
|
id: "brightness.half",
|
|
@@ -76856,7 +76870,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76856
76870
|
label: t("Half brightness", "Luminosità a metà"),
|
|
76857
76871
|
phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
|
|
76858
76872
|
icon: "sun-dim",
|
|
76859
|
-
args: {
|
|
76873
|
+
args: { level: 50 }
|
|
76860
76874
|
},
|
|
76861
76875
|
{
|
|
76862
76876
|
id: "brightness.off",
|
|
@@ -76864,16 +76878,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76864
76878
|
label: t("Brightness off", "Luminosità a zero"),
|
|
76865
76879
|
phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
|
|
76866
76880
|
icon: "lightbulb-off",
|
|
76867
|
-
args: {
|
|
76881
|
+
args: { level: 0 }
|
|
76868
76882
|
},
|
|
76869
76883
|
{
|
|
76870
76884
|
id: "brightness.set",
|
|
76871
76885
|
method: "setBrightness",
|
|
76872
76886
|
label: t("Set brightness", "Imposta la luminosità"),
|
|
76873
|
-
phrase: t("Set the brightness of {device} to {
|
|
76887
|
+
phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
|
|
76874
76888
|
icon: "sun-medium",
|
|
76875
76889
|
openArgs: [{
|
|
76876
|
-
key: "
|
|
76890
|
+
key: "level",
|
|
76877
76891
|
label: PERCENT,
|
|
76878
76892
|
offer: {
|
|
76879
76893
|
kind: "number",
|
|
@@ -76887,13 +76901,13 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76887
76901
|
],
|
|
76888
76902
|
state: [{
|
|
76889
76903
|
kind: "numeric",
|
|
76890
|
-
field: "
|
|
76904
|
+
field: "level",
|
|
76891
76905
|
quantity: t("the brightness", "la luminosità"),
|
|
76892
76906
|
label: t("Brightness", "Luminosità"),
|
|
76893
76907
|
unit: "%",
|
|
76894
76908
|
icon: "sun"
|
|
76895
76909
|
}],
|
|
76896
|
-
events: { onBrightnessChanged: { notOperatorFacing: "the `
|
|
76910
|
+
events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
|
|
76897
76911
|
},
|
|
76898
76912
|
color: {
|
|
76899
76913
|
scope: "device",
|
|
@@ -76907,7 +76921,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76907
76921
|
icon: "sun",
|
|
76908
76922
|
args: { color: {
|
|
76909
76923
|
mode: "mired",
|
|
76910
|
-
|
|
76924
|
+
colorTemperature: 370
|
|
76911
76925
|
} }
|
|
76912
76926
|
},
|
|
76913
76927
|
{
|
|
@@ -76918,7 +76932,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76918
76932
|
icon: "snowflake",
|
|
76919
76933
|
args: { color: {
|
|
76920
76934
|
mode: "mired",
|
|
76921
|
-
|
|
76935
|
+
colorTemperature: 200
|
|
76922
76936
|
} }
|
|
76923
76937
|
},
|
|
76924
76938
|
{
|
|
@@ -77532,7 +77546,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77532
77546
|
label: t("Fan off", "Ventilatore spento"),
|
|
77533
77547
|
phrase: t("Stop {device}", "Ferma {device}"),
|
|
77534
77548
|
icon: "power-off",
|
|
77535
|
-
args: {
|
|
77549
|
+
args: { speed: 0 }
|
|
77536
77550
|
},
|
|
77537
77551
|
{
|
|
77538
77552
|
id: "fan.full",
|
|
@@ -77540,16 +77554,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77540
77554
|
label: t("Fan full", "Ventilatore al massimo"),
|
|
77541
77555
|
phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
|
|
77542
77556
|
icon: "fan",
|
|
77543
|
-
args: {
|
|
77557
|
+
args: { speed: 100 }
|
|
77544
77558
|
},
|
|
77545
77559
|
{
|
|
77546
77560
|
id: "fan.speed",
|
|
77547
77561
|
method: "setPercentage",
|
|
77548
77562
|
label: t("Set speed", "Imposta la velocità"),
|
|
77549
|
-
phrase: t("Set the speed of {device} to {
|
|
77563
|
+
phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
|
|
77550
77564
|
icon: "fan",
|
|
77551
77565
|
openArgs: [{
|
|
77552
|
-
key: "
|
|
77566
|
+
key: "speed",
|
|
77553
77567
|
label: t("Speed", "Velocità"),
|
|
77554
77568
|
offer: {
|
|
77555
77569
|
kind: "number",
|
|
@@ -77611,7 +77625,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77611
77625
|
],
|
|
77612
77626
|
state: [{
|
|
77613
77627
|
kind: "numeric",
|
|
77614
|
-
field: "
|
|
77628
|
+
field: "speed",
|
|
77615
77629
|
quantity: t("the speed", "la velocità"),
|
|
77616
77630
|
label: t("Speed", "Velocità"),
|
|
77617
77631
|
unit: "%",
|
|
@@ -78409,7 +78423,7 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78409
78423
|
},
|
|
78410
78424
|
{
|
|
78411
78425
|
kind: "numeric",
|
|
78412
|
-
field: "
|
|
78426
|
+
field: "progress",
|
|
78413
78427
|
quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
|
|
78414
78428
|
label: t("Progress", "Avanzamento"),
|
|
78415
78429
|
unit: "%",
|
|
@@ -78767,10 +78781,10 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78767
78781
|
id: "media.seek",
|
|
78768
78782
|
method: "seek",
|
|
78769
78783
|
label: t("Seek", "Vai al punto"),
|
|
78770
|
-
phrase: t("Move {device} to {
|
|
78784
|
+
phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
|
|
78771
78785
|
icon: "fast-forward",
|
|
78772
78786
|
openArgs: [{
|
|
78773
|
-
key: "
|
|
78787
|
+
key: "position",
|
|
78774
78788
|
label: t("Position", "Posizione"),
|
|
78775
78789
|
offer: {
|
|
78776
78790
|
kind: "number",
|
|
@@ -79819,7 +79833,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79819
79833
|
state: [
|
|
79820
79834
|
{
|
|
79821
79835
|
kind: "numeric",
|
|
79822
|
-
field: "
|
|
79836
|
+
field: "co2",
|
|
79823
79837
|
quantity: t("the CO₂", "la CO₂"),
|
|
79824
79838
|
label: t("CO₂", "CO₂"),
|
|
79825
79839
|
unit: "ppm",
|
|
@@ -79827,7 +79841,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79827
79841
|
},
|
|
79828
79842
|
{
|
|
79829
79843
|
kind: "numeric",
|
|
79830
|
-
field: "
|
|
79844
|
+
field: "voc",
|
|
79831
79845
|
quantity: t("the VOC level", "il livello di COV"),
|
|
79832
79846
|
label: t("VOC", "COV"),
|
|
79833
79847
|
unit: "ppb",
|
|
@@ -79863,7 +79877,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79863
79877
|
noun: t("Light level", "Luminosità ambiente"),
|
|
79864
79878
|
state: [{
|
|
79865
79879
|
kind: "numeric",
|
|
79866
|
-
field: "
|
|
79880
|
+
field: "illuminance",
|
|
79867
79881
|
quantity: t("the light level", "la luminosità"),
|
|
79868
79882
|
label: t("Illuminance", "Illuminamento"),
|
|
79869
79883
|
unit: "lx",
|
|
@@ -80066,7 +80080,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80066
80080
|
noun: t("Humidity", "Umidità"),
|
|
80067
80081
|
state: [{
|
|
80068
80082
|
kind: "numeric",
|
|
80069
|
-
field: "
|
|
80083
|
+
field: "humidity",
|
|
80070
80084
|
quantity: t("the humidity", "l’umidità"),
|
|
80071
80085
|
label: t("Humidity", "Umidità"),
|
|
80072
80086
|
unit: "%",
|
|
@@ -80114,7 +80128,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80114
80128
|
state: [
|
|
80115
80129
|
{
|
|
80116
80130
|
kind: "numeric",
|
|
80117
|
-
field: "
|
|
80131
|
+
field: "power",
|
|
80118
80132
|
quantity: t("the power draw", "il consumo"),
|
|
80119
80133
|
label: t("Power", "Potenza"),
|
|
80120
80134
|
unit: "W",
|
|
@@ -80122,7 +80136,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80122
80136
|
},
|
|
80123
80137
|
{
|
|
80124
80138
|
kind: "numeric",
|
|
80125
|
-
field: "
|
|
80139
|
+
field: "energy",
|
|
80126
80140
|
quantity: t("the energy used", "l’energia consumata"),
|
|
80127
80141
|
label: t("Energy", "Energia"),
|
|
80128
80142
|
unit: "kWh",
|
|
@@ -80130,7 +80144,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80130
80144
|
},
|
|
80131
80145
|
{
|
|
80132
80146
|
kind: "numeric",
|
|
80133
|
-
field: "
|
|
80147
|
+
field: "voltage",
|
|
80134
80148
|
quantity: t("the voltage", "la tensione"),
|
|
80135
80149
|
label: t("Voltage", "Tensione"),
|
|
80136
80150
|
unit: "V",
|
|
@@ -80138,7 +80152,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80138
80152
|
},
|
|
80139
80153
|
{
|
|
80140
80154
|
kind: "numeric",
|
|
80141
|
-
field: "
|
|
80155
|
+
field: "current",
|
|
80142
80156
|
quantity: t("the current", "la corrente"),
|
|
80143
80157
|
label: t("Current", "Corrente"),
|
|
80144
80158
|
unit: "A",
|
|
@@ -80155,13 +80169,6 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80155
80169
|
label: t("Where", "Posizione"),
|
|
80156
80170
|
phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
|
|
80157
80171
|
icon: "map-pin"
|
|
80158
|
-
}, {
|
|
80159
|
-
kind: "numeric",
|
|
80160
|
-
field: "batteryPercent",
|
|
80161
|
-
quantity: t("the phone battery", "la batteria del telefono"),
|
|
80162
|
-
label: t("Battery", "Batteria"),
|
|
80163
|
-
unit: "%",
|
|
80164
|
-
icon: "battery"
|
|
80165
80172
|
}]
|
|
80166
80173
|
},
|
|
80167
80174
|
"pressure-sensor": {
|
|
@@ -80169,7 +80176,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80169
80176
|
noun: t("Pressure", "Pressione"),
|
|
80170
80177
|
state: [{
|
|
80171
80178
|
kind: "numeric",
|
|
80172
|
-
field: "
|
|
80179
|
+
field: "pressure",
|
|
80173
80180
|
quantity: t("the pressure", "la pressione"),
|
|
80174
80181
|
label: t("Pressure", "Pressione"),
|
|
80175
80182
|
unit: "hPa",
|
|
@@ -80205,7 +80212,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80205
80212
|
noun: t("Temperature", "Temperatura"),
|
|
80206
80213
|
state: [{
|
|
80207
80214
|
kind: "numeric",
|
|
80208
|
-
field: "
|
|
80215
|
+
field: "temperature",
|
|
80209
80216
|
quantity: t("the temperature", "la temperatura"),
|
|
80210
80217
|
label: t("Temperature", "Temperatura"),
|
|
80211
80218
|
unit: "°C",
|
|
@@ -80276,7 +80283,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80276
80283
|
state: [
|
|
80277
80284
|
{
|
|
80278
80285
|
kind: "numeric",
|
|
80279
|
-
field: "
|
|
80286
|
+
field: "level",
|
|
80280
80287
|
quantity: t("the battery level", "il livello della batteria"),
|
|
80281
80288
|
label: t("Battery", "Batteria"),
|
|
80282
80289
|
unit: "%",
|
|
@@ -80318,7 +80325,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80318
80325
|
icon: "battery-charging"
|
|
80319
80326
|
}
|
|
80320
80327
|
],
|
|
80321
|
-
events: { onStatusChanged: { notOperatorFacing: "the
|
|
80328
|
+
events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
|
|
80322
80329
|
extraEvents: [{
|
|
80323
80330
|
category: EventCategory.DeviceAwake,
|
|
80324
80331
|
label: t("Woke up", "Risvegliato"),
|
|
@@ -80336,7 +80343,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80336
80343
|
noun: t("Network link", "Collegamento di rete"),
|
|
80337
80344
|
state: [{
|
|
80338
80345
|
kind: "numeric",
|
|
80339
|
-
field: "
|
|
80346
|
+
field: "signal",
|
|
80340
80347
|
quantity: t("the signal strength", "l’intensità del segnale"),
|
|
80341
80348
|
label: t("Signal", "Segnale"),
|
|
80342
80349
|
unit: "%",
|