@camstack/addon-provider-hikvision 1.2.137 → 1.2.138
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.js
CHANGED
|
@@ -7458,7 +7458,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
7458
7458
|
return DeviceRole;
|
|
7459
7459
|
}({});
|
|
7460
7460
|
//#endregion
|
|
7461
|
-
//#region ../types/dist/composition-
|
|
7461
|
+
//#region ../types/dist/composition-Bzr7GwgP.mjs
|
|
7462
7462
|
/**
|
|
7463
7463
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
7464
7464
|
*
|
|
@@ -7512,20 +7512,20 @@ function portable(target) {
|
|
|
7512
7512
|
}
|
|
7513
7513
|
portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
|
|
7514
7514
|
/**
|
|
7515
|
-
*
|
|
7516
|
-
*
|
|
7515
|
+
* THE table "which boolean of this device type counts as HIGH", and the
|
|
7516
|
+
* pure evaluator of its EDGE.
|
|
7517
7517
|
*
|
|
7518
|
-
*
|
|
7519
|
-
*
|
|
7520
|
-
*
|
|
7521
|
-
*
|
|
7522
|
-
*
|
|
7523
|
-
*
|
|
7518
|
+
* ONE table for everyone who asks "is this device HIGH?": the
|
|
7519
|
+
* recorder's `RecordingTriggers.sensorDeviceIds` trigger, the post-analysis
|
|
7520
|
+
* sensor markers, the orchestrator's camera-sensors bridge and
|
|
7521
|
+
* the sources of a composite doorbell (`doorbellFeatureSources`, D671).
|
|
7522
|
+
* A second copy would diverge at the first cap added, and the symptom — "the
|
|
7523
|
+
* sensor rings the doorbell but does not record" — is exactly D62.
|
|
7524
7524
|
*
|
|
7525
|
-
* ⚠
|
|
7526
|
-
*
|
|
7527
|
-
*
|
|
7528
|
-
*
|
|
7525
|
+
* ⚠ NOT `DEVICE_STATE_READERS` (`catalogs/device-state-vocabulary.ts`), and the
|
|
7526
|
+
* two must not be unified: that one answers "what is the state WORD for a
|
|
7527
|
+
* rule" (and includes `presence`, `cover`, `alarm-panel`), this one "which
|
|
7528
|
+
* boolean's EDGE counts". Deliberately different vocabularies.
|
|
7529
7529
|
*/
|
|
7530
7530
|
/**
|
|
7531
7531
|
* Known binary / switch source caps → the boolean slice field whose
|
|
@@ -7546,6 +7546,8 @@ var SOURCE_CAP_ACTIVE_FIELD = {
|
|
|
7546
7546
|
vibration: "detected",
|
|
7547
7547
|
tamper: "tampered"
|
|
7548
7548
|
};
|
|
7549
|
+
/** Cap names whose presence in a device's bindings qualify it as a source. */
|
|
7550
|
+
var SOURCE_CAPS = Object.keys(SOURCE_CAP_ACTIVE_FIELD);
|
|
7549
7551
|
/**
|
|
7550
7552
|
* Error types for the safe expression engine. Two distinct classes so callers
|
|
7551
7553
|
* can tell a compile-time (grammar) failure from a runtime (evaluation)
|
|
@@ -9152,22 +9154,22 @@ var CLASS_MAP_MACRO_TARGETS = [
|
|
|
9152
9154
|
"package"
|
|
9153
9155
|
];
|
|
9154
9156
|
/**
|
|
9155
|
-
*
|
|
9156
|
-
*
|
|
9157
|
+
* The FIRST-LEVEL macro classes: those an object detector emits and that
|
|
9158
|
+
* an operator can select.
|
|
9157
9159
|
*
|
|
9158
|
-
*
|
|
9160
|
+
* They are the three offered by the `object-detection` step
|
|
9159
9161
|
* (`addon-pipeline/src/detection-pipeline/registry/step-definitions.ts`,
|
|
9160
|
-
* `enabledMacroClasses`). `package`
|
|
9161
|
-
* `MACRO_LABELS` —
|
|
9162
|
-
* `package-detection`,
|
|
9163
|
-
*
|
|
9162
|
+
* `enabledMacroClasses`). `package` is in {@link CLASS_MAP_MACRO_TARGETS} and in
|
|
9163
|
+
* `MACRO_LABELS` — it is a true macro — but NOT here: it belongs to the step
|
|
9164
|
+
* `package-detection`, whose enablement is driven by zones, and offering the
|
|
9165
|
+
* same word twice has already made an operator turn on the COCO proxy
|
|
9164
9166
|
* (suitcase/backpack/handbag) lasciando spento il detector dedicato.
|
|
9165
9167
|
*
|
|
9166
|
-
*
|
|
9167
|
-
*
|
|
9168
|
-
* (`types/detection.ts`);
|
|
9169
|
-
* (`RecordingTriggers.objectClasses`)
|
|
9170
|
-
*
|
|
9168
|
+
* ONE list. Before today the same three were hand-written in the step's offer
|
|
9169
|
+
* and a second time as the union `FirstLevelMacro`
|
|
9170
|
+
* (`types/detection.ts`); a third copy for the recording trigger
|
|
9171
|
+
* (`RecordingTriggers.objectClasses`) would have made the later divergence
|
|
9172
|
+
* invisible.
|
|
9171
9173
|
*/
|
|
9172
9174
|
var FIRST_LEVEL_MACRO_CLASSES = [
|
|
9173
9175
|
"person",
|
|
@@ -9232,17 +9234,17 @@ var RecordingStorageModeSchema = _enum([
|
|
|
9232
9234
|
"on-device-decision"
|
|
9233
9235
|
]);
|
|
9234
9236
|
/**
|
|
9235
|
-
*
|
|
9236
|
-
*
|
|
9237
|
+
* The macro classes that can open a recording window — the same
|
|
9238
|
+
* three offered by the `object-detection` step, from ONE list
|
|
9237
9239
|
* ({@link FIRST_LEVEL_MACRO_CLASSES}).
|
|
9238
9240
|
*/
|
|
9239
9241
|
var RecordingObjectTriggerClassSchema = _enum(FIRST_LEVEL_MACRO_CLASSES);
|
|
9240
9242
|
/**
|
|
9241
|
-
* True
|
|
9243
|
+
* True when `values` does not repeat an element.
|
|
9242
9244
|
*
|
|
9243
|
-
*
|
|
9244
|
-
*
|
|
9245
|
-
*
|
|
9245
|
+
* A duplicate is not harmless: every entry of `objectClasses` / `sensorDeviceIds`
|
|
9246
|
+
* becomes a SOURCE in `bandTriggerSources`, and the same source twice
|
|
9247
|
+
* would count its windows twice in `segmentMissedByMs`.
|
|
9246
9248
|
*/
|
|
9247
9249
|
var noDuplicates = (values) => new Set(values).size === values.length;
|
|
9248
9250
|
/** Which detectors trigger an `events`-mode band. */
|
|
@@ -9250,34 +9252,34 @@ var RecordingTriggersSchema = object({
|
|
|
9250
9252
|
motion: boolean().optional(),
|
|
9251
9253
|
audioThresholdDbfs: number().optional(),
|
|
9252
9254
|
/**
|
|
9253
|
-
*
|
|
9254
|
-
*
|
|
9255
|
-
*
|
|
9256
|
-
*
|
|
9255
|
+
* The macro classes whose detection opens a window. ABSENT = the source
|
|
9256
|
+
* is not listened to; an EMPTY array is rejected, because "events band, object
|
|
9257
|
+
* trigger on, no class" is the same shape "enabled and records
|
|
9258
|
+
* nothing, forever" that `eventsBandCanEverDemand` is written against.
|
|
9257
9259
|
*
|
|
9258
|
-
*
|
|
9259
|
-
*
|
|
9260
|
-
* `minConfidence<Macro>`
|
|
9261
|
-
* (`source: 'onboard'`)
|
|
9262
|
-
*
|
|
9260
|
+
* The signal read is ALREADY FILTERED: only `source: 'pipeline'` detections, i.e.
|
|
9261
|
+
* those that went through `enabledMacroClasses`, the
|
|
9262
|
+
* `minConfidence<Macro>` and the full-frame guard. The camera's onboard AI
|
|
9263
|
+
* (`source: 'onboard'`) goes through none of those gates and does NOT open
|
|
9264
|
+
* windows — see `recorder/object-trigger.ts`.
|
|
9263
9265
|
*/
|
|
9264
9266
|
objectClasses: array(RecordingObjectTriggerClassSchema).min(1).refine(noDuplicates, { message: "objectClasses must not repeat a class" }).optional(),
|
|
9265
9267
|
/**
|
|
9266
|
-
*
|
|
9267
|
-
*
|
|
9268
|
+
* The LINKED devices whose RISING EDGE opens a window. Absent = the source
|
|
9269
|
+
* is not listened to; an empty array is rejected for the same reason as
|
|
9268
9270
|
* `objectClasses`.
|
|
9269
9271
|
*
|
|
9270
|
-
*
|
|
9271
|
-
*
|
|
9272
|
-
*
|
|
9273
|
-
*
|
|
9274
|
-
* device (D12) —
|
|
9272
|
+
* These are SOURCE device ids, not cameras: the band names them, so the
|
|
9273
|
+
* hot path (`DeviceStateChanged`, at bus rate across the whole fleet)
|
|
9274
|
+
* does no RPC. The OFFER from which the operator picks them is another question, and
|
|
9275
|
+
* is resolved with `deviceManager.getLinkedDevices` + `getBindingsBatch` per
|
|
9276
|
+
* device (D12) — never a global list of caps.
|
|
9275
9277
|
*
|
|
9276
|
-
*
|
|
9277
|
-
* `SOURCE_CAP_ACTIVE_FIELD` (`catalogs/sensor-active-state.ts`)
|
|
9278
|
-
*
|
|
9279
|
-
*
|
|
9280
|
-
*
|
|
9278
|
+
* What "high" means depends on the device TYPE and is not decided here:
|
|
9279
|
+
* `SOURCE_CAP_ACTIVE_FIELD` (`catalogs/sensor-active-state.ts`) is THE table,
|
|
9280
|
+
* the same one as the composite doorbell (D671). And it is the EDGE, not
|
|
9281
|
+
* the level: a contact found already open at runner restart does not
|
|
9282
|
+
* record.
|
|
9281
9283
|
*/
|
|
9282
9284
|
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
9283
9285
|
});
|
|
@@ -10529,7 +10531,7 @@ function findTimezone(id) {
|
|
|
10529
10531
|
* - **VALUE** — at which level, for which scope, until when. That stays ONE
|
|
10530
10532
|
* thing: the logging settings document on the `system` cap. Two authorities
|
|
10531
10533
|
* over the values is the exact defect
|
|
10532
|
-
* `docs/design/plans/2026-08-26-
|
|
10534
|
+
* `docs/design/plans/2026-08-26-per-component-logging.md` was written to
|
|
10533
10535
|
* remove; re-introducing it from the cure side would be grotesque.
|
|
10534
10536
|
*
|
|
10535
10537
|
* Nothing in this file reads a clock, an env var or a store. The registry is
|
|
@@ -12346,7 +12348,7 @@ var BrokerStatusEnum = _enum([
|
|
|
12346
12348
|
"unreachable",
|
|
12347
12349
|
"error"
|
|
12348
12350
|
]);
|
|
12349
|
-
var BrokerInfoSchema
|
|
12351
|
+
var BrokerInfoSchema = object({
|
|
12350
12352
|
/** Stable broker id. Persisted; survives addon restarts. */
|
|
12351
12353
|
id: string(),
|
|
12352
12354
|
/** Addon id of the provider that OWNS this broker.
|
|
@@ -12479,7 +12481,7 @@ var GetStateInputSchema = object({
|
|
|
12479
12481
|
* HA: entity_id (returns the cached entity state). */
|
|
12480
12482
|
key: string()
|
|
12481
12483
|
});
|
|
12482
|
-
method(ListInputSchema, array(BrokerInfoSchema
|
|
12484
|
+
method(ListInputSchema, array(BrokerInfoSchema)), method(GetInputSchema, BrokerInfoSchema.nullable()), method(_void(), array(BrokerProviderInfoSchema), { auth: "admin" }), method(AddInputSchema, AddResultSchema, {
|
|
12483
12485
|
kind: "mutation",
|
|
12484
12486
|
auth: "admin"
|
|
12485
12487
|
}), method(RemoveInputSchema, _void(), {
|
|
@@ -14190,7 +14192,7 @@ method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
|
14190
14192
|
*
|
|
14191
14193
|
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
14192
14194
|
* was wrong — corrected 2026-08-26 after the hop map
|
|
14193
|
-
* (`docs/design/2026-08-26-
|
|
14195
|
+
* (`docs/design/2026-08-26-topic-hop-map.md`) traced the path.
|
|
14194
14196
|
* There is **no Zod parse at all** between the door and the engine: the
|
|
14195
14197
|
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
14196
14198
|
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
@@ -16393,7 +16395,7 @@ method(object({
|
|
|
16393
16395
|
* per-device window, `KeyFrameCaptureLog`, `bumpCropMetric`. Every one of them
|
|
16394
16396
|
* ends in a log line, and a log line is the thing the operator asked to stop
|
|
16395
16397
|
* needing: *"possiamo armare questi errori intanto? Così al prossimo giro
|
|
16396
|
-
* ricontrolliamo tutti questi punti"
|
|
16398
|
+
* 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
|
|
16397
16399
|
* hand-correlating timestamps, which is how a 22% thumbnail gap and a 3-hour
|
|
16398
16400
|
* media blackout were both diagnosed. The counters stay; this is where they can
|
|
16399
16401
|
* be READ.
|
|
@@ -17788,7 +17790,7 @@ var BrokerStatusSchema$1 = _enum([
|
|
|
17788
17790
|
"unreachable",
|
|
17789
17791
|
"tls-error"
|
|
17790
17792
|
]);
|
|
17791
|
-
var BrokerInfoSchema = object({
|
|
17793
|
+
var BrokerInfoSchema$1 = object({
|
|
17792
17794
|
id: string(),
|
|
17793
17795
|
name: string(),
|
|
17794
17796
|
url: string(),
|
|
@@ -17851,7 +17853,7 @@ var StatusSchema = object({
|
|
|
17851
17853
|
brokerCount: number(),
|
|
17852
17854
|
embeddedRunning: boolean()
|
|
17853
17855
|
});
|
|
17854
|
-
method(_void(), array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema, { auth: "admin" }), method(AddBrokerInputSchema, AddBrokerResultSchema, {
|
|
17856
|
+
method(_void(), array(BrokerInfoSchema$1)), method(IdInputSchema, BrokerConnectionDetailsSchema, { auth: "admin" }), method(AddBrokerInputSchema, AddBrokerResultSchema, {
|
|
17855
17857
|
kind: "mutation",
|
|
17856
17858
|
auth: "admin"
|
|
17857
17859
|
}), method(IdInputSchema, _void(), {
|
|
@@ -20065,78 +20067,16 @@ var NcRuleInputSchema = object({
|
|
|
20065
20067
|
*/
|
|
20066
20068
|
confirm: NcConfirmSchema.optional(),
|
|
20067
20069
|
/**
|
|
20068
|
-
*
|
|
20069
|
-
*
|
|
20070
|
-
*
|
|
20071
|
-
*
|
|
20072
|
-
*
|
|
20073
|
-
*
|
|
20074
|
-
*
|
|
20075
|
-
*
|
|
20076
|
-
*
|
|
20077
|
-
* Only two honest answers exist, and this flag picks between them. It has
|
|
20078
|
-
* effect ONLY on a rule that declares a recognition scope
|
|
20079
|
-
* ({@link NcConditions.identities} or {@link NcConditions.plates}) — on any
|
|
20080
|
-
* other rule there is nothing to wait for and the flag is inert.
|
|
20081
|
-
*
|
|
20082
|
-
* | value | what happens |
|
|
20083
|
-
* | --- | --- |
|
|
20084
|
-
* | `true` | the rule stops firing on the object event and fires at TRACK CLOSE instead, once, with the name — later, and complete |
|
|
20085
|
-
* | 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) |
|
|
20086
|
-
*
|
|
20087
|
-
* `.optional()` and deliberately NOT `.default()`: a Zod default does not run
|
|
20088
|
-
* on the addon cap path, and absent has to keep meaning exactly what every
|
|
20089
|
-
* rule authored before this field meant.
|
|
20090
|
-
*
|
|
20091
|
-
* The cost of `true` is stated here because the editor states it too: a rule
|
|
20092
|
-
* that waits also inherits track-close SEMANTICS — its `zones` condition
|
|
20093
|
-
* tests every zone the track visited and a `crossing` condition can no longer
|
|
20094
|
-
* be satisfied, because a closed track carries no crossing.
|
|
20070
|
+
* IMMEDIATE GROUPED (D692): the first matching subject opens a window of this many
|
|
20071
|
+
* seconds; the rule sends ONE message when the window closes — early, once every
|
|
20072
|
+
* subject in it is final, never before {@link NC_GROUPING_MIN_SEC} — naming everybody
|
|
20073
|
+
* the rule matched, with one mosaic tile per subject.
|
|
20074
|
+
* Absent = plain immediate (one message per track, at the first match).
|
|
20075
|
+
* Only an `immediate` DETECTION rule may carry it (`ruleGroupingApplies`, enforced on
|
|
20076
|
+
* save by the hub's grouping guard). `.optional()`, never `.default()`: the addon cap
|
|
20077
|
+
* path does not run Zod defaults.
|
|
20095
20078
|
*/
|
|
20096
|
-
|
|
20097
|
-
/**
|
|
20098
|
-
* GROUP a burst of subjects into ONE notification that grows.
|
|
20099
|
-
*
|
|
20100
|
-
* Seconds of quiet after the last matching subject before the burst is
|
|
20101
|
-
* considered over. While it is open, the first subject enqueues immediately —
|
|
20102
|
-
* **exactly as today, with no added latency** — and every real growth (a new
|
|
20103
|
-
* subject, or a name confirmed on one already in it) REPLACES that
|
|
20104
|
-
* notification with an updated one naming everybody. The push carries the
|
|
20105
|
-
* group's own coalescing tag, so the phone replaces rather than stacks.
|
|
20106
|
-
*
|
|
20107
|
-
* `0` / absent = off, and off is today's behaviour byte for byte.
|
|
20108
|
-
*
|
|
20109
|
-
* ### Why an idle cutoff and not a window
|
|
20110
|
-
*
|
|
20111
|
-
* The measured seven-person arrival on device 590 spans 110 s with every
|
|
20112
|
-
* internal gap under 30 s. A 12 s fixed window cuts it into three groups; an
|
|
20113
|
-
* idle cutoff holds it as one and ends it when the arrival actually ends.
|
|
20114
|
-
* 30 s is a widely shipped value for the same decision.
|
|
20115
|
-
*
|
|
20116
|
-
* ### What it replaces
|
|
20117
|
-
*
|
|
20118
|
-
* The blind cooldown, which collapses a burst by DISCARDING it. Measured on
|
|
20119
|
-
* device 615 / *Persona su Uscio* over six days: 116 qualifying tracks → 74
|
|
20120
|
-
* notifications, **44 (37.9%) suppressed outright**, 23 of them overlapping a
|
|
20121
|
-
* track that did fire and 7 carrying a confirmed identity nobody heard about.
|
|
20122
|
-
* A group collapses the same volume by MERGING, so the cooldown becomes a
|
|
20123
|
-
* budget over GROUPS — which is what it always meant — and a growth is never
|
|
20124
|
-
* throttled by the window its own first member spent.
|
|
20125
|
-
*
|
|
20126
|
-
* ### Interaction with {@link waitForEnhancement}
|
|
20127
|
-
*
|
|
20128
|
-
* They compose, and the order matters. `waitForEnhancement` defers the rule to
|
|
20129
|
-
* TRACK CLOSE, so with both set the group is opened by the first member to
|
|
20130
|
-
* CLOSE — already carrying its name — and grows as later members close. That
|
|
20131
|
-
* is later, and complete. With grouping alone the group opens on the first
|
|
20132
|
-
* object event and picks up names as they are confirmed, through the growth
|
|
20133
|
-
* path. Neither combination fires twice for one subject.
|
|
20134
|
-
*
|
|
20135
|
-
* `.optional()` and deliberately NOT `.default()`: a Zod default does not run
|
|
20136
|
-
* on the addon cap path, so absent must keep meaning what it meant before this
|
|
20137
|
-
* field existed.
|
|
20138
|
-
*/
|
|
20139
|
-
groupIdleSec: number().int().min(0).max(600).optional()
|
|
20079
|
+
groupingSec: number().int().min(5).max(60).optional()
|
|
20140
20080
|
});
|
|
20141
20081
|
/**
|
|
20142
20082
|
* Partial patch for `updateRule` — any subset of the input fields, plus the
|
|
@@ -20184,9 +20124,10 @@ var NcRuleClearableKeySchema = _enum([
|
|
|
20184
20124
|
"targetUsers",
|
|
20185
20125
|
"snoozeOptions",
|
|
20186
20126
|
"snoozeAllowGlobal",
|
|
20187
|
-
"waitForEnhancement",
|
|
20188
20127
|
"actions",
|
|
20189
20128
|
"confirm",
|
|
20129
|
+
"groupingSec",
|
|
20130
|
+
"waitForEnhancement",
|
|
20190
20131
|
"groupIdleSec"
|
|
20191
20132
|
]);
|
|
20192
20133
|
var NcRuleUpdateInputSchema = object({
|
|
@@ -20208,9 +20149,25 @@ var NcRuleSchema = NcRuleInputSchema.extend({
|
|
|
20208
20149
|
*/
|
|
20209
20150
|
disabledTargetIds: array(string()).default([])
|
|
20210
20151
|
});
|
|
20152
|
+
/**
|
|
20153
|
+
* The state-summary SECTIONS (D647 / D698): the D637 kind groups that report a
|
|
20154
|
+
* still-true state. `backups-exports` and `alarm` are not sections — a completed
|
|
20155
|
+
* job is not an open state, and the alarm stays instant.
|
|
20156
|
+
*/
|
|
20157
|
+
var NcStateSummarySectionIdSchema = _enum([
|
|
20158
|
+
"device-state",
|
|
20159
|
+
"streams",
|
|
20160
|
+
"battery",
|
|
20161
|
+
"consumables",
|
|
20162
|
+
"tanks",
|
|
20163
|
+
"detection-blind",
|
|
20164
|
+
"nodes",
|
|
20165
|
+
"addons",
|
|
20166
|
+
"updates"
|
|
20167
|
+
]);
|
|
20211
20168
|
/** One section of a previewed state summary. `unavailable` = its state could not be read. */
|
|
20212
20169
|
var NcStateSummaryPreviewSectionSchema = object({
|
|
20213
|
-
id:
|
|
20170
|
+
id: NcStateSummarySectionIdSchema,
|
|
20214
20171
|
status: _enum(["read", "unavailable"]),
|
|
20215
20172
|
items: number().int().nonnegative(),
|
|
20216
20173
|
reason: string().optional()
|
|
@@ -20220,7 +20177,7 @@ var NcStateSummaryPreviewSectionSchema = object({
|
|
|
20220
20177
|
* a `rule` split (no `section`), one section's on a `section` split.
|
|
20221
20178
|
*/
|
|
20222
20179
|
var NcStateSummaryPreviewRowSchema = object({
|
|
20223
|
-
section:
|
|
20180
|
+
section: NcStateSummarySectionIdSchema.optional(),
|
|
20224
20181
|
/** The section's name on a per-section row; every reported section's, joined, on a combined one. */
|
|
20225
20182
|
title: string(),
|
|
20226
20183
|
text: string(),
|
|
@@ -22119,14 +22076,14 @@ var TrackSchema = object({
|
|
|
22119
22076
|
* `derive-returned-null tile=standin`,
|
|
22120
22077
|
* `native-tile tile=native no-key-frame-at-close`, …) written at close and
|
|
22121
22078
|
* CLEARED by the late-keyFrame upgrade when a native tile lands after all.
|
|
22122
|
-
* The operator-facing answer to "perché manca l'immagine?" on a track whose
|
|
22079
|
+
* The operator-facing answer to "perché manca l'immagine?" [why is the image missing?] on a track whose
|
|
22123
22080
|
* tile is a face/plate stand-in, a raster crop, or an icon.
|
|
22124
22081
|
*
|
|
22125
22082
|
* **`no-key-frame-at-close` (D400).** The line used to be written ONLY when
|
|
22126
22083
|
* the TILE ranked below native, so a track whose thumbnail landed natively
|
|
22127
22084
|
* while its key frame missed carried no reason at all — three of the four
|
|
22128
22085
|
* `MISSING_KEYFRAME` tracks in the 2026-09-07 operator audit were exactly
|
|
22129
|
-
* that shape, and their "niente ultimo" had no cause anywhere on the row.
|
|
22086
|
+
* that shape, and their "niente ultimo" [no last frame] had no cause anywhere on the row.
|
|
22130
22087
|
* The key frame is the head of a cascade (`keyFrame ⇒ keyFrameSmall ⇒ the
|
|
22131
22088
|
* lastFrame copy source`), so its absence is now on this line whatever the
|
|
22132
22089
|
* tile ended up being.
|
|
@@ -22213,7 +22170,7 @@ var MotionEventSchema = object({
|
|
|
22213
22170
|
/**
|
|
22214
22171
|
* Ms offsets from `timestamp` (the episode's own first rising edge, so the
|
|
22215
22172
|
* first entry is always `0`) of every genuine off→on transition the
|
|
22216
|
-
* episode saw — "ogni evento on si deve salvare" (D475). NOT one entry per
|
|
22173
|
+
* episode saw — "ogni evento on si deve salvare" [every ON event must be saved] (D475). NOT one entry per
|
|
22217
22174
|
* push: a firmware source that keepalives at ~1 Hz for the whole burst
|
|
22218
22175
|
* (Reolink, Hikvision) produces exactly one edge; a source that reports an
|
|
22219
22176
|
* explicit `false` mid-episode and then resumes before the quiet window
|
|
@@ -22737,6 +22694,7 @@ var KeyEventSchema = object({
|
|
|
22737
22694
|
bestEventId: string(),
|
|
22738
22695
|
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
22739
22696
|
windowMs: number().optional(),
|
|
22697
|
+
audioLabels: array(TrackAudioLabelSchema).readonly().optional(),
|
|
22740
22698
|
...TrackFlagFields,
|
|
22741
22699
|
...TrackRetrainFields
|
|
22742
22700
|
});
|
|
@@ -27670,7 +27628,7 @@ var ClipPlaybackSchema = object({
|
|
|
27670
27628
|
* **One authorised yes is one wake.** `next-natural` — take the clip the next
|
|
27671
27629
|
* time the camera is awake for its own reasons — is deliberately not a member:
|
|
27672
27630
|
* it was proposed, it is free on the battery, and the operator declined it on
|
|
27673
|
-
* 2026-09-20 (*"Quando un export viene richiesto si sveglia la camera."
|
|
27631
|
+
* 2026-09-20 (*"Quando un export viene richiesto si sveglia la camera."* [When an export is requested the camera wakes up],
|
|
27674
27632
|
* D558 "Considered and not taken").
|
|
27675
27633
|
*/
|
|
27676
27634
|
var ClipWakeSchema = _enum(["authorised"]);
|
|
@@ -28066,7 +28024,7 @@ var videoclipsCapability = {
|
|
|
28066
28024
|
* **It is a SECTION of the Recording tab, at the end of it — not a tab of
|
|
28067
28025
|
* its own.** It shipped as a `clips` top-tab and the operator rejected the
|
|
28068
28026
|
* placement: *"utilizzerei la stessa tab recordings, lì abbiamo già tutto il
|
|
28069
|
-
* necessario, una nuova sezione alla fine per le clips"
|
|
28027
|
+
* 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
|
|
28070
28028
|
* already holds the recorder's panel, the schedule bands and the unified
|
|
28071
28029
|
* retention policy; footage the camera itself holds is the same question,
|
|
28072
28030
|
* asked of a different store. `order: 100` puts it after all of them with
|
|
@@ -28127,7 +28085,7 @@ var videoclipsCapability = {
|
|
|
28127
28085
|
* It replaced `sources?: string[]`, a VIEW filter over source ids that
|
|
28128
28086
|
* assumed the answer was a fan-out over everything a camera has. The
|
|
28129
28087
|
* operator settled otherwise on 2026-09-20 — *"l'utilizzatore è uno
|
|
28130
|
-
* solo"* — so the list is asked of one provider at a time and there is
|
|
28088
|
+
* solo"* [there is only one user] — so the list is asked of one provider at a time and there is
|
|
28131
28089
|
* nothing to filter out of it.
|
|
28132
28090
|
*/
|
|
28133
28091
|
provider: string().min(1)
|
|
@@ -36474,7 +36432,7 @@ var ReadGopBytesResultSchema = object({
|
|
|
36474
36432
|
/**
|
|
36475
36433
|
* A time WINDOW of one finalized segment, cut by byte range — the multi-GOP
|
|
36476
36434
|
* twin of {@link ReadGopBytesResultSchema}'s single instant. Built for the
|
|
36477
|
-
* replay clip's `recording` source (`docs/design/plans/2026-08-26-replay-
|
|
36435
|
+
* replay clip's `recording` source (`docs/design/plans/2026-08-26-clip-replay-on-pipeline.md`):
|
|
36478
36436
|
* a replay needs several seconds of native pixels, not one frame.
|
|
36479
36437
|
*
|
|
36480
36438
|
* `ok.data` is standalone-demuxable, same as a GOP read. `ok.reachesRequestedEnd`
|
|
@@ -40216,6 +40174,7 @@ var zoneRulesCapability = {
|
|
|
40216
40174
|
*/
|
|
40217
40175
|
durability: "restored"
|
|
40218
40176
|
};
|
|
40177
|
+
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
40219
40178
|
/**
|
|
40220
40179
|
* Accessory device helpers — shared across drivers.
|
|
40221
40180
|
*
|
|
@@ -50535,6 +50494,11 @@ Object.freeze({
|
|
|
50535
50494
|
}
|
|
50536
50495
|
});
|
|
50537
50496
|
Object.freeze({
|
|
50497
|
+
"accessories.getStatus": [{
|
|
50498
|
+
name: "deviceId",
|
|
50499
|
+
form: "single",
|
|
50500
|
+
optional: false
|
|
50501
|
+
}],
|
|
50538
50502
|
"accessories.setChildHidden": [{
|
|
50539
50503
|
name: "childDeviceId",
|
|
50540
50504
|
form: "single",
|
|
@@ -50554,6 +50518,11 @@ Object.freeze({
|
|
|
50554
50518
|
form: "single",
|
|
50555
50519
|
optional: false
|
|
50556
50520
|
}],
|
|
50521
|
+
"airQualitySensor.getStatus": [{
|
|
50522
|
+
name: "deviceId",
|
|
50523
|
+
form: "single",
|
|
50524
|
+
optional: false
|
|
50525
|
+
}],
|
|
50557
50526
|
"alarmPanel.arm": [{
|
|
50558
50527
|
name: "deviceId",
|
|
50559
50528
|
form: "single",
|
|
@@ -50564,11 +50533,36 @@ Object.freeze({
|
|
|
50564
50533
|
form: "single",
|
|
50565
50534
|
optional: false
|
|
50566
50535
|
}],
|
|
50536
|
+
"alarmPanel.getStatus": [{
|
|
50537
|
+
name: "deviceId",
|
|
50538
|
+
form: "single",
|
|
50539
|
+
optional: false
|
|
50540
|
+
}],
|
|
50567
50541
|
"alarmPanel.trigger": [{
|
|
50568
50542
|
name: "deviceId",
|
|
50569
50543
|
form: "single",
|
|
50570
50544
|
optional: false
|
|
50571
50545
|
}],
|
|
50546
|
+
"ambientLightSensor.getStatus": [{
|
|
50547
|
+
name: "deviceId",
|
|
50548
|
+
form: "single",
|
|
50549
|
+
optional: false
|
|
50550
|
+
}],
|
|
50551
|
+
"audioAnalysis.applyDeviceSettingsPatch": [{
|
|
50552
|
+
name: "deviceId",
|
|
50553
|
+
form: "single",
|
|
50554
|
+
optional: false
|
|
50555
|
+
}],
|
|
50556
|
+
"audioAnalysis.getDeviceLiveContribution": [{
|
|
50557
|
+
name: "deviceId",
|
|
50558
|
+
form: "single",
|
|
50559
|
+
optional: false
|
|
50560
|
+
}],
|
|
50561
|
+
"audioAnalysis.getDeviceSettingsContribution": [{
|
|
50562
|
+
name: "deviceId",
|
|
50563
|
+
form: "single",
|
|
50564
|
+
optional: false
|
|
50565
|
+
}],
|
|
50572
50566
|
"audioAnalysis.resolveDeviceSettings": [{
|
|
50573
50567
|
name: "deviceId",
|
|
50574
50568
|
form: "single",
|
|
@@ -50609,16 +50603,36 @@ Object.freeze({
|
|
|
50609
50603
|
form: "single",
|
|
50610
50604
|
optional: false
|
|
50611
50605
|
}],
|
|
50606
|
+
"automationControl.getStatus": [{
|
|
50607
|
+
name: "deviceId",
|
|
50608
|
+
form: "single",
|
|
50609
|
+
optional: false
|
|
50610
|
+
}],
|
|
50612
50611
|
"automationControl.trigger": [{
|
|
50613
50612
|
name: "deviceId",
|
|
50614
50613
|
form: "single",
|
|
50615
50614
|
optional: false
|
|
50616
50615
|
}],
|
|
50616
|
+
"battery.getStatus": [{
|
|
50617
|
+
name: "deviceId",
|
|
50618
|
+
form: "single",
|
|
50619
|
+
optional: false
|
|
50620
|
+
}],
|
|
50617
50621
|
"battery.wakeForStream": [{
|
|
50618
50622
|
name: "deviceId",
|
|
50619
50623
|
form: "single",
|
|
50620
50624
|
optional: false
|
|
50621
50625
|
}],
|
|
50626
|
+
"binary.getStatus": [{
|
|
50627
|
+
name: "deviceId",
|
|
50628
|
+
form: "single",
|
|
50629
|
+
optional: false
|
|
50630
|
+
}],
|
|
50631
|
+
"brightness.getStatus": [{
|
|
50632
|
+
name: "deviceId",
|
|
50633
|
+
form: "single",
|
|
50634
|
+
optional: false
|
|
50635
|
+
}],
|
|
50622
50636
|
"brightness.setBrightness": [{
|
|
50623
50637
|
name: "deviceId",
|
|
50624
50638
|
form: "single",
|
|
@@ -50634,6 +50648,26 @@ Object.freeze({
|
|
|
50634
50648
|
form: "single",
|
|
50635
50649
|
optional: false
|
|
50636
50650
|
}],
|
|
50651
|
+
"cameraCredentials.getStatus": [{
|
|
50652
|
+
name: "deviceId",
|
|
50653
|
+
form: "single",
|
|
50654
|
+
optional: false
|
|
50655
|
+
}],
|
|
50656
|
+
"cameraGridLayout.applyDeviceSettingsPatch": [{
|
|
50657
|
+
name: "deviceId",
|
|
50658
|
+
form: "single",
|
|
50659
|
+
optional: false
|
|
50660
|
+
}],
|
|
50661
|
+
"cameraGridLayout.getDeviceLiveContribution": [{
|
|
50662
|
+
name: "deviceId",
|
|
50663
|
+
form: "single",
|
|
50664
|
+
optional: false
|
|
50665
|
+
}],
|
|
50666
|
+
"cameraGridLayout.getDeviceSettingsContribution": [{
|
|
50667
|
+
name: "deviceId",
|
|
50668
|
+
form: "single",
|
|
50669
|
+
optional: false
|
|
50670
|
+
}],
|
|
50637
50671
|
"cameraGridLayout.getLayout": [{
|
|
50638
50672
|
name: "deviceId",
|
|
50639
50673
|
form: "single",
|
|
@@ -50649,6 +50683,21 @@ Object.freeze({
|
|
|
50649
50683
|
form: "single",
|
|
50650
50684
|
optional: false
|
|
50651
50685
|
}],
|
|
50686
|
+
"cameraPipelineConfig.applyDeviceSettingsPatch": [{
|
|
50687
|
+
name: "deviceId",
|
|
50688
|
+
form: "single",
|
|
50689
|
+
optional: false
|
|
50690
|
+
}],
|
|
50691
|
+
"cameraPipelineConfig.getDeviceLiveContribution": [{
|
|
50692
|
+
name: "deviceId",
|
|
50693
|
+
form: "single",
|
|
50694
|
+
optional: false
|
|
50695
|
+
}],
|
|
50696
|
+
"cameraPipelineConfig.getDeviceSettingsContribution": [{
|
|
50697
|
+
name: "deviceId",
|
|
50698
|
+
form: "single",
|
|
50699
|
+
optional: false
|
|
50700
|
+
}],
|
|
50652
50701
|
"cameraStreams.getBrokerStreams": [{
|
|
50653
50702
|
name: "deviceId",
|
|
50654
50703
|
form: "single",
|
|
@@ -50674,6 +50723,16 @@ Object.freeze({
|
|
|
50674
50723
|
form: "single",
|
|
50675
50724
|
optional: false
|
|
50676
50725
|
}],
|
|
50726
|
+
"carbonMonoxide.getStatus": [{
|
|
50727
|
+
name: "deviceId",
|
|
50728
|
+
form: "single",
|
|
50729
|
+
optional: false
|
|
50730
|
+
}],
|
|
50731
|
+
"climateControl.getStatus": [{
|
|
50732
|
+
name: "deviceId",
|
|
50733
|
+
form: "single",
|
|
50734
|
+
optional: false
|
|
50735
|
+
}],
|
|
50677
50736
|
"climateControl.setFanMode": [{
|
|
50678
50737
|
name: "deviceId",
|
|
50679
50738
|
form: "single",
|
|
@@ -50714,16 +50773,41 @@ Object.freeze({
|
|
|
50714
50773
|
form: "single",
|
|
50715
50774
|
optional: false
|
|
50716
50775
|
}],
|
|
50776
|
+
"color.getStatus": [{
|
|
50777
|
+
name: "deviceId",
|
|
50778
|
+
form: "single",
|
|
50779
|
+
optional: false
|
|
50780
|
+
}],
|
|
50717
50781
|
"color.setColor": [{
|
|
50718
50782
|
name: "deviceId",
|
|
50719
50783
|
form: "single",
|
|
50720
50784
|
optional: false
|
|
50721
50785
|
}],
|
|
50786
|
+
"connectivity.getStatus": [{
|
|
50787
|
+
name: "deviceId",
|
|
50788
|
+
form: "single",
|
|
50789
|
+
optional: false
|
|
50790
|
+
}],
|
|
50791
|
+
"consumables.getStatus": [{
|
|
50792
|
+
name: "deviceId",
|
|
50793
|
+
form: "single",
|
|
50794
|
+
optional: false
|
|
50795
|
+
}],
|
|
50722
50796
|
"consumables.reset": [{
|
|
50723
50797
|
name: "deviceId",
|
|
50724
50798
|
form: "single",
|
|
50725
50799
|
optional: false
|
|
50726
50800
|
}],
|
|
50801
|
+
"contact.getStatus": [{
|
|
50802
|
+
name: "deviceId",
|
|
50803
|
+
form: "single",
|
|
50804
|
+
optional: false
|
|
50805
|
+
}],
|
|
50806
|
+
"control.getStatus": [{
|
|
50807
|
+
name: "deviceId",
|
|
50808
|
+
form: "single",
|
|
50809
|
+
optional: false
|
|
50810
|
+
}],
|
|
50727
50811
|
"control.setValue": [{
|
|
50728
50812
|
name: "deviceId",
|
|
50729
50813
|
form: "single",
|
|
@@ -50734,6 +50818,11 @@ Object.freeze({
|
|
|
50734
50818
|
form: "single",
|
|
50735
50819
|
optional: false
|
|
50736
50820
|
}],
|
|
50821
|
+
"cover.getStatus": [{
|
|
50822
|
+
name: "deviceId",
|
|
50823
|
+
form: "single",
|
|
50824
|
+
optional: false
|
|
50825
|
+
}],
|
|
50737
50826
|
"cover.open": [{
|
|
50738
50827
|
name: "deviceId",
|
|
50739
50828
|
form: "single",
|
|
@@ -50759,6 +50848,11 @@ Object.freeze({
|
|
|
50759
50848
|
form: "single",
|
|
50760
50849
|
optional: false
|
|
50761
50850
|
}],
|
|
50851
|
+
"dayNight.getStatus": [{
|
|
50852
|
+
name: "deviceId",
|
|
50853
|
+
form: "single",
|
|
50854
|
+
optional: false
|
|
50855
|
+
}],
|
|
50762
50856
|
"dayNight.setSettings": [{
|
|
50763
50857
|
name: "deviceId",
|
|
50764
50858
|
form: "single",
|
|
@@ -50769,11 +50863,31 @@ Object.freeze({
|
|
|
50769
50863
|
form: "single",
|
|
50770
50864
|
optional: true
|
|
50771
50865
|
}],
|
|
50866
|
+
"detectionPipeline.applyDeviceSettingsPatch": [{
|
|
50867
|
+
name: "deviceId",
|
|
50868
|
+
form: "single",
|
|
50869
|
+
optional: false
|
|
50870
|
+
}],
|
|
50871
|
+
"detectionPipeline.getDeviceLiveContribution": [{
|
|
50872
|
+
name: "deviceId",
|
|
50873
|
+
form: "single",
|
|
50874
|
+
optional: false
|
|
50875
|
+
}],
|
|
50876
|
+
"detectionPipeline.getDeviceSettingsContribution": [{
|
|
50877
|
+
name: "deviceId",
|
|
50878
|
+
form: "single",
|
|
50879
|
+
optional: false
|
|
50880
|
+
}],
|
|
50772
50881
|
"deviceAdminLink.getAdminLink": [{
|
|
50773
50882
|
name: "deviceId",
|
|
50774
50883
|
form: "single",
|
|
50775
50884
|
optional: false
|
|
50776
50885
|
}],
|
|
50886
|
+
"deviceAdoption.getStatus": [{
|
|
50887
|
+
name: "deviceId",
|
|
50888
|
+
form: "single",
|
|
50889
|
+
optional: false
|
|
50890
|
+
}],
|
|
50777
50891
|
"deviceAdoption.release": [{
|
|
50778
50892
|
name: "camDeviceId",
|
|
50779
50893
|
form: "single",
|
|
@@ -50789,6 +50903,11 @@ Object.freeze({
|
|
|
50789
50903
|
form: "single",
|
|
50790
50904
|
optional: false
|
|
50791
50905
|
}],
|
|
50906
|
+
"deviceDiscovery.getStatus": [{
|
|
50907
|
+
name: "deviceId",
|
|
50908
|
+
form: "single",
|
|
50909
|
+
optional: false
|
|
50910
|
+
}],
|
|
50792
50911
|
"deviceDiscovery.listDiscovered": [{
|
|
50793
50912
|
name: "deviceId",
|
|
50794
50913
|
form: "single",
|
|
@@ -50808,6 +50927,21 @@ Object.freeze({
|
|
|
50808
50927
|
form: "single",
|
|
50809
50928
|
optional: false
|
|
50810
50929
|
}],
|
|
50930
|
+
"deviceExport.applyDeviceSettingsPatch": [{
|
|
50931
|
+
name: "deviceId",
|
|
50932
|
+
form: "single",
|
|
50933
|
+
optional: false
|
|
50934
|
+
}],
|
|
50935
|
+
"deviceExport.getDeviceLiveContribution": [{
|
|
50936
|
+
name: "deviceId",
|
|
50937
|
+
form: "single",
|
|
50938
|
+
optional: false
|
|
50939
|
+
}],
|
|
50940
|
+
"deviceExport.getDeviceSettingsContribution": [{
|
|
50941
|
+
name: "deviceId",
|
|
50942
|
+
form: "single",
|
|
50943
|
+
optional: false
|
|
50944
|
+
}],
|
|
50811
50945
|
"deviceExtension.listCandidates": [{
|
|
50812
50946
|
name: "deviceId",
|
|
50813
50947
|
form: "single",
|
|
@@ -51156,6 +51290,26 @@ Object.freeze({
|
|
|
51156
51290
|
form: "single",
|
|
51157
51291
|
optional: false
|
|
51158
51292
|
}],
|
|
51293
|
+
"deviceStatus.getStatus": [{
|
|
51294
|
+
name: "deviceId",
|
|
51295
|
+
form: "single",
|
|
51296
|
+
optional: false
|
|
51297
|
+
}],
|
|
51298
|
+
"doorbell.getStatus": [{
|
|
51299
|
+
name: "deviceId",
|
|
51300
|
+
form: "single",
|
|
51301
|
+
optional: false
|
|
51302
|
+
}],
|
|
51303
|
+
"enumSensor.getStatus": [{
|
|
51304
|
+
name: "deviceId",
|
|
51305
|
+
form: "single",
|
|
51306
|
+
optional: false
|
|
51307
|
+
}],
|
|
51308
|
+
"eventEmitter.getStatus": [{
|
|
51309
|
+
name: "deviceId",
|
|
51310
|
+
form: "single",
|
|
51311
|
+
optional: false
|
|
51312
|
+
}],
|
|
51159
51313
|
"faceGallery.getFaceByTrack": [{
|
|
51160
51314
|
name: "deviceId",
|
|
51161
51315
|
form: "single",
|
|
@@ -51170,6 +51324,11 @@ Object.freeze({
|
|
|
51170
51324
|
form: "array",
|
|
51171
51325
|
optional: true
|
|
51172
51326
|
}],
|
|
51327
|
+
"fanControl.getStatus": [{
|
|
51328
|
+
name: "deviceId",
|
|
51329
|
+
form: "single",
|
|
51330
|
+
optional: false
|
|
51331
|
+
}],
|
|
51173
51332
|
"fanControl.setDirection": [{
|
|
51174
51333
|
name: "deviceId",
|
|
51175
51334
|
form: "single",
|
|
@@ -51190,6 +51349,26 @@ Object.freeze({
|
|
|
51190
51349
|
form: "single",
|
|
51191
51350
|
optional: false
|
|
51192
51351
|
}],
|
|
51352
|
+
"featureProbe.getStatus": [{
|
|
51353
|
+
name: "deviceId",
|
|
51354
|
+
form: "single",
|
|
51355
|
+
optional: false
|
|
51356
|
+
}],
|
|
51357
|
+
"flood.getStatus": [{
|
|
51358
|
+
name: "deviceId",
|
|
51359
|
+
form: "single",
|
|
51360
|
+
optional: false
|
|
51361
|
+
}],
|
|
51362
|
+
"gas.getStatus": [{
|
|
51363
|
+
name: "deviceId",
|
|
51364
|
+
form: "single",
|
|
51365
|
+
optional: false
|
|
51366
|
+
}],
|
|
51367
|
+
"humidifier.getStatus": [{
|
|
51368
|
+
name: "deviceId",
|
|
51369
|
+
form: "single",
|
|
51370
|
+
optional: false
|
|
51371
|
+
}],
|
|
51193
51372
|
"humidifier.setMode": [{
|
|
51194
51373
|
name: "deviceId",
|
|
51195
51374
|
form: "single",
|
|
@@ -51205,11 +51384,26 @@ Object.freeze({
|
|
|
51205
51384
|
form: "single",
|
|
51206
51385
|
optional: false
|
|
51207
51386
|
}],
|
|
51387
|
+
"humiditySensor.getStatus": [{
|
|
51388
|
+
name: "deviceId",
|
|
51389
|
+
form: "single",
|
|
51390
|
+
optional: false
|
|
51391
|
+
}],
|
|
51392
|
+
"image.getStatus": [{
|
|
51393
|
+
name: "deviceId",
|
|
51394
|
+
form: "single",
|
|
51395
|
+
optional: false
|
|
51396
|
+
}],
|
|
51208
51397
|
"imageSettings.getOptions": [{
|
|
51209
51398
|
name: "deviceId",
|
|
51210
51399
|
form: "single",
|
|
51211
51400
|
optional: false
|
|
51212
51401
|
}],
|
|
51402
|
+
"imageSettings.getStatus": [{
|
|
51403
|
+
name: "deviceId",
|
|
51404
|
+
form: "single",
|
|
51405
|
+
optional: false
|
|
51406
|
+
}],
|
|
51213
51407
|
"imageSettings.setSettings": [{
|
|
51214
51408
|
name: "deviceId",
|
|
51215
51409
|
form: "single",
|
|
@@ -51220,6 +51414,11 @@ Object.freeze({
|
|
|
51220
51414
|
form: "single",
|
|
51221
51415
|
optional: false
|
|
51222
51416
|
}],
|
|
51417
|
+
"intercom.getStatus": [{
|
|
51418
|
+
name: "deviceId",
|
|
51419
|
+
form: "single",
|
|
51420
|
+
optional: false
|
|
51421
|
+
}],
|
|
51223
51422
|
"intercom.handleAnswer": [{
|
|
51224
51423
|
name: "deviceId",
|
|
51225
51424
|
form: "single",
|
|
@@ -51250,6 +51449,11 @@ Object.freeze({
|
|
|
51250
51449
|
form: "single",
|
|
51251
51450
|
optional: false
|
|
51252
51451
|
}],
|
|
51452
|
+
"lawnMowerControl.getStatus": [{
|
|
51453
|
+
name: "deviceId",
|
|
51454
|
+
form: "single",
|
|
51455
|
+
optional: false
|
|
51456
|
+
}],
|
|
51253
51457
|
"lawnMowerControl.pause": [{
|
|
51254
51458
|
name: "deviceId",
|
|
51255
51459
|
form: "single",
|
|
@@ -51260,6 +51464,11 @@ Object.freeze({
|
|
|
51260
51464
|
form: "single",
|
|
51261
51465
|
optional: false
|
|
51262
51466
|
}],
|
|
51467
|
+
"lockControl.getStatus": [{
|
|
51468
|
+
name: "deviceId",
|
|
51469
|
+
form: "single",
|
|
51470
|
+
optional: false
|
|
51471
|
+
}],
|
|
51263
51472
|
"lockControl.lock": [{
|
|
51264
51473
|
name: "deviceId",
|
|
51265
51474
|
form: "single",
|
|
@@ -51275,6 +51484,11 @@ Object.freeze({
|
|
|
51275
51484
|
form: "single",
|
|
51276
51485
|
optional: false
|
|
51277
51486
|
}],
|
|
51487
|
+
"mediaPlayer.getStatus": [{
|
|
51488
|
+
name: "deviceId",
|
|
51489
|
+
form: "single",
|
|
51490
|
+
optional: false
|
|
51491
|
+
}],
|
|
51278
51492
|
"mediaPlayer.next": [{
|
|
51279
51493
|
name: "deviceId",
|
|
51280
51494
|
form: "single",
|
|
@@ -51335,6 +51549,11 @@ Object.freeze({
|
|
|
51335
51549
|
form: "single",
|
|
51336
51550
|
optional: false
|
|
51337
51551
|
}],
|
|
51552
|
+
"motion.getStatus": [{
|
|
51553
|
+
name: "deviceId",
|
|
51554
|
+
form: "single",
|
|
51555
|
+
optional: false
|
|
51556
|
+
}],
|
|
51338
51557
|
"motion.isDetected": [{
|
|
51339
51558
|
name: "deviceId",
|
|
51340
51559
|
form: "single",
|
|
@@ -51345,11 +51564,31 @@ Object.freeze({
|
|
|
51345
51564
|
form: "single",
|
|
51346
51565
|
optional: false
|
|
51347
51566
|
}],
|
|
51567
|
+
"motionDetection.applyDeviceSettingsPatch": [{
|
|
51568
|
+
name: "deviceId",
|
|
51569
|
+
form: "single",
|
|
51570
|
+
optional: false
|
|
51571
|
+
}],
|
|
51572
|
+
"motionDetection.getDeviceLiveContribution": [{
|
|
51573
|
+
name: "deviceId",
|
|
51574
|
+
form: "single",
|
|
51575
|
+
optional: false
|
|
51576
|
+
}],
|
|
51577
|
+
"motionDetection.getDeviceSettingsContribution": [{
|
|
51578
|
+
name: "deviceId",
|
|
51579
|
+
form: "single",
|
|
51580
|
+
optional: false
|
|
51581
|
+
}],
|
|
51348
51582
|
"motionDetection.removeCamera": [{
|
|
51349
51583
|
name: "deviceId",
|
|
51350
51584
|
form: "single",
|
|
51351
51585
|
optional: false
|
|
51352
51586
|
}],
|
|
51587
|
+
"motionTrigger.getStatus": [{
|
|
51588
|
+
name: "deviceId",
|
|
51589
|
+
form: "single",
|
|
51590
|
+
optional: false
|
|
51591
|
+
}],
|
|
51353
51592
|
"motionTrigger.setMotionTrigger": [{
|
|
51354
51593
|
name: "deviceId",
|
|
51355
51594
|
form: "single",
|
|
@@ -51360,6 +51599,11 @@ Object.freeze({
|
|
|
51360
51599
|
form: "single",
|
|
51361
51600
|
optional: false
|
|
51362
51601
|
}],
|
|
51602
|
+
"motionZones.getStatus": [{
|
|
51603
|
+
name: "deviceId",
|
|
51604
|
+
form: "single",
|
|
51605
|
+
optional: false
|
|
51606
|
+
}],
|
|
51363
51607
|
"motionZones.setZone": [{
|
|
51364
51608
|
name: "deviceId",
|
|
51365
51609
|
form: "single",
|
|
@@ -51370,6 +51614,11 @@ Object.freeze({
|
|
|
51370
51614
|
form: "single",
|
|
51371
51615
|
optional: false
|
|
51372
51616
|
}],
|
|
51617
|
+
"nativeObjectDetection.getStatus": [{
|
|
51618
|
+
name: "deviceId",
|
|
51619
|
+
form: "single",
|
|
51620
|
+
optional: false
|
|
51621
|
+
}],
|
|
51373
51622
|
"nativeObjectDetection.setEnabled": [{
|
|
51374
51623
|
name: "deviceId",
|
|
51375
51624
|
form: "single",
|
|
@@ -51385,6 +51634,11 @@ Object.freeze({
|
|
|
51385
51634
|
form: "single",
|
|
51386
51635
|
optional: false
|
|
51387
51636
|
}],
|
|
51637
|
+
"navigation.getStatus": [{
|
|
51638
|
+
name: "deviceId",
|
|
51639
|
+
form: "single",
|
|
51640
|
+
optional: false
|
|
51641
|
+
}],
|
|
51388
51642
|
"navigation.goToPoint": [{
|
|
51389
51643
|
name: "deviceId",
|
|
51390
51644
|
form: "single",
|
|
@@ -51430,6 +51684,11 @@ Object.freeze({
|
|
|
51430
51684
|
form: "single",
|
|
51431
51685
|
optional: false
|
|
51432
51686
|
}],
|
|
51687
|
+
"networkLink.getStatus": [{
|
|
51688
|
+
name: "deviceId",
|
|
51689
|
+
form: "single",
|
|
51690
|
+
optional: false
|
|
51691
|
+
}],
|
|
51433
51692
|
"networkQuality.getDeviceStats": [{
|
|
51434
51693
|
name: "deviceId",
|
|
51435
51694
|
form: "single",
|
|
@@ -51455,11 +51714,26 @@ Object.freeze({
|
|
|
51455
51714
|
form: "single",
|
|
51456
51715
|
optional: false
|
|
51457
51716
|
}],
|
|
51717
|
+
"notifier.getStatus": [{
|
|
51718
|
+
name: "deviceId",
|
|
51719
|
+
form: "single",
|
|
51720
|
+
optional: false
|
|
51721
|
+
}],
|
|
51458
51722
|
"notifier.send": [{
|
|
51459
51723
|
name: "deviceId",
|
|
51460
51724
|
form: "single",
|
|
51461
51725
|
optional: false
|
|
51462
51726
|
}],
|
|
51727
|
+
"numericSensor.getStatus": [{
|
|
51728
|
+
name: "deviceId",
|
|
51729
|
+
form: "single",
|
|
51730
|
+
optional: false
|
|
51731
|
+
}],
|
|
51732
|
+
"osd.getStatus": [{
|
|
51733
|
+
name: "deviceId",
|
|
51734
|
+
form: "single",
|
|
51735
|
+
optional: false
|
|
51736
|
+
}],
|
|
51463
51737
|
"osd.setOverlay": [{
|
|
51464
51738
|
name: "deviceId",
|
|
51465
51739
|
form: "single",
|
|
@@ -51519,6 +51793,11 @@ Object.freeze({
|
|
|
51519
51793
|
form: "single",
|
|
51520
51794
|
optional: false
|
|
51521
51795
|
}],
|
|
51796
|
+
"petFeeder.getStatus": [{
|
|
51797
|
+
name: "deviceId",
|
|
51798
|
+
form: "single",
|
|
51799
|
+
optional: false
|
|
51800
|
+
}],
|
|
51522
51801
|
"petFeeder.markFoodReplenished": [{
|
|
51523
51802
|
name: "deviceId",
|
|
51524
51803
|
form: "single",
|
|
@@ -51554,6 +51833,11 @@ Object.freeze({
|
|
|
51554
51833
|
form: "single",
|
|
51555
51834
|
optional: false
|
|
51556
51835
|
}],
|
|
51836
|
+
"pipelineAnalytics.applyDeviceSettingsPatch": [{
|
|
51837
|
+
name: "deviceId",
|
|
51838
|
+
form: "single",
|
|
51839
|
+
optional: false
|
|
51840
|
+
}],
|
|
51557
51841
|
"pipelineAnalytics.clearTrackRelation": [{
|
|
51558
51842
|
name: "deviceId",
|
|
51559
51843
|
form: "single",
|
|
@@ -51594,6 +51878,16 @@ Object.freeze({
|
|
|
51594
51878
|
form: "single",
|
|
51595
51879
|
optional: false
|
|
51596
51880
|
}],
|
|
51881
|
+
"pipelineAnalytics.getDeviceLiveContribution": [{
|
|
51882
|
+
name: "deviceId",
|
|
51883
|
+
form: "single",
|
|
51884
|
+
optional: false
|
|
51885
|
+
}],
|
|
51886
|
+
"pipelineAnalytics.getDeviceSettingsContribution": [{
|
|
51887
|
+
name: "deviceId",
|
|
51888
|
+
form: "single",
|
|
51889
|
+
optional: false
|
|
51890
|
+
}],
|
|
51597
51891
|
"pipelineAnalytics.getEventDensity": [{
|
|
51598
51892
|
name: "deviceId",
|
|
51599
51893
|
form: "single",
|
|
@@ -51809,6 +52103,11 @@ Object.freeze({
|
|
|
51809
52103
|
form: "single",
|
|
51810
52104
|
optional: true
|
|
51811
52105
|
}],
|
|
52106
|
+
"pipelineOrchestrator.applyDeviceSettingsPatch": [{
|
|
52107
|
+
name: "deviceId",
|
|
52108
|
+
form: "single",
|
|
52109
|
+
optional: false
|
|
52110
|
+
}],
|
|
51812
52111
|
"pipelineOrchestrator.assignAudio": [{
|
|
51813
52112
|
name: "deviceId",
|
|
51814
52113
|
form: "single",
|
|
@@ -51854,6 +52153,16 @@ Object.freeze({
|
|
|
51854
52153
|
form: "single",
|
|
51855
52154
|
optional: false
|
|
51856
52155
|
}],
|
|
52156
|
+
"pipelineOrchestrator.getDeviceLiveContribution": [{
|
|
52157
|
+
name: "deviceId",
|
|
52158
|
+
form: "single",
|
|
52159
|
+
optional: false
|
|
52160
|
+
}],
|
|
52161
|
+
"pipelineOrchestrator.getDeviceSettingsContribution": [{
|
|
52162
|
+
name: "deviceId",
|
|
52163
|
+
form: "single",
|
|
52164
|
+
optional: false
|
|
52165
|
+
}],
|
|
51857
52166
|
"pipelineOrchestrator.getPipelineAssignment": [{
|
|
51858
52167
|
name: "deviceId",
|
|
51859
52168
|
form: "single",
|
|
@@ -51974,11 +52283,31 @@ Object.freeze({
|
|
|
51974
52283
|
form: "single",
|
|
51975
52284
|
optional: true
|
|
51976
52285
|
}],
|
|
52286
|
+
"powerMeter.getStatus": [{
|
|
52287
|
+
name: "deviceId",
|
|
52288
|
+
form: "single",
|
|
52289
|
+
optional: false
|
|
52290
|
+
}],
|
|
52291
|
+
"presence.getStatus": [{
|
|
52292
|
+
name: "deviceId",
|
|
52293
|
+
form: "single",
|
|
52294
|
+
optional: false
|
|
52295
|
+
}],
|
|
52296
|
+
"pressureSensor.getStatus": [{
|
|
52297
|
+
name: "deviceId",
|
|
52298
|
+
form: "single",
|
|
52299
|
+
optional: false
|
|
52300
|
+
}],
|
|
51977
52301
|
"privacyMask.getOptions": [{
|
|
51978
52302
|
name: "deviceId",
|
|
51979
52303
|
form: "single",
|
|
51980
52304
|
optional: false
|
|
51981
52305
|
}],
|
|
52306
|
+
"privacyMask.getStatus": [{
|
|
52307
|
+
name: "deviceId",
|
|
52308
|
+
form: "single",
|
|
52309
|
+
optional: false
|
|
52310
|
+
}],
|
|
51982
52311
|
"privacyMask.setAudioEnabled": [{
|
|
51983
52312
|
name: "deviceId",
|
|
51984
52313
|
form: "single",
|
|
@@ -52029,6 +52358,11 @@ Object.freeze({
|
|
|
52029
52358
|
form: "single",
|
|
52030
52359
|
optional: false
|
|
52031
52360
|
}],
|
|
52361
|
+
"ptz.getStatus": [{
|
|
52362
|
+
name: "deviceId",
|
|
52363
|
+
form: "single",
|
|
52364
|
+
optional: false
|
|
52365
|
+
}],
|
|
52032
52366
|
"ptz.goHome": [{
|
|
52033
52367
|
name: "deviceId",
|
|
52034
52368
|
form: "single",
|
|
@@ -52119,6 +52453,11 @@ Object.freeze({
|
|
|
52119
52453
|
form: "single",
|
|
52120
52454
|
optional: false
|
|
52121
52455
|
}],
|
|
52456
|
+
"recordingArchive.applyDeviceSettingsPatch": [{
|
|
52457
|
+
name: "deviceId",
|
|
52458
|
+
form: "single",
|
|
52459
|
+
optional: false
|
|
52460
|
+
}],
|
|
52122
52461
|
"recordingArchive.deleteFootprint": [{
|
|
52123
52462
|
name: "deviceId",
|
|
52124
52463
|
form: "single",
|
|
@@ -52139,6 +52478,21 @@ Object.freeze({
|
|
|
52139
52478
|
form: "single",
|
|
52140
52479
|
optional: false
|
|
52141
52480
|
}],
|
|
52481
|
+
"recordingArchive.getDeviceLiveContribution": [{
|
|
52482
|
+
name: "deviceId",
|
|
52483
|
+
form: "single",
|
|
52484
|
+
optional: false
|
|
52485
|
+
}],
|
|
52486
|
+
"recordingArchive.getDeviceSettingsContribution": [{
|
|
52487
|
+
name: "deviceId",
|
|
52488
|
+
form: "single",
|
|
52489
|
+
optional: false
|
|
52490
|
+
}],
|
|
52491
|
+
"recordingArchive.getStatus": [{
|
|
52492
|
+
name: "deviceId",
|
|
52493
|
+
form: "single",
|
|
52494
|
+
optional: false
|
|
52495
|
+
}],
|
|
52142
52496
|
"recordingArchive.listOpsLog": [{
|
|
52143
52497
|
name: "deviceId",
|
|
52144
52498
|
form: "single",
|
|
@@ -52224,6 +52578,11 @@ Object.freeze({
|
|
|
52224
52578
|
form: "single",
|
|
52225
52579
|
optional: false
|
|
52226
52580
|
}],
|
|
52581
|
+
"recordingOnboard.getStatus": [{
|
|
52582
|
+
name: "deviceId",
|
|
52583
|
+
form: "single",
|
|
52584
|
+
optional: false
|
|
52585
|
+
}],
|
|
52227
52586
|
"recordingOnboard.setSettings": [{
|
|
52228
52587
|
name: "deviceId",
|
|
52229
52588
|
form: "single",
|
|
@@ -52254,6 +52613,11 @@ Object.freeze({
|
|
|
52254
52613
|
form: "single",
|
|
52255
52614
|
optional: false
|
|
52256
52615
|
}],
|
|
52616
|
+
"sceneMonitor.getStatus": [{
|
|
52617
|
+
name: "deviceId",
|
|
52618
|
+
form: "single",
|
|
52619
|
+
optional: false
|
|
52620
|
+
}],
|
|
52257
52621
|
"sceneMonitor.listScenes": [{
|
|
52258
52622
|
name: "deviceId",
|
|
52259
52623
|
form: "single",
|
|
@@ -52279,6 +52643,11 @@ Object.freeze({
|
|
|
52279
52643
|
form: "single",
|
|
52280
52644
|
optional: false
|
|
52281
52645
|
}],
|
|
52646
|
+
"scriptRunner.getStatus": [{
|
|
52647
|
+
name: "deviceId",
|
|
52648
|
+
form: "single",
|
|
52649
|
+
optional: false
|
|
52650
|
+
}],
|
|
52282
52651
|
"scriptRunner.run": [{
|
|
52283
52652
|
name: "deviceId",
|
|
52284
52653
|
form: "single",
|
|
@@ -52289,11 +52658,31 @@ Object.freeze({
|
|
|
52289
52658
|
form: "single",
|
|
52290
52659
|
optional: false
|
|
52291
52660
|
}],
|
|
52661
|
+
"smoke.getStatus": [{
|
|
52662
|
+
name: "deviceId",
|
|
52663
|
+
form: "single",
|
|
52664
|
+
optional: false
|
|
52665
|
+
}],
|
|
52666
|
+
"snapshot.applyDeviceSettingsPatch": [{
|
|
52667
|
+
name: "deviceId",
|
|
52668
|
+
form: "single",
|
|
52669
|
+
optional: false
|
|
52670
|
+
}],
|
|
52292
52671
|
"snapshot.getDebugState": [{
|
|
52293
52672
|
name: "deviceId",
|
|
52294
52673
|
form: "single",
|
|
52295
52674
|
optional: false
|
|
52296
52675
|
}],
|
|
52676
|
+
"snapshot.getDeviceLiveContribution": [{
|
|
52677
|
+
name: "deviceId",
|
|
52678
|
+
form: "single",
|
|
52679
|
+
optional: false
|
|
52680
|
+
}],
|
|
52681
|
+
"snapshot.getDeviceSettingsContribution": [{
|
|
52682
|
+
name: "deviceId",
|
|
52683
|
+
form: "single",
|
|
52684
|
+
optional: false
|
|
52685
|
+
}],
|
|
52297
52686
|
"snapshot.getSnapshot": [{
|
|
52298
52687
|
name: "deviceId",
|
|
52299
52688
|
form: "single",
|
|
@@ -52310,6 +52699,11 @@ Object.freeze({
|
|
|
52310
52699
|
form: "array",
|
|
52311
52700
|
optional: false
|
|
52312
52701
|
}],
|
|
52702
|
+
"snapshot.getStatus": [{
|
|
52703
|
+
name: "deviceId",
|
|
52704
|
+
form: "single",
|
|
52705
|
+
optional: false
|
|
52706
|
+
}],
|
|
52313
52707
|
"snapshot.invalidateCache": [{
|
|
52314
52708
|
name: "deviceId",
|
|
52315
52709
|
form: "single",
|
|
@@ -52320,6 +52714,11 @@ Object.freeze({
|
|
|
52320
52714
|
form: "single",
|
|
52321
52715
|
optional: false
|
|
52322
52716
|
}],
|
|
52717
|
+
"streamBroker.applyDeviceSettingsPatch": [{
|
|
52718
|
+
name: "deviceId",
|
|
52719
|
+
form: "single",
|
|
52720
|
+
optional: false
|
|
52721
|
+
}],
|
|
52323
52722
|
"streamBroker.assignProfile": [{
|
|
52324
52723
|
name: "deviceId",
|
|
52325
52724
|
form: "single",
|
|
@@ -52335,6 +52734,16 @@ Object.freeze({
|
|
|
52335
52734
|
form: "single",
|
|
52336
52735
|
optional: false
|
|
52337
52736
|
}],
|
|
52737
|
+
"streamBroker.getDeviceLiveContribution": [{
|
|
52738
|
+
name: "deviceId",
|
|
52739
|
+
form: "single",
|
|
52740
|
+
optional: false
|
|
52741
|
+
}],
|
|
52742
|
+
"streamBroker.getDeviceSettingsContribution": [{
|
|
52743
|
+
name: "deviceId",
|
|
52744
|
+
form: "single",
|
|
52745
|
+
optional: false
|
|
52746
|
+
}],
|
|
52338
52747
|
"streamBroker.getStreamWithCodec": [{
|
|
52339
52748
|
name: "deviceId",
|
|
52340
52749
|
form: "single",
|
|
@@ -52395,16 +52804,46 @@ Object.freeze({
|
|
|
52395
52804
|
form: "single",
|
|
52396
52805
|
optional: false
|
|
52397
52806
|
}],
|
|
52807
|
+
"streamParams.getStatus": [{
|
|
52808
|
+
name: "deviceId",
|
|
52809
|
+
form: "single",
|
|
52810
|
+
optional: false
|
|
52811
|
+
}],
|
|
52398
52812
|
"streamParams.setProfile": [{
|
|
52399
52813
|
name: "deviceId",
|
|
52400
52814
|
form: "single",
|
|
52401
52815
|
optional: false
|
|
52402
52816
|
}],
|
|
52817
|
+
"switch.getStatus": [{
|
|
52818
|
+
name: "deviceId",
|
|
52819
|
+
form: "single",
|
|
52820
|
+
optional: false
|
|
52821
|
+
}],
|
|
52403
52822
|
"switch.setState": [{
|
|
52404
52823
|
name: "deviceId",
|
|
52405
52824
|
form: "single",
|
|
52406
52825
|
optional: false
|
|
52407
52826
|
}],
|
|
52827
|
+
"tamper.getStatus": [{
|
|
52828
|
+
name: "deviceId",
|
|
52829
|
+
form: "single",
|
|
52830
|
+
optional: false
|
|
52831
|
+
}],
|
|
52832
|
+
"temperatureSensor.getStatus": [{
|
|
52833
|
+
name: "deviceId",
|
|
52834
|
+
form: "single",
|
|
52835
|
+
optional: false
|
|
52836
|
+
}],
|
|
52837
|
+
"update.getStatus": [{
|
|
52838
|
+
name: "deviceId",
|
|
52839
|
+
form: "single",
|
|
52840
|
+
optional: false
|
|
52841
|
+
}],
|
|
52842
|
+
"vacuumControl.getStatus": [{
|
|
52843
|
+
name: "deviceId",
|
|
52844
|
+
form: "single",
|
|
52845
|
+
optional: false
|
|
52846
|
+
}],
|
|
52408
52847
|
"vacuumControl.locate": [{
|
|
52409
52848
|
name: "deviceId",
|
|
52410
52849
|
form: "single",
|
|
@@ -52440,6 +52879,11 @@ Object.freeze({
|
|
|
52440
52879
|
form: "single",
|
|
52441
52880
|
optional: false
|
|
52442
52881
|
}],
|
|
52882
|
+
"valve.getStatus": [{
|
|
52883
|
+
name: "deviceId",
|
|
52884
|
+
form: "single",
|
|
52885
|
+
optional: false
|
|
52886
|
+
}],
|
|
52443
52887
|
"valve.open": [{
|
|
52444
52888
|
name: "deviceId",
|
|
52445
52889
|
form: "single",
|
|
@@ -52455,6 +52899,11 @@ Object.freeze({
|
|
|
52455
52899
|
form: "single",
|
|
52456
52900
|
optional: false
|
|
52457
52901
|
}],
|
|
52902
|
+
"vibration.getStatus": [{
|
|
52903
|
+
name: "deviceId",
|
|
52904
|
+
form: "single",
|
|
52905
|
+
optional: false
|
|
52906
|
+
}],
|
|
52458
52907
|
"videoclips.dialClipStream": [{
|
|
52459
52908
|
name: "deviceId",
|
|
52460
52909
|
form: "single",
|
|
@@ -52490,6 +52939,11 @@ Object.freeze({
|
|
|
52490
52939
|
form: "single",
|
|
52491
52940
|
optional: false
|
|
52492
52941
|
}],
|
|
52942
|
+
"waterHeater.getStatus": [{
|
|
52943
|
+
name: "deviceId",
|
|
52944
|
+
form: "single",
|
|
52945
|
+
optional: false
|
|
52946
|
+
}],
|
|
52493
52947
|
"waterHeater.setAway": [{
|
|
52494
52948
|
name: "deviceId",
|
|
52495
52949
|
form: "single",
|
|
@@ -52505,6 +52959,11 @@ Object.freeze({
|
|
|
52505
52959
|
form: "single",
|
|
52506
52960
|
optional: false
|
|
52507
52961
|
}],
|
|
52962
|
+
"weather.getStatus": [{
|
|
52963
|
+
name: "deviceId",
|
|
52964
|
+
form: "single",
|
|
52965
|
+
optional: false
|
|
52966
|
+
}],
|
|
52508
52967
|
"webrtcSession.addIceCandidate": [{
|
|
52509
52968
|
name: "deviceId",
|
|
52510
52969
|
form: "single",
|
|
@@ -53242,7 +53701,7 @@ var PreviewTextField = string().max(200);
|
|
|
53242
53701
|
* Whether the notification's preview is a STILL or a short animation.
|
|
53243
53702
|
*
|
|
53244
53703
|
* The operator's ask, verbatim: *"inviato come gif o video (come per le altre
|
|
53245
|
-
* rule)"* — the other rules already offer an animated preview, and a ten-hour
|
|
53704
|
+
* rule)"* [sent as a gif or video (as for the other rules)] — the other rules already offer an animated preview, and a ten-hour
|
|
53246
53705
|
* night reads better as three seconds of motion than as one frame of it. Both
|
|
53247
53706
|
* modes get the SAME treatment (blurred frame, large centred title); `'gif'`
|
|
53248
53707
|
* simply applies it to a dozen frames sampled across the render and assembles
|