@camstack/addon-provider-amcrest 0.2.126 → 0.2.127
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/dist/addon.js +600 -141
- package/dist/addon.mjs +600 -141
- package/package.json +1 -3
package/dist/addon.mjs
CHANGED
|
@@ -7426,7 +7426,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
7426
7426
|
return DeviceRole;
|
|
7427
7427
|
}({});
|
|
7428
7428
|
//#endregion
|
|
7429
|
-
//#region ../types/dist/composition-
|
|
7429
|
+
//#region ../types/dist/composition-Bzr7GwgP.mjs
|
|
7430
7430
|
/**
|
|
7431
7431
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
7432
7432
|
*
|
|
@@ -7480,20 +7480,20 @@ function portable(target) {
|
|
|
7480
7480
|
}
|
|
7481
7481
|
portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
|
|
7482
7482
|
/**
|
|
7483
|
-
*
|
|
7484
|
-
*
|
|
7483
|
+
* THE table "which boolean of this device type counts as HIGH", and the
|
|
7484
|
+
* pure evaluator of its EDGE.
|
|
7485
7485
|
*
|
|
7486
|
-
*
|
|
7487
|
-
*
|
|
7488
|
-
*
|
|
7489
|
-
*
|
|
7490
|
-
*
|
|
7491
|
-
*
|
|
7486
|
+
* ONE table for everyone who asks "is this device HIGH?": the
|
|
7487
|
+
* recorder's `RecordingTriggers.sensorDeviceIds` trigger, the post-analysis
|
|
7488
|
+
* sensor markers, the orchestrator's camera-sensors bridge and
|
|
7489
|
+
* the sources of a composite doorbell (`doorbellFeatureSources`, D671).
|
|
7490
|
+
* A second copy would diverge at the first cap added, and the symptom — "the
|
|
7491
|
+
* sensor rings the doorbell but does not record" — is exactly D62.
|
|
7492
7492
|
*
|
|
7493
|
-
* ⚠
|
|
7494
|
-
*
|
|
7495
|
-
*
|
|
7496
|
-
*
|
|
7493
|
+
* ⚠ NOT `DEVICE_STATE_READERS` (`catalogs/device-state-vocabulary.ts`), and the
|
|
7494
|
+
* two must not be unified: that one answers "what is the state WORD for a
|
|
7495
|
+
* rule" (and includes `presence`, `cover`, `alarm-panel`), this one "which
|
|
7496
|
+
* boolean's EDGE counts". Deliberately different vocabularies.
|
|
7497
7497
|
*/
|
|
7498
7498
|
/**
|
|
7499
7499
|
* Known binary / switch source caps → the boolean slice field whose
|
|
@@ -7514,6 +7514,8 @@ var SOURCE_CAP_ACTIVE_FIELD = {
|
|
|
7514
7514
|
vibration: "detected",
|
|
7515
7515
|
tamper: "tampered"
|
|
7516
7516
|
};
|
|
7517
|
+
/** Cap names whose presence in a device's bindings qualify it as a source. */
|
|
7518
|
+
var SOURCE_CAPS = Object.keys(SOURCE_CAP_ACTIVE_FIELD);
|
|
7517
7519
|
/**
|
|
7518
7520
|
* Error types for the safe expression engine. Two distinct classes so callers
|
|
7519
7521
|
* can tell a compile-time (grammar) failure from a runtime (evaluation)
|
|
@@ -9120,22 +9122,22 @@ var CLASS_MAP_MACRO_TARGETS = [
|
|
|
9120
9122
|
"package"
|
|
9121
9123
|
];
|
|
9122
9124
|
/**
|
|
9123
|
-
*
|
|
9124
|
-
*
|
|
9125
|
+
* The FIRST-LEVEL macro classes: those an object detector emits and that
|
|
9126
|
+
* an operator can select.
|
|
9125
9127
|
*
|
|
9126
|
-
*
|
|
9128
|
+
* They are the three offered by the `object-detection` step
|
|
9127
9129
|
* (`addon-pipeline/src/detection-pipeline/registry/step-definitions.ts`,
|
|
9128
|
-
* `enabledMacroClasses`). `package`
|
|
9129
|
-
* `MACRO_LABELS` —
|
|
9130
|
-
* `package-detection`,
|
|
9131
|
-
*
|
|
9130
|
+
* `enabledMacroClasses`). `package` is in {@link CLASS_MAP_MACRO_TARGETS} and in
|
|
9131
|
+
* `MACRO_LABELS` — it is a true macro — but NOT here: it belongs to the step
|
|
9132
|
+
* `package-detection`, whose enablement is driven by zones, and offering the
|
|
9133
|
+
* same word twice has already made an operator turn on the COCO proxy
|
|
9132
9134
|
* (suitcase/backpack/handbag) lasciando spento il detector dedicato.
|
|
9133
9135
|
*
|
|
9134
|
-
*
|
|
9135
|
-
*
|
|
9136
|
-
* (`types/detection.ts`);
|
|
9137
|
-
* (`RecordingTriggers.objectClasses`)
|
|
9138
|
-
*
|
|
9136
|
+
* ONE list. Before today the same three were hand-written in the step's offer
|
|
9137
|
+
* and a second time as the union `FirstLevelMacro`
|
|
9138
|
+
* (`types/detection.ts`); a third copy for the recording trigger
|
|
9139
|
+
* (`RecordingTriggers.objectClasses`) would have made the later divergence
|
|
9140
|
+
* invisible.
|
|
9139
9141
|
*/
|
|
9140
9142
|
var FIRST_LEVEL_MACRO_CLASSES = [
|
|
9141
9143
|
"person",
|
|
@@ -9200,17 +9202,17 @@ var RecordingStorageModeSchema = _enum([
|
|
|
9200
9202
|
"on-device-decision"
|
|
9201
9203
|
]);
|
|
9202
9204
|
/**
|
|
9203
|
-
*
|
|
9204
|
-
*
|
|
9205
|
+
* The macro classes that can open a recording window — the same
|
|
9206
|
+
* three offered by the `object-detection` step, from ONE list
|
|
9205
9207
|
* ({@link FIRST_LEVEL_MACRO_CLASSES}).
|
|
9206
9208
|
*/
|
|
9207
9209
|
var RecordingObjectTriggerClassSchema = _enum(FIRST_LEVEL_MACRO_CLASSES);
|
|
9208
9210
|
/**
|
|
9209
|
-
* True
|
|
9211
|
+
* True when `values` does not repeat an element.
|
|
9210
9212
|
*
|
|
9211
|
-
*
|
|
9212
|
-
*
|
|
9213
|
-
*
|
|
9213
|
+
* A duplicate is not harmless: every entry of `objectClasses` / `sensorDeviceIds`
|
|
9214
|
+
* becomes a SOURCE in `bandTriggerSources`, and the same source twice
|
|
9215
|
+
* would count its windows twice in `segmentMissedByMs`.
|
|
9214
9216
|
*/
|
|
9215
9217
|
var noDuplicates = (values) => new Set(values).size === values.length;
|
|
9216
9218
|
/** Which detectors trigger an `events`-mode band. */
|
|
@@ -9218,34 +9220,34 @@ var RecordingTriggersSchema = object({
|
|
|
9218
9220
|
motion: boolean().optional(),
|
|
9219
9221
|
audioThresholdDbfs: number().optional(),
|
|
9220
9222
|
/**
|
|
9221
|
-
*
|
|
9222
|
-
*
|
|
9223
|
-
*
|
|
9224
|
-
*
|
|
9223
|
+
* The macro classes whose detection opens a window. ABSENT = the source
|
|
9224
|
+
* is not listened to; an EMPTY array is rejected, because "events band, object
|
|
9225
|
+
* trigger on, no class" is the same shape "enabled and records
|
|
9226
|
+
* nothing, forever" that `eventsBandCanEverDemand` is written against.
|
|
9225
9227
|
*
|
|
9226
|
-
*
|
|
9227
|
-
*
|
|
9228
|
-
* `minConfidence<Macro>`
|
|
9229
|
-
* (`source: 'onboard'`)
|
|
9230
|
-
*
|
|
9228
|
+
* The signal read is ALREADY FILTERED: only `source: 'pipeline'` detections, i.e.
|
|
9229
|
+
* those that went through `enabledMacroClasses`, the
|
|
9230
|
+
* `minConfidence<Macro>` and the full-frame guard. The camera's onboard AI
|
|
9231
|
+
* (`source: 'onboard'`) goes through none of those gates and does NOT open
|
|
9232
|
+
* windows — see `recorder/object-trigger.ts`.
|
|
9231
9233
|
*/
|
|
9232
9234
|
objectClasses: array(RecordingObjectTriggerClassSchema).min(1).refine(noDuplicates, { message: "objectClasses must not repeat a class" }).optional(),
|
|
9233
9235
|
/**
|
|
9234
|
-
*
|
|
9235
|
-
*
|
|
9236
|
+
* The LINKED devices whose RISING EDGE opens a window. Absent = the source
|
|
9237
|
+
* is not listened to; an empty array is rejected for the same reason as
|
|
9236
9238
|
* `objectClasses`.
|
|
9237
9239
|
*
|
|
9238
|
-
*
|
|
9239
|
-
*
|
|
9240
|
-
*
|
|
9241
|
-
*
|
|
9242
|
-
* device (D12) —
|
|
9240
|
+
* These are SOURCE device ids, not cameras: the band names them, so the
|
|
9241
|
+
* hot path (`DeviceStateChanged`, at bus rate across the whole fleet)
|
|
9242
|
+
* does no RPC. The OFFER from which the operator picks them is another question, and
|
|
9243
|
+
* is resolved with `deviceManager.getLinkedDevices` + `getBindingsBatch` per
|
|
9244
|
+
* device (D12) — never a global list of caps.
|
|
9243
9245
|
*
|
|
9244
|
-
*
|
|
9245
|
-
* `SOURCE_CAP_ACTIVE_FIELD` (`catalogs/sensor-active-state.ts`)
|
|
9246
|
-
*
|
|
9247
|
-
*
|
|
9248
|
-
*
|
|
9246
|
+
* What "high" means depends on the device TYPE and is not decided here:
|
|
9247
|
+
* `SOURCE_CAP_ACTIVE_FIELD` (`catalogs/sensor-active-state.ts`) is THE table,
|
|
9248
|
+
* the same one as the composite doorbell (D671). And it is the EDGE, not
|
|
9249
|
+
* the level: a contact found already open at runner restart does not
|
|
9250
|
+
* record.
|
|
9249
9251
|
*/
|
|
9250
9252
|
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
9251
9253
|
});
|
|
@@ -10322,7 +10324,7 @@ var DecoderSessionConfigSchema = object({
|
|
|
10322
10324
|
* - **VALUE** — at which level, for which scope, until when. That stays ONE
|
|
10323
10325
|
* thing: the logging settings document on the `system` cap. Two authorities
|
|
10324
10326
|
* over the values is the exact defect
|
|
10325
|
-
* `docs/design/plans/2026-08-26-
|
|
10327
|
+
* `docs/design/plans/2026-08-26-per-component-logging.md` was written to
|
|
10326
10328
|
* remove; re-introducing it from the cure side would be grotesque.
|
|
10327
10329
|
*
|
|
10328
10330
|
* Nothing in this file reads a clock, an env var or a store. The registry is
|
|
@@ -12033,7 +12035,7 @@ var BrokerStatusEnum = _enum([
|
|
|
12033
12035
|
"unreachable",
|
|
12034
12036
|
"error"
|
|
12035
12037
|
]);
|
|
12036
|
-
var BrokerInfoSchema
|
|
12038
|
+
var BrokerInfoSchema = object({
|
|
12037
12039
|
/** Stable broker id. Persisted; survives addon restarts. */
|
|
12038
12040
|
id: string(),
|
|
12039
12041
|
/** Addon id of the provider that OWNS this broker.
|
|
@@ -12166,7 +12168,7 @@ var GetStateInputSchema = object({
|
|
|
12166
12168
|
* HA: entity_id (returns the cached entity state). */
|
|
12167
12169
|
key: string()
|
|
12168
12170
|
});
|
|
12169
|
-
method(ListInputSchema, array(BrokerInfoSchema
|
|
12171
|
+
method(ListInputSchema, array(BrokerInfoSchema)), method(GetInputSchema, BrokerInfoSchema.nullable()), method(_void(), array(BrokerProviderInfoSchema), { auth: "admin" }), method(AddInputSchema, AddResultSchema, {
|
|
12170
12172
|
kind: "mutation",
|
|
12171
12173
|
auth: "admin"
|
|
12172
12174
|
}), method(RemoveInputSchema, _void(), {
|
|
@@ -13877,7 +13879,7 @@ method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
|
13877
13879
|
*
|
|
13878
13880
|
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
13879
13881
|
* was wrong — corrected 2026-08-26 after the hop map
|
|
13880
|
-
* (`docs/design/2026-08-26-
|
|
13882
|
+
* (`docs/design/2026-08-26-topic-hop-map.md`) traced the path.
|
|
13881
13883
|
* There is **no Zod parse at all** between the door and the engine: the
|
|
13882
13884
|
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
13883
13885
|
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
@@ -16080,7 +16082,7 @@ method(object({
|
|
|
16080
16082
|
* per-device window, `KeyFrameCaptureLog`, `bumpCropMetric`. Every one of them
|
|
16081
16083
|
* ends in a log line, and a log line is the thing the operator asked to stop
|
|
16082
16084
|
* needing: *"possiamo armare questi errori intanto? Così al prossimo giro
|
|
16083
|
-
* ricontrolliamo tutti questi punti"
|
|
16085
|
+
* ricontrolliamo tutti questi punti"* [can we instrument these errors in the meantime? That way next round we recheck all these points]. Reading them meant grepping Loki and
|
|
16084
16086
|
* hand-correlating timestamps, which is how a 22% thumbnail gap and a 3-hour
|
|
16085
16087
|
* media blackout were both diagnosed. The counters stay; this is where they can
|
|
16086
16088
|
* be READ.
|
|
@@ -17456,7 +17458,7 @@ var BrokerStatusSchema$1 = _enum([
|
|
|
17456
17458
|
"unreachable",
|
|
17457
17459
|
"tls-error"
|
|
17458
17460
|
]);
|
|
17459
|
-
var BrokerInfoSchema = object({
|
|
17461
|
+
var BrokerInfoSchema$1 = object({
|
|
17460
17462
|
id: string(),
|
|
17461
17463
|
name: string(),
|
|
17462
17464
|
url: string(),
|
|
@@ -17519,7 +17521,7 @@ var StatusSchema = object({
|
|
|
17519
17521
|
brokerCount: number(),
|
|
17520
17522
|
embeddedRunning: boolean()
|
|
17521
17523
|
});
|
|
17522
|
-
method(_void(), array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema, { auth: "admin" }), method(AddBrokerInputSchema, AddBrokerResultSchema, {
|
|
17524
|
+
method(_void(), array(BrokerInfoSchema$1)), method(IdInputSchema, BrokerConnectionDetailsSchema, { auth: "admin" }), method(AddBrokerInputSchema, AddBrokerResultSchema, {
|
|
17523
17525
|
kind: "mutation",
|
|
17524
17526
|
auth: "admin"
|
|
17525
17527
|
}), method(IdInputSchema, _void(), {
|
|
@@ -19733,78 +19735,16 @@ var NcRuleInputSchema = object({
|
|
|
19733
19735
|
*/
|
|
19734
19736
|
confirm: NcConfirmSchema.optional(),
|
|
19735
19737
|
/**
|
|
19736
|
-
*
|
|
19737
|
-
*
|
|
19738
|
-
*
|
|
19739
|
-
*
|
|
19740
|
-
*
|
|
19741
|
-
*
|
|
19742
|
-
*
|
|
19743
|
-
*
|
|
19744
|
-
*
|
|
19745
|
-
* Only two honest answers exist, and this flag picks between them. It has
|
|
19746
|
-
* effect ONLY on a rule that declares a recognition scope
|
|
19747
|
-
* ({@link NcConditions.identities} or {@link NcConditions.plates}) — on any
|
|
19748
|
-
* other rule there is nothing to wait for and the flag is inert.
|
|
19749
|
-
*
|
|
19750
|
-
* | value | what happens |
|
|
19751
|
-
* | --- | --- |
|
|
19752
|
-
* | `true` | the rule stops firing on the object event and fires at TRACK CLOSE instead, once, with the name — later, and complete |
|
|
19753
|
-
* | absent / `false` | it fires at once WITHOUT the name, and if recognition lands before the track closes a SECOND, "…is Gianluca" notification follows (one per track, per rule, per target) |
|
|
19754
|
-
*
|
|
19755
|
-
* `.optional()` and deliberately NOT `.default()`: a Zod default does not run
|
|
19756
|
-
* on the addon cap path, and absent has to keep meaning exactly what every
|
|
19757
|
-
* rule authored before this field meant.
|
|
19758
|
-
*
|
|
19759
|
-
* The cost of `true` is stated here because the editor states it too: a rule
|
|
19760
|
-
* that waits also inherits track-close SEMANTICS — its `zones` condition
|
|
19761
|
-
* tests every zone the track visited and a `crossing` condition can no longer
|
|
19762
|
-
* be satisfied, because a closed track carries no crossing.
|
|
19738
|
+
* IMMEDIATE GROUPED (D692): the first matching subject opens a window of this many
|
|
19739
|
+
* seconds; the rule sends ONE message when the window closes — early, once every
|
|
19740
|
+
* subject in it is final, never before {@link NC_GROUPING_MIN_SEC} — naming everybody
|
|
19741
|
+
* the rule matched, with one mosaic tile per subject.
|
|
19742
|
+
* Absent = plain immediate (one message per track, at the first match).
|
|
19743
|
+
* Only an `immediate` DETECTION rule may carry it (`ruleGroupingApplies`, enforced on
|
|
19744
|
+
* save by the hub's grouping guard). `.optional()`, never `.default()`: the addon cap
|
|
19745
|
+
* path does not run Zod defaults.
|
|
19763
19746
|
*/
|
|
19764
|
-
|
|
19765
|
-
/**
|
|
19766
|
-
* GROUP a burst of subjects into ONE notification that grows.
|
|
19767
|
-
*
|
|
19768
|
-
* Seconds of quiet after the last matching subject before the burst is
|
|
19769
|
-
* considered over. While it is open, the first subject enqueues immediately —
|
|
19770
|
-
* **exactly as today, with no added latency** — and every real growth (a new
|
|
19771
|
-
* subject, or a name confirmed on one already in it) REPLACES that
|
|
19772
|
-
* notification with an updated one naming everybody. The push carries the
|
|
19773
|
-
* group's own coalescing tag, so the phone replaces rather than stacks.
|
|
19774
|
-
*
|
|
19775
|
-
* `0` / absent = off, and off is today's behaviour byte for byte.
|
|
19776
|
-
*
|
|
19777
|
-
* ### Why an idle cutoff and not a window
|
|
19778
|
-
*
|
|
19779
|
-
* The measured seven-person arrival on device 590 spans 110 s with every
|
|
19780
|
-
* internal gap under 30 s. A 12 s fixed window cuts it into three groups; an
|
|
19781
|
-
* idle cutoff holds it as one and ends it when the arrival actually ends.
|
|
19782
|
-
* 30 s is a widely shipped value for the same decision.
|
|
19783
|
-
*
|
|
19784
|
-
* ### What it replaces
|
|
19785
|
-
*
|
|
19786
|
-
* The blind cooldown, which collapses a burst by DISCARDING it. Measured on
|
|
19787
|
-
* device 615 / *Persona su Uscio* over six days: 116 qualifying tracks → 74
|
|
19788
|
-
* notifications, **44 (37.9%) suppressed outright**, 23 of them overlapping a
|
|
19789
|
-
* track that did fire and 7 carrying a confirmed identity nobody heard about.
|
|
19790
|
-
* A group collapses the same volume by MERGING, so the cooldown becomes a
|
|
19791
|
-
* budget over GROUPS — which is what it always meant — and a growth is never
|
|
19792
|
-
* throttled by the window its own first member spent.
|
|
19793
|
-
*
|
|
19794
|
-
* ### Interaction with {@link waitForEnhancement}
|
|
19795
|
-
*
|
|
19796
|
-
* They compose, and the order matters. `waitForEnhancement` defers the rule to
|
|
19797
|
-
* TRACK CLOSE, so with both set the group is opened by the first member to
|
|
19798
|
-
* CLOSE — already carrying its name — and grows as later members close. That
|
|
19799
|
-
* is later, and complete. With grouping alone the group opens on the first
|
|
19800
|
-
* object event and picks up names as they are confirmed, through the growth
|
|
19801
|
-
* path. Neither combination fires twice for one subject.
|
|
19802
|
-
*
|
|
19803
|
-
* `.optional()` and deliberately NOT `.default()`: a Zod default does not run
|
|
19804
|
-
* on the addon cap path, so absent must keep meaning what it meant before this
|
|
19805
|
-
* field existed.
|
|
19806
|
-
*/
|
|
19807
|
-
groupIdleSec: number().int().min(0).max(600).optional()
|
|
19747
|
+
groupingSec: number().int().min(5).max(60).optional()
|
|
19808
19748
|
});
|
|
19809
19749
|
/**
|
|
19810
19750
|
* Partial patch for `updateRule` — any subset of the input fields, plus the
|
|
@@ -19852,9 +19792,10 @@ var NcRuleClearableKeySchema = _enum([
|
|
|
19852
19792
|
"targetUsers",
|
|
19853
19793
|
"snoozeOptions",
|
|
19854
19794
|
"snoozeAllowGlobal",
|
|
19855
|
-
"waitForEnhancement",
|
|
19856
19795
|
"actions",
|
|
19857
19796
|
"confirm",
|
|
19797
|
+
"groupingSec",
|
|
19798
|
+
"waitForEnhancement",
|
|
19858
19799
|
"groupIdleSec"
|
|
19859
19800
|
]);
|
|
19860
19801
|
var NcRuleUpdateInputSchema = object({
|
|
@@ -19876,9 +19817,25 @@ var NcRuleSchema = NcRuleInputSchema.extend({
|
|
|
19876
19817
|
*/
|
|
19877
19818
|
disabledTargetIds: array(string()).default([])
|
|
19878
19819
|
});
|
|
19820
|
+
/**
|
|
19821
|
+
* The state-summary SECTIONS (D647 / D698): the D637 kind groups that report a
|
|
19822
|
+
* still-true state. `backups-exports` and `alarm` are not sections — a completed
|
|
19823
|
+
* job is not an open state, and the alarm stays instant.
|
|
19824
|
+
*/
|
|
19825
|
+
var NcStateSummarySectionIdSchema = _enum([
|
|
19826
|
+
"device-state",
|
|
19827
|
+
"streams",
|
|
19828
|
+
"battery",
|
|
19829
|
+
"consumables",
|
|
19830
|
+
"tanks",
|
|
19831
|
+
"detection-blind",
|
|
19832
|
+
"nodes",
|
|
19833
|
+
"addons",
|
|
19834
|
+
"updates"
|
|
19835
|
+
]);
|
|
19879
19836
|
/** One section of a previewed state summary. `unavailable` = its state could not be read. */
|
|
19880
19837
|
var NcStateSummaryPreviewSectionSchema = object({
|
|
19881
|
-
id:
|
|
19838
|
+
id: NcStateSummarySectionIdSchema,
|
|
19882
19839
|
status: _enum(["read", "unavailable"]),
|
|
19883
19840
|
items: number().int().nonnegative(),
|
|
19884
19841
|
reason: string().optional()
|
|
@@ -19888,7 +19845,7 @@ var NcStateSummaryPreviewSectionSchema = object({
|
|
|
19888
19845
|
* a `rule` split (no `section`), one section's on a `section` split.
|
|
19889
19846
|
*/
|
|
19890
19847
|
var NcStateSummaryPreviewRowSchema = object({
|
|
19891
|
-
section:
|
|
19848
|
+
section: NcStateSummarySectionIdSchema.optional(),
|
|
19892
19849
|
/** The section's name on a per-section row; every reported section's, joined, on a combined one. */
|
|
19893
19850
|
title: string(),
|
|
19894
19851
|
text: string(),
|
|
@@ -21787,14 +21744,14 @@ var TrackSchema = object({
|
|
|
21787
21744
|
* `derive-returned-null tile=standin`,
|
|
21788
21745
|
* `native-tile tile=native no-key-frame-at-close`, …) written at close and
|
|
21789
21746
|
* CLEARED by the late-keyFrame upgrade when a native tile lands after all.
|
|
21790
|
-
* The operator-facing answer to "perché manca l'immagine?" on a track whose
|
|
21747
|
+
* The operator-facing answer to "perché manca l'immagine?" [why is the image missing?] on a track whose
|
|
21791
21748
|
* tile is a face/plate stand-in, a raster crop, or an icon.
|
|
21792
21749
|
*
|
|
21793
21750
|
* **`no-key-frame-at-close` (D400).** The line used to be written ONLY when
|
|
21794
21751
|
* the TILE ranked below native, so a track whose thumbnail landed natively
|
|
21795
21752
|
* while its key frame missed carried no reason at all — three of the four
|
|
21796
21753
|
* `MISSING_KEYFRAME` tracks in the 2026-09-07 operator audit were exactly
|
|
21797
|
-
* that shape, and their "niente ultimo" had no cause anywhere on the row.
|
|
21754
|
+
* that shape, and their "niente ultimo" [no last frame] had no cause anywhere on the row.
|
|
21798
21755
|
* The key frame is the head of a cascade (`keyFrame ⇒ keyFrameSmall ⇒ the
|
|
21799
21756
|
* lastFrame copy source`), so its absence is now on this line whatever the
|
|
21800
21757
|
* tile ended up being.
|
|
@@ -21881,7 +21838,7 @@ var MotionEventSchema = object({
|
|
|
21881
21838
|
/**
|
|
21882
21839
|
* Ms offsets from `timestamp` (the episode's own first rising edge, so the
|
|
21883
21840
|
* first entry is always `0`) of every genuine off→on transition the
|
|
21884
|
-
* episode saw — "ogni evento on si deve salvare" (D475). NOT one entry per
|
|
21841
|
+
* episode saw — "ogni evento on si deve salvare" [every ON event must be saved] (D475). NOT one entry per
|
|
21885
21842
|
* push: a firmware source that keepalives at ~1 Hz for the whole burst
|
|
21886
21843
|
* (Reolink, Hikvision) produces exactly one edge; a source that reports an
|
|
21887
21844
|
* explicit `false` mid-episode and then resumes before the quiet window
|
|
@@ -22405,6 +22362,7 @@ var KeyEventSchema = object({
|
|
|
22405
22362
|
bestEventId: string(),
|
|
22406
22363
|
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
22407
22364
|
windowMs: number().optional(),
|
|
22365
|
+
audioLabels: array(TrackAudioLabelSchema).readonly().optional(),
|
|
22408
22366
|
...TrackFlagFields,
|
|
22409
22367
|
...TrackRetrainFields
|
|
22410
22368
|
});
|
|
@@ -27329,7 +27287,7 @@ var ClipPlaybackSchema = object({
|
|
|
27329
27287
|
* **One authorised yes is one wake.** `next-natural` — take the clip the next
|
|
27330
27288
|
* time the camera is awake for its own reasons — is deliberately not a member:
|
|
27331
27289
|
* it was proposed, it is free on the battery, and the operator declined it on
|
|
27332
|
-
* 2026-09-20 (*"Quando un export viene richiesto si sveglia la camera."
|
|
27290
|
+
* 2026-09-20 (*"Quando un export viene richiesto si sveglia la camera."* [When an export is requested the camera wakes up],
|
|
27333
27291
|
* D558 "Considered and not taken").
|
|
27334
27292
|
*/
|
|
27335
27293
|
var ClipWakeSchema = _enum(["authorised"]);
|
|
@@ -27725,7 +27683,7 @@ var videoclipsCapability = {
|
|
|
27725
27683
|
* **It is a SECTION of the Recording tab, at the end of it — not a tab of
|
|
27726
27684
|
* its own.** It shipped as a `clips` top-tab and the operator rejected the
|
|
27727
27685
|
* placement: *"utilizzerei la stessa tab recordings, lì abbiamo già tutto il
|
|
27728
|
-
* necessario, una nuova sezione alla fine per le clips"
|
|
27686
|
+
* necessario, una nuova sezione alla fine per le clips"* [I would use the same recordings tab, there we already have everything necessary, a new section at the end for the clips]. The Recording tab
|
|
27729
27687
|
* already holds the recorder's panel, the schedule bands and the unified
|
|
27730
27688
|
* retention policy; footage the camera itself holds is the same question,
|
|
27731
27689
|
* asked of a different store. `order: 100` puts it after all of them with
|
|
@@ -27786,7 +27744,7 @@ var videoclipsCapability = {
|
|
|
27786
27744
|
* It replaced `sources?: string[]`, a VIEW filter over source ids that
|
|
27787
27745
|
* assumed the answer was a fan-out over everything a camera has. The
|
|
27788
27746
|
* operator settled otherwise on 2026-09-20 — *"l'utilizzatore è uno
|
|
27789
|
-
* solo"* — so the list is asked of one provider at a time and there is
|
|
27747
|
+
* solo"* [there is only one user] — so the list is asked of one provider at a time and there is
|
|
27790
27748
|
* nothing to filter out of it.
|
|
27791
27749
|
*/
|
|
27792
27750
|
provider: string().min(1)
|
|
@@ -36108,7 +36066,7 @@ var ReadGopBytesResultSchema = object({
|
|
|
36108
36066
|
/**
|
|
36109
36067
|
* A time WINDOW of one finalized segment, cut by byte range — the multi-GOP
|
|
36110
36068
|
* twin of {@link ReadGopBytesResultSchema}'s single instant. Built for the
|
|
36111
|
-
* replay clip's `recording` source (`docs/design/plans/2026-08-26-replay-
|
|
36069
|
+
* replay clip's `recording` source (`docs/design/plans/2026-08-26-clip-replay-on-pipeline.md`):
|
|
36112
36070
|
* a replay needs several seconds of native pixels, not one frame.
|
|
36113
36071
|
*
|
|
36114
36072
|
* `ok.data` is standalone-demuxable, same as a GOP read. `ok.reachesRequestedEnd`
|
|
@@ -39776,6 +39734,7 @@ var zoneRulesCapability = {
|
|
|
39776
39734
|
*/
|
|
39777
39735
|
durability: "restored"
|
|
39778
39736
|
};
|
|
39737
|
+
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
39779
39738
|
/**
|
|
39780
39739
|
* Accessory device helpers — shared across drivers.
|
|
39781
39740
|
*
|
|
@@ -50068,6 +50027,11 @@ Object.freeze({
|
|
|
50068
50027
|
}
|
|
50069
50028
|
});
|
|
50070
50029
|
Object.freeze({
|
|
50030
|
+
"accessories.getStatus": [{
|
|
50031
|
+
name: "deviceId",
|
|
50032
|
+
form: "single",
|
|
50033
|
+
optional: false
|
|
50034
|
+
}],
|
|
50071
50035
|
"accessories.setChildHidden": [{
|
|
50072
50036
|
name: "childDeviceId",
|
|
50073
50037
|
form: "single",
|
|
@@ -50087,6 +50051,11 @@ Object.freeze({
|
|
|
50087
50051
|
form: "single",
|
|
50088
50052
|
optional: false
|
|
50089
50053
|
}],
|
|
50054
|
+
"airQualitySensor.getStatus": [{
|
|
50055
|
+
name: "deviceId",
|
|
50056
|
+
form: "single",
|
|
50057
|
+
optional: false
|
|
50058
|
+
}],
|
|
50090
50059
|
"alarmPanel.arm": [{
|
|
50091
50060
|
name: "deviceId",
|
|
50092
50061
|
form: "single",
|
|
@@ -50097,11 +50066,36 @@ Object.freeze({
|
|
|
50097
50066
|
form: "single",
|
|
50098
50067
|
optional: false
|
|
50099
50068
|
}],
|
|
50069
|
+
"alarmPanel.getStatus": [{
|
|
50070
|
+
name: "deviceId",
|
|
50071
|
+
form: "single",
|
|
50072
|
+
optional: false
|
|
50073
|
+
}],
|
|
50100
50074
|
"alarmPanel.trigger": [{
|
|
50101
50075
|
name: "deviceId",
|
|
50102
50076
|
form: "single",
|
|
50103
50077
|
optional: false
|
|
50104
50078
|
}],
|
|
50079
|
+
"ambientLightSensor.getStatus": [{
|
|
50080
|
+
name: "deviceId",
|
|
50081
|
+
form: "single",
|
|
50082
|
+
optional: false
|
|
50083
|
+
}],
|
|
50084
|
+
"audioAnalysis.applyDeviceSettingsPatch": [{
|
|
50085
|
+
name: "deviceId",
|
|
50086
|
+
form: "single",
|
|
50087
|
+
optional: false
|
|
50088
|
+
}],
|
|
50089
|
+
"audioAnalysis.getDeviceLiveContribution": [{
|
|
50090
|
+
name: "deviceId",
|
|
50091
|
+
form: "single",
|
|
50092
|
+
optional: false
|
|
50093
|
+
}],
|
|
50094
|
+
"audioAnalysis.getDeviceSettingsContribution": [{
|
|
50095
|
+
name: "deviceId",
|
|
50096
|
+
form: "single",
|
|
50097
|
+
optional: false
|
|
50098
|
+
}],
|
|
50105
50099
|
"audioAnalysis.resolveDeviceSettings": [{
|
|
50106
50100
|
name: "deviceId",
|
|
50107
50101
|
form: "single",
|
|
@@ -50142,16 +50136,36 @@ Object.freeze({
|
|
|
50142
50136
|
form: "single",
|
|
50143
50137
|
optional: false
|
|
50144
50138
|
}],
|
|
50139
|
+
"automationControl.getStatus": [{
|
|
50140
|
+
name: "deviceId",
|
|
50141
|
+
form: "single",
|
|
50142
|
+
optional: false
|
|
50143
|
+
}],
|
|
50145
50144
|
"automationControl.trigger": [{
|
|
50146
50145
|
name: "deviceId",
|
|
50147
50146
|
form: "single",
|
|
50148
50147
|
optional: false
|
|
50149
50148
|
}],
|
|
50149
|
+
"battery.getStatus": [{
|
|
50150
|
+
name: "deviceId",
|
|
50151
|
+
form: "single",
|
|
50152
|
+
optional: false
|
|
50153
|
+
}],
|
|
50150
50154
|
"battery.wakeForStream": [{
|
|
50151
50155
|
name: "deviceId",
|
|
50152
50156
|
form: "single",
|
|
50153
50157
|
optional: false
|
|
50154
50158
|
}],
|
|
50159
|
+
"binary.getStatus": [{
|
|
50160
|
+
name: "deviceId",
|
|
50161
|
+
form: "single",
|
|
50162
|
+
optional: false
|
|
50163
|
+
}],
|
|
50164
|
+
"brightness.getStatus": [{
|
|
50165
|
+
name: "deviceId",
|
|
50166
|
+
form: "single",
|
|
50167
|
+
optional: false
|
|
50168
|
+
}],
|
|
50155
50169
|
"brightness.setBrightness": [{
|
|
50156
50170
|
name: "deviceId",
|
|
50157
50171
|
form: "single",
|
|
@@ -50167,6 +50181,26 @@ Object.freeze({
|
|
|
50167
50181
|
form: "single",
|
|
50168
50182
|
optional: false
|
|
50169
50183
|
}],
|
|
50184
|
+
"cameraCredentials.getStatus": [{
|
|
50185
|
+
name: "deviceId",
|
|
50186
|
+
form: "single",
|
|
50187
|
+
optional: false
|
|
50188
|
+
}],
|
|
50189
|
+
"cameraGridLayout.applyDeviceSettingsPatch": [{
|
|
50190
|
+
name: "deviceId",
|
|
50191
|
+
form: "single",
|
|
50192
|
+
optional: false
|
|
50193
|
+
}],
|
|
50194
|
+
"cameraGridLayout.getDeviceLiveContribution": [{
|
|
50195
|
+
name: "deviceId",
|
|
50196
|
+
form: "single",
|
|
50197
|
+
optional: false
|
|
50198
|
+
}],
|
|
50199
|
+
"cameraGridLayout.getDeviceSettingsContribution": [{
|
|
50200
|
+
name: "deviceId",
|
|
50201
|
+
form: "single",
|
|
50202
|
+
optional: false
|
|
50203
|
+
}],
|
|
50170
50204
|
"cameraGridLayout.getLayout": [{
|
|
50171
50205
|
name: "deviceId",
|
|
50172
50206
|
form: "single",
|
|
@@ -50182,6 +50216,21 @@ Object.freeze({
|
|
|
50182
50216
|
form: "single",
|
|
50183
50217
|
optional: false
|
|
50184
50218
|
}],
|
|
50219
|
+
"cameraPipelineConfig.applyDeviceSettingsPatch": [{
|
|
50220
|
+
name: "deviceId",
|
|
50221
|
+
form: "single",
|
|
50222
|
+
optional: false
|
|
50223
|
+
}],
|
|
50224
|
+
"cameraPipelineConfig.getDeviceLiveContribution": [{
|
|
50225
|
+
name: "deviceId",
|
|
50226
|
+
form: "single",
|
|
50227
|
+
optional: false
|
|
50228
|
+
}],
|
|
50229
|
+
"cameraPipelineConfig.getDeviceSettingsContribution": [{
|
|
50230
|
+
name: "deviceId",
|
|
50231
|
+
form: "single",
|
|
50232
|
+
optional: false
|
|
50233
|
+
}],
|
|
50185
50234
|
"cameraStreams.getBrokerStreams": [{
|
|
50186
50235
|
name: "deviceId",
|
|
50187
50236
|
form: "single",
|
|
@@ -50207,6 +50256,16 @@ Object.freeze({
|
|
|
50207
50256
|
form: "single",
|
|
50208
50257
|
optional: false
|
|
50209
50258
|
}],
|
|
50259
|
+
"carbonMonoxide.getStatus": [{
|
|
50260
|
+
name: "deviceId",
|
|
50261
|
+
form: "single",
|
|
50262
|
+
optional: false
|
|
50263
|
+
}],
|
|
50264
|
+
"climateControl.getStatus": [{
|
|
50265
|
+
name: "deviceId",
|
|
50266
|
+
form: "single",
|
|
50267
|
+
optional: false
|
|
50268
|
+
}],
|
|
50210
50269
|
"climateControl.setFanMode": [{
|
|
50211
50270
|
name: "deviceId",
|
|
50212
50271
|
form: "single",
|
|
@@ -50247,16 +50306,41 @@ Object.freeze({
|
|
|
50247
50306
|
form: "single",
|
|
50248
50307
|
optional: false
|
|
50249
50308
|
}],
|
|
50309
|
+
"color.getStatus": [{
|
|
50310
|
+
name: "deviceId",
|
|
50311
|
+
form: "single",
|
|
50312
|
+
optional: false
|
|
50313
|
+
}],
|
|
50250
50314
|
"color.setColor": [{
|
|
50251
50315
|
name: "deviceId",
|
|
50252
50316
|
form: "single",
|
|
50253
50317
|
optional: false
|
|
50254
50318
|
}],
|
|
50319
|
+
"connectivity.getStatus": [{
|
|
50320
|
+
name: "deviceId",
|
|
50321
|
+
form: "single",
|
|
50322
|
+
optional: false
|
|
50323
|
+
}],
|
|
50324
|
+
"consumables.getStatus": [{
|
|
50325
|
+
name: "deviceId",
|
|
50326
|
+
form: "single",
|
|
50327
|
+
optional: false
|
|
50328
|
+
}],
|
|
50255
50329
|
"consumables.reset": [{
|
|
50256
50330
|
name: "deviceId",
|
|
50257
50331
|
form: "single",
|
|
50258
50332
|
optional: false
|
|
50259
50333
|
}],
|
|
50334
|
+
"contact.getStatus": [{
|
|
50335
|
+
name: "deviceId",
|
|
50336
|
+
form: "single",
|
|
50337
|
+
optional: false
|
|
50338
|
+
}],
|
|
50339
|
+
"control.getStatus": [{
|
|
50340
|
+
name: "deviceId",
|
|
50341
|
+
form: "single",
|
|
50342
|
+
optional: false
|
|
50343
|
+
}],
|
|
50260
50344
|
"control.setValue": [{
|
|
50261
50345
|
name: "deviceId",
|
|
50262
50346
|
form: "single",
|
|
@@ -50267,6 +50351,11 @@ Object.freeze({
|
|
|
50267
50351
|
form: "single",
|
|
50268
50352
|
optional: false
|
|
50269
50353
|
}],
|
|
50354
|
+
"cover.getStatus": [{
|
|
50355
|
+
name: "deviceId",
|
|
50356
|
+
form: "single",
|
|
50357
|
+
optional: false
|
|
50358
|
+
}],
|
|
50270
50359
|
"cover.open": [{
|
|
50271
50360
|
name: "deviceId",
|
|
50272
50361
|
form: "single",
|
|
@@ -50292,6 +50381,11 @@ Object.freeze({
|
|
|
50292
50381
|
form: "single",
|
|
50293
50382
|
optional: false
|
|
50294
50383
|
}],
|
|
50384
|
+
"dayNight.getStatus": [{
|
|
50385
|
+
name: "deviceId",
|
|
50386
|
+
form: "single",
|
|
50387
|
+
optional: false
|
|
50388
|
+
}],
|
|
50295
50389
|
"dayNight.setSettings": [{
|
|
50296
50390
|
name: "deviceId",
|
|
50297
50391
|
form: "single",
|
|
@@ -50302,11 +50396,31 @@ Object.freeze({
|
|
|
50302
50396
|
form: "single",
|
|
50303
50397
|
optional: true
|
|
50304
50398
|
}],
|
|
50399
|
+
"detectionPipeline.applyDeviceSettingsPatch": [{
|
|
50400
|
+
name: "deviceId",
|
|
50401
|
+
form: "single",
|
|
50402
|
+
optional: false
|
|
50403
|
+
}],
|
|
50404
|
+
"detectionPipeline.getDeviceLiveContribution": [{
|
|
50405
|
+
name: "deviceId",
|
|
50406
|
+
form: "single",
|
|
50407
|
+
optional: false
|
|
50408
|
+
}],
|
|
50409
|
+
"detectionPipeline.getDeviceSettingsContribution": [{
|
|
50410
|
+
name: "deviceId",
|
|
50411
|
+
form: "single",
|
|
50412
|
+
optional: false
|
|
50413
|
+
}],
|
|
50305
50414
|
"deviceAdminLink.getAdminLink": [{
|
|
50306
50415
|
name: "deviceId",
|
|
50307
50416
|
form: "single",
|
|
50308
50417
|
optional: false
|
|
50309
50418
|
}],
|
|
50419
|
+
"deviceAdoption.getStatus": [{
|
|
50420
|
+
name: "deviceId",
|
|
50421
|
+
form: "single",
|
|
50422
|
+
optional: false
|
|
50423
|
+
}],
|
|
50310
50424
|
"deviceAdoption.release": [{
|
|
50311
50425
|
name: "camDeviceId",
|
|
50312
50426
|
form: "single",
|
|
@@ -50322,6 +50436,11 @@ Object.freeze({
|
|
|
50322
50436
|
form: "single",
|
|
50323
50437
|
optional: false
|
|
50324
50438
|
}],
|
|
50439
|
+
"deviceDiscovery.getStatus": [{
|
|
50440
|
+
name: "deviceId",
|
|
50441
|
+
form: "single",
|
|
50442
|
+
optional: false
|
|
50443
|
+
}],
|
|
50325
50444
|
"deviceDiscovery.listDiscovered": [{
|
|
50326
50445
|
name: "deviceId",
|
|
50327
50446
|
form: "single",
|
|
@@ -50341,6 +50460,21 @@ Object.freeze({
|
|
|
50341
50460
|
form: "single",
|
|
50342
50461
|
optional: false
|
|
50343
50462
|
}],
|
|
50463
|
+
"deviceExport.applyDeviceSettingsPatch": [{
|
|
50464
|
+
name: "deviceId",
|
|
50465
|
+
form: "single",
|
|
50466
|
+
optional: false
|
|
50467
|
+
}],
|
|
50468
|
+
"deviceExport.getDeviceLiveContribution": [{
|
|
50469
|
+
name: "deviceId",
|
|
50470
|
+
form: "single",
|
|
50471
|
+
optional: false
|
|
50472
|
+
}],
|
|
50473
|
+
"deviceExport.getDeviceSettingsContribution": [{
|
|
50474
|
+
name: "deviceId",
|
|
50475
|
+
form: "single",
|
|
50476
|
+
optional: false
|
|
50477
|
+
}],
|
|
50344
50478
|
"deviceExtension.listCandidates": [{
|
|
50345
50479
|
name: "deviceId",
|
|
50346
50480
|
form: "single",
|
|
@@ -50689,6 +50823,26 @@ Object.freeze({
|
|
|
50689
50823
|
form: "single",
|
|
50690
50824
|
optional: false
|
|
50691
50825
|
}],
|
|
50826
|
+
"deviceStatus.getStatus": [{
|
|
50827
|
+
name: "deviceId",
|
|
50828
|
+
form: "single",
|
|
50829
|
+
optional: false
|
|
50830
|
+
}],
|
|
50831
|
+
"doorbell.getStatus": [{
|
|
50832
|
+
name: "deviceId",
|
|
50833
|
+
form: "single",
|
|
50834
|
+
optional: false
|
|
50835
|
+
}],
|
|
50836
|
+
"enumSensor.getStatus": [{
|
|
50837
|
+
name: "deviceId",
|
|
50838
|
+
form: "single",
|
|
50839
|
+
optional: false
|
|
50840
|
+
}],
|
|
50841
|
+
"eventEmitter.getStatus": [{
|
|
50842
|
+
name: "deviceId",
|
|
50843
|
+
form: "single",
|
|
50844
|
+
optional: false
|
|
50845
|
+
}],
|
|
50692
50846
|
"faceGallery.getFaceByTrack": [{
|
|
50693
50847
|
name: "deviceId",
|
|
50694
50848
|
form: "single",
|
|
@@ -50703,6 +50857,11 @@ Object.freeze({
|
|
|
50703
50857
|
form: "array",
|
|
50704
50858
|
optional: true
|
|
50705
50859
|
}],
|
|
50860
|
+
"fanControl.getStatus": [{
|
|
50861
|
+
name: "deviceId",
|
|
50862
|
+
form: "single",
|
|
50863
|
+
optional: false
|
|
50864
|
+
}],
|
|
50706
50865
|
"fanControl.setDirection": [{
|
|
50707
50866
|
name: "deviceId",
|
|
50708
50867
|
form: "single",
|
|
@@ -50723,6 +50882,26 @@ Object.freeze({
|
|
|
50723
50882
|
form: "single",
|
|
50724
50883
|
optional: false
|
|
50725
50884
|
}],
|
|
50885
|
+
"featureProbe.getStatus": [{
|
|
50886
|
+
name: "deviceId",
|
|
50887
|
+
form: "single",
|
|
50888
|
+
optional: false
|
|
50889
|
+
}],
|
|
50890
|
+
"flood.getStatus": [{
|
|
50891
|
+
name: "deviceId",
|
|
50892
|
+
form: "single",
|
|
50893
|
+
optional: false
|
|
50894
|
+
}],
|
|
50895
|
+
"gas.getStatus": [{
|
|
50896
|
+
name: "deviceId",
|
|
50897
|
+
form: "single",
|
|
50898
|
+
optional: false
|
|
50899
|
+
}],
|
|
50900
|
+
"humidifier.getStatus": [{
|
|
50901
|
+
name: "deviceId",
|
|
50902
|
+
form: "single",
|
|
50903
|
+
optional: false
|
|
50904
|
+
}],
|
|
50726
50905
|
"humidifier.setMode": [{
|
|
50727
50906
|
name: "deviceId",
|
|
50728
50907
|
form: "single",
|
|
@@ -50738,11 +50917,26 @@ Object.freeze({
|
|
|
50738
50917
|
form: "single",
|
|
50739
50918
|
optional: false
|
|
50740
50919
|
}],
|
|
50920
|
+
"humiditySensor.getStatus": [{
|
|
50921
|
+
name: "deviceId",
|
|
50922
|
+
form: "single",
|
|
50923
|
+
optional: false
|
|
50924
|
+
}],
|
|
50925
|
+
"image.getStatus": [{
|
|
50926
|
+
name: "deviceId",
|
|
50927
|
+
form: "single",
|
|
50928
|
+
optional: false
|
|
50929
|
+
}],
|
|
50741
50930
|
"imageSettings.getOptions": [{
|
|
50742
50931
|
name: "deviceId",
|
|
50743
50932
|
form: "single",
|
|
50744
50933
|
optional: false
|
|
50745
50934
|
}],
|
|
50935
|
+
"imageSettings.getStatus": [{
|
|
50936
|
+
name: "deviceId",
|
|
50937
|
+
form: "single",
|
|
50938
|
+
optional: false
|
|
50939
|
+
}],
|
|
50746
50940
|
"imageSettings.setSettings": [{
|
|
50747
50941
|
name: "deviceId",
|
|
50748
50942
|
form: "single",
|
|
@@ -50753,6 +50947,11 @@ Object.freeze({
|
|
|
50753
50947
|
form: "single",
|
|
50754
50948
|
optional: false
|
|
50755
50949
|
}],
|
|
50950
|
+
"intercom.getStatus": [{
|
|
50951
|
+
name: "deviceId",
|
|
50952
|
+
form: "single",
|
|
50953
|
+
optional: false
|
|
50954
|
+
}],
|
|
50756
50955
|
"intercom.handleAnswer": [{
|
|
50757
50956
|
name: "deviceId",
|
|
50758
50957
|
form: "single",
|
|
@@ -50783,6 +50982,11 @@ Object.freeze({
|
|
|
50783
50982
|
form: "single",
|
|
50784
50983
|
optional: false
|
|
50785
50984
|
}],
|
|
50985
|
+
"lawnMowerControl.getStatus": [{
|
|
50986
|
+
name: "deviceId",
|
|
50987
|
+
form: "single",
|
|
50988
|
+
optional: false
|
|
50989
|
+
}],
|
|
50786
50990
|
"lawnMowerControl.pause": [{
|
|
50787
50991
|
name: "deviceId",
|
|
50788
50992
|
form: "single",
|
|
@@ -50793,6 +50997,11 @@ Object.freeze({
|
|
|
50793
50997
|
form: "single",
|
|
50794
50998
|
optional: false
|
|
50795
50999
|
}],
|
|
51000
|
+
"lockControl.getStatus": [{
|
|
51001
|
+
name: "deviceId",
|
|
51002
|
+
form: "single",
|
|
51003
|
+
optional: false
|
|
51004
|
+
}],
|
|
50796
51005
|
"lockControl.lock": [{
|
|
50797
51006
|
name: "deviceId",
|
|
50798
51007
|
form: "single",
|
|
@@ -50808,6 +51017,11 @@ Object.freeze({
|
|
|
50808
51017
|
form: "single",
|
|
50809
51018
|
optional: false
|
|
50810
51019
|
}],
|
|
51020
|
+
"mediaPlayer.getStatus": [{
|
|
51021
|
+
name: "deviceId",
|
|
51022
|
+
form: "single",
|
|
51023
|
+
optional: false
|
|
51024
|
+
}],
|
|
50811
51025
|
"mediaPlayer.next": [{
|
|
50812
51026
|
name: "deviceId",
|
|
50813
51027
|
form: "single",
|
|
@@ -50868,6 +51082,11 @@ Object.freeze({
|
|
|
50868
51082
|
form: "single",
|
|
50869
51083
|
optional: false
|
|
50870
51084
|
}],
|
|
51085
|
+
"motion.getStatus": [{
|
|
51086
|
+
name: "deviceId",
|
|
51087
|
+
form: "single",
|
|
51088
|
+
optional: false
|
|
51089
|
+
}],
|
|
50871
51090
|
"motion.isDetected": [{
|
|
50872
51091
|
name: "deviceId",
|
|
50873
51092
|
form: "single",
|
|
@@ -50878,11 +51097,31 @@ Object.freeze({
|
|
|
50878
51097
|
form: "single",
|
|
50879
51098
|
optional: false
|
|
50880
51099
|
}],
|
|
51100
|
+
"motionDetection.applyDeviceSettingsPatch": [{
|
|
51101
|
+
name: "deviceId",
|
|
51102
|
+
form: "single",
|
|
51103
|
+
optional: false
|
|
51104
|
+
}],
|
|
51105
|
+
"motionDetection.getDeviceLiveContribution": [{
|
|
51106
|
+
name: "deviceId",
|
|
51107
|
+
form: "single",
|
|
51108
|
+
optional: false
|
|
51109
|
+
}],
|
|
51110
|
+
"motionDetection.getDeviceSettingsContribution": [{
|
|
51111
|
+
name: "deviceId",
|
|
51112
|
+
form: "single",
|
|
51113
|
+
optional: false
|
|
51114
|
+
}],
|
|
50881
51115
|
"motionDetection.removeCamera": [{
|
|
50882
51116
|
name: "deviceId",
|
|
50883
51117
|
form: "single",
|
|
50884
51118
|
optional: false
|
|
50885
51119
|
}],
|
|
51120
|
+
"motionTrigger.getStatus": [{
|
|
51121
|
+
name: "deviceId",
|
|
51122
|
+
form: "single",
|
|
51123
|
+
optional: false
|
|
51124
|
+
}],
|
|
50886
51125
|
"motionTrigger.setMotionTrigger": [{
|
|
50887
51126
|
name: "deviceId",
|
|
50888
51127
|
form: "single",
|
|
@@ -50893,6 +51132,11 @@ Object.freeze({
|
|
|
50893
51132
|
form: "single",
|
|
50894
51133
|
optional: false
|
|
50895
51134
|
}],
|
|
51135
|
+
"motionZones.getStatus": [{
|
|
51136
|
+
name: "deviceId",
|
|
51137
|
+
form: "single",
|
|
51138
|
+
optional: false
|
|
51139
|
+
}],
|
|
50896
51140
|
"motionZones.setZone": [{
|
|
50897
51141
|
name: "deviceId",
|
|
50898
51142
|
form: "single",
|
|
@@ -50903,6 +51147,11 @@ Object.freeze({
|
|
|
50903
51147
|
form: "single",
|
|
50904
51148
|
optional: false
|
|
50905
51149
|
}],
|
|
51150
|
+
"nativeObjectDetection.getStatus": [{
|
|
51151
|
+
name: "deviceId",
|
|
51152
|
+
form: "single",
|
|
51153
|
+
optional: false
|
|
51154
|
+
}],
|
|
50906
51155
|
"nativeObjectDetection.setEnabled": [{
|
|
50907
51156
|
name: "deviceId",
|
|
50908
51157
|
form: "single",
|
|
@@ -50918,6 +51167,11 @@ Object.freeze({
|
|
|
50918
51167
|
form: "single",
|
|
50919
51168
|
optional: false
|
|
50920
51169
|
}],
|
|
51170
|
+
"navigation.getStatus": [{
|
|
51171
|
+
name: "deviceId",
|
|
51172
|
+
form: "single",
|
|
51173
|
+
optional: false
|
|
51174
|
+
}],
|
|
50921
51175
|
"navigation.goToPoint": [{
|
|
50922
51176
|
name: "deviceId",
|
|
50923
51177
|
form: "single",
|
|
@@ -50963,6 +51217,11 @@ Object.freeze({
|
|
|
50963
51217
|
form: "single",
|
|
50964
51218
|
optional: false
|
|
50965
51219
|
}],
|
|
51220
|
+
"networkLink.getStatus": [{
|
|
51221
|
+
name: "deviceId",
|
|
51222
|
+
form: "single",
|
|
51223
|
+
optional: false
|
|
51224
|
+
}],
|
|
50966
51225
|
"networkQuality.getDeviceStats": [{
|
|
50967
51226
|
name: "deviceId",
|
|
50968
51227
|
form: "single",
|
|
@@ -50988,11 +51247,26 @@ Object.freeze({
|
|
|
50988
51247
|
form: "single",
|
|
50989
51248
|
optional: false
|
|
50990
51249
|
}],
|
|
51250
|
+
"notifier.getStatus": [{
|
|
51251
|
+
name: "deviceId",
|
|
51252
|
+
form: "single",
|
|
51253
|
+
optional: false
|
|
51254
|
+
}],
|
|
50991
51255
|
"notifier.send": [{
|
|
50992
51256
|
name: "deviceId",
|
|
50993
51257
|
form: "single",
|
|
50994
51258
|
optional: false
|
|
50995
51259
|
}],
|
|
51260
|
+
"numericSensor.getStatus": [{
|
|
51261
|
+
name: "deviceId",
|
|
51262
|
+
form: "single",
|
|
51263
|
+
optional: false
|
|
51264
|
+
}],
|
|
51265
|
+
"osd.getStatus": [{
|
|
51266
|
+
name: "deviceId",
|
|
51267
|
+
form: "single",
|
|
51268
|
+
optional: false
|
|
51269
|
+
}],
|
|
50996
51270
|
"osd.setOverlay": [{
|
|
50997
51271
|
name: "deviceId",
|
|
50998
51272
|
form: "single",
|
|
@@ -51052,6 +51326,11 @@ Object.freeze({
|
|
|
51052
51326
|
form: "single",
|
|
51053
51327
|
optional: false
|
|
51054
51328
|
}],
|
|
51329
|
+
"petFeeder.getStatus": [{
|
|
51330
|
+
name: "deviceId",
|
|
51331
|
+
form: "single",
|
|
51332
|
+
optional: false
|
|
51333
|
+
}],
|
|
51055
51334
|
"petFeeder.markFoodReplenished": [{
|
|
51056
51335
|
name: "deviceId",
|
|
51057
51336
|
form: "single",
|
|
@@ -51087,6 +51366,11 @@ Object.freeze({
|
|
|
51087
51366
|
form: "single",
|
|
51088
51367
|
optional: false
|
|
51089
51368
|
}],
|
|
51369
|
+
"pipelineAnalytics.applyDeviceSettingsPatch": [{
|
|
51370
|
+
name: "deviceId",
|
|
51371
|
+
form: "single",
|
|
51372
|
+
optional: false
|
|
51373
|
+
}],
|
|
51090
51374
|
"pipelineAnalytics.clearTrackRelation": [{
|
|
51091
51375
|
name: "deviceId",
|
|
51092
51376
|
form: "single",
|
|
@@ -51127,6 +51411,16 @@ Object.freeze({
|
|
|
51127
51411
|
form: "single",
|
|
51128
51412
|
optional: false
|
|
51129
51413
|
}],
|
|
51414
|
+
"pipelineAnalytics.getDeviceLiveContribution": [{
|
|
51415
|
+
name: "deviceId",
|
|
51416
|
+
form: "single",
|
|
51417
|
+
optional: false
|
|
51418
|
+
}],
|
|
51419
|
+
"pipelineAnalytics.getDeviceSettingsContribution": [{
|
|
51420
|
+
name: "deviceId",
|
|
51421
|
+
form: "single",
|
|
51422
|
+
optional: false
|
|
51423
|
+
}],
|
|
51130
51424
|
"pipelineAnalytics.getEventDensity": [{
|
|
51131
51425
|
name: "deviceId",
|
|
51132
51426
|
form: "single",
|
|
@@ -51342,6 +51636,11 @@ Object.freeze({
|
|
|
51342
51636
|
form: "single",
|
|
51343
51637
|
optional: true
|
|
51344
51638
|
}],
|
|
51639
|
+
"pipelineOrchestrator.applyDeviceSettingsPatch": [{
|
|
51640
|
+
name: "deviceId",
|
|
51641
|
+
form: "single",
|
|
51642
|
+
optional: false
|
|
51643
|
+
}],
|
|
51345
51644
|
"pipelineOrchestrator.assignAudio": [{
|
|
51346
51645
|
name: "deviceId",
|
|
51347
51646
|
form: "single",
|
|
@@ -51387,6 +51686,16 @@ Object.freeze({
|
|
|
51387
51686
|
form: "single",
|
|
51388
51687
|
optional: false
|
|
51389
51688
|
}],
|
|
51689
|
+
"pipelineOrchestrator.getDeviceLiveContribution": [{
|
|
51690
|
+
name: "deviceId",
|
|
51691
|
+
form: "single",
|
|
51692
|
+
optional: false
|
|
51693
|
+
}],
|
|
51694
|
+
"pipelineOrchestrator.getDeviceSettingsContribution": [{
|
|
51695
|
+
name: "deviceId",
|
|
51696
|
+
form: "single",
|
|
51697
|
+
optional: false
|
|
51698
|
+
}],
|
|
51390
51699
|
"pipelineOrchestrator.getPipelineAssignment": [{
|
|
51391
51700
|
name: "deviceId",
|
|
51392
51701
|
form: "single",
|
|
@@ -51507,11 +51816,31 @@ Object.freeze({
|
|
|
51507
51816
|
form: "single",
|
|
51508
51817
|
optional: true
|
|
51509
51818
|
}],
|
|
51819
|
+
"powerMeter.getStatus": [{
|
|
51820
|
+
name: "deviceId",
|
|
51821
|
+
form: "single",
|
|
51822
|
+
optional: false
|
|
51823
|
+
}],
|
|
51824
|
+
"presence.getStatus": [{
|
|
51825
|
+
name: "deviceId",
|
|
51826
|
+
form: "single",
|
|
51827
|
+
optional: false
|
|
51828
|
+
}],
|
|
51829
|
+
"pressureSensor.getStatus": [{
|
|
51830
|
+
name: "deviceId",
|
|
51831
|
+
form: "single",
|
|
51832
|
+
optional: false
|
|
51833
|
+
}],
|
|
51510
51834
|
"privacyMask.getOptions": [{
|
|
51511
51835
|
name: "deviceId",
|
|
51512
51836
|
form: "single",
|
|
51513
51837
|
optional: false
|
|
51514
51838
|
}],
|
|
51839
|
+
"privacyMask.getStatus": [{
|
|
51840
|
+
name: "deviceId",
|
|
51841
|
+
form: "single",
|
|
51842
|
+
optional: false
|
|
51843
|
+
}],
|
|
51515
51844
|
"privacyMask.setAudioEnabled": [{
|
|
51516
51845
|
name: "deviceId",
|
|
51517
51846
|
form: "single",
|
|
@@ -51562,6 +51891,11 @@ Object.freeze({
|
|
|
51562
51891
|
form: "single",
|
|
51563
51892
|
optional: false
|
|
51564
51893
|
}],
|
|
51894
|
+
"ptz.getStatus": [{
|
|
51895
|
+
name: "deviceId",
|
|
51896
|
+
form: "single",
|
|
51897
|
+
optional: false
|
|
51898
|
+
}],
|
|
51565
51899
|
"ptz.goHome": [{
|
|
51566
51900
|
name: "deviceId",
|
|
51567
51901
|
form: "single",
|
|
@@ -51652,6 +51986,11 @@ Object.freeze({
|
|
|
51652
51986
|
form: "single",
|
|
51653
51987
|
optional: false
|
|
51654
51988
|
}],
|
|
51989
|
+
"recordingArchive.applyDeviceSettingsPatch": [{
|
|
51990
|
+
name: "deviceId",
|
|
51991
|
+
form: "single",
|
|
51992
|
+
optional: false
|
|
51993
|
+
}],
|
|
51655
51994
|
"recordingArchive.deleteFootprint": [{
|
|
51656
51995
|
name: "deviceId",
|
|
51657
51996
|
form: "single",
|
|
@@ -51672,6 +52011,21 @@ Object.freeze({
|
|
|
51672
52011
|
form: "single",
|
|
51673
52012
|
optional: false
|
|
51674
52013
|
}],
|
|
52014
|
+
"recordingArchive.getDeviceLiveContribution": [{
|
|
52015
|
+
name: "deviceId",
|
|
52016
|
+
form: "single",
|
|
52017
|
+
optional: false
|
|
52018
|
+
}],
|
|
52019
|
+
"recordingArchive.getDeviceSettingsContribution": [{
|
|
52020
|
+
name: "deviceId",
|
|
52021
|
+
form: "single",
|
|
52022
|
+
optional: false
|
|
52023
|
+
}],
|
|
52024
|
+
"recordingArchive.getStatus": [{
|
|
52025
|
+
name: "deviceId",
|
|
52026
|
+
form: "single",
|
|
52027
|
+
optional: false
|
|
52028
|
+
}],
|
|
51675
52029
|
"recordingArchive.listOpsLog": [{
|
|
51676
52030
|
name: "deviceId",
|
|
51677
52031
|
form: "single",
|
|
@@ -51757,6 +52111,11 @@ Object.freeze({
|
|
|
51757
52111
|
form: "single",
|
|
51758
52112
|
optional: false
|
|
51759
52113
|
}],
|
|
52114
|
+
"recordingOnboard.getStatus": [{
|
|
52115
|
+
name: "deviceId",
|
|
52116
|
+
form: "single",
|
|
52117
|
+
optional: false
|
|
52118
|
+
}],
|
|
51760
52119
|
"recordingOnboard.setSettings": [{
|
|
51761
52120
|
name: "deviceId",
|
|
51762
52121
|
form: "single",
|
|
@@ -51787,6 +52146,11 @@ Object.freeze({
|
|
|
51787
52146
|
form: "single",
|
|
51788
52147
|
optional: false
|
|
51789
52148
|
}],
|
|
52149
|
+
"sceneMonitor.getStatus": [{
|
|
52150
|
+
name: "deviceId",
|
|
52151
|
+
form: "single",
|
|
52152
|
+
optional: false
|
|
52153
|
+
}],
|
|
51790
52154
|
"sceneMonitor.listScenes": [{
|
|
51791
52155
|
name: "deviceId",
|
|
51792
52156
|
form: "single",
|
|
@@ -51812,6 +52176,11 @@ Object.freeze({
|
|
|
51812
52176
|
form: "single",
|
|
51813
52177
|
optional: false
|
|
51814
52178
|
}],
|
|
52179
|
+
"scriptRunner.getStatus": [{
|
|
52180
|
+
name: "deviceId",
|
|
52181
|
+
form: "single",
|
|
52182
|
+
optional: false
|
|
52183
|
+
}],
|
|
51815
52184
|
"scriptRunner.run": [{
|
|
51816
52185
|
name: "deviceId",
|
|
51817
52186
|
form: "single",
|
|
@@ -51822,11 +52191,31 @@ Object.freeze({
|
|
|
51822
52191
|
form: "single",
|
|
51823
52192
|
optional: false
|
|
51824
52193
|
}],
|
|
52194
|
+
"smoke.getStatus": [{
|
|
52195
|
+
name: "deviceId",
|
|
52196
|
+
form: "single",
|
|
52197
|
+
optional: false
|
|
52198
|
+
}],
|
|
52199
|
+
"snapshot.applyDeviceSettingsPatch": [{
|
|
52200
|
+
name: "deviceId",
|
|
52201
|
+
form: "single",
|
|
52202
|
+
optional: false
|
|
52203
|
+
}],
|
|
51825
52204
|
"snapshot.getDebugState": [{
|
|
51826
52205
|
name: "deviceId",
|
|
51827
52206
|
form: "single",
|
|
51828
52207
|
optional: false
|
|
51829
52208
|
}],
|
|
52209
|
+
"snapshot.getDeviceLiveContribution": [{
|
|
52210
|
+
name: "deviceId",
|
|
52211
|
+
form: "single",
|
|
52212
|
+
optional: false
|
|
52213
|
+
}],
|
|
52214
|
+
"snapshot.getDeviceSettingsContribution": [{
|
|
52215
|
+
name: "deviceId",
|
|
52216
|
+
form: "single",
|
|
52217
|
+
optional: false
|
|
52218
|
+
}],
|
|
51830
52219
|
"snapshot.getSnapshot": [{
|
|
51831
52220
|
name: "deviceId",
|
|
51832
52221
|
form: "single",
|
|
@@ -51843,6 +52232,11 @@ Object.freeze({
|
|
|
51843
52232
|
form: "array",
|
|
51844
52233
|
optional: false
|
|
51845
52234
|
}],
|
|
52235
|
+
"snapshot.getStatus": [{
|
|
52236
|
+
name: "deviceId",
|
|
52237
|
+
form: "single",
|
|
52238
|
+
optional: false
|
|
52239
|
+
}],
|
|
51846
52240
|
"snapshot.invalidateCache": [{
|
|
51847
52241
|
name: "deviceId",
|
|
51848
52242
|
form: "single",
|
|
@@ -51853,6 +52247,11 @@ Object.freeze({
|
|
|
51853
52247
|
form: "single",
|
|
51854
52248
|
optional: false
|
|
51855
52249
|
}],
|
|
52250
|
+
"streamBroker.applyDeviceSettingsPatch": [{
|
|
52251
|
+
name: "deviceId",
|
|
52252
|
+
form: "single",
|
|
52253
|
+
optional: false
|
|
52254
|
+
}],
|
|
51856
52255
|
"streamBroker.assignProfile": [{
|
|
51857
52256
|
name: "deviceId",
|
|
51858
52257
|
form: "single",
|
|
@@ -51868,6 +52267,16 @@ Object.freeze({
|
|
|
51868
52267
|
form: "single",
|
|
51869
52268
|
optional: false
|
|
51870
52269
|
}],
|
|
52270
|
+
"streamBroker.getDeviceLiveContribution": [{
|
|
52271
|
+
name: "deviceId",
|
|
52272
|
+
form: "single",
|
|
52273
|
+
optional: false
|
|
52274
|
+
}],
|
|
52275
|
+
"streamBroker.getDeviceSettingsContribution": [{
|
|
52276
|
+
name: "deviceId",
|
|
52277
|
+
form: "single",
|
|
52278
|
+
optional: false
|
|
52279
|
+
}],
|
|
51871
52280
|
"streamBroker.getStreamWithCodec": [{
|
|
51872
52281
|
name: "deviceId",
|
|
51873
52282
|
form: "single",
|
|
@@ -51928,16 +52337,46 @@ Object.freeze({
|
|
|
51928
52337
|
form: "single",
|
|
51929
52338
|
optional: false
|
|
51930
52339
|
}],
|
|
52340
|
+
"streamParams.getStatus": [{
|
|
52341
|
+
name: "deviceId",
|
|
52342
|
+
form: "single",
|
|
52343
|
+
optional: false
|
|
52344
|
+
}],
|
|
51931
52345
|
"streamParams.setProfile": [{
|
|
51932
52346
|
name: "deviceId",
|
|
51933
52347
|
form: "single",
|
|
51934
52348
|
optional: false
|
|
51935
52349
|
}],
|
|
52350
|
+
"switch.getStatus": [{
|
|
52351
|
+
name: "deviceId",
|
|
52352
|
+
form: "single",
|
|
52353
|
+
optional: false
|
|
52354
|
+
}],
|
|
51936
52355
|
"switch.setState": [{
|
|
51937
52356
|
name: "deviceId",
|
|
51938
52357
|
form: "single",
|
|
51939
52358
|
optional: false
|
|
51940
52359
|
}],
|
|
52360
|
+
"tamper.getStatus": [{
|
|
52361
|
+
name: "deviceId",
|
|
52362
|
+
form: "single",
|
|
52363
|
+
optional: false
|
|
52364
|
+
}],
|
|
52365
|
+
"temperatureSensor.getStatus": [{
|
|
52366
|
+
name: "deviceId",
|
|
52367
|
+
form: "single",
|
|
52368
|
+
optional: false
|
|
52369
|
+
}],
|
|
52370
|
+
"update.getStatus": [{
|
|
52371
|
+
name: "deviceId",
|
|
52372
|
+
form: "single",
|
|
52373
|
+
optional: false
|
|
52374
|
+
}],
|
|
52375
|
+
"vacuumControl.getStatus": [{
|
|
52376
|
+
name: "deviceId",
|
|
52377
|
+
form: "single",
|
|
52378
|
+
optional: false
|
|
52379
|
+
}],
|
|
51941
52380
|
"vacuumControl.locate": [{
|
|
51942
52381
|
name: "deviceId",
|
|
51943
52382
|
form: "single",
|
|
@@ -51973,6 +52412,11 @@ Object.freeze({
|
|
|
51973
52412
|
form: "single",
|
|
51974
52413
|
optional: false
|
|
51975
52414
|
}],
|
|
52415
|
+
"valve.getStatus": [{
|
|
52416
|
+
name: "deviceId",
|
|
52417
|
+
form: "single",
|
|
52418
|
+
optional: false
|
|
52419
|
+
}],
|
|
51976
52420
|
"valve.open": [{
|
|
51977
52421
|
name: "deviceId",
|
|
51978
52422
|
form: "single",
|
|
@@ -51988,6 +52432,11 @@ Object.freeze({
|
|
|
51988
52432
|
form: "single",
|
|
51989
52433
|
optional: false
|
|
51990
52434
|
}],
|
|
52435
|
+
"vibration.getStatus": [{
|
|
52436
|
+
name: "deviceId",
|
|
52437
|
+
form: "single",
|
|
52438
|
+
optional: false
|
|
52439
|
+
}],
|
|
51991
52440
|
"videoclips.dialClipStream": [{
|
|
51992
52441
|
name: "deviceId",
|
|
51993
52442
|
form: "single",
|
|
@@ -52023,6 +52472,11 @@ Object.freeze({
|
|
|
52023
52472
|
form: "single",
|
|
52024
52473
|
optional: false
|
|
52025
52474
|
}],
|
|
52475
|
+
"waterHeater.getStatus": [{
|
|
52476
|
+
name: "deviceId",
|
|
52477
|
+
form: "single",
|
|
52478
|
+
optional: false
|
|
52479
|
+
}],
|
|
52026
52480
|
"waterHeater.setAway": [{
|
|
52027
52481
|
name: "deviceId",
|
|
52028
52482
|
form: "single",
|
|
@@ -52038,6 +52492,11 @@ Object.freeze({
|
|
|
52038
52492
|
form: "single",
|
|
52039
52493
|
optional: false
|
|
52040
52494
|
}],
|
|
52495
|
+
"weather.getStatus": [{
|
|
52496
|
+
name: "deviceId",
|
|
52497
|
+
form: "single",
|
|
52498
|
+
optional: false
|
|
52499
|
+
}],
|
|
52041
52500
|
"webrtcSession.addIceCandidate": [{
|
|
52042
52501
|
name: "deviceId",
|
|
52043
52502
|
form: "single",
|
|
@@ -52775,7 +53234,7 @@ var PreviewTextField = string().max(200);
|
|
|
52775
53234
|
* Whether the notification's preview is a STILL or a short animation.
|
|
52776
53235
|
*
|
|
52777
53236
|
* The operator's ask, verbatim: *"inviato come gif o video (come per le altre
|
|
52778
|
-
* rule)"* — the other rules already offer an animated preview, and a ten-hour
|
|
53237
|
+
* rule)"* [sent as a gif or video (as for the other rules)] — the other rules already offer an animated preview, and a ten-hour
|
|
52779
53238
|
* night reads better as three seconds of motion than as one frame of it. Both
|
|
52780
53239
|
* modes get the SAME treatment (blurred frame, large centred title); `'gif'`
|
|
52781
53240
|
* simply applies it to a dozen frames sampled across the render and assembles
|