@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
|
@@ -394,7 +394,7 @@ function buildPluginCatalogRegistryDescriptor(entry) {
|
|
|
394
394
|
};
|
|
395
395
|
}
|
|
396
396
|
//#endregion
|
|
397
|
-
//#region ../types/dist/event-category-
|
|
397
|
+
//#region ../types/dist/event-category-DmZDPDf_.mjs
|
|
398
398
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
399
399
|
EventCategory["SystemBoot"] = "system.boot";
|
|
400
400
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -1021,7 +1021,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
1021
1021
|
* (a track was promoted to a stationary-registry entry) or departs (the
|
|
1022
1022
|
* object moved / was removed). Telemetry (D8): lossy, drives a UI refresh of
|
|
1023
1023
|
* the dedicated "Stationary" section — never the live event feed. Payload:
|
|
1024
|
-
* `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp }`.
|
|
1024
|
+
* `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp, observedAt, zones }`.
|
|
1025
1025
|
*/
|
|
1026
1026
|
EventCategory["PipelineAnalyticsStationaryChanged"] = "pipeline-analytics.stationary-changed";
|
|
1027
1027
|
/**
|
|
@@ -5842,7 +5842,7 @@ var ZodIssueCode = {
|
|
|
5842
5842
|
var ZodFirstPartyTypeKind;
|
|
5843
5843
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5844
5844
|
//#endregion
|
|
5845
|
-
//#region ../types/dist/sleep-
|
|
5845
|
+
//#region ../types/dist/sleep-Crlmu_tO.mjs
|
|
5846
5846
|
/**
|
|
5847
5847
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5848
5848
|
* window to float samples (D455).
|
|
@@ -9162,11 +9162,11 @@ var CAP_NAMES = Object.freeze([
|
|
|
9162
9162
|
Object.freeze({
|
|
9163
9163
|
"air-quality-sensor": [
|
|
9164
9164
|
{
|
|
9165
|
-
"path": "
|
|
9165
|
+
"path": "co2",
|
|
9166
9166
|
"valueType": "number"
|
|
9167
9167
|
},
|
|
9168
9168
|
{
|
|
9169
|
-
"path": "
|
|
9169
|
+
"path": "voc",
|
|
9170
9170
|
"valueType": "number"
|
|
9171
9171
|
},
|
|
9172
9172
|
{
|
|
@@ -9216,7 +9216,7 @@ Object.freeze({
|
|
|
9216
9216
|
}
|
|
9217
9217
|
],
|
|
9218
9218
|
"ambient-light-sensor": [{
|
|
9219
|
-
"path": "
|
|
9219
|
+
"path": "illuminance",
|
|
9220
9220
|
"valueType": "number"
|
|
9221
9221
|
}],
|
|
9222
9222
|
"audio-metrics": [
|
|
@@ -9277,7 +9277,7 @@ Object.freeze({
|
|
|
9277
9277
|
],
|
|
9278
9278
|
"battery": [
|
|
9279
9279
|
{
|
|
9280
|
-
"path": "
|
|
9280
|
+
"path": "level",
|
|
9281
9281
|
"valueType": "number"
|
|
9282
9282
|
},
|
|
9283
9283
|
{
|
|
@@ -9299,7 +9299,7 @@ Object.freeze({
|
|
|
9299
9299
|
"valueType": "number"
|
|
9300
9300
|
},
|
|
9301
9301
|
{
|
|
9302
|
-
"path": "
|
|
9302
|
+
"path": "voltage",
|
|
9303
9303
|
"valueType": "number"
|
|
9304
9304
|
},
|
|
9305
9305
|
{
|
|
@@ -9320,7 +9320,7 @@ Object.freeze({
|
|
|
9320
9320
|
"valueType": "boolean"
|
|
9321
9321
|
}],
|
|
9322
9322
|
"brightness": [{
|
|
9323
|
-
"path": "
|
|
9323
|
+
"path": "level",
|
|
9324
9324
|
"valueType": "number"
|
|
9325
9325
|
}],
|
|
9326
9326
|
"broker": [{
|
|
@@ -9521,7 +9521,7 @@ Object.freeze({
|
|
|
9521
9521
|
"valueType": "number"
|
|
9522
9522
|
},
|
|
9523
9523
|
{
|
|
9524
|
-
"path": "
|
|
9524
|
+
"path": "colorTemperature",
|
|
9525
9525
|
"valueType": "number"
|
|
9526
9526
|
}
|
|
9527
9527
|
],
|
|
@@ -9700,15 +9700,15 @@ Object.freeze({
|
|
|
9700
9700
|
"valueType": "string"
|
|
9701
9701
|
},
|
|
9702
9702
|
{
|
|
9703
|
-
"path": "
|
|
9703
|
+
"path": "remaining",
|
|
9704
9704
|
"valueType": "number"
|
|
9705
9705
|
},
|
|
9706
9706
|
{
|
|
9707
|
-
"path": "
|
|
9707
|
+
"path": "delayedStart",
|
|
9708
9708
|
"valueType": "number"
|
|
9709
9709
|
},
|
|
9710
9710
|
{
|
|
9711
|
-
"path": "
|
|
9711
|
+
"path": "progress",
|
|
9712
9712
|
"valueType": "number"
|
|
9713
9713
|
},
|
|
9714
9714
|
{
|
|
@@ -9822,7 +9822,7 @@ Object.freeze({
|
|
|
9822
9822
|
],
|
|
9823
9823
|
"fan-control": [
|
|
9824
9824
|
{
|
|
9825
|
-
"path": "
|
|
9825
|
+
"path": "speed",
|
|
9826
9826
|
"valueType": "number"
|
|
9827
9827
|
},
|
|
9828
9828
|
{
|
|
@@ -9922,7 +9922,7 @@ Object.freeze({
|
|
|
9922
9922
|
}
|
|
9923
9923
|
],
|
|
9924
9924
|
"humidity-sensor": [{
|
|
9925
|
-
"path": "
|
|
9925
|
+
"path": "humidity",
|
|
9926
9926
|
"valueType": "number"
|
|
9927
9927
|
}],
|
|
9928
9928
|
"image": [{
|
|
@@ -10032,7 +10032,7 @@ Object.freeze({
|
|
|
10032
10032
|
"valueType": "number"
|
|
10033
10033
|
},
|
|
10034
10034
|
{
|
|
10035
|
-
"path": "
|
|
10035
|
+
"path": "progress",
|
|
10036
10036
|
"valueType": "number"
|
|
10037
10037
|
},
|
|
10038
10038
|
{
|
|
@@ -10111,11 +10111,11 @@ Object.freeze({
|
|
|
10111
10111
|
"valueType": "string"
|
|
10112
10112
|
},
|
|
10113
10113
|
{
|
|
10114
|
-
"path": "
|
|
10114
|
+
"path": "position",
|
|
10115
10115
|
"valueType": "number"
|
|
10116
10116
|
},
|
|
10117
10117
|
{
|
|
10118
|
-
"path": "
|
|
10118
|
+
"path": "duration",
|
|
10119
10119
|
"valueType": "number"
|
|
10120
10120
|
},
|
|
10121
10121
|
{
|
|
@@ -10217,11 +10217,11 @@ Object.freeze({
|
|
|
10217
10217
|
]
|
|
10218
10218
|
},
|
|
10219
10219
|
{
|
|
10220
|
-
"path": "
|
|
10220
|
+
"path": "signal",
|
|
10221
10221
|
"valueType": "number"
|
|
10222
10222
|
},
|
|
10223
10223
|
{
|
|
10224
|
-
"path": "
|
|
10224
|
+
"path": "rssi",
|
|
10225
10225
|
"valueType": "number"
|
|
10226
10226
|
},
|
|
10227
10227
|
{
|
|
@@ -10352,23 +10352,23 @@ Object.freeze({
|
|
|
10352
10352
|
],
|
|
10353
10353
|
"power-meter": [
|
|
10354
10354
|
{
|
|
10355
|
-
"path": "
|
|
10355
|
+
"path": "power",
|
|
10356
10356
|
"valueType": "number"
|
|
10357
10357
|
},
|
|
10358
10358
|
{
|
|
10359
|
-
"path": "
|
|
10359
|
+
"path": "energy",
|
|
10360
10360
|
"valueType": "number"
|
|
10361
10361
|
},
|
|
10362
10362
|
{
|
|
10363
|
-
"path": "
|
|
10363
|
+
"path": "voltage",
|
|
10364
10364
|
"valueType": "number"
|
|
10365
10365
|
},
|
|
10366
10366
|
{
|
|
10367
|
-
"path": "
|
|
10367
|
+
"path": "current",
|
|
10368
10368
|
"valueType": "number"
|
|
10369
10369
|
},
|
|
10370
10370
|
{
|
|
10371
|
-
"path": "
|
|
10371
|
+
"path": "apparentPower",
|
|
10372
10372
|
"valueType": "number"
|
|
10373
10373
|
},
|
|
10374
10374
|
{
|
|
@@ -10396,14 +10396,10 @@ Object.freeze({
|
|
|
10396
10396
|
{
|
|
10397
10397
|
"path": "gps.accuracyMeters",
|
|
10398
10398
|
"valueType": "number"
|
|
10399
|
-
},
|
|
10400
|
-
{
|
|
10401
|
-
"path": "batteryPercent",
|
|
10402
|
-
"valueType": "number"
|
|
10403
10399
|
}
|
|
10404
10400
|
],
|
|
10405
10401
|
"pressure-sensor": [{
|
|
10406
|
-
"path": "
|
|
10402
|
+
"path": "pressure",
|
|
10407
10403
|
"valueType": "number"
|
|
10408
10404
|
}],
|
|
10409
10405
|
"privacy-mask": [{
|
|
@@ -10717,7 +10713,7 @@ Object.freeze({
|
|
|
10717
10713
|
"valueType": "boolean"
|
|
10718
10714
|
}],
|
|
10719
10715
|
"temperature-sensor": [{
|
|
10720
|
-
"path": "
|
|
10716
|
+
"path": "temperature",
|
|
10721
10717
|
"valueType": "number"
|
|
10722
10718
|
}],
|
|
10723
10719
|
"update": [
|
|
@@ -10765,7 +10761,7 @@ Object.freeze({
|
|
|
10765
10761
|
"valueType": "string"
|
|
10766
10762
|
},
|
|
10767
10763
|
{
|
|
10768
|
-
"path": "
|
|
10764
|
+
"path": "progress",
|
|
10769
10765
|
"valueType": "number"
|
|
10770
10766
|
},
|
|
10771
10767
|
{
|
|
@@ -11240,7 +11236,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11240
11236
|
return DeviceRole;
|
|
11241
11237
|
}({});
|
|
11242
11238
|
//#endregion
|
|
11243
|
-
//#region ../types/dist/composition-
|
|
11239
|
+
//#region ../types/dist/composition-CZImLpOI.mjs
|
|
11244
11240
|
/**
|
|
11245
11241
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11246
11242
|
*
|
|
@@ -15899,6 +15895,14 @@ var AutomationConditionLeafSchema = object({
|
|
|
15899
15895
|
array(union([string(), number()]))
|
|
15900
15896
|
])
|
|
15901
15897
|
});
|
|
15898
|
+
var AutomationConditionStationaryPresentSchema = object({
|
|
15899
|
+
kind: literal("stationary-present"),
|
|
15900
|
+
deviceId: number().int().nonnegative(),
|
|
15901
|
+
/** Class names; a macro class matches every raw class that maps to it. */
|
|
15902
|
+
classes: array(string().min(1)).min(1).optional(),
|
|
15903
|
+
/** The parked object must be in at least one of these zones. */
|
|
15904
|
+
zones: array(string().min(1)).min(1).optional()
|
|
15905
|
+
});
|
|
15902
15906
|
/**
|
|
15903
15907
|
* The expression leaf, declared as a plain object rather than an intersection
|
|
15904
15908
|
* with {@link ExpressionSourceSchema}: a discriminated union has to be able to
|
|
@@ -15932,7 +15936,8 @@ var AutomationConditionSchema = lazy(() => discriminatedUnion("kind", [
|
|
|
15932
15936
|
child: AutomationConditionSchema
|
|
15933
15937
|
}),
|
|
15934
15938
|
AutomationConditionLeafSchema,
|
|
15935
|
-
AutomationConditionExpressionSchema
|
|
15939
|
+
AutomationConditionExpressionSchema,
|
|
15940
|
+
AutomationConditionStationaryPresentSchema
|
|
15936
15941
|
]));
|
|
15937
15942
|
/**
|
|
15938
15943
|
* What starts a run.
|
|
@@ -15986,6 +15991,17 @@ var AutomationTriggerSchema = discriminatedUnion("kind", [
|
|
|
15986
15991
|
/** Best-so-far confidence the track must reach. */
|
|
15987
15992
|
minScore: number().min(0).max(1).optional()
|
|
15988
15993
|
}),
|
|
15994
|
+
object({
|
|
15995
|
+
kind: literal("stationary"),
|
|
15996
|
+
deviceIds: array(number().int().nonnegative()).min(1),
|
|
15997
|
+
/** Class names; a macro class matches like the detection trigger. */
|
|
15998
|
+
classes: array(string().min(1)).min(1).optional(),
|
|
15999
|
+
/** The parked object must be in at least one of these zones. */
|
|
16000
|
+
zones: array(string().min(1)).min(1).optional(),
|
|
16001
|
+
/** `appeared`: it became parked. `departed`: the registry retired it.
|
|
16002
|
+
* The vocabulary of `PipelineAnalyticsStationaryChanged`. */
|
|
16003
|
+
phase: _enum(["appeared", "departed"])
|
|
16004
|
+
}),
|
|
15989
16005
|
object({
|
|
15990
16006
|
kind: literal("interval"),
|
|
15991
16007
|
minutes: number().int().min(1).max(1440)
|
|
@@ -16195,7 +16211,8 @@ var AutomationConditionTraceNodeSchema = object({
|
|
|
16195
16211
|
"any",
|
|
16196
16212
|
"not",
|
|
16197
16213
|
"condition",
|
|
16198
|
-
"expression"
|
|
16214
|
+
"expression",
|
|
16215
|
+
"stationary-present"
|
|
16199
16216
|
]),
|
|
16200
16217
|
outcome: TraceNodeOutcomeSchema,
|
|
16201
16218
|
reason: string(),
|
|
@@ -19005,7 +19022,7 @@ var CompositionEventPlanSchema = object({
|
|
|
19005
19022
|
stateField: string(),
|
|
19006
19023
|
fieldKey: string()
|
|
19007
19024
|
});
|
|
19008
|
-
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.
|
|
19025
|
+
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
|
|
19009
19026
|
var CompositionProblemSchema = object({
|
|
19010
19027
|
code: _enum([
|
|
19011
19028
|
"reserved-variant",
|
|
@@ -19324,7 +19341,7 @@ var GROUP_TEMPLATES = [
|
|
|
19324
19341
|
summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
|
|
19325
19342
|
role: DeviceRole.TemperatureSensor,
|
|
19326
19343
|
outputCap: "temperature-sensor",
|
|
19327
|
-
outputField: "
|
|
19344
|
+
outputField: "temperature",
|
|
19328
19345
|
quantity: "temperature",
|
|
19329
19346
|
defaultAggregate: "mean",
|
|
19330
19347
|
empty: "null",
|
|
@@ -19335,7 +19352,7 @@ var GROUP_TEMPLATES = [
|
|
|
19335
19352
|
summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19336
19353
|
role: DeviceRole.HumiditySensor,
|
|
19337
19354
|
outputCap: "humidity-sensor",
|
|
19338
|
-
outputField: "
|
|
19355
|
+
outputField: "humidity",
|
|
19339
19356
|
quantity: "humidity",
|
|
19340
19357
|
defaultAggregate: "mean",
|
|
19341
19358
|
empty: "null",
|
|
@@ -19346,7 +19363,7 @@ var GROUP_TEMPLATES = [
|
|
|
19346
19363
|
summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
|
|
19347
19364
|
role: DeviceRole.PressureSensor,
|
|
19348
19365
|
outputCap: "pressure-sensor",
|
|
19349
|
-
outputField: "
|
|
19366
|
+
outputField: "pressure",
|
|
19350
19367
|
quantity: "pressure",
|
|
19351
19368
|
defaultAggregate: "mean",
|
|
19352
19369
|
empty: "null",
|
|
@@ -19357,7 +19374,7 @@ var GROUP_TEMPLATES = [
|
|
|
19357
19374
|
summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
|
|
19358
19375
|
role: DeviceRole.AmbientLightSensor,
|
|
19359
19376
|
outputCap: "ambient-light-sensor",
|
|
19360
|
-
outputField: "
|
|
19377
|
+
outputField: "illuminance",
|
|
19361
19378
|
quantity: "illuminance",
|
|
19362
19379
|
defaultAggregate: "mean",
|
|
19363
19380
|
empty: "null",
|
|
@@ -19368,7 +19385,7 @@ var GROUP_TEMPLATES = [
|
|
|
19368
19385
|
summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
|
|
19369
19386
|
role: DeviceRole.PowerSensor,
|
|
19370
19387
|
outputCap: "power-meter",
|
|
19371
|
-
outputField: "
|
|
19388
|
+
outputField: "power",
|
|
19372
19389
|
quantity: "power",
|
|
19373
19390
|
defaultAggregate: "sum",
|
|
19374
19391
|
empty: "omit",
|
|
@@ -19379,7 +19396,7 @@ var GROUP_TEMPLATES = [
|
|
|
19379
19396
|
summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
|
|
19380
19397
|
role: DeviceRole.EnergySensor,
|
|
19381
19398
|
outputCap: "power-meter",
|
|
19382
|
-
outputField: "
|
|
19399
|
+
outputField: "energy",
|
|
19383
19400
|
quantity: "energy",
|
|
19384
19401
|
defaultAggregate: "sum",
|
|
19385
19402
|
empty: "omit",
|
|
@@ -19390,7 +19407,7 @@ var GROUP_TEMPLATES = [
|
|
|
19390
19407
|
summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19391
19408
|
role: DeviceRole.BatterySensor,
|
|
19392
19409
|
outputCap: "battery",
|
|
19393
|
-
outputField: "
|
|
19410
|
+
outputField: "level",
|
|
19394
19411
|
quantity: "percentage",
|
|
19395
19412
|
defaultAggregate: "mean",
|
|
19396
19413
|
empty: "null",
|
|
@@ -57542,9 +57559,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
57542
57559
|
}), LogStreamEntrySchema, { kind: "subscription" });
|
|
57543
57560
|
object({
|
|
57544
57561
|
/** Carbon dioxide concentration in ppm. */
|
|
57545
|
-
|
|
57562
|
+
co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
|
|
57546
57563
|
/** Total volatile organic compounds in ppb. */
|
|
57547
|
-
|
|
57564
|
+
voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
|
|
57548
57565
|
/** Particulate matter ≤ 2.5 μm in µg/m³. */
|
|
57549
57566
|
pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
|
|
57550
57567
|
/** Particulate matter ≤ 10 μm in µg/m³. */
|
|
@@ -57557,7 +57574,7 @@ object({
|
|
|
57557
57574
|
DeviceType.Sensor;
|
|
57558
57575
|
object({
|
|
57559
57576
|
/** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
|
|
57560
|
-
|
|
57577
|
+
illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
|
|
57561
57578
|
precision: 0,
|
|
57562
57579
|
label: "Illuminance"
|
|
57563
57580
|
})),
|
|
@@ -57785,7 +57802,7 @@ var BatteryStatusSchema = object({
|
|
|
57785
57802
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
57786
57803
|
* declines to band a non-finite reading, which is the correct shape.
|
|
57787
57804
|
*/
|
|
57788
|
-
|
|
57805
|
+
level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
|
|
57789
57806
|
/**
|
|
57790
57807
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
57791
57808
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -57795,7 +57812,7 @@ var BatteryStatusSchema = object({
|
|
|
57795
57812
|
* `'unknown'` is the absence of an answer: the provider has not read the
|
|
57796
57813
|
* power fields yet, or the firmware reported neither. Before it existed,
|
|
57797
57814
|
* two unreadable fields produced `'none'`, and a camera nobody had reached
|
|
57798
|
-
* was drawn "on battery alone" — the same D315 defect `
|
|
57815
|
+
* was drawn "on battery alone" — the same D315 defect `level` closed
|
|
57799
57816
|
* by going nullable. Consumers SKIP it (no charger state published, no
|
|
57800
57817
|
* glyph, no HomeKit ChargingState) rather than coerce it either way.
|
|
57801
57818
|
*/
|
|
@@ -57819,7 +57836,7 @@ var BatteryStatusSchema = object({
|
|
|
57819
57836
|
* that only report charge. A second reading on this cap, not a second
|
|
57820
57837
|
* `numeric-sensor` on the same device.
|
|
57821
57838
|
*/
|
|
57822
|
-
|
|
57839
|
+
voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
57823
57840
|
/**
|
|
57824
57841
|
* Ms epoch of the last time the device PROVED it was reachable — a
|
|
57825
57842
|
* completed firmware round-trip, an observed wake, or an inbound push
|
|
@@ -57853,7 +57870,7 @@ var BatteryStatusSchema = object({
|
|
|
57853
57870
|
/**
|
|
57854
57871
|
* True when the source is a BINARY low-battery indicator (HA
|
|
57855
57872
|
* `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
|
|
57856
|
-
* charge level — `
|
|
57873
|
+
* charge level — `level` is then a coarse stand-in (100 = normal,
|
|
57857
57874
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
57858
57875
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
57859
57876
|
*/
|
|
@@ -57879,19 +57896,19 @@ object({
|
|
|
57879
57896
|
DeviceType.Sensor;
|
|
57880
57897
|
object({
|
|
57881
57898
|
/** Current level as 0..100 inclusive. Firmware-reported. */
|
|
57882
|
-
|
|
57899
|
+
level: number().min(0).max(100).meta(readingMeta("percentage")),
|
|
57883
57900
|
/** Ms epoch of the last operator-driven change. Useful for UI freshness. */
|
|
57884
57901
|
lastChangedAt: number()
|
|
57885
57902
|
});
|
|
57886
57903
|
DeviceType.Light, method(object({
|
|
57887
57904
|
deviceId: number().int().nonnegative(),
|
|
57888
|
-
|
|
57905
|
+
level: number().min(0).max(100)
|
|
57889
57906
|
}), _void(), {
|
|
57890
57907
|
kind: "mutation",
|
|
57891
57908
|
auth: "protected"
|
|
57892
57909
|
}), object({
|
|
57893
57910
|
deviceId: number(),
|
|
57894
|
-
|
|
57911
|
+
level: number().min(0).max(100),
|
|
57895
57912
|
lastChangedAt: number()
|
|
57896
57913
|
});
|
|
57897
57914
|
DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
@@ -58392,11 +58409,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
|
|
|
58392
58409
|
}),
|
|
58393
58410
|
object({
|
|
58394
58411
|
mode: literal("mired"),
|
|
58395
|
-
|
|
58412
|
+
colorTemperature: number().int().min(50).max(1e3)
|
|
58396
58413
|
})
|
|
58397
58414
|
]);
|
|
58398
58415
|
object({
|
|
58399
|
-
/** Active color mode — which of `rgb` / `hsv` / `
|
|
58416
|
+
/** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
|
|
58400
58417
|
* the bulb's current state. */
|
|
58401
58418
|
mode: _enum([
|
|
58402
58419
|
"rgb",
|
|
@@ -58408,7 +58425,7 @@ object({
|
|
|
58408
58425
|
/** Populated when `mode === 'hsv'`. */
|
|
58409
58426
|
hsv: HsvTripletSchema.optional(),
|
|
58410
58427
|
/** Populated when `mode === 'mired'`. */
|
|
58411
|
-
|
|
58428
|
+
colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
|
|
58412
58429
|
/** Ms epoch of the last operator-driven change. */
|
|
58413
58430
|
lastChangedAt: number()
|
|
58414
58431
|
});
|
|
@@ -58427,7 +58444,7 @@ DeviceType.Light, method(object({
|
|
|
58427
58444
|
]),
|
|
58428
58445
|
rgb: RgbTripletSchema.optional(),
|
|
58429
58446
|
hsv: HsvTripletSchema.optional(),
|
|
58430
|
-
|
|
58447
|
+
colorTemperature: number().int().optional(),
|
|
58431
58448
|
lastChangedAt: number()
|
|
58432
58449
|
});
|
|
58433
58450
|
var ConnectionTestOutcomeSchema = discriminatedUnion("outcome", [
|
|
@@ -58853,11 +58870,11 @@ object({
|
|
|
58853
58870
|
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
58854
58871
|
availablePrograms: array(string()),
|
|
58855
58872
|
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
58856
|
-
|
|
58873
|
+
remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
58857
58874
|
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
58858
|
-
|
|
58875
|
+
delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
58859
58876
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
58860
|
-
|
|
58877
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
58861
58878
|
/** True when the door is reported open; null when the door state is not known. */
|
|
58862
58879
|
doorOpen: boolean().nullable(),
|
|
58863
58880
|
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
@@ -59475,7 +59492,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
|
|
|
59475
59492
|
object({
|
|
59476
59493
|
/** Active speed as 0..100 inclusive. Null when the device has no
|
|
59477
59494
|
* speed surface (single-speed fan). */
|
|
59478
|
-
|
|
59495
|
+
speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
59479
59496
|
/** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
|
|
59480
59497
|
* a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
|
|
59481
59498
|
percentageStep: number().positive().optional().meta(readingMeta("percentage")),
|
|
@@ -59495,7 +59512,7 @@ object({
|
|
|
59495
59512
|
});
|
|
59496
59513
|
DeviceType.Fan, method(object({
|
|
59497
59514
|
deviceId: number().int().nonnegative(),
|
|
59498
|
-
|
|
59515
|
+
speed: number().min(0).max(100)
|
|
59499
59516
|
}), _void(), {
|
|
59500
59517
|
kind: "mutation",
|
|
59501
59518
|
auth: "protected"
|
|
@@ -59678,7 +59695,7 @@ DeviceType.Humidifier, method(object({
|
|
|
59678
59695
|
});
|
|
59679
59696
|
object({
|
|
59680
59697
|
/** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
|
|
59681
|
-
|
|
59698
|
+
humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
|
|
59682
59699
|
precision: 0,
|
|
59683
59700
|
label: "Humidity"
|
|
59684
59701
|
})),
|
|
@@ -60121,7 +60138,7 @@ object({
|
|
|
60121
60138
|
batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
60122
60139
|
/** 0..100 mowing-completion percentage of the current task, or null when no
|
|
60123
60140
|
* task is active / progress is unavailable. */
|
|
60124
|
-
|
|
60141
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
60125
60142
|
/** Current device/event code (dynamic — mostly status, sometimes an error),
|
|
60126
60143
|
* or null when unknown. */
|
|
60127
60144
|
currentCode: number().nullable().meta(readingMeta("none")),
|
|
@@ -60611,10 +60628,10 @@ object({
|
|
|
60611
60628
|
currentMedia: MediaInfoSchema.nullable(),
|
|
60612
60629
|
/** Current playback position in ms. Null when not seekable or
|
|
60613
60630
|
* nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
|
|
60614
|
-
|
|
60631
|
+
position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
60615
60632
|
/** Total duration of the current media in ms. Null when unknown
|
|
60616
60633
|
* (live stream) or nothing is playing. */
|
|
60617
|
-
|
|
60634
|
+
duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
60618
60635
|
/** Shuffle toggle. Null when no shuffle surface.
|
|
60619
60636
|
* Pair with `DeviceFeature.MediaPlayerShuffle`. */
|
|
60620
60637
|
shuffle: boolean().nullable(),
|
|
@@ -60641,7 +60658,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
|
|
|
60641
60658
|
auth: "protected"
|
|
60642
60659
|
}), method(object({
|
|
60643
60660
|
deviceId: number().int().nonnegative(),
|
|
60644
|
-
|
|
60661
|
+
position: number().int().nonnegative()
|
|
60645
60662
|
}), _void(), {
|
|
60646
60663
|
kind: "mutation",
|
|
60647
60664
|
auth: "protected"
|
|
@@ -61314,9 +61331,9 @@ var NetworkLinkStatusSchema = object({
|
|
|
61314
61331
|
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
61315
61332
|
* SKIP a null rather than coerce it.
|
|
61316
61333
|
*/
|
|
61317
|
-
|
|
61334
|
+
signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
61318
61335
|
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
61319
|
-
|
|
61336
|
+
rssi: number().optional().meta(readingMeta("signal-level")),
|
|
61320
61337
|
/** Network name of a wireless link, when the firmware reports it. */
|
|
61321
61338
|
ssid: string().optional(),
|
|
61322
61339
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
@@ -62466,16 +62483,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
62466
62483
|
auth: "admin"
|
|
62467
62484
|
});
|
|
62468
62485
|
object({
|
|
62469
|
-
/** Instantaneous power draw
|
|
62470
|
-
|
|
62486
|
+
/** Instantaneous power draw (watts). */
|
|
62487
|
+
power: number().optional().meta(readingMeta("power", { label: "Power" })),
|
|
62471
62488
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
62472
|
-
|
|
62473
|
-
/** Voltage
|
|
62474
|
-
|
|
62489
|
+
energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
|
|
62490
|
+
/** Voltage (volts). */
|
|
62491
|
+
voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
62475
62492
|
/** Current in amperes. */
|
|
62476
|
-
|
|
62493
|
+
current: number().optional().meta(readingMeta("current", { label: "Current" })),
|
|
62477
62494
|
/** Apparent power in volt-amperes. */
|
|
62478
|
-
|
|
62495
|
+
apparentPower: number().optional().meta(readingMeta("apparent-power")),
|
|
62479
62496
|
/** Power factor (0..1) if reported. */
|
|
62480
62497
|
powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
|
|
62481
62498
|
/** Ms epoch when the slice was last updated. */
|
|
@@ -62530,16 +62547,13 @@ object({
|
|
|
62530
62547
|
location: string().nullable(),
|
|
62531
62548
|
/** GPS coordinates when available. Null otherwise. */
|
|
62532
62549
|
gps: GpsLocationSchema.nullable(),
|
|
62533
|
-
/** Optional battery level of the tracking device (0..100). Null
|
|
62534
|
-
* when not reported. */
|
|
62535
|
-
batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
62536
62550
|
/** Ms epoch when the slice was last updated. */
|
|
62537
62551
|
lastChangedAt: number()
|
|
62538
62552
|
});
|
|
62539
62553
|
DeviceType.Presence;
|
|
62540
62554
|
object({
|
|
62541
62555
|
/** Current pressure in hPa. `null` when the sample was refused (D393). */
|
|
62542
|
-
|
|
62556
|
+
pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
|
|
62543
62557
|
/** Ms epoch when the slice was last updated. */
|
|
62544
62558
|
lastFetchedAt: number()
|
|
62545
62559
|
});
|
|
@@ -65542,7 +65556,7 @@ object({
|
|
|
65542
65556
|
DeviceType.Sensor;
|
|
65543
65557
|
object({
|
|
65544
65558
|
/** Current temperature in Celsius. `null` when the sample was refused (D393). */
|
|
65545
|
-
|
|
65559
|
+
temperature: number().nullable().meta(readingMeta("temperature", {
|
|
65546
65560
|
precision: 1,
|
|
65547
65561
|
label: "Temperature"
|
|
65548
65562
|
})),
|
|
@@ -65806,7 +65820,7 @@ object({
|
|
|
65806
65820
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
65807
65821
|
availableFanSpeeds: array(string()),
|
|
65808
65822
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
65809
|
-
|
|
65823
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65810
65824
|
/** Current error code (0 / null = no error). */
|
|
65811
65825
|
errorCode: number().nullable().meta(readingMeta("none")),
|
|
65812
65826
|
/** Human label for {@link errorCode}, or null when none / undecodable. */
|
|
@@ -76874,7 +76888,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76874
76888
|
label: t("Full brightness", "Luminosità massima"),
|
|
76875
76889
|
phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
|
|
76876
76890
|
icon: "sun",
|
|
76877
|
-
args: {
|
|
76891
|
+
args: { level: 100 }
|
|
76878
76892
|
},
|
|
76879
76893
|
{
|
|
76880
76894
|
id: "brightness.half",
|
|
@@ -76882,7 +76896,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76882
76896
|
label: t("Half brightness", "Luminosità a metà"),
|
|
76883
76897
|
phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
|
|
76884
76898
|
icon: "sun-dim",
|
|
76885
|
-
args: {
|
|
76899
|
+
args: { level: 50 }
|
|
76886
76900
|
},
|
|
76887
76901
|
{
|
|
76888
76902
|
id: "brightness.off",
|
|
@@ -76890,16 +76904,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76890
76904
|
label: t("Brightness off", "Luminosità a zero"),
|
|
76891
76905
|
phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
|
|
76892
76906
|
icon: "lightbulb-off",
|
|
76893
|
-
args: {
|
|
76907
|
+
args: { level: 0 }
|
|
76894
76908
|
},
|
|
76895
76909
|
{
|
|
76896
76910
|
id: "brightness.set",
|
|
76897
76911
|
method: "setBrightness",
|
|
76898
76912
|
label: t("Set brightness", "Imposta la luminosità"),
|
|
76899
|
-
phrase: t("Set the brightness of {device} to {
|
|
76913
|
+
phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
|
|
76900
76914
|
icon: "sun-medium",
|
|
76901
76915
|
openArgs: [{
|
|
76902
|
-
key: "
|
|
76916
|
+
key: "level",
|
|
76903
76917
|
label: PERCENT,
|
|
76904
76918
|
offer: {
|
|
76905
76919
|
kind: "number",
|
|
@@ -76913,13 +76927,13 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76913
76927
|
],
|
|
76914
76928
|
state: [{
|
|
76915
76929
|
kind: "numeric",
|
|
76916
|
-
field: "
|
|
76930
|
+
field: "level",
|
|
76917
76931
|
quantity: t("the brightness", "la luminosità"),
|
|
76918
76932
|
label: t("Brightness", "Luminosità"),
|
|
76919
76933
|
unit: "%",
|
|
76920
76934
|
icon: "sun"
|
|
76921
76935
|
}],
|
|
76922
|
-
events: { onBrightnessChanged: { notOperatorFacing: "the `
|
|
76936
|
+
events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
|
|
76923
76937
|
},
|
|
76924
76938
|
color: {
|
|
76925
76939
|
scope: "device",
|
|
@@ -76933,7 +76947,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76933
76947
|
icon: "sun",
|
|
76934
76948
|
args: { color: {
|
|
76935
76949
|
mode: "mired",
|
|
76936
|
-
|
|
76950
|
+
colorTemperature: 370
|
|
76937
76951
|
} }
|
|
76938
76952
|
},
|
|
76939
76953
|
{
|
|
@@ -76944,7 +76958,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76944
76958
|
icon: "snowflake",
|
|
76945
76959
|
args: { color: {
|
|
76946
76960
|
mode: "mired",
|
|
76947
|
-
|
|
76961
|
+
colorTemperature: 200
|
|
76948
76962
|
} }
|
|
76949
76963
|
},
|
|
76950
76964
|
{
|
|
@@ -77558,7 +77572,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77558
77572
|
label: t("Fan off", "Ventilatore spento"),
|
|
77559
77573
|
phrase: t("Stop {device}", "Ferma {device}"),
|
|
77560
77574
|
icon: "power-off",
|
|
77561
|
-
args: {
|
|
77575
|
+
args: { speed: 0 }
|
|
77562
77576
|
},
|
|
77563
77577
|
{
|
|
77564
77578
|
id: "fan.full",
|
|
@@ -77566,16 +77580,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77566
77580
|
label: t("Fan full", "Ventilatore al massimo"),
|
|
77567
77581
|
phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
|
|
77568
77582
|
icon: "fan",
|
|
77569
|
-
args: {
|
|
77583
|
+
args: { speed: 100 }
|
|
77570
77584
|
},
|
|
77571
77585
|
{
|
|
77572
77586
|
id: "fan.speed",
|
|
77573
77587
|
method: "setPercentage",
|
|
77574
77588
|
label: t("Set speed", "Imposta la velocità"),
|
|
77575
|
-
phrase: t("Set the speed of {device} to {
|
|
77589
|
+
phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
|
|
77576
77590
|
icon: "fan",
|
|
77577
77591
|
openArgs: [{
|
|
77578
|
-
key: "
|
|
77592
|
+
key: "speed",
|
|
77579
77593
|
label: t("Speed", "Velocità"),
|
|
77580
77594
|
offer: {
|
|
77581
77595
|
kind: "number",
|
|
@@ -77637,7 +77651,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77637
77651
|
],
|
|
77638
77652
|
state: [{
|
|
77639
77653
|
kind: "numeric",
|
|
77640
|
-
field: "
|
|
77654
|
+
field: "speed",
|
|
77641
77655
|
quantity: t("the speed", "la velocità"),
|
|
77642
77656
|
label: t("Speed", "Velocità"),
|
|
77643
77657
|
unit: "%",
|
|
@@ -78435,7 +78449,7 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78435
78449
|
},
|
|
78436
78450
|
{
|
|
78437
78451
|
kind: "numeric",
|
|
78438
|
-
field: "
|
|
78452
|
+
field: "progress",
|
|
78439
78453
|
quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
|
|
78440
78454
|
label: t("Progress", "Avanzamento"),
|
|
78441
78455
|
unit: "%",
|
|
@@ -78793,10 +78807,10 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78793
78807
|
id: "media.seek",
|
|
78794
78808
|
method: "seek",
|
|
78795
78809
|
label: t("Seek", "Vai al punto"),
|
|
78796
|
-
phrase: t("Move {device} to {
|
|
78810
|
+
phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
|
|
78797
78811
|
icon: "fast-forward",
|
|
78798
78812
|
openArgs: [{
|
|
78799
|
-
key: "
|
|
78813
|
+
key: "position",
|
|
78800
78814
|
label: t("Position", "Posizione"),
|
|
78801
78815
|
offer: {
|
|
78802
78816
|
kind: "number",
|
|
@@ -79845,7 +79859,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79845
79859
|
state: [
|
|
79846
79860
|
{
|
|
79847
79861
|
kind: "numeric",
|
|
79848
|
-
field: "
|
|
79862
|
+
field: "co2",
|
|
79849
79863
|
quantity: t("the CO₂", "la CO₂"),
|
|
79850
79864
|
label: t("CO₂", "CO₂"),
|
|
79851
79865
|
unit: "ppm",
|
|
@@ -79853,7 +79867,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79853
79867
|
},
|
|
79854
79868
|
{
|
|
79855
79869
|
kind: "numeric",
|
|
79856
|
-
field: "
|
|
79870
|
+
field: "voc",
|
|
79857
79871
|
quantity: t("the VOC level", "il livello di COV"),
|
|
79858
79872
|
label: t("VOC", "COV"),
|
|
79859
79873
|
unit: "ppb",
|
|
@@ -79889,7 +79903,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79889
79903
|
noun: t("Light level", "Luminosità ambiente"),
|
|
79890
79904
|
state: [{
|
|
79891
79905
|
kind: "numeric",
|
|
79892
|
-
field: "
|
|
79906
|
+
field: "illuminance",
|
|
79893
79907
|
quantity: t("the light level", "la luminosità"),
|
|
79894
79908
|
label: t("Illuminance", "Illuminamento"),
|
|
79895
79909
|
unit: "lx",
|
|
@@ -80092,7 +80106,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80092
80106
|
noun: t("Humidity", "Umidità"),
|
|
80093
80107
|
state: [{
|
|
80094
80108
|
kind: "numeric",
|
|
80095
|
-
field: "
|
|
80109
|
+
field: "humidity",
|
|
80096
80110
|
quantity: t("the humidity", "l’umidità"),
|
|
80097
80111
|
label: t("Humidity", "Umidità"),
|
|
80098
80112
|
unit: "%",
|
|
@@ -80140,7 +80154,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80140
80154
|
state: [
|
|
80141
80155
|
{
|
|
80142
80156
|
kind: "numeric",
|
|
80143
|
-
field: "
|
|
80157
|
+
field: "power",
|
|
80144
80158
|
quantity: t("the power draw", "il consumo"),
|
|
80145
80159
|
label: t("Power", "Potenza"),
|
|
80146
80160
|
unit: "W",
|
|
@@ -80148,7 +80162,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80148
80162
|
},
|
|
80149
80163
|
{
|
|
80150
80164
|
kind: "numeric",
|
|
80151
|
-
field: "
|
|
80165
|
+
field: "energy",
|
|
80152
80166
|
quantity: t("the energy used", "l’energia consumata"),
|
|
80153
80167
|
label: t("Energy", "Energia"),
|
|
80154
80168
|
unit: "kWh",
|
|
@@ -80156,7 +80170,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80156
80170
|
},
|
|
80157
80171
|
{
|
|
80158
80172
|
kind: "numeric",
|
|
80159
|
-
field: "
|
|
80173
|
+
field: "voltage",
|
|
80160
80174
|
quantity: t("the voltage", "la tensione"),
|
|
80161
80175
|
label: t("Voltage", "Tensione"),
|
|
80162
80176
|
unit: "V",
|
|
@@ -80164,7 +80178,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80164
80178
|
},
|
|
80165
80179
|
{
|
|
80166
80180
|
kind: "numeric",
|
|
80167
|
-
field: "
|
|
80181
|
+
field: "current",
|
|
80168
80182
|
quantity: t("the current", "la corrente"),
|
|
80169
80183
|
label: t("Current", "Corrente"),
|
|
80170
80184
|
unit: "A",
|
|
@@ -80181,13 +80195,6 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80181
80195
|
label: t("Where", "Posizione"),
|
|
80182
80196
|
phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
|
|
80183
80197
|
icon: "map-pin"
|
|
80184
|
-
}, {
|
|
80185
|
-
kind: "numeric",
|
|
80186
|
-
field: "batteryPercent",
|
|
80187
|
-
quantity: t("the phone battery", "la batteria del telefono"),
|
|
80188
|
-
label: t("Battery", "Batteria"),
|
|
80189
|
-
unit: "%",
|
|
80190
|
-
icon: "battery"
|
|
80191
80198
|
}]
|
|
80192
80199
|
},
|
|
80193
80200
|
"pressure-sensor": {
|
|
@@ -80195,7 +80202,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80195
80202
|
noun: t("Pressure", "Pressione"),
|
|
80196
80203
|
state: [{
|
|
80197
80204
|
kind: "numeric",
|
|
80198
|
-
field: "
|
|
80205
|
+
field: "pressure",
|
|
80199
80206
|
quantity: t("the pressure", "la pressione"),
|
|
80200
80207
|
label: t("Pressure", "Pressione"),
|
|
80201
80208
|
unit: "hPa",
|
|
@@ -80231,7 +80238,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80231
80238
|
noun: t("Temperature", "Temperatura"),
|
|
80232
80239
|
state: [{
|
|
80233
80240
|
kind: "numeric",
|
|
80234
|
-
field: "
|
|
80241
|
+
field: "temperature",
|
|
80235
80242
|
quantity: t("the temperature", "la temperatura"),
|
|
80236
80243
|
label: t("Temperature", "Temperatura"),
|
|
80237
80244
|
unit: "°C",
|
|
@@ -80302,7 +80309,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80302
80309
|
state: [
|
|
80303
80310
|
{
|
|
80304
80311
|
kind: "numeric",
|
|
80305
|
-
field: "
|
|
80312
|
+
field: "level",
|
|
80306
80313
|
quantity: t("the battery level", "il livello della batteria"),
|
|
80307
80314
|
label: t("Battery", "Batteria"),
|
|
80308
80315
|
unit: "%",
|
|
@@ -80344,7 +80351,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80344
80351
|
icon: "battery-charging"
|
|
80345
80352
|
}
|
|
80346
80353
|
],
|
|
80347
|
-
events: { onStatusChanged: { notOperatorFacing: "the
|
|
80354
|
+
events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
|
|
80348
80355
|
extraEvents: [{
|
|
80349
80356
|
category: EventCategory.DeviceAwake,
|
|
80350
80357
|
label: t("Woke up", "Risvegliato"),
|
|
@@ -80362,7 +80369,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80362
80369
|
noun: t("Network link", "Collegamento di rete"),
|
|
80363
80370
|
state: [{
|
|
80364
80371
|
kind: "numeric",
|
|
80365
|
-
field: "
|
|
80372
|
+
field: "signal",
|
|
80366
80373
|
quantity: t("the signal strength", "l’intensità del segnale"),
|
|
80367
80374
|
label: t("Signal", "Segnale"),
|
|
80368
80375
|
unit: "%",
|