@camstack/addon-training 0.1.98 → 0.1.100
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-CY7KH2hI.mjs → MotionZonesSettings-DBC9oNEy.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-DV1svTCi.mjs → PrivacyMaskSettings-MPmxoEGa.mjs} +2 -2
- package/dist/{SceneMonitorEditor-DgLi7gqv.mjs → SceneMonitorEditor-q8rm9EAO.mjs} +2 -2
- package/dist/_stub.js +924 -918
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-BvCLzm-x.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-BLf4IX1e.mjs} +3 -3
- package/dist/{_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-C-7qylfi.mjs → _virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-4mdhpGoW.mjs} +1 -1
- package/dist/{dist-DGkGciMs.mjs → dist-5otxE_9_.mjs} +126 -119
- package/dist/{dist-e6MHQz3v.js → dist-BHRYlf1o.js} +126 -119
- package/dist/{hostInit-Cg67dw8H.mjs → hostInit-B98SkU6O.mjs} +2 -2
- package/dist/index.js +1 -1
- package/dist/orchestrator/training.addon.js +1 -1
- package/dist/orchestrator/training.addon.mjs +1 -1
- package/dist/{player-overlays-BWU5_rIA.mjs → player-overlays-aX4eEmgd.mjs} +1 -1
- package/dist/providers/modal/training-modal.addon.js +1 -1
- package/dist/providers/modal/training-modal.addon.mjs +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-DjL0yeaY.mjs → responsive-D9ViDal5.mjs} +1 -1
- package/dist/{scene-monitor-copy-CgXdiyRs.mjs → scene-monitor-copy-B7FtvYkD.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-rl5UntyG.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-4OWl-Jop.mjs} +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "node:crypto";
|
|
2
|
-
//#region ../types/dist/event-category-
|
|
2
|
+
//#region ../types/dist/event-category-DmZDPDf_.mjs
|
|
3
3
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4
4
|
EventCategory["SystemBoot"] = "system.boot";
|
|
5
5
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -626,7 +626,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
626
626
|
* (a track was promoted to a stationary-registry entry) or departs (the
|
|
627
627
|
* object moved / was removed). Telemetry (D8): lossy, drives a UI refresh of
|
|
628
628
|
* the dedicated "Stationary" section — never the live event feed. Payload:
|
|
629
|
-
* `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp }`.
|
|
629
|
+
* `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp, observedAt, zones }`.
|
|
630
630
|
*/
|
|
631
631
|
EventCategory["PipelineAnalyticsStationaryChanged"] = "pipeline-analytics.stationary-changed";
|
|
632
632
|
/**
|
|
@@ -5580,7 +5580,7 @@ var ZodIssueCode = {
|
|
|
5580
5580
|
var ZodFirstPartyTypeKind;
|
|
5581
5581
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5582
5582
|
//#endregion
|
|
5583
|
-
//#region ../types/dist/sleep-
|
|
5583
|
+
//#region ../types/dist/sleep-Crlmu_tO.mjs
|
|
5584
5584
|
/**
|
|
5585
5585
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5586
5586
|
* window to float samples (D455).
|
|
@@ -9067,11 +9067,11 @@ var CAP_NAMES = Object.freeze([
|
|
|
9067
9067
|
Object.freeze({
|
|
9068
9068
|
"air-quality-sensor": [
|
|
9069
9069
|
{
|
|
9070
|
-
"path": "
|
|
9070
|
+
"path": "co2",
|
|
9071
9071
|
"valueType": "number"
|
|
9072
9072
|
},
|
|
9073
9073
|
{
|
|
9074
|
-
"path": "
|
|
9074
|
+
"path": "voc",
|
|
9075
9075
|
"valueType": "number"
|
|
9076
9076
|
},
|
|
9077
9077
|
{
|
|
@@ -9121,7 +9121,7 @@ Object.freeze({
|
|
|
9121
9121
|
}
|
|
9122
9122
|
],
|
|
9123
9123
|
"ambient-light-sensor": [{
|
|
9124
|
-
"path": "
|
|
9124
|
+
"path": "illuminance",
|
|
9125
9125
|
"valueType": "number"
|
|
9126
9126
|
}],
|
|
9127
9127
|
"audio-metrics": [
|
|
@@ -9182,7 +9182,7 @@ Object.freeze({
|
|
|
9182
9182
|
],
|
|
9183
9183
|
"battery": [
|
|
9184
9184
|
{
|
|
9185
|
-
"path": "
|
|
9185
|
+
"path": "level",
|
|
9186
9186
|
"valueType": "number"
|
|
9187
9187
|
},
|
|
9188
9188
|
{
|
|
@@ -9204,7 +9204,7 @@ Object.freeze({
|
|
|
9204
9204
|
"valueType": "number"
|
|
9205
9205
|
},
|
|
9206
9206
|
{
|
|
9207
|
-
"path": "
|
|
9207
|
+
"path": "voltage",
|
|
9208
9208
|
"valueType": "number"
|
|
9209
9209
|
},
|
|
9210
9210
|
{
|
|
@@ -9225,7 +9225,7 @@ Object.freeze({
|
|
|
9225
9225
|
"valueType": "boolean"
|
|
9226
9226
|
}],
|
|
9227
9227
|
"brightness": [{
|
|
9228
|
-
"path": "
|
|
9228
|
+
"path": "level",
|
|
9229
9229
|
"valueType": "number"
|
|
9230
9230
|
}],
|
|
9231
9231
|
"broker": [{
|
|
@@ -9426,7 +9426,7 @@ Object.freeze({
|
|
|
9426
9426
|
"valueType": "number"
|
|
9427
9427
|
},
|
|
9428
9428
|
{
|
|
9429
|
-
"path": "
|
|
9429
|
+
"path": "colorTemperature",
|
|
9430
9430
|
"valueType": "number"
|
|
9431
9431
|
}
|
|
9432
9432
|
],
|
|
@@ -9605,15 +9605,15 @@ Object.freeze({
|
|
|
9605
9605
|
"valueType": "string"
|
|
9606
9606
|
},
|
|
9607
9607
|
{
|
|
9608
|
-
"path": "
|
|
9608
|
+
"path": "remaining",
|
|
9609
9609
|
"valueType": "number"
|
|
9610
9610
|
},
|
|
9611
9611
|
{
|
|
9612
|
-
"path": "
|
|
9612
|
+
"path": "delayedStart",
|
|
9613
9613
|
"valueType": "number"
|
|
9614
9614
|
},
|
|
9615
9615
|
{
|
|
9616
|
-
"path": "
|
|
9616
|
+
"path": "progress",
|
|
9617
9617
|
"valueType": "number"
|
|
9618
9618
|
},
|
|
9619
9619
|
{
|
|
@@ -9727,7 +9727,7 @@ Object.freeze({
|
|
|
9727
9727
|
],
|
|
9728
9728
|
"fan-control": [
|
|
9729
9729
|
{
|
|
9730
|
-
"path": "
|
|
9730
|
+
"path": "speed",
|
|
9731
9731
|
"valueType": "number"
|
|
9732
9732
|
},
|
|
9733
9733
|
{
|
|
@@ -9827,7 +9827,7 @@ Object.freeze({
|
|
|
9827
9827
|
}
|
|
9828
9828
|
],
|
|
9829
9829
|
"humidity-sensor": [{
|
|
9830
|
-
"path": "
|
|
9830
|
+
"path": "humidity",
|
|
9831
9831
|
"valueType": "number"
|
|
9832
9832
|
}],
|
|
9833
9833
|
"image": [{
|
|
@@ -9937,7 +9937,7 @@ Object.freeze({
|
|
|
9937
9937
|
"valueType": "number"
|
|
9938
9938
|
},
|
|
9939
9939
|
{
|
|
9940
|
-
"path": "
|
|
9940
|
+
"path": "progress",
|
|
9941
9941
|
"valueType": "number"
|
|
9942
9942
|
},
|
|
9943
9943
|
{
|
|
@@ -10016,11 +10016,11 @@ Object.freeze({
|
|
|
10016
10016
|
"valueType": "string"
|
|
10017
10017
|
},
|
|
10018
10018
|
{
|
|
10019
|
-
"path": "
|
|
10019
|
+
"path": "position",
|
|
10020
10020
|
"valueType": "number"
|
|
10021
10021
|
},
|
|
10022
10022
|
{
|
|
10023
|
-
"path": "
|
|
10023
|
+
"path": "duration",
|
|
10024
10024
|
"valueType": "number"
|
|
10025
10025
|
},
|
|
10026
10026
|
{
|
|
@@ -10122,11 +10122,11 @@ Object.freeze({
|
|
|
10122
10122
|
]
|
|
10123
10123
|
},
|
|
10124
10124
|
{
|
|
10125
|
-
"path": "
|
|
10125
|
+
"path": "signal",
|
|
10126
10126
|
"valueType": "number"
|
|
10127
10127
|
},
|
|
10128
10128
|
{
|
|
10129
|
-
"path": "
|
|
10129
|
+
"path": "rssi",
|
|
10130
10130
|
"valueType": "number"
|
|
10131
10131
|
},
|
|
10132
10132
|
{
|
|
@@ -10257,23 +10257,23 @@ Object.freeze({
|
|
|
10257
10257
|
],
|
|
10258
10258
|
"power-meter": [
|
|
10259
10259
|
{
|
|
10260
|
-
"path": "
|
|
10260
|
+
"path": "power",
|
|
10261
10261
|
"valueType": "number"
|
|
10262
10262
|
},
|
|
10263
10263
|
{
|
|
10264
|
-
"path": "
|
|
10264
|
+
"path": "energy",
|
|
10265
10265
|
"valueType": "number"
|
|
10266
10266
|
},
|
|
10267
10267
|
{
|
|
10268
|
-
"path": "
|
|
10268
|
+
"path": "voltage",
|
|
10269
10269
|
"valueType": "number"
|
|
10270
10270
|
},
|
|
10271
10271
|
{
|
|
10272
|
-
"path": "
|
|
10272
|
+
"path": "current",
|
|
10273
10273
|
"valueType": "number"
|
|
10274
10274
|
},
|
|
10275
10275
|
{
|
|
10276
|
-
"path": "
|
|
10276
|
+
"path": "apparentPower",
|
|
10277
10277
|
"valueType": "number"
|
|
10278
10278
|
},
|
|
10279
10279
|
{
|
|
@@ -10301,14 +10301,10 @@ Object.freeze({
|
|
|
10301
10301
|
{
|
|
10302
10302
|
"path": "gps.accuracyMeters",
|
|
10303
10303
|
"valueType": "number"
|
|
10304
|
-
},
|
|
10305
|
-
{
|
|
10306
|
-
"path": "batteryPercent",
|
|
10307
|
-
"valueType": "number"
|
|
10308
10304
|
}
|
|
10309
10305
|
],
|
|
10310
10306
|
"pressure-sensor": [{
|
|
10311
|
-
"path": "
|
|
10307
|
+
"path": "pressure",
|
|
10312
10308
|
"valueType": "number"
|
|
10313
10309
|
}],
|
|
10314
10310
|
"privacy-mask": [{
|
|
@@ -10622,7 +10618,7 @@ Object.freeze({
|
|
|
10622
10618
|
"valueType": "boolean"
|
|
10623
10619
|
}],
|
|
10624
10620
|
"temperature-sensor": [{
|
|
10625
|
-
"path": "
|
|
10621
|
+
"path": "temperature",
|
|
10626
10622
|
"valueType": "number"
|
|
10627
10623
|
}],
|
|
10628
10624
|
"update": [
|
|
@@ -10670,7 +10666,7 @@ Object.freeze({
|
|
|
10670
10666
|
"valueType": "string"
|
|
10671
10667
|
},
|
|
10672
10668
|
{
|
|
10673
|
-
"path": "
|
|
10669
|
+
"path": "progress",
|
|
10674
10670
|
"valueType": "number"
|
|
10675
10671
|
},
|
|
10676
10672
|
{
|
|
@@ -11145,7 +11141,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
11145
11141
|
return DeviceRole;
|
|
11146
11142
|
}({});
|
|
11147
11143
|
//#endregion
|
|
11148
|
-
//#region ../types/dist/composition-
|
|
11144
|
+
//#region ../types/dist/composition-CZImLpOI.mjs
|
|
11149
11145
|
/**
|
|
11150
11146
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11151
11147
|
*
|
|
@@ -15683,6 +15679,14 @@ var AutomationConditionLeafSchema = object({
|
|
|
15683
15679
|
array(union([string(), number()]))
|
|
15684
15680
|
])
|
|
15685
15681
|
});
|
|
15682
|
+
var AutomationConditionStationaryPresentSchema = object({
|
|
15683
|
+
kind: literal("stationary-present"),
|
|
15684
|
+
deviceId: number().int().nonnegative(),
|
|
15685
|
+
/** Class names; a macro class matches every raw class that maps to it. */
|
|
15686
|
+
classes: array(string().min(1)).min(1).optional(),
|
|
15687
|
+
/** The parked object must be in at least one of these zones. */
|
|
15688
|
+
zones: array(string().min(1)).min(1).optional()
|
|
15689
|
+
});
|
|
15686
15690
|
/**
|
|
15687
15691
|
* The expression leaf, declared as a plain object rather than an intersection
|
|
15688
15692
|
* with {@link ExpressionSourceSchema}: a discriminated union has to be able to
|
|
@@ -15716,7 +15720,8 @@ var AutomationConditionSchema = lazy(() => discriminatedUnion("kind", [
|
|
|
15716
15720
|
child: AutomationConditionSchema
|
|
15717
15721
|
}),
|
|
15718
15722
|
AutomationConditionLeafSchema,
|
|
15719
|
-
AutomationConditionExpressionSchema
|
|
15723
|
+
AutomationConditionExpressionSchema,
|
|
15724
|
+
AutomationConditionStationaryPresentSchema
|
|
15720
15725
|
]));
|
|
15721
15726
|
/**
|
|
15722
15727
|
* What starts a run.
|
|
@@ -15770,6 +15775,17 @@ var AutomationTriggerSchema = discriminatedUnion("kind", [
|
|
|
15770
15775
|
/** Best-so-far confidence the track must reach. */
|
|
15771
15776
|
minScore: number().min(0).max(1).optional()
|
|
15772
15777
|
}),
|
|
15778
|
+
object({
|
|
15779
|
+
kind: literal("stationary"),
|
|
15780
|
+
deviceIds: array(number().int().nonnegative()).min(1),
|
|
15781
|
+
/** Class names; a macro class matches like the detection trigger. */
|
|
15782
|
+
classes: array(string().min(1)).min(1).optional(),
|
|
15783
|
+
/** The parked object must be in at least one of these zones. */
|
|
15784
|
+
zones: array(string().min(1)).min(1).optional(),
|
|
15785
|
+
/** `appeared`: it became parked. `departed`: the registry retired it.
|
|
15786
|
+
* The vocabulary of `PipelineAnalyticsStationaryChanged`. */
|
|
15787
|
+
phase: _enum(["appeared", "departed"])
|
|
15788
|
+
}),
|
|
15773
15789
|
object({
|
|
15774
15790
|
kind: literal("interval"),
|
|
15775
15791
|
minutes: number().int().min(1).max(1440)
|
|
@@ -15979,7 +15995,8 @@ var AutomationConditionTraceNodeSchema = object({
|
|
|
15979
15995
|
"any",
|
|
15980
15996
|
"not",
|
|
15981
15997
|
"condition",
|
|
15982
|
-
"expression"
|
|
15998
|
+
"expression",
|
|
15999
|
+
"stationary-present"
|
|
15983
16000
|
]),
|
|
15984
16001
|
outcome: TraceNodeOutcomeSchema,
|
|
15985
16002
|
reason: string(),
|
|
@@ -18789,7 +18806,7 @@ var CompositionEventPlanSchema = object({
|
|
|
18789
18806
|
stateField: string(),
|
|
18790
18807
|
fieldKey: string()
|
|
18791
18808
|
});
|
|
18792
|
-
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.
|
|
18809
|
+
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
|
|
18793
18810
|
var CompositionProblemSchema = object({
|
|
18794
18811
|
code: _enum([
|
|
18795
18812
|
"reserved-variant",
|
|
@@ -19108,7 +19125,7 @@ var GROUP_TEMPLATES = [
|
|
|
19108
19125
|
summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
|
|
19109
19126
|
role: DeviceRole.TemperatureSensor,
|
|
19110
19127
|
outputCap: "temperature-sensor",
|
|
19111
|
-
outputField: "
|
|
19128
|
+
outputField: "temperature",
|
|
19112
19129
|
quantity: "temperature",
|
|
19113
19130
|
defaultAggregate: "mean",
|
|
19114
19131
|
empty: "null",
|
|
@@ -19119,7 +19136,7 @@ var GROUP_TEMPLATES = [
|
|
|
19119
19136
|
summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19120
19137
|
role: DeviceRole.HumiditySensor,
|
|
19121
19138
|
outputCap: "humidity-sensor",
|
|
19122
|
-
outputField: "
|
|
19139
|
+
outputField: "humidity",
|
|
19123
19140
|
quantity: "humidity",
|
|
19124
19141
|
defaultAggregate: "mean",
|
|
19125
19142
|
empty: "null",
|
|
@@ -19130,7 +19147,7 @@ var GROUP_TEMPLATES = [
|
|
|
19130
19147
|
summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
|
|
19131
19148
|
role: DeviceRole.PressureSensor,
|
|
19132
19149
|
outputCap: "pressure-sensor",
|
|
19133
|
-
outputField: "
|
|
19150
|
+
outputField: "pressure",
|
|
19134
19151
|
quantity: "pressure",
|
|
19135
19152
|
defaultAggregate: "mean",
|
|
19136
19153
|
empty: "null",
|
|
@@ -19141,7 +19158,7 @@ var GROUP_TEMPLATES = [
|
|
|
19141
19158
|
summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
|
|
19142
19159
|
role: DeviceRole.AmbientLightSensor,
|
|
19143
19160
|
outputCap: "ambient-light-sensor",
|
|
19144
|
-
outputField: "
|
|
19161
|
+
outputField: "illuminance",
|
|
19145
19162
|
quantity: "illuminance",
|
|
19146
19163
|
defaultAggregate: "mean",
|
|
19147
19164
|
empty: "null",
|
|
@@ -19152,7 +19169,7 @@ var GROUP_TEMPLATES = [
|
|
|
19152
19169
|
summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
|
|
19153
19170
|
role: DeviceRole.PowerSensor,
|
|
19154
19171
|
outputCap: "power-meter",
|
|
19155
|
-
outputField: "
|
|
19172
|
+
outputField: "power",
|
|
19156
19173
|
quantity: "power",
|
|
19157
19174
|
defaultAggregate: "sum",
|
|
19158
19175
|
empty: "omit",
|
|
@@ -19163,7 +19180,7 @@ var GROUP_TEMPLATES = [
|
|
|
19163
19180
|
summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
|
|
19164
19181
|
role: DeviceRole.EnergySensor,
|
|
19165
19182
|
outputCap: "power-meter",
|
|
19166
|
-
outputField: "
|
|
19183
|
+
outputField: "energy",
|
|
19167
19184
|
quantity: "energy",
|
|
19168
19185
|
defaultAggregate: "sum",
|
|
19169
19186
|
empty: "omit",
|
|
@@ -19174,7 +19191,7 @@ var GROUP_TEMPLATES = [
|
|
|
19174
19191
|
summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19175
19192
|
role: DeviceRole.BatterySensor,
|
|
19176
19193
|
outputCap: "battery",
|
|
19177
|
-
outputField: "
|
|
19194
|
+
outputField: "level",
|
|
19178
19195
|
quantity: "percentage",
|
|
19179
19196
|
defaultAggregate: "mean",
|
|
19180
19197
|
empty: "null",
|
|
@@ -57292,9 +57309,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
57292
57309
|
}), LogStreamEntrySchema, { kind: "subscription" });
|
|
57293
57310
|
object({
|
|
57294
57311
|
/** Carbon dioxide concentration in ppm. */
|
|
57295
|
-
|
|
57312
|
+
co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
|
|
57296
57313
|
/** Total volatile organic compounds in ppb. */
|
|
57297
|
-
|
|
57314
|
+
voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
|
|
57298
57315
|
/** Particulate matter ≤ 2.5 μm in µg/m³. */
|
|
57299
57316
|
pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
|
|
57300
57317
|
/** Particulate matter ≤ 10 μm in µg/m³. */
|
|
@@ -57307,7 +57324,7 @@ object({
|
|
|
57307
57324
|
DeviceType.Sensor;
|
|
57308
57325
|
object({
|
|
57309
57326
|
/** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
|
|
57310
|
-
|
|
57327
|
+
illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
|
|
57311
57328
|
precision: 0,
|
|
57312
57329
|
label: "Illuminance"
|
|
57313
57330
|
})),
|
|
@@ -57535,7 +57552,7 @@ var BatteryStatusSchema = object({
|
|
|
57535
57552
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
57536
57553
|
* declines to band a non-finite reading, which is the correct shape.
|
|
57537
57554
|
*/
|
|
57538
|
-
|
|
57555
|
+
level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
|
|
57539
57556
|
/**
|
|
57540
57557
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
57541
57558
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -57545,7 +57562,7 @@ var BatteryStatusSchema = object({
|
|
|
57545
57562
|
* `'unknown'` is the absence of an answer: the provider has not read the
|
|
57546
57563
|
* power fields yet, or the firmware reported neither. Before it existed,
|
|
57547
57564
|
* two unreadable fields produced `'none'`, and a camera nobody had reached
|
|
57548
|
-
* was drawn "on battery alone" — the same D315 defect `
|
|
57565
|
+
* was drawn "on battery alone" — the same D315 defect `level` closed
|
|
57549
57566
|
* by going nullable. Consumers SKIP it (no charger state published, no
|
|
57550
57567
|
* glyph, no HomeKit ChargingState) rather than coerce it either way.
|
|
57551
57568
|
*/
|
|
@@ -57569,7 +57586,7 @@ var BatteryStatusSchema = object({
|
|
|
57569
57586
|
* that only report charge. A second reading on this cap, not a second
|
|
57570
57587
|
* `numeric-sensor` on the same device.
|
|
57571
57588
|
*/
|
|
57572
|
-
|
|
57589
|
+
voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
57573
57590
|
/**
|
|
57574
57591
|
* Ms epoch of the last time the device PROVED it was reachable — a
|
|
57575
57592
|
* completed firmware round-trip, an observed wake, or an inbound push
|
|
@@ -57603,7 +57620,7 @@ var BatteryStatusSchema = object({
|
|
|
57603
57620
|
/**
|
|
57604
57621
|
* True when the source is a BINARY low-battery indicator (HA
|
|
57605
57622
|
* `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
|
|
57606
|
-
* charge level — `
|
|
57623
|
+
* charge level — `level` is then a coarse stand-in (100 = normal,
|
|
57607
57624
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
57608
57625
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
57609
57626
|
*/
|
|
@@ -57629,19 +57646,19 @@ object({
|
|
|
57629
57646
|
DeviceType.Sensor;
|
|
57630
57647
|
object({
|
|
57631
57648
|
/** Current level as 0..100 inclusive. Firmware-reported. */
|
|
57632
|
-
|
|
57649
|
+
level: number().min(0).max(100).meta(readingMeta("percentage")),
|
|
57633
57650
|
/** Ms epoch of the last operator-driven change. Useful for UI freshness. */
|
|
57634
57651
|
lastChangedAt: number()
|
|
57635
57652
|
});
|
|
57636
57653
|
DeviceType.Light, method(object({
|
|
57637
57654
|
deviceId: number().int().nonnegative(),
|
|
57638
|
-
|
|
57655
|
+
level: number().min(0).max(100)
|
|
57639
57656
|
}), _void(), {
|
|
57640
57657
|
kind: "mutation",
|
|
57641
57658
|
auth: "protected"
|
|
57642
57659
|
}), object({
|
|
57643
57660
|
deviceId: number(),
|
|
57644
|
-
|
|
57661
|
+
level: number().min(0).max(100),
|
|
57645
57662
|
lastChangedAt: number()
|
|
57646
57663
|
});
|
|
57647
57664
|
DeviceType.Button, method(object({ deviceId: number().int().nonnegative() }), _void(), {
|
|
@@ -58142,11 +58159,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
|
|
|
58142
58159
|
}),
|
|
58143
58160
|
object({
|
|
58144
58161
|
mode: literal("mired"),
|
|
58145
|
-
|
|
58162
|
+
colorTemperature: number().int().min(50).max(1e3)
|
|
58146
58163
|
})
|
|
58147
58164
|
]);
|
|
58148
58165
|
object({
|
|
58149
|
-
/** Active color mode — which of `rgb` / `hsv` / `
|
|
58166
|
+
/** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
|
|
58150
58167
|
* the bulb's current state. */
|
|
58151
58168
|
mode: _enum([
|
|
58152
58169
|
"rgb",
|
|
@@ -58158,7 +58175,7 @@ object({
|
|
|
58158
58175
|
/** Populated when `mode === 'hsv'`. */
|
|
58159
58176
|
hsv: HsvTripletSchema.optional(),
|
|
58160
58177
|
/** Populated when `mode === 'mired'`. */
|
|
58161
|
-
|
|
58178
|
+
colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
|
|
58162
58179
|
/** Ms epoch of the last operator-driven change. */
|
|
58163
58180
|
lastChangedAt: number()
|
|
58164
58181
|
});
|
|
@@ -58177,7 +58194,7 @@ DeviceType.Light, method(object({
|
|
|
58177
58194
|
]),
|
|
58178
58195
|
rgb: RgbTripletSchema.optional(),
|
|
58179
58196
|
hsv: HsvTripletSchema.optional(),
|
|
58180
|
-
|
|
58197
|
+
colorTemperature: number().int().optional(),
|
|
58181
58198
|
lastChangedAt: number()
|
|
58182
58199
|
});
|
|
58183
58200
|
var ConnectionTestOutcomeSchema = discriminatedUnion("outcome", [
|
|
@@ -58603,11 +58620,11 @@ object({
|
|
|
58603
58620
|
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
58604
58621
|
availablePrograms: array(string()),
|
|
58605
58622
|
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
58606
|
-
|
|
58623
|
+
remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
58607
58624
|
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
58608
|
-
|
|
58625
|
+
delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
58609
58626
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
58610
|
-
|
|
58627
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
58611
58628
|
/** True when the door is reported open; null when the door state is not known. */
|
|
58612
58629
|
doorOpen: boolean().nullable(),
|
|
58613
58630
|
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
@@ -59225,7 +59242,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
|
|
|
59225
59242
|
object({
|
|
59226
59243
|
/** Active speed as 0..100 inclusive. Null when the device has no
|
|
59227
59244
|
* speed surface (single-speed fan). */
|
|
59228
|
-
|
|
59245
|
+
speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
59229
59246
|
/** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
|
|
59230
59247
|
* a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
|
|
59231
59248
|
percentageStep: number().positive().optional().meta(readingMeta("percentage")),
|
|
@@ -59245,7 +59262,7 @@ object({
|
|
|
59245
59262
|
});
|
|
59246
59263
|
DeviceType.Fan, method(object({
|
|
59247
59264
|
deviceId: number().int().nonnegative(),
|
|
59248
|
-
|
|
59265
|
+
speed: number().min(0).max(100)
|
|
59249
59266
|
}), _void(), {
|
|
59250
59267
|
kind: "mutation",
|
|
59251
59268
|
auth: "protected"
|
|
@@ -59428,7 +59445,7 @@ DeviceType.Humidifier, method(object({
|
|
|
59428
59445
|
});
|
|
59429
59446
|
object({
|
|
59430
59447
|
/** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
|
|
59431
|
-
|
|
59448
|
+
humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
|
|
59432
59449
|
precision: 0,
|
|
59433
59450
|
label: "Humidity"
|
|
59434
59451
|
})),
|
|
@@ -59871,7 +59888,7 @@ object({
|
|
|
59871
59888
|
batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
59872
59889
|
/** 0..100 mowing-completion percentage of the current task, or null when no
|
|
59873
59890
|
* task is active / progress is unavailable. */
|
|
59874
|
-
|
|
59891
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
59875
59892
|
/** Current device/event code (dynamic — mostly status, sometimes an error),
|
|
59876
59893
|
* or null when unknown. */
|
|
59877
59894
|
currentCode: number().nullable().meta(readingMeta("none")),
|
|
@@ -60361,10 +60378,10 @@ object({
|
|
|
60361
60378
|
currentMedia: MediaInfoSchema.nullable(),
|
|
60362
60379
|
/** Current playback position in ms. Null when not seekable or
|
|
60363
60380
|
* nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
|
|
60364
|
-
|
|
60381
|
+
position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
60365
60382
|
/** Total duration of the current media in ms. Null when unknown
|
|
60366
60383
|
* (live stream) or nothing is playing. */
|
|
60367
|
-
|
|
60384
|
+
duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
60368
60385
|
/** Shuffle toggle. Null when no shuffle surface.
|
|
60369
60386
|
* Pair with `DeviceFeature.MediaPlayerShuffle`. */
|
|
60370
60387
|
shuffle: boolean().nullable(),
|
|
@@ -60391,7 +60408,7 @@ DeviceType.MediaPlayer, method(object({ deviceId: number().int().nonnegative() }
|
|
|
60391
60408
|
auth: "protected"
|
|
60392
60409
|
}), method(object({
|
|
60393
60410
|
deviceId: number().int().nonnegative(),
|
|
60394
|
-
|
|
60411
|
+
position: number().int().nonnegative()
|
|
60395
60412
|
}), _void(), {
|
|
60396
60413
|
kind: "mutation",
|
|
60397
60414
|
auth: "protected"
|
|
@@ -61064,9 +61081,9 @@ var NetworkLinkStatusSchema = object({
|
|
|
61064
61081
|
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
61065
61082
|
* SKIP a null rather than coerce it.
|
|
61066
61083
|
*/
|
|
61067
|
-
|
|
61084
|
+
signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
61068
61085
|
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
61069
|
-
|
|
61086
|
+
rssi: number().optional().meta(readingMeta("signal-level")),
|
|
61070
61087
|
/** Network name of a wireless link, when the firmware reports it. */
|
|
61071
61088
|
ssid: string().optional(),
|
|
61072
61089
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
@@ -62216,16 +62233,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
62216
62233
|
auth: "admin"
|
|
62217
62234
|
});
|
|
62218
62235
|
object({
|
|
62219
|
-
/** Instantaneous power draw
|
|
62220
|
-
|
|
62236
|
+
/** Instantaneous power draw (watts). */
|
|
62237
|
+
power: number().optional().meta(readingMeta("power", { label: "Power" })),
|
|
62221
62238
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
62222
|
-
|
|
62223
|
-
/** Voltage
|
|
62224
|
-
|
|
62239
|
+
energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
|
|
62240
|
+
/** Voltage (volts). */
|
|
62241
|
+
voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
62225
62242
|
/** Current in amperes. */
|
|
62226
|
-
|
|
62243
|
+
current: number().optional().meta(readingMeta("current", { label: "Current" })),
|
|
62227
62244
|
/** Apparent power in volt-amperes. */
|
|
62228
|
-
|
|
62245
|
+
apparentPower: number().optional().meta(readingMeta("apparent-power")),
|
|
62229
62246
|
/** Power factor (0..1) if reported. */
|
|
62230
62247
|
powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
|
|
62231
62248
|
/** Ms epoch when the slice was last updated. */
|
|
@@ -62280,16 +62297,13 @@ object({
|
|
|
62280
62297
|
location: string().nullable(),
|
|
62281
62298
|
/** GPS coordinates when available. Null otherwise. */
|
|
62282
62299
|
gps: GpsLocationSchema.nullable(),
|
|
62283
|
-
/** Optional battery level of the tracking device (0..100). Null
|
|
62284
|
-
* when not reported. */
|
|
62285
|
-
batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
62286
62300
|
/** Ms epoch when the slice was last updated. */
|
|
62287
62301
|
lastChangedAt: number()
|
|
62288
62302
|
});
|
|
62289
62303
|
DeviceType.Presence;
|
|
62290
62304
|
object({
|
|
62291
62305
|
/** Current pressure in hPa. `null` when the sample was refused (D393). */
|
|
62292
|
-
|
|
62306
|
+
pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
|
|
62293
62307
|
/** Ms epoch when the slice was last updated. */
|
|
62294
62308
|
lastFetchedAt: number()
|
|
62295
62309
|
});
|
|
@@ -65292,7 +65306,7 @@ object({
|
|
|
65292
65306
|
DeviceType.Sensor;
|
|
65293
65307
|
object({
|
|
65294
65308
|
/** Current temperature in Celsius. `null` when the sample was refused (D393). */
|
|
65295
|
-
|
|
65309
|
+
temperature: number().nullable().meta(readingMeta("temperature", {
|
|
65296
65310
|
precision: 1,
|
|
65297
65311
|
label: "Temperature"
|
|
65298
65312
|
})),
|
|
@@ -65556,7 +65570,7 @@ object({
|
|
|
65556
65570
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
65557
65571
|
availableFanSpeeds: array(string()),
|
|
65558
65572
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
65559
|
-
|
|
65573
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65560
65574
|
/** Current error code (0 / null = no error). */
|
|
65561
65575
|
errorCode: number().nullable().meta(readingMeta("none")),
|
|
65562
65576
|
/** Human label for {@link errorCode}, or null when none / undecodable. */
|
|
@@ -76628,7 +76642,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76628
76642
|
label: t("Full brightness", "Luminosità massima"),
|
|
76629
76643
|
phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
|
|
76630
76644
|
icon: "sun",
|
|
76631
|
-
args: {
|
|
76645
|
+
args: { level: 100 }
|
|
76632
76646
|
},
|
|
76633
76647
|
{
|
|
76634
76648
|
id: "brightness.half",
|
|
@@ -76636,7 +76650,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76636
76650
|
label: t("Half brightness", "Luminosità a metà"),
|
|
76637
76651
|
phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
|
|
76638
76652
|
icon: "sun-dim",
|
|
76639
|
-
args: {
|
|
76653
|
+
args: { level: 50 }
|
|
76640
76654
|
},
|
|
76641
76655
|
{
|
|
76642
76656
|
id: "brightness.off",
|
|
@@ -76644,16 +76658,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76644
76658
|
label: t("Brightness off", "Luminosità a zero"),
|
|
76645
76659
|
phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
|
|
76646
76660
|
icon: "lightbulb-off",
|
|
76647
|
-
args: {
|
|
76661
|
+
args: { level: 0 }
|
|
76648
76662
|
},
|
|
76649
76663
|
{
|
|
76650
76664
|
id: "brightness.set",
|
|
76651
76665
|
method: "setBrightness",
|
|
76652
76666
|
label: t("Set brightness", "Imposta la luminosità"),
|
|
76653
|
-
phrase: t("Set the brightness of {device} to {
|
|
76667
|
+
phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
|
|
76654
76668
|
icon: "sun-medium",
|
|
76655
76669
|
openArgs: [{
|
|
76656
|
-
key: "
|
|
76670
|
+
key: "level",
|
|
76657
76671
|
label: PERCENT,
|
|
76658
76672
|
offer: {
|
|
76659
76673
|
kind: "number",
|
|
@@ -76667,13 +76681,13 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76667
76681
|
],
|
|
76668
76682
|
state: [{
|
|
76669
76683
|
kind: "numeric",
|
|
76670
|
-
field: "
|
|
76684
|
+
field: "level",
|
|
76671
76685
|
quantity: t("the brightness", "la luminosità"),
|
|
76672
76686
|
label: t("Brightness", "Luminosità"),
|
|
76673
76687
|
unit: "%",
|
|
76674
76688
|
icon: "sun"
|
|
76675
76689
|
}],
|
|
76676
|
-
events: { onBrightnessChanged: { notOperatorFacing: "the `
|
|
76690
|
+
events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
|
|
76677
76691
|
},
|
|
76678
76692
|
color: {
|
|
76679
76693
|
scope: "device",
|
|
@@ -76687,7 +76701,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76687
76701
|
icon: "sun",
|
|
76688
76702
|
args: { color: {
|
|
76689
76703
|
mode: "mired",
|
|
76690
|
-
|
|
76704
|
+
colorTemperature: 370
|
|
76691
76705
|
} }
|
|
76692
76706
|
},
|
|
76693
76707
|
{
|
|
@@ -76698,7 +76712,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
76698
76712
|
icon: "snowflake",
|
|
76699
76713
|
args: { color: {
|
|
76700
76714
|
mode: "mired",
|
|
76701
|
-
|
|
76715
|
+
colorTemperature: 200
|
|
76702
76716
|
} }
|
|
76703
76717
|
},
|
|
76704
76718
|
{
|
|
@@ -77312,7 +77326,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77312
77326
|
label: t("Fan off", "Ventilatore spento"),
|
|
77313
77327
|
phrase: t("Stop {device}", "Ferma {device}"),
|
|
77314
77328
|
icon: "power-off",
|
|
77315
|
-
args: {
|
|
77329
|
+
args: { speed: 0 }
|
|
77316
77330
|
},
|
|
77317
77331
|
{
|
|
77318
77332
|
id: "fan.full",
|
|
@@ -77320,16 +77334,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77320
77334
|
label: t("Fan full", "Ventilatore al massimo"),
|
|
77321
77335
|
phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
|
|
77322
77336
|
icon: "fan",
|
|
77323
|
-
args: {
|
|
77337
|
+
args: { speed: 100 }
|
|
77324
77338
|
},
|
|
77325
77339
|
{
|
|
77326
77340
|
id: "fan.speed",
|
|
77327
77341
|
method: "setPercentage",
|
|
77328
77342
|
label: t("Set speed", "Imposta la velocità"),
|
|
77329
|
-
phrase: t("Set the speed of {device} to {
|
|
77343
|
+
phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
|
|
77330
77344
|
icon: "fan",
|
|
77331
77345
|
openArgs: [{
|
|
77332
|
-
key: "
|
|
77346
|
+
key: "speed",
|
|
77333
77347
|
label: t("Speed", "Velocità"),
|
|
77334
77348
|
offer: {
|
|
77335
77349
|
kind: "number",
|
|
@@ -77391,7 +77405,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
77391
77405
|
],
|
|
77392
77406
|
state: [{
|
|
77393
77407
|
kind: "numeric",
|
|
77394
|
-
field: "
|
|
77408
|
+
field: "speed",
|
|
77395
77409
|
quantity: t("the speed", "la velocità"),
|
|
77396
77410
|
label: t("Speed", "Velocità"),
|
|
77397
77411
|
unit: "%",
|
|
@@ -78189,7 +78203,7 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78189
78203
|
},
|
|
78190
78204
|
{
|
|
78191
78205
|
kind: "numeric",
|
|
78192
|
-
field: "
|
|
78206
|
+
field: "progress",
|
|
78193
78207
|
quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
|
|
78194
78208
|
label: t("Progress", "Avanzamento"),
|
|
78195
78209
|
unit: "%",
|
|
@@ -78547,10 +78561,10 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
78547
78561
|
id: "media.seek",
|
|
78548
78562
|
method: "seek",
|
|
78549
78563
|
label: t("Seek", "Vai al punto"),
|
|
78550
|
-
phrase: t("Move {device} to {
|
|
78564
|
+
phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
|
|
78551
78565
|
icon: "fast-forward",
|
|
78552
78566
|
openArgs: [{
|
|
78553
|
-
key: "
|
|
78567
|
+
key: "position",
|
|
78554
78568
|
label: t("Position", "Posizione"),
|
|
78555
78569
|
offer: {
|
|
78556
78570
|
kind: "number",
|
|
@@ -79599,7 +79613,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79599
79613
|
state: [
|
|
79600
79614
|
{
|
|
79601
79615
|
kind: "numeric",
|
|
79602
|
-
field: "
|
|
79616
|
+
field: "co2",
|
|
79603
79617
|
quantity: t("the CO₂", "la CO₂"),
|
|
79604
79618
|
label: t("CO₂", "CO₂"),
|
|
79605
79619
|
unit: "ppm",
|
|
@@ -79607,7 +79621,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79607
79621
|
},
|
|
79608
79622
|
{
|
|
79609
79623
|
kind: "numeric",
|
|
79610
|
-
field: "
|
|
79624
|
+
field: "voc",
|
|
79611
79625
|
quantity: t("the VOC level", "il livello di COV"),
|
|
79612
79626
|
label: t("VOC", "COV"),
|
|
79613
79627
|
unit: "ppb",
|
|
@@ -79643,7 +79657,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79643
79657
|
noun: t("Light level", "Luminosità ambiente"),
|
|
79644
79658
|
state: [{
|
|
79645
79659
|
kind: "numeric",
|
|
79646
|
-
field: "
|
|
79660
|
+
field: "illuminance",
|
|
79647
79661
|
quantity: t("the light level", "la luminosità"),
|
|
79648
79662
|
label: t("Illuminance", "Illuminamento"),
|
|
79649
79663
|
unit: "lx",
|
|
@@ -79846,7 +79860,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79846
79860
|
noun: t("Humidity", "Umidità"),
|
|
79847
79861
|
state: [{
|
|
79848
79862
|
kind: "numeric",
|
|
79849
|
-
field: "
|
|
79863
|
+
field: "humidity",
|
|
79850
79864
|
quantity: t("the humidity", "l’umidità"),
|
|
79851
79865
|
label: t("Humidity", "Umidità"),
|
|
79852
79866
|
unit: "%",
|
|
@@ -79894,7 +79908,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79894
79908
|
state: [
|
|
79895
79909
|
{
|
|
79896
79910
|
kind: "numeric",
|
|
79897
|
-
field: "
|
|
79911
|
+
field: "power",
|
|
79898
79912
|
quantity: t("the power draw", "il consumo"),
|
|
79899
79913
|
label: t("Power", "Potenza"),
|
|
79900
79914
|
unit: "W",
|
|
@@ -79902,7 +79916,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79902
79916
|
},
|
|
79903
79917
|
{
|
|
79904
79918
|
kind: "numeric",
|
|
79905
|
-
field: "
|
|
79919
|
+
field: "energy",
|
|
79906
79920
|
quantity: t("the energy used", "l’energia consumata"),
|
|
79907
79921
|
label: t("Energy", "Energia"),
|
|
79908
79922
|
unit: "kWh",
|
|
@@ -79910,7 +79924,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79910
79924
|
},
|
|
79911
79925
|
{
|
|
79912
79926
|
kind: "numeric",
|
|
79913
|
-
field: "
|
|
79927
|
+
field: "voltage",
|
|
79914
79928
|
quantity: t("the voltage", "la tensione"),
|
|
79915
79929
|
label: t("Voltage", "Tensione"),
|
|
79916
79930
|
unit: "V",
|
|
@@ -79918,7 +79932,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79918
79932
|
},
|
|
79919
79933
|
{
|
|
79920
79934
|
kind: "numeric",
|
|
79921
|
-
field: "
|
|
79935
|
+
field: "current",
|
|
79922
79936
|
quantity: t("the current", "la corrente"),
|
|
79923
79937
|
label: t("Current", "Corrente"),
|
|
79924
79938
|
unit: "A",
|
|
@@ -79935,13 +79949,6 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79935
79949
|
label: t("Where", "Posizione"),
|
|
79936
79950
|
phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
|
|
79937
79951
|
icon: "map-pin"
|
|
79938
|
-
}, {
|
|
79939
|
-
kind: "numeric",
|
|
79940
|
-
field: "batteryPercent",
|
|
79941
|
-
quantity: t("the phone battery", "la batteria del telefono"),
|
|
79942
|
-
label: t("Battery", "Batteria"),
|
|
79943
|
-
unit: "%",
|
|
79944
|
-
icon: "battery"
|
|
79945
79952
|
}]
|
|
79946
79953
|
},
|
|
79947
79954
|
"pressure-sensor": {
|
|
@@ -79949,7 +79956,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79949
79956
|
noun: t("Pressure", "Pressione"),
|
|
79950
79957
|
state: [{
|
|
79951
79958
|
kind: "numeric",
|
|
79952
|
-
field: "
|
|
79959
|
+
field: "pressure",
|
|
79953
79960
|
quantity: t("the pressure", "la pressione"),
|
|
79954
79961
|
label: t("Pressure", "Pressione"),
|
|
79955
79962
|
unit: "hPa",
|
|
@@ -79985,7 +79992,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
79985
79992
|
noun: t("Temperature", "Temperatura"),
|
|
79986
79993
|
state: [{
|
|
79987
79994
|
kind: "numeric",
|
|
79988
|
-
field: "
|
|
79995
|
+
field: "temperature",
|
|
79989
79996
|
quantity: t("the temperature", "la temperatura"),
|
|
79990
79997
|
label: t("Temperature", "Temperatura"),
|
|
79991
79998
|
unit: "°C",
|
|
@@ -80056,7 +80063,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80056
80063
|
state: [
|
|
80057
80064
|
{
|
|
80058
80065
|
kind: "numeric",
|
|
80059
|
-
field: "
|
|
80066
|
+
field: "level",
|
|
80060
80067
|
quantity: t("the battery level", "il livello della batteria"),
|
|
80061
80068
|
label: t("Battery", "Batteria"),
|
|
80062
80069
|
unit: "%",
|
|
@@ -80098,7 +80105,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80098
80105
|
icon: "battery-charging"
|
|
80099
80106
|
}
|
|
80100
80107
|
],
|
|
80101
|
-
events: { onStatusChanged: { notOperatorFacing: "the
|
|
80108
|
+
events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
|
|
80102
80109
|
extraEvents: [{
|
|
80103
80110
|
category: EventCategory.DeviceAwake,
|
|
80104
80111
|
label: t("Woke up", "Risvegliato"),
|
|
@@ -80116,7 +80123,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
80116
80123
|
noun: t("Network link", "Collegamento di rete"),
|
|
80117
80124
|
state: [{
|
|
80118
80125
|
kind: "numeric",
|
|
80119
|
-
field: "
|
|
80126
|
+
field: "signal",
|
|
80120
80127
|
quantity: t("the signal strength", "l’intensità del segnale"),
|
|
80121
80128
|
label: t("Signal", "Segnale"),
|
|
80122
80129
|
unit: "%",
|