@camstack/addon-provider-ecowitt 0.2.140 → 0.2.142
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 +239 -63
- package/dist/addon.mjs +239 -63
- package/i18n/en.json +2 -2
- package/i18n/it.json +2 -2
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
let http = require("http");
|
|
3
3
|
let events = require("events");
|
|
4
4
|
let dgram = require("dgram");
|
|
5
|
-
//#region ../types/dist/event-category-
|
|
5
|
+
//#region ../types/dist/event-category-BfJwUd2S.mjs
|
|
6
6
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
7
7
|
EventCategory["SystemBoot"] = "system.boot";
|
|
8
8
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -319,6 +319,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
319
319
|
*/
|
|
320
320
|
EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
|
|
321
321
|
/**
|
|
322
|
+
* A camera's motion source has fired constantly with no subject for an hour
|
|
323
|
+
* (motion duty or session count over the bar, zero detections) — it is not
|
|
324
|
+
* blind, its motion zones or sensitivity want tuning (D907). Paired with
|
|
325
|
+
* {@link PipelineMotionCalm}.
|
|
326
|
+
*/
|
|
327
|
+
EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
|
|
328
|
+
/** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
|
|
329
|
+
EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
|
|
330
|
+
/**
|
|
322
331
|
* Per-camera pipeline config was mutated by the orchestrator
|
|
323
332
|
* (3-level settings change via `setAgentAddonDefaults` /
|
|
324
333
|
* `setCameraStepToggle` / `setCameraPipelineForAgent` or a
|
|
@@ -690,6 +699,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
690
699
|
EventCategory["BackupRestored"] = "backup.restored";
|
|
691
700
|
EventCategory["NotificationDispatched"] = "notification.dispatched";
|
|
692
701
|
EventCategory["NotificationFailed"] = "notification.failed";
|
|
702
|
+
/**
|
|
703
|
+
* A notification rule that cannot work (D905): its stored row does not load,
|
|
704
|
+
* or it still names a device / delivery target the prune CONFIRMED deleted.
|
|
705
|
+
* One edge per rule per distinct set of reasons; never on an unanswered read.
|
|
706
|
+
*/
|
|
707
|
+
EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
|
|
708
|
+
/** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
|
|
709
|
+
EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
|
|
693
710
|
EventCategory["DeviceUpdated"] = "device.updated";
|
|
694
711
|
/**
|
|
695
712
|
* Transport-level connectivity. Emitted by the device driver when
|
|
@@ -5417,7 +5434,7 @@ var ZodIssueCode$1 = {
|
|
|
5417
5434
|
var ZodFirstPartyTypeKind$1;
|
|
5418
5435
|
ZodFirstPartyTypeKind$1 || (ZodFirstPartyTypeKind$1 = {});
|
|
5419
5436
|
//#endregion
|
|
5420
|
-
//#region ../types/dist/sleep-
|
|
5437
|
+
//#region ../types/dist/sleep-DJFUfKvA.mjs
|
|
5421
5438
|
/**
|
|
5422
5439
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5423
5440
|
* window to float samples (D455).
|
|
@@ -7946,7 +7963,7 @@ var EntryDescriptorSchema = object({
|
|
|
7946
7963
|
/** JSON Schema of the entry body; `secret: true` marks a password field. */
|
|
7947
7964
|
fields: record(string(), unknown())
|
|
7948
7965
|
}).strict();
|
|
7949
|
-
/** What crosses the wire
|
|
7966
|
+
/** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
|
|
7950
7967
|
var RecordKindDeclarationSchema = object({
|
|
7951
7968
|
database: _enum(RECORD_DATABASES).default("settings"),
|
|
7952
7969
|
class: _enum(RECORD_CLASSES),
|
|
@@ -7965,14 +7982,6 @@ var RecordKindDeclarationSchema = object({
|
|
|
7965
7982
|
secretPaths: array(string().min(1)).default([]),
|
|
7966
7983
|
/** The id key of each array that carries a secret (`{ headers: 'name' }`). */
|
|
7967
7984
|
secretArrayKeys: record(string(), string()).default({}),
|
|
7968
|
-
/**
|
|
7969
|
-
* RETIRED (D900): the legacy table a kind adopted from during the records
|
|
7970
|
-
* migration. Nothing declares it any more and nothing reads it; the schema
|
|
7971
|
-
* still ACCEPTS it because the catalog rows the migration wrote carry it
|
|
7972
|
-
* (an orphaned kind is never redeclared) and an addon built before the
|
|
7973
|
-
* removal still sends it. Never set it.
|
|
7974
|
-
*/
|
|
7975
|
-
adoptsFrom: string().min(1).optional(),
|
|
7976
7985
|
/** Kinds that must agree through `transact` sit in one file under one family name. */
|
|
7977
7986
|
transactFamily: string().min(1).optional(),
|
|
7978
7987
|
entry: EntryDescriptorSchema.optional()
|
|
@@ -12664,17 +12673,6 @@ object({
|
|
|
12664
12673
|
createdAt: number(),
|
|
12665
12674
|
updatedAt: number()
|
|
12666
12675
|
});
|
|
12667
|
-
object({
|
|
12668
|
-
id: string(),
|
|
12669
|
-
label: string(),
|
|
12670
|
-
isAdmin: boolean().default(false),
|
|
12671
|
-
allowedProviders: AllowedProviderSchema,
|
|
12672
|
-
allowedDevices: AllowedDevicesSchema,
|
|
12673
|
-
tokenHash: string(),
|
|
12674
|
-
tokenPrefix: string(),
|
|
12675
|
-
createdAt: number(),
|
|
12676
|
-
lastUsedAt: number().optional()
|
|
12677
|
-
});
|
|
12678
12676
|
object({
|
|
12679
12677
|
id: string(),
|
|
12680
12678
|
userId: string(),
|
|
@@ -16656,16 +16654,36 @@ var RecordKindStateSchema = _enum([
|
|
|
16656
16654
|
var DeclareKindResultSchema = object({
|
|
16657
16655
|
kindId: number().int(),
|
|
16658
16656
|
state: RecordKindStateSchema,
|
|
16659
|
-
createdIndexes: array(string())
|
|
16660
|
-
/**
|
|
16661
|
-
* RETIRED (D900): always `null`. It carried the records-migration boot guard;
|
|
16662
|
-
* it stays on the wire, null, because an addon built before the removal reads
|
|
16663
|
-
* an ABSENT field as "adoption pending" and refuses to start.
|
|
16664
|
-
*/
|
|
16665
|
-
adoptionPending: _null()
|
|
16657
|
+
createdIndexes: array(string())
|
|
16666
16658
|
});
|
|
16667
16659
|
/** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
|
|
16668
16660
|
var SecretRefsList = array(string());
|
|
16661
|
+
/**
|
|
16662
|
+
* One op of a `transact`: the single-row writes, each on a kind of the caller.
|
|
16663
|
+
* All ops of one call share ONE database file and ONE `transactFamily`.
|
|
16664
|
+
*/
|
|
16665
|
+
var RecordTransactOpSchema = discriminatedUnion("op", [
|
|
16666
|
+
object({
|
|
16667
|
+
op: literal("put"),
|
|
16668
|
+
kind: RecordKindNameSchema,
|
|
16669
|
+
record: RecordInputSchema,
|
|
16670
|
+
ifRev: number().int().min(0).optional()
|
|
16671
|
+
}),
|
|
16672
|
+
object({
|
|
16673
|
+
op: literal("patch"),
|
|
16674
|
+
kind: RecordKindNameSchema,
|
|
16675
|
+
id: RecordIdSchema,
|
|
16676
|
+
data: RecordBodySchema,
|
|
16677
|
+
at: number().int().nullable().optional(),
|
|
16678
|
+
expiresAt: number().int().nullable().optional(),
|
|
16679
|
+
ifRev: number().int().min(1).optional()
|
|
16680
|
+
}),
|
|
16681
|
+
object({
|
|
16682
|
+
op: literal("delete"),
|
|
16683
|
+
kind: RecordKindNameSchema,
|
|
16684
|
+
id: RecordIdSchema
|
|
16685
|
+
})
|
|
16686
|
+
]);
|
|
16669
16687
|
var RecordSecretRefsSchema = record(string(), record(string(), string()));
|
|
16670
16688
|
method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
|
|
16671
16689
|
kind: "mutation",
|
|
@@ -16772,6 +16790,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
|
|
|
16772
16790
|
}), {
|
|
16773
16791
|
kind: "mutation",
|
|
16774
16792
|
auth: "admin"
|
|
16793
|
+
}), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
|
|
16794
|
+
results: array(object({
|
|
16795
|
+
rev: number().int().nullable(),
|
|
16796
|
+
deleted: boolean()
|
|
16797
|
+
})),
|
|
16798
|
+
releasedRefs: SecretRefsList,
|
|
16799
|
+
secretRefs: SecretRefsList
|
|
16800
|
+
}), {
|
|
16801
|
+
kind: "mutation",
|
|
16802
|
+
auth: "admin"
|
|
16775
16803
|
}), method(object({
|
|
16776
16804
|
deviceId: number().int(),
|
|
16777
16805
|
kinds: array(RecordKindNameSchema).optional()
|
|
@@ -42479,9 +42507,13 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42479
42507
|
"node-updating",
|
|
42480
42508
|
"node-inference-unavailable",
|
|
42481
42509
|
"detection-blind",
|
|
42510
|
+
"motion-noisy",
|
|
42511
|
+
"motion-calm",
|
|
42482
42512
|
"recording-stalled",
|
|
42483
42513
|
"recording-healthy",
|
|
42484
42514
|
"recording-degraded",
|
|
42515
|
+
"device-attention-required",
|
|
42516
|
+
"device-attention-resolved",
|
|
42485
42517
|
"storage-location-low",
|
|
42486
42518
|
"storage-location-critical",
|
|
42487
42519
|
"storage-location-ok",
|
|
@@ -42505,6 +42537,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42505
42537
|
"alert-critical",
|
|
42506
42538
|
"alert-error",
|
|
42507
42539
|
"alert-critical-resolved",
|
|
42540
|
+
"rule-broken",
|
|
42541
|
+
"rule-repaired",
|
|
42508
42542
|
"camera-online",
|
|
42509
42543
|
"camera-offline",
|
|
42510
42544
|
"camera-disabled",
|
|
@@ -55803,6 +55837,16 @@ var DishwasherStatusSchema = object({
|
|
|
55803
55837
|
powerState: string().nullable(),
|
|
55804
55838
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55805
55839
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55840
|
+
/**
|
|
55841
|
+
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
55842
|
+
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
55843
|
+
* when none is reported. A cleared reminder is not an unknown one.
|
|
55844
|
+
*/
|
|
55845
|
+
filterCleaningDue: boolean().nullable(),
|
|
55846
|
+
/** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
|
|
55847
|
+
machineCareDue: boolean().nullable(),
|
|
55848
|
+
/** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
|
|
55849
|
+
machineCareRemainingRuns: number().int().nonnegative().nullable(),
|
|
55806
55850
|
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
55807
55851
|
halfLoad: boolean().nullable(),
|
|
55808
55852
|
hygienePlus: boolean().nullable(),
|
|
@@ -64453,16 +64497,6 @@ var UpdateUserInputSchema = object({
|
|
|
64453
64497
|
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
64454
64498
|
scopes: array(TokenScopeSchema).optional()
|
|
64455
64499
|
});
|
|
64456
|
-
var ApiKeySummarySchema = object({
|
|
64457
|
-
id: string(),
|
|
64458
|
-
label: string(),
|
|
64459
|
-
isAdmin: boolean().default(false),
|
|
64460
|
-
allowedProviders: union([array(string()), literal("*")]).optional(),
|
|
64461
|
-
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
64462
|
-
tokenPrefix: string(),
|
|
64463
|
-
createdAt: number(),
|
|
64464
|
-
lastUsedAt: number().optional()
|
|
64465
|
-
});
|
|
64466
64500
|
var OauthSessionSummarySchema = object({
|
|
64467
64501
|
id: string(),
|
|
64468
64502
|
userId: string(),
|
|
@@ -64484,8 +64518,7 @@ var TotpStatusSchema = object({
|
|
|
64484
64518
|
confirmedAt: number().nullable()
|
|
64485
64519
|
});
|
|
64486
64520
|
/**
|
|
64487
|
-
* user-management — singleton capability for user accounts
|
|
64488
|
-
* legacy API-key rows.
|
|
64521
|
+
* user-management — singleton capability for user accounts.
|
|
64489
64522
|
*
|
|
64490
64523
|
* v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
|
|
64491
64524
|
* — the subset check on `setUserScopes` is moot
|
|
@@ -64541,10 +64574,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
64541
64574
|
}), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
|
|
64542
64575
|
kind: "mutation",
|
|
64543
64576
|
access: "view"
|
|
64544
|
-
}), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
|
|
64545
|
-
kind: "mutation",
|
|
64546
|
-
auth: "admin",
|
|
64547
|
-
access: "delete"
|
|
64548
64577
|
}), method(object({ userId: string() }), TotpSetupResultSchema, {
|
|
64549
64578
|
kind: "mutation",
|
|
64550
64579
|
auth: "admin",
|
|
@@ -74000,6 +74029,12 @@ Object.freeze({
|
|
|
74000
74029
|
addonId: null,
|
|
74001
74030
|
access: "view"
|
|
74002
74031
|
},
|
|
74032
|
+
"records.transact": {
|
|
74033
|
+
capName: "records",
|
|
74034
|
+
capScope: "system",
|
|
74035
|
+
addonId: null,
|
|
74036
|
+
access: "create"
|
|
74037
|
+
},
|
|
74003
74038
|
"sceneMonitor.captureReference": {
|
|
74004
74039
|
capName: "scene-monitor",
|
|
74005
74040
|
capScope: "device",
|
|
@@ -75332,12 +75367,6 @@ Object.freeze({
|
|
|
75332
75367
|
addonId: null,
|
|
75333
75368
|
access: "view"
|
|
75334
75369
|
},
|
|
75335
|
-
"userManagement.listApiKeys": {
|
|
75336
|
-
capName: "user-management",
|
|
75337
|
-
capScope: "system",
|
|
75338
|
-
addonId: null,
|
|
75339
|
-
access: "view"
|
|
75340
|
-
},
|
|
75341
75370
|
"userManagement.listExternalIdentities": {
|
|
75342
75371
|
capName: "user-management",
|
|
75343
75372
|
capScope: "system",
|
|
@@ -75392,12 +75421,6 @@ Object.freeze({
|
|
|
75392
75421
|
addonId: null,
|
|
75393
75422
|
access: "create"
|
|
75394
75423
|
},
|
|
75395
|
-
"userManagement.revokeApiKey": {
|
|
75396
|
-
capName: "user-management",
|
|
75397
|
-
capScope: "system",
|
|
75398
|
-
addonId: null,
|
|
75399
|
-
access: "delete"
|
|
75400
|
-
},
|
|
75401
75424
|
"userManagement.revokeOauthSession": {
|
|
75402
75425
|
capName: "user-management",
|
|
75403
75426
|
capScope: "system",
|
|
@@ -78762,9 +78785,13 @@ new Map(Object.entries({
|
|
|
78762
78785
|
"stream-online": "device-events",
|
|
78763
78786
|
"stream-offline": "device-events",
|
|
78764
78787
|
"detection-blind": "device-events",
|
|
78788
|
+
"motion-noisy": "device-events",
|
|
78789
|
+
"motion-calm": "device-events",
|
|
78765
78790
|
"recording-stalled": "device-events",
|
|
78766
78791
|
"recording-healthy": "device-events",
|
|
78767
78792
|
"recording-degraded": "device-events",
|
|
78793
|
+
"device-attention-required": "device-events",
|
|
78794
|
+
"device-attention-resolved": "device-events",
|
|
78768
78795
|
"node-online": "system",
|
|
78769
78796
|
"node-offline": "system",
|
|
78770
78797
|
"node-restarting": "system",
|
|
@@ -78781,6 +78808,8 @@ new Map(Object.entries({
|
|
|
78781
78808
|
"alert-critical": "system",
|
|
78782
78809
|
"alert-error": "system",
|
|
78783
78810
|
"alert-critical-resolved": "system",
|
|
78811
|
+
"rule-broken": "system",
|
|
78812
|
+
"rule-repaired": "system",
|
|
78784
78813
|
"storage-location-low": "system",
|
|
78785
78814
|
"storage-location-critical": "system",
|
|
78786
78815
|
"storage-location-ok": "system",
|
|
@@ -78845,6 +78874,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
78845
78874
|
label: "Detecting nothing",
|
|
78846
78875
|
kinds: ["detection-blind"]
|
|
78847
78876
|
},
|
|
78877
|
+
{
|
|
78878
|
+
id: "motion-noise",
|
|
78879
|
+
family: "device-events",
|
|
78880
|
+
label: "Motion without a subject",
|
|
78881
|
+
kinds: ["motion-noisy", "motion-calm"]
|
|
78882
|
+
},
|
|
78848
78883
|
{
|
|
78849
78884
|
id: "recording",
|
|
78850
78885
|
family: "device-events",
|
|
@@ -78855,6 +78890,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
78855
78890
|
"recording-degraded"
|
|
78856
78891
|
]
|
|
78857
78892
|
},
|
|
78893
|
+
{
|
|
78894
|
+
id: "device-attention",
|
|
78895
|
+
family: "device-events",
|
|
78896
|
+
label: "Needs attention",
|
|
78897
|
+
kinds: ["device-attention-required", "device-attention-resolved"]
|
|
78898
|
+
},
|
|
78858
78899
|
{
|
|
78859
78900
|
id: "nodes",
|
|
78860
78901
|
family: "system",
|
|
@@ -78915,6 +78956,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
78915
78956
|
"alert-critical-resolved"
|
|
78916
78957
|
]
|
|
78917
78958
|
},
|
|
78959
|
+
{
|
|
78960
|
+
id: "rule-health",
|
|
78961
|
+
family: "system",
|
|
78962
|
+
label: "Notification rules",
|
|
78963
|
+
kinds: ["rule-broken", "rule-repaired"]
|
|
78964
|
+
},
|
|
78918
78965
|
{
|
|
78919
78966
|
id: "alarm",
|
|
78920
78967
|
family: "alarm",
|
|
@@ -78988,6 +79035,7 @@ var ALERT_EPISODE = [
|
|
|
78988
79035
|
"alert-error",
|
|
78989
79036
|
"alert-critical-resolved"
|
|
78990
79037
|
];
|
|
79038
|
+
var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
|
|
78991
79039
|
var UPDATES = [
|
|
78992
79040
|
"addon-update-available",
|
|
78993
79041
|
"server-update-available",
|
|
@@ -79017,9 +79065,12 @@ var DEVICE_EVENTS = [
|
|
|
79017
79065
|
"stream-online",
|
|
79018
79066
|
"stream-offline",
|
|
79019
79067
|
"detection-blind",
|
|
79068
|
+
"motion-noisy",
|
|
79069
|
+
"motion-calm",
|
|
79020
79070
|
"recording-stalled",
|
|
79021
79071
|
"recording-healthy",
|
|
79022
79072
|
"recording-degraded",
|
|
79073
|
+
...DEVICE_ATTENTION,
|
|
79023
79074
|
...ALARM
|
|
79024
79075
|
];
|
|
79025
79076
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -79187,7 +79238,13 @@ var STATE_SUMMARY_VARS = [
|
|
|
79187
79238
|
[...RULE_TEXT],
|
|
79188
79239
|
[...RULE_TEXT],
|
|
79189
79240
|
[...RULE_TEXT],
|
|
79190
|
-
|
|
79241
|
+
[...RULE_TEXT],
|
|
79242
|
+
[...RULE_TEXT],
|
|
79243
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79244
|
+
[...RULE_TEXT],
|
|
79245
|
+
[...RULE_TEXT],
|
|
79246
|
+
[...RULE_TEXT],
|
|
79247
|
+
[...RULE_TEXT],
|
|
79191
79248
|
[...RULE_TEXT],
|
|
79192
79249
|
[...RULE_TEXT],
|
|
79193
79250
|
[...RULE_TEXT],
|
|
@@ -79205,11 +79262,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
79205
79262
|
[...RULE_TEXT],
|
|
79206
79263
|
[...RULE_TEXT],
|
|
79207
79264
|
[...RULE_TEXT],
|
|
79265
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79208
79266
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79267
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79209
79268
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79210
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79211
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79212
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79269
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79213
79270
|
[...RULE_TEXT],
|
|
79214
79271
|
[...RULE_TEXT],
|
|
79215
79272
|
[...RULE_TEXT],
|
|
@@ -79230,6 +79287,125 @@ var STATE_SUMMARY_VARS = [
|
|
|
79230
79287
|
[...RULE_TEXT],
|
|
79231
79288
|
...STATE_SUMMARY_VARS
|
|
79232
79289
|
];
|
|
79290
|
+
new Map([
|
|
79291
|
+
{
|
|
79292
|
+
id: "device-connectivity",
|
|
79293
|
+
family: "device-events",
|
|
79294
|
+
label: "Device connectivity (offline / back online)",
|
|
79295
|
+
bad: ["device-offline"],
|
|
79296
|
+
recovery: ["device-online"],
|
|
79297
|
+
snapshotLabel: "Devices offline now",
|
|
79298
|
+
snapshotSection: "device-state"
|
|
79299
|
+
},
|
|
79300
|
+
{
|
|
79301
|
+
id: "device-switch",
|
|
79302
|
+
family: "device-events",
|
|
79303
|
+
label: "Device switched off / back on",
|
|
79304
|
+
bad: ["device-disabled"],
|
|
79305
|
+
recovery: ["device-enabled"],
|
|
79306
|
+
snapshotLabel: "Devices switched off now",
|
|
79307
|
+
snapshotSection: "device-state"
|
|
79308
|
+
},
|
|
79309
|
+
{
|
|
79310
|
+
id: "stream-connectivity",
|
|
79311
|
+
family: "device-events",
|
|
79312
|
+
label: "Stream connectivity (offline / back online)",
|
|
79313
|
+
bad: ["stream-offline"],
|
|
79314
|
+
recovery: ["stream-online"],
|
|
79315
|
+
snapshotLabel: "Streams offline now",
|
|
79316
|
+
snapshotSection: "streams"
|
|
79317
|
+
},
|
|
79318
|
+
{
|
|
79319
|
+
id: "battery",
|
|
79320
|
+
family: "device-events",
|
|
79321
|
+
label: "Battery (low / back to normal)",
|
|
79322
|
+
bad: ["device-battery-low"],
|
|
79323
|
+
recovery: ["device-battery-normal"],
|
|
79324
|
+
snapshotLabel: "Batteries low now",
|
|
79325
|
+
snapshotSection: "battery"
|
|
79326
|
+
},
|
|
79327
|
+
{
|
|
79328
|
+
id: "consumables",
|
|
79329
|
+
family: "device-events",
|
|
79330
|
+
label: "Consumables (low / replaced)",
|
|
79331
|
+
bad: ["device-consumable-low"],
|
|
79332
|
+
recovery: ["device-consumable-normal"],
|
|
79333
|
+
snapshotLabel: "Consumables low now",
|
|
79334
|
+
snapshotSection: "consumables"
|
|
79335
|
+
},
|
|
79336
|
+
{
|
|
79337
|
+
id: "tanks",
|
|
79338
|
+
family: "device-events",
|
|
79339
|
+
label: "Tanks (low or full / back to normal)",
|
|
79340
|
+
bad: ["device-tank-low", "device-tank-full"],
|
|
79341
|
+
recovery: ["device-tank-normal"],
|
|
79342
|
+
snapshotLabel: "Tanks low or full now",
|
|
79343
|
+
snapshotSection: "tanks"
|
|
79344
|
+
},
|
|
79345
|
+
{
|
|
79346
|
+
id: "motion-noise",
|
|
79347
|
+
family: "device-events",
|
|
79348
|
+
label: "Motion without a subject (constant / calm again)",
|
|
79349
|
+
bad: ["motion-noisy"],
|
|
79350
|
+
recovery: ["motion-calm"],
|
|
79351
|
+
snapshotLabel: "Cameras with constant motion now",
|
|
79352
|
+
snapshotSection: null
|
|
79353
|
+
},
|
|
79354
|
+
{
|
|
79355
|
+
id: "recording-health",
|
|
79356
|
+
family: "device-events",
|
|
79357
|
+
label: "Recording health (stalled or degraded / recording again)",
|
|
79358
|
+
bad: ["recording-stalled", "recording-degraded"],
|
|
79359
|
+
recovery: ["recording-healthy"],
|
|
79360
|
+
snapshotLabel: "Recordings stalled now",
|
|
79361
|
+
snapshotSection: null
|
|
79362
|
+
},
|
|
79363
|
+
{
|
|
79364
|
+
id: "device-attention",
|
|
79365
|
+
family: "device-events",
|
|
79366
|
+
label: "Device needs attention (raised / resolved)",
|
|
79367
|
+
bad: ["device-attention-required"],
|
|
79368
|
+
recovery: ["device-attention-resolved"],
|
|
79369
|
+
snapshotLabel: "Devices needing attention now",
|
|
79370
|
+
snapshotSection: null
|
|
79371
|
+
},
|
|
79372
|
+
{
|
|
79373
|
+
id: "node-connectivity",
|
|
79374
|
+
family: "system",
|
|
79375
|
+
label: "Node connectivity (offline / back online)",
|
|
79376
|
+
bad: ["node-offline"],
|
|
79377
|
+
recovery: ["node-online"],
|
|
79378
|
+
snapshotLabel: "Nodes offline now",
|
|
79379
|
+
snapshotSection: "nodes"
|
|
79380
|
+
},
|
|
79381
|
+
{
|
|
79382
|
+
id: "storage-space",
|
|
79383
|
+
family: "system",
|
|
79384
|
+
label: "Storage space (low or critical / ok again)",
|
|
79385
|
+
bad: ["storage-location-low", "storage-location-critical"],
|
|
79386
|
+
recovery: ["storage-location-ok"],
|
|
79387
|
+
snapshotLabel: "Storage locations low now",
|
|
79388
|
+
snapshotSection: null
|
|
79389
|
+
},
|
|
79390
|
+
{
|
|
79391
|
+
id: "critical-alerts",
|
|
79392
|
+
family: "system",
|
|
79393
|
+
label: "Critical alerts (raised / resolved)",
|
|
79394
|
+
bad: ["alert-critical"],
|
|
79395
|
+
recovery: ["alert-critical-resolved"],
|
|
79396
|
+
snapshotLabel: "Critical alerts open now",
|
|
79397
|
+
snapshotSection: null
|
|
79398
|
+
},
|
|
79399
|
+
{
|
|
79400
|
+
id: "rule-health",
|
|
79401
|
+
family: "system",
|
|
79402
|
+
label: "Rule health (broken / repaired)",
|
|
79403
|
+
bad: ["rule-broken"],
|
|
79404
|
+
recovery: ["rule-repaired"],
|
|
79405
|
+
snapshotLabel: "Notification rules broken now",
|
|
79406
|
+
snapshotSection: null
|
|
79407
|
+
}
|
|
79408
|
+
].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
|
|
79233
79409
|
new Set([
|
|
79234
79410
|
"disarmed",
|
|
79235
79411
|
"armed_home",
|
|
@@ -85635,7 +85811,7 @@ function buildConnectionFormSchema() {
|
|
|
85635
85811
|
id: "transport",
|
|
85636
85812
|
title: "Transport",
|
|
85637
85813
|
titleKey: "provider-ecowitt:connection.s_transport.title",
|
|
85638
|
-
description: "
|
|
85814
|
+
description: "Local poll connects out to the gateway (recommended). Push listener needs the gateway \"Customized\" upload pointed at this hub.",
|
|
85639
85815
|
descriptionKey: "provider-ecowitt:connection.s_transport.description",
|
|
85640
85816
|
columns: 1,
|
|
85641
85817
|
fields: [{
|
|
@@ -85762,7 +85938,7 @@ function buildDiscoveryParamsFormSchema() {
|
|
|
85762
85938
|
id: "scan",
|
|
85763
85939
|
title: "Scan options",
|
|
85764
85940
|
titleKey: "provider-ecowitt:discoveryParams.s_scan.title",
|
|
85765
|
-
description: "Leave empty to scan the local subnet
|
|
85941
|
+
description: "Leave empty to scan the local subnet; otherwise list broadcast addresses, gateway IPs or CIDRs, comma or newline separated.",
|
|
85766
85942
|
descriptionKey: "provider-ecowitt:discoveryParams.s_scan.description",
|
|
85767
85943
|
columns: 1,
|
|
85768
85944
|
fields: [{
|
package/dist/addon.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createServer } from "http";
|
|
2
2
|
import { EventEmitter } from "events";
|
|
3
3
|
import { createSocket } from "dgram";
|
|
4
|
-
//#region ../types/dist/event-category-
|
|
4
|
+
//#region ../types/dist/event-category-BfJwUd2S.mjs
|
|
5
5
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
6
6
|
EventCategory["SystemBoot"] = "system.boot";
|
|
7
7
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -318,6 +318,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
318
318
|
*/
|
|
319
319
|
EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
|
|
320
320
|
/**
|
|
321
|
+
* A camera's motion source has fired constantly with no subject for an hour
|
|
322
|
+
* (motion duty or session count over the bar, zero detections) — it is not
|
|
323
|
+
* blind, its motion zones or sensitivity want tuning (D907). Paired with
|
|
324
|
+
* {@link PipelineMotionCalm}.
|
|
325
|
+
*/
|
|
326
|
+
EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
|
|
327
|
+
/** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
|
|
328
|
+
EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
|
|
329
|
+
/**
|
|
321
330
|
* Per-camera pipeline config was mutated by the orchestrator
|
|
322
331
|
* (3-level settings change via `setAgentAddonDefaults` /
|
|
323
332
|
* `setCameraStepToggle` / `setCameraPipelineForAgent` or a
|
|
@@ -689,6 +698,14 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
|
689
698
|
EventCategory["BackupRestored"] = "backup.restored";
|
|
690
699
|
EventCategory["NotificationDispatched"] = "notification.dispatched";
|
|
691
700
|
EventCategory["NotificationFailed"] = "notification.failed";
|
|
701
|
+
/**
|
|
702
|
+
* A notification rule that cannot work (D905): its stored row does not load,
|
|
703
|
+
* or it still names a device / delivery target the prune CONFIRMED deleted.
|
|
704
|
+
* One edge per rule per distinct set of reasons; never on an unanswered read.
|
|
705
|
+
*/
|
|
706
|
+
EventCategory["NotificationRuleBroken"] = "notification.rule-broken";
|
|
707
|
+
/** The clear of {@link NotificationRuleBroken}: the rule loads and names nothing deleted. */
|
|
708
|
+
EventCategory["NotificationRuleRepaired"] = "notification.rule-repaired";
|
|
692
709
|
EventCategory["DeviceUpdated"] = "device.updated";
|
|
693
710
|
/**
|
|
694
711
|
* Transport-level connectivity. Emitted by the device driver when
|
|
@@ -5416,7 +5433,7 @@ var ZodIssueCode$1 = {
|
|
|
5416
5433
|
var ZodFirstPartyTypeKind$1;
|
|
5417
5434
|
ZodFirstPartyTypeKind$1 || (ZodFirstPartyTypeKind$1 = {});
|
|
5418
5435
|
//#endregion
|
|
5419
|
-
//#region ../types/dist/sleep-
|
|
5436
|
+
//#region ../types/dist/sleep-DJFUfKvA.mjs
|
|
5420
5437
|
/**
|
|
5421
5438
|
* The audio chunk plane's byte format, and the ONE expansion from a coded
|
|
5422
5439
|
* window to float samples (D455).
|
|
@@ -7945,7 +7962,7 @@ var EntryDescriptorSchema = object({
|
|
|
7945
7962
|
/** JSON Schema of the entry body; `secret: true` marks a password field. */
|
|
7946
7963
|
fields: record(string(), unknown())
|
|
7947
7964
|
}).strict();
|
|
7948
|
-
/** What crosses the wire
|
|
7965
|
+
/** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
|
|
7949
7966
|
var RecordKindDeclarationSchema = object({
|
|
7950
7967
|
database: _enum(RECORD_DATABASES).default("settings"),
|
|
7951
7968
|
class: _enum(RECORD_CLASSES),
|
|
@@ -7964,14 +7981,6 @@ var RecordKindDeclarationSchema = object({
|
|
|
7964
7981
|
secretPaths: array(string().min(1)).default([]),
|
|
7965
7982
|
/** The id key of each array that carries a secret (`{ headers: 'name' }`). */
|
|
7966
7983
|
secretArrayKeys: record(string(), string()).default({}),
|
|
7967
|
-
/**
|
|
7968
|
-
* RETIRED (D900): the legacy table a kind adopted from during the records
|
|
7969
|
-
* migration. Nothing declares it any more and nothing reads it; the schema
|
|
7970
|
-
* still ACCEPTS it because the catalog rows the migration wrote carry it
|
|
7971
|
-
* (an orphaned kind is never redeclared) and an addon built before the
|
|
7972
|
-
* removal still sends it. Never set it.
|
|
7973
|
-
*/
|
|
7974
|
-
adoptsFrom: string().min(1).optional(),
|
|
7975
7984
|
/** Kinds that must agree through `transact` sit in one file under one family name. */
|
|
7976
7985
|
transactFamily: string().min(1).optional(),
|
|
7977
7986
|
entry: EntryDescriptorSchema.optional()
|
|
@@ -12663,17 +12672,6 @@ object({
|
|
|
12663
12672
|
createdAt: number(),
|
|
12664
12673
|
updatedAt: number()
|
|
12665
12674
|
});
|
|
12666
|
-
object({
|
|
12667
|
-
id: string(),
|
|
12668
|
-
label: string(),
|
|
12669
|
-
isAdmin: boolean().default(false),
|
|
12670
|
-
allowedProviders: AllowedProviderSchema,
|
|
12671
|
-
allowedDevices: AllowedDevicesSchema,
|
|
12672
|
-
tokenHash: string(),
|
|
12673
|
-
tokenPrefix: string(),
|
|
12674
|
-
createdAt: number(),
|
|
12675
|
-
lastUsedAt: number().optional()
|
|
12676
|
-
});
|
|
12677
12675
|
object({
|
|
12678
12676
|
id: string(),
|
|
12679
12677
|
userId: string(),
|
|
@@ -16655,16 +16653,36 @@ var RecordKindStateSchema = _enum([
|
|
|
16655
16653
|
var DeclareKindResultSchema = object({
|
|
16656
16654
|
kindId: number().int(),
|
|
16657
16655
|
state: RecordKindStateSchema,
|
|
16658
|
-
createdIndexes: array(string())
|
|
16659
|
-
/**
|
|
16660
|
-
* RETIRED (D900): always `null`. It carried the records-migration boot guard;
|
|
16661
|
-
* it stays on the wire, null, because an addon built before the removal reads
|
|
16662
|
-
* an ABSENT field as "adoption pending" and refuses to start.
|
|
16663
|
-
*/
|
|
16664
|
-
adoptionPending: _null()
|
|
16656
|
+
createdIndexes: array(string())
|
|
16665
16657
|
});
|
|
16666
16658
|
/** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
|
|
16667
16659
|
var SecretRefsList = array(string());
|
|
16660
|
+
/**
|
|
16661
|
+
* One op of a `transact`: the single-row writes, each on a kind of the caller.
|
|
16662
|
+
* All ops of one call share ONE database file and ONE `transactFamily`.
|
|
16663
|
+
*/
|
|
16664
|
+
var RecordTransactOpSchema = discriminatedUnion("op", [
|
|
16665
|
+
object({
|
|
16666
|
+
op: literal("put"),
|
|
16667
|
+
kind: RecordKindNameSchema,
|
|
16668
|
+
record: RecordInputSchema,
|
|
16669
|
+
ifRev: number().int().min(0).optional()
|
|
16670
|
+
}),
|
|
16671
|
+
object({
|
|
16672
|
+
op: literal("patch"),
|
|
16673
|
+
kind: RecordKindNameSchema,
|
|
16674
|
+
id: RecordIdSchema,
|
|
16675
|
+
data: RecordBodySchema,
|
|
16676
|
+
at: number().int().nullable().optional(),
|
|
16677
|
+
expiresAt: number().int().nullable().optional(),
|
|
16678
|
+
ifRev: number().int().min(1).optional()
|
|
16679
|
+
}),
|
|
16680
|
+
object({
|
|
16681
|
+
op: literal("delete"),
|
|
16682
|
+
kind: RecordKindNameSchema,
|
|
16683
|
+
id: RecordIdSchema
|
|
16684
|
+
})
|
|
16685
|
+
]);
|
|
16668
16686
|
var RecordSecretRefsSchema = record(string(), record(string(), string()));
|
|
16669
16687
|
method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
|
|
16670
16688
|
kind: "mutation",
|
|
@@ -16771,6 +16789,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
|
|
|
16771
16789
|
}), {
|
|
16772
16790
|
kind: "mutation",
|
|
16773
16791
|
auth: "admin"
|
|
16792
|
+
}), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
|
|
16793
|
+
results: array(object({
|
|
16794
|
+
rev: number().int().nullable(),
|
|
16795
|
+
deleted: boolean()
|
|
16796
|
+
})),
|
|
16797
|
+
releasedRefs: SecretRefsList,
|
|
16798
|
+
secretRefs: SecretRefsList
|
|
16799
|
+
}), {
|
|
16800
|
+
kind: "mutation",
|
|
16801
|
+
auth: "admin"
|
|
16774
16802
|
}), method(object({
|
|
16775
16803
|
deviceId: number().int(),
|
|
16776
16804
|
kinds: array(RecordKindNameSchema).optional()
|
|
@@ -42478,9 +42506,13 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42478
42506
|
"node-updating",
|
|
42479
42507
|
"node-inference-unavailable",
|
|
42480
42508
|
"detection-blind",
|
|
42509
|
+
"motion-noisy",
|
|
42510
|
+
"motion-calm",
|
|
42481
42511
|
"recording-stalled",
|
|
42482
42512
|
"recording-healthy",
|
|
42483
42513
|
"recording-degraded",
|
|
42514
|
+
"device-attention-required",
|
|
42515
|
+
"device-attention-resolved",
|
|
42484
42516
|
"storage-location-low",
|
|
42485
42517
|
"storage-location-critical",
|
|
42486
42518
|
"storage-location-ok",
|
|
@@ -42504,6 +42536,8 @@ var NcSystemEventKindSchema = _enum([
|
|
|
42504
42536
|
"alert-critical",
|
|
42505
42537
|
"alert-error",
|
|
42506
42538
|
"alert-critical-resolved",
|
|
42539
|
+
"rule-broken",
|
|
42540
|
+
"rule-repaired",
|
|
42507
42541
|
"camera-online",
|
|
42508
42542
|
"camera-offline",
|
|
42509
42543
|
"camera-disabled",
|
|
@@ -55802,6 +55836,16 @@ var DishwasherStatusSchema = object({
|
|
|
55802
55836
|
powerState: string().nullable(),
|
|
55803
55837
|
saltLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55804
55838
|
rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
|
|
55839
|
+
/**
|
|
55840
|
+
* True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
|
|
55841
|
+
* combined care-and-filter reminder raised); false when every such reminder reads clear; null
|
|
55842
|
+
* when none is reported. A cleared reminder is not an unknown one.
|
|
55843
|
+
*/
|
|
55844
|
+
filterCleaningDue: boolean().nullable(),
|
|
55845
|
+
/** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
|
|
55846
|
+
machineCareDue: boolean().nullable(),
|
|
55847
|
+
/** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
|
|
55848
|
+
machineCareRemainingRuns: number().int().nonnegative().nullable(),
|
|
55805
55849
|
/** Option states: null when the appliance does not expose the option or has not said. */
|
|
55806
55850
|
halfLoad: boolean().nullable(),
|
|
55807
55851
|
hygienePlus: boolean().nullable(),
|
|
@@ -64452,16 +64496,6 @@ var UpdateUserInputSchema = object({
|
|
|
64452
64496
|
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
64453
64497
|
scopes: array(TokenScopeSchema).optional()
|
|
64454
64498
|
});
|
|
64455
|
-
var ApiKeySummarySchema = object({
|
|
64456
|
-
id: string(),
|
|
64457
|
-
label: string(),
|
|
64458
|
-
isAdmin: boolean().default(false),
|
|
64459
|
-
allowedProviders: union([array(string()), literal("*")]).optional(),
|
|
64460
|
-
allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
|
|
64461
|
-
tokenPrefix: string(),
|
|
64462
|
-
createdAt: number(),
|
|
64463
|
-
lastUsedAt: number().optional()
|
|
64464
|
-
});
|
|
64465
64499
|
var OauthSessionSummarySchema = object({
|
|
64466
64500
|
id: string(),
|
|
64467
64501
|
userId: string(),
|
|
@@ -64483,8 +64517,7 @@ var TotpStatusSchema = object({
|
|
|
64483
64517
|
confirmedAt: number().nullable()
|
|
64484
64518
|
});
|
|
64485
64519
|
/**
|
|
64486
|
-
* user-management — singleton capability for user accounts
|
|
64487
|
-
* legacy API-key rows.
|
|
64520
|
+
* user-management — singleton capability for user accounts.
|
|
64488
64521
|
*
|
|
64489
64522
|
* v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
|
|
64490
64523
|
* — the subset check on `setUserScopes` is moot
|
|
@@ -64540,10 +64573,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
|
|
|
64540
64573
|
}), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
|
|
64541
64574
|
kind: "mutation",
|
|
64542
64575
|
access: "view"
|
|
64543
|
-
}), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
|
|
64544
|
-
kind: "mutation",
|
|
64545
|
-
auth: "admin",
|
|
64546
|
-
access: "delete"
|
|
64547
64576
|
}), method(object({ userId: string() }), TotpSetupResultSchema, {
|
|
64548
64577
|
kind: "mutation",
|
|
64549
64578
|
auth: "admin",
|
|
@@ -73999,6 +74028,12 @@ Object.freeze({
|
|
|
73999
74028
|
addonId: null,
|
|
74000
74029
|
access: "view"
|
|
74001
74030
|
},
|
|
74031
|
+
"records.transact": {
|
|
74032
|
+
capName: "records",
|
|
74033
|
+
capScope: "system",
|
|
74034
|
+
addonId: null,
|
|
74035
|
+
access: "create"
|
|
74036
|
+
},
|
|
74002
74037
|
"sceneMonitor.captureReference": {
|
|
74003
74038
|
capName: "scene-monitor",
|
|
74004
74039
|
capScope: "device",
|
|
@@ -75331,12 +75366,6 @@ Object.freeze({
|
|
|
75331
75366
|
addonId: null,
|
|
75332
75367
|
access: "view"
|
|
75333
75368
|
},
|
|
75334
|
-
"userManagement.listApiKeys": {
|
|
75335
|
-
capName: "user-management",
|
|
75336
|
-
capScope: "system",
|
|
75337
|
-
addonId: null,
|
|
75338
|
-
access: "view"
|
|
75339
|
-
},
|
|
75340
75369
|
"userManagement.listExternalIdentities": {
|
|
75341
75370
|
capName: "user-management",
|
|
75342
75371
|
capScope: "system",
|
|
@@ -75391,12 +75420,6 @@ Object.freeze({
|
|
|
75391
75420
|
addonId: null,
|
|
75392
75421
|
access: "create"
|
|
75393
75422
|
},
|
|
75394
|
-
"userManagement.revokeApiKey": {
|
|
75395
|
-
capName: "user-management",
|
|
75396
|
-
capScope: "system",
|
|
75397
|
-
addonId: null,
|
|
75398
|
-
access: "delete"
|
|
75399
|
-
},
|
|
75400
75423
|
"userManagement.revokeOauthSession": {
|
|
75401
75424
|
capName: "user-management",
|
|
75402
75425
|
capScope: "system",
|
|
@@ -78761,9 +78784,13 @@ new Map(Object.entries({
|
|
|
78761
78784
|
"stream-online": "device-events",
|
|
78762
78785
|
"stream-offline": "device-events",
|
|
78763
78786
|
"detection-blind": "device-events",
|
|
78787
|
+
"motion-noisy": "device-events",
|
|
78788
|
+
"motion-calm": "device-events",
|
|
78764
78789
|
"recording-stalled": "device-events",
|
|
78765
78790
|
"recording-healthy": "device-events",
|
|
78766
78791
|
"recording-degraded": "device-events",
|
|
78792
|
+
"device-attention-required": "device-events",
|
|
78793
|
+
"device-attention-resolved": "device-events",
|
|
78767
78794
|
"node-online": "system",
|
|
78768
78795
|
"node-offline": "system",
|
|
78769
78796
|
"node-restarting": "system",
|
|
@@ -78780,6 +78807,8 @@ new Map(Object.entries({
|
|
|
78780
78807
|
"alert-critical": "system",
|
|
78781
78808
|
"alert-error": "system",
|
|
78782
78809
|
"alert-critical-resolved": "system",
|
|
78810
|
+
"rule-broken": "system",
|
|
78811
|
+
"rule-repaired": "system",
|
|
78783
78812
|
"storage-location-low": "system",
|
|
78784
78813
|
"storage-location-critical": "system",
|
|
78785
78814
|
"storage-location-ok": "system",
|
|
@@ -78844,6 +78873,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
78844
78873
|
label: "Detecting nothing",
|
|
78845
78874
|
kinds: ["detection-blind"]
|
|
78846
78875
|
},
|
|
78876
|
+
{
|
|
78877
|
+
id: "motion-noise",
|
|
78878
|
+
family: "device-events",
|
|
78879
|
+
label: "Motion without a subject",
|
|
78880
|
+
kinds: ["motion-noisy", "motion-calm"]
|
|
78881
|
+
},
|
|
78847
78882
|
{
|
|
78848
78883
|
id: "recording",
|
|
78849
78884
|
family: "device-events",
|
|
@@ -78854,6 +78889,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
78854
78889
|
"recording-degraded"
|
|
78855
78890
|
]
|
|
78856
78891
|
},
|
|
78892
|
+
{
|
|
78893
|
+
id: "device-attention",
|
|
78894
|
+
family: "device-events",
|
|
78895
|
+
label: "Needs attention",
|
|
78896
|
+
kinds: ["device-attention-required", "device-attention-resolved"]
|
|
78897
|
+
},
|
|
78857
78898
|
{
|
|
78858
78899
|
id: "nodes",
|
|
78859
78900
|
family: "system",
|
|
@@ -78914,6 +78955,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
|
|
|
78914
78955
|
"alert-critical-resolved"
|
|
78915
78956
|
]
|
|
78916
78957
|
},
|
|
78958
|
+
{
|
|
78959
|
+
id: "rule-health",
|
|
78960
|
+
family: "system",
|
|
78961
|
+
label: "Notification rules",
|
|
78962
|
+
kinds: ["rule-broken", "rule-repaired"]
|
|
78963
|
+
},
|
|
78917
78964
|
{
|
|
78918
78965
|
id: "alarm",
|
|
78919
78966
|
family: "alarm",
|
|
@@ -78987,6 +79034,7 @@ var ALERT_EPISODE = [
|
|
|
78987
79034
|
"alert-error",
|
|
78988
79035
|
"alert-critical-resolved"
|
|
78989
79036
|
];
|
|
79037
|
+
var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
|
|
78990
79038
|
var UPDATES = [
|
|
78991
79039
|
"addon-update-available",
|
|
78992
79040
|
"server-update-available",
|
|
@@ -79016,9 +79064,12 @@ var DEVICE_EVENTS = [
|
|
|
79016
79064
|
"stream-online",
|
|
79017
79065
|
"stream-offline",
|
|
79018
79066
|
"detection-blind",
|
|
79067
|
+
"motion-noisy",
|
|
79068
|
+
"motion-calm",
|
|
79019
79069
|
"recording-stalled",
|
|
79020
79070
|
"recording-healthy",
|
|
79021
79071
|
"recording-degraded",
|
|
79072
|
+
...DEVICE_ATTENTION,
|
|
79022
79073
|
...ALARM
|
|
79023
79074
|
];
|
|
79024
79075
|
/** Every kind a summary may speak about — the two summarisable families. */
|
|
@@ -79186,7 +79237,13 @@ var STATE_SUMMARY_VARS = [
|
|
|
79186
79237
|
[...RULE_TEXT],
|
|
79187
79238
|
[...RULE_TEXT],
|
|
79188
79239
|
[...RULE_TEXT],
|
|
79189
|
-
|
|
79240
|
+
[...RULE_TEXT],
|
|
79241
|
+
[...RULE_TEXT],
|
|
79242
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79243
|
+
[...RULE_TEXT],
|
|
79244
|
+
[...RULE_TEXT],
|
|
79245
|
+
[...RULE_TEXT],
|
|
79246
|
+
[...RULE_TEXT],
|
|
79190
79247
|
[...RULE_TEXT],
|
|
79191
79248
|
[...RULE_TEXT],
|
|
79192
79249
|
[...RULE_TEXT],
|
|
@@ -79204,11 +79261,11 @@ var STATE_SUMMARY_VARS = [
|
|
|
79204
79261
|
[...RULE_TEXT],
|
|
79205
79262
|
[...RULE_TEXT],
|
|
79206
79263
|
[...RULE_TEXT],
|
|
79264
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79207
79265
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79266
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79208
79267
|
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79209
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79210
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79211
|
-
([...RULE_TEXT], [...ALERT_EPISODE]),
|
|
79268
|
+
([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
|
|
79212
79269
|
[...RULE_TEXT],
|
|
79213
79270
|
[...RULE_TEXT],
|
|
79214
79271
|
[...RULE_TEXT],
|
|
@@ -79229,6 +79286,125 @@ var STATE_SUMMARY_VARS = [
|
|
|
79229
79286
|
[...RULE_TEXT],
|
|
79230
79287
|
...STATE_SUMMARY_VARS
|
|
79231
79288
|
];
|
|
79289
|
+
new Map([
|
|
79290
|
+
{
|
|
79291
|
+
id: "device-connectivity",
|
|
79292
|
+
family: "device-events",
|
|
79293
|
+
label: "Device connectivity (offline / back online)",
|
|
79294
|
+
bad: ["device-offline"],
|
|
79295
|
+
recovery: ["device-online"],
|
|
79296
|
+
snapshotLabel: "Devices offline now",
|
|
79297
|
+
snapshotSection: "device-state"
|
|
79298
|
+
},
|
|
79299
|
+
{
|
|
79300
|
+
id: "device-switch",
|
|
79301
|
+
family: "device-events",
|
|
79302
|
+
label: "Device switched off / back on",
|
|
79303
|
+
bad: ["device-disabled"],
|
|
79304
|
+
recovery: ["device-enabled"],
|
|
79305
|
+
snapshotLabel: "Devices switched off now",
|
|
79306
|
+
snapshotSection: "device-state"
|
|
79307
|
+
},
|
|
79308
|
+
{
|
|
79309
|
+
id: "stream-connectivity",
|
|
79310
|
+
family: "device-events",
|
|
79311
|
+
label: "Stream connectivity (offline / back online)",
|
|
79312
|
+
bad: ["stream-offline"],
|
|
79313
|
+
recovery: ["stream-online"],
|
|
79314
|
+
snapshotLabel: "Streams offline now",
|
|
79315
|
+
snapshotSection: "streams"
|
|
79316
|
+
},
|
|
79317
|
+
{
|
|
79318
|
+
id: "battery",
|
|
79319
|
+
family: "device-events",
|
|
79320
|
+
label: "Battery (low / back to normal)",
|
|
79321
|
+
bad: ["device-battery-low"],
|
|
79322
|
+
recovery: ["device-battery-normal"],
|
|
79323
|
+
snapshotLabel: "Batteries low now",
|
|
79324
|
+
snapshotSection: "battery"
|
|
79325
|
+
},
|
|
79326
|
+
{
|
|
79327
|
+
id: "consumables",
|
|
79328
|
+
family: "device-events",
|
|
79329
|
+
label: "Consumables (low / replaced)",
|
|
79330
|
+
bad: ["device-consumable-low"],
|
|
79331
|
+
recovery: ["device-consumable-normal"],
|
|
79332
|
+
snapshotLabel: "Consumables low now",
|
|
79333
|
+
snapshotSection: "consumables"
|
|
79334
|
+
},
|
|
79335
|
+
{
|
|
79336
|
+
id: "tanks",
|
|
79337
|
+
family: "device-events",
|
|
79338
|
+
label: "Tanks (low or full / back to normal)",
|
|
79339
|
+
bad: ["device-tank-low", "device-tank-full"],
|
|
79340
|
+
recovery: ["device-tank-normal"],
|
|
79341
|
+
snapshotLabel: "Tanks low or full now",
|
|
79342
|
+
snapshotSection: "tanks"
|
|
79343
|
+
},
|
|
79344
|
+
{
|
|
79345
|
+
id: "motion-noise",
|
|
79346
|
+
family: "device-events",
|
|
79347
|
+
label: "Motion without a subject (constant / calm again)",
|
|
79348
|
+
bad: ["motion-noisy"],
|
|
79349
|
+
recovery: ["motion-calm"],
|
|
79350
|
+
snapshotLabel: "Cameras with constant motion now",
|
|
79351
|
+
snapshotSection: null
|
|
79352
|
+
},
|
|
79353
|
+
{
|
|
79354
|
+
id: "recording-health",
|
|
79355
|
+
family: "device-events",
|
|
79356
|
+
label: "Recording health (stalled or degraded / recording again)",
|
|
79357
|
+
bad: ["recording-stalled", "recording-degraded"],
|
|
79358
|
+
recovery: ["recording-healthy"],
|
|
79359
|
+
snapshotLabel: "Recordings stalled now",
|
|
79360
|
+
snapshotSection: null
|
|
79361
|
+
},
|
|
79362
|
+
{
|
|
79363
|
+
id: "device-attention",
|
|
79364
|
+
family: "device-events",
|
|
79365
|
+
label: "Device needs attention (raised / resolved)",
|
|
79366
|
+
bad: ["device-attention-required"],
|
|
79367
|
+
recovery: ["device-attention-resolved"],
|
|
79368
|
+
snapshotLabel: "Devices needing attention now",
|
|
79369
|
+
snapshotSection: null
|
|
79370
|
+
},
|
|
79371
|
+
{
|
|
79372
|
+
id: "node-connectivity",
|
|
79373
|
+
family: "system",
|
|
79374
|
+
label: "Node connectivity (offline / back online)",
|
|
79375
|
+
bad: ["node-offline"],
|
|
79376
|
+
recovery: ["node-online"],
|
|
79377
|
+
snapshotLabel: "Nodes offline now",
|
|
79378
|
+
snapshotSection: "nodes"
|
|
79379
|
+
},
|
|
79380
|
+
{
|
|
79381
|
+
id: "storage-space",
|
|
79382
|
+
family: "system",
|
|
79383
|
+
label: "Storage space (low or critical / ok again)",
|
|
79384
|
+
bad: ["storage-location-low", "storage-location-critical"],
|
|
79385
|
+
recovery: ["storage-location-ok"],
|
|
79386
|
+
snapshotLabel: "Storage locations low now",
|
|
79387
|
+
snapshotSection: null
|
|
79388
|
+
},
|
|
79389
|
+
{
|
|
79390
|
+
id: "critical-alerts",
|
|
79391
|
+
family: "system",
|
|
79392
|
+
label: "Critical alerts (raised / resolved)",
|
|
79393
|
+
bad: ["alert-critical"],
|
|
79394
|
+
recovery: ["alert-critical-resolved"],
|
|
79395
|
+
snapshotLabel: "Critical alerts open now",
|
|
79396
|
+
snapshotSection: null
|
|
79397
|
+
},
|
|
79398
|
+
{
|
|
79399
|
+
id: "rule-health",
|
|
79400
|
+
family: "system",
|
|
79401
|
+
label: "Rule health (broken / repaired)",
|
|
79402
|
+
bad: ["rule-broken"],
|
|
79403
|
+
recovery: ["rule-repaired"],
|
|
79404
|
+
snapshotLabel: "Notification rules broken now",
|
|
79405
|
+
snapshotSection: null
|
|
79406
|
+
}
|
|
79407
|
+
].flatMap((spec) => [...spec.bad, ...spec.recovery].map((kind) => [kind, spec])));
|
|
79232
79408
|
new Set([
|
|
79233
79409
|
"disarmed",
|
|
79234
79410
|
"armed_home",
|
|
@@ -85634,7 +85810,7 @@ function buildConnectionFormSchema() {
|
|
|
85634
85810
|
id: "transport",
|
|
85635
85811
|
title: "Transport",
|
|
85636
85812
|
titleKey: "provider-ecowitt:connection.s_transport.title",
|
|
85637
|
-
description: "
|
|
85813
|
+
description: "Local poll connects out to the gateway (recommended). Push listener needs the gateway \"Customized\" upload pointed at this hub.",
|
|
85638
85814
|
descriptionKey: "provider-ecowitt:connection.s_transport.description",
|
|
85639
85815
|
columns: 1,
|
|
85640
85816
|
fields: [{
|
|
@@ -85761,7 +85937,7 @@ function buildDiscoveryParamsFormSchema() {
|
|
|
85761
85937
|
id: "scan",
|
|
85762
85938
|
title: "Scan options",
|
|
85763
85939
|
titleKey: "provider-ecowitt:discoveryParams.s_scan.title",
|
|
85764
|
-
description: "Leave empty to scan the local subnet
|
|
85940
|
+
description: "Leave empty to scan the local subnet; otherwise list broadcast addresses, gateway IPs or CIDRs, comma or newline separated.",
|
|
85765
85941
|
descriptionKey: "provider-ecowitt:discoveryParams.s_scan.description",
|
|
85766
85942
|
columns: 1,
|
|
85767
85943
|
fields: [{
|
package/i18n/en.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"connection.s_identity.title": "Gateway",
|
|
3
3
|
"connection.s_identity.name.label": "Name",
|
|
4
4
|
"connection.s_transport.title": "Transport",
|
|
5
|
-
"connection.s_transport.description": "
|
|
5
|
+
"connection.s_transport.description": "Local poll connects out to the gateway (recommended). Push listener needs the gateway \"Customized\" upload pointed at this hub.",
|
|
6
6
|
"connection.s_transport.transport.label": "Transport",
|
|
7
7
|
"connection.s_transport.transport.o_local.label": "Local poll (recommended)",
|
|
8
8
|
"connection.s_transport.transport.o_listener.label": "Push listener",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"connection.s_listener.listenPort.label": "Listen port",
|
|
16
16
|
"connection.s_listener.listenHost.label": "Bind host (optional)",
|
|
17
17
|
"discoveryParams.s_scan.title": "Scan options",
|
|
18
|
-
"discoveryParams.s_scan.description": "Leave empty to scan the local subnet
|
|
18
|
+
"discoveryParams.s_scan.description": "Leave empty to scan the local subnet; otherwise list broadcast addresses, gateway IPs or CIDRs, comma or newline separated.",
|
|
19
19
|
"discoveryParams.s_scan.broadcastAddress.label": "Broadcast addresses / gateway IPs / CIDRs",
|
|
20
20
|
"discoveryParams.s_scan.timeoutMs.label": "UDP timeout (ms)"
|
|
21
21
|
}
|
package/i18n/it.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"connection.s_identity.title": "Gateway",
|
|
3
3
|
"connection.s_identity.name.label": "Nome",
|
|
4
4
|
"connection.s_transport.title": "Trasporto",
|
|
5
|
-
"connection.s_transport.description": "
|
|
5
|
+
"connection.s_transport.description": "Il polling locale si connette al gateway (consigliato). Il listener push richiede che l'upload \"Customized\" del gateway punti a questo hub.",
|
|
6
6
|
"connection.s_transport.transport.label": "Trasporto",
|
|
7
7
|
"connection.s_transport.transport.o_local.label": "Lettura locale (consigliato)",
|
|
8
8
|
"connection.s_transport.transport.o_listener.label": "Listener push",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"connection.s_listener.listenPort.label": "Porta di ascolto",
|
|
16
16
|
"connection.s_listener.listenHost.label": "Host di ascolto (facoltativo)",
|
|
17
17
|
"discoveryParams.s_scan.title": "Opzioni di scansione",
|
|
18
|
-
"discoveryParams.s_scan.description": "Lascia vuoto per scansionare la
|
|
18
|
+
"discoveryParams.s_scan.description": "Lascia vuoto per scansionare la subnet locale; altrimenti elenca indirizzi broadcast, IP dei gateway o CIDR, separati da virgola o a capo.",
|
|
19
19
|
"discoveryParams.s_scan.broadcastAddress.label": "Indirizzi di broadcast / IP dei gateway / CIDR",
|
|
20
20
|
"discoveryParams.s_scan.timeoutMs.label": "Timeout UDP (ms)"
|
|
21
21
|
}
|
package/package.json
CHANGED