@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.js
CHANGED
|
@@ -7447,7 +7447,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
|
|
|
7447
7447
|
return DeviceRole;
|
|
7448
7448
|
}({});
|
|
7449
7449
|
//#endregion
|
|
7450
|
-
//#region ../types/dist/composition-
|
|
7450
|
+
//#region ../types/dist/composition-Bzr7GwgP.mjs
|
|
7451
7451
|
/**
|
|
7452
7452
|
* The ffmpeg build every CamStack node downloads, per platform and arch.
|
|
7453
7453
|
*
|
|
@@ -7501,20 +7501,20 @@ function portable(target) {
|
|
|
7501
7501
|
}
|
|
7502
7502
|
portable("linux64"), portable("linuxarm64"), portable("macarm64"), portable("mac64");
|
|
7503
7503
|
/**
|
|
7504
|
-
*
|
|
7505
|
-
*
|
|
7504
|
+
* THE table "which boolean of this device type counts as HIGH", and the
|
|
7505
|
+
* pure evaluator of its EDGE.
|
|
7506
7506
|
*
|
|
7507
|
-
*
|
|
7508
|
-
*
|
|
7509
|
-
*
|
|
7510
|
-
*
|
|
7511
|
-
*
|
|
7512
|
-
*
|
|
7507
|
+
* ONE table for everyone who asks "is this device HIGH?": the
|
|
7508
|
+
* recorder's `RecordingTriggers.sensorDeviceIds` trigger, the post-analysis
|
|
7509
|
+
* sensor markers, the orchestrator's camera-sensors bridge and
|
|
7510
|
+
* the sources of a composite doorbell (`doorbellFeatureSources`, D671).
|
|
7511
|
+
* A second copy would diverge at the first cap added, and the symptom — "the
|
|
7512
|
+
* sensor rings the doorbell but does not record" — is exactly D62.
|
|
7513
7513
|
*
|
|
7514
|
-
* ⚠
|
|
7515
|
-
*
|
|
7516
|
-
*
|
|
7517
|
-
*
|
|
7514
|
+
* ⚠ NOT `DEVICE_STATE_READERS` (`catalogs/device-state-vocabulary.ts`), and the
|
|
7515
|
+
* two must not be unified: that one answers "what is the state WORD for a
|
|
7516
|
+
* rule" (and includes `presence`, `cover`, `alarm-panel`), this one "which
|
|
7517
|
+
* boolean's EDGE counts". Deliberately different vocabularies.
|
|
7518
7518
|
*/
|
|
7519
7519
|
/**
|
|
7520
7520
|
* Known binary / switch source caps → the boolean slice field whose
|
|
@@ -7535,6 +7535,8 @@ var SOURCE_CAP_ACTIVE_FIELD = {
|
|
|
7535
7535
|
vibration: "detected",
|
|
7536
7536
|
tamper: "tampered"
|
|
7537
7537
|
};
|
|
7538
|
+
/** Cap names whose presence in a device's bindings qualify it as a source. */
|
|
7539
|
+
var SOURCE_CAPS = Object.keys(SOURCE_CAP_ACTIVE_FIELD);
|
|
7538
7540
|
/**
|
|
7539
7541
|
* Error types for the safe expression engine. Two distinct classes so callers
|
|
7540
7542
|
* can tell a compile-time (grammar) failure from a runtime (evaluation)
|
|
@@ -9141,22 +9143,22 @@ var CLASS_MAP_MACRO_TARGETS = [
|
|
|
9141
9143
|
"package"
|
|
9142
9144
|
];
|
|
9143
9145
|
/**
|
|
9144
|
-
*
|
|
9145
|
-
*
|
|
9146
|
+
* The FIRST-LEVEL macro classes: those an object detector emits and that
|
|
9147
|
+
* an operator can select.
|
|
9146
9148
|
*
|
|
9147
|
-
*
|
|
9149
|
+
* They are the three offered by the `object-detection` step
|
|
9148
9150
|
* (`addon-pipeline/src/detection-pipeline/registry/step-definitions.ts`,
|
|
9149
|
-
* `enabledMacroClasses`). `package`
|
|
9150
|
-
* `MACRO_LABELS` —
|
|
9151
|
-
* `package-detection`,
|
|
9152
|
-
*
|
|
9151
|
+
* `enabledMacroClasses`). `package` is in {@link CLASS_MAP_MACRO_TARGETS} and in
|
|
9152
|
+
* `MACRO_LABELS` — it is a true macro — but NOT here: it belongs to the step
|
|
9153
|
+
* `package-detection`, whose enablement is driven by zones, and offering the
|
|
9154
|
+
* same word twice has already made an operator turn on the COCO proxy
|
|
9153
9155
|
* (suitcase/backpack/handbag) lasciando spento il detector dedicato.
|
|
9154
9156
|
*
|
|
9155
|
-
*
|
|
9156
|
-
*
|
|
9157
|
-
* (`types/detection.ts`);
|
|
9158
|
-
* (`RecordingTriggers.objectClasses`)
|
|
9159
|
-
*
|
|
9157
|
+
* ONE list. Before today the same three were hand-written in the step's offer
|
|
9158
|
+
* and a second time as the union `FirstLevelMacro`
|
|
9159
|
+
* (`types/detection.ts`); a third copy for the recording trigger
|
|
9160
|
+
* (`RecordingTriggers.objectClasses`) would have made the later divergence
|
|
9161
|
+
* invisible.
|
|
9160
9162
|
*/
|
|
9161
9163
|
var FIRST_LEVEL_MACRO_CLASSES = [
|
|
9162
9164
|
"person",
|
|
@@ -9221,17 +9223,17 @@ var RecordingStorageModeSchema = _enum([
|
|
|
9221
9223
|
"on-device-decision"
|
|
9222
9224
|
]);
|
|
9223
9225
|
/**
|
|
9224
|
-
*
|
|
9225
|
-
*
|
|
9226
|
+
* The macro classes that can open a recording window — the same
|
|
9227
|
+
* three offered by the `object-detection` step, from ONE list
|
|
9226
9228
|
* ({@link FIRST_LEVEL_MACRO_CLASSES}).
|
|
9227
9229
|
*/
|
|
9228
9230
|
var RecordingObjectTriggerClassSchema = _enum(FIRST_LEVEL_MACRO_CLASSES);
|
|
9229
9231
|
/**
|
|
9230
|
-
* True
|
|
9232
|
+
* True when `values` does not repeat an element.
|
|
9231
9233
|
*
|
|
9232
|
-
*
|
|
9233
|
-
*
|
|
9234
|
-
*
|
|
9234
|
+
* A duplicate is not harmless: every entry of `objectClasses` / `sensorDeviceIds`
|
|
9235
|
+
* becomes a SOURCE in `bandTriggerSources`, and the same source twice
|
|
9236
|
+
* would count its windows twice in `segmentMissedByMs`.
|
|
9235
9237
|
*/
|
|
9236
9238
|
var noDuplicates = (values) => new Set(values).size === values.length;
|
|
9237
9239
|
/** Which detectors trigger an `events`-mode band. */
|
|
@@ -9239,34 +9241,34 @@ var RecordingTriggersSchema = object({
|
|
|
9239
9241
|
motion: boolean().optional(),
|
|
9240
9242
|
audioThresholdDbfs: number().optional(),
|
|
9241
9243
|
/**
|
|
9242
|
-
*
|
|
9243
|
-
*
|
|
9244
|
-
*
|
|
9245
|
-
*
|
|
9244
|
+
* The macro classes whose detection opens a window. ABSENT = the source
|
|
9245
|
+
* is not listened to; an EMPTY array is rejected, because "events band, object
|
|
9246
|
+
* trigger on, no class" is the same shape "enabled and records
|
|
9247
|
+
* nothing, forever" that `eventsBandCanEverDemand` is written against.
|
|
9246
9248
|
*
|
|
9247
|
-
*
|
|
9248
|
-
*
|
|
9249
|
-
* `minConfidence<Macro>`
|
|
9250
|
-
* (`source: 'onboard'`)
|
|
9251
|
-
*
|
|
9249
|
+
* The signal read is ALREADY FILTERED: only `source: 'pipeline'` detections, i.e.
|
|
9250
|
+
* those that went through `enabledMacroClasses`, the
|
|
9251
|
+
* `minConfidence<Macro>` and the full-frame guard. The camera's onboard AI
|
|
9252
|
+
* (`source: 'onboard'`) goes through none of those gates and does NOT open
|
|
9253
|
+
* windows — see `recorder/object-trigger.ts`.
|
|
9252
9254
|
*/
|
|
9253
9255
|
objectClasses: array(RecordingObjectTriggerClassSchema).min(1).refine(noDuplicates, { message: "objectClasses must not repeat a class" }).optional(),
|
|
9254
9256
|
/**
|
|
9255
|
-
*
|
|
9256
|
-
*
|
|
9257
|
+
* The LINKED devices whose RISING EDGE opens a window. Absent = the source
|
|
9258
|
+
* is not listened to; an empty array is rejected for the same reason as
|
|
9257
9259
|
* `objectClasses`.
|
|
9258
9260
|
*
|
|
9259
|
-
*
|
|
9260
|
-
*
|
|
9261
|
-
*
|
|
9262
|
-
*
|
|
9263
|
-
* device (D12) —
|
|
9261
|
+
* These are SOURCE device ids, not cameras: the band names them, so the
|
|
9262
|
+
* hot path (`DeviceStateChanged`, at bus rate across the whole fleet)
|
|
9263
|
+
* does no RPC. The OFFER from which the operator picks them is another question, and
|
|
9264
|
+
* is resolved with `deviceManager.getLinkedDevices` + `getBindingsBatch` per
|
|
9265
|
+
* device (D12) — never a global list of caps.
|
|
9264
9266
|
*
|
|
9265
|
-
*
|
|
9266
|
-
* `SOURCE_CAP_ACTIVE_FIELD` (`catalogs/sensor-active-state.ts`)
|
|
9267
|
-
*
|
|
9268
|
-
*
|
|
9269
|
-
*
|
|
9267
|
+
* What "high" means depends on the device TYPE and is not decided here:
|
|
9268
|
+
* `SOURCE_CAP_ACTIVE_FIELD` (`catalogs/sensor-active-state.ts`) is THE table,
|
|
9269
|
+
* the same one as the composite doorbell (D671). And it is the EDGE, not
|
|
9270
|
+
* the level: a contact found already open at runner restart does not
|
|
9271
|
+
* record.
|
|
9270
9272
|
*/
|
|
9271
9273
|
sensorDeviceIds: array(number().int().positive()).min(1).max(16).refine(noDuplicates, { message: "sensorDeviceIds must not repeat a device" }).optional()
|
|
9272
9274
|
});
|
|
@@ -10343,7 +10345,7 @@ var DecoderSessionConfigSchema = object({
|
|
|
10343
10345
|
* - **VALUE** — at which level, for which scope, until when. That stays ONE
|
|
10344
10346
|
* thing: the logging settings document on the `system` cap. Two authorities
|
|
10345
10347
|
* over the values is the exact defect
|
|
10346
|
-
* `docs/design/plans/2026-08-26-
|
|
10348
|
+
* `docs/design/plans/2026-08-26-per-component-logging.md` was written to
|
|
10347
10349
|
* remove; re-introducing it from the cure side would be grotesque.
|
|
10348
10350
|
*
|
|
10349
10351
|
* Nothing in this file reads a clock, an env var or a store. The registry is
|
|
@@ -12054,7 +12056,7 @@ var BrokerStatusEnum = _enum([
|
|
|
12054
12056
|
"unreachable",
|
|
12055
12057
|
"error"
|
|
12056
12058
|
]);
|
|
12057
|
-
var BrokerInfoSchema
|
|
12059
|
+
var BrokerInfoSchema = object({
|
|
12058
12060
|
/** Stable broker id. Persisted; survives addon restarts. */
|
|
12059
12061
|
id: string(),
|
|
12060
12062
|
/** Addon id of the provider that OWNS this broker.
|
|
@@ -12187,7 +12189,7 @@ var GetStateInputSchema = object({
|
|
|
12187
12189
|
* HA: entity_id (returns the cached entity state). */
|
|
12188
12190
|
key: string()
|
|
12189
12191
|
});
|
|
12190
|
-
method(ListInputSchema, array(BrokerInfoSchema
|
|
12192
|
+
method(ListInputSchema, array(BrokerInfoSchema)), method(GetInputSchema, BrokerInfoSchema.nullable()), method(_void(), array(BrokerProviderInfoSchema), { auth: "admin" }), method(AddInputSchema, AddResultSchema, {
|
|
12191
12193
|
kind: "mutation",
|
|
12192
12194
|
auth: "admin"
|
|
12193
12195
|
}), method(RemoveInputSchema, _void(), {
|
|
@@ -13898,7 +13900,7 @@ method(_void(), EngineInfoSchema, { auth: "admin" }), method(object({
|
|
|
13898
13900
|
*
|
|
13899
13901
|
* ⚠ An earlier version of this comment blamed Zod stripping, and that
|
|
13900
13902
|
* was wrong — corrected 2026-08-26 after the hop map
|
|
13901
|
-
* (`docs/design/2026-08-26-
|
|
13903
|
+
* (`docs/design/2026-08-26-topic-hop-map.md`) traced the path.
|
|
13902
13904
|
* There is **no Zod parse at all** between the door and the engine: the
|
|
13903
13905
|
* dispatcher forwards the payload verbatim and UDS carries it whole. A
|
|
13904
13906
|
* field declared here reaches `SqliteSettingsBackend` either way.
|
|
@@ -16101,7 +16103,7 @@ method(object({
|
|
|
16101
16103
|
* per-device window, `KeyFrameCaptureLog`, `bumpCropMetric`. Every one of them
|
|
16102
16104
|
* ends in a log line, and a log line is the thing the operator asked to stop
|
|
16103
16105
|
* needing: *"possiamo armare questi errori intanto? Così al prossimo giro
|
|
16104
|
-
* ricontrolliamo tutti questi punti"
|
|
16106
|
+
* 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
|
|
16105
16107
|
* hand-correlating timestamps, which is how a 22% thumbnail gap and a 3-hour
|
|
16106
16108
|
* media blackout were both diagnosed. The counters stay; this is where they can
|
|
16107
16109
|
* be READ.
|
|
@@ -17477,7 +17479,7 @@ var BrokerStatusSchema$1 = _enum([
|
|
|
17477
17479
|
"unreachable",
|
|
17478
17480
|
"tls-error"
|
|
17479
17481
|
]);
|
|
17480
|
-
var BrokerInfoSchema = object({
|
|
17482
|
+
var BrokerInfoSchema$1 = object({
|
|
17481
17483
|
id: string(),
|
|
17482
17484
|
name: string(),
|
|
17483
17485
|
url: string(),
|
|
@@ -17540,7 +17542,7 @@ var StatusSchema = object({
|
|
|
17540
17542
|
brokerCount: number(),
|
|
17541
17543
|
embeddedRunning: boolean()
|
|
17542
17544
|
});
|
|
17543
|
-
method(_void(), array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema, { auth: "admin" }), method(AddBrokerInputSchema, AddBrokerResultSchema, {
|
|
17545
|
+
method(_void(), array(BrokerInfoSchema$1)), method(IdInputSchema, BrokerConnectionDetailsSchema, { auth: "admin" }), method(AddBrokerInputSchema, AddBrokerResultSchema, {
|
|
17544
17546
|
kind: "mutation",
|
|
17545
17547
|
auth: "admin"
|
|
17546
17548
|
}), method(IdInputSchema, _void(), {
|
|
@@ -19754,78 +19756,16 @@ var NcRuleInputSchema = object({
|
|
|
19754
19756
|
*/
|
|
19755
19757
|
confirm: NcConfirmSchema.optional(),
|
|
19756
19758
|
/**
|
|
19757
|
-
*
|
|
19758
|
-
*
|
|
19759
|
-
*
|
|
19760
|
-
*
|
|
19761
|
-
*
|
|
19762
|
-
*
|
|
19763
|
-
*
|
|
19764
|
-
*
|
|
19765
|
-
*
|
|
19766
|
-
* Only two honest answers exist, and this flag picks between them. It has
|
|
19767
|
-
* effect ONLY on a rule that declares a recognition scope
|
|
19768
|
-
* ({@link NcConditions.identities} or {@link NcConditions.plates}) — on any
|
|
19769
|
-
* other rule there is nothing to wait for and the flag is inert.
|
|
19770
|
-
*
|
|
19771
|
-
* | value | what happens |
|
|
19772
|
-
* | --- | --- |
|
|
19773
|
-
* | `true` | the rule stops firing on the object event and fires at TRACK CLOSE instead, once, with the name — later, and complete |
|
|
19774
|
-
* | 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) |
|
|
19775
|
-
*
|
|
19776
|
-
* `.optional()` and deliberately NOT `.default()`: a Zod default does not run
|
|
19777
|
-
* on the addon cap path, and absent has to keep meaning exactly what every
|
|
19778
|
-
* rule authored before this field meant.
|
|
19779
|
-
*
|
|
19780
|
-
* The cost of `true` is stated here because the editor states it too: a rule
|
|
19781
|
-
* that waits also inherits track-close SEMANTICS — its `zones` condition
|
|
19782
|
-
* tests every zone the track visited and a `crossing` condition can no longer
|
|
19783
|
-
* be satisfied, because a closed track carries no crossing.
|
|
19759
|
+
* IMMEDIATE GROUPED (D692): the first matching subject opens a window of this many
|
|
19760
|
+
* seconds; the rule sends ONE message when the window closes — early, once every
|
|
19761
|
+
* subject in it is final, never before {@link NC_GROUPING_MIN_SEC} — naming everybody
|
|
19762
|
+
* the rule matched, with one mosaic tile per subject.
|
|
19763
|
+
* Absent = plain immediate (one message per track, at the first match).
|
|
19764
|
+
* Only an `immediate` DETECTION rule may carry it (`ruleGroupingApplies`, enforced on
|
|
19765
|
+
* save by the hub's grouping guard). `.optional()`, never `.default()`: the addon cap
|
|
19766
|
+
* path does not run Zod defaults.
|
|
19784
19767
|
*/
|
|
19785
|
-
|
|
19786
|
-
/**
|
|
19787
|
-
* GROUP a burst of subjects into ONE notification that grows.
|
|
19788
|
-
*
|
|
19789
|
-
* Seconds of quiet after the last matching subject before the burst is
|
|
19790
|
-
* considered over. While it is open, the first subject enqueues immediately —
|
|
19791
|
-
* **exactly as today, with no added latency** — and every real growth (a new
|
|
19792
|
-
* subject, or a name confirmed on one already in it) REPLACES that
|
|
19793
|
-
* notification with an updated one naming everybody. The push carries the
|
|
19794
|
-
* group's own coalescing tag, so the phone replaces rather than stacks.
|
|
19795
|
-
*
|
|
19796
|
-
* `0` / absent = off, and off is today's behaviour byte for byte.
|
|
19797
|
-
*
|
|
19798
|
-
* ### Why an idle cutoff and not a window
|
|
19799
|
-
*
|
|
19800
|
-
* The measured seven-person arrival on device 590 spans 110 s with every
|
|
19801
|
-
* internal gap under 30 s. A 12 s fixed window cuts it into three groups; an
|
|
19802
|
-
* idle cutoff holds it as one and ends it when the arrival actually ends.
|
|
19803
|
-
* 30 s is a widely shipped value for the same decision.
|
|
19804
|
-
*
|
|
19805
|
-
* ### What it replaces
|
|
19806
|
-
*
|
|
19807
|
-
* The blind cooldown, which collapses a burst by DISCARDING it. Measured on
|
|
19808
|
-
* device 615 / *Persona su Uscio* over six days: 116 qualifying tracks → 74
|
|
19809
|
-
* notifications, **44 (37.9%) suppressed outright**, 23 of them overlapping a
|
|
19810
|
-
* track that did fire and 7 carrying a confirmed identity nobody heard about.
|
|
19811
|
-
* A group collapses the same volume by MERGING, so the cooldown becomes a
|
|
19812
|
-
* budget over GROUPS — which is what it always meant — and a growth is never
|
|
19813
|
-
* throttled by the window its own first member spent.
|
|
19814
|
-
*
|
|
19815
|
-
* ### Interaction with {@link waitForEnhancement}
|
|
19816
|
-
*
|
|
19817
|
-
* They compose, and the order matters. `waitForEnhancement` defers the rule to
|
|
19818
|
-
* TRACK CLOSE, so with both set the group is opened by the first member to
|
|
19819
|
-
* CLOSE — already carrying its name — and grows as later members close. That
|
|
19820
|
-
* is later, and complete. With grouping alone the group opens on the first
|
|
19821
|
-
* object event and picks up names as they are confirmed, through the growth
|
|
19822
|
-
* path. Neither combination fires twice for one subject.
|
|
19823
|
-
*
|
|
19824
|
-
* `.optional()` and deliberately NOT `.default()`: a Zod default does not run
|
|
19825
|
-
* on the addon cap path, so absent must keep meaning what it meant before this
|
|
19826
|
-
* field existed.
|
|
19827
|
-
*/
|
|
19828
|
-
groupIdleSec: number().int().min(0).max(600).optional()
|
|
19768
|
+
groupingSec: number().int().min(5).max(60).optional()
|
|
19829
19769
|
});
|
|
19830
19770
|
/**
|
|
19831
19771
|
* Partial patch for `updateRule` — any subset of the input fields, plus the
|
|
@@ -19873,9 +19813,10 @@ var NcRuleClearableKeySchema = _enum([
|
|
|
19873
19813
|
"targetUsers",
|
|
19874
19814
|
"snoozeOptions",
|
|
19875
19815
|
"snoozeAllowGlobal",
|
|
19876
|
-
"waitForEnhancement",
|
|
19877
19816
|
"actions",
|
|
19878
19817
|
"confirm",
|
|
19818
|
+
"groupingSec",
|
|
19819
|
+
"waitForEnhancement",
|
|
19879
19820
|
"groupIdleSec"
|
|
19880
19821
|
]);
|
|
19881
19822
|
var NcRuleUpdateInputSchema = object({
|
|
@@ -19897,9 +19838,25 @@ var NcRuleSchema = NcRuleInputSchema.extend({
|
|
|
19897
19838
|
*/
|
|
19898
19839
|
disabledTargetIds: array(string()).default([])
|
|
19899
19840
|
});
|
|
19841
|
+
/**
|
|
19842
|
+
* The state-summary SECTIONS (D647 / D698): the D637 kind groups that report a
|
|
19843
|
+
* still-true state. `backups-exports` and `alarm` are not sections — a completed
|
|
19844
|
+
* job is not an open state, and the alarm stays instant.
|
|
19845
|
+
*/
|
|
19846
|
+
var NcStateSummarySectionIdSchema = _enum([
|
|
19847
|
+
"device-state",
|
|
19848
|
+
"streams",
|
|
19849
|
+
"battery",
|
|
19850
|
+
"consumables",
|
|
19851
|
+
"tanks",
|
|
19852
|
+
"detection-blind",
|
|
19853
|
+
"nodes",
|
|
19854
|
+
"addons",
|
|
19855
|
+
"updates"
|
|
19856
|
+
]);
|
|
19900
19857
|
/** One section of a previewed state summary. `unavailable` = its state could not be read. */
|
|
19901
19858
|
var NcStateSummaryPreviewSectionSchema = object({
|
|
19902
|
-
id:
|
|
19859
|
+
id: NcStateSummarySectionIdSchema,
|
|
19903
19860
|
status: _enum(["read", "unavailable"]),
|
|
19904
19861
|
items: number().int().nonnegative(),
|
|
19905
19862
|
reason: string().optional()
|
|
@@ -19909,7 +19866,7 @@ var NcStateSummaryPreviewSectionSchema = object({
|
|
|
19909
19866
|
* a `rule` split (no `section`), one section's on a `section` split.
|
|
19910
19867
|
*/
|
|
19911
19868
|
var NcStateSummaryPreviewRowSchema = object({
|
|
19912
|
-
section:
|
|
19869
|
+
section: NcStateSummarySectionIdSchema.optional(),
|
|
19913
19870
|
/** The section's name on a per-section row; every reported section's, joined, on a combined one. */
|
|
19914
19871
|
title: string(),
|
|
19915
19872
|
text: string(),
|
|
@@ -21808,14 +21765,14 @@ var TrackSchema = object({
|
|
|
21808
21765
|
* `derive-returned-null tile=standin`,
|
|
21809
21766
|
* `native-tile tile=native no-key-frame-at-close`, …) written at close and
|
|
21810
21767
|
* CLEARED by the late-keyFrame upgrade when a native tile lands after all.
|
|
21811
|
-
* The operator-facing answer to "perché manca l'immagine?" on a track whose
|
|
21768
|
+
* The operator-facing answer to "perché manca l'immagine?" [why is the image missing?] on a track whose
|
|
21812
21769
|
* tile is a face/plate stand-in, a raster crop, or an icon.
|
|
21813
21770
|
*
|
|
21814
21771
|
* **`no-key-frame-at-close` (D400).** The line used to be written ONLY when
|
|
21815
21772
|
* the TILE ranked below native, so a track whose thumbnail landed natively
|
|
21816
21773
|
* while its key frame missed carried no reason at all — three of the four
|
|
21817
21774
|
* `MISSING_KEYFRAME` tracks in the 2026-09-07 operator audit were exactly
|
|
21818
|
-
* that shape, and their "niente ultimo" had no cause anywhere on the row.
|
|
21775
|
+
* that shape, and their "niente ultimo" [no last frame] had no cause anywhere on the row.
|
|
21819
21776
|
* The key frame is the head of a cascade (`keyFrame ⇒ keyFrameSmall ⇒ the
|
|
21820
21777
|
* lastFrame copy source`), so its absence is now on this line whatever the
|
|
21821
21778
|
* tile ended up being.
|
|
@@ -21902,7 +21859,7 @@ var MotionEventSchema = object({
|
|
|
21902
21859
|
/**
|
|
21903
21860
|
* Ms offsets from `timestamp` (the episode's own first rising edge, so the
|
|
21904
21861
|
* first entry is always `0`) of every genuine off→on transition the
|
|
21905
|
-
* episode saw — "ogni evento on si deve salvare" (D475). NOT one entry per
|
|
21862
|
+
* episode saw — "ogni evento on si deve salvare" [every ON event must be saved] (D475). NOT one entry per
|
|
21906
21863
|
* push: a firmware source that keepalives at ~1 Hz for the whole burst
|
|
21907
21864
|
* (Reolink, Hikvision) produces exactly one edge; a source that reports an
|
|
21908
21865
|
* explicit `false` mid-episode and then resumes before the quiet window
|
|
@@ -22426,6 +22383,7 @@ var KeyEventSchema = object({
|
|
|
22426
22383
|
bestEventId: string(),
|
|
22427
22384
|
/** Track lifetime in ms (lastSeen - firstSeen). */
|
|
22428
22385
|
windowMs: number().optional(),
|
|
22386
|
+
audioLabels: array(TrackAudioLabelSchema).readonly().optional(),
|
|
22429
22387
|
...TrackFlagFields,
|
|
22430
22388
|
...TrackRetrainFields
|
|
22431
22389
|
});
|
|
@@ -27350,7 +27308,7 @@ var ClipPlaybackSchema = object({
|
|
|
27350
27308
|
* **One authorised yes is one wake.** `next-natural` — take the clip the next
|
|
27351
27309
|
* time the camera is awake for its own reasons — is deliberately not a member:
|
|
27352
27310
|
* it was proposed, it is free on the battery, and the operator declined it on
|
|
27353
|
-
* 2026-09-20 (*"Quando un export viene richiesto si sveglia la camera."
|
|
27311
|
+
* 2026-09-20 (*"Quando un export viene richiesto si sveglia la camera."* [When an export is requested the camera wakes up],
|
|
27354
27312
|
* D558 "Considered and not taken").
|
|
27355
27313
|
*/
|
|
27356
27314
|
var ClipWakeSchema = _enum(["authorised"]);
|
|
@@ -27746,7 +27704,7 @@ var videoclipsCapability = {
|
|
|
27746
27704
|
* **It is a SECTION of the Recording tab, at the end of it — not a tab of
|
|
27747
27705
|
* its own.** It shipped as a `clips` top-tab and the operator rejected the
|
|
27748
27706
|
* placement: *"utilizzerei la stessa tab recordings, lì abbiamo già tutto il
|
|
27749
|
-
* necessario, una nuova sezione alla fine per le clips"
|
|
27707
|
+
* 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
|
|
27750
27708
|
* already holds the recorder's panel, the schedule bands and the unified
|
|
27751
27709
|
* retention policy; footage the camera itself holds is the same question,
|
|
27752
27710
|
* asked of a different store. `order: 100` puts it after all of them with
|
|
@@ -27807,7 +27765,7 @@ var videoclipsCapability = {
|
|
|
27807
27765
|
* It replaced `sources?: string[]`, a VIEW filter over source ids that
|
|
27808
27766
|
* assumed the answer was a fan-out over everything a camera has. The
|
|
27809
27767
|
* operator settled otherwise on 2026-09-20 — *"l'utilizzatore è uno
|
|
27810
|
-
* solo"* — so the list is asked of one provider at a time and there is
|
|
27768
|
+
* solo"* [there is only one user] — so the list is asked of one provider at a time and there is
|
|
27811
27769
|
* nothing to filter out of it.
|
|
27812
27770
|
*/
|
|
27813
27771
|
provider: string().min(1)
|
|
@@ -36129,7 +36087,7 @@ var ReadGopBytesResultSchema = object({
|
|
|
36129
36087
|
/**
|
|
36130
36088
|
* A time WINDOW of one finalized segment, cut by byte range — the multi-GOP
|
|
36131
36089
|
* twin of {@link ReadGopBytesResultSchema}'s single instant. Built for the
|
|
36132
|
-
* replay clip's `recording` source (`docs/design/plans/2026-08-26-replay-
|
|
36090
|
+
* replay clip's `recording` source (`docs/design/plans/2026-08-26-clip-replay-on-pipeline.md`):
|
|
36133
36091
|
* a replay needs several seconds of native pixels, not one frame.
|
|
36134
36092
|
*
|
|
36135
36093
|
* `ok.data` is standalone-demuxable, same as a GOP read. `ok.reachesRequestedEnd`
|
|
@@ -39797,6 +39755,7 @@ var zoneRulesCapability = {
|
|
|
39797
39755
|
*/
|
|
39798
39756
|
durability: "restored"
|
|
39799
39757
|
};
|
|
39758
|
+
SOURCE_CAPS.filter((cap) => cap !== "switch" && cap !== "motion");
|
|
39800
39759
|
/**
|
|
39801
39760
|
* Accessory device helpers — shared across drivers.
|
|
39802
39761
|
*
|
|
@@ -50089,6 +50048,11 @@ Object.freeze({
|
|
|
50089
50048
|
}
|
|
50090
50049
|
});
|
|
50091
50050
|
Object.freeze({
|
|
50051
|
+
"accessories.getStatus": [{
|
|
50052
|
+
name: "deviceId",
|
|
50053
|
+
form: "single",
|
|
50054
|
+
optional: false
|
|
50055
|
+
}],
|
|
50092
50056
|
"accessories.setChildHidden": [{
|
|
50093
50057
|
name: "childDeviceId",
|
|
50094
50058
|
form: "single",
|
|
@@ -50108,6 +50072,11 @@ Object.freeze({
|
|
|
50108
50072
|
form: "single",
|
|
50109
50073
|
optional: false
|
|
50110
50074
|
}],
|
|
50075
|
+
"airQualitySensor.getStatus": [{
|
|
50076
|
+
name: "deviceId",
|
|
50077
|
+
form: "single",
|
|
50078
|
+
optional: false
|
|
50079
|
+
}],
|
|
50111
50080
|
"alarmPanel.arm": [{
|
|
50112
50081
|
name: "deviceId",
|
|
50113
50082
|
form: "single",
|
|
@@ -50118,11 +50087,36 @@ Object.freeze({
|
|
|
50118
50087
|
form: "single",
|
|
50119
50088
|
optional: false
|
|
50120
50089
|
}],
|
|
50090
|
+
"alarmPanel.getStatus": [{
|
|
50091
|
+
name: "deviceId",
|
|
50092
|
+
form: "single",
|
|
50093
|
+
optional: false
|
|
50094
|
+
}],
|
|
50121
50095
|
"alarmPanel.trigger": [{
|
|
50122
50096
|
name: "deviceId",
|
|
50123
50097
|
form: "single",
|
|
50124
50098
|
optional: false
|
|
50125
50099
|
}],
|
|
50100
|
+
"ambientLightSensor.getStatus": [{
|
|
50101
|
+
name: "deviceId",
|
|
50102
|
+
form: "single",
|
|
50103
|
+
optional: false
|
|
50104
|
+
}],
|
|
50105
|
+
"audioAnalysis.applyDeviceSettingsPatch": [{
|
|
50106
|
+
name: "deviceId",
|
|
50107
|
+
form: "single",
|
|
50108
|
+
optional: false
|
|
50109
|
+
}],
|
|
50110
|
+
"audioAnalysis.getDeviceLiveContribution": [{
|
|
50111
|
+
name: "deviceId",
|
|
50112
|
+
form: "single",
|
|
50113
|
+
optional: false
|
|
50114
|
+
}],
|
|
50115
|
+
"audioAnalysis.getDeviceSettingsContribution": [{
|
|
50116
|
+
name: "deviceId",
|
|
50117
|
+
form: "single",
|
|
50118
|
+
optional: false
|
|
50119
|
+
}],
|
|
50126
50120
|
"audioAnalysis.resolveDeviceSettings": [{
|
|
50127
50121
|
name: "deviceId",
|
|
50128
50122
|
form: "single",
|
|
@@ -50163,16 +50157,36 @@ Object.freeze({
|
|
|
50163
50157
|
form: "single",
|
|
50164
50158
|
optional: false
|
|
50165
50159
|
}],
|
|
50160
|
+
"automationControl.getStatus": [{
|
|
50161
|
+
name: "deviceId",
|
|
50162
|
+
form: "single",
|
|
50163
|
+
optional: false
|
|
50164
|
+
}],
|
|
50166
50165
|
"automationControl.trigger": [{
|
|
50167
50166
|
name: "deviceId",
|
|
50168
50167
|
form: "single",
|
|
50169
50168
|
optional: false
|
|
50170
50169
|
}],
|
|
50170
|
+
"battery.getStatus": [{
|
|
50171
|
+
name: "deviceId",
|
|
50172
|
+
form: "single",
|
|
50173
|
+
optional: false
|
|
50174
|
+
}],
|
|
50171
50175
|
"battery.wakeForStream": [{
|
|
50172
50176
|
name: "deviceId",
|
|
50173
50177
|
form: "single",
|
|
50174
50178
|
optional: false
|
|
50175
50179
|
}],
|
|
50180
|
+
"binary.getStatus": [{
|
|
50181
|
+
name: "deviceId",
|
|
50182
|
+
form: "single",
|
|
50183
|
+
optional: false
|
|
50184
|
+
}],
|
|
50185
|
+
"brightness.getStatus": [{
|
|
50186
|
+
name: "deviceId",
|
|
50187
|
+
form: "single",
|
|
50188
|
+
optional: false
|
|
50189
|
+
}],
|
|
50176
50190
|
"brightness.setBrightness": [{
|
|
50177
50191
|
name: "deviceId",
|
|
50178
50192
|
form: "single",
|
|
@@ -50188,6 +50202,26 @@ Object.freeze({
|
|
|
50188
50202
|
form: "single",
|
|
50189
50203
|
optional: false
|
|
50190
50204
|
}],
|
|
50205
|
+
"cameraCredentials.getStatus": [{
|
|
50206
|
+
name: "deviceId",
|
|
50207
|
+
form: "single",
|
|
50208
|
+
optional: false
|
|
50209
|
+
}],
|
|
50210
|
+
"cameraGridLayout.applyDeviceSettingsPatch": [{
|
|
50211
|
+
name: "deviceId",
|
|
50212
|
+
form: "single",
|
|
50213
|
+
optional: false
|
|
50214
|
+
}],
|
|
50215
|
+
"cameraGridLayout.getDeviceLiveContribution": [{
|
|
50216
|
+
name: "deviceId",
|
|
50217
|
+
form: "single",
|
|
50218
|
+
optional: false
|
|
50219
|
+
}],
|
|
50220
|
+
"cameraGridLayout.getDeviceSettingsContribution": [{
|
|
50221
|
+
name: "deviceId",
|
|
50222
|
+
form: "single",
|
|
50223
|
+
optional: false
|
|
50224
|
+
}],
|
|
50191
50225
|
"cameraGridLayout.getLayout": [{
|
|
50192
50226
|
name: "deviceId",
|
|
50193
50227
|
form: "single",
|
|
@@ -50203,6 +50237,21 @@ Object.freeze({
|
|
|
50203
50237
|
form: "single",
|
|
50204
50238
|
optional: false
|
|
50205
50239
|
}],
|
|
50240
|
+
"cameraPipelineConfig.applyDeviceSettingsPatch": [{
|
|
50241
|
+
name: "deviceId",
|
|
50242
|
+
form: "single",
|
|
50243
|
+
optional: false
|
|
50244
|
+
}],
|
|
50245
|
+
"cameraPipelineConfig.getDeviceLiveContribution": [{
|
|
50246
|
+
name: "deviceId",
|
|
50247
|
+
form: "single",
|
|
50248
|
+
optional: false
|
|
50249
|
+
}],
|
|
50250
|
+
"cameraPipelineConfig.getDeviceSettingsContribution": [{
|
|
50251
|
+
name: "deviceId",
|
|
50252
|
+
form: "single",
|
|
50253
|
+
optional: false
|
|
50254
|
+
}],
|
|
50206
50255
|
"cameraStreams.getBrokerStreams": [{
|
|
50207
50256
|
name: "deviceId",
|
|
50208
50257
|
form: "single",
|
|
@@ -50228,6 +50277,16 @@ Object.freeze({
|
|
|
50228
50277
|
form: "single",
|
|
50229
50278
|
optional: false
|
|
50230
50279
|
}],
|
|
50280
|
+
"carbonMonoxide.getStatus": [{
|
|
50281
|
+
name: "deviceId",
|
|
50282
|
+
form: "single",
|
|
50283
|
+
optional: false
|
|
50284
|
+
}],
|
|
50285
|
+
"climateControl.getStatus": [{
|
|
50286
|
+
name: "deviceId",
|
|
50287
|
+
form: "single",
|
|
50288
|
+
optional: false
|
|
50289
|
+
}],
|
|
50231
50290
|
"climateControl.setFanMode": [{
|
|
50232
50291
|
name: "deviceId",
|
|
50233
50292
|
form: "single",
|
|
@@ -50268,16 +50327,41 @@ Object.freeze({
|
|
|
50268
50327
|
form: "single",
|
|
50269
50328
|
optional: false
|
|
50270
50329
|
}],
|
|
50330
|
+
"color.getStatus": [{
|
|
50331
|
+
name: "deviceId",
|
|
50332
|
+
form: "single",
|
|
50333
|
+
optional: false
|
|
50334
|
+
}],
|
|
50271
50335
|
"color.setColor": [{
|
|
50272
50336
|
name: "deviceId",
|
|
50273
50337
|
form: "single",
|
|
50274
50338
|
optional: false
|
|
50275
50339
|
}],
|
|
50340
|
+
"connectivity.getStatus": [{
|
|
50341
|
+
name: "deviceId",
|
|
50342
|
+
form: "single",
|
|
50343
|
+
optional: false
|
|
50344
|
+
}],
|
|
50345
|
+
"consumables.getStatus": [{
|
|
50346
|
+
name: "deviceId",
|
|
50347
|
+
form: "single",
|
|
50348
|
+
optional: false
|
|
50349
|
+
}],
|
|
50276
50350
|
"consumables.reset": [{
|
|
50277
50351
|
name: "deviceId",
|
|
50278
50352
|
form: "single",
|
|
50279
50353
|
optional: false
|
|
50280
50354
|
}],
|
|
50355
|
+
"contact.getStatus": [{
|
|
50356
|
+
name: "deviceId",
|
|
50357
|
+
form: "single",
|
|
50358
|
+
optional: false
|
|
50359
|
+
}],
|
|
50360
|
+
"control.getStatus": [{
|
|
50361
|
+
name: "deviceId",
|
|
50362
|
+
form: "single",
|
|
50363
|
+
optional: false
|
|
50364
|
+
}],
|
|
50281
50365
|
"control.setValue": [{
|
|
50282
50366
|
name: "deviceId",
|
|
50283
50367
|
form: "single",
|
|
@@ -50288,6 +50372,11 @@ Object.freeze({
|
|
|
50288
50372
|
form: "single",
|
|
50289
50373
|
optional: false
|
|
50290
50374
|
}],
|
|
50375
|
+
"cover.getStatus": [{
|
|
50376
|
+
name: "deviceId",
|
|
50377
|
+
form: "single",
|
|
50378
|
+
optional: false
|
|
50379
|
+
}],
|
|
50291
50380
|
"cover.open": [{
|
|
50292
50381
|
name: "deviceId",
|
|
50293
50382
|
form: "single",
|
|
@@ -50313,6 +50402,11 @@ Object.freeze({
|
|
|
50313
50402
|
form: "single",
|
|
50314
50403
|
optional: false
|
|
50315
50404
|
}],
|
|
50405
|
+
"dayNight.getStatus": [{
|
|
50406
|
+
name: "deviceId",
|
|
50407
|
+
form: "single",
|
|
50408
|
+
optional: false
|
|
50409
|
+
}],
|
|
50316
50410
|
"dayNight.setSettings": [{
|
|
50317
50411
|
name: "deviceId",
|
|
50318
50412
|
form: "single",
|
|
@@ -50323,11 +50417,31 @@ Object.freeze({
|
|
|
50323
50417
|
form: "single",
|
|
50324
50418
|
optional: true
|
|
50325
50419
|
}],
|
|
50420
|
+
"detectionPipeline.applyDeviceSettingsPatch": [{
|
|
50421
|
+
name: "deviceId",
|
|
50422
|
+
form: "single",
|
|
50423
|
+
optional: false
|
|
50424
|
+
}],
|
|
50425
|
+
"detectionPipeline.getDeviceLiveContribution": [{
|
|
50426
|
+
name: "deviceId",
|
|
50427
|
+
form: "single",
|
|
50428
|
+
optional: false
|
|
50429
|
+
}],
|
|
50430
|
+
"detectionPipeline.getDeviceSettingsContribution": [{
|
|
50431
|
+
name: "deviceId",
|
|
50432
|
+
form: "single",
|
|
50433
|
+
optional: false
|
|
50434
|
+
}],
|
|
50326
50435
|
"deviceAdminLink.getAdminLink": [{
|
|
50327
50436
|
name: "deviceId",
|
|
50328
50437
|
form: "single",
|
|
50329
50438
|
optional: false
|
|
50330
50439
|
}],
|
|
50440
|
+
"deviceAdoption.getStatus": [{
|
|
50441
|
+
name: "deviceId",
|
|
50442
|
+
form: "single",
|
|
50443
|
+
optional: false
|
|
50444
|
+
}],
|
|
50331
50445
|
"deviceAdoption.release": [{
|
|
50332
50446
|
name: "camDeviceId",
|
|
50333
50447
|
form: "single",
|
|
@@ -50343,6 +50457,11 @@ Object.freeze({
|
|
|
50343
50457
|
form: "single",
|
|
50344
50458
|
optional: false
|
|
50345
50459
|
}],
|
|
50460
|
+
"deviceDiscovery.getStatus": [{
|
|
50461
|
+
name: "deviceId",
|
|
50462
|
+
form: "single",
|
|
50463
|
+
optional: false
|
|
50464
|
+
}],
|
|
50346
50465
|
"deviceDiscovery.listDiscovered": [{
|
|
50347
50466
|
name: "deviceId",
|
|
50348
50467
|
form: "single",
|
|
@@ -50362,6 +50481,21 @@ Object.freeze({
|
|
|
50362
50481
|
form: "single",
|
|
50363
50482
|
optional: false
|
|
50364
50483
|
}],
|
|
50484
|
+
"deviceExport.applyDeviceSettingsPatch": [{
|
|
50485
|
+
name: "deviceId",
|
|
50486
|
+
form: "single",
|
|
50487
|
+
optional: false
|
|
50488
|
+
}],
|
|
50489
|
+
"deviceExport.getDeviceLiveContribution": [{
|
|
50490
|
+
name: "deviceId",
|
|
50491
|
+
form: "single",
|
|
50492
|
+
optional: false
|
|
50493
|
+
}],
|
|
50494
|
+
"deviceExport.getDeviceSettingsContribution": [{
|
|
50495
|
+
name: "deviceId",
|
|
50496
|
+
form: "single",
|
|
50497
|
+
optional: false
|
|
50498
|
+
}],
|
|
50365
50499
|
"deviceExtension.listCandidates": [{
|
|
50366
50500
|
name: "deviceId",
|
|
50367
50501
|
form: "single",
|
|
@@ -50710,6 +50844,26 @@ Object.freeze({
|
|
|
50710
50844
|
form: "single",
|
|
50711
50845
|
optional: false
|
|
50712
50846
|
}],
|
|
50847
|
+
"deviceStatus.getStatus": [{
|
|
50848
|
+
name: "deviceId",
|
|
50849
|
+
form: "single",
|
|
50850
|
+
optional: false
|
|
50851
|
+
}],
|
|
50852
|
+
"doorbell.getStatus": [{
|
|
50853
|
+
name: "deviceId",
|
|
50854
|
+
form: "single",
|
|
50855
|
+
optional: false
|
|
50856
|
+
}],
|
|
50857
|
+
"enumSensor.getStatus": [{
|
|
50858
|
+
name: "deviceId",
|
|
50859
|
+
form: "single",
|
|
50860
|
+
optional: false
|
|
50861
|
+
}],
|
|
50862
|
+
"eventEmitter.getStatus": [{
|
|
50863
|
+
name: "deviceId",
|
|
50864
|
+
form: "single",
|
|
50865
|
+
optional: false
|
|
50866
|
+
}],
|
|
50713
50867
|
"faceGallery.getFaceByTrack": [{
|
|
50714
50868
|
name: "deviceId",
|
|
50715
50869
|
form: "single",
|
|
@@ -50724,6 +50878,11 @@ Object.freeze({
|
|
|
50724
50878
|
form: "array",
|
|
50725
50879
|
optional: true
|
|
50726
50880
|
}],
|
|
50881
|
+
"fanControl.getStatus": [{
|
|
50882
|
+
name: "deviceId",
|
|
50883
|
+
form: "single",
|
|
50884
|
+
optional: false
|
|
50885
|
+
}],
|
|
50727
50886
|
"fanControl.setDirection": [{
|
|
50728
50887
|
name: "deviceId",
|
|
50729
50888
|
form: "single",
|
|
@@ -50744,6 +50903,26 @@ Object.freeze({
|
|
|
50744
50903
|
form: "single",
|
|
50745
50904
|
optional: false
|
|
50746
50905
|
}],
|
|
50906
|
+
"featureProbe.getStatus": [{
|
|
50907
|
+
name: "deviceId",
|
|
50908
|
+
form: "single",
|
|
50909
|
+
optional: false
|
|
50910
|
+
}],
|
|
50911
|
+
"flood.getStatus": [{
|
|
50912
|
+
name: "deviceId",
|
|
50913
|
+
form: "single",
|
|
50914
|
+
optional: false
|
|
50915
|
+
}],
|
|
50916
|
+
"gas.getStatus": [{
|
|
50917
|
+
name: "deviceId",
|
|
50918
|
+
form: "single",
|
|
50919
|
+
optional: false
|
|
50920
|
+
}],
|
|
50921
|
+
"humidifier.getStatus": [{
|
|
50922
|
+
name: "deviceId",
|
|
50923
|
+
form: "single",
|
|
50924
|
+
optional: false
|
|
50925
|
+
}],
|
|
50747
50926
|
"humidifier.setMode": [{
|
|
50748
50927
|
name: "deviceId",
|
|
50749
50928
|
form: "single",
|
|
@@ -50759,11 +50938,26 @@ Object.freeze({
|
|
|
50759
50938
|
form: "single",
|
|
50760
50939
|
optional: false
|
|
50761
50940
|
}],
|
|
50941
|
+
"humiditySensor.getStatus": [{
|
|
50942
|
+
name: "deviceId",
|
|
50943
|
+
form: "single",
|
|
50944
|
+
optional: false
|
|
50945
|
+
}],
|
|
50946
|
+
"image.getStatus": [{
|
|
50947
|
+
name: "deviceId",
|
|
50948
|
+
form: "single",
|
|
50949
|
+
optional: false
|
|
50950
|
+
}],
|
|
50762
50951
|
"imageSettings.getOptions": [{
|
|
50763
50952
|
name: "deviceId",
|
|
50764
50953
|
form: "single",
|
|
50765
50954
|
optional: false
|
|
50766
50955
|
}],
|
|
50956
|
+
"imageSettings.getStatus": [{
|
|
50957
|
+
name: "deviceId",
|
|
50958
|
+
form: "single",
|
|
50959
|
+
optional: false
|
|
50960
|
+
}],
|
|
50767
50961
|
"imageSettings.setSettings": [{
|
|
50768
50962
|
name: "deviceId",
|
|
50769
50963
|
form: "single",
|
|
@@ -50774,6 +50968,11 @@ Object.freeze({
|
|
|
50774
50968
|
form: "single",
|
|
50775
50969
|
optional: false
|
|
50776
50970
|
}],
|
|
50971
|
+
"intercom.getStatus": [{
|
|
50972
|
+
name: "deviceId",
|
|
50973
|
+
form: "single",
|
|
50974
|
+
optional: false
|
|
50975
|
+
}],
|
|
50777
50976
|
"intercom.handleAnswer": [{
|
|
50778
50977
|
name: "deviceId",
|
|
50779
50978
|
form: "single",
|
|
@@ -50804,6 +51003,11 @@ Object.freeze({
|
|
|
50804
51003
|
form: "single",
|
|
50805
51004
|
optional: false
|
|
50806
51005
|
}],
|
|
51006
|
+
"lawnMowerControl.getStatus": [{
|
|
51007
|
+
name: "deviceId",
|
|
51008
|
+
form: "single",
|
|
51009
|
+
optional: false
|
|
51010
|
+
}],
|
|
50807
51011
|
"lawnMowerControl.pause": [{
|
|
50808
51012
|
name: "deviceId",
|
|
50809
51013
|
form: "single",
|
|
@@ -50814,6 +51018,11 @@ Object.freeze({
|
|
|
50814
51018
|
form: "single",
|
|
50815
51019
|
optional: false
|
|
50816
51020
|
}],
|
|
51021
|
+
"lockControl.getStatus": [{
|
|
51022
|
+
name: "deviceId",
|
|
51023
|
+
form: "single",
|
|
51024
|
+
optional: false
|
|
51025
|
+
}],
|
|
50817
51026
|
"lockControl.lock": [{
|
|
50818
51027
|
name: "deviceId",
|
|
50819
51028
|
form: "single",
|
|
@@ -50829,6 +51038,11 @@ Object.freeze({
|
|
|
50829
51038
|
form: "single",
|
|
50830
51039
|
optional: false
|
|
50831
51040
|
}],
|
|
51041
|
+
"mediaPlayer.getStatus": [{
|
|
51042
|
+
name: "deviceId",
|
|
51043
|
+
form: "single",
|
|
51044
|
+
optional: false
|
|
51045
|
+
}],
|
|
50832
51046
|
"mediaPlayer.next": [{
|
|
50833
51047
|
name: "deviceId",
|
|
50834
51048
|
form: "single",
|
|
@@ -50889,6 +51103,11 @@ Object.freeze({
|
|
|
50889
51103
|
form: "single",
|
|
50890
51104
|
optional: false
|
|
50891
51105
|
}],
|
|
51106
|
+
"motion.getStatus": [{
|
|
51107
|
+
name: "deviceId",
|
|
51108
|
+
form: "single",
|
|
51109
|
+
optional: false
|
|
51110
|
+
}],
|
|
50892
51111
|
"motion.isDetected": [{
|
|
50893
51112
|
name: "deviceId",
|
|
50894
51113
|
form: "single",
|
|
@@ -50899,11 +51118,31 @@ Object.freeze({
|
|
|
50899
51118
|
form: "single",
|
|
50900
51119
|
optional: false
|
|
50901
51120
|
}],
|
|
51121
|
+
"motionDetection.applyDeviceSettingsPatch": [{
|
|
51122
|
+
name: "deviceId",
|
|
51123
|
+
form: "single",
|
|
51124
|
+
optional: false
|
|
51125
|
+
}],
|
|
51126
|
+
"motionDetection.getDeviceLiveContribution": [{
|
|
51127
|
+
name: "deviceId",
|
|
51128
|
+
form: "single",
|
|
51129
|
+
optional: false
|
|
51130
|
+
}],
|
|
51131
|
+
"motionDetection.getDeviceSettingsContribution": [{
|
|
51132
|
+
name: "deviceId",
|
|
51133
|
+
form: "single",
|
|
51134
|
+
optional: false
|
|
51135
|
+
}],
|
|
50902
51136
|
"motionDetection.removeCamera": [{
|
|
50903
51137
|
name: "deviceId",
|
|
50904
51138
|
form: "single",
|
|
50905
51139
|
optional: false
|
|
50906
51140
|
}],
|
|
51141
|
+
"motionTrigger.getStatus": [{
|
|
51142
|
+
name: "deviceId",
|
|
51143
|
+
form: "single",
|
|
51144
|
+
optional: false
|
|
51145
|
+
}],
|
|
50907
51146
|
"motionTrigger.setMotionTrigger": [{
|
|
50908
51147
|
name: "deviceId",
|
|
50909
51148
|
form: "single",
|
|
@@ -50914,6 +51153,11 @@ Object.freeze({
|
|
|
50914
51153
|
form: "single",
|
|
50915
51154
|
optional: false
|
|
50916
51155
|
}],
|
|
51156
|
+
"motionZones.getStatus": [{
|
|
51157
|
+
name: "deviceId",
|
|
51158
|
+
form: "single",
|
|
51159
|
+
optional: false
|
|
51160
|
+
}],
|
|
50917
51161
|
"motionZones.setZone": [{
|
|
50918
51162
|
name: "deviceId",
|
|
50919
51163
|
form: "single",
|
|
@@ -50924,6 +51168,11 @@ Object.freeze({
|
|
|
50924
51168
|
form: "single",
|
|
50925
51169
|
optional: false
|
|
50926
51170
|
}],
|
|
51171
|
+
"nativeObjectDetection.getStatus": [{
|
|
51172
|
+
name: "deviceId",
|
|
51173
|
+
form: "single",
|
|
51174
|
+
optional: false
|
|
51175
|
+
}],
|
|
50927
51176
|
"nativeObjectDetection.setEnabled": [{
|
|
50928
51177
|
name: "deviceId",
|
|
50929
51178
|
form: "single",
|
|
@@ -50939,6 +51188,11 @@ Object.freeze({
|
|
|
50939
51188
|
form: "single",
|
|
50940
51189
|
optional: false
|
|
50941
51190
|
}],
|
|
51191
|
+
"navigation.getStatus": [{
|
|
51192
|
+
name: "deviceId",
|
|
51193
|
+
form: "single",
|
|
51194
|
+
optional: false
|
|
51195
|
+
}],
|
|
50942
51196
|
"navigation.goToPoint": [{
|
|
50943
51197
|
name: "deviceId",
|
|
50944
51198
|
form: "single",
|
|
@@ -50984,6 +51238,11 @@ Object.freeze({
|
|
|
50984
51238
|
form: "single",
|
|
50985
51239
|
optional: false
|
|
50986
51240
|
}],
|
|
51241
|
+
"networkLink.getStatus": [{
|
|
51242
|
+
name: "deviceId",
|
|
51243
|
+
form: "single",
|
|
51244
|
+
optional: false
|
|
51245
|
+
}],
|
|
50987
51246
|
"networkQuality.getDeviceStats": [{
|
|
50988
51247
|
name: "deviceId",
|
|
50989
51248
|
form: "single",
|
|
@@ -51009,11 +51268,26 @@ Object.freeze({
|
|
|
51009
51268
|
form: "single",
|
|
51010
51269
|
optional: false
|
|
51011
51270
|
}],
|
|
51271
|
+
"notifier.getStatus": [{
|
|
51272
|
+
name: "deviceId",
|
|
51273
|
+
form: "single",
|
|
51274
|
+
optional: false
|
|
51275
|
+
}],
|
|
51012
51276
|
"notifier.send": [{
|
|
51013
51277
|
name: "deviceId",
|
|
51014
51278
|
form: "single",
|
|
51015
51279
|
optional: false
|
|
51016
51280
|
}],
|
|
51281
|
+
"numericSensor.getStatus": [{
|
|
51282
|
+
name: "deviceId",
|
|
51283
|
+
form: "single",
|
|
51284
|
+
optional: false
|
|
51285
|
+
}],
|
|
51286
|
+
"osd.getStatus": [{
|
|
51287
|
+
name: "deviceId",
|
|
51288
|
+
form: "single",
|
|
51289
|
+
optional: false
|
|
51290
|
+
}],
|
|
51017
51291
|
"osd.setOverlay": [{
|
|
51018
51292
|
name: "deviceId",
|
|
51019
51293
|
form: "single",
|
|
@@ -51073,6 +51347,11 @@ Object.freeze({
|
|
|
51073
51347
|
form: "single",
|
|
51074
51348
|
optional: false
|
|
51075
51349
|
}],
|
|
51350
|
+
"petFeeder.getStatus": [{
|
|
51351
|
+
name: "deviceId",
|
|
51352
|
+
form: "single",
|
|
51353
|
+
optional: false
|
|
51354
|
+
}],
|
|
51076
51355
|
"petFeeder.markFoodReplenished": [{
|
|
51077
51356
|
name: "deviceId",
|
|
51078
51357
|
form: "single",
|
|
@@ -51108,6 +51387,11 @@ Object.freeze({
|
|
|
51108
51387
|
form: "single",
|
|
51109
51388
|
optional: false
|
|
51110
51389
|
}],
|
|
51390
|
+
"pipelineAnalytics.applyDeviceSettingsPatch": [{
|
|
51391
|
+
name: "deviceId",
|
|
51392
|
+
form: "single",
|
|
51393
|
+
optional: false
|
|
51394
|
+
}],
|
|
51111
51395
|
"pipelineAnalytics.clearTrackRelation": [{
|
|
51112
51396
|
name: "deviceId",
|
|
51113
51397
|
form: "single",
|
|
@@ -51148,6 +51432,16 @@ Object.freeze({
|
|
|
51148
51432
|
form: "single",
|
|
51149
51433
|
optional: false
|
|
51150
51434
|
}],
|
|
51435
|
+
"pipelineAnalytics.getDeviceLiveContribution": [{
|
|
51436
|
+
name: "deviceId",
|
|
51437
|
+
form: "single",
|
|
51438
|
+
optional: false
|
|
51439
|
+
}],
|
|
51440
|
+
"pipelineAnalytics.getDeviceSettingsContribution": [{
|
|
51441
|
+
name: "deviceId",
|
|
51442
|
+
form: "single",
|
|
51443
|
+
optional: false
|
|
51444
|
+
}],
|
|
51151
51445
|
"pipelineAnalytics.getEventDensity": [{
|
|
51152
51446
|
name: "deviceId",
|
|
51153
51447
|
form: "single",
|
|
@@ -51363,6 +51657,11 @@ Object.freeze({
|
|
|
51363
51657
|
form: "single",
|
|
51364
51658
|
optional: true
|
|
51365
51659
|
}],
|
|
51660
|
+
"pipelineOrchestrator.applyDeviceSettingsPatch": [{
|
|
51661
|
+
name: "deviceId",
|
|
51662
|
+
form: "single",
|
|
51663
|
+
optional: false
|
|
51664
|
+
}],
|
|
51366
51665
|
"pipelineOrchestrator.assignAudio": [{
|
|
51367
51666
|
name: "deviceId",
|
|
51368
51667
|
form: "single",
|
|
@@ -51408,6 +51707,16 @@ Object.freeze({
|
|
|
51408
51707
|
form: "single",
|
|
51409
51708
|
optional: false
|
|
51410
51709
|
}],
|
|
51710
|
+
"pipelineOrchestrator.getDeviceLiveContribution": [{
|
|
51711
|
+
name: "deviceId",
|
|
51712
|
+
form: "single",
|
|
51713
|
+
optional: false
|
|
51714
|
+
}],
|
|
51715
|
+
"pipelineOrchestrator.getDeviceSettingsContribution": [{
|
|
51716
|
+
name: "deviceId",
|
|
51717
|
+
form: "single",
|
|
51718
|
+
optional: false
|
|
51719
|
+
}],
|
|
51411
51720
|
"pipelineOrchestrator.getPipelineAssignment": [{
|
|
51412
51721
|
name: "deviceId",
|
|
51413
51722
|
form: "single",
|
|
@@ -51528,11 +51837,31 @@ Object.freeze({
|
|
|
51528
51837
|
form: "single",
|
|
51529
51838
|
optional: true
|
|
51530
51839
|
}],
|
|
51840
|
+
"powerMeter.getStatus": [{
|
|
51841
|
+
name: "deviceId",
|
|
51842
|
+
form: "single",
|
|
51843
|
+
optional: false
|
|
51844
|
+
}],
|
|
51845
|
+
"presence.getStatus": [{
|
|
51846
|
+
name: "deviceId",
|
|
51847
|
+
form: "single",
|
|
51848
|
+
optional: false
|
|
51849
|
+
}],
|
|
51850
|
+
"pressureSensor.getStatus": [{
|
|
51851
|
+
name: "deviceId",
|
|
51852
|
+
form: "single",
|
|
51853
|
+
optional: false
|
|
51854
|
+
}],
|
|
51531
51855
|
"privacyMask.getOptions": [{
|
|
51532
51856
|
name: "deviceId",
|
|
51533
51857
|
form: "single",
|
|
51534
51858
|
optional: false
|
|
51535
51859
|
}],
|
|
51860
|
+
"privacyMask.getStatus": [{
|
|
51861
|
+
name: "deviceId",
|
|
51862
|
+
form: "single",
|
|
51863
|
+
optional: false
|
|
51864
|
+
}],
|
|
51536
51865
|
"privacyMask.setAudioEnabled": [{
|
|
51537
51866
|
name: "deviceId",
|
|
51538
51867
|
form: "single",
|
|
@@ -51583,6 +51912,11 @@ Object.freeze({
|
|
|
51583
51912
|
form: "single",
|
|
51584
51913
|
optional: false
|
|
51585
51914
|
}],
|
|
51915
|
+
"ptz.getStatus": [{
|
|
51916
|
+
name: "deviceId",
|
|
51917
|
+
form: "single",
|
|
51918
|
+
optional: false
|
|
51919
|
+
}],
|
|
51586
51920
|
"ptz.goHome": [{
|
|
51587
51921
|
name: "deviceId",
|
|
51588
51922
|
form: "single",
|
|
@@ -51673,6 +52007,11 @@ Object.freeze({
|
|
|
51673
52007
|
form: "single",
|
|
51674
52008
|
optional: false
|
|
51675
52009
|
}],
|
|
52010
|
+
"recordingArchive.applyDeviceSettingsPatch": [{
|
|
52011
|
+
name: "deviceId",
|
|
52012
|
+
form: "single",
|
|
52013
|
+
optional: false
|
|
52014
|
+
}],
|
|
51676
52015
|
"recordingArchive.deleteFootprint": [{
|
|
51677
52016
|
name: "deviceId",
|
|
51678
52017
|
form: "single",
|
|
@@ -51693,6 +52032,21 @@ Object.freeze({
|
|
|
51693
52032
|
form: "single",
|
|
51694
52033
|
optional: false
|
|
51695
52034
|
}],
|
|
52035
|
+
"recordingArchive.getDeviceLiveContribution": [{
|
|
52036
|
+
name: "deviceId",
|
|
52037
|
+
form: "single",
|
|
52038
|
+
optional: false
|
|
52039
|
+
}],
|
|
52040
|
+
"recordingArchive.getDeviceSettingsContribution": [{
|
|
52041
|
+
name: "deviceId",
|
|
52042
|
+
form: "single",
|
|
52043
|
+
optional: false
|
|
52044
|
+
}],
|
|
52045
|
+
"recordingArchive.getStatus": [{
|
|
52046
|
+
name: "deviceId",
|
|
52047
|
+
form: "single",
|
|
52048
|
+
optional: false
|
|
52049
|
+
}],
|
|
51696
52050
|
"recordingArchive.listOpsLog": [{
|
|
51697
52051
|
name: "deviceId",
|
|
51698
52052
|
form: "single",
|
|
@@ -51778,6 +52132,11 @@ Object.freeze({
|
|
|
51778
52132
|
form: "single",
|
|
51779
52133
|
optional: false
|
|
51780
52134
|
}],
|
|
52135
|
+
"recordingOnboard.getStatus": [{
|
|
52136
|
+
name: "deviceId",
|
|
52137
|
+
form: "single",
|
|
52138
|
+
optional: false
|
|
52139
|
+
}],
|
|
51781
52140
|
"recordingOnboard.setSettings": [{
|
|
51782
52141
|
name: "deviceId",
|
|
51783
52142
|
form: "single",
|
|
@@ -51808,6 +52167,11 @@ Object.freeze({
|
|
|
51808
52167
|
form: "single",
|
|
51809
52168
|
optional: false
|
|
51810
52169
|
}],
|
|
52170
|
+
"sceneMonitor.getStatus": [{
|
|
52171
|
+
name: "deviceId",
|
|
52172
|
+
form: "single",
|
|
52173
|
+
optional: false
|
|
52174
|
+
}],
|
|
51811
52175
|
"sceneMonitor.listScenes": [{
|
|
51812
52176
|
name: "deviceId",
|
|
51813
52177
|
form: "single",
|
|
@@ -51833,6 +52197,11 @@ Object.freeze({
|
|
|
51833
52197
|
form: "single",
|
|
51834
52198
|
optional: false
|
|
51835
52199
|
}],
|
|
52200
|
+
"scriptRunner.getStatus": [{
|
|
52201
|
+
name: "deviceId",
|
|
52202
|
+
form: "single",
|
|
52203
|
+
optional: false
|
|
52204
|
+
}],
|
|
51836
52205
|
"scriptRunner.run": [{
|
|
51837
52206
|
name: "deviceId",
|
|
51838
52207
|
form: "single",
|
|
@@ -51843,11 +52212,31 @@ Object.freeze({
|
|
|
51843
52212
|
form: "single",
|
|
51844
52213
|
optional: false
|
|
51845
52214
|
}],
|
|
52215
|
+
"smoke.getStatus": [{
|
|
52216
|
+
name: "deviceId",
|
|
52217
|
+
form: "single",
|
|
52218
|
+
optional: false
|
|
52219
|
+
}],
|
|
52220
|
+
"snapshot.applyDeviceSettingsPatch": [{
|
|
52221
|
+
name: "deviceId",
|
|
52222
|
+
form: "single",
|
|
52223
|
+
optional: false
|
|
52224
|
+
}],
|
|
51846
52225
|
"snapshot.getDebugState": [{
|
|
51847
52226
|
name: "deviceId",
|
|
51848
52227
|
form: "single",
|
|
51849
52228
|
optional: false
|
|
51850
52229
|
}],
|
|
52230
|
+
"snapshot.getDeviceLiveContribution": [{
|
|
52231
|
+
name: "deviceId",
|
|
52232
|
+
form: "single",
|
|
52233
|
+
optional: false
|
|
52234
|
+
}],
|
|
52235
|
+
"snapshot.getDeviceSettingsContribution": [{
|
|
52236
|
+
name: "deviceId",
|
|
52237
|
+
form: "single",
|
|
52238
|
+
optional: false
|
|
52239
|
+
}],
|
|
51851
52240
|
"snapshot.getSnapshot": [{
|
|
51852
52241
|
name: "deviceId",
|
|
51853
52242
|
form: "single",
|
|
@@ -51864,6 +52253,11 @@ Object.freeze({
|
|
|
51864
52253
|
form: "array",
|
|
51865
52254
|
optional: false
|
|
51866
52255
|
}],
|
|
52256
|
+
"snapshot.getStatus": [{
|
|
52257
|
+
name: "deviceId",
|
|
52258
|
+
form: "single",
|
|
52259
|
+
optional: false
|
|
52260
|
+
}],
|
|
51867
52261
|
"snapshot.invalidateCache": [{
|
|
51868
52262
|
name: "deviceId",
|
|
51869
52263
|
form: "single",
|
|
@@ -51874,6 +52268,11 @@ Object.freeze({
|
|
|
51874
52268
|
form: "single",
|
|
51875
52269
|
optional: false
|
|
51876
52270
|
}],
|
|
52271
|
+
"streamBroker.applyDeviceSettingsPatch": [{
|
|
52272
|
+
name: "deviceId",
|
|
52273
|
+
form: "single",
|
|
52274
|
+
optional: false
|
|
52275
|
+
}],
|
|
51877
52276
|
"streamBroker.assignProfile": [{
|
|
51878
52277
|
name: "deviceId",
|
|
51879
52278
|
form: "single",
|
|
@@ -51889,6 +52288,16 @@ Object.freeze({
|
|
|
51889
52288
|
form: "single",
|
|
51890
52289
|
optional: false
|
|
51891
52290
|
}],
|
|
52291
|
+
"streamBroker.getDeviceLiveContribution": [{
|
|
52292
|
+
name: "deviceId",
|
|
52293
|
+
form: "single",
|
|
52294
|
+
optional: false
|
|
52295
|
+
}],
|
|
52296
|
+
"streamBroker.getDeviceSettingsContribution": [{
|
|
52297
|
+
name: "deviceId",
|
|
52298
|
+
form: "single",
|
|
52299
|
+
optional: false
|
|
52300
|
+
}],
|
|
51892
52301
|
"streamBroker.getStreamWithCodec": [{
|
|
51893
52302
|
name: "deviceId",
|
|
51894
52303
|
form: "single",
|
|
@@ -51949,16 +52358,46 @@ Object.freeze({
|
|
|
51949
52358
|
form: "single",
|
|
51950
52359
|
optional: false
|
|
51951
52360
|
}],
|
|
52361
|
+
"streamParams.getStatus": [{
|
|
52362
|
+
name: "deviceId",
|
|
52363
|
+
form: "single",
|
|
52364
|
+
optional: false
|
|
52365
|
+
}],
|
|
51952
52366
|
"streamParams.setProfile": [{
|
|
51953
52367
|
name: "deviceId",
|
|
51954
52368
|
form: "single",
|
|
51955
52369
|
optional: false
|
|
51956
52370
|
}],
|
|
52371
|
+
"switch.getStatus": [{
|
|
52372
|
+
name: "deviceId",
|
|
52373
|
+
form: "single",
|
|
52374
|
+
optional: false
|
|
52375
|
+
}],
|
|
51957
52376
|
"switch.setState": [{
|
|
51958
52377
|
name: "deviceId",
|
|
51959
52378
|
form: "single",
|
|
51960
52379
|
optional: false
|
|
51961
52380
|
}],
|
|
52381
|
+
"tamper.getStatus": [{
|
|
52382
|
+
name: "deviceId",
|
|
52383
|
+
form: "single",
|
|
52384
|
+
optional: false
|
|
52385
|
+
}],
|
|
52386
|
+
"temperatureSensor.getStatus": [{
|
|
52387
|
+
name: "deviceId",
|
|
52388
|
+
form: "single",
|
|
52389
|
+
optional: false
|
|
52390
|
+
}],
|
|
52391
|
+
"update.getStatus": [{
|
|
52392
|
+
name: "deviceId",
|
|
52393
|
+
form: "single",
|
|
52394
|
+
optional: false
|
|
52395
|
+
}],
|
|
52396
|
+
"vacuumControl.getStatus": [{
|
|
52397
|
+
name: "deviceId",
|
|
52398
|
+
form: "single",
|
|
52399
|
+
optional: false
|
|
52400
|
+
}],
|
|
51962
52401
|
"vacuumControl.locate": [{
|
|
51963
52402
|
name: "deviceId",
|
|
51964
52403
|
form: "single",
|
|
@@ -51994,6 +52433,11 @@ Object.freeze({
|
|
|
51994
52433
|
form: "single",
|
|
51995
52434
|
optional: false
|
|
51996
52435
|
}],
|
|
52436
|
+
"valve.getStatus": [{
|
|
52437
|
+
name: "deviceId",
|
|
52438
|
+
form: "single",
|
|
52439
|
+
optional: false
|
|
52440
|
+
}],
|
|
51997
52441
|
"valve.open": [{
|
|
51998
52442
|
name: "deviceId",
|
|
51999
52443
|
form: "single",
|
|
@@ -52009,6 +52453,11 @@ Object.freeze({
|
|
|
52009
52453
|
form: "single",
|
|
52010
52454
|
optional: false
|
|
52011
52455
|
}],
|
|
52456
|
+
"vibration.getStatus": [{
|
|
52457
|
+
name: "deviceId",
|
|
52458
|
+
form: "single",
|
|
52459
|
+
optional: false
|
|
52460
|
+
}],
|
|
52012
52461
|
"videoclips.dialClipStream": [{
|
|
52013
52462
|
name: "deviceId",
|
|
52014
52463
|
form: "single",
|
|
@@ -52044,6 +52493,11 @@ Object.freeze({
|
|
|
52044
52493
|
form: "single",
|
|
52045
52494
|
optional: false
|
|
52046
52495
|
}],
|
|
52496
|
+
"waterHeater.getStatus": [{
|
|
52497
|
+
name: "deviceId",
|
|
52498
|
+
form: "single",
|
|
52499
|
+
optional: false
|
|
52500
|
+
}],
|
|
52047
52501
|
"waterHeater.setAway": [{
|
|
52048
52502
|
name: "deviceId",
|
|
52049
52503
|
form: "single",
|
|
@@ -52059,6 +52513,11 @@ Object.freeze({
|
|
|
52059
52513
|
form: "single",
|
|
52060
52514
|
optional: false
|
|
52061
52515
|
}],
|
|
52516
|
+
"weather.getStatus": [{
|
|
52517
|
+
name: "deviceId",
|
|
52518
|
+
form: "single",
|
|
52519
|
+
optional: false
|
|
52520
|
+
}],
|
|
52062
52521
|
"webrtcSession.addIceCandidate": [{
|
|
52063
52522
|
name: "deviceId",
|
|
52064
52523
|
form: "single",
|
|
@@ -52796,7 +53255,7 @@ var PreviewTextField = string().max(200);
|
|
|
52796
53255
|
* Whether the notification's preview is a STILL or a short animation.
|
|
52797
53256
|
*
|
|
52798
53257
|
* The operator's ask, verbatim: *"inviato come gif o video (come per le altre
|
|
52799
|
-
* rule)"* — the other rules already offer an animated preview, and a ten-hour
|
|
53258
|
+
* rule)"* [sent as a gif or video (as for the other rules)] — the other rules already offer an animated preview, and a ten-hour
|
|
52800
53259
|
* night reads better as three seconds of motion than as one frame of it. Both
|
|
52801
53260
|
* modes get the SAME treatment (blurred frame, large centred title); `'gif'`
|
|
52802
53261
|
* simply applies it to a dozen frames sampled across the render and assembles
|