@camstack/addon-provider-reolink 1.2.202 → 1.2.204
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 +150 -186
- package/dist/addon.mjs +150 -186
- package/i18n/en.json +30 -70
- package/i18n/it.json +30 -70
- package/package.json +1 -1
package/dist/addon.mjs
CHANGED
|
@@ -28,7 +28,7 @@ import { URL as URL$1 } from "url";
|
|
|
28
28
|
import { spawn as spawn$1 } from "node:child_process";
|
|
29
29
|
import os, { tmpdir } from "node:os";
|
|
30
30
|
import { createReadStream } from "node:fs";
|
|
31
|
-
//#region ../types/dist/event-category-
|
|
31
|
+
//#region ../types/dist/event-category-BfJwUd2S.mjs
|
|
32
32
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
33
33
|
EventCategory["SystemBoot"] = "system.boot";
|
|
34
34
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -345,6 +345,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
345
345
|
*/
|
|
346
346
|
EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
|
|
347
347
|
/**
|
|
348
|
+
* A camera's motion source has fired constantly with no subject for an hour
|
|
349
|
+
* (motion duty or session count over the bar, zero detections) — it is not
|
|
350
|
+
* blind, its motion zones or sensitivity want tuning (D907). Paired with
|
|
351
|
+
* {@link PipelineMotionCalm}.
|
|
352
|
+
*/
|
|
353
|
+
EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
|
|
354
|
+
/** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
|
|
355
|
+
EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
|
|
356
|
+
/**
|
|
348
357
|
* Per-camera pipeline config was mutated by the orchestrator
|
|
349
358
|
* (3-level settings change via `setAgentAddonDefaults` /
|
|
350
359
|
* `setCameraStepToggle` / `setCameraPipelineForAgent` or a
|
|
@@ -5451,7 +5460,7 @@ var ZodIssueCode = {
|
|
|
5451
5460
|
var ZodFirstPartyTypeKind;
|
|
5452
5461
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5453
5462
|
//#endregion
|
|
5454
|
-
//#region ../types/dist/sleep-
|
|
5463
|
+
//#region ../types/dist/sleep-DJFUfKvA.mjs
|
|
5455
5464
|
/**
|
|
5456
5465
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5457
5466
|
* window to float samples (D455).
|
|
@@ -7984,7 +7993,7 @@ var EntryDescriptorSchema = object({
|
|
|
7984
7993
|
/** JSON Schema of the entry body; `secret: true` marks a password field. */
|
|
7985
7994
|
fields: record(string(), unknown())
|
|
7986
7995
|
}).strict();
|
|
7987
|
-
/** What crosses the wire
|
|
7996
|
+
/** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
|
|
7988
7997
|
var RecordKindDeclarationSchema = object({
|
|
7989
7998
|
database: _enum(RECORD_DATABASES).default("settings"),
|
|
7990
7999
|
class: _enum(RECORD_CLASSES),
|
|
@@ -8003,14 +8012,6 @@ var RecordKindDeclarationSchema = object({
|
|
|
8003
8012
|
secretPaths: array(string().min(1)).default([]),
|
|
8004
8013
|
/** The id key of each array that carries a secret (`{ headers: 'name' }`). */
|
|
8005
8014
|
secretArrayKeys: record(string(), string()).default({}),
|
|
8006
|
-
/**
|
|
8007
|
-
* RETIRED (D900): the legacy table a kind adopted from during the records
|
|
8008
|
-
* migration. Nothing declares it any more and nothing reads it; the schema
|
|
8009
|
-
* still ACCEPTS it because the catalog rows the migration wrote carry it
|
|
8010
|
-
* (an orphaned kind is never redeclared) and an addon built before the
|
|
8011
|
-
* removal still sends it. Never set it.
|
|
8012
|
-
*/
|
|
8013
|
-
adoptsFrom: string().min(1).optional(),
|
|
8014
8015
|
/** Kinds that must agree through `transact` sit in one file under one family name. */
|
|
8015
8016
|
transactFamily: string().min(1).optional(),
|
|
8016
8017
|
entry: EntryDescriptorSchema.optional()
|
|
@@ -13302,17 +13303,6 @@ object({
|
|
|
13302
13303
|
createdAt: number(),
|
|
13303
13304
|
updatedAt: number()
|
|
13304
13305
|
});
|
|
13305
|
-
object({
|
|
13306
|
-
id: string(),
|
|
13307
|
-
label: string(),
|
|
13308
|
-
isAdmin: boolean().default(false),
|
|
13309
|
-
allowedProviders: AllowedProviderSchema,
|
|
13310
|
-
allowedDevices: AllowedDevicesSchema,
|
|
13311
|
-
tokenHash: string(),
|
|
13312
|
-
tokenPrefix: string(),
|
|
13313
|
-
createdAt: number(),
|
|
13314
|
-
lastUsedAt: number().optional()
|
|
13315
|
-
});
|
|
13316
13306
|
object({
|
|
13317
13307
|
id: string(),
|
|
13318
13308
|
userId: string(),
|
|
@@ -17294,16 +17284,36 @@ var RecordKindStateSchema = _enum([
|
|
|
17294
17284
|
var DeclareKindResultSchema = object({
|
|
17295
17285
|
kindId: number().int(),
|
|
17296
17286
|
state: RecordKindStateSchema,
|
|
17297
|
-
createdIndexes: array(string())
|
|
17298
|
-
/**
|
|
17299
|
-
* RETIRED (D900): always `null`. It carried the records-migration boot guard;
|
|
17300
|
-
* it stays on the wire, null, because an addon built before the removal reads
|
|
17301
|
-
* an ABSENT field as "adoption pending" and refuses to start.
|
|
17302
|
-
*/
|
|
17303
|
-
adoptionPending: _null()
|
|
17287
|
+
createdIndexes: array(string())
|
|
17304
17288
|
});
|
|
17305
17289
|
/** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
|
|
17306
17290
|
var SecretRefsList = array(string());
|
|
17291
|
+
/**
|
|
17292
|
+
* One op of a `transact`: the single-row writes, each on a kind of the caller.
|
|
17293
|
+
* All ops of one call share ONE database file and ONE `transactFamily`.
|
|
17294
|
+
*/
|
|
17295
|
+
var RecordTransactOpSchema = discriminatedUnion("op", [
|
|
17296
|
+
object({
|
|
17297
|
+
op: literal("put"),
|
|
17298
|
+
kind: RecordKindNameSchema,
|
|
17299
|
+
record: RecordInputSchema,
|
|
17300
|
+
ifRev: number().int().min(0).optional()
|
|
17301
|
+
}),
|
|
17302
|
+
object({
|
|
17303
|
+
op: literal("patch"),
|
|
17304
|
+
kind: RecordKindNameSchema,
|
|
17305
|
+
id: RecordIdSchema,
|
|
17306
|
+
data: RecordBodySchema,
|
|
17307
|
+
at: number().int().nullable().optional(),
|
|
17308
|
+
expiresAt: number().int().nullable().optional(),
|
|
17309
|
+
ifRev: number().int().min(1).optional()
|
|
17310
|
+
}),
|
|
17311
|
+
object({
|
|
17312
|
+
op: literal("delete"),
|
|
17313
|
+
kind: RecordKindNameSchema,
|
|
17314
|
+
id: RecordIdSchema
|
|
17315
|
+
})
|
|
17316
|
+
]);
|
|
17307
17317
|
var RecordSecretRefsSchema = record(string(), record(string(), string()));
|
|
17308
17318
|
method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
|
|
17309
17319
|
kind: "mutation",
|
|
@@ -17410,6 +17420,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
|
|
|
17410
17420
|
}), {
|
|
17411
17421
|
kind: "mutation",
|
|
17412
17422
|
auth: "admin"
|
|
17423
|
+
}), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
|
|
17424
|
+
results: array(object({
|
|
17425
|
+
rev: number().int().nullable(),
|
|
17426
|
+
deleted: boolean()
|
|
17427
|
+
})),
|
|
17428
|
+
releasedRefs: SecretRefsList,
|
|
17429
|
+
secretRefs: SecretRefsList
|
|
17430
|
+
}), {
|
|
17431
|
+
kind: "mutation",
|
|
17432
|
+
auth: "admin"
|
|
17413
17433
|
}), method(object({
|
|
17414
17434
|
deviceId: number().int(),
|
|
17415
17435
|
kinds: array(RecordKindNameSchema).optional()
|
|
@@ -43157,9 +43177,13 @@ var NcSystemEventKindSchema = _enum([
|
|
|
43157
43177
|
"node-updating",
|
|
43158
43178
|
"node-inference-unavailable",
|
|
43159
43179
|
"detection-blind",
|
|
43180
|
+
"motion-noisy",
|
|
43181
|
+
"motion-calm",
|
|
43160
43182
|
"recording-stalled",
|
|
43161
43183
|
"recording-healthy",
|
|
43162
43184
|
"recording-degraded",
|
|
43185
|
+
"device-attention-required",
|
|
43186
|
+
"device-attention-resolved",
|
|
43163
43187
|
"storage-location-low",
|
|
43164
43188
|
"storage-location-critical",
|
|
43165
43189
|
"storage-location-ok",
|
|
@@ -48720,7 +48744,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
|
|
|
48720
48744
|
modelId: string()
|
|
48721
48745
|
}),
|
|
48722
48746
|
object({ kind: literal("cpu-device") }),
|
|
48723
|
-
object({ kind: literal("coral-untouched") }),
|
|
48724
48747
|
object({ kind: literal("device-disabled") }),
|
|
48725
48748
|
object({ kind: literal("device-unavailable") }),
|
|
48726
48749
|
object({ kind: literal("node-offline") }),
|
|
@@ -48818,11 +48841,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
|
|
|
48818
48841
|
kind: literal("detector-store-unreadable"),
|
|
48819
48842
|
error: string()
|
|
48820
48843
|
}),
|
|
48821
|
-
object({
|
|
48822
|
-
kind: literal("coral-enabled"),
|
|
48823
|
-
nodeId: string(),
|
|
48824
|
-
deviceKey: string()
|
|
48825
|
-
}),
|
|
48826
48844
|
object({
|
|
48827
48845
|
kind: literal("custom-pin-kept"),
|
|
48828
48846
|
nodeId: string(),
|
|
@@ -57005,6 +57023,16 @@ var DishwasherStatusSchema = object({
|
|
|
57005
57023
|
powerState: string().nullable(),
|
|
57006
57024
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
57007
57025
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
57026
|
+
/**
|
|
57027
|
+
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
57028
|
+
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
57029
|
+
* when none is reported. A cleared reminder is not an unknown one.
|
|
57030
|
+
*/
|
|
57031
|
+
filterCleaningDue: boolean().nullable(),
|
|
57032
|
+
/** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
|
|
57033
|
+
machineCareDue: boolean().nullable(),
|
|
57034
|
+
/** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
|
|
57035
|
+
machineCareRemainingRuns: number().int().nonnegative().nullable(),
|
|
57008
57036
|
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
57009
57037
|
halfLoad: boolean().nullable(),
|
|
57010
57038
|
hygienePlus: boolean().nullable(),
|
|
@@ -66225,16 +66253,6 @@ var UpdateUserInputSchema = object({
|
|
|
66225
66253
|
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
66226
66254
|
scopes: array(TokenScopeSchema).optional()
|
|
66227
66255
|
});
|
|
66228
|
-
var ApiKeySummarySchema = object({
|
|
66229
|
-
id: string(),
|
|
66230
|
-
label: string(),
|
|
66231
|
-
isAdmin: boolean().default(false),
|
|
66232
|
-
allowedProviders: union([array(string()), literal("*")]).optional(),
|
|
66233
|
-
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
66234
|
-
tokenPrefix: string(),
|
|
66235
|
-
createdAt: number(),
|
|
66236
|
-
lastUsedAt: number().optional()
|
|
66237
|
-
});
|
|
66238
66256
|
var OauthSessionSummarySchema = object({
|
|
66239
66257
|
id: string(),
|
|
66240
66258
|
userId: string(),
|
|
@@ -66256,8 +66274,7 @@ var TotpStatusSchema = object({
|
|
|
66256
66274
|
confirmedAt: number().nullable()
|
|
66257
66275
|
});
|
|
66258
66276
|
/**
|
|
66259
|
-
* user-management — singleton capability for user accounts
|
|
66260
|
-
* legacy API-key rows.
|
|
66277
|
+
* user-management — singleton capability for user accounts.
|
|
66261
66278
|
*
|
|
66262
66279
|
* v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
|
|
66263
66280
|
* — the subset check on `setUserScopes` is moot
|
|
@@ -66313,10 +66330,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
66313
66330
|
}), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
|
|
66314
66331
|
kind: "mutation",
|
|
66315
66332
|
access: "view"
|
|
66316
|
-
}), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
|
|
66317
|
-
kind: "mutation",
|
|
66318
|
-
auth: "admin",
|
|
66319
|
-
access: "delete"
|
|
66320
66333
|
}), method(object({ userId: string() }), TotpSetupResultSchema, {
|
|
66321
66334
|
kind: "mutation",
|
|
66322
66335
|
auth: "admin",
|
|
@@ -75787,6 +75800,12 @@ Object.freeze({
|
|
|
75787
75800
|
addonId: null,
|
|
75788
75801
|
access: "view"
|
|
75789
75802
|
},
|
|
75803
|
+
"records.transact": {
|
|
75804
|
+
capName: "records",
|
|
75805
|
+
capScope: "system",
|
|
75806
|
+
addonId: null,
|
|
75807
|
+
access: "create"
|
|
75808
|
+
},
|
|
75790
75809
|
"sceneMonitor.captureReference": {
|
|
75791
75810
|
capName: "scene-monitor",
|
|
75792
75811
|
capScope: "device",
|
|
@@ -77119,12 +77138,6 @@ Object.freeze({
|
|
|
77119
77138
|
addonId: null,
|
|
77120
77139
|
access: "view"
|
|
77121
77140
|
},
|
|
77122
|
-
"userManagement.listApiKeys": {
|
|
77123
|
-
capName: "user-management",
|
|
77124
|
-
capScope: "system",
|
|
77125
|
-
addonId: null,
|
|
77126
|
-
access: "view"
|
|
77127
|
-
},
|
|
77128
77141
|
"userManagement.listExternalIdentities": {
|
|
77129
77142
|
capName: "user-management",
|
|
77130
77143
|
capScope: "system",
|
|
@@ -77179,12 +77192,6 @@ Object.freeze({
|
|
|
77179
77192
|
addonId: null,
|
|
77180
77193
|
access: "create"
|
|
77181
77194
|
},
|
|
77182
|
-
"userManagement.revokeApiKey": {
|
|
77183
|
-
capName: "user-management",
|
|
77184
|
-
capScope: "system",
|
|
77185
|
-
addonId: null,
|
|
77186
|
-
access: "delete"
|
|
77187
|
-
},
|
|
77188
77195
|
"userManagement.revokeOauthSession": {
|
|
77189
77196
|
capName: "user-management",
|
|
77190
77197
|
capScope: "system",
|
|
@@ -80701,9 +80708,13 @@ new Map(Object.entries({
|
|
|
80701
80708
|
"stream-online": "device-events",
|
|
80702
80709
|
"stream-offline": "device-events",
|
|
80703
80710
|
"detection-blind": "device-events",
|
|
80711
|
+
"motion-noisy": "device-events",
|
|
80712
|
+
"motion-calm": "device-events",
|
|
80704
80713
|
"recording-stalled": "device-events",
|
|
80705
80714
|
"recording-healthy": "device-events",
|
|
80706
80715
|
"recording-degraded": "device-events",
|
|
80716
|
+
"device-attention-required": "device-events",
|
|
80717
|
+
"device-attention-resolved": "device-events",
|
|
80707
80718
|
"node-online": "system",
|
|
80708
80719
|
"node-offline": "system",
|
|
80709
80720
|
"node-restarting": "system",
|
|
@@ -80786,6 +80797,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
80786
80797
|
label: "Detecting nothing",
|
|
80787
80798
|
kinds: ["detection-blind"]
|
|
80788
80799
|
},
|
|
80800
|
+
{
|
|
80801
|
+
id: "motion-noise",
|
|
80802
|
+
family: "device-events",
|
|
80803
|
+
label: "Motion without a subject",
|
|
80804
|
+
kinds: ["motion-noisy", "motion-calm"]
|
|
80805
|
+
},
|
|
80789
80806
|
{
|
|
80790
80807
|
id: "recording",
|
|
80791
80808
|
family: "device-events",
|
|
@@ -80796,6 +80813,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
80796
80813
|
"recording-degraded"
|
|
80797
80814
|
]
|
|
80798
80815
|
},
|
|
80816
|
+
{
|
|
80817
|
+
id: "device-attention",
|
|
80818
|
+
family: "device-events",
|
|
80819
|
+
label: "Needs attention",
|
|
80820
|
+
kinds: ["device-attention-required", "device-attention-resolved"]
|
|
80821
|
+
},
|
|
80799
80822
|
{
|
|
80800
80823
|
id: "nodes",
|
|
80801
80824
|
family: "system",
|
|
@@ -80935,6 +80958,7 @@ var ALERT_EPISODE = [
|
|
|
80935
80958
|
"alert-error",
|
|
80936
80959
|
"alert-critical-resolved"
|
|
80937
80960
|
];
|
|
80961
|
+
var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
|
|
80938
80962
|
var UPDATES = [
|
|
80939
80963
|
"addon-update-available",
|
|
80940
80964
|
"server-update-available",
|
|
@@ -80964,9 +80988,12 @@ var DEVICE_EVENTS = [
|
|
|
80964
80988
|
"stream-online",
|
|
80965
80989
|
"stream-offline",
|
|
80966
80990
|
"detection-blind",
|
|
80991
|
+
"motion-noisy",
|
|
80992
|
+
"motion-calm",
|
|
80967
80993
|
"recording-stalled",
|
|
80968
80994
|
"recording-healthy",
|
|
80969
80995
|
"recording-degraded",
|
|
80996
|
+
...DEVICE_ATTENTION,
|
|
80970
80997
|
...ALARM
|
|
80971
80998
|
];
|
|
80972
80999
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -81134,7 +81161,9 @@ var STATE_SUMMARY_VARS = [
|
|
|
81134
81161
|
[...RULE_TEXT],
|
|
81135
81162
|
[...RULE_TEXT],
|
|
81136
81163
|
[...RULE_TEXT],
|
|
81137
|
-
|
|
81164
|
+
[...RULE_TEXT],
|
|
81165
|
+
[...RULE_TEXT],
|
|
81166
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
81138
81167
|
[...RULE_TEXT],
|
|
81139
81168
|
[...RULE_TEXT],
|
|
81140
81169
|
[...RULE_TEXT],
|
|
@@ -81156,11 +81185,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
81156
81185
|
[...RULE_TEXT],
|
|
81157
81186
|
[...RULE_TEXT],
|
|
81158
81187
|
[...RULE_TEXT],
|
|
81188
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
81159
81189
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
81190
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
81160
81191
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
81161
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
81162
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
81163
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
81192
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
81164
81193
|
[...RULE_TEXT],
|
|
81165
81194
|
[...RULE_TEXT],
|
|
81166
81195
|
[...RULE_TEXT],
|
|
@@ -81236,6 +81265,15 @@ new Map([
|
|
|
81236
81265
|
snapshotLabel: "Tanks low or full now",
|
|
81237
81266
|
snapshotSection: "tanks"
|
|
81238
81267
|
},
|
|
81268
|
+
{
|
|
81269
|
+
id: "motion-noise",
|
|
81270
|
+
family: "device-events",
|
|
81271
|
+
label: "Motion without a subject (constant / calm again)",
|
|
81272
|
+
bad: ["motion-noisy"],
|
|
81273
|
+
recovery: ["motion-calm"],
|
|
81274
|
+
snapshotLabel: "Cameras with constant motion now",
|
|
81275
|
+
snapshotSection: null
|
|
81276
|
+
},
|
|
81239
81277
|
{
|
|
81240
81278
|
id: "recording-health",
|
|
81241
81279
|
family: "device-events",
|
|
@@ -81245,6 +81283,15 @@ new Map([
|
|
|
81245
81283
|
snapshotLabel: "Recordings stalled now",
|
|
81246
81284
|
snapshotSection: null
|
|
81247
81285
|
},
|
|
81286
|
+
{
|
|
81287
|
+
id: "device-attention",
|
|
81288
|
+
family: "device-events",
|
|
81289
|
+
label: "Device needs attention (raised / resolved)",
|
|
81290
|
+
bad: ["device-attention-required"],
|
|
81291
|
+
recovery: ["device-attention-resolved"],
|
|
81292
|
+
snapshotLabel: "Devices needing attention now",
|
|
81293
|
+
snapshotSection: null
|
|
81294
|
+
},
|
|
81248
81295
|
{
|
|
81249
81296
|
id: "node-connectivity",
|
|
81250
81297
|
family: "system",
|
|
@@ -188569,8 +188616,8 @@ var CLIP_REFRESH_SECTION_ID = "clip-catalog-refresh";
|
|
|
188569
188616
|
* settings nobody could reason about. So the difference is in the operator's
|
|
188570
188617
|
* own text, at both levels, not only in a record.
|
|
188571
188618
|
*/
|
|
188572
|
-
var CLIP_CATALOG_REFRESH_MINUTES_DESCRIPTION = "
|
|
188573
|
-
var CLIP_CATALOG_FORCED_WAKE_DESCRIPTION = "Let the
|
|
188619
|
+
var CLIP_CATALOG_REFRESH_MINUTES_DESCRIPTION = "On a standalone battery camera the timer only marks the catalog as ageing; it never wakes the camera. 0 turns it off.";
|
|
188620
|
+
var CLIP_CATALOG_FORCED_WAKE_DESCRIPTION = "Let the timer wake a standalone battery camera: one wake per interval, at the battery’s cost. No effect on hub children or mains cameras.";
|
|
188574
188621
|
/**
|
|
188575
188622
|
* The addon-level (global) default. Per-camera overrides live on the device,
|
|
188576
188623
|
* under the SAME key, and a device that sets nothing — or resets — resolves to
|
|
@@ -188580,7 +188627,7 @@ function buildClipRefreshSettingsSchema() {
|
|
|
188580
188627
|
return { sections: [{
|
|
188581
188628
|
id: CLIP_REFRESH_SECTION_ID,
|
|
188582
188629
|
title: "Clip catalog refresh",
|
|
188583
|
-
description: "
|
|
188630
|
+
description: "Default for every camera; a camera can override it in its Recording settings.",
|
|
188584
188631
|
columns: 1,
|
|
188585
188632
|
fields: [{
|
|
188586
188633
|
type: "number",
|
|
@@ -188610,7 +188657,7 @@ function buildClipRefreshDeviceSection(input) {
|
|
|
188610
188657
|
id: CLIP_REFRESH_SECTION_ID,
|
|
188611
188658
|
tab: "recording",
|
|
188612
188659
|
title: "Clip catalog refresh",
|
|
188613
|
-
description: "
|
|
188660
|
+
description: "Leave the interval empty to use the default from the Reolink addon settings.",
|
|
188614
188661
|
columns: 1,
|
|
188615
188662
|
fields: [{
|
|
188616
188663
|
type: "number",
|
|
@@ -188889,7 +188936,7 @@ function buildSnapshotFreshnessSection(cache, opts) {
|
|
|
188889
188936
|
tab: "advanced",
|
|
188890
188937
|
title: "Snapshot freshness",
|
|
188891
188938
|
titleKey: "provider-reolink:snapshotFreshnessSection.s_snapshotFreshness.title",
|
|
188892
|
-
description: "
|
|
188939
|
+
description: "Groups without a stamp are of unknown age, not fresh.",
|
|
188893
188940
|
descriptionKey: "provider-reolink:snapshotFreshnessSection.s_snapshotFreshness.description",
|
|
188894
188941
|
columns: 1,
|
|
188895
188942
|
fields: [{
|
|
@@ -189920,7 +189967,7 @@ var BatteryHourlyRefresh = class {
|
|
|
189920
189967
|
//#endregion
|
|
189921
189968
|
//#region src/battery-refresh-settings.ts
|
|
189922
189969
|
var BATTERY_REFRESH_SECTION_ID = "battery-refresh";
|
|
189923
|
-
var BATTERY_REFRESH_MINUTES_DESCRIPTION =
|
|
189970
|
+
var BATTERY_REFRESH_MINUTES_DESCRIPTION = "A camera that slept the whole window is woken once to refresh. 0 turns the scheduled refresh off.";
|
|
189924
189971
|
/** Battery cameras only: a mains camera keeps its facts fresh on its own socket. */
|
|
189925
189972
|
function buildBatteryRefreshDeviceSection(input) {
|
|
189926
189973
|
if (!input.isBattery) return [];
|
|
@@ -189928,7 +189975,6 @@ function buildBatteryRefreshDeviceSection(input) {
|
|
|
189928
189975
|
id: BATTERY_REFRESH_SECTION_ID,
|
|
189929
189976
|
tab: "general",
|
|
189930
189977
|
title: "Scheduled refresh",
|
|
189931
|
-
description: "How often this battery camera is guaranteed to have been read, so a battery level never goes stale unseen.",
|
|
189932
189978
|
columns: 1,
|
|
189933
189979
|
fields: [{
|
|
189934
189980
|
type: "number",
|
|
@@ -190022,7 +190068,7 @@ async function refreshSnapshotCacheOnce(input) {
|
|
|
190022
190068
|
*/
|
|
190023
190069
|
var CH_BAICHUAN = declareLogChannel({
|
|
190024
190070
|
name: "provider-reolink.baichuan",
|
|
190025
|
-
description: "Every Baichuan protocol frame this camera sends and receives
|
|
190071
|
+
description: "Every Baichuan protocol frame this camera sends and receives. Loud: arm it for one camera and a short window.",
|
|
190026
190072
|
defaultLevel: "info",
|
|
190027
190073
|
perDevice: true
|
|
190028
190074
|
});
|
|
@@ -190037,7 +190083,7 @@ var CH_BAICHUAN = declareLogChannel({
|
|
|
190037
190083
|
*/
|
|
190038
190084
|
var CH_HANDSHAKE = declareLogChannel({
|
|
190039
190085
|
name: "provider-reolink.handshake",
|
|
190040
|
-
description: "Login and socket lifecycle for this camera
|
|
190086
|
+
description: "Login and socket lifecycle for this camera. Arm it when a camera looks present but answers nothing.",
|
|
190041
190087
|
defaultLevel: "info",
|
|
190042
190088
|
perDevice: true
|
|
190043
190089
|
});
|
|
@@ -190446,7 +190492,7 @@ function buildOsdSection(snapshot, values, opts) {
|
|
|
190446
190492
|
tab: "image",
|
|
190447
190493
|
title: "OSD overlay",
|
|
190448
190494
|
titleKey: "provider-reolink:osdSection.s_osd.title",
|
|
190449
|
-
description: "
|
|
190495
|
+
description: "An overlay the camera holds somewhere else keeps that placement unless a corner is chosen.",
|
|
190450
190496
|
descriptionKey: "provider-reolink:osdSection.s_osd.description",
|
|
190451
190497
|
columns: 2,
|
|
190452
190498
|
fields: [
|
|
@@ -190458,8 +190504,6 @@ function buildOsdSection(snapshot, values, opts) {
|
|
|
190458
190504
|
key: "osdChannelName",
|
|
190459
190505
|
label: "Channel name",
|
|
190460
190506
|
labelKey: "provider-reolink:fields.osdChannelName.label",
|
|
190461
|
-
description: "Text shown in the channel-name overlay.",
|
|
190462
|
-
descriptionKey: "provider-reolink:fields.osdChannelName.description",
|
|
190463
190507
|
default: values.osdChannelName,
|
|
190464
190508
|
placeholder: "Front door"
|
|
190465
190509
|
},
|
|
@@ -190943,7 +190987,7 @@ var SirenAccessory = class extends BaseDevice {
|
|
|
190943
190987
|
id: "siren",
|
|
190944
190988
|
title: "Siren",
|
|
190945
190989
|
titleKey: "provider-reolink:schema.s_siren.title",
|
|
190946
|
-
description: "
|
|
190990
|
+
description: "0 = play until turned off.",
|
|
190947
190991
|
descriptionKey: "provider-reolink:schema.s_siren.description",
|
|
190948
190992
|
columns: 1,
|
|
190949
190993
|
fields: [{
|
|
@@ -190951,8 +190995,6 @@ var SirenAccessory = class extends BaseDevice {
|
|
|
190951
190995
|
key: "sirenDurationS",
|
|
190952
190996
|
label: "Default duration (seconds)",
|
|
190953
190997
|
labelKey: "provider-reolink:schema.s_siren.sirenDurationS.label",
|
|
190954
|
-
description: "Forwarded to `setSiren(on=true, duration)` (cmd_id 30) when the operator flips the switch.",
|
|
190955
|
-
descriptionKey: "provider-reolink:schema.s_siren.sirenDurationS.description",
|
|
190956
190998
|
default: 0,
|
|
190957
190999
|
min: 0,
|
|
190958
191000
|
max: 300,
|
|
@@ -190962,16 +191004,12 @@ var SirenAccessory = class extends BaseDevice {
|
|
|
190962
191004
|
id: "motion-siren",
|
|
190963
191005
|
title: "Motion-triggered siren",
|
|
190964
191006
|
titleKey: "provider-reolink:schema.s_motion-siren.title",
|
|
190965
|
-
description: "Detection classes that fire the siren when \"Trigger on motion\" is armed. Forwarded as a `typeScheduleList` to `setSirenOnMotion` (cmd_id 231). Saved values re-apply on every motion-trigger flip.",
|
|
190966
|
-
descriptionKey: "provider-reolink:schema.s_motion-siren.description",
|
|
190967
191007
|
columns: 1,
|
|
190968
191008
|
fields: [{
|
|
190969
191009
|
type: "select",
|
|
190970
191010
|
key: "motionSirenDetectType",
|
|
190971
191011
|
label: "Detection classes",
|
|
190972
191012
|
labelKey: "provider-reolink:schema.s_motion-siren.motionSirenDetectType.label",
|
|
190973
|
-
description: "Object/motion classes that arm the siren. `MD` = generic motion detection.",
|
|
190974
|
-
descriptionKey: "provider-reolink:schema.s_motion-siren.motionSirenDetectType.description",
|
|
190975
191013
|
options: SIREN_DETECT_TYPE_CHOICES.map((v) => ({
|
|
190976
191014
|
value: v,
|
|
190977
191015
|
label: v.replace(/,/g, " + ").replace(/_/g, "+")
|
|
@@ -191435,16 +191473,12 @@ var FloodlightAccessory = class extends BaseDevice {
|
|
|
191435
191473
|
id: "motion-floodlight",
|
|
191436
191474
|
title: "Motion-triggered floodlight",
|
|
191437
191475
|
titleKey: "provider-reolink:schema.s_motion-floodlight.title",
|
|
191438
|
-
description: "Pushed to the camera (`FloodlightTask`) when the \"Trigger on motion\" toggle is armed. Saved values also re-apply on every motion-trigger flip so the firmware always honours your preference.",
|
|
191439
|
-
descriptionKey: "provider-reolink:schema.s_motion-floodlight.description",
|
|
191440
191476
|
columns: 2,
|
|
191441
191477
|
fields: [{
|
|
191442
191478
|
type: "number",
|
|
191443
191479
|
key: "motionLightDurationS",
|
|
191444
191480
|
label: "Light duration (s)",
|
|
191445
191481
|
labelKey: "provider-reolink:schema.s_motion-floodlight.motionLightDurationS.label",
|
|
191446
|
-
description: "Seconds the floodlight stays lit after a motion event. Reolink range 1..600s.",
|
|
191447
|
-
descriptionKey: "provider-reolink:schema.s_motion-floodlight.motionLightDurationS.description",
|
|
191448
191482
|
min: 1,
|
|
191449
191483
|
max: 600,
|
|
191450
191484
|
step: 1,
|
|
@@ -191454,8 +191488,6 @@ var FloodlightAccessory = class extends BaseDevice {
|
|
|
191454
191488
|
key: "motionLightDetectType",
|
|
191455
191489
|
label: "Detection classes",
|
|
191456
191490
|
labelKey: "provider-reolink:schema.s_motion-floodlight.motionLightDetectType.label",
|
|
191457
|
-
description: "Object classes that turn the floodlight on. Composed values (e.g. \"people,vehicle\") fire when ANY listed class detects.",
|
|
191458
|
-
descriptionKey: "provider-reolink:schema.s_motion-floodlight.motionLightDetectType.description",
|
|
191459
191491
|
options: FLOODLIGHT_DETECT_TYPE_CHOICES.map((v) => ({
|
|
191460
191492
|
value: v,
|
|
191461
191493
|
label: v.replace(/,/g, " + ").replace(/_/g, "+")
|
|
@@ -191695,8 +191727,6 @@ var PirAccessory = class extends BaseDevice {
|
|
|
191695
191727
|
id: "pir",
|
|
191696
191728
|
title: "PIR sensor",
|
|
191697
191729
|
titleKey: "provider-reolink:schema.s_pir.title",
|
|
191698
|
-
description: "Hardware passive-infrared trigger configuration. Pushed via cmd_id 153 (SetPirInfo).",
|
|
191699
|
-
descriptionKey: "provider-reolink:schema.s_pir.description",
|
|
191700
191730
|
columns: 2,
|
|
191701
191731
|
fields: [
|
|
191702
191732
|
{
|
|
@@ -191704,8 +191734,6 @@ var PirAccessory = class extends BaseDevice {
|
|
|
191704
191734
|
key: "pirSensitive",
|
|
191705
191735
|
label: "Sensitivity",
|
|
191706
191736
|
labelKey: "provider-reolink:schema.s_pir.pirSensitive.label",
|
|
191707
|
-
description: "Higher value → triggers on smaller motion. Most cameras max at 100.",
|
|
191708
|
-
descriptionKey: "provider-reolink:schema.s_pir.pirSensitive.description",
|
|
191709
191737
|
min: 1,
|
|
191710
191738
|
max: 100,
|
|
191711
191739
|
step: 1,
|
|
@@ -191717,7 +191745,6 @@ var PirAccessory = class extends BaseDevice {
|
|
|
191717
191745
|
key: "pirIntervalS",
|
|
191718
191746
|
label: "Cooldown (seconds)",
|
|
191719
191747
|
labelKey: "provider-reolink:schema.s_pir.pirIntervalS.label",
|
|
191720
|
-
description: `Minimum delay between consecutive PIR triggers. Reolink app range 5..${intervalMax}s; firmware clamps on push.`,
|
|
191721
191748
|
min: 5,
|
|
191722
191749
|
max: intervalMax,
|
|
191723
191750
|
step: 1,
|
|
@@ -191730,8 +191757,6 @@ var PirAccessory = class extends BaseDevice {
|
|
|
191730
191757
|
key: "pirReduceAlarm",
|
|
191731
191758
|
label: "Reduce false alarms",
|
|
191732
191759
|
labelKey: "provider-reolink:schema.s_pir.pirReduceAlarm.label",
|
|
191733
|
-
description: "Trades detection range for fewer false positives. Maps to firmware `reduceAlarm` flag.",
|
|
191734
|
-
descriptionKey: "provider-reolink:schema.s_pir.pirReduceAlarm.description",
|
|
191735
191760
|
...typeof reduceAlarm === "boolean" ? { default: reduceAlarm } : {},
|
|
191736
191761
|
style: "switch",
|
|
191737
191762
|
span: 2
|
|
@@ -193280,8 +193305,6 @@ function buildSessionsTabSections(snap, opts) {
|
|
|
193280
193305
|
return [{
|
|
193281
193306
|
id: "sessions-status",
|
|
193282
193307
|
title: opts.title ?? "Sessions",
|
|
193283
|
-
description: "Diagnostics for the Baichuan control channel. Auto-refreshes when older than 1 minute; click Refresh to force.",
|
|
193284
|
-
descriptionKey: "provider-reolink:sessionsTabSections.s_sessions-status.description",
|
|
193285
193308
|
tab: opts.tabId,
|
|
193286
193309
|
order: 0,
|
|
193287
193310
|
columns: 1,
|
|
@@ -193299,8 +193322,6 @@ function buildSessionsTabSections(snap, opts) {
|
|
|
193299
193322
|
key: "sessionsOnlineUsers",
|
|
193300
193323
|
label: "Online users (firmware)",
|
|
193301
193324
|
labelKey: "provider-reolink:sessionsTabSections.s_sessions-status.sessionsOnlineUsers.label",
|
|
193302
|
-
description: "Active user sessions reported by the device (cmd_id 145). Includes other admins, mobile app, NVR linkups.",
|
|
193303
|
-
descriptionKey: "provider-reolink:sessionsTabSections.s_sessions-status.sessionsOnlineUsers.description",
|
|
193304
193325
|
columns: [
|
|
193305
193326
|
{
|
|
193306
193327
|
key: "userName",
|
|
@@ -193343,8 +193364,6 @@ function buildSessionsTabSections(snap, opts) {
|
|
|
193343
193364
|
key: "sessionsSocketPool",
|
|
193344
193365
|
label: "Our socket pool",
|
|
193345
193366
|
labelKey: "provider-reolink:sessionsTabSections.s_sessions-status.sessionsSocketPool.label",
|
|
193346
|
-
description: "Open Baichuan TCP/UDP sockets this process holds for the device. One row per pool tag.",
|
|
193347
|
-
descriptionKey: "provider-reolink:sessionsTabSections.s_sessions-status.sessionsSocketPool.description",
|
|
193348
193367
|
columns: [{
|
|
193349
193368
|
key: "tag",
|
|
193350
193369
|
label: "Tag",
|
|
@@ -193365,8 +193384,6 @@ function buildSessionsTabSections(snap, opts) {
|
|
|
193365
193384
|
key: "sessionsDedicated",
|
|
193366
193385
|
label: "Dedicated lib sessions",
|
|
193367
193386
|
labelKey: "provider-reolink:sessionsTabSections.s_sessions-status.sessionsDedicated.label",
|
|
193368
|
-
description: "Internal lib-side dedicated sessions (streaming/talk channels). Older lib versions leave this list empty.",
|
|
193369
|
-
descriptionKey: "provider-reolink:sessionsTabSections.s_sessions-status.sessionsDedicated.description",
|
|
193370
193387
|
columns: [{
|
|
193371
193388
|
key: "key",
|
|
193372
193389
|
label: "Session key",
|
|
@@ -195751,7 +195768,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
195751
195768
|
tab: "motion",
|
|
195752
195769
|
title: "Battery motion (sleep push)",
|
|
195753
195770
|
titleKey: "provider-reolink:emailPushSection.s_sleep-push.title",
|
|
195754
|
-
description: "
|
|
195771
|
+
description: "Prefer the HaCfg webhook when the firmware supports it; arm only one path.",
|
|
195755
195772
|
descriptionKey: "provider-reolink:emailPushSection.s_sleep-push.description",
|
|
195756
195773
|
columns: 1,
|
|
195757
195774
|
fields: [
|
|
@@ -195817,7 +195834,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
195817
195834
|
tab: "email",
|
|
195818
195835
|
title: "SMTP server",
|
|
195819
195836
|
titleKey: "provider-reolink:emailTabSections.s_email-smtp.title",
|
|
195820
|
-
description: "
|
|
195837
|
+
description: "Leave the password blank to keep the current one.",
|
|
195821
195838
|
descriptionKey: "provider-reolink:emailTabSections.s_email-smtp.description",
|
|
195822
195839
|
columns: 2,
|
|
195823
195840
|
fields: [
|
|
@@ -195872,8 +195889,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
195872
195889
|
tab: "email",
|
|
195873
195890
|
title: "Recipients",
|
|
195874
195891
|
titleKey: "provider-reolink:emailTabSections.s_email-recipients.title",
|
|
195875
|
-
description: "Up to three recipient addresses the camera sends motion mail to.",
|
|
195876
|
-
descriptionKey: "provider-reolink:emailTabSections.s_email-recipients.description",
|
|
195877
195892
|
columns: 1,
|
|
195878
195893
|
fields: [
|
|
195879
195894
|
{
|
|
@@ -195902,8 +195917,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
195902
195917
|
tab: "email",
|
|
195903
195918
|
title: "Alarm schedule",
|
|
195904
195919
|
titleKey: "provider-reolink:emailTabSections.s_email-schedule.title",
|
|
195905
|
-
description: "Master enable for the camera's email alarm schedule (EmailTask).",
|
|
195906
|
-
descriptionKey: "provider-reolink:emailTabSections.s_email-schedule.description",
|
|
195907
195920
|
columns: 1,
|
|
195908
195921
|
fields: [{
|
|
195909
195922
|
type: "boolean",
|
|
@@ -199779,7 +199792,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
199779
199792
|
tab: "general",
|
|
199780
199793
|
title: "Camera data",
|
|
199781
199794
|
titleKey: "provider-reolink:schema.s_driver-refresh.title",
|
|
199782
|
-
description: "
|
|
199795
|
+
description: "Wakes a sleeping camera and re-reads everything; no other read here wakes it.",
|
|
199783
199796
|
descriptionKey: "provider-reolink:schema.s_driver-refresh.description",
|
|
199784
199797
|
columns: 1,
|
|
199785
199798
|
fields: [{
|
|
@@ -199798,8 +199811,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
199798
199811
|
tab: "general",
|
|
199799
199812
|
title: "Connection",
|
|
199800
199813
|
titleKey: "provider-reolink:schema.s_connection.title",
|
|
199801
|
-
description: "Baichuan protocol connection settings.",
|
|
199802
|
-
descriptionKey: "provider-reolink:schema.s_connection.description",
|
|
199803
199814
|
columns: 2,
|
|
199804
199815
|
fields: [
|
|
199805
199816
|
{
|
|
@@ -199842,7 +199853,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
199842
199853
|
tab: "network",
|
|
199843
199854
|
title: "Service ports",
|
|
199844
199855
|
titleKey: "provider-reolink:schema.s_network-ports.title",
|
|
199845
|
-
description: "
|
|
199856
|
+
description: "Changing a port breaks existing URLs for that protocol.",
|
|
199846
199857
|
descriptionKey: "provider-reolink:schema.s_network-ports.description",
|
|
199847
199858
|
columns: 2,
|
|
199848
199859
|
fields: [
|
|
@@ -199943,8 +199954,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
199943
199954
|
tab: "network",
|
|
199944
199955
|
title: "Time / NTP",
|
|
199945
199956
|
titleKey: "provider-reolink:schema.s_time-ntp.title",
|
|
199946
|
-
description: "Network time synchronisation. The camera-side push goes through the native Baichuan NTP commands; until those land in the driver lib the values persist to the driver config and apply on the next lib update.",
|
|
199947
|
-
descriptionKey: "provider-reolink:schema.s_time-ntp.description",
|
|
199948
199957
|
columns: 2,
|
|
199949
199958
|
fields: [
|
|
199950
199959
|
{
|
|
@@ -199952,8 +199961,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
199952
199961
|
key: "timeZoneId",
|
|
199953
199962
|
label: "Timezone",
|
|
199954
199963
|
labelKey: "provider-reolink:schema.s_time-ntp.timeZoneId.label",
|
|
199955
|
-
description: "Camera timezone. Selecting a zone pushes its standard UTC offset (Baichuan `SetSystemGeneral`, cmd 105) and DST rule (`SetDst`, cmd 107) to the camera — DST is handled automatically by the chosen zone, so summer/winter clocks track correctly without a separate toggle.",
|
|
199956
|
-
descriptionKey: "provider-reolink:schema.s_time-ntp.timeZoneId.description",
|
|
199957
199964
|
default: this.config.get("timeZoneId") ?? reolinkTimeZoneToIana(this.config.get("deviceCache")?.systemGeneralSnapshot?.timeZone) ?? "",
|
|
199958
199965
|
span: 2
|
|
199959
199966
|
},
|
|
@@ -200002,16 +200009,12 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200002
200009
|
tab: "motion",
|
|
200003
200010
|
title: "On-camera motion (MdAlarm)",
|
|
200004
200011
|
titleKey: "provider-reolink:schema.s_motion.title",
|
|
200005
|
-
description: "Camera-side motion detection master switch + sensitivity. Pushed via Baichuan `SetMdAlarm` (cmd_id 47). Range 1..50 matches the Reolink mobile app + web UI; the driver inverts to the camera-side raw value (`51 - value`) before push.",
|
|
200006
|
-
descriptionKey: "provider-reolink:schema.s_motion.description",
|
|
200007
200012
|
columns: 2,
|
|
200008
200013
|
fields: [{
|
|
200009
200014
|
type: "boolean",
|
|
200010
200015
|
key: "motionEnabled",
|
|
200011
200016
|
label: "Motion detection",
|
|
200012
200017
|
labelKey: "provider-reolink:schema.s_motion.motionEnabled.label",
|
|
200013
|
-
description: "Master switch for the camera's on-board motion detector. Disabling stops the camera from emitting motion events on the alarm channel.",
|
|
200014
|
-
descriptionKey: "provider-reolink:schema.s_motion.motionEnabled.description",
|
|
200015
200018
|
default: motionSnap.enabled ?? true,
|
|
200016
200019
|
style: "switch",
|
|
200017
200020
|
span: 2
|
|
@@ -200020,8 +200023,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200020
200023
|
key: "motionSensitivity",
|
|
200021
200024
|
label: "Sensitivity",
|
|
200022
200025
|
labelKey: "provider-reolink:schema.s_motion.motionSensitivity.label",
|
|
200023
|
-
description: "Higher = triggers on smaller motion. Reolink user-facing range 1..50.",
|
|
200024
|
-
descriptionKey: "provider-reolink:schema.s_motion.motionSensitivity.description",
|
|
200025
200026
|
min: 1,
|
|
200026
200027
|
max: 50,
|
|
200027
200028
|
step: 1,
|
|
@@ -200036,8 +200037,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200036
200037
|
tab: "motion",
|
|
200037
200038
|
title: "AI detection sensitivity",
|
|
200038
200039
|
titleKey: "provider-reolink:schema.s_ai-sensitivity.title",
|
|
200039
|
-
description: "Per-class on-camera AI sensitivity, stay time (dwell) + min/max target-size gates. Pushed via `SetAiAlarm` (cmd_id 343) in one consolidated write. Sensitivity range 0..100; stay time is the seconds the camera keeps the alarm asserted after the object leaves; target-size gates are the fraction of the frame (0..1) an object must occupy to be considered. Each group appears only when the camera advertises the corresponding detector.",
|
|
200040
|
-
descriptionKey: "provider-reolink:schema.s_ai-sensitivity.description",
|
|
200041
200040
|
columns: 2,
|
|
200042
200041
|
fields: [
|
|
200043
200042
|
[
|
|
@@ -200106,7 +200105,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200106
200105
|
type: "slider",
|
|
200107
200106
|
key: stayKey,
|
|
200108
200107
|
label: `${label} stay time (s)`,
|
|
200109
|
-
description: "Seconds the camera keeps the AI alarm asserted after the object leaves frame.",
|
|
200110
200108
|
min: 0,
|
|
200111
200109
|
max: 600,
|
|
200112
200110
|
step: 1,
|
|
@@ -200169,8 +200167,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200169
200167
|
tab: "image",
|
|
200170
200168
|
title: "Image",
|
|
200171
200169
|
titleKey: "provider-reolink:schema.s_image.title",
|
|
200172
|
-
description: "Core image settings pushed via Baichuan `SetImage` (cmd_id 25). Each slider rearms the camera on save; defaults seed from a `GetVideoInput` probe at boot (refreshed on every `applySettingsPatch`). Range 0..255 — most Reolink models clamp to 0..100 internally.",
|
|
200173
|
-
descriptionKey: "provider-reolink:schema.s_image.description",
|
|
200174
200170
|
columns: 2,
|
|
200175
200171
|
fields: [
|
|
200176
200172
|
{
|
|
@@ -200241,24 +200237,18 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200241
200237
|
tab: "image",
|
|
200242
200238
|
title: "Advanced (ISP)",
|
|
200243
200239
|
titleKey: "provider-reolink:schema.s_isp.title",
|
|
200244
|
-
description: "Day/Night + exposure + HDR. Pushed via `SetIsp` (cmd_id 25). The day/night threshold uses cmd_id 297 (DayNightThreshold).",
|
|
200245
|
-
descriptionKey: "provider-reolink:schema.s_isp.description",
|
|
200246
200240
|
columns: 2,
|
|
200247
200241
|
fields: [{
|
|
200248
200242
|
type: "text",
|
|
200249
200243
|
key: "ispDayNight",
|
|
200250
200244
|
label: "Day/Night mode",
|
|
200251
200245
|
labelKey: "provider-reolink:schema.s_isp.ispDayNight.label",
|
|
200252
|
-
description: "Camera-specific values — common: `auto`, `color`, `blackAndWhite`. The driver normalizes case before push.",
|
|
200253
|
-
descriptionKey: "provider-reolink:schema.s_isp.ispDayNight.description",
|
|
200254
200246
|
default: imgSnap.dayNight ?? "auto"
|
|
200255
200247
|
}, {
|
|
200256
200248
|
type: "text",
|
|
200257
200249
|
key: "ispExposure",
|
|
200258
200250
|
label: "Exposure",
|
|
200259
200251
|
labelKey: "provider-reolink:schema.s_isp.ispExposure.label",
|
|
200260
|
-
description: "Common values: `auto`, `manual`. Lowercased before push.",
|
|
200261
|
-
descriptionKey: "provider-reolink:schema.s_isp.ispExposure.description",
|
|
200262
200252
|
default: "auto"
|
|
200263
200253
|
}]
|
|
200264
200254
|
}] : [],
|
|
@@ -200267,8 +200257,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200267
200257
|
tab: "image",
|
|
200268
200258
|
title: "IR + status LED",
|
|
200269
200259
|
titleKey: "provider-reolink:schema.s_ir-lights.title",
|
|
200270
|
-
description: "IR LED control + per-camera IR brightness. Pushed via `SetIrLights` (cmd_id 209). State `Auto` lets the camera switch IR on automatically at low light; `Off` forces colour-only mode.",
|
|
200271
|
-
descriptionKey: "provider-reolink:schema.s_ir-lights.description",
|
|
200272
200260
|
columns: 2,
|
|
200273
200261
|
fields: [
|
|
200274
200262
|
{
|
|
@@ -200300,7 +200288,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200300
200288
|
key: "irLightsBrightness",
|
|
200301
200289
|
label: "IR brightness",
|
|
200302
200290
|
labelKey: "provider-reolink:schema.s_ir-lights.irLightsBrightness.label",
|
|
200303
|
-
description: "Only applied when the camera
|
|
200291
|
+
description: "Only applied when the camera supports adjustable IR brightness.",
|
|
200304
200292
|
descriptionKey: "provider-reolink:schema.s_ir-lights.irLightsBrightness.description",
|
|
200305
200293
|
min: 0,
|
|
200306
200294
|
max: 255,
|
|
@@ -200314,8 +200302,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200314
200302
|
key: "statusLedEnabled",
|
|
200315
200303
|
label: "Status LED",
|
|
200316
200304
|
labelKey: "provider-reolink:schema.s_ir-lights.statusLedEnabled.label",
|
|
200317
|
-
description: "The visible status/power LED on the camera body. Pushed via `SetIrLights` (cmd_id 209) as `lightState`.",
|
|
200318
|
-
descriptionKey: "provider-reolink:schema.s_ir-lights.statusLedEnabled.description",
|
|
200319
200305
|
default: cache?.ledSnapshot?.statusEnabled ?? true,
|
|
200320
200306
|
style: "switch",
|
|
200321
200307
|
span: cache?.ledSnapshot?.doorbellSupported === true ? 1 : 2
|
|
@@ -200325,8 +200311,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200325
200311
|
key: "doorbellLedEnabled",
|
|
200326
200312
|
label: "Doorbell LED",
|
|
200327
200313
|
labelKey: "provider-reolink:schema.s_ir-lights.doorbellLedEnabled.label",
|
|
200328
|
-
description: "The doorbell button ring LED. Pushed via `SetIrLights` (cmd_id 209) as `doorbellLightState`.",
|
|
200329
|
-
descriptionKey: "provider-reolink:schema.s_ir-lights.doorbellLedEnabled.description",
|
|
200330
200314
|
default: cache?.ledSnapshot?.doorbellEnabled ?? true,
|
|
200331
200315
|
style: "switch"
|
|
200332
200316
|
}] : []
|
|
@@ -200341,7 +200325,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200341
200325
|
tab: "image",
|
|
200342
200326
|
title: "Auto focus",
|
|
200343
200327
|
titleKey: "provider-reolink:schema.s_auto-focus.title",
|
|
200344
|
-
description: "
|
|
200328
|
+
description: "Disabling locks the lens at its current focus.",
|
|
200345
200329
|
descriptionKey: "provider-reolink:schema.s_auto-focus.description",
|
|
200346
200330
|
columns: 1,
|
|
200347
200331
|
fields: [{
|
|
@@ -200358,8 +200342,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200358
200342
|
tab: "audio",
|
|
200359
200343
|
title: "Audio output",
|
|
200360
200344
|
titleKey: "provider-reolink:schema.s_audio.title",
|
|
200361
|
-
description: "Speaker volumes pushed via `SetAudioCfg` (cmd_id 265). All ranges 0..100. Doorbell models expose the visitor / talkAndReply channels — non-doorbell cameras ignore those without erroring.",
|
|
200362
|
-
descriptionKey: "provider-reolink:schema.s_audio.description",
|
|
200363
200345
|
columns: 2,
|
|
200364
200346
|
fields: [
|
|
200365
200347
|
{
|
|
@@ -200379,7 +200361,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200379
200361
|
key: "audioTalkAndReplyVolume",
|
|
200380
200362
|
label: "Talk + reply volume",
|
|
200381
200363
|
labelKey: "provider-reolink:schema.s_audio.audioTalkAndReplyVolume.label",
|
|
200382
|
-
description: "
|
|
200364
|
+
description: "Doorbell models only.",
|
|
200383
200365
|
descriptionKey: "provider-reolink:schema.s_audio.audioTalkAndReplyVolume.description",
|
|
200384
200366
|
min: 0,
|
|
200385
200367
|
max: 100,
|
|
@@ -200393,7 +200375,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200393
200375
|
key: "audioVisitorVolume",
|
|
200394
200376
|
label: "Visitor volume",
|
|
200395
200377
|
labelKey: "provider-reolink:schema.s_audio.audioVisitorVolume.label",
|
|
200396
|
-
description: "
|
|
200378
|
+
description: "Doorbell models only.",
|
|
200397
200379
|
descriptionKey: "provider-reolink:schema.s_audio.audioVisitorVolume.description",
|
|
200398
200380
|
min: 0,
|
|
200399
200381
|
max: 100,
|
|
@@ -200410,8 +200392,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200410
200392
|
tab: "audio",
|
|
200411
200393
|
title: "Audio noise reduction",
|
|
200412
200394
|
titleKey: "provider-reolink:schema.s_audio-noise.title",
|
|
200413
|
-
description: "On-camera AI denoise applied to the encoded audio track. Pushed via `SetAudioNoise` (cmd_id 440). 0 disables; 1..3 maps to the Reolink mobile app levels (low / mid / high).",
|
|
200414
|
-
descriptionKey: "provider-reolink:schema.s_audio-noise.description",
|
|
200415
200395
|
columns: 1,
|
|
200416
200396
|
fields: [{
|
|
200417
200397
|
type: "slider",
|
|
@@ -200433,7 +200413,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200433
200413
|
tab: "audio",
|
|
200434
200414
|
title: "Intercom",
|
|
200435
200415
|
titleKey: "provider-reolink:schema.s_intercom.title",
|
|
200436
|
-
description: "
|
|
200416
|
+
description: "Changes apply to the next talk session.",
|
|
200437
200417
|
descriptionKey: "provider-reolink:schema.s_intercom.description",
|
|
200438
200418
|
columns: 2,
|
|
200439
200419
|
fields: [
|
|
@@ -200442,7 +200422,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200442
200422
|
key: "intercomBlocksPerPayload",
|
|
200443
200423
|
label: "Blocks per payload",
|
|
200444
200424
|
labelKey: "provider-reolink:schema.s_intercom.intercomBlocksPerPayload.label",
|
|
200445
|
-
description: "Lower
|
|
200425
|
+
description: "Lower is lower latency, higher is fewer calls. Range 1..8.",
|
|
200446
200426
|
descriptionKey: "provider-reolink:schema.s_intercom.intercomBlocksPerPayload.description",
|
|
200447
200427
|
min: 1,
|
|
200448
200428
|
max: 8,
|
|
@@ -200456,7 +200436,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200456
200436
|
key: "intercomMaxBacklogMs",
|
|
200457
200437
|
label: "Max backlog (ms)",
|
|
200458
200438
|
labelKey: "provider-reolink:schema.s_intercom.intercomMaxBacklogMs.label",
|
|
200459
|
-
description: "
|
|
200439
|
+
description: "Higher is more stable on slow systems but adds latency. Range 20..5000.",
|
|
200460
200440
|
descriptionKey: "provider-reolink:schema.s_intercom.intercomMaxBacklogMs.description",
|
|
200461
200441
|
min: 20,
|
|
200462
200442
|
max: 5e3,
|
|
@@ -200470,7 +200450,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200470
200450
|
key: "intercomGain",
|
|
200471
200451
|
label: "Output gain",
|
|
200472
200452
|
labelKey: "provider-reolink:schema.s_intercom.intercomGain.label",
|
|
200473
|
-
description: "
|
|
200453
|
+
description: "1.0 = neutral, 2.0 ≈ +6 dB, 0.5 ≈ -6 dB.",
|
|
200474
200454
|
descriptionKey: "provider-reolink:schema.s_intercom.intercomGain.description",
|
|
200475
200455
|
min: .1,
|
|
200476
200456
|
max: 10,
|
|
@@ -200487,7 +200467,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200487
200467
|
tab: "advanced",
|
|
200488
200468
|
title: "Keyframe interval (GOP)",
|
|
200489
200469
|
titleKey: "provider-reolink:schema.s_keyframe-gop.title",
|
|
200490
|
-
description: "
|
|
200470
|
+
description: "Lower = more keyframes (faster recovery, higher bitrate).",
|
|
200491
200471
|
descriptionKey: "provider-reolink:schema.s_keyframe-gop.description",
|
|
200492
200472
|
columns: 1,
|
|
200493
200473
|
fields: [{
|
|
@@ -200508,8 +200488,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200508
200488
|
tab: "advanced",
|
|
200509
200489
|
title: "PIR detection",
|
|
200510
200490
|
titleKey: "provider-reolink:schema.s_pir-reduce-alarm.title",
|
|
200511
|
-
description: "Passive-infrared false-alarm filter. Pushed via `SetPirInfo` (cmd_id 213) as `reduceAlarm`. Enabling makes the camera require a stronger/longer PIR signal before triggering, cutting false motion alerts from heat/light flicker.",
|
|
200512
|
-
descriptionKey: "provider-reolink:schema.s_pir-reduce-alarm.description",
|
|
200513
200491
|
columns: 1,
|
|
200514
200492
|
fields: [{
|
|
200515
200493
|
type: "boolean",
|
|
@@ -200525,8 +200503,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200525
200503
|
tab: "advanced",
|
|
200526
200504
|
title: "Auto reboot",
|
|
200527
200505
|
titleKey: "provider-reolink:schema.s_auto-reboot.title",
|
|
200528
|
-
description: "Scheduled automatic reboot. Pushed via `SetAutoReboot` (cmd_id 100). Useful for long-uptime stability. Choose a day (or every day) + time; the camera reboots once per matching window.",
|
|
200529
|
-
descriptionKey: "provider-reolink:schema.s_auto-reboot.description",
|
|
200530
200506
|
columns: 2,
|
|
200531
200507
|
fields: [
|
|
200532
200508
|
{
|
|
@@ -200615,7 +200591,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200615
200591
|
tab: "advanced",
|
|
200616
200592
|
title: "Debug",
|
|
200617
200593
|
titleKey: "provider-reolink:schema.s_debug.title",
|
|
200618
|
-
description: "
|
|
200594
|
+
description: "Debug logging adds log volume; use it temporarily.",
|
|
200619
200595
|
descriptionKey: "provider-reolink:schema.s_debug.description",
|
|
200620
200596
|
columns: 1,
|
|
200621
200597
|
fields: [{
|
|
@@ -200623,8 +200599,6 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200623
200599
|
key: "debugGeneral",
|
|
200624
200600
|
label: "General debug logs",
|
|
200625
200601
|
labelKey: "provider-reolink:schema.s_debug.debugGeneral.label",
|
|
200626
|
-
description: "Forwards `DebugOptions.general=true` — verbose lib protocol logs.",
|
|
200627
|
-
descriptionKey: "provider-reolink:schema.s_debug.debugGeneral.description",
|
|
200628
200602
|
default: false,
|
|
200629
200603
|
style: "switch"
|
|
200630
200604
|
}, {
|
|
@@ -200632,7 +200606,7 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
200632
200606
|
key: "debugSocketLogs",
|
|
200633
200607
|
label: "Socket trace categories",
|
|
200634
200608
|
labelKey: "provider-reolink:schema.s_debug.debugSocketLogs.label",
|
|
200635
|
-
description: "
|
|
200609
|
+
description: "Each area adds log volume.",
|
|
200636
200610
|
descriptionKey: "provider-reolink:schema.s_debug.debugSocketLogs.description",
|
|
200637
200611
|
default: [],
|
|
200638
200612
|
options: [
|
|
@@ -202203,7 +202177,7 @@ var ReolinkHub = class ReolinkHub extends BaseDevice {
|
|
|
202203
202177
|
tab: "general",
|
|
202204
202178
|
title: "Connection",
|
|
202205
202179
|
titleKey: "provider-reolink:hub.s_connection.title",
|
|
202206
|
-
description: "
|
|
202180
|
+
description: "Child cameras inherit these credentials.",
|
|
202207
202181
|
descriptionKey: "provider-reolink:hub.s_connection.description",
|
|
202208
202182
|
columns: 2,
|
|
202209
202183
|
fields: [
|
|
@@ -202247,8 +202221,6 @@ var ReolinkHub = class ReolinkHub extends BaseDevice {
|
|
|
202247
202221
|
tab: "general",
|
|
202248
202222
|
title: "Hub identity",
|
|
202249
202223
|
titleKey: "provider-reolink:hub.s_identity.title",
|
|
202250
|
-
description: "Read-only summary from the autodetect probe. Channel count and model are persisted at first contact so the panel renders without re-probing.",
|
|
202251
|
-
descriptionKey: "provider-reolink:hub.s_identity.description",
|
|
202252
202224
|
columns: 2,
|
|
202253
202225
|
fields: [{
|
|
202254
202226
|
type: "text",
|
|
@@ -202271,7 +202243,7 @@ var ReolinkHub = class ReolinkHub extends BaseDevice {
|
|
|
202271
202243
|
tab: "advanced",
|
|
202272
202244
|
title: "Debug",
|
|
202273
202245
|
titleKey: "provider-reolink:hub.s_debug.title",
|
|
202274
|
-
description: "
|
|
202246
|
+
description: "Debug logging adds log volume; use it temporarily.",
|
|
202275
202247
|
descriptionKey: "provider-reolink:hub.s_debug.description",
|
|
202276
202248
|
columns: 1,
|
|
202277
202249
|
fields: [{
|
|
@@ -202279,8 +202251,6 @@ var ReolinkHub = class ReolinkHub extends BaseDevice {
|
|
|
202279
202251
|
key: "debugGeneral",
|
|
202280
202252
|
label: "General debug logs",
|
|
202281
202253
|
labelKey: "provider-reolink:hub.s_debug.debugGeneral.label",
|
|
202282
|
-
description: "Forwards `DebugOptions.general=true` — verbose lib protocol logs.",
|
|
202283
|
-
descriptionKey: "provider-reolink:hub.s_debug.debugGeneral.description",
|
|
202284
202254
|
default: false,
|
|
202285
202255
|
style: "switch"
|
|
202286
202256
|
}, {
|
|
@@ -202288,7 +202258,7 @@ var ReolinkHub = class ReolinkHub extends BaseDevice {
|
|
|
202288
202258
|
key: "debugSocketLogs",
|
|
202289
202259
|
label: "Socket trace categories",
|
|
202290
202260
|
labelKey: "provider-reolink:hub.s_debug.debugSocketLogs.label",
|
|
202291
|
-
description: "
|
|
202261
|
+
description: "Each area adds log volume.",
|
|
202292
202262
|
descriptionKey: "provider-reolink:hub.s_debug.debugSocketLogs.description",
|
|
202293
202263
|
default: [],
|
|
202294
202264
|
options: [
|
|
@@ -203051,7 +203021,7 @@ function buildDiscoveryParamsFormSchema() {
|
|
|
203051
203021
|
id: "credentials",
|
|
203052
203022
|
title: "Credentials",
|
|
203053
203023
|
titleKey: "provider-reolink:discoveryParams.s_credentials.title",
|
|
203054
|
-
description: "
|
|
203024
|
+
description: "Assumes all cameras share these credentials.",
|
|
203055
203025
|
descriptionKey: "provider-reolink:discoveryParams.s_credentials.description",
|
|
203056
203026
|
columns: 2,
|
|
203057
203027
|
fields: [{
|
|
@@ -203073,7 +203043,7 @@ function buildDiscoveryParamsFormSchema() {
|
|
|
203073
203043
|
id: "scan",
|
|
203074
203044
|
title: "Scan options",
|
|
203075
203045
|
titleKey: "provider-reolink:discoveryParams.s_scan.title",
|
|
203076
|
-
description: "Leave
|
|
203046
|
+
description: "Leave blank to scan the local subnet; for another subnet enter its CIDR (e.g. 192.168.20.0/24).",
|
|
203077
203047
|
descriptionKey: "provider-reolink:discoveryParams.s_scan.description",
|
|
203078
203048
|
columns: 1,
|
|
203079
203049
|
fields: [
|
|
@@ -203124,8 +203094,6 @@ function buildCreationFormSchema() {
|
|
|
203124
203094
|
id: "credentials",
|
|
203125
203095
|
title: "Credentials",
|
|
203126
203096
|
titleKey: "provider-reolink:creation.s_credentials.title",
|
|
203127
|
-
description: "Required for the autodetect probe — entered before the host so Test can run immediately.",
|
|
203128
|
-
descriptionKey: "provider-reolink:creation.s_credentials.description",
|
|
203129
203097
|
columns: 2,
|
|
203130
203098
|
fields: [{
|
|
203131
203099
|
type: "text",
|
|
@@ -203147,8 +203115,6 @@ function buildCreationFormSchema() {
|
|
|
203147
203115
|
id: "connection",
|
|
203148
203116
|
title: "Connection",
|
|
203149
203117
|
titleKey: "provider-reolink:creation.s_connection.title",
|
|
203150
|
-
description: "Click Test to auto-detect the device type (regular camera / NVR / battery / UDP-only). The detected type is then used at save time.",
|
|
203151
|
-
descriptionKey: "provider-reolink:creation.s_connection.description",
|
|
203152
203118
|
columns: 2,
|
|
203153
203119
|
fields: [
|
|
203154
203120
|
{
|
|
@@ -203157,7 +203123,7 @@ function buildCreationFormSchema() {
|
|
|
203157
203123
|
label: "Connection mode",
|
|
203158
203124
|
labelKey: "provider-reolink:creation.s_connection.transport.label",
|
|
203159
203125
|
default: "auto",
|
|
203160
|
-
description: "Auto
|
|
203126
|
+
description: "Auto tries TCP, then UDP. Battery cameras behind NAT need UDP.",
|
|
203161
203127
|
descriptionKey: "provider-reolink:creation.s_connection.transport.description",
|
|
203162
203128
|
options: [
|
|
203163
203129
|
{
|
|
@@ -203184,7 +203150,7 @@ function buildCreationFormSchema() {
|
|
|
203184
203150
|
labelKey: "provider-reolink:creation.s_connection.host.label",
|
|
203185
203151
|
required: true,
|
|
203186
203152
|
placeholder: "192.168.10.100",
|
|
203187
|
-
description: "
|
|
203153
|
+
description: "In UDP-only mode leave blank and use the UID below.",
|
|
203188
203154
|
descriptionKey: "provider-reolink:creation.s_connection.host.description",
|
|
203189
203155
|
inputType: "text"
|
|
203190
203156
|
},
|
|
@@ -203197,8 +203163,6 @@ function buildCreationFormSchema() {
|
|
|
203197
203163
|
min: 1,
|
|
203198
203164
|
max: 65535,
|
|
203199
203165
|
step: 1,
|
|
203200
|
-
description: "Baichuan port. Default 9000 — applies to TCP. Ignored for UDP transport.",
|
|
203201
|
-
descriptionKey: "provider-reolink:creation.s_connection.port.description",
|
|
203202
203166
|
showWhen: {
|
|
203203
203167
|
field: "transport",
|
|
203204
203168
|
notEquals: "udp"
|
|
@@ -203210,7 +203174,7 @@ function buildCreationFormSchema() {
|
|
|
203210
203174
|
label: "Device UID",
|
|
203211
203175
|
labelKey: "provider-reolink:creation.s_connection.uid.label",
|
|
203212
203176
|
placeholder: "9527000XXXXXXXX",
|
|
203213
|
-
description: "
|
|
203177
|
+
description: "Needed for battery / UDP cameras that are not on the same LAN.",
|
|
203214
203178
|
descriptionKey: "provider-reolink:creation.s_connection.uid.description",
|
|
203215
203179
|
showWhen: {
|
|
203216
203180
|
field: "transport",
|
|
@@ -203751,7 +203715,7 @@ function buildEmailPushSettingsSchema(recommendedHost) {
|
|
|
203751
203715
|
id: "email-push",
|
|
203752
203716
|
title: "Battery-cam Motion (Email/SMTP Push)",
|
|
203753
203717
|
titleKey: "provider-reolink:emailPushSettings.s_email-push.title",
|
|
203754
|
-
description: "
|
|
203718
|
+
description: "Lets battery cameras report motion by email without being woken.",
|
|
203755
203719
|
descriptionKey: "provider-reolink:emailPushSettings.s_email-push.description",
|
|
203756
203720
|
columns: 2,
|
|
203757
203721
|
fields: [
|
|
@@ -203791,7 +203755,7 @@ function buildEmailPushSettingsSchema(recommendedHost) {
|
|
|
203791
203755
|
id: "email-push-auth",
|
|
203792
203756
|
title: "Email Push Authentication",
|
|
203793
203757
|
titleKey: "provider-reolink:emailPushSettings.s_email-push-auth.title",
|
|
203794
|
-
description: "
|
|
203758
|
+
description: "Random values are generated on first boot; re-run Auto-configure on cameras after changing them.",
|
|
203795
203759
|
descriptionKey: "provider-reolink:emailPushSettings.s_email-push-auth.description",
|
|
203796
203760
|
columns: 2,
|
|
203797
203761
|
fields: [
|
|
@@ -204000,7 +203964,7 @@ function buildBaichuanWebhookSettingsSchema(recommendedHost) {
|
|
|
204000
203964
|
id: "baichuan-webhook",
|
|
204001
203965
|
title: "Battery-cam Motion (HaCfg Webhook)",
|
|
204002
203966
|
titleKey: "provider-reolink:baichuanWebhookSettings.s_baichuan-webhook.title",
|
|
204003
|
-
description: "
|
|
203967
|
+
description: "Preferred over email push when the camera firmware supports it.",
|
|
204004
203968
|
descriptionKey: "provider-reolink:baichuanWebhookSettings.s_baichuan-webhook.description",
|
|
204005
203969
|
columns: 2,
|
|
204006
203970
|
fields: [
|