@camstack/addon-import-alexa 0.2.160 → 0.2.162
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-TwgbETGR.mjs → MotionZonesSettings-ByDKuk5o.mjs} +2 -2
- package/dist/{PrivacyMaskSettings-BoNkDD5o.mjs → PrivacyMaskSettings-Cn-_9Syv.mjs} +4 -4
- package/dist/{SceneMonitorEditor-4TxlnJK0.mjs → SceneMonitorEditor-jDMtE1yg.mjs} +3 -3
- package/dist/_stub.js +51 -51
- package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_import_alexa_page-CZPqws-b.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_import_alexa_page-Ck3EMdmv.mjs} +3 -3
- package/dist/{_virtual_mf___mfe_internal__addon_import_alexa_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-Bj2TfHO6.mjs → _virtual_mf___mfe_internal__addon_import_alexa_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DE1dtKjc.mjs} +1 -1
- package/dist/addon.js +173 -173
- package/dist/addon.mjs +173 -173
- package/dist/{hostInit-Datq9hsz.mjs → hostInit-CoSVGWK6.mjs} +2 -2
- package/dist/{player-overlays-VaUrkkRt.mjs → player-overlays-CcdvNfxc.mjs} +1 -1
- package/dist/remoteEntry.js +1 -1
- package/dist/{responsive-D9B1kcZz.mjs → responsive-BmleF5y2.mjs} +1 -1
- package/dist/{scene-monitor-copy-CunyuMVK.mjs → scene-monitor-copy-BEZSY5WG.mjs} +1 -1
- package/dist/{square-CuVo4SNm.mjs → square-DZHhUhzl.mjs} +1 -1
- package/dist/{trash-2-Bjze04-b.mjs → trash-2-BVrrPiKB.mjs} +1 -1
- package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_import_alexa_page__remoteEntry_js-BY9vB6pT.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_import_alexa_page__remoteEntry_js-BA8fy0_J.mjs} +1 -1
- package/package.json +1 -1
package/dist/addon.mjs
CHANGED
|
@@ -45,7 +45,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
45
45
|
var __toCommonJS = (mod) => __hasOwnProp.call(mod, "module.exports") ? mod["module.exports"] : __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
46
46
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
47
47
|
//#endregion
|
|
48
|
-
//#region ../types/dist/event-category-
|
|
48
|
+
//#region ../types/dist/event-category-DmZDPDf_.mjs
|
|
49
49
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
50
50
|
EventCategory["SystemBoot"] = "system.boot";
|
|
51
51
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -672,7 +672,7 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
672
672
|
* (a track was promoted to a stationary-registry entry) or departs (the
|
|
673
673
|
* object moved / was removed). Telemetry (D8): lossy, drives a UI refresh of
|
|
674
674
|
* the dedicated "Stationary" section — never the live event feed. Payload:
|
|
675
|
-
* `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp }`.
|
|
675
|
+
* `{ deviceId, entryId, className, phase:'appeared'|'departed', timestamp, observedAt, zones }`.
|
|
676
676
|
*/
|
|
677
677
|
EventCategory["PipelineAnalyticsStationaryChanged"] = "pipeline-analytics.stationary-changed";
|
|
678
678
|
/**
|
|
@@ -5626,7 +5626,7 @@ var ZodIssueCode = {
|
|
|
5626
5626
|
var ZodFirstPartyTypeKind;
|
|
5627
5627
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5628
5628
|
//#endregion
|
|
5629
|
-
//#region ../types/dist/sleep-
|
|
5629
|
+
//#region ../types/dist/sleep-Crlmu_tO.mjs
|
|
5630
5630
|
/**
|
|
5631
5631
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5632
5632
|
* window to float samples (D455).
|
|
@@ -9146,11 +9146,11 @@ var CAP_NAMES = Object.freeze([
|
|
|
9146
9146
|
Object.freeze({
|
|
9147
9147
|
"air-quality-sensor": [
|
|
9148
9148
|
{
|
|
9149
|
-
"path": "
|
|
9149
|
+
"path": "co2",
|
|
9150
9150
|
"valueType": "number"
|
|
9151
9151
|
},
|
|
9152
9152
|
{
|
|
9153
|
-
"path": "
|
|
9153
|
+
"path": "voc",
|
|
9154
9154
|
"valueType": "number"
|
|
9155
9155
|
},
|
|
9156
9156
|
{
|
|
@@ -9200,7 +9200,7 @@ Object.freeze({
|
|
|
9200
9200
|
}
|
|
9201
9201
|
],
|
|
9202
9202
|
"ambient-light-sensor": [{
|
|
9203
|
-
"path": "
|
|
9203
|
+
"path": "illuminance",
|
|
9204
9204
|
"valueType": "number"
|
|
9205
9205
|
}],
|
|
9206
9206
|
"audio-metrics": [
|
|
@@ -9261,7 +9261,7 @@ Object.freeze({
|
|
|
9261
9261
|
],
|
|
9262
9262
|
"battery": [
|
|
9263
9263
|
{
|
|
9264
|
-
"path": "
|
|
9264
|
+
"path": "level",
|
|
9265
9265
|
"valueType": "number"
|
|
9266
9266
|
},
|
|
9267
9267
|
{
|
|
@@ -9283,7 +9283,7 @@ Object.freeze({
|
|
|
9283
9283
|
"valueType": "number"
|
|
9284
9284
|
},
|
|
9285
9285
|
{
|
|
9286
|
-
"path": "
|
|
9286
|
+
"path": "voltage",
|
|
9287
9287
|
"valueType": "number"
|
|
9288
9288
|
},
|
|
9289
9289
|
{
|
|
@@ -9304,7 +9304,7 @@ Object.freeze({
|
|
|
9304
9304
|
"valueType": "boolean"
|
|
9305
9305
|
}],
|
|
9306
9306
|
"brightness": [{
|
|
9307
|
-
"path": "
|
|
9307
|
+
"path": "level",
|
|
9308
9308
|
"valueType": "number"
|
|
9309
9309
|
}],
|
|
9310
9310
|
"broker": [{
|
|
@@ -9505,7 +9505,7 @@ Object.freeze({
|
|
|
9505
9505
|
"valueType": "number"
|
|
9506
9506
|
},
|
|
9507
9507
|
{
|
|
9508
|
-
"path": "
|
|
9508
|
+
"path": "colorTemperature",
|
|
9509
9509
|
"valueType": "number"
|
|
9510
9510
|
}
|
|
9511
9511
|
],
|
|
@@ -9684,15 +9684,15 @@ Object.freeze({
|
|
|
9684
9684
|
"valueType": "string"
|
|
9685
9685
|
},
|
|
9686
9686
|
{
|
|
9687
|
-
"path": "
|
|
9687
|
+
"path": "remaining",
|
|
9688
9688
|
"valueType": "number"
|
|
9689
9689
|
},
|
|
9690
9690
|
{
|
|
9691
|
-
"path": "
|
|
9691
|
+
"path": "delayedStart",
|
|
9692
9692
|
"valueType": "number"
|
|
9693
9693
|
},
|
|
9694
9694
|
{
|
|
9695
|
-
"path": "
|
|
9695
|
+
"path": "progress",
|
|
9696
9696
|
"valueType": "number"
|
|
9697
9697
|
},
|
|
9698
9698
|
{
|
|
@@ -9806,7 +9806,7 @@ Object.freeze({
|
|
|
9806
9806
|
],
|
|
9807
9807
|
"fan-control": [
|
|
9808
9808
|
{
|
|
9809
|
-
"path": "
|
|
9809
|
+
"path": "speed",
|
|
9810
9810
|
"valueType": "number"
|
|
9811
9811
|
},
|
|
9812
9812
|
{
|
|
@@ -9906,7 +9906,7 @@ Object.freeze({
|
|
|
9906
9906
|
}
|
|
9907
9907
|
],
|
|
9908
9908
|
"humidity-sensor": [{
|
|
9909
|
-
"path": "
|
|
9909
|
+
"path": "humidity",
|
|
9910
9910
|
"valueType": "number"
|
|
9911
9911
|
}],
|
|
9912
9912
|
"image": [{
|
|
@@ -10016,7 +10016,7 @@ Object.freeze({
|
|
|
10016
10016
|
"valueType": "number"
|
|
10017
10017
|
},
|
|
10018
10018
|
{
|
|
10019
|
-
"path": "
|
|
10019
|
+
"path": "progress",
|
|
10020
10020
|
"valueType": "number"
|
|
10021
10021
|
},
|
|
10022
10022
|
{
|
|
@@ -10095,11 +10095,11 @@ Object.freeze({
|
|
|
10095
10095
|
"valueType": "string"
|
|
10096
10096
|
},
|
|
10097
10097
|
{
|
|
10098
|
-
"path": "
|
|
10098
|
+
"path": "position",
|
|
10099
10099
|
"valueType": "number"
|
|
10100
10100
|
},
|
|
10101
10101
|
{
|
|
10102
|
-
"path": "
|
|
10102
|
+
"path": "duration",
|
|
10103
10103
|
"valueType": "number"
|
|
10104
10104
|
},
|
|
10105
10105
|
{
|
|
@@ -10201,11 +10201,11 @@ Object.freeze({
|
|
|
10201
10201
|
]
|
|
10202
10202
|
},
|
|
10203
10203
|
{
|
|
10204
|
-
"path": "
|
|
10204
|
+
"path": "signal",
|
|
10205
10205
|
"valueType": "number"
|
|
10206
10206
|
},
|
|
10207
10207
|
{
|
|
10208
|
-
"path": "
|
|
10208
|
+
"path": "rssi",
|
|
10209
10209
|
"valueType": "number"
|
|
10210
10210
|
},
|
|
10211
10211
|
{
|
|
@@ -10336,23 +10336,23 @@ Object.freeze({
|
|
|
10336
10336
|
],
|
|
10337
10337
|
"power-meter": [
|
|
10338
10338
|
{
|
|
10339
|
-
"path": "
|
|
10339
|
+
"path": "power",
|
|
10340
10340
|
"valueType": "number"
|
|
10341
10341
|
},
|
|
10342
10342
|
{
|
|
10343
|
-
"path": "
|
|
10343
|
+
"path": "energy",
|
|
10344
10344
|
"valueType": "number"
|
|
10345
10345
|
},
|
|
10346
10346
|
{
|
|
10347
|
-
"path": "
|
|
10347
|
+
"path": "voltage",
|
|
10348
10348
|
"valueType": "number"
|
|
10349
10349
|
},
|
|
10350
10350
|
{
|
|
10351
|
-
"path": "
|
|
10351
|
+
"path": "current",
|
|
10352
10352
|
"valueType": "number"
|
|
10353
10353
|
},
|
|
10354
10354
|
{
|
|
10355
|
-
"path": "
|
|
10355
|
+
"path": "apparentPower",
|
|
10356
10356
|
"valueType": "number"
|
|
10357
10357
|
},
|
|
10358
10358
|
{
|
|
@@ -10380,14 +10380,10 @@ Object.freeze({
|
|
|
10380
10380
|
{
|
|
10381
10381
|
"path": "gps.accuracyMeters",
|
|
10382
10382
|
"valueType": "number"
|
|
10383
|
-
},
|
|
10384
|
-
{
|
|
10385
|
-
"path": "batteryPercent",
|
|
10386
|
-
"valueType": "number"
|
|
10387
10383
|
}
|
|
10388
10384
|
],
|
|
10389
10385
|
"pressure-sensor": [{
|
|
10390
|
-
"path": "
|
|
10386
|
+
"path": "pressure",
|
|
10391
10387
|
"valueType": "number"
|
|
10392
10388
|
}],
|
|
10393
10389
|
"privacy-mask": [{
|
|
@@ -10701,7 +10697,7 @@ Object.freeze({
|
|
|
10701
10697
|
"valueType": "boolean"
|
|
10702
10698
|
}],
|
|
10703
10699
|
"temperature-sensor": [{
|
|
10704
|
-
"path": "
|
|
10700
|
+
"path": "temperature",
|
|
10705
10701
|
"valueType": "number"
|
|
10706
10702
|
}],
|
|
10707
10703
|
"update": [
|
|
@@ -10749,7 +10745,7 @@ Object.freeze({
|
|
|
10749
10745
|
"valueType": "string"
|
|
10750
10746
|
},
|
|
10751
10747
|
{
|
|
10752
|
-
"path": "
|
|
10748
|
+
"path": "progress",
|
|
10753
10749
|
"valueType": "number"
|
|
10754
10750
|
},
|
|
10755
10751
|
{
|
|
@@ -11234,7 +11230,7 @@ function errMsg(err) {
|
|
|
11234
11230
|
return String(err);
|
|
11235
11231
|
}
|
|
11236
11232
|
//#endregion
|
|
11237
|
-
//#region ../types/dist/composition-
|
|
11233
|
+
//#region ../types/dist/composition-CZImLpOI.mjs
|
|
11238
11234
|
/**
|
|
11239
11235
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
11240
11236
|
*
|
|
@@ -15871,6 +15867,14 @@ var AutomationConditionLeafSchema = object({
|
|
|
15871
15867
|
array(union([string(), number()]))
|
|
15872
15868
|
])
|
|
15873
15869
|
});
|
|
15870
|
+
var AutomationConditionStationaryPresentSchema = object({
|
|
15871
|
+
kind: literal("stationary-present"),
|
|
15872
|
+
deviceId: number().int().nonnegative(),
|
|
15873
|
+
/** Class names; a macro class matches every raw class that maps to it. */
|
|
15874
|
+
classes: array(string().min(1)).min(1).optional(),
|
|
15875
|
+
/** The parked object must be in at least one of these zones. */
|
|
15876
|
+
zones: array(string().min(1)).min(1).optional()
|
|
15877
|
+
});
|
|
15874
15878
|
/**
|
|
15875
15879
|
* The expression leaf, declared as a plain object rather than an intersection
|
|
15876
15880
|
* with {@link ExpressionSourceSchema}: a discriminated union has to be able to
|
|
@@ -15904,7 +15908,8 @@ var AutomationConditionSchema = lazy(() => discriminatedUnion("kind", [
|
|
|
15904
15908
|
child: AutomationConditionSchema
|
|
15905
15909
|
}),
|
|
15906
15910
|
AutomationConditionLeafSchema,
|
|
15907
|
-
AutomationConditionExpressionSchema
|
|
15911
|
+
AutomationConditionExpressionSchema,
|
|
15912
|
+
AutomationConditionStationaryPresentSchema
|
|
15908
15913
|
]));
|
|
15909
15914
|
/**
|
|
15910
15915
|
* What starts a run.
|
|
@@ -15958,6 +15963,17 @@ var AutomationTriggerSchema = discriminatedUnion("kind", [
|
|
|
15958
15963
|
/** Best-so-far confidence the track must reach. */
|
|
15959
15964
|
minScore: number().min(0).max(1).optional()
|
|
15960
15965
|
}),
|
|
15966
|
+
object({
|
|
15967
|
+
kind: literal("stationary"),
|
|
15968
|
+
deviceIds: array(number().int().nonnegative()).min(1),
|
|
15969
|
+
/** Class names; a macro class matches like the detection trigger. */
|
|
15970
|
+
classes: array(string().min(1)).min(1).optional(),
|
|
15971
|
+
/** The parked object must be in at least one of these zones. */
|
|
15972
|
+
zones: array(string().min(1)).min(1).optional(),
|
|
15973
|
+
/** `appeared`: it became parked. `departed`: the registry retired it.
|
|
15974
|
+
* The vocabulary of `PipelineAnalyticsStationaryChanged`. */
|
|
15975
|
+
phase: _enum(["appeared", "departed"])
|
|
15976
|
+
}),
|
|
15961
15977
|
object({
|
|
15962
15978
|
kind: literal("interval"),
|
|
15963
15979
|
minutes: number().int().min(1).max(1440)
|
|
@@ -16167,7 +16183,8 @@ var AutomationConditionTraceNodeSchema = object({
|
|
|
16167
16183
|
"any",
|
|
16168
16184
|
"not",
|
|
16169
16185
|
"condition",
|
|
16170
|
-
"expression"
|
|
16186
|
+
"expression",
|
|
16187
|
+
"stationary-present"
|
|
16171
16188
|
]),
|
|
16172
16189
|
outcome: TraceNodeOutcomeSchema,
|
|
16173
16190
|
reason: string(),
|
|
@@ -19151,7 +19168,7 @@ var CompositionEventPlanSchema = object({
|
|
|
19151
19168
|
stateField: string(),
|
|
19152
19169
|
fieldKey: string()
|
|
19153
19170
|
});
|
|
19154
|
-
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.
|
|
19171
|
+
/** One refusal, named (D391). `path` points into the composition, e.g. `features[0].fields.temperature`. */
|
|
19155
19172
|
var CompositionProblemSchema = object({
|
|
19156
19173
|
code: _enum([
|
|
19157
19174
|
"reserved-variant",
|
|
@@ -19470,7 +19487,7 @@ var GROUP_TEMPLATES = [
|
|
|
19470
19487
|
summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
|
|
19471
19488
|
role: DeviceRole.TemperatureSensor,
|
|
19472
19489
|
outputCap: "temperature-sensor",
|
|
19473
|
-
outputField: "
|
|
19490
|
+
outputField: "temperature",
|
|
19474
19491
|
quantity: "temperature",
|
|
19475
19492
|
defaultAggregate: "mean",
|
|
19476
19493
|
empty: "null",
|
|
@@ -19481,7 +19498,7 @@ var GROUP_TEMPLATES = [
|
|
|
19481
19498
|
summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19482
19499
|
role: DeviceRole.HumiditySensor,
|
|
19483
19500
|
outputCap: "humidity-sensor",
|
|
19484
|
-
outputField: "
|
|
19501
|
+
outputField: "humidity",
|
|
19485
19502
|
quantity: "humidity",
|
|
19486
19503
|
defaultAggregate: "mean",
|
|
19487
19504
|
empty: "null",
|
|
@@ -19492,7 +19509,7 @@ var GROUP_TEMPLATES = [
|
|
|
19492
19509
|
summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
|
|
19493
19510
|
role: DeviceRole.PressureSensor,
|
|
19494
19511
|
outputCap: "pressure-sensor",
|
|
19495
|
-
outputField: "
|
|
19512
|
+
outputField: "pressure",
|
|
19496
19513
|
quantity: "pressure",
|
|
19497
19514
|
defaultAggregate: "mean",
|
|
19498
19515
|
empty: "null",
|
|
@@ -19503,7 +19520,7 @@ var GROUP_TEMPLATES = [
|
|
|
19503
19520
|
summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
|
|
19504
19521
|
role: DeviceRole.AmbientLightSensor,
|
|
19505
19522
|
outputCap: "ambient-light-sensor",
|
|
19506
|
-
outputField: "
|
|
19523
|
+
outputField: "illuminance",
|
|
19507
19524
|
quantity: "illuminance",
|
|
19508
19525
|
defaultAggregate: "mean",
|
|
19509
19526
|
empty: "null",
|
|
@@ -19514,7 +19531,7 @@ var GROUP_TEMPLATES = [
|
|
|
19514
19531
|
summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
|
|
19515
19532
|
role: DeviceRole.PowerSensor,
|
|
19516
19533
|
outputCap: "power-meter",
|
|
19517
|
-
outputField: "
|
|
19534
|
+
outputField: "power",
|
|
19518
19535
|
quantity: "power",
|
|
19519
19536
|
defaultAggregate: "sum",
|
|
19520
19537
|
empty: "omit",
|
|
@@ -19525,7 +19542,7 @@ var GROUP_TEMPLATES = [
|
|
|
19525
19542
|
summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
|
|
19526
19543
|
role: DeviceRole.EnergySensor,
|
|
19527
19544
|
outputCap: "power-meter",
|
|
19528
|
-
outputField: "
|
|
19545
|
+
outputField: "energy",
|
|
19529
19546
|
quantity: "energy",
|
|
19530
19547
|
defaultAggregate: "sum",
|
|
19531
19548
|
empty: "omit",
|
|
@@ -19536,7 +19553,7 @@ var GROUP_TEMPLATES = [
|
|
|
19536
19553
|
summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
|
|
19537
19554
|
role: DeviceRole.BatterySensor,
|
|
19538
19555
|
outputCap: "battery",
|
|
19539
|
-
outputField: "
|
|
19556
|
+
outputField: "level",
|
|
19540
19557
|
quantity: "percentage",
|
|
19541
19558
|
defaultAggregate: "mean",
|
|
19542
19559
|
empty: "null",
|
|
@@ -58015,9 +58032,9 @@ method(object({ nodeId: string().optional() }).optional(), array(AddonListItemSc
|
|
|
58015
58032
|
*/
|
|
58016
58033
|
var AirQualitySensorStatusSchema = object({
|
|
58017
58034
|
/** Carbon dioxide concentration in ppm. */
|
|
58018
|
-
|
|
58035
|
+
co2: number().min(0).optional().meta(readingMeta("concentration-volume")),
|
|
58019
58036
|
/** Total volatile organic compounds in ppb. */
|
|
58020
|
-
|
|
58037
|
+
voc: number().min(0).optional().meta(readingMeta("concentration-ppb")),
|
|
58021
58038
|
/** Particulate matter ≤ 2.5 μm in µg/m³. */
|
|
58022
58039
|
pm25: number().min(0).optional().meta(readingMeta("concentration-mass")),
|
|
58023
58040
|
/** Particulate matter ≤ 10 μm in µg/m³. */
|
|
@@ -58050,12 +58067,12 @@ var airQualitySensorCapability = {
|
|
|
58050
58067
|
* History (D850): recorded series.
|
|
58051
58068
|
*/
|
|
58052
58069
|
history: { fields: {
|
|
58053
|
-
|
|
58070
|
+
co2: {
|
|
58054
58071
|
kind: "gauge",
|
|
58055
58072
|
unit: "ppm",
|
|
58056
58073
|
deadband: 5
|
|
58057
58074
|
},
|
|
58058
|
-
|
|
58075
|
+
voc: {
|
|
58059
58076
|
kind: "gauge",
|
|
58060
58077
|
unit: "ppb",
|
|
58061
58078
|
deadband: 5
|
|
@@ -58086,7 +58103,7 @@ var airQualitySensorCapability = {
|
|
|
58086
58103
|
*/
|
|
58087
58104
|
var AmbientLightSensorStatusSchema = object({
|
|
58088
58105
|
/** Current illuminance in lux (lx). `null` when the sample was refused (D393). */
|
|
58089
|
-
|
|
58106
|
+
illuminance: number().min(0).nullable().meta(readingMeta("illuminance", {
|
|
58090
58107
|
precision: 0,
|
|
58091
58108
|
label: "Illuminance"
|
|
58092
58109
|
})),
|
|
@@ -58115,7 +58132,7 @@ var ambientLightSensorCapability = {
|
|
|
58115
58132
|
/**
|
|
58116
58133
|
* History (D850): recorded series. Wide range, so a RELATIVE deadband (10 %).
|
|
58117
58134
|
*/
|
|
58118
|
-
history: { fields: {
|
|
58135
|
+
history: { fields: { illuminance: {
|
|
58119
58136
|
kind: "gauge",
|
|
58120
58137
|
unit: "lx",
|
|
58121
58138
|
deadbandPct: 10,
|
|
@@ -58428,7 +58445,7 @@ var BatteryStatusSchema = object({
|
|
|
58428
58445
|
* Consumers must SKIP a null rather than coerce it — `battery-band` already
|
|
58429
58446
|
* declines to band a non-finite reading, which is the correct shape.
|
|
58430
58447
|
*/
|
|
58431
|
-
|
|
58448
|
+
level: number().min(0).max(100).nullable().meta(readingMeta("percentage", { label: "Charge" })),
|
|
58432
58449
|
/**
|
|
58433
58450
|
* Charging source. `'dc'` covers wall/USB adapters; `'solar'` is
|
|
58434
58451
|
* Reolink-specific for the Solar Panel 2 accessory (will become
|
|
@@ -58438,7 +58455,7 @@ var BatteryStatusSchema = object({
|
|
|
58438
58455
|
* `'unknown'` is the absence of an answer: the provider has not read the
|
|
58439
58456
|
* power fields yet, or the firmware reported neither. Before it existed,
|
|
58440
58457
|
* two unreadable fields produced `'none'`, and a camera nobody had reached
|
|
58441
|
-
* was drawn "on battery alone" — the same D315 defect `
|
|
58458
|
+
* was drawn "on battery alone" — the same D315 defect `level` closed
|
|
58442
58459
|
* by going nullable. Consumers SKIP it (no charger state published, no
|
|
58443
58460
|
* glyph, no HomeKit ChargingState) rather than coerce it either way.
|
|
58444
58461
|
*/
|
|
@@ -58462,7 +58479,7 @@ var BatteryStatusSchema = object({
|
|
|
58462
58479
|
* that only report charge. A second reading on this cap, not a second
|
|
58463
58480
|
* `numeric-sensor` on the same device.
|
|
58464
58481
|
*/
|
|
58465
|
-
|
|
58482
|
+
voltage: number().nullable().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
58466
58483
|
/**
|
|
58467
58484
|
* Ms epoch of the last time the device PROVED it was reachable — a
|
|
58468
58485
|
* completed firmware round-trip, an observed wake, or an inbound push
|
|
@@ -58496,7 +58513,7 @@ var BatteryStatusSchema = object({
|
|
|
58496
58513
|
/**
|
|
58497
58514
|
* True when the source is a BINARY low-battery indicator (HA
|
|
58498
58515
|
* `binary_sensor` device_class=battery / `LOW_BAT`) that has no real
|
|
58499
|
-
* charge level — `
|
|
58516
|
+
* charge level — `level` is then a coarse stand-in (100 = normal,
|
|
58500
58517
|
* sub-threshold = low). UI MUST render "Normal"/"Low" instead of a
|
|
58501
58518
|
* misleading exact percentage. Absent/false → genuine 0–100 % reading.
|
|
58502
58519
|
*/
|
|
@@ -58516,15 +58533,15 @@ var BATTERY_DEVICE_TYPES = [
|
|
|
58516
58533
|
var batteryCustomize = {
|
|
58517
58534
|
version: 1,
|
|
58518
58535
|
targets: [{
|
|
58519
|
-
id: "
|
|
58536
|
+
id: "level",
|
|
58520
58537
|
cardinality: "scalar",
|
|
58521
58538
|
vocabulary: {
|
|
58522
58539
|
cap: "battery",
|
|
58523
|
-
stateField: "
|
|
58540
|
+
stateField: "level"
|
|
58524
58541
|
},
|
|
58525
58542
|
deviceTypes: BATTERY_DEVICE_TYPES,
|
|
58526
58543
|
apply: "add",
|
|
58527
|
-
path: "
|
|
58544
|
+
path: "level",
|
|
58528
58545
|
sources: [{
|
|
58529
58546
|
kind: "field",
|
|
58530
58547
|
valueKinds: ["number", "string"],
|
|
@@ -58618,7 +58635,7 @@ onStatusChanged: { data: object({
|
|
|
58618
58635
|
schema: BatteryStatusSchema,
|
|
58619
58636
|
kind: "push",
|
|
58620
58637
|
empty: {
|
|
58621
|
-
|
|
58638
|
+
level: null,
|
|
58622
58639
|
charging: "unknown",
|
|
58623
58640
|
sleeping: false,
|
|
58624
58641
|
lastUpdated: 0
|
|
@@ -58645,11 +58662,11 @@ onStatusChanged: { data: object({
|
|
|
58645
58662
|
* History (D850): recorded series. The generic capture replaces the `battery` series of `pipeline-analytics:stats-5m`.
|
|
58646
58663
|
*/
|
|
58647
58664
|
history: { fields: {
|
|
58648
|
-
|
|
58665
|
+
level: {
|
|
58649
58666
|
kind: "gauge",
|
|
58650
58667
|
unit: "%"
|
|
58651
58668
|
},
|
|
58652
|
-
|
|
58669
|
+
voltage: {
|
|
58653
58670
|
kind: "gauge",
|
|
58654
58671
|
unit: "V"
|
|
58655
58672
|
}
|
|
@@ -58709,14 +58726,14 @@ var binaryCapability = {
|
|
|
58709
58726
|
* controls to this single-method surface.
|
|
58710
58727
|
*
|
|
58711
58728
|
* The cap is intentionally minimal: a single `setBrightness({deviceId,
|
|
58712
|
-
*
|
|
58729
|
+
* level})` mutation plus the auto-injected `getStatus`. Drivers
|
|
58713
58730
|
* that expose richer controls (color temperature, scenes, schedules)
|
|
58714
58731
|
* should surface those via the device's `getSettingsUISchema()`
|
|
58715
58732
|
* instead of bloating this cap.
|
|
58716
58733
|
*/
|
|
58717
58734
|
var BrightnessStatusSchema = object({
|
|
58718
58735
|
/** Current level as 0..100 inclusive. Firmware-reported. */
|
|
58719
|
-
|
|
58736
|
+
level: number().min(0).max(100).meta(readingMeta("percentage")),
|
|
58720
58737
|
/** Ms epoch of the last operator-driven change. Useful for UI freshness. */
|
|
58721
58738
|
lastChangedAt: number()
|
|
58722
58739
|
});
|
|
@@ -58728,7 +58745,7 @@ var brightnessCapability = {
|
|
|
58728
58745
|
deviceTypes: [DeviceType.Light],
|
|
58729
58746
|
methods: { setBrightness: method(object({
|
|
58730
58747
|
deviceId: number().int().nonnegative(),
|
|
58731
|
-
|
|
58748
|
+
level: number().min(0).max(100)
|
|
58732
58749
|
}), _void(), {
|
|
58733
58750
|
kind: "mutation",
|
|
58734
58751
|
auth: "protected"
|
|
@@ -58741,7 +58758,7 @@ var brightnessCapability = {
|
|
|
58741
58758
|
*/
|
|
58742
58759
|
onBrightnessChanged: { data: object({
|
|
58743
58760
|
deviceId: number(),
|
|
58744
|
-
|
|
58761
|
+
level: number().min(0).max(100),
|
|
58745
58762
|
lastChangedAt: number()
|
|
58746
58763
|
}) } },
|
|
58747
58764
|
status: {
|
|
@@ -58764,7 +58781,7 @@ onBrightnessChanged: { data: object({
|
|
|
58764
58781
|
/**
|
|
58765
58782
|
* History (D850): recorded series. Actuator tier: level keeps every change.
|
|
58766
58783
|
*/
|
|
58767
|
-
history: { fields: {
|
|
58784
|
+
history: { fields: { level: {
|
|
58768
58785
|
kind: "gauge",
|
|
58769
58786
|
unit: "%",
|
|
58770
58787
|
minIntervalMs: 0
|
|
@@ -59378,11 +59395,11 @@ var ColorInputSchema = discriminatedUnion("mode", [
|
|
|
59378
59395
|
}),
|
|
59379
59396
|
object({
|
|
59380
59397
|
mode: literal("mired"),
|
|
59381
|
-
|
|
59398
|
+
colorTemperature: number().int().min(50).max(1e3)
|
|
59382
59399
|
})
|
|
59383
59400
|
]);
|
|
59384
59401
|
var ColorStatusSchema = object({
|
|
59385
|
-
/** Active color mode — which of `rgb` / `hsv` / `
|
|
59402
|
+
/** Active color mode — which of `rgb` / `hsv` / `colorTemperature` reflects
|
|
59386
59403
|
* the bulb's current state. */
|
|
59387
59404
|
mode: _enum([
|
|
59388
59405
|
"rgb",
|
|
@@ -59394,7 +59411,7 @@ var ColorStatusSchema = object({
|
|
|
59394
59411
|
/** Populated when `mode === 'hsv'`. */
|
|
59395
59412
|
hsv: HsvTripletSchema.optional(),
|
|
59396
59413
|
/** Populated when `mode === 'mired'`. */
|
|
59397
|
-
|
|
59414
|
+
colorTemperature: number().int().optional().meta(readingMeta("colour-temperature")),
|
|
59398
59415
|
/** Ms epoch of the last operator-driven change. */
|
|
59399
59416
|
lastChangedAt: number()
|
|
59400
59417
|
});
|
|
@@ -59426,7 +59443,7 @@ onColorChanged: { data: object({
|
|
|
59426
59443
|
]),
|
|
59427
59444
|
rgb: RgbTripletSchema.optional(),
|
|
59428
59445
|
hsv: HsvTripletSchema.optional(),
|
|
59429
|
-
|
|
59446
|
+
colorTemperature: number().int().optional(),
|
|
59430
59447
|
lastChangedAt: number()
|
|
59431
59448
|
}) } },
|
|
59432
59449
|
status: {
|
|
@@ -60303,11 +60320,11 @@ var DishwasherStatusSchema = object({
|
|
|
60303
60320
|
/** Feature keys of the programs the appliance currently offers — drives the UI selector. */
|
|
60304
60321
|
availablePrograms: array(string()),
|
|
60305
60322
|
/** Seconds remaining on the active cycle, or null when not running / not known. */
|
|
60306
|
-
|
|
60323
|
+
remaining: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
60307
60324
|
/** Seconds the delayed start is set to (time until the cycle starts), or null. */
|
|
60308
|
-
|
|
60325
|
+
delayedStart: number().int().nonnegative().nullable().meta(readingMeta("duration")),
|
|
60309
60326
|
/** Cycle completion 0..100, or null when not applicable. */
|
|
60310
|
-
|
|
60327
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
60311
60328
|
/** True when the door is reported open; null when the door state is not known. */
|
|
60312
60329
|
doorOpen: boolean().nullable(),
|
|
60313
60330
|
/** True when the door is latched (locked) during a cycle; null when not reported. */
|
|
@@ -60526,14 +60543,14 @@ var dishwasherCapability = {
|
|
|
60526
60543
|
runtimeState: DishwasherStatusSchema,
|
|
60527
60544
|
durability: "session",
|
|
60528
60545
|
history: { fields: {
|
|
60529
|
-
|
|
60546
|
+
progress: {
|
|
60530
60547
|
kind: "gauge",
|
|
60531
60548
|
unit: "%",
|
|
60532
60549
|
deadband: 2
|
|
60533
60550
|
},
|
|
60534
60551
|
state: { kind: "enum" },
|
|
60535
60552
|
operationState: { kind: "enum" },
|
|
60536
|
-
|
|
60553
|
+
remaining: {
|
|
60537
60554
|
kind: "gauge",
|
|
60538
60555
|
unit: "s",
|
|
60539
60556
|
minIntervalMs: 6e4
|
|
@@ -61124,7 +61141,7 @@ var FanDirectionSchema = _enum(["forward", "reverse"]);
|
|
|
61124
61141
|
var FanControlStatusSchema = object({
|
|
61125
61142
|
/** Active speed as 0..100 inclusive. Null when the device has no
|
|
61126
61143
|
* speed surface (single-speed fan). */
|
|
61127
|
-
|
|
61144
|
+
speed: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
61128
61145
|
/** Speed granularity the device accepts (HA `percentage_step`, e.g. 25 for
|
|
61129
61146
|
* a 4-speed fan). Absent when unknown — the UI then falls back to step 1. */
|
|
61130
61147
|
percentageStep: number().positive().optional().meta(readingMeta("percentage")),
|
|
@@ -61151,7 +61168,7 @@ var fanControlCapability = {
|
|
|
61151
61168
|
methods: {
|
|
61152
61169
|
setPercentage: method(object({
|
|
61153
61170
|
deviceId: number().int().nonnegative(),
|
|
61154
|
-
|
|
61171
|
+
speed: number().min(0).max(100)
|
|
61155
61172
|
}), _void(), {
|
|
61156
61173
|
kind: "mutation",
|
|
61157
61174
|
auth: "protected"
|
|
@@ -61184,7 +61201,7 @@ var fanControlCapability = {
|
|
|
61184
61201
|
},
|
|
61185
61202
|
/**
|
|
61186
61203
|
* Runtime-state slice — mirrored by the kernel. UI fan speed
|
|
61187
|
-
* sliders read `
|
|
61204
|
+
* sliders read `speed` for live updates.
|
|
61188
61205
|
*/
|
|
61189
61206
|
runtimeState: FanControlStatusSchema,
|
|
61190
61207
|
/**
|
|
@@ -61198,7 +61215,7 @@ var fanControlCapability = {
|
|
|
61198
61215
|
* History (D850): recorded series. Actuator tier: speed keeps every change.
|
|
61199
61216
|
*/
|
|
61200
61217
|
history: { fields: {
|
|
61201
|
-
|
|
61218
|
+
speed: {
|
|
61202
61219
|
kind: "gauge",
|
|
61203
61220
|
unit: "%",
|
|
61204
61221
|
minIntervalMs: 0
|
|
@@ -61643,7 +61660,7 @@ var humidifierCapability = {
|
|
|
61643
61660
|
*/
|
|
61644
61661
|
var HumiditySensorStatusSchema = object({
|
|
61645
61662
|
/** Current relative humidity, 0..100. `null` when the sample was refused (D393). */
|
|
61646
|
-
|
|
61663
|
+
humidity: number().min(0).max(100).nullable().meta(readingMeta("humidity", {
|
|
61647
61664
|
precision: 0,
|
|
61648
61665
|
label: "Humidity"
|
|
61649
61666
|
})),
|
|
@@ -61672,7 +61689,7 @@ var humiditySensorCapability = {
|
|
|
61672
61689
|
/**
|
|
61673
61690
|
* History (D850): recorded series.
|
|
61674
61691
|
*/
|
|
61675
|
-
history: { fields: {
|
|
61692
|
+
history: { fields: { humidity: {
|
|
61676
61693
|
kind: "gauge",
|
|
61677
61694
|
unit: "%",
|
|
61678
61695
|
deadband: .5
|
|
@@ -62312,7 +62329,7 @@ var LawnMowerControlStatusSchema = object({
|
|
|
62312
62329
|
batteryLevel: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
62313
62330
|
/** 0..100 mowing-completion percentage of the current task, or null when no
|
|
62314
62331
|
* task is active / progress is unavailable. */
|
|
62315
|
-
|
|
62332
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
62316
62333
|
/** Current device/event code (dynamic — mostly status, sometimes an error),
|
|
62317
62334
|
* or null when unknown. */
|
|
62318
62335
|
currentCode: number().nullable().meta(readingMeta("none")),
|
|
@@ -62812,7 +62829,7 @@ var lockControlCapability = {
|
|
|
62812
62829
|
volatileStateFields: ["lastChangedAt"]
|
|
62813
62830
|
};
|
|
62814
62831
|
/**
|
|
62815
|
-
* A monotonic total between resets (D944). Energy uses `power-meter.
|
|
62832
|
+
* A monotonic total between resets (D944). Energy uses `power-meter.energy`
|
|
62816
62833
|
* so dashboards keep one series; every other instantaneous reading lands here.
|
|
62817
62834
|
* `value` is the time integral in the source quantity's accumulated base
|
|
62818
62835
|
* (base-unit seconds, or kWh on the power meter). `null` is a gap, never zero.
|
|
@@ -62906,10 +62923,10 @@ var MediaPlayerStatusSchema = object({
|
|
|
62906
62923
|
currentMedia: MediaInfoSchema.nullable(),
|
|
62907
62924
|
/** Current playback position in ms. Null when not seekable or
|
|
62908
62925
|
* nothing is playing. Pair with `DeviceFeature.MediaPlayerSeek`. */
|
|
62909
|
-
|
|
62926
|
+
position: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
62910
62927
|
/** Total duration of the current media in ms. Null when unknown
|
|
62911
62928
|
* (live stream) or nothing is playing. */
|
|
62912
|
-
|
|
62929
|
+
duration: number().int().nonnegative().nullable().meta(readingMeta("duration-ms")),
|
|
62913
62930
|
/** Shuffle toggle. Null when no shuffle surface.
|
|
62914
62931
|
* Pair with `DeviceFeature.MediaPlayerShuffle`. */
|
|
62915
62932
|
shuffle: boolean().nullable(),
|
|
@@ -62948,7 +62965,7 @@ var mediaPlayerCapability = {
|
|
|
62948
62965
|
}),
|
|
62949
62966
|
seek: method(object({
|
|
62950
62967
|
deviceId: number().int().nonnegative(),
|
|
62951
|
-
|
|
62968
|
+
position: number().int().nonnegative()
|
|
62952
62969
|
}), _void(), {
|
|
62953
62970
|
kind: "mutation",
|
|
62954
62971
|
auth: "protected"
|
|
@@ -63020,7 +63037,7 @@ var mediaPlayerCapability = {
|
|
|
63020
63037
|
/**
|
|
63021
63038
|
* History (D850): volume (a level an operator or an automation sets; the
|
|
63022
63039
|
* default 10 s floor folds a slider drag into its end value) and mute.
|
|
63023
|
-
* `
|
|
63040
|
+
* `position` is not recorded: it moves continuously while playing.
|
|
63024
63041
|
*/
|
|
63025
63042
|
history: { fields: {
|
|
63026
63043
|
volumeLevel: {
|
|
@@ -63982,9 +63999,9 @@ var NetworkLinkStatusSchema = object({
|
|
|
63982
63999
|
* one whose reading has not landed must not be drawn at 0 %. Consumers
|
|
63983
64000
|
* SKIP a null rather than coerce it.
|
|
63984
64001
|
*/
|
|
63985
|
-
|
|
64002
|
+
signal: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
63986
64003
|
/** Raw received signal strength in dBm, when the firmware reports one. */
|
|
63987
|
-
|
|
64004
|
+
rssi: number().optional().meta(readingMeta("signal-level")),
|
|
63988
64005
|
/** Network name of a wireless link, when the firmware reports it. */
|
|
63989
64006
|
ssid: string().optional(),
|
|
63990
64007
|
/** Ms epoch of the last observation. Lets consumers reason about freshness. */
|
|
@@ -64020,7 +64037,7 @@ onStatusChanged: { data: object({
|
|
|
64020
64037
|
kind: "push",
|
|
64021
64038
|
empty: {
|
|
64022
64039
|
type: "unknown",
|
|
64023
|
-
|
|
64040
|
+
signal: null,
|
|
64024
64041
|
lastUpdated: 0
|
|
64025
64042
|
}
|
|
64026
64043
|
},
|
|
@@ -64043,13 +64060,13 @@ onStatusChanged: { data: object({
|
|
|
64043
64060
|
* History (D850): recorded series.
|
|
64044
64061
|
*/
|
|
64045
64062
|
history: { fields: {
|
|
64046
|
-
|
|
64063
|
+
signal: {
|
|
64047
64064
|
kind: "gauge",
|
|
64048
64065
|
unit: "%",
|
|
64049
64066
|
deadband: 3,
|
|
64050
64067
|
minIntervalMs: 6e4
|
|
64051
64068
|
},
|
|
64052
|
-
|
|
64069
|
+
rssi: {
|
|
64053
64070
|
kind: "gauge",
|
|
64054
64071
|
unit: "dBm",
|
|
64055
64072
|
deadband: 2,
|
|
@@ -65369,16 +65386,16 @@ method(_void(), PlatformCapabilitiesSchema), method(_void(), HardwareInfoSchema)
|
|
|
65369
65386
|
* in real-world devices.
|
|
65370
65387
|
*/
|
|
65371
65388
|
var PowerMeterStatusSchema = object({
|
|
65372
|
-
/** Instantaneous power draw
|
|
65373
|
-
|
|
65389
|
+
/** Instantaneous power draw (watts). */
|
|
65390
|
+
power: number().optional().meta(readingMeta("power", { label: "Power" })),
|
|
65374
65391
|
/** Cumulative energy in kilowatt-hours since the meter was reset. */
|
|
65375
|
-
|
|
65376
|
-
/** Voltage
|
|
65377
|
-
|
|
65392
|
+
energy: number().optional().meta(readingMeta("energy", { label: "Energy" })),
|
|
65393
|
+
/** Voltage (volts). */
|
|
65394
|
+
voltage: number().optional().meta(readingMeta("voltage", { label: "Voltage" })),
|
|
65378
65395
|
/** Current in amperes. */
|
|
65379
|
-
|
|
65396
|
+
current: number().optional().meta(readingMeta("current", { label: "Current" })),
|
|
65380
65397
|
/** Apparent power in volt-amperes. */
|
|
65381
|
-
|
|
65398
|
+
apparentPower: number().optional().meta(readingMeta("apparent-power")),
|
|
65382
65399
|
/** Power factor (0..1) if reported. */
|
|
65383
65400
|
powerFactor: number().min(0).max(1).optional().meta(readingMeta("ratio")),
|
|
65384
65401
|
/** Ms epoch when the slice was last updated. */
|
|
@@ -65436,14 +65453,14 @@ function powerTarget(id, unit) {
|
|
|
65436
65453
|
advancedExpression: true
|
|
65437
65454
|
};
|
|
65438
65455
|
}
|
|
65439
|
-
/** "Power and energy" extension:
|
|
65456
|
+
/** "Power and energy" extension: power, energy, voltage and current from other devices (D951). */
|
|
65440
65457
|
var powerMeterCustomize = {
|
|
65441
65458
|
version: 1,
|
|
65442
65459
|
targets: [
|
|
65443
|
-
powerTarget("
|
|
65444
|
-
powerTarget("
|
|
65445
|
-
powerTarget("
|
|
65446
|
-
powerTarget("
|
|
65460
|
+
powerTarget("power", "W"),
|
|
65461
|
+
powerTarget("energy", "kWh"),
|
|
65462
|
+
powerTarget("voltage", "V"),
|
|
65463
|
+
powerTarget("current", "A")
|
|
65447
65464
|
]
|
|
65448
65465
|
};
|
|
65449
65466
|
var powerMeterCapability = {
|
|
@@ -65459,41 +65476,41 @@ var powerMeterCapability = {
|
|
|
65459
65476
|
},
|
|
65460
65477
|
runtimeState: PowerMeterStatusSchema,
|
|
65461
65478
|
/**
|
|
65462
|
-
* Runtime-state durability: **restored** — as `numeric-sensor`; `
|
|
65479
|
+
* Runtime-state durability: **restored** — as `numeric-sensor`; `energy` is an accumulator whose restored value is the baseline.
|
|
65463
65480
|
*
|
|
65464
65481
|
* See `RuntimeStateDurability`. Enforced by
|
|
65465
65482
|
* `scripts/check-runtime-state-durability.ts`.
|
|
65466
65483
|
*/
|
|
65467
65484
|
durability: "restored",
|
|
65468
65485
|
/**
|
|
65469
|
-
* History (D850): recorded series. Gauges are floored at 30 s; `
|
|
65486
|
+
* History (D850): recorded series. Gauges are floored at 30 s; `energy` is the one monotonic meter (counter).
|
|
65470
65487
|
*/
|
|
65471
65488
|
history: { fields: {
|
|
65472
|
-
|
|
65489
|
+
power: {
|
|
65473
65490
|
kind: "gauge",
|
|
65474
65491
|
unit: "W",
|
|
65475
65492
|
deadband: 1,
|
|
65476
65493
|
minIntervalMs: 3e4
|
|
65477
65494
|
},
|
|
65478
|
-
|
|
65495
|
+
energy: {
|
|
65479
65496
|
kind: "counter",
|
|
65480
65497
|
unit: "kWh",
|
|
65481
65498
|
deadband: .01,
|
|
65482
65499
|
minIntervalMs: 6e4
|
|
65483
65500
|
},
|
|
65484
|
-
|
|
65501
|
+
voltage: {
|
|
65485
65502
|
kind: "gauge",
|
|
65486
65503
|
unit: "V",
|
|
65487
65504
|
deadband: 1,
|
|
65488
65505
|
minIntervalMs: 3e4
|
|
65489
65506
|
},
|
|
65490
|
-
|
|
65507
|
+
current: {
|
|
65491
65508
|
kind: "gauge",
|
|
65492
65509
|
unit: "A",
|
|
65493
65510
|
deadband: .05,
|
|
65494
65511
|
minIntervalMs: 3e4
|
|
65495
65512
|
},
|
|
65496
|
-
|
|
65513
|
+
apparentPower: {
|
|
65497
65514
|
kind: "gauge",
|
|
65498
65515
|
unit: "VA",
|
|
65499
65516
|
deadband: 1,
|
|
@@ -65543,9 +65560,6 @@ var PresenceStatusSchema = object({
|
|
|
65543
65560
|
location: string().nullable(),
|
|
65544
65561
|
/** GPS coordinates when available. Null otherwise. */
|
|
65545
65562
|
gps: GpsLocationSchema.nullable(),
|
|
65546
|
-
/** Optional battery level of the tracking device (0..100). Null
|
|
65547
|
-
* when not reported. */
|
|
65548
|
-
batteryPercent: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
65549
65563
|
/** Ms epoch when the slice was last updated. */
|
|
65550
65564
|
lastChangedAt: number()
|
|
65551
65565
|
});
|
|
@@ -65574,14 +65588,7 @@ var presenceCapability = {
|
|
|
65574
65588
|
* `scripts/check-runtime-state-durability.ts`.
|
|
65575
65589
|
*/
|
|
65576
65590
|
durability: "restored",
|
|
65577
|
-
|
|
65578
|
-
* History (D850): recorded series.
|
|
65579
|
-
*/
|
|
65580
|
-
history: { fields: { batteryPercent: {
|
|
65581
|
-
kind: "gauge",
|
|
65582
|
-
unit: "%",
|
|
65583
|
-
deadband: 1
|
|
65584
|
-
} } },
|
|
65591
|
+
history: "none",
|
|
65585
65592
|
/** Clock fields: written, but excluded from the compare that decides
|
|
65586
65593
|
* whether persisting is worth a SQLite commit. */
|
|
65587
65594
|
volatileStateFields: ["lastChangedAt"]
|
|
@@ -65596,7 +65603,7 @@ var presenceCapability = {
|
|
|
65596
65603
|
*/
|
|
65597
65604
|
var PressureSensorStatusSchema = object({
|
|
65598
65605
|
/** Current pressure in hPa. `null` when the sample was refused (D393). */
|
|
65599
|
-
|
|
65606
|
+
pressure: number().nullable().meta(readingMeta("pressure", { precision: 0 })),
|
|
65600
65607
|
/** Ms epoch when the slice was last updated. */
|
|
65601
65608
|
lastFetchedAt: number()
|
|
65602
65609
|
});
|
|
@@ -65622,7 +65629,7 @@ var pressureSensorCapability = {
|
|
|
65622
65629
|
/**
|
|
65623
65630
|
* History (D850): recorded series.
|
|
65624
65631
|
*/
|
|
65625
|
-
history: { fields: {
|
|
65632
|
+
history: { fields: { pressure: {
|
|
65626
65633
|
kind: "gauge",
|
|
65627
65634
|
unit: "hPa",
|
|
65628
65635
|
deadband: .1
|
|
@@ -69321,7 +69328,7 @@ var tamperCapability = {
|
|
|
69321
69328
|
*/
|
|
69322
69329
|
var TemperatureSensorStatusSchema = object({
|
|
69323
69330
|
/** Current temperature in Celsius. `null` when the sample was refused (D393). */
|
|
69324
|
-
|
|
69331
|
+
temperature: number().nullable().meta(readingMeta("temperature", {
|
|
69325
69332
|
precision: 1,
|
|
69326
69333
|
label: "Temperature"
|
|
69327
69334
|
})),
|
|
@@ -69350,7 +69357,7 @@ var temperatureSensorCapability = {
|
|
|
69350
69357
|
/**
|
|
69351
69358
|
* History (D850): recorded series.
|
|
69352
69359
|
*/
|
|
69353
|
-
history: { fields: {
|
|
69360
|
+
history: { fields: { temperature: {
|
|
69354
69361
|
kind: "gauge",
|
|
69355
69362
|
unit: "°C",
|
|
69356
69363
|
deadband: .1
|
|
@@ -69647,7 +69654,7 @@ var VacuumControlStatusSchema = object({
|
|
|
69647
69654
|
/** Speed tokens the hardware accepts — drives the UI selector. */
|
|
69648
69655
|
availableFanSpeeds: array(string()),
|
|
69649
69656
|
/** 0..100 cleaning-completion percentage of the current task, or null. */
|
|
69650
|
-
|
|
69657
|
+
progress: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
|
|
69651
69658
|
/** Current error code (0 / null = no error). */
|
|
69652
69659
|
errorCode: number().nullable().meta(readingMeta("none")),
|
|
69653
69660
|
/** Human label for {@link errorCode}, or null when none / undecodable. */
|
|
@@ -71301,7 +71308,7 @@ var BaseDevice = class {
|
|
|
71301
71308
|
* `device-local-state.ts`. Drivers access via:
|
|
71302
71309
|
*
|
|
71303
71310
|
* `this.state.battery.sleeping = true` // patches the battery slice
|
|
71304
|
-
* `const pct = this.state.battery.
|
|
71311
|
+
* `const pct = this.state.battery.level` // reads the battery slice
|
|
71305
71312
|
* `this.state.deviceStatus.online = true` // mirrors `markOnline(true)`
|
|
71306
71313
|
*
|
|
71307
71314
|
* Adding a new cap with `runtimeState:` automatically extends this
|
|
@@ -71341,7 +71348,7 @@ var BaseDevice = class {
|
|
|
71341
71348
|
* shape; drivers don't redeclare it, they just write through.
|
|
71342
71349
|
*
|
|
71343
71350
|
* Read: `this.runtimeState.getCapState('battery')` →
|
|
71344
|
-
* `{
|
|
71351
|
+
* `{level, charging, sleeping, lastUpdated}` for any
|
|
71345
71352
|
* provider that registers `batteryCapability`.
|
|
71346
71353
|
* Write: `this.runtimeState.setCapState('battery', { … })`.
|
|
71347
71354
|
*
|
|
@@ -82544,7 +82551,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
82544
82551
|
label: t("Full brightness", "Luminosità massima"),
|
|
82545
82552
|
phrase: t("Set {device} to full brightness", "Porta {device} alla massima luminosità"),
|
|
82546
82553
|
icon: "sun",
|
|
82547
|
-
args: {
|
|
82554
|
+
args: { level: 100 }
|
|
82548
82555
|
},
|
|
82549
82556
|
{
|
|
82550
82557
|
id: "brightness.half",
|
|
@@ -82552,7 +82559,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
82552
82559
|
label: t("Half brightness", "Luminosità a metà"),
|
|
82553
82560
|
phrase: t("Dim {device} to half", "Abbassa {device} a metà luminosità"),
|
|
82554
82561
|
icon: "sun-dim",
|
|
82555
|
-
args: {
|
|
82562
|
+
args: { level: 50 }
|
|
82556
82563
|
},
|
|
82557
82564
|
{
|
|
82558
82565
|
id: "brightness.off",
|
|
@@ -82560,16 +82567,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
82560
82567
|
label: t("Brightness off", "Luminosità a zero"),
|
|
82561
82568
|
phrase: t("Dim {device} to zero", "Abbassa {device} a zero"),
|
|
82562
82569
|
icon: "lightbulb-off",
|
|
82563
|
-
args: {
|
|
82570
|
+
args: { level: 0 }
|
|
82564
82571
|
},
|
|
82565
82572
|
{
|
|
82566
82573
|
id: "brightness.set",
|
|
82567
82574
|
method: "setBrightness",
|
|
82568
82575
|
label: t("Set brightness", "Imposta la luminosità"),
|
|
82569
|
-
phrase: t("Set the brightness of {device} to {
|
|
82576
|
+
phrase: t("Set the brightness of {device} to {level}", "Imposta la luminosità di {device} a {level}"),
|
|
82570
82577
|
icon: "sun-medium",
|
|
82571
82578
|
openArgs: [{
|
|
82572
|
-
key: "
|
|
82579
|
+
key: "level",
|
|
82573
82580
|
label: PERCENT,
|
|
82574
82581
|
offer: {
|
|
82575
82582
|
kind: "number",
|
|
@@ -82583,13 +82590,13 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
82583
82590
|
],
|
|
82584
82591
|
state: [{
|
|
82585
82592
|
kind: "numeric",
|
|
82586
|
-
field: "
|
|
82593
|
+
field: "level",
|
|
82587
82594
|
quantity: t("the brightness", "la luminosità"),
|
|
82588
82595
|
label: t("Brightness", "Luminosità"),
|
|
82589
82596
|
unit: "%",
|
|
82590
82597
|
icon: "sun"
|
|
82591
82598
|
}],
|
|
82592
|
-
events: { onBrightnessChanged: { notOperatorFacing: "the `
|
|
82599
|
+
events: { onBrightnessChanged: { notOperatorFacing: "the `level` state trigger reads the same change" } }
|
|
82593
82600
|
},
|
|
82594
82601
|
color: {
|
|
82595
82602
|
scope: "device",
|
|
@@ -82603,7 +82610,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
82603
82610
|
icon: "sun",
|
|
82604
82611
|
args: { color: {
|
|
82605
82612
|
mode: "mired",
|
|
82606
|
-
|
|
82613
|
+
colorTemperature: 370
|
|
82607
82614
|
} }
|
|
82608
82615
|
},
|
|
82609
82616
|
{
|
|
@@ -82614,7 +82621,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
82614
82621
|
icon: "snowflake",
|
|
82615
82622
|
args: { color: {
|
|
82616
82623
|
mode: "mired",
|
|
82617
|
-
|
|
82624
|
+
colorTemperature: 200
|
|
82618
82625
|
} }
|
|
82619
82626
|
},
|
|
82620
82627
|
{
|
|
@@ -83228,7 +83235,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
83228
83235
|
label: t("Fan off", "Ventilatore spento"),
|
|
83229
83236
|
phrase: t("Stop {device}", "Ferma {device}"),
|
|
83230
83237
|
icon: "power-off",
|
|
83231
|
-
args: {
|
|
83238
|
+
args: { speed: 0 }
|
|
83232
83239
|
},
|
|
83233
83240
|
{
|
|
83234
83241
|
id: "fan.full",
|
|
@@ -83236,16 +83243,16 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
83236
83243
|
label: t("Fan full", "Ventilatore al massimo"),
|
|
83237
83244
|
phrase: t("Run {device} at full speed", "Porta {device} alla massima velocità"),
|
|
83238
83245
|
icon: "fan",
|
|
83239
|
-
args: {
|
|
83246
|
+
args: { speed: 100 }
|
|
83240
83247
|
},
|
|
83241
83248
|
{
|
|
83242
83249
|
id: "fan.speed",
|
|
83243
83250
|
method: "setPercentage",
|
|
83244
83251
|
label: t("Set speed", "Imposta la velocità"),
|
|
83245
|
-
phrase: t("Set the speed of {device} to {
|
|
83252
|
+
phrase: t("Set the speed of {device} to {speed}", "Imposta la velocità di {device} al {speed}"),
|
|
83246
83253
|
icon: "fan",
|
|
83247
83254
|
openArgs: [{
|
|
83248
|
-
key: "
|
|
83255
|
+
key: "speed",
|
|
83249
83256
|
label: t("Speed", "Velocità"),
|
|
83250
83257
|
offer: {
|
|
83251
83258
|
kind: "number",
|
|
@@ -83307,7 +83314,7 @@ var ACTUATOR_CAP_VOCABULARY = {
|
|
|
83307
83314
|
],
|
|
83308
83315
|
state: [{
|
|
83309
83316
|
kind: "numeric",
|
|
83310
|
-
field: "
|
|
83317
|
+
field: "speed",
|
|
83311
83318
|
quantity: t("the speed", "la velocità"),
|
|
83312
83319
|
label: t("Speed", "Velocità"),
|
|
83313
83320
|
unit: "%",
|
|
@@ -84105,7 +84112,7 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
84105
84112
|
},
|
|
84106
84113
|
{
|
|
84107
84114
|
kind: "numeric",
|
|
84108
|
-
field: "
|
|
84115
|
+
field: "progress",
|
|
84109
84116
|
quantity: t("the cycle progress", "l’avanzamento del lavaggio"),
|
|
84110
84117
|
label: t("Progress", "Avanzamento"),
|
|
84111
84118
|
unit: "%",
|
|
@@ -84463,10 +84470,10 @@ var APPLIANCE_CAP_VOCABULARY = {
|
|
|
84463
84470
|
id: "media.seek",
|
|
84464
84471
|
method: "seek",
|
|
84465
84472
|
label: t("Seek", "Vai al punto"),
|
|
84466
|
-
phrase: t("Move {device} to {
|
|
84473
|
+
phrase: t("Move {device} to {position}", "Porta {device} al punto {position}"),
|
|
84467
84474
|
icon: "fast-forward",
|
|
84468
84475
|
openArgs: [{
|
|
84469
|
-
key: "
|
|
84476
|
+
key: "position",
|
|
84470
84477
|
label: t("Position", "Posizione"),
|
|
84471
84478
|
offer: {
|
|
84472
84479
|
kind: "number",
|
|
@@ -85515,7 +85522,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
85515
85522
|
state: [
|
|
85516
85523
|
{
|
|
85517
85524
|
kind: "numeric",
|
|
85518
|
-
field: "
|
|
85525
|
+
field: "co2",
|
|
85519
85526
|
quantity: t("the CO₂", "la CO₂"),
|
|
85520
85527
|
label: t("CO₂", "CO₂"),
|
|
85521
85528
|
unit: "ppm",
|
|
@@ -85523,7 +85530,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
85523
85530
|
},
|
|
85524
85531
|
{
|
|
85525
85532
|
kind: "numeric",
|
|
85526
|
-
field: "
|
|
85533
|
+
field: "voc",
|
|
85527
85534
|
quantity: t("the VOC level", "il livello di COV"),
|
|
85528
85535
|
label: t("VOC", "COV"),
|
|
85529
85536
|
unit: "ppb",
|
|
@@ -85559,7 +85566,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
85559
85566
|
noun: t("Light level", "Luminosità ambiente"),
|
|
85560
85567
|
state: [{
|
|
85561
85568
|
kind: "numeric",
|
|
85562
|
-
field: "
|
|
85569
|
+
field: "illuminance",
|
|
85563
85570
|
quantity: t("the light level", "la luminosità"),
|
|
85564
85571
|
label: t("Illuminance", "Illuminamento"),
|
|
85565
85572
|
unit: "lx",
|
|
@@ -85762,7 +85769,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
85762
85769
|
noun: t("Humidity", "Umidità"),
|
|
85763
85770
|
state: [{
|
|
85764
85771
|
kind: "numeric",
|
|
85765
|
-
field: "
|
|
85772
|
+
field: "humidity",
|
|
85766
85773
|
quantity: t("the humidity", "l’umidità"),
|
|
85767
85774
|
label: t("Humidity", "Umidità"),
|
|
85768
85775
|
unit: "%",
|
|
@@ -85810,7 +85817,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
85810
85817
|
state: [
|
|
85811
85818
|
{
|
|
85812
85819
|
kind: "numeric",
|
|
85813
|
-
field: "
|
|
85820
|
+
field: "power",
|
|
85814
85821
|
quantity: t("the power draw", "il consumo"),
|
|
85815
85822
|
label: t("Power", "Potenza"),
|
|
85816
85823
|
unit: "W",
|
|
@@ -85818,7 +85825,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
85818
85825
|
},
|
|
85819
85826
|
{
|
|
85820
85827
|
kind: "numeric",
|
|
85821
|
-
field: "
|
|
85828
|
+
field: "energy",
|
|
85822
85829
|
quantity: t("the energy used", "l’energia consumata"),
|
|
85823
85830
|
label: t("Energy", "Energia"),
|
|
85824
85831
|
unit: "kWh",
|
|
@@ -85826,7 +85833,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
85826
85833
|
},
|
|
85827
85834
|
{
|
|
85828
85835
|
kind: "numeric",
|
|
85829
|
-
field: "
|
|
85836
|
+
field: "voltage",
|
|
85830
85837
|
quantity: t("the voltage", "la tensione"),
|
|
85831
85838
|
label: t("Voltage", "Tensione"),
|
|
85832
85839
|
unit: "V",
|
|
@@ -85834,7 +85841,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
85834
85841
|
},
|
|
85835
85842
|
{
|
|
85836
85843
|
kind: "numeric",
|
|
85837
|
-
field: "
|
|
85844
|
+
field: "current",
|
|
85838
85845
|
quantity: t("the current", "la corrente"),
|
|
85839
85846
|
label: t("Current", "Corrente"),
|
|
85840
85847
|
unit: "A",
|
|
@@ -85851,13 +85858,6 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
85851
85858
|
label: t("Where", "Posizione"),
|
|
85852
85859
|
phrase: t("When {device} is at {value}", "Quando {device} è in {value}"),
|
|
85853
85860
|
icon: "map-pin"
|
|
85854
|
-
}, {
|
|
85855
|
-
kind: "numeric",
|
|
85856
|
-
field: "batteryPercent",
|
|
85857
|
-
quantity: t("the phone battery", "la batteria del telefono"),
|
|
85858
|
-
label: t("Battery", "Batteria"),
|
|
85859
|
-
unit: "%",
|
|
85860
|
-
icon: "battery"
|
|
85861
85861
|
}]
|
|
85862
85862
|
},
|
|
85863
85863
|
"pressure-sensor": {
|
|
@@ -85865,7 +85865,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
85865
85865
|
noun: t("Pressure", "Pressione"),
|
|
85866
85866
|
state: [{
|
|
85867
85867
|
kind: "numeric",
|
|
85868
|
-
field: "
|
|
85868
|
+
field: "pressure",
|
|
85869
85869
|
quantity: t("the pressure", "la pressione"),
|
|
85870
85870
|
label: t("Pressure", "Pressione"),
|
|
85871
85871
|
unit: "hPa",
|
|
@@ -85901,7 +85901,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
85901
85901
|
noun: t("Temperature", "Temperatura"),
|
|
85902
85902
|
state: [{
|
|
85903
85903
|
kind: "numeric",
|
|
85904
|
-
field: "
|
|
85904
|
+
field: "temperature",
|
|
85905
85905
|
quantity: t("the temperature", "la temperatura"),
|
|
85906
85906
|
label: t("Temperature", "Temperatura"),
|
|
85907
85907
|
unit: "°C",
|
|
@@ -85972,7 +85972,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
85972
85972
|
state: [
|
|
85973
85973
|
{
|
|
85974
85974
|
kind: "numeric",
|
|
85975
|
-
field: "
|
|
85975
|
+
field: "level",
|
|
85976
85976
|
quantity: t("the battery level", "il livello della batteria"),
|
|
85977
85977
|
label: t("Battery", "Batteria"),
|
|
85978
85978
|
unit: "%",
|
|
@@ -86014,7 +86014,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
86014
86014
|
icon: "battery-charging"
|
|
86015
86015
|
}
|
|
86016
86016
|
],
|
|
86017
|
-
events: { onStatusChanged: { notOperatorFacing: "the
|
|
86017
|
+
events: { onStatusChanged: { notOperatorFacing: "the level / sleeping / charging state triggers each read one field of this change" } },
|
|
86018
86018
|
extraEvents: [{
|
|
86019
86019
|
category: EventCategory.DeviceAwake,
|
|
86020
86020
|
label: t("Woke up", "Risvegliato"),
|
|
@@ -86032,7 +86032,7 @@ var SENSOR_CAP_VOCABULARY = {
|
|
|
86032
86032
|
noun: t("Network link", "Collegamento di rete"),
|
|
86033
86033
|
state: [{
|
|
86034
86034
|
kind: "numeric",
|
|
86035
|
-
field: "
|
|
86035
|
+
field: "signal",
|
|
86036
86036
|
quantity: t("the signal strength", "l’intensità del segnale"),
|
|
86037
86037
|
label: t("Signal", "Segnale"),
|
|
86038
86038
|
unit: "%",
|
|
@@ -134747,7 +134747,7 @@ var KNOWN_CAPS = new Set([
|
|
|
134747
134747
|
* {@link alexaAccounts}; each `getStatus` prefers the latest decoded live value
|
|
134748
134748
|
* (via `alexa-state-to-cap`) and falls back to the runtime/cold slice when a
|
|
134749
134749
|
* property hasn't been polled yet — e.g. PowerController.powerState 'ON' →
|
|
134750
|
-
* switch.on, BrightnessController.brightness 0..100 → brightness.
|
|
134750
|
+
* switch.on, BrightnessController.brightness 0..100 → brightness.level,
|
|
134751
134751
|
* ContactSensor.detectionState 'DETECTED' → contact.entryOpen.
|
|
134752
134752
|
*
|
|
134753
134753
|
* TODO(caps): 'climate-control' (ThermostatController), 'control'
|
|
@@ -134831,7 +134831,7 @@ var AlexaDevice = class extends BaseDevice {
|
|
|
134831
134831
|
}
|
|
134832
134832
|
registerBrightness() {
|
|
134833
134833
|
const COLD = {
|
|
134834
|
-
|
|
134834
|
+
level: 0,
|
|
134835
134835
|
lastChangedAt: 0
|
|
134836
134836
|
};
|
|
134837
134837
|
this.ctx.registerNativeCap(brightnessCapability, {
|
|
@@ -134840,14 +134840,14 @@ var AlexaDevice = class extends BaseDevice {
|
|
|
134840
134840
|
const live = decodePercentage(this.liveState("Alexa.BrightnessController", "brightness"));
|
|
134841
134841
|
return live === null ? cached : {
|
|
134842
134842
|
...cached,
|
|
134843
|
-
|
|
134843
|
+
level: live
|
|
134844
134844
|
};
|
|
134845
134845
|
},
|
|
134846
|
-
setBrightness: async ({ percentage }) => {
|
|
134846
|
+
setBrightness: async ({ level: percentage }) => {
|
|
134847
134847
|
const brightness = Math.round(Math.max(0, Math.min(100, percentage)));
|
|
134848
134848
|
await this.command("Alexa.BrightnessController", "SetBrightness", { brightness });
|
|
134849
134849
|
this.runtimeState.setCapState("brightness", {
|
|
134850
|
-
percentage,
|
|
134850
|
+
level: percentage,
|
|
134851
134851
|
lastChangedAt: Date.now()
|
|
134852
134852
|
});
|
|
134853
134853
|
}
|
|
@@ -135001,7 +135001,7 @@ var AlexaDevice = class extends BaseDevice {
|
|
|
135001
135001
|
}
|
|
135002
135002
|
registerTemperatureSensor() {
|
|
135003
135003
|
const COLD = {
|
|
135004
|
-
|
|
135004
|
+
temperature: 0,
|
|
135005
135005
|
lastFetchedAt: 0
|
|
135006
135006
|
};
|
|
135007
135007
|
this.ctx.registerNativeCap(temperatureSensorCapability, { getStatus: async () => {
|
|
@@ -135009,14 +135009,14 @@ var AlexaDevice = class extends BaseDevice {
|
|
|
135009
135009
|
const live = decodeTemperatureCelsius(this.liveState("Alexa.TemperatureSensor", "temperature"));
|
|
135010
135010
|
return live === null ? cached : {
|
|
135011
135011
|
...cached,
|
|
135012
|
-
|
|
135012
|
+
temperature: live
|
|
135013
135013
|
};
|
|
135014
135014
|
} });
|
|
135015
135015
|
this.runtimeState.setCapState("temperature-sensor", COLD);
|
|
135016
135016
|
}
|
|
135017
135017
|
registerHumiditySensor() {
|
|
135018
135018
|
const COLD = {
|
|
135019
|
-
|
|
135019
|
+
humidity: 0,
|
|
135020
135020
|
lastFetchedAt: 0
|
|
135021
135021
|
};
|
|
135022
135022
|
this.ctx.registerNativeCap(humiditySensorCapability, { getStatus: async () => {
|
|
@@ -135024,7 +135024,7 @@ var AlexaDevice = class extends BaseDevice {
|
|
|
135024
135024
|
const live = decodeHumidityPercent(this.liveState("Alexa.HumiditySensor", "humidity"));
|
|
135025
135025
|
return live === null ? cached : {
|
|
135026
135026
|
...cached,
|
|
135027
|
-
|
|
135027
|
+
humidity: live
|
|
135028
135028
|
};
|
|
135029
135029
|
} });
|
|
135030
135030
|
this.runtimeState.setCapState("humidity-sensor", COLD);
|