@camstack/addon-provider-amcrest 0.2.151 → 0.2.153
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 +243 -77
- package/dist/addon.mjs +243 -77
- package/i18n/en.json +6 -11
- package/i18n/it.json +6 -11
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -35,7 +35,7 @@ let node_stream_promises = require("node:stream/promises");
|
|
|
35
35
|
let node_child_process = require("node:child_process");
|
|
36
36
|
require("node:zlib");
|
|
37
37
|
let node_os = require("node:os");
|
|
38
|
-
//#region ../types/dist/event-category-
|
|
38
|
+
//#region ../types/dist/event-category-BfJwUd2S.mjs
|
|
39
39
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
40
40
|
EventCategory["SystemBoot"] = "system.boot";
|
|
41
41
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -352,6 +352,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
352
352
|
*/
|
|
353
353
|
EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
|
|
354
354
|
/**
|
|
355
|
+
* A camera's motion source has fired constantly with no subject for an hour
|
|
356
|
+
* (motion duty or session count over the bar, zero detections) — it is not
|
|
357
|
+
* blind, its motion zones or sensitivity want tuning (D907). Paired with
|
|
358
|
+
* {@link PipelineMotionCalm}.
|
|
359
|
+
*/
|
|
360
|
+
EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
|
|
361
|
+
/** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
|
|
362
|
+
EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
|
|
363
|
+
/**
|
|
355
364
|
* Per-camera pipeline config was mutated by the orchestrator
|
|
356
365
|
* (3-level settings change via `setAgentAddonDefaults` /
|
|
357
366
|
* `setCameraStepToggle` / `setCameraPipelineForAgent` or a
|
|
@@ -723,6 +732,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
723
732
|
EventCategory["BackupRestored"] = "backup.restored";
|
|
724
733
|
EventCategory["NotificationDispatched"] = "notification.dispatched";
|
|
725
734
|
EventCategory["NotificationFailed"] = "notification.failed";
|
|
735
|
+
/**
|
|
736
|
+
* A notification rule that cannot work (D905): its stored row does not load,
|
|
737
|
+
* or it still names a device / delivery target the prune CONFIRMED deleted.
|
|
738
|
+
* One edge per rule per distinct set of reasons; never on an unanswered read.
|
|
739
|
+
*/
|
|
740
|
+
EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
|
|
741
|
+
/** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
|
|
742
|
+
EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
|
|
726
743
|
EventCategory["DeviceUpdated"] = "device.updated";
|
|
727
744
|
/**
|
|
728
745
|
* Transport-level connectivity. Emitted by the device driver when
|
|
@@ -5450,7 +5467,7 @@ var ZodIssueCode = {
|
|
|
5450
5467
|
var ZodFirstPartyTypeKind;
|
|
5451
5468
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5452
5469
|
//#endregion
|
|
5453
|
-
//#region ../types/dist/sleep-
|
|
5470
|
+
//#region ../types/dist/sleep-DJFUfKvA.mjs
|
|
5454
5471
|
/**
|
|
5455
5472
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5456
5473
|
* window to float samples (D455).
|
|
@@ -7979,7 +7996,7 @@ var EntryDescriptorSchema = object({
|
|
|
7979
7996
|
/** JSON Schema of the entry body; `secret: true` marks a password field. */
|
|
7980
7997
|
fields: record(string(), unknown())
|
|
7981
7998
|
}).strict();
|
|
7982
|
-
/** What crosses the wire
|
|
7999
|
+
/** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
|
|
7983
8000
|
var RecordKindDeclarationSchema = object({
|
|
7984
8001
|
database: _enum(RECORD_DATABASES).default("settings"),
|
|
7985
8002
|
class: _enum(RECORD_CLASSES),
|
|
@@ -7998,14 +8015,6 @@ var RecordKindDeclarationSchema = object({
|
|
|
7998
8015
|
secretPaths: array(string().min(1)).default([]),
|
|
7999
8016
|
/** The id key of each array that carries a secret (`{ headers: 'name' }`). */
|
|
8000
8017
|
secretArrayKeys: record(string(), string()).default({}),
|
|
8001
|
-
/**
|
|
8002
|
-
* RETIRED (D900): the legacy table a kind adopted from during the records
|
|
8003
|
-
* migration. Nothing declares it any more and nothing reads it; the schema
|
|
8004
|
-
* still ACCEPTS it because the catalog rows the migration wrote carry it
|
|
8005
|
-
* (an orphaned kind is never redeclared) and an addon built before the
|
|
8006
|
-
* removal still sends it. Never set it.
|
|
8007
|
-
*/
|
|
8008
|
-
adoptsFrom: string().min(1).optional(),
|
|
8009
8018
|
/** Kinds that must agree through `transact` sit in one file under one family name. */
|
|
8010
8019
|
transactFamily: string().min(1).optional(),
|
|
8011
8020
|
entry: EntryDescriptorSchema.optional()
|
|
@@ -12707,17 +12716,6 @@ object({
|
|
|
12707
12716
|
createdAt: number(),
|
|
12708
12717
|
updatedAt: number()
|
|
12709
12718
|
});
|
|
12710
|
-
object({
|
|
12711
|
-
id: string(),
|
|
12712
|
-
label: string(),
|
|
12713
|
-
isAdmin: boolean().default(false),
|
|
12714
|
-
allowedProviders: AllowedProviderSchema,
|
|
12715
|
-
allowedDevices: AllowedDevicesSchema,
|
|
12716
|
-
tokenHash: string(),
|
|
12717
|
-
tokenPrefix: string(),
|
|
12718
|
-
createdAt: number(),
|
|
12719
|
-
lastUsedAt: number().optional()
|
|
12720
|
-
});
|
|
12721
12719
|
object({
|
|
12722
12720
|
id: string(),
|
|
12723
12721
|
userId: string(),
|
|
@@ -16699,16 +16697,36 @@ var RecordKindStateSchema = _enum([
|
|
|
16699
16697
|
var DeclareKindResultSchema = object({
|
|
16700
16698
|
kindId: number().int(),
|
|
16701
16699
|
state: RecordKindStateSchema,
|
|
16702
|
-
createdIndexes: array(string())
|
|
16703
|
-
/**
|
|
16704
|
-
* RETIRED (D900): always `null`. It carried the records-migration boot guard;
|
|
16705
|
-
* it stays on the wire, null, because an addon built before the removal reads
|
|
16706
|
-
* an ABSENT field as "adoption pending" and refuses to start.
|
|
16707
|
-
*/
|
|
16708
|
-
adoptionPending: _null()
|
|
16700
|
+
createdIndexes: array(string())
|
|
16709
16701
|
});
|
|
16710
16702
|
/** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
|
|
16711
16703
|
var SecretRefsList = array(string());
|
|
16704
|
+
/**
|
|
16705
|
+
* One op of a `transact`: the single-row writes, each on a kind of the caller.
|
|
16706
|
+
* All ops of one call share ONE database file and ONE `transactFamily`.
|
|
16707
|
+
*/
|
|
16708
|
+
var RecordTransactOpSchema = discriminatedUnion("op", [
|
|
16709
|
+
object({
|
|
16710
|
+
op: literal("put"),
|
|
16711
|
+
kind: RecordKindNameSchema,
|
|
16712
|
+
record: RecordInputSchema,
|
|
16713
|
+
ifRev: number().int().min(0).optional()
|
|
16714
|
+
}),
|
|
16715
|
+
object({
|
|
16716
|
+
op: literal("patch"),
|
|
16717
|
+
kind: RecordKindNameSchema,
|
|
16718
|
+
id: RecordIdSchema,
|
|
16719
|
+
data: RecordBodySchema,
|
|
16720
|
+
at: number().int().nullable().optional(),
|
|
16721
|
+
expiresAt: number().int().nullable().optional(),
|
|
16722
|
+
ifRev: number().int().min(1).optional()
|
|
16723
|
+
}),
|
|
16724
|
+
object({
|
|
16725
|
+
op: literal("delete"),
|
|
16726
|
+
kind: RecordKindNameSchema,
|
|
16727
|
+
id: RecordIdSchema
|
|
16728
|
+
})
|
|
16729
|
+
]);
|
|
16712
16730
|
var RecordSecretRefsSchema = record(string(), record(string(), string()));
|
|
16713
16731
|
method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
|
|
16714
16732
|
kind: "mutation",
|
|
@@ -16815,6 +16833,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
|
|
|
16815
16833
|
}), {
|
|
16816
16834
|
kind: "mutation",
|
|
16817
16835
|
auth: "admin"
|
|
16836
|
+
}), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
|
|
16837
|
+
results: array(object({
|
|
16838
|
+
rev: number().int().nullable(),
|
|
16839
|
+
deleted: boolean()
|
|
16840
|
+
})),
|
|
16841
|
+
releasedRefs: SecretRefsList,
|
|
16842
|
+
secretRefs: SecretRefsList
|
|
16843
|
+
}), {
|
|
16844
|
+
kind: "mutation",
|
|
16845
|
+
auth: "admin"
|
|
16818
16846
|
}), method(object({
|
|
16819
16847
|
deviceId: number().int(),
|
|
16820
16848
|
kinds: array(RecordKindNameSchema).optional()
|
|
@@ -42522,9 +42550,13 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42522
42550
|
"node-updating",
|
|
42523
42551
|
"node-inference-unavailable",
|
|
42524
42552
|
"detection-blind",
|
|
42553
|
+
"motion-noisy",
|
|
42554
|
+
"motion-calm",
|
|
42525
42555
|
"recording-stalled",
|
|
42526
42556
|
"recording-healthy",
|
|
42527
42557
|
"recording-degraded",
|
|
42558
|
+
"device-attention-required",
|
|
42559
|
+
"device-attention-resolved",
|
|
42528
42560
|
"storage-location-low",
|
|
42529
42561
|
"storage-location-critical",
|
|
42530
42562
|
"storage-location-ok",
|
|
@@ -42548,6 +42580,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42548
42580
|
"alert-critical",
|
|
42549
42581
|
"alert-error",
|
|
42550
42582
|
"alert-critical-resolved",
|
|
42583
|
+
"rule-broken",
|
|
42584
|
+
"rule-repaired",
|
|
42551
42585
|
"camera-online",
|
|
42552
42586
|
"camera-offline",
|
|
42553
42587
|
"camera-disabled",
|
|
@@ -56359,6 +56393,16 @@ var DishwasherStatusSchema = object({
|
|
|
56359
56393
|
powerState: string().nullable(),
|
|
56360
56394
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56361
56395
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56396
|
+
/**
|
|
56397
|
+
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
56398
|
+
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
56399
|
+
* when none is reported. A cleared reminder is not an unknown one.
|
|
56400
|
+
*/
|
|
56401
|
+
filterCleaningDue: boolean().nullable(),
|
|
56402
|
+
/** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
|
|
56403
|
+
machineCareDue: boolean().nullable(),
|
|
56404
|
+
/** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
|
|
56405
|
+
machineCareRemainingRuns: number().int().nonnegative().nullable(),
|
|
56362
56406
|
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56363
56407
|
halfLoad: boolean().nullable(),
|
|
56364
56408
|
hygienePlus: boolean().nullable(),
|
|
@@ -65471,16 +65515,6 @@ var UpdateUserInputSchema = object({
|
|
|
65471
65515
|
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65472
65516
|
scopes: array(TokenScopeSchema).optional()
|
|
65473
65517
|
});
|
|
65474
|
-
var ApiKeySummarySchema = object({
|
|
65475
|
-
id: string(),
|
|
65476
|
-
label: string(),
|
|
65477
|
-
isAdmin: boolean().default(false),
|
|
65478
|
-
allowedProviders: union([array(string()), literal("*")]).optional(),
|
|
65479
|
-
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65480
|
-
tokenPrefix: string(),
|
|
65481
|
-
createdAt: number(),
|
|
65482
|
-
lastUsedAt: number().optional()
|
|
65483
|
-
});
|
|
65484
65518
|
var OauthSessionSummarySchema = object({
|
|
65485
65519
|
id: string(),
|
|
65486
65520
|
userId: string(),
|
|
@@ -65502,8 +65536,7 @@ var TotpStatusSchema = object({
|
|
|
65502
65536
|
confirmedAt: number().nullable()
|
|
65503
65537
|
});
|
|
65504
65538
|
/**
|
|
65505
|
-
* user-management — singleton capability for user accounts
|
|
65506
|
-
* legacy API-key rows.
|
|
65539
|
+
* user-management — singleton capability for user accounts.
|
|
65507
65540
|
*
|
|
65508
65541
|
* v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
|
|
65509
65542
|
* — the subset check on `setUserScopes` is moot
|
|
@@ -65559,10 +65592,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
65559
65592
|
}), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
|
|
65560
65593
|
kind: "mutation",
|
|
65561
65594
|
access: "view"
|
|
65562
|
-
}), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
|
|
65563
|
-
kind: "mutation",
|
|
65564
|
-
auth: "admin",
|
|
65565
|
-
access: "delete"
|
|
65566
65595
|
}), method(object({ userId: string() }), TotpSetupResultSchema, {
|
|
65567
65596
|
kind: "mutation",
|
|
65568
65597
|
auth: "admin",
|
|
@@ -75022,6 +75051,12 @@ Object.freeze({
|
|
|
75022
75051
|
addonId: null,
|
|
75023
75052
|
access: "view"
|
|
75024
75053
|
},
|
|
75054
|
+
"records.transact": {
|
|
75055
|
+
capName: "records",
|
|
75056
|
+
capScope: "system",
|
|
75057
|
+
addonId: null,
|
|
75058
|
+
access: "create"
|
|
75059
|
+
},
|
|
75025
75060
|
"sceneMonitor.captureReference": {
|
|
75026
75061
|
capName: "scene-monitor",
|
|
75027
75062
|
capScope: "device",
|
|
@@ -76354,12 +76389,6 @@ Object.freeze({
|
|
|
76354
76389
|
addonId: null,
|
|
76355
76390
|
access: "view"
|
|
76356
76391
|
},
|
|
76357
|
-
"userManagement.listApiKeys": {
|
|
76358
|
-
capName: "user-management",
|
|
76359
|
-
capScope: "system",
|
|
76360
|
-
addonId: null,
|
|
76361
|
-
access: "view"
|
|
76362
|
-
},
|
|
76363
76392
|
"userManagement.listExternalIdentities": {
|
|
76364
76393
|
capName: "user-management",
|
|
76365
76394
|
capScope: "system",
|
|
@@ -76414,12 +76443,6 @@ Object.freeze({
|
|
|
76414
76443
|
addonId: null,
|
|
76415
76444
|
access: "create"
|
|
76416
76445
|
},
|
|
76417
|
-
"userManagement.revokeApiKey": {
|
|
76418
|
-
capName: "user-management",
|
|
76419
|
-
capScope: "system",
|
|
76420
|
-
addonId: null,
|
|
76421
|
-
access: "delete"
|
|
76422
|
-
},
|
|
76423
76446
|
"userManagement.revokeOauthSession": {
|
|
76424
76447
|
capName: "user-management",
|
|
76425
76448
|
capScope: "system",
|
|
@@ -79990,9 +80013,13 @@ new Map(Object.entries({
|
|
|
79990
80013
|
"stream-online": "device-events",
|
|
79991
80014
|
"stream-offline": "device-events",
|
|
79992
80015
|
"detection-blind": "device-events",
|
|
80016
|
+
"motion-noisy": "device-events",
|
|
80017
|
+
"motion-calm": "device-events",
|
|
79993
80018
|
"recording-stalled": "device-events",
|
|
79994
80019
|
"recording-healthy": "device-events",
|
|
79995
80020
|
"recording-degraded": "device-events",
|
|
80021
|
+
"device-attention-required": "device-events",
|
|
80022
|
+
"device-attention-resolved": "device-events",
|
|
79996
80023
|
"node-online": "system",
|
|
79997
80024
|
"node-offline": "system",
|
|
79998
80025
|
"node-restarting": "system",
|
|
@@ -80009,6 +80036,8 @@ new Map(Object.entries({
|
|
|
80009
80036
|
"alert-critical": "system",
|
|
80010
80037
|
"alert-error": "system",
|
|
80011
80038
|
"alert-critical-resolved": "system",
|
|
80039
|
+
"rule-broken": "system",
|
|
80040
|
+
"rule-repaired": "system",
|
|
80012
80041
|
"storage-location-low": "system",
|
|
80013
80042
|
"storage-location-critical": "system",
|
|
80014
80043
|
"storage-location-ok": "system",
|
|
@@ -80073,6 +80102,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
80073
80102
|
label: "Detecting nothing",
|
|
80074
80103
|
kinds: ["detection-blind"]
|
|
80075
80104
|
},
|
|
80105
|
+
{
|
|
80106
|
+
id: "motion-noise",
|
|
80107
|
+
family: "device-events",
|
|
80108
|
+
label: "Motion without a subject",
|
|
80109
|
+
kinds: ["motion-noisy", "motion-calm"]
|
|
80110
|
+
},
|
|
80076
80111
|
{
|
|
80077
80112
|
id: "recording",
|
|
80078
80113
|
family: "device-events",
|
|
@@ -80083,6 +80118,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
80083
80118
|
"recording-degraded"
|
|
80084
80119
|
]
|
|
80085
80120
|
},
|
|
80121
|
+
{
|
|
80122
|
+
id: "device-attention",
|
|
80123
|
+
family: "device-events",
|
|
80124
|
+
label: "Needs attention",
|
|
80125
|
+
kinds: ["device-attention-required", "device-attention-resolved"]
|
|
80126
|
+
},
|
|
80086
80127
|
{
|
|
80087
80128
|
id: "nodes",
|
|
80088
80129
|
family: "system",
|
|
@@ -80143,6 +80184,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
80143
80184
|
"alert-critical-resolved"
|
|
80144
80185
|
]
|
|
80145
80186
|
},
|
|
80187
|
+
{
|
|
80188
|
+
id: "rule-health",
|
|
80189
|
+
family: "system",
|
|
80190
|
+
label: "Notification rules",
|
|
80191
|
+
kinds: ["rule-broken", "rule-repaired"]
|
|
80192
|
+
},
|
|
80146
80193
|
{
|
|
80147
80194
|
id: "alarm",
|
|
80148
80195
|
family: "alarm",
|
|
@@ -80216,6 +80263,7 @@ var ALERT_EPISODE = [
|
|
|
80216
80263
|
"alert-error",
|
|
80217
80264
|
"alert-critical-resolved"
|
|
80218
80265
|
];
|
|
80266
|
+
var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
|
|
80219
80267
|
var UPDATES = [
|
|
80220
80268
|
"addon-update-available",
|
|
80221
80269
|
"server-update-available",
|
|
@@ -80245,9 +80293,12 @@ var DEVICE_EVENTS = [
|
|
|
80245
80293
|
"stream-online",
|
|
80246
80294
|
"stream-offline",
|
|
80247
80295
|
"detection-blind",
|
|
80296
|
+
"motion-noisy",
|
|
80297
|
+
"motion-calm",
|
|
80248
80298
|
"recording-stalled",
|
|
80249
80299
|
"recording-healthy",
|
|
80250
80300
|
"recording-degraded",
|
|
80301
|
+
...DEVICE_ATTENTION,
|
|
80251
80302
|
...ALARM
|
|
80252
80303
|
];
|
|
80253
80304
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -80415,7 +80466,13 @@ var STATE_SUMMARY_VARS = [
|
|
|
80415
80466
|
[...RULE_TEXT],
|
|
80416
80467
|
[...RULE_TEXT],
|
|
80417
80468
|
[...RULE_TEXT],
|
|
80418
|
-
|
|
80469
|
+
[...RULE_TEXT],
|
|
80470
|
+
[...RULE_TEXT],
|
|
80471
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80472
|
+
[...RULE_TEXT],
|
|
80473
|
+
[...RULE_TEXT],
|
|
80474
|
+
[...RULE_TEXT],
|
|
80475
|
+
[...RULE_TEXT],
|
|
80419
80476
|
[...RULE_TEXT],
|
|
80420
80477
|
[...RULE_TEXT],
|
|
80421
80478
|
[...RULE_TEXT],
|
|
@@ -80433,11 +80490,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
80433
80490
|
[...RULE_TEXT],
|
|
80434
80491
|
[...RULE_TEXT],
|
|
80435
80492
|
[...RULE_TEXT],
|
|
80493
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80436
80494
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80495
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80437
80496
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80438
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80439
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80440
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80497
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80441
80498
|
[...RULE_TEXT],
|
|
80442
80499
|
[...RULE_TEXT],
|
|
80443
80500
|
[...RULE_TEXT],
|
|
@@ -80458,6 +80515,125 @@ var STATE_SUMMARY_VARS = [
|
|
|
80458
80515
|
[...RULE_TEXT],
|
|
80459
80516
|
...STATE_SUMMARY_VARS
|
|
80460
80517
|
];
|
|
80518
|
+
new Map([
|
|
80519
|
+
{
|
|
80520
|
+
id: "device-connectivity",
|
|
80521
|
+
family: "device-events",
|
|
80522
|
+
label: "Device connectivity (offline / back online)",
|
|
80523
|
+
bad: ["device-offline"],
|
|
80524
|
+
recovery: ["device-online"],
|
|
80525
|
+
snapshotLabel: "Devices offline now",
|
|
80526
|
+
snapshotSection: "device-state"
|
|
80527
|
+
},
|
|
80528
|
+
{
|
|
80529
|
+
id: "device-switch",
|
|
80530
|
+
family: "device-events",
|
|
80531
|
+
label: "Device switched off / back on",
|
|
80532
|
+
bad: ["device-disabled"],
|
|
80533
|
+
recovery: ["device-enabled"],
|
|
80534
|
+
snapshotLabel: "Devices switched off now",
|
|
80535
|
+
snapshotSection: "device-state"
|
|
80536
|
+
},
|
|
80537
|
+
{
|
|
80538
|
+
id: "stream-connectivity",
|
|
80539
|
+
family: "device-events",
|
|
80540
|
+
label: "Stream connectivity (offline / back online)",
|
|
80541
|
+
bad: ["stream-offline"],
|
|
80542
|
+
recovery: ["stream-online"],
|
|
80543
|
+
snapshotLabel: "Streams offline now",
|
|
80544
|
+
snapshotSection: "streams"
|
|
80545
|
+
},
|
|
80546
|
+
{
|
|
80547
|
+
id: "battery",
|
|
80548
|
+
family: "device-events",
|
|
80549
|
+
label: "Battery (low / back to normal)",
|
|
80550
|
+
bad: ["device-battery-low"],
|
|
80551
|
+
recovery: ["device-battery-normal"],
|
|
80552
|
+
snapshotLabel: "Batteries low now",
|
|
80553
|
+
snapshotSection: "battery"
|
|
80554
|
+
},
|
|
80555
|
+
{
|
|
80556
|
+
id: "consumables",
|
|
80557
|
+
family: "device-events",
|
|
80558
|
+
label: "Consumables (low / replaced)",
|
|
80559
|
+
bad: ["device-consumable-low"],
|
|
80560
|
+
recovery: ["device-consumable-normal"],
|
|
80561
|
+
snapshotLabel: "Consumables low now",
|
|
80562
|
+
snapshotSection: "consumables"
|
|
80563
|
+
},
|
|
80564
|
+
{
|
|
80565
|
+
id: "tanks",
|
|
80566
|
+
family: "device-events",
|
|
80567
|
+
label: "Tanks (low or full / back to normal)",
|
|
80568
|
+
bad: ["device-tank-low", "device-tank-full"],
|
|
80569
|
+
recovery: ["device-tank-normal"],
|
|
80570
|
+
snapshotLabel: "Tanks low or full now",
|
|
80571
|
+
snapshotSection: "tanks"
|
|
80572
|
+
},
|
|
80573
|
+
{
|
|
80574
|
+
id: "motion-noise",
|
|
80575
|
+
family: "device-events",
|
|
80576
|
+
label: "Motion without a subject (constant / calm again)",
|
|
80577
|
+
bad: ["motion-noisy"],
|
|
80578
|
+
recovery: ["motion-calm"],
|
|
80579
|
+
snapshotLabel: "Cameras with constant motion now",
|
|
80580
|
+
snapshotSection: null
|
|
80581
|
+
},
|
|
80582
|
+
{
|
|
80583
|
+
id: "recording-health",
|
|
80584
|
+
family: "device-events",
|
|
80585
|
+
label: "Recording health (stalled or degraded / recording again)",
|
|
80586
|
+
bad: ["recording-stalled", "recording-degraded"],
|
|
80587
|
+
recovery: ["recording-healthy"],
|
|
80588
|
+
snapshotLabel: "Recordings stalled now",
|
|
80589
|
+
snapshotSection: null
|
|
80590
|
+
},
|
|
80591
|
+
{
|
|
80592
|
+
id: "device-attention",
|
|
80593
|
+
family: "device-events",
|
|
80594
|
+
label: "Device needs attention (raised / resolved)",
|
|
80595
|
+
bad: ["device-attention-required"],
|
|
80596
|
+
recovery: ["device-attention-resolved"],
|
|
80597
|
+
snapshotLabel: "Devices needing attention now",
|
|
80598
|
+
snapshotSection: null
|
|
80599
|
+
},
|
|
80600
|
+
{
|
|
80601
|
+
id: "node-connectivity",
|
|
80602
|
+
family: "system",
|
|
80603
|
+
label: "Node connectivity (offline / back online)",
|
|
80604
|
+
bad: ["node-offline"],
|
|
80605
|
+
recovery: ["node-online"],
|
|
80606
|
+
snapshotLabel: "Nodes offline now",
|
|
80607
|
+
snapshotSection: "nodes"
|
|
80608
|
+
},
|
|
80609
|
+
{
|
|
80610
|
+
id: "storage-space",
|
|
80611
|
+
family: "system",
|
|
80612
|
+
label: "Storage space (low or critical / ok again)",
|
|
80613
|
+
bad: ["storage-location-low", "storage-location-critical"],
|
|
80614
|
+
recovery: ["storage-location-ok"],
|
|
80615
|
+
snapshotLabel: "Storage locations low now",
|
|
80616
|
+
snapshotSection: null
|
|
80617
|
+
},
|
|
80618
|
+
{
|
|
80619
|
+
id: "critical-alerts",
|
|
80620
|
+
family: "system",
|
|
80621
|
+
label: "Critical alerts (raised / resolved)",
|
|
80622
|
+
bad: ["alert-critical"],
|
|
80623
|
+
recovery: ["alert-critical-resolved"],
|
|
80624
|
+
snapshotLabel: "Critical alerts open now",
|
|
80625
|
+
snapshotSection: null
|
|
80626
|
+
},
|
|
80627
|
+
{
|
|
80628
|
+
id: "rule-health",
|
|
80629
|
+
family: "system",
|
|
80630
|
+
label: "Rule health (broken / repaired)",
|
|
80631
|
+
bad: ["rule-broken"],
|
|
80632
|
+
recovery: ["rule-repaired"],
|
|
80633
|
+
snapshotLabel: "Notification rules broken now",
|
|
80634
|
+
snapshotSection: null
|
|
80635
|
+
}
|
|
80636
|
+
].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
|
|
80461
80637
|
new Set([
|
|
80462
80638
|
"disarmed",
|
|
80463
80639
|
"armed_home",
|
|
@@ -82678,7 +82854,7 @@ function buildExtrasSections(snap) {
|
|
|
82678
82854
|
tab: "image",
|
|
82679
82855
|
title: "IR + status LED",
|
|
82680
82856
|
titleKey: "provider-amcrest:extrasSections.s_ir-lights.title",
|
|
82681
|
-
description: "
|
|
82857
|
+
description: "`Auto` follows ambient light; `Manual` forces the LEDs on at the set brightness.",
|
|
82682
82858
|
descriptionKey: "provider-amcrest:extrasSections.s_ir-lights.description",
|
|
82683
82859
|
columns: 2,
|
|
82684
82860
|
fields: [
|
|
@@ -82711,8 +82887,6 @@ function buildExtrasSections(snap) {
|
|
|
82711
82887
|
key: "irLightBrightness",
|
|
82712
82888
|
label: "IR brightness",
|
|
82713
82889
|
labelKey: "provider-amcrest:extrasSections.s_ir-lights.irLightBrightness.label",
|
|
82714
|
-
description: "IR LED output (`MiddleLight[0].Light`, 0–100). Applied in Auto and Manual modes.",
|
|
82715
|
-
descriptionKey: "provider-amcrest:extrasSections.s_ir-lights.irLightBrightness.description",
|
|
82716
82890
|
min: 0,
|
|
82717
82891
|
max: 100,
|
|
82718
82892
|
step: 5,
|
|
@@ -82725,8 +82899,6 @@ function buildExtrasSections(snap) {
|
|
|
82725
82899
|
key: "statusLedEnabled",
|
|
82726
82900
|
label: "Status LED",
|
|
82727
82901
|
labelKey: "provider-amcrest:extrasSections.s_ir-lights.statusLedEnabled.label",
|
|
82728
|
-
description: "The visible indicator LED on the camera body (`LightGlobal[0].Enable`).",
|
|
82729
|
-
descriptionKey: "provider-amcrest:extrasSections.s_ir-lights.statusLedEnabled.description",
|
|
82730
82902
|
default: snap.statusLedEnabled ?? true,
|
|
82731
82903
|
style: "switch",
|
|
82732
82904
|
span: 2
|
|
@@ -82738,7 +82910,7 @@ function buildExtrasSections(snap) {
|
|
|
82738
82910
|
tab: "network",
|
|
82739
82911
|
title: "Time / NTP",
|
|
82740
82912
|
titleKey: "provider-amcrest:extrasSections.s_time-ntp.title",
|
|
82741
|
-
description: "
|
|
82913
|
+
description: "With NTP disabled this camera's clock drifts badly.",
|
|
82742
82914
|
descriptionKey: "provider-amcrest:extrasSections.s_time-ntp.description",
|
|
82743
82915
|
columns: 2,
|
|
82744
82916
|
fields: [
|
|
@@ -82785,7 +82957,7 @@ function buildExtrasSections(snap) {
|
|
|
82785
82957
|
key: "ntpTimeZoneIndex",
|
|
82786
82958
|
label: "Timezone index (Dahua, 0–33)",
|
|
82787
82959
|
labelKey: "provider-amcrest:extrasSections.s_time-ntp.ntpTimeZoneIndex.label",
|
|
82788
|
-
description: "
|
|
82960
|
+
description: "Dahua numeric index (0–33) from the camera web UI timezone list, not an IANA zone. 26 = GMT+8.",
|
|
82789
82961
|
descriptionKey: "provider-amcrest:extrasSections.s_time-ntp.ntpTimeZoneIndex.description",
|
|
82790
82962
|
default: snap.ntpTimeZoneIndex ?? 26,
|
|
82791
82963
|
min: 0,
|
|
@@ -82800,8 +82972,6 @@ function buildExtrasSections(snap) {
|
|
|
82800
82972
|
tab: "advanced",
|
|
82801
82973
|
title: "Auto reboot",
|
|
82802
82974
|
titleKey: "provider-amcrest:extrasSections.s_auto-reboot.title",
|
|
82803
|
-
description: "Scheduled automatic reboot (`AutoMaintain.AutoReboot*`). Choose a day (or every day) + time; the camera reboots once per matching window.",
|
|
82804
|
-
descriptionKey: "provider-amcrest:extrasSections.s_auto-reboot.description",
|
|
82805
82975
|
columns: 2,
|
|
82806
82976
|
fields: [
|
|
82807
82977
|
{
|
|
@@ -83456,8 +83626,6 @@ var AmcrestCamera = class AmcrestCamera extends BaseDevice {
|
|
|
83456
83626
|
tab: "general",
|
|
83457
83627
|
title: "Connection",
|
|
83458
83628
|
titleKey: "provider-amcrest:schema.s_connection.title",
|
|
83459
|
-
description: "Dahua CGI HTTP(S) endpoint + Digest credentials. RTSP is always port 554.",
|
|
83460
|
-
descriptionKey: "provider-amcrest:schema.s_connection.description",
|
|
83461
83629
|
columns: 2,
|
|
83462
83630
|
fields: [
|
|
83463
83631
|
{
|
|
@@ -97745,8 +97913,6 @@ function buildCreationFormSchema() {
|
|
|
97745
97913
|
id: "credentials",
|
|
97746
97914
|
title: "Credentials",
|
|
97747
97915
|
titleKey: "provider-amcrest:creation.s_credentials.title",
|
|
97748
|
-
description: "Dahua CGI uses HTTP Digest auth — no plaintext password on the wire even over HTTP. Required for the host probe.",
|
|
97749
|
-
descriptionKey: "provider-amcrest:creation.s_credentials.description",
|
|
97750
97916
|
columns: 2,
|
|
97751
97917
|
fields: [{
|
|
97752
97918
|
type: "text",
|
|
@@ -97768,7 +97934,7 @@ function buildCreationFormSchema() {
|
|
|
97768
97934
|
id: "connection",
|
|
97769
97935
|
title: "Connection",
|
|
97770
97936
|
titleKey: "provider-amcrest:creation.s_connection.title",
|
|
97771
|
-
description: "
|
|
97937
|
+
description: "Use 443 with HTTPS for cameras with TLS enabled.",
|
|
97772
97938
|
descriptionKey: "provider-amcrest:creation.s_connection.description",
|
|
97773
97939
|
columns: 2,
|
|
97774
97940
|
fields: [
|
|
@@ -97814,7 +97980,7 @@ function buildDiscoveryParamsFormSchema() {
|
|
|
97814
97980
|
id: "credentials",
|
|
97815
97981
|
title: "Credentials",
|
|
97816
97982
|
titleKey: "provider-amcrest:discoveryParams.s_credentials.title",
|
|
97817
|
-
description: "
|
|
97983
|
+
description: "Assumes all cameras share these credentials.",
|
|
97818
97984
|
descriptionKey: "provider-amcrest:discoveryParams.s_credentials.description",
|
|
97819
97985
|
columns: 2,
|
|
97820
97986
|
fields: [{
|
|
@@ -97836,7 +98002,7 @@ function buildDiscoveryParamsFormSchema() {
|
|
|
97836
98002
|
id: "scan",
|
|
97837
98003
|
title: "Scan options",
|
|
97838
98004
|
titleKey: "provider-amcrest:discoveryParams.s_scan.title",
|
|
97839
|
-
description: "
|
|
98005
|
+
description: "Leave blank to scan the hub's own subnet; enter the CIDR if the cameras are on another one (e.g. 192.168.60.0/24).",
|
|
97840
98006
|
descriptionKey: "provider-amcrest:discoveryParams.s_scan.description",
|
|
97841
98007
|
columns: 1,
|
|
97842
98008
|
fields: [{
|
package/dist/addon.mjs
CHANGED
|
@@ -14,7 +14,7 @@ import { networkInterfaces } from "node:os";
|
|
|
14
14
|
var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
|
|
15
15
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
16
16
|
//#endregion
|
|
17
|
-
//#region ../types/dist/event-category-
|
|
17
|
+
//#region ../types/dist/event-category-BfJwUd2S.mjs
|
|
18
18
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
19
19
|
EventCategory["SystemBoot"] = "system.boot";
|
|
20
20
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -331,6 +331,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
331
331
|
*/
|
|
332
332
|
EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
|
|
333
333
|
/**
|
|
334
|
+
* A camera's motion source has fired constantly with no subject for an hour
|
|
335
|
+
* (motion duty or session count over the bar, zero detections) — it is not
|
|
336
|
+
* blind, its motion zones or sensitivity want tuning (D907). Paired with
|
|
337
|
+
* {@link PipelineMotionCalm}.
|
|
338
|
+
*/
|
|
339
|
+
EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
|
|
340
|
+
/** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
|
|
341
|
+
EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
|
|
342
|
+
/**
|
|
334
343
|
* Per-camera pipeline config was mutated by the orchestrator
|
|
335
344
|
* (3-level settings change via `setAgentAddonDefaults` /
|
|
336
345
|
* `setCameraStepToggle` / `setCameraPipelineForAgent` or a
|
|
@@ -702,6 +711,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
702
711
|
EventCategory["BackupRestored"] = "backup.restored";
|
|
703
712
|
EventCategory["NotificationDispatched"] = "notification.dispatched";
|
|
704
713
|
EventCategory["NotificationFailed"] = "notification.failed";
|
|
714
|
+
/**
|
|
715
|
+
* A notification rule that cannot work (D905): its stored row does not load,
|
|
716
|
+
* or it still names a device / delivery target the prune CONFIRMED deleted.
|
|
717
|
+
* One edge per rule per distinct set of reasons; never on an unanswered read.
|
|
718
|
+
*/
|
|
719
|
+
EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
|
|
720
|
+
/** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
|
|
721
|
+
EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
|
|
705
722
|
EventCategory["DeviceUpdated"] = "device.updated";
|
|
706
723
|
/**
|
|
707
724
|
* Transport-level connectivity. Emitted by the device driver when
|
|
@@ -5429,7 +5446,7 @@ var ZodIssueCode = {
|
|
|
5429
5446
|
var ZodFirstPartyTypeKind;
|
|
5430
5447
|
ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
|
|
5431
5448
|
//#endregion
|
|
5432
|
-
//#region ../types/dist/sleep-
|
|
5449
|
+
//#region ../types/dist/sleep-DJFUfKvA.mjs
|
|
5433
5450
|
/**
|
|
5434
5451
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5435
5452
|
* window to float samples (D455).
|
|
@@ -7958,7 +7975,7 @@ var EntryDescriptorSchema = object({
|
|
|
7958
7975
|
/** JSON Schema of the entry body; `secret: true` marks a password field. */
|
|
7959
7976
|
fields: record(string(), unknown())
|
|
7960
7977
|
}).strict();
|
|
7961
|
-
/** What crosses the wire
|
|
7978
|
+
/** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
|
|
7962
7979
|
var RecordKindDeclarationSchema = object({
|
|
7963
7980
|
database: _enum(RECORD_DATABASES).default("settings"),
|
|
7964
7981
|
class: _enum(RECORD_CLASSES),
|
|
@@ -7977,14 +7994,6 @@ var RecordKindDeclarationSchema = object({
|
|
|
7977
7994
|
secretPaths: array(string().min(1)).default([]),
|
|
7978
7995
|
/** The id key of each array that carries a secret (`{ headers: 'name' }`). */
|
|
7979
7996
|
secretArrayKeys: record(string(), string()).default({}),
|
|
7980
|
-
/**
|
|
7981
|
-
* RETIRED (D900): the legacy table a kind adopted from during the records
|
|
7982
|
-
* migration. Nothing declares it any more and nothing reads it; the schema
|
|
7983
|
-
* still ACCEPTS it because the catalog rows the migration wrote carry it
|
|
7984
|
-
* (an orphaned kind is never redeclared) and an addon built before the
|
|
7985
|
-
* removal still sends it. Never set it.
|
|
7986
|
-
*/
|
|
7987
|
-
adoptsFrom: string().min(1).optional(),
|
|
7988
7997
|
/** Kinds that must agree through `transact` sit in one file under one family name. */
|
|
7989
7998
|
transactFamily: string().min(1).optional(),
|
|
7990
7999
|
entry: EntryDescriptorSchema.optional()
|
|
@@ -12686,17 +12695,6 @@ object({
|
|
|
12686
12695
|
createdAt: number(),
|
|
12687
12696
|
updatedAt: number()
|
|
12688
12697
|
});
|
|
12689
|
-
object({
|
|
12690
|
-
id: string(),
|
|
12691
|
-
label: string(),
|
|
12692
|
-
isAdmin: boolean().default(false),
|
|
12693
|
-
allowedProviders: AllowedProviderSchema,
|
|
12694
|
-
allowedDevices: AllowedDevicesSchema,
|
|
12695
|
-
tokenHash: string(),
|
|
12696
|
-
tokenPrefix: string(),
|
|
12697
|
-
createdAt: number(),
|
|
12698
|
-
lastUsedAt: number().optional()
|
|
12699
|
-
});
|
|
12700
12698
|
object({
|
|
12701
12699
|
id: string(),
|
|
12702
12700
|
userId: string(),
|
|
@@ -16678,16 +16676,36 @@ var RecordKindStateSchema = _enum([
|
|
|
16678
16676
|
var DeclareKindResultSchema = object({
|
|
16679
16677
|
kindId: number().int(),
|
|
16680
16678
|
state: RecordKindStateSchema,
|
|
16681
|
-
createdIndexes: array(string())
|
|
16682
|
-
/**
|
|
16683
|
-
* RETIRED (D900): always `null`. It carried the records-migration boot guard;
|
|
16684
|
-
* it stays on the wire, null, because an addon built before the removal reads
|
|
16685
|
-
* an ABSENT field as "adoption pending" and refuses to start.
|
|
16686
|
-
*/
|
|
16687
|
-
adoptionPending: _null()
|
|
16679
|
+
createdIndexes: array(string())
|
|
16688
16680
|
});
|
|
16689
16681
|
/** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
|
|
16690
16682
|
var SecretRefsList = array(string());
|
|
16683
|
+
/**
|
|
16684
|
+
* One op of a `transact`: the single-row writes, each on a kind of the caller.
|
|
16685
|
+
* All ops of one call share ONE database file and ONE `transactFamily`.
|
|
16686
|
+
*/
|
|
16687
|
+
var RecordTransactOpSchema = discriminatedUnion("op", [
|
|
16688
|
+
object({
|
|
16689
|
+
op: literal("put"),
|
|
16690
|
+
kind: RecordKindNameSchema,
|
|
16691
|
+
record: RecordInputSchema,
|
|
16692
|
+
ifRev: number().int().min(0).optional()
|
|
16693
|
+
}),
|
|
16694
|
+
object({
|
|
16695
|
+
op: literal("patch"),
|
|
16696
|
+
kind: RecordKindNameSchema,
|
|
16697
|
+
id: RecordIdSchema,
|
|
16698
|
+
data: RecordBodySchema,
|
|
16699
|
+
at: number().int().nullable().optional(),
|
|
16700
|
+
expiresAt: number().int().nullable().optional(),
|
|
16701
|
+
ifRev: number().int().min(1).optional()
|
|
16702
|
+
}),
|
|
16703
|
+
object({
|
|
16704
|
+
op: literal("delete"),
|
|
16705
|
+
kind: RecordKindNameSchema,
|
|
16706
|
+
id: RecordIdSchema
|
|
16707
|
+
})
|
|
16708
|
+
]);
|
|
16691
16709
|
var RecordSecretRefsSchema = record(string(), record(string(), string()));
|
|
16692
16710
|
method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
|
|
16693
16711
|
kind: "mutation",
|
|
@@ -16794,6 +16812,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
|
|
|
16794
16812
|
}), {
|
|
16795
16813
|
kind: "mutation",
|
|
16796
16814
|
auth: "admin"
|
|
16815
|
+
}), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
|
|
16816
|
+
results: array(object({
|
|
16817
|
+
rev: number().int().nullable(),
|
|
16818
|
+
deleted: boolean()
|
|
16819
|
+
})),
|
|
16820
|
+
releasedRefs: SecretRefsList,
|
|
16821
|
+
secretRefs: SecretRefsList
|
|
16822
|
+
}), {
|
|
16823
|
+
kind: "mutation",
|
|
16824
|
+
auth: "admin"
|
|
16797
16825
|
}), method(object({
|
|
16798
16826
|
deviceId: number().int(),
|
|
16799
16827
|
kinds: array(RecordKindNameSchema).optional()
|
|
@@ -42501,9 +42529,13 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42501
42529
|
"node-updating",
|
|
42502
42530
|
"node-inference-unavailable",
|
|
42503
42531
|
"detection-blind",
|
|
42532
|
+
"motion-noisy",
|
|
42533
|
+
"motion-calm",
|
|
42504
42534
|
"recording-stalled",
|
|
42505
42535
|
"recording-healthy",
|
|
42506
42536
|
"recording-degraded",
|
|
42537
|
+
"device-attention-required",
|
|
42538
|
+
"device-attention-resolved",
|
|
42507
42539
|
"storage-location-low",
|
|
42508
42540
|
"storage-location-critical",
|
|
42509
42541
|
"storage-location-ok",
|
|
@@ -42527,6 +42559,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42527
42559
|
"alert-critical",
|
|
42528
42560
|
"alert-error",
|
|
42529
42561
|
"alert-critical-resolved",
|
|
42562
|
+
"rule-broken",
|
|
42563
|
+
"rule-repaired",
|
|
42530
42564
|
"camera-online",
|
|
42531
42565
|
"camera-offline",
|
|
42532
42566
|
"camera-disabled",
|
|
@@ -56338,6 +56372,16 @@ var DishwasherStatusSchema = object({
|
|
|
56338
56372
|
powerState: string().nullable(),
|
|
56339
56373
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56340
56374
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
56375
|
+
/**
|
|
56376
|
+
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
56377
|
+
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
56378
|
+
* when none is reported. A cleared reminder is not an unknown one.
|
|
56379
|
+
*/
|
|
56380
|
+
filterCleaningDue: boolean().nullable(),
|
|
56381
|
+
/** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
|
|
56382
|
+
machineCareDue: boolean().nullable(),
|
|
56383
|
+
/** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
|
|
56384
|
+
machineCareRemainingRuns: number().int().nonnegative().nullable(),
|
|
56341
56385
|
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
56342
56386
|
halfLoad: boolean().nullable(),
|
|
56343
56387
|
hygienePlus: boolean().nullable(),
|
|
@@ -65450,16 +65494,6 @@ var UpdateUserInputSchema = object({
|
|
|
65450
65494
|
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65451
65495
|
scopes: array(TokenScopeSchema).optional()
|
|
65452
65496
|
});
|
|
65453
|
-
var ApiKeySummarySchema = object({
|
|
65454
|
-
id: string(),
|
|
65455
|
-
label: string(),
|
|
65456
|
-
isAdmin: boolean().default(false),
|
|
65457
|
-
allowedProviders: union([array(string()), literal("*")]).optional(),
|
|
65458
|
-
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
65459
|
-
tokenPrefix: string(),
|
|
65460
|
-
createdAt: number(),
|
|
65461
|
-
lastUsedAt: number().optional()
|
|
65462
|
-
});
|
|
65463
65497
|
var OauthSessionSummarySchema = object({
|
|
65464
65498
|
id: string(),
|
|
65465
65499
|
userId: string(),
|
|
@@ -65481,8 +65515,7 @@ var TotpStatusSchema = object({
|
|
|
65481
65515
|
confirmedAt: number().nullable()
|
|
65482
65516
|
});
|
|
65483
65517
|
/**
|
|
65484
|
-
* user-management — singleton capability for user accounts
|
|
65485
|
-
* legacy API-key rows.
|
|
65518
|
+
* user-management — singleton capability for user accounts.
|
|
65486
65519
|
*
|
|
65487
65520
|
* v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
|
|
65488
65521
|
* — the subset check on `setUserScopes` is moot
|
|
@@ -65538,10 +65571,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
65538
65571
|
}), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
|
|
65539
65572
|
kind: "mutation",
|
|
65540
65573
|
access: "view"
|
|
65541
|
-
}), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
|
|
65542
|
-
kind: "mutation",
|
|
65543
|
-
auth: "admin",
|
|
65544
|
-
access: "delete"
|
|
65545
65574
|
}), method(object({ userId: string() }), TotpSetupResultSchema, {
|
|
65546
65575
|
kind: "mutation",
|
|
65547
65576
|
auth: "admin",
|
|
@@ -75001,6 +75030,12 @@ Object.freeze({
|
|
|
75001
75030
|
addonId: null,
|
|
75002
75031
|
access: "view"
|
|
75003
75032
|
},
|
|
75033
|
+
"records.transact": {
|
|
75034
|
+
capName: "records",
|
|
75035
|
+
capScope: "system",
|
|
75036
|
+
addonId: null,
|
|
75037
|
+
access: "create"
|
|
75038
|
+
},
|
|
75004
75039
|
"sceneMonitor.captureReference": {
|
|
75005
75040
|
capName: "scene-monitor",
|
|
75006
75041
|
capScope: "device",
|
|
@@ -76333,12 +76368,6 @@ Object.freeze({
|
|
|
76333
76368
|
addonId: null,
|
|
76334
76369
|
access: "view"
|
|
76335
76370
|
},
|
|
76336
|
-
"userManagement.listApiKeys": {
|
|
76337
|
-
capName: "user-management",
|
|
76338
|
-
capScope: "system",
|
|
76339
|
-
addonId: null,
|
|
76340
|
-
access: "view"
|
|
76341
|
-
},
|
|
76342
76371
|
"userManagement.listExternalIdentities": {
|
|
76343
76372
|
capName: "user-management",
|
|
76344
76373
|
capScope: "system",
|
|
@@ -76393,12 +76422,6 @@ Object.freeze({
|
|
|
76393
76422
|
addonId: null,
|
|
76394
76423
|
access: "create"
|
|
76395
76424
|
},
|
|
76396
|
-
"userManagement.revokeApiKey": {
|
|
76397
|
-
capName: "user-management",
|
|
76398
|
-
capScope: "system",
|
|
76399
|
-
addonId: null,
|
|
76400
|
-
access: "delete"
|
|
76401
|
-
},
|
|
76402
76425
|
"userManagement.revokeOauthSession": {
|
|
76403
76426
|
capName: "user-management",
|
|
76404
76427
|
capScope: "system",
|
|
@@ -79969,9 +79992,13 @@ new Map(Object.entries({
|
|
|
79969
79992
|
"stream-online": "device-events",
|
|
79970
79993
|
"stream-offline": "device-events",
|
|
79971
79994
|
"detection-blind": "device-events",
|
|
79995
|
+
"motion-noisy": "device-events",
|
|
79996
|
+
"motion-calm": "device-events",
|
|
79972
79997
|
"recording-stalled": "device-events",
|
|
79973
79998
|
"recording-healthy": "device-events",
|
|
79974
79999
|
"recording-degraded": "device-events",
|
|
80000
|
+
"device-attention-required": "device-events",
|
|
80001
|
+
"device-attention-resolved": "device-events",
|
|
79975
80002
|
"node-online": "system",
|
|
79976
80003
|
"node-offline": "system",
|
|
79977
80004
|
"node-restarting": "system",
|
|
@@ -79988,6 +80015,8 @@ new Map(Object.entries({
|
|
|
79988
80015
|
"alert-critical": "system",
|
|
79989
80016
|
"alert-error": "system",
|
|
79990
80017
|
"alert-critical-resolved": "system",
|
|
80018
|
+
"rule-broken": "system",
|
|
80019
|
+
"rule-repaired": "system",
|
|
79991
80020
|
"storage-location-low": "system",
|
|
79992
80021
|
"storage-location-critical": "system",
|
|
79993
80022
|
"storage-location-ok": "system",
|
|
@@ -80052,6 +80081,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
80052
80081
|
label: "Detecting nothing",
|
|
80053
80082
|
kinds: ["detection-blind"]
|
|
80054
80083
|
},
|
|
80084
|
+
{
|
|
80085
|
+
id: "motion-noise",
|
|
80086
|
+
family: "device-events",
|
|
80087
|
+
label: "Motion without a subject",
|
|
80088
|
+
kinds: ["motion-noisy", "motion-calm"]
|
|
80089
|
+
},
|
|
80055
80090
|
{
|
|
80056
80091
|
id: "recording",
|
|
80057
80092
|
family: "device-events",
|
|
@@ -80062,6 +80097,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
80062
80097
|
"recording-degraded"
|
|
80063
80098
|
]
|
|
80064
80099
|
},
|
|
80100
|
+
{
|
|
80101
|
+
id: "device-attention",
|
|
80102
|
+
family: "device-events",
|
|
80103
|
+
label: "Needs attention",
|
|
80104
|
+
kinds: ["device-attention-required", "device-attention-resolved"]
|
|
80105
|
+
},
|
|
80065
80106
|
{
|
|
80066
80107
|
id: "nodes",
|
|
80067
80108
|
family: "system",
|
|
@@ -80122,6 +80163,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
80122
80163
|
"alert-critical-resolved"
|
|
80123
80164
|
]
|
|
80124
80165
|
},
|
|
80166
|
+
{
|
|
80167
|
+
id: "rule-health",
|
|
80168
|
+
family: "system",
|
|
80169
|
+
label: "Notification rules",
|
|
80170
|
+
kinds: ["rule-broken", "rule-repaired"]
|
|
80171
|
+
},
|
|
80125
80172
|
{
|
|
80126
80173
|
id: "alarm",
|
|
80127
80174
|
family: "alarm",
|
|
@@ -80195,6 +80242,7 @@ var ALERT_EPISODE = [
|
|
|
80195
80242
|
"alert-error",
|
|
80196
80243
|
"alert-critical-resolved"
|
|
80197
80244
|
];
|
|
80245
|
+
var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
|
|
80198
80246
|
var UPDATES = [
|
|
80199
80247
|
"addon-update-available",
|
|
80200
80248
|
"server-update-available",
|
|
@@ -80224,9 +80272,12 @@ var DEVICE_EVENTS = [
|
|
|
80224
80272
|
"stream-online",
|
|
80225
80273
|
"stream-offline",
|
|
80226
80274
|
"detection-blind",
|
|
80275
|
+
"motion-noisy",
|
|
80276
|
+
"motion-calm",
|
|
80227
80277
|
"recording-stalled",
|
|
80228
80278
|
"recording-healthy",
|
|
80229
80279
|
"recording-degraded",
|
|
80280
|
+
...DEVICE_ATTENTION,
|
|
80230
80281
|
...ALARM
|
|
80231
80282
|
];
|
|
80232
80283
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -80394,7 +80445,13 @@ var STATE_SUMMARY_VARS = [
|
|
|
80394
80445
|
[...RULE_TEXT],
|
|
80395
80446
|
[...RULE_TEXT],
|
|
80396
80447
|
[...RULE_TEXT],
|
|
80397
|
-
|
|
80448
|
+
[...RULE_TEXT],
|
|
80449
|
+
[...RULE_TEXT],
|
|
80450
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80451
|
+
[...RULE_TEXT],
|
|
80452
|
+
[...RULE_TEXT],
|
|
80453
|
+
[...RULE_TEXT],
|
|
80454
|
+
[...RULE_TEXT],
|
|
80398
80455
|
[...RULE_TEXT],
|
|
80399
80456
|
[...RULE_TEXT],
|
|
80400
80457
|
[...RULE_TEXT],
|
|
@@ -80412,11 +80469,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
80412
80469
|
[...RULE_TEXT],
|
|
80413
80470
|
[...RULE_TEXT],
|
|
80414
80471
|
[...RULE_TEXT],
|
|
80472
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80415
80473
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80474
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80416
80475
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80417
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80418
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80419
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
80476
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
80420
80477
|
[...RULE_TEXT],
|
|
80421
80478
|
[...RULE_TEXT],
|
|
80422
80479
|
[...RULE_TEXT],
|
|
@@ -80437,6 +80494,125 @@ var STATE_SUMMARY_VARS = [
|
|
|
80437
80494
|
[...RULE_TEXT],
|
|
80438
80495
|
...STATE_SUMMARY_VARS
|
|
80439
80496
|
];
|
|
80497
|
+
new Map([
|
|
80498
|
+
{
|
|
80499
|
+
id: "device-connectivity",
|
|
80500
|
+
family: "device-events",
|
|
80501
|
+
label: "Device connectivity (offline / back online)",
|
|
80502
|
+
bad: ["device-offline"],
|
|
80503
|
+
recovery: ["device-online"],
|
|
80504
|
+
snapshotLabel: "Devices offline now",
|
|
80505
|
+
snapshotSection: "device-state"
|
|
80506
|
+
},
|
|
80507
|
+
{
|
|
80508
|
+
id: "device-switch",
|
|
80509
|
+
family: "device-events",
|
|
80510
|
+
label: "Device switched off / back on",
|
|
80511
|
+
bad: ["device-disabled"],
|
|
80512
|
+
recovery: ["device-enabled"],
|
|
80513
|
+
snapshotLabel: "Devices switched off now",
|
|
80514
|
+
snapshotSection: "device-state"
|
|
80515
|
+
},
|
|
80516
|
+
{
|
|
80517
|
+
id: "stream-connectivity",
|
|
80518
|
+
family: "device-events",
|
|
80519
|
+
label: "Stream connectivity (offline / back online)",
|
|
80520
|
+
bad: ["stream-offline"],
|
|
80521
|
+
recovery: ["stream-online"],
|
|
80522
|
+
snapshotLabel: "Streams offline now",
|
|
80523
|
+
snapshotSection: "streams"
|
|
80524
|
+
},
|
|
80525
|
+
{
|
|
80526
|
+
id: "battery",
|
|
80527
|
+
family: "device-events",
|
|
80528
|
+
label: "Battery (low / back to normal)",
|
|
80529
|
+
bad: ["device-battery-low"],
|
|
80530
|
+
recovery: ["device-battery-normal"],
|
|
80531
|
+
snapshotLabel: "Batteries low now",
|
|
80532
|
+
snapshotSection: "battery"
|
|
80533
|
+
},
|
|
80534
|
+
{
|
|
80535
|
+
id: "consumables",
|
|
80536
|
+
family: "device-events",
|
|
80537
|
+
label: "Consumables (low / replaced)",
|
|
80538
|
+
bad: ["device-consumable-low"],
|
|
80539
|
+
recovery: ["device-consumable-normal"],
|
|
80540
|
+
snapshotLabel: "Consumables low now",
|
|
80541
|
+
snapshotSection: "consumables"
|
|
80542
|
+
},
|
|
80543
|
+
{
|
|
80544
|
+
id: "tanks",
|
|
80545
|
+
family: "device-events",
|
|
80546
|
+
label: "Tanks (low or full / back to normal)",
|
|
80547
|
+
bad: ["device-tank-low", "device-tank-full"],
|
|
80548
|
+
recovery: ["device-tank-normal"],
|
|
80549
|
+
snapshotLabel: "Tanks low or full now",
|
|
80550
|
+
snapshotSection: "tanks"
|
|
80551
|
+
},
|
|
80552
|
+
{
|
|
80553
|
+
id: "motion-noise",
|
|
80554
|
+
family: "device-events",
|
|
80555
|
+
label: "Motion without a subject (constant / calm again)",
|
|
80556
|
+
bad: ["motion-noisy"],
|
|
80557
|
+
recovery: ["motion-calm"],
|
|
80558
|
+
snapshotLabel: "Cameras with constant motion now",
|
|
80559
|
+
snapshotSection: null
|
|
80560
|
+
},
|
|
80561
|
+
{
|
|
80562
|
+
id: "recording-health",
|
|
80563
|
+
family: "device-events",
|
|
80564
|
+
label: "Recording health (stalled or degraded / recording again)",
|
|
80565
|
+
bad: ["recording-stalled", "recording-degraded"],
|
|
80566
|
+
recovery: ["recording-healthy"],
|
|
80567
|
+
snapshotLabel: "Recordings stalled now",
|
|
80568
|
+
snapshotSection: null
|
|
80569
|
+
},
|
|
80570
|
+
{
|
|
80571
|
+
id: "device-attention",
|
|
80572
|
+
family: "device-events",
|
|
80573
|
+
label: "Device needs attention (raised / resolved)",
|
|
80574
|
+
bad: ["device-attention-required"],
|
|
80575
|
+
recovery: ["device-attention-resolved"],
|
|
80576
|
+
snapshotLabel: "Devices needing attention now",
|
|
80577
|
+
snapshotSection: null
|
|
80578
|
+
},
|
|
80579
|
+
{
|
|
80580
|
+
id: "node-connectivity",
|
|
80581
|
+
family: "system",
|
|
80582
|
+
label: "Node connectivity (offline / back online)",
|
|
80583
|
+
bad: ["node-offline"],
|
|
80584
|
+
recovery: ["node-online"],
|
|
80585
|
+
snapshotLabel: "Nodes offline now",
|
|
80586
|
+
snapshotSection: "nodes"
|
|
80587
|
+
},
|
|
80588
|
+
{
|
|
80589
|
+
id: "storage-space",
|
|
80590
|
+
family: "system",
|
|
80591
|
+
label: "Storage space (low or critical / ok again)",
|
|
80592
|
+
bad: ["storage-location-low", "storage-location-critical"],
|
|
80593
|
+
recovery: ["storage-location-ok"],
|
|
80594
|
+
snapshotLabel: "Storage locations low now",
|
|
80595
|
+
snapshotSection: null
|
|
80596
|
+
},
|
|
80597
|
+
{
|
|
80598
|
+
id: "critical-alerts",
|
|
80599
|
+
family: "system",
|
|
80600
|
+
label: "Critical alerts (raised / resolved)",
|
|
80601
|
+
bad: ["alert-critical"],
|
|
80602
|
+
recovery: ["alert-critical-resolved"],
|
|
80603
|
+
snapshotLabel: "Critical alerts open now",
|
|
80604
|
+
snapshotSection: null
|
|
80605
|
+
},
|
|
80606
|
+
{
|
|
80607
|
+
id: "rule-health",
|
|
80608
|
+
family: "system",
|
|
80609
|
+
label: "Rule health (broken / repaired)",
|
|
80610
|
+
bad: ["rule-broken"],
|
|
80611
|
+
recovery: ["rule-repaired"],
|
|
80612
|
+
snapshotLabel: "Notification rules broken now",
|
|
80613
|
+
snapshotSection: null
|
|
80614
|
+
}
|
|
80615
|
+
].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
|
|
80440
80616
|
new Set([
|
|
80441
80617
|
"disarmed",
|
|
80442
80618
|
"armed_home",
|
|
@@ -82657,7 +82833,7 @@ function buildExtrasSections(snap) {
|
|
|
82657
82833
|
tab: "image",
|
|
82658
82834
|
title: "IR + status LED",
|
|
82659
82835
|
titleKey: "provider-amcrest:extrasSections.s_ir-lights.title",
|
|
82660
|
-
description: "
|
|
82836
|
+
description: "`Auto` follows ambient light; `Manual` forces the LEDs on at the set brightness.",
|
|
82661
82837
|
descriptionKey: "provider-amcrest:extrasSections.s_ir-lights.description",
|
|
82662
82838
|
columns: 2,
|
|
82663
82839
|
fields: [
|
|
@@ -82690,8 +82866,6 @@ function buildExtrasSections(snap) {
|
|
|
82690
82866
|
key: "irLightBrightness",
|
|
82691
82867
|
label: "IR brightness",
|
|
82692
82868
|
labelKey: "provider-amcrest:extrasSections.s_ir-lights.irLightBrightness.label",
|
|
82693
|
-
description: "IR LED output (`MiddleLight[0].Light`, 0–100). Applied in Auto and Manual modes.",
|
|
82694
|
-
descriptionKey: "provider-amcrest:extrasSections.s_ir-lights.irLightBrightness.description",
|
|
82695
82869
|
min: 0,
|
|
82696
82870
|
max: 100,
|
|
82697
82871
|
step: 5,
|
|
@@ -82704,8 +82878,6 @@ function buildExtrasSections(snap) {
|
|
|
82704
82878
|
key: "statusLedEnabled",
|
|
82705
82879
|
label: "Status LED",
|
|
82706
82880
|
labelKey: "provider-amcrest:extrasSections.s_ir-lights.statusLedEnabled.label",
|
|
82707
|
-
description: "The visible indicator LED on the camera body (`LightGlobal[0].Enable`).",
|
|
82708
|
-
descriptionKey: "provider-amcrest:extrasSections.s_ir-lights.statusLedEnabled.description",
|
|
82709
82881
|
default: snap.statusLedEnabled ?? true,
|
|
82710
82882
|
style: "switch",
|
|
82711
82883
|
span: 2
|
|
@@ -82717,7 +82889,7 @@ function buildExtrasSections(snap) {
|
|
|
82717
82889
|
tab: "network",
|
|
82718
82890
|
title: "Time / NTP",
|
|
82719
82891
|
titleKey: "provider-amcrest:extrasSections.s_time-ntp.title",
|
|
82720
|
-
description: "
|
|
82892
|
+
description: "With NTP disabled this camera's clock drifts badly.",
|
|
82721
82893
|
descriptionKey: "provider-amcrest:extrasSections.s_time-ntp.description",
|
|
82722
82894
|
columns: 2,
|
|
82723
82895
|
fields: [
|
|
@@ -82764,7 +82936,7 @@ function buildExtrasSections(snap) {
|
|
|
82764
82936
|
key: "ntpTimeZoneIndex",
|
|
82765
82937
|
label: "Timezone index (Dahua, 0–33)",
|
|
82766
82938
|
labelKey: "provider-amcrest:extrasSections.s_time-ntp.ntpTimeZoneIndex.label",
|
|
82767
|
-
description: "
|
|
82939
|
+
description: "Dahua numeric index (0–33) from the camera web UI timezone list, not an IANA zone. 26 = GMT+8.",
|
|
82768
82940
|
descriptionKey: "provider-amcrest:extrasSections.s_time-ntp.ntpTimeZoneIndex.description",
|
|
82769
82941
|
default: snap.ntpTimeZoneIndex ?? 26,
|
|
82770
82942
|
min: 0,
|
|
@@ -82779,8 +82951,6 @@ function buildExtrasSections(snap) {
|
|
|
82779
82951
|
tab: "advanced",
|
|
82780
82952
|
title: "Auto reboot",
|
|
82781
82953
|
titleKey: "provider-amcrest:extrasSections.s_auto-reboot.title",
|
|
82782
|
-
description: "Scheduled automatic reboot (`AutoMaintain.AutoReboot*`). Choose a day (or every day) + time; the camera reboots once per matching window.",
|
|
82783
|
-
descriptionKey: "provider-amcrest:extrasSections.s_auto-reboot.description",
|
|
82784
82954
|
columns: 2,
|
|
82785
82955
|
fields: [
|
|
82786
82956
|
{
|
|
@@ -83435,8 +83605,6 @@ var AmcrestCamera = class AmcrestCamera extends BaseDevice {
|
|
|
83435
83605
|
tab: "general",
|
|
83436
83606
|
title: "Connection",
|
|
83437
83607
|
titleKey: "provider-amcrest:schema.s_connection.title",
|
|
83438
|
-
description: "Dahua CGI HTTP(S) endpoint + Digest credentials. RTSP is always port 554.",
|
|
83439
|
-
descriptionKey: "provider-amcrest:schema.s_connection.description",
|
|
83440
83608
|
columns: 2,
|
|
83441
83609
|
fields: [
|
|
83442
83610
|
{
|
|
@@ -97724,8 +97892,6 @@ function buildCreationFormSchema() {
|
|
|
97724
97892
|
id: "credentials",
|
|
97725
97893
|
title: "Credentials",
|
|
97726
97894
|
titleKey: "provider-amcrest:creation.s_credentials.title",
|
|
97727
|
-
description: "Dahua CGI uses HTTP Digest auth — no plaintext password on the wire even over HTTP. Required for the host probe.",
|
|
97728
|
-
descriptionKey: "provider-amcrest:creation.s_credentials.description",
|
|
97729
97895
|
columns: 2,
|
|
97730
97896
|
fields: [{
|
|
97731
97897
|
type: "text",
|
|
@@ -97747,7 +97913,7 @@ function buildCreationFormSchema() {
|
|
|
97747
97913
|
id: "connection",
|
|
97748
97914
|
title: "Connection",
|
|
97749
97915
|
titleKey: "provider-amcrest:creation.s_connection.title",
|
|
97750
|
-
description: "
|
|
97916
|
+
description: "Use 443 with HTTPS for cameras with TLS enabled.",
|
|
97751
97917
|
descriptionKey: "provider-amcrest:creation.s_connection.description",
|
|
97752
97918
|
columns: 2,
|
|
97753
97919
|
fields: [
|
|
@@ -97793,7 +97959,7 @@ function buildDiscoveryParamsFormSchema() {
|
|
|
97793
97959
|
id: "credentials",
|
|
97794
97960
|
title: "Credentials",
|
|
97795
97961
|
titleKey: "provider-amcrest:discoveryParams.s_credentials.title",
|
|
97796
|
-
description: "
|
|
97962
|
+
description: "Assumes all cameras share these credentials.",
|
|
97797
97963
|
descriptionKey: "provider-amcrest:discoveryParams.s_credentials.description",
|
|
97798
97964
|
columns: 2,
|
|
97799
97965
|
fields: [{
|
|
@@ -97815,7 +97981,7 @@ function buildDiscoveryParamsFormSchema() {
|
|
|
97815
97981
|
id: "scan",
|
|
97816
97982
|
title: "Scan options",
|
|
97817
97983
|
titleKey: "provider-amcrest:discoveryParams.s_scan.title",
|
|
97818
|
-
description: "
|
|
97984
|
+
description: "Leave blank to scan the hub's own subnet; enter the CIDR if the cameras are on another one (e.g. 192.168.60.0/24).",
|
|
97819
97985
|
descriptionKey: "provider-amcrest:discoveryParams.s_scan.description",
|
|
97820
97986
|
columns: 1,
|
|
97821
97987
|
fields: [{
|
package/i18n/en.json
CHANGED
|
@@ -2,24 +2,22 @@
|
|
|
2
2
|
"creation.s_identity.title": "Camera",
|
|
3
3
|
"creation.s_identity.name.label": "Name",
|
|
4
4
|
"creation.s_credentials.title": "Credentials",
|
|
5
|
-
"creation.s_credentials.description": "Dahua CGI uses HTTP Digest auth — no plaintext password on the wire even over HTTP. Required for the host probe.",
|
|
6
5
|
"creation.s_credentials.username.label": "Username",
|
|
7
6
|
"creation.s_credentials.password.label": "Password",
|
|
8
7
|
"creation.s_connection.title": "Connection",
|
|
9
|
-
"creation.s_connection.description": "
|
|
8
|
+
"creation.s_connection.description": "Use 443 with HTTPS for cameras with TLS enabled.",
|
|
10
9
|
"creation.s_connection.host.label": "Camera IP",
|
|
11
10
|
"creation.s_connection.port.label": "Port",
|
|
12
11
|
"creation.s_connection.https.label": "Use HTTPS",
|
|
13
12
|
"discoveryParams.s_credentials.title": "Credentials",
|
|
14
|
-
"discoveryParams.s_credentials.description": "
|
|
13
|
+
"discoveryParams.s_credentials.description": "Assumes all cameras share these credentials.",
|
|
15
14
|
"discoveryParams.s_credentials.username.label": "Username",
|
|
16
15
|
"discoveryParams.s_credentials.password.label": "Password",
|
|
17
16
|
"discoveryParams.s_scan.title": "Scan options",
|
|
18
|
-
"discoveryParams.s_scan.description": "
|
|
17
|
+
"discoveryParams.s_scan.description": "Leave blank to scan the hub's own subnet; enter the CIDR if the cameras are on another one (e.g. 192.168.60.0/24).",
|
|
19
18
|
"discoveryParams.s_scan.networkCidr.label": "Network (CIDR) — required if cameras are on a different subnet than the hub",
|
|
20
19
|
"discoveryParams.s_scan.timeoutMs.label": "WS-Discovery timeout (ms)",
|
|
21
20
|
"schema.s_connection.title": "Connection",
|
|
22
|
-
"schema.s_connection.description": "Dahua CGI HTTP(S) endpoint + Digest credentials. RTSP is always port 554.",
|
|
23
21
|
"schema.s_connection.host.label": "Camera IP",
|
|
24
22
|
"schema.s_connection.port.label": "Port",
|
|
25
23
|
"schema.s_connection.https.label": "Use HTTPS",
|
|
@@ -27,25 +25,22 @@
|
|
|
27
25
|
"schema.s_connection.username.label": "Username",
|
|
28
26
|
"schema.s_connection.password.label": "Password",
|
|
29
27
|
"extrasSections.s_ir-lights.title": "IR + status LED",
|
|
30
|
-
"extrasSections.s_ir-lights.description": "
|
|
28
|
+
"extrasSections.s_ir-lights.description": "`Auto` follows ambient light; `Manual` forces the LEDs on at the set brightness.",
|
|
31
29
|
"extrasSections.s_ir-lights.irLightMode.label": "IR illuminator",
|
|
32
30
|
"extrasSections.s_ir-lights.irLightMode.o_Auto.label": "Auto (camera decides)",
|
|
33
31
|
"extrasSections.s_ir-lights.irLightMode.o_Manual.label": "Always on",
|
|
34
32
|
"extrasSections.s_ir-lights.irLightMode.o_Off.label": "Always off",
|
|
35
33
|
"extrasSections.s_ir-lights.irLightBrightness.label": "IR brightness",
|
|
36
|
-
"extrasSections.s_ir-lights.irLightBrightness.description": "IR LED output (`MiddleLight[0].Light`, 0–100). Applied in Auto and Manual modes.",
|
|
37
34
|
"extrasSections.s_ir-lights.statusLedEnabled.label": "Status LED",
|
|
38
|
-
"extrasSections.s_ir-lights.statusLedEnabled.description": "The visible indicator LED on the camera body (`LightGlobal[0].Enable`).",
|
|
39
35
|
"extrasSections.s_time-ntp.title": "Time / NTP",
|
|
40
|
-
"extrasSections.s_time-ntp.description": "
|
|
36
|
+
"extrasSections.s_time-ntp.description": "With NTP disabled this camera's clock drifts badly.",
|
|
41
37
|
"extrasSections.s_time-ntp.ntpEnabled.label": "NTP sync",
|
|
42
38
|
"extrasSections.s_time-ntp.ntpServer.label": "NTP server",
|
|
43
39
|
"extrasSections.s_time-ntp.ntpPort.label": "NTP port",
|
|
44
40
|
"extrasSections.s_time-ntp.ntpUpdatePeriodMin.label": "Sync interval (min)",
|
|
45
41
|
"extrasSections.s_time-ntp.ntpTimeZoneIndex.label": "Timezone index (Dahua, 0–33)",
|
|
46
|
-
"extrasSections.s_time-ntp.ntpTimeZoneIndex.description": "
|
|
42
|
+
"extrasSections.s_time-ntp.ntpTimeZoneIndex.description": "Dahua numeric index (0–33) from the camera web UI timezone list, not an IANA zone. 26 = GMT+8.",
|
|
47
43
|
"extrasSections.s_auto-reboot.title": "Auto reboot",
|
|
48
|
-
"extrasSections.s_auto-reboot.description": "Scheduled automatic reboot (`AutoMaintain.AutoReboot*`). Choose a day (or every day) + time; the camera reboots once per matching window.",
|
|
49
44
|
"extrasSections.s_auto-reboot.autoRebootEnabled.label": "Auto reboot",
|
|
50
45
|
"extrasSections.s_auto-reboot.autoRebootDay.label": "Day",
|
|
51
46
|
"extrasSections.s_auto-reboot.autoRebootDay.o_7.label": "Every day",
|
package/i18n/it.json
CHANGED
|
@@ -2,24 +2,22 @@
|
|
|
2
2
|
"creation.s_identity.title": "Telecamera",
|
|
3
3
|
"creation.s_identity.name.label": "Nome",
|
|
4
4
|
"creation.s_credentials.title": "Credenziali",
|
|
5
|
-
"creation.s_credentials.description": "Dahua CGI usa l'autenticazione HTTP Digest: nessuna password in chiaro sulla rete, anche su HTTP. Necessaria per il probe dell'host.",
|
|
6
5
|
"creation.s_credentials.username.label": "Nome utente",
|
|
7
6
|
"creation.s_credentials.password.label": "Password",
|
|
8
7
|
"creation.s_connection.title": "Connessione",
|
|
9
|
-
"creation.s_connection.description": "
|
|
8
|
+
"creation.s_connection.description": "Usa 443 con HTTPS per le camere con TLS attivo.",
|
|
10
9
|
"creation.s_connection.host.label": "IP della telecamera",
|
|
11
10
|
"creation.s_connection.port.label": "Porta",
|
|
12
11
|
"creation.s_connection.https.label": "Usa HTTPS",
|
|
13
12
|
"discoveryParams.s_credentials.title": "Credenziali",
|
|
14
|
-
"discoveryParams.s_credentials.description": "
|
|
13
|
+
"discoveryParams.s_credentials.description": "Presuppone che tutte le camere abbiano le stesse credenziali.",
|
|
15
14
|
"discoveryParams.s_credentials.username.label": "Nome utente",
|
|
16
15
|
"discoveryParams.s_credentials.password.label": "Password",
|
|
17
16
|
"discoveryParams.s_scan.title": "Opzioni di scansione",
|
|
18
|
-
"discoveryParams.s_scan.description": "
|
|
17
|
+
"discoveryParams.s_scan.description": "Lascia vuoto per scansionare la subnet dell'hub; inserisci il CIDR se le camere sono su un'altra subnet (es. 192.168.60.0/24).",
|
|
19
18
|
"discoveryParams.s_scan.networkCidr.label": "Rete (CIDR): obbligatoria se le telecamere sono su una sottorete diversa dall'hub",
|
|
20
19
|
"discoveryParams.s_scan.timeoutMs.label": "Timeout WS-Discovery (ms)",
|
|
21
20
|
"schema.s_connection.title": "Connessione",
|
|
22
|
-
"schema.s_connection.description": "Endpoint HTTP(S) Dahua CGI + credenziali Digest. RTSP usa sempre la porta 554.",
|
|
23
21
|
"schema.s_connection.host.label": "IP della telecamera",
|
|
24
22
|
"schema.s_connection.port.label": "Porta",
|
|
25
23
|
"schema.s_connection.https.label": "Usa HTTPS",
|
|
@@ -27,25 +25,22 @@
|
|
|
27
25
|
"schema.s_connection.username.label": "Nome utente",
|
|
28
26
|
"schema.s_connection.password.label": "Password",
|
|
29
27
|
"extrasSections.s_ir-lights.title": "IR + LED di stato",
|
|
30
|
-
"extrasSections.s_ir-lights.description": "
|
|
28
|
+
"extrasSections.s_ir-lights.description": "`Auto` segue la luce ambientale; `Manual` accende i LED alla luminosità impostata.",
|
|
31
29
|
"extrasSections.s_ir-lights.irLightMode.label": "Illuminatore IR",
|
|
32
30
|
"extrasSections.s_ir-lights.irLightMode.o_Auto.label": "Automatico (decide la telecamera)",
|
|
33
31
|
"extrasSections.s_ir-lights.irLightMode.o_Manual.label": "Sempre acceso",
|
|
34
32
|
"extrasSections.s_ir-lights.irLightMode.o_Off.label": "Sempre spento",
|
|
35
33
|
"extrasSections.s_ir-lights.irLightBrightness.label": "Luminosità IR",
|
|
36
|
-
"extrasSections.s_ir-lights.irLightBrightness.description": "Potenza dei LED IR (`MiddleLight[0].Light`, 0–100). Applicata nelle modalità Automatico e Manuale.",
|
|
37
34
|
"extrasSections.s_ir-lights.statusLedEnabled.label": "LED di stato",
|
|
38
|
-
"extrasSections.s_ir-lights.statusLedEnabled.description": "L'indicatore visibile sul corpo della telecamera (`LightGlobal[0].Enable`).",
|
|
39
35
|
"extrasSections.s_time-ntp.title": "Ora / NTP",
|
|
40
|
-
"extrasSections.s_time-ntp.description": "
|
|
36
|
+
"extrasSections.s_time-ntp.description": "Con NTP disattivato l'orologio di questa camera va fuori sincrono.",
|
|
41
37
|
"extrasSections.s_time-ntp.ntpEnabled.label": "Sincronizzazione NTP",
|
|
42
38
|
"extrasSections.s_time-ntp.ntpServer.label": "Server NTP",
|
|
43
39
|
"extrasSections.s_time-ntp.ntpPort.label": "Porta NTP",
|
|
44
40
|
"extrasSections.s_time-ntp.ntpUpdatePeriodMin.label": "Intervallo di sincronizzazione (min)",
|
|
45
41
|
"extrasSections.s_time-ntp.ntpTimeZoneIndex.label": "Indice del fuso orario (Dahua, 0–33)",
|
|
46
|
-
"extrasSections.s_time-ntp.ntpTimeZoneIndex.description": "Indice numerico
|
|
42
|
+
"extrasSections.s_time-ntp.ntpTimeZoneIndex.description": "Indice numerico Dahua (0–33) dalla lista dei fusi orari della web UI della camera, non una zona IANA. 26 = GMT+8.",
|
|
47
43
|
"extrasSections.s_auto-reboot.title": "Riavvio automatico",
|
|
48
|
-
"extrasSections.s_auto-reboot.description": "Riavvio automatico programmato (`AutoMaintain.AutoReboot*`). Scegli un giorno (o ogni giorno) e un orario; la telecamera si riavvia una volta per ogni finestra corrispondente.",
|
|
49
44
|
"extrasSections.s_auto-reboot.autoRebootEnabled.label": "Riavvio automatico",
|
|
50
45
|
"extrasSections.s_auto-reboot.autoRebootDay.label": "Giorno",
|
|
51
46
|
"extrasSections.s_auto-reboot.autoRebootDay.o_7.label": "Ogni giorno",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-amcrest",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.153",
|
|
4
4
|
"description": "Amcrest/Dahua camera device provider addon for CamStack — Dahua CGI over HTTP(S) with digest auth (snapshot, RTSP catalog, PTZ, image/day-night config)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|