@camstack/addon-provider-dreame 0.1.22 → 0.1.24
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 +340 -5
- package/dist/addon.mjs +340 -5
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -4680,7 +4680,7 @@ function preprocess(fn, schema) {
|
|
|
4680
4680
|
});
|
|
4681
4681
|
}
|
|
4682
4682
|
//#endregion
|
|
4683
|
-
//#region ../types/dist/sleep-
|
|
4683
|
+
//#region ../types/dist/sleep-CZDdRBua.mjs
|
|
4684
4684
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4685
4685
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4686
4686
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -7291,7 +7291,16 @@ var DecoderStatsSchema = object({
|
|
|
7291
7291
|
inputFps: number(),
|
|
7292
7292
|
outputFps: number(),
|
|
7293
7293
|
avgDecodeTimeMs: number(),
|
|
7294
|
-
droppedFrames: number()
|
|
7294
|
+
droppedFrames: number(),
|
|
7295
|
+
/**
|
|
7296
|
+
* Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
|
|
7297
|
+
* lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
|
|
7298
|
+
* the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
|
|
7299
|
+
* is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
|
|
7300
|
+
*/
|
|
7301
|
+
lagMs: number().optional(),
|
|
7302
|
+
effectiveFps: number().optional(),
|
|
7303
|
+
adaptiveFps: number().optional()
|
|
7295
7304
|
});
|
|
7296
7305
|
var DecoderSessionConfigSchema = object({
|
|
7297
7306
|
codec: string(),
|
|
@@ -7332,7 +7341,15 @@ var DecoderSessionConfigSchema = object({
|
|
|
7332
7341
|
* other — `pullFrames` returns nothing for an `'shm'` session and
|
|
7333
7342
|
* `pullHandles` returns nothing for a `'callback'` session.
|
|
7334
7343
|
*/
|
|
7335
|
-
frameSink: _enum(["callback", "shm"]).default("callback")
|
|
7344
|
+
frameSink: _enum(["callback", "shm"]).default("callback"),
|
|
7345
|
+
/**
|
|
7346
|
+
* Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
|
|
7347
|
+
* a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
|
|
7348
|
+
* real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
|
|
7349
|
+
* stream-broker's `streamingDebug` gate — off by default so production logs
|
|
7350
|
+
* stay quiet and the emit path pays zero per-frame cost when disabled.
|
|
7351
|
+
*/
|
|
7352
|
+
debug: boolean().optional()
|
|
7336
7353
|
});
|
|
7337
7354
|
var EncodeProfileSchema = object({
|
|
7338
7355
|
video: object({
|
|
@@ -10357,6 +10374,100 @@ var coverCapability = {
|
|
|
10357
10374
|
runtimeState: CoverStatusSchema
|
|
10358
10375
|
};
|
|
10359
10376
|
/**
|
|
10377
|
+
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
10378
|
+
* shared by reolink / hikvision / amcrest. Models the common firmware
|
|
10379
|
+
* surface: the IR-cut switching MODE plus the two knobs that gate it
|
|
10380
|
+
* (photocell `sensitivity` + `switchDelaySec`). Each vendor maps these
|
|
10381
|
+
* onto its own ISAPI / Baichuan / Dahua-CGI fields; the cap standardises
|
|
10382
|
+
* the shape so ONE derived-form renders every camera.
|
|
10383
|
+
*
|
|
10384
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
10385
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
10386
|
+
* injected from `status`) reports the live values, and a single
|
|
10387
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
10388
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
10389
|
+
* routing from this surface.
|
|
10390
|
+
*/
|
|
10391
|
+
/** IR-cut switching mode. `schedule` = time-of-day table configured on the camera. */
|
|
10392
|
+
var DayNightModeSchema = _enum([
|
|
10393
|
+
"auto",
|
|
10394
|
+
"day",
|
|
10395
|
+
"night",
|
|
10396
|
+
"schedule"
|
|
10397
|
+
]);
|
|
10398
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
10399
|
+
* getOptions availability convention. Normalized values are 0–100. */
|
|
10400
|
+
var NormalizedRangeSchema$1 = object({
|
|
10401
|
+
min: number(),
|
|
10402
|
+
max: number(),
|
|
10403
|
+
step: number()
|
|
10404
|
+
});
|
|
10405
|
+
/**
|
|
10406
|
+
* Current day/night state. Optional fields are absent when the camera
|
|
10407
|
+
* does not expose that knob (a photocell-less model reports no
|
|
10408
|
+
* `sensitivity`). `lastFetchedAt` feeds the runtime-state bridge.
|
|
10409
|
+
*/
|
|
10410
|
+
var DayNightStatusSchema = object({
|
|
10411
|
+
mode: DayNightModeSchema,
|
|
10412
|
+
/** IR-cut trigger sensitivity, NORMALIZED 0–100 (higher = switches to night sooner). */
|
|
10413
|
+
sensitivity: number().optional(),
|
|
10414
|
+
/** Delay before the IR-cut filter flips, in seconds. */
|
|
10415
|
+
switchDelaySec: number().optional(),
|
|
10416
|
+
lastFetchedAt: number()
|
|
10417
|
+
});
|
|
10418
|
+
/**
|
|
10419
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
10420
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
10421
|
+
* (normalized 0–100); the mode choice-set as an array. A provider returns
|
|
10422
|
+
* honest, camera-probed values — never hardcoded.
|
|
10423
|
+
*/
|
|
10424
|
+
var DayNightOptionsSchema = object({
|
|
10425
|
+
/** Modes this camera accepts. Empty → the camera has no configurable day/night mode. */
|
|
10426
|
+
modes: array(DayNightModeSchema),
|
|
10427
|
+
supportsSensitivity: boolean(),
|
|
10428
|
+
/** Present when `supportsSensitivity` — the normalized 0–100 range. */
|
|
10429
|
+
sensitivity: NormalizedRangeSchema$1.optional(),
|
|
10430
|
+
supportsSwitchDelay: boolean(),
|
|
10431
|
+
/** Present when `supportsSwitchDelay` — the allowed delay range in seconds. */
|
|
10432
|
+
switchDelaySec: NormalizedRangeSchema$1.optional()
|
|
10433
|
+
});
|
|
10434
|
+
/**
|
|
10435
|
+
* Partial change to the day/night config — every field optional. A
|
|
10436
|
+
* provider ignores fields it does not support.
|
|
10437
|
+
*/
|
|
10438
|
+
var DayNightSettingsPatchSchema = object({
|
|
10439
|
+
mode: DayNightModeSchema.optional(),
|
|
10440
|
+
sensitivity: number().optional(),
|
|
10441
|
+
switchDelaySec: number().optional()
|
|
10442
|
+
});
|
|
10443
|
+
var dayNightCapability = {
|
|
10444
|
+
name: "day-night",
|
|
10445
|
+
scope: "device",
|
|
10446
|
+
deviceNative: true,
|
|
10447
|
+
mode: "singleton",
|
|
10448
|
+
deviceTypes: [DeviceType.Camera],
|
|
10449
|
+
deviceConfig: { ui: {
|
|
10450
|
+
kind: "derived-form",
|
|
10451
|
+
builderId: "day-night",
|
|
10452
|
+
tab: "image"
|
|
10453
|
+
} },
|
|
10454
|
+
methods: {
|
|
10455
|
+
getOptions: method(object({ deviceId: number() }), DayNightOptionsSchema),
|
|
10456
|
+
setSettings: method(object({
|
|
10457
|
+
deviceId: number(),
|
|
10458
|
+
settings: DayNightSettingsPatchSchema
|
|
10459
|
+
}), _void(), {
|
|
10460
|
+
kind: "mutation",
|
|
10461
|
+
auth: "admin"
|
|
10462
|
+
})
|
|
10463
|
+
},
|
|
10464
|
+
status: {
|
|
10465
|
+
schema: DayNightStatusSchema,
|
|
10466
|
+
kind: "poll"
|
|
10467
|
+
},
|
|
10468
|
+
runtimeState: DayNightStatusSchema
|
|
10469
|
+
};
|
|
10470
|
+
/**
|
|
10360
10471
|
* Identity envelope for a device's upstream-system metadata.
|
|
10361
10472
|
*
|
|
10362
10473
|
* Two jobs:
|
|
@@ -11015,6 +11126,155 @@ var imageCapability = {
|
|
|
11015
11126
|
runtimeState: ImageStatusSchema
|
|
11016
11127
|
};
|
|
11017
11128
|
/**
|
|
11129
|
+
* Vendor-neutral image / picture-adjustment cap — the per-camera config
|
|
11130
|
+
* cap shared by reolink / hikvision / amcrest. Models the common ISP
|
|
11131
|
+
* surface: the four picture sliders (brightness / contrast / saturation /
|
|
11132
|
+
* sharpness), orientation (mirror / flip / rotate), white-balance,
|
|
11133
|
+
* exposure and backlight-compensation modes.
|
|
11134
|
+
*
|
|
11135
|
+
* NORMALIZATION: every slider is a normalized int 0–100. Vendors expose
|
|
11136
|
+
* these natively as 0–100 or 0–255 (or other ranges); each provider maps
|
|
11137
|
+
* its native range to/from this normalized 0–100 space so the cap surface
|
|
11138
|
+
* (and the derived form) is identical across cameras. `warmth` (manual
|
|
11139
|
+
* white-balance) is likewise normalized 0–100.
|
|
11140
|
+
*
|
|
11141
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
11142
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
11143
|
+
* injected from `status`) reports the live values, and a single
|
|
11144
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
11145
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
11146
|
+
* routing from this surface.
|
|
11147
|
+
*/
|
|
11148
|
+
/** Sensor/image rotation, degrees clockwise. */
|
|
11149
|
+
var ImageRotateSchema = _enum([
|
|
11150
|
+
"0",
|
|
11151
|
+
"90",
|
|
11152
|
+
"180",
|
|
11153
|
+
"270"
|
|
11154
|
+
]);
|
|
11155
|
+
/** White-balance mode. `manual` unlocks the normalized `warmth` knob. */
|
|
11156
|
+
var WhiteBalanceModeSchema = _enum(["auto", "manual"]);
|
|
11157
|
+
/** Exposure mode. */
|
|
11158
|
+
var ExposureModeSchema = _enum(["auto", "manual"]);
|
|
11159
|
+
/**
|
|
11160
|
+
* Backlight-compensation mode:
|
|
11161
|
+
* - `off` — disabled
|
|
11162
|
+
* - `blc` — backlight compensation
|
|
11163
|
+
* - `wdr` — wide dynamic range
|
|
11164
|
+
* - `hlc` — highlight compensation
|
|
11165
|
+
*/
|
|
11166
|
+
var BacklightModeSchema = _enum([
|
|
11167
|
+
"off",
|
|
11168
|
+
"blc",
|
|
11169
|
+
"wdr",
|
|
11170
|
+
"hlc"
|
|
11171
|
+
]);
|
|
11172
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
11173
|
+
* getOptions availability convention. Slider values are normalized 0–100. */
|
|
11174
|
+
var NormalizedRangeSchema = object({
|
|
11175
|
+
min: number(),
|
|
11176
|
+
max: number(),
|
|
11177
|
+
step: number()
|
|
11178
|
+
});
|
|
11179
|
+
/**
|
|
11180
|
+
* Current image-adjustment state. Every field optional — absent when the
|
|
11181
|
+
* camera does not expose that control. Slider values are NORMALIZED 0–100.
|
|
11182
|
+
* `lastFetchedAt` feeds the runtime-state bridge.
|
|
11183
|
+
*/
|
|
11184
|
+
var ImageSettingsStatusSchema = object({
|
|
11185
|
+
/** Normalized 0–100. */
|
|
11186
|
+
brightness: number().optional(),
|
|
11187
|
+
/** Normalized 0–100. */
|
|
11188
|
+
contrast: number().optional(),
|
|
11189
|
+
/** Normalized 0–100. */
|
|
11190
|
+
saturation: number().optional(),
|
|
11191
|
+
/** Normalized 0–100. */
|
|
11192
|
+
sharpness: number().optional(),
|
|
11193
|
+
mirror: boolean().optional(),
|
|
11194
|
+
flip: boolean().optional(),
|
|
11195
|
+
rotate: ImageRotateSchema.optional(),
|
|
11196
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
11197
|
+
/** Manual white-balance warmth, NORMALIZED 0–100. Meaningful only when `whiteBalance === 'manual'`. */
|
|
11198
|
+
warmth: number().optional(),
|
|
11199
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
11200
|
+
backlightMode: BacklightModeSchema.optional(),
|
|
11201
|
+
lastFetchedAt: number()
|
|
11202
|
+
});
|
|
11203
|
+
/**
|
|
11204
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
11205
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
11206
|
+
* (the normalized 0–100 range); enums as arrays of supported values (empty
|
|
11207
|
+
* array → control hidden). A provider returns honest, camera-probed values
|
|
11208
|
+
* — never hardcoded.
|
|
11209
|
+
*/
|
|
11210
|
+
var ImageSettingsOptionsSchema = object({
|
|
11211
|
+
supportsBrightness: boolean(),
|
|
11212
|
+
brightness: NormalizedRangeSchema.optional(),
|
|
11213
|
+
supportsContrast: boolean(),
|
|
11214
|
+
contrast: NormalizedRangeSchema.optional(),
|
|
11215
|
+
supportsSaturation: boolean(),
|
|
11216
|
+
saturation: NormalizedRangeSchema.optional(),
|
|
11217
|
+
supportsSharpness: boolean(),
|
|
11218
|
+
sharpness: NormalizedRangeSchema.optional(),
|
|
11219
|
+
supportsMirror: boolean(),
|
|
11220
|
+
supportsFlip: boolean(),
|
|
11221
|
+
/** Supported rotation values. Empty → rotation not configurable. */
|
|
11222
|
+
rotateOptions: array(ImageRotateSchema),
|
|
11223
|
+
/** Supported white-balance modes. Empty → white-balance not configurable. */
|
|
11224
|
+
whiteBalanceModes: array(WhiteBalanceModeSchema),
|
|
11225
|
+
supportsWarmth: boolean(),
|
|
11226
|
+
/** Present when `supportsWarmth` — the normalized 0–100 range. */
|
|
11227
|
+
warmth: NormalizedRangeSchema.optional(),
|
|
11228
|
+
/** Supported exposure modes. Empty → exposure not configurable. */
|
|
11229
|
+
exposureModes: array(ExposureModeSchema),
|
|
11230
|
+
/** Supported backlight modes. Empty → backlight-compensation not configurable. */
|
|
11231
|
+
backlightModes: array(BacklightModeSchema)
|
|
11232
|
+
});
|
|
11233
|
+
/**
|
|
11234
|
+
* Partial change to the image config — every field optional. Slider values
|
|
11235
|
+
* are normalized 0–100. A provider ignores fields it does not support.
|
|
11236
|
+
*/
|
|
11237
|
+
var ImageSettingsPatchSchema = object({
|
|
11238
|
+
brightness: number().optional(),
|
|
11239
|
+
contrast: number().optional(),
|
|
11240
|
+
saturation: number().optional(),
|
|
11241
|
+
sharpness: number().optional(),
|
|
11242
|
+
mirror: boolean().optional(),
|
|
11243
|
+
flip: boolean().optional(),
|
|
11244
|
+
rotate: ImageRotateSchema.optional(),
|
|
11245
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
11246
|
+
warmth: number().optional(),
|
|
11247
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
11248
|
+
backlightMode: BacklightModeSchema.optional()
|
|
11249
|
+
});
|
|
11250
|
+
var imageSettingsCapability = {
|
|
11251
|
+
name: "image-settings",
|
|
11252
|
+
scope: "device",
|
|
11253
|
+
deviceNative: true,
|
|
11254
|
+
mode: "singleton",
|
|
11255
|
+
deviceTypes: [DeviceType.Camera],
|
|
11256
|
+
deviceConfig: { ui: {
|
|
11257
|
+
kind: "derived-form",
|
|
11258
|
+
builderId: "image-settings",
|
|
11259
|
+
tab: "image"
|
|
11260
|
+
} },
|
|
11261
|
+
methods: {
|
|
11262
|
+
getOptions: method(object({ deviceId: number() }), ImageSettingsOptionsSchema),
|
|
11263
|
+
setSettings: method(object({
|
|
11264
|
+
deviceId: number(),
|
|
11265
|
+
settings: ImageSettingsPatchSchema
|
|
11266
|
+
}), _void(), {
|
|
11267
|
+
kind: "mutation",
|
|
11268
|
+
auth: "admin"
|
|
11269
|
+
})
|
|
11270
|
+
},
|
|
11271
|
+
status: {
|
|
11272
|
+
schema: ImageSettingsStatusSchema,
|
|
11273
|
+
kind: "poll"
|
|
11274
|
+
},
|
|
11275
|
+
runtimeState: ImageSettingsStatusSchema
|
|
11276
|
+
};
|
|
11277
|
+
/**
|
|
11018
11278
|
* Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
|
|
11019
11279
|
* with a mowing lifecycle plus a dock action.
|
|
11020
11280
|
*
|
|
@@ -12013,6 +12273,16 @@ var RunnerCameraConfigSchema = object({
|
|
|
12013
12273
|
* this gate is bypassed.
|
|
12014
12274
|
*/
|
|
12015
12275
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
12276
|
+
/**
|
|
12277
|
+
* Master toggle for the occupancy re-check. When `false` (DEFAULT) the runner
|
|
12278
|
+
* never arms the periodic recheck timer, regardless of `occupancyRecheckSec` —
|
|
12279
|
+
* this is off by default because the recheck re-subscribes a detection session
|
|
12280
|
+
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
12281
|
+
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
12282
|
+
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
12283
|
+
* (and only render) when this is enabled.
|
|
12284
|
+
*/
|
|
12285
|
+
occupancyRecheckEnabled: boolean().default(false),
|
|
12016
12286
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
12017
12287
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
12018
12288
|
/**
|
|
@@ -14018,6 +14288,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
14018
14288
|
contact: contactCapability,
|
|
14019
14289
|
control: controlCapability,
|
|
14020
14290
|
cover: coverCapability,
|
|
14291
|
+
dayNight: dayNightCapability,
|
|
14021
14292
|
deviceDiscovery: deviceDiscoveryCapability,
|
|
14022
14293
|
deviceStatus: deviceStatusCapability,
|
|
14023
14294
|
doorbell: doorbellCapability,
|
|
@@ -14030,6 +14301,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
14030
14301
|
humidifier: humidifierCapability,
|
|
14031
14302
|
humiditySensor: humiditySensorCapability,
|
|
14032
14303
|
image: imageCapability,
|
|
14304
|
+
imageSettings: imageSettingsCapability,
|
|
14033
14305
|
lawnMowerControl: lawnMowerControlCapability,
|
|
14034
14306
|
lockControl: lockControlCapability,
|
|
14035
14307
|
mediaPlayer: mediaPlayerCapability,
|
|
@@ -15944,7 +16216,9 @@ method(object({ codec: string() }), boolean()), method(_void(), object({
|
|
|
15944
16216
|
id: string(),
|
|
15945
16217
|
name: string(),
|
|
15946
16218
|
isPullMode: boolean().optional(),
|
|
15947
|
-
priority: number().optional()
|
|
16219
|
+
priority: number().optional(),
|
|
16220
|
+
hwaccel: string().optional(),
|
|
16221
|
+
probedBestHwaccel: string().optional()
|
|
15948
16222
|
})), method(DecoderSessionConfigSchema, object({
|
|
15949
16223
|
sessionId: string(),
|
|
15950
16224
|
nodeId: string()
|
|
@@ -17875,7 +18149,17 @@ var AgentAddonConfigSchema = object({
|
|
|
17875
18149
|
});
|
|
17876
18150
|
var AgentPipelineSettingsSchema = object({
|
|
17877
18151
|
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
17878
|
-
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
18152
|
+
maxCameras: number().int().nonnegative().nullable().default(null),
|
|
18153
|
+
/** Per-node detection weight (relative share for the quota balancer). */
|
|
18154
|
+
detectWeight: number().positive().optional(),
|
|
18155
|
+
/** Node is eligible to run the detection pipeline (decode + inference). */
|
|
18156
|
+
detect: boolean().optional(),
|
|
18157
|
+
/** Node is eligible to host decoder sessions. */
|
|
18158
|
+
decode: boolean().optional(),
|
|
18159
|
+
/** Node is eligible to run audio-analyzer sessions. */
|
|
18160
|
+
audio: boolean().optional(),
|
|
18161
|
+
/** Node is eligible to be the ingest / source-owner (serve the restream). */
|
|
18162
|
+
ingest: boolean().optional()
|
|
17879
18163
|
});
|
|
17880
18164
|
var CameraPipelineForAgentSchema = object({
|
|
17881
18165
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
@@ -18181,6 +18465,21 @@ method(object({
|
|
|
18181
18465
|
}), object({ success: literal(true) }), {
|
|
18182
18466
|
kind: "mutation",
|
|
18183
18467
|
auth: "admin"
|
|
18468
|
+
}), method(object({
|
|
18469
|
+
agentNodeId: string(),
|
|
18470
|
+
detectWeight: number().positive().nullable()
|
|
18471
|
+
}), object({ success: literal(true) }), {
|
|
18472
|
+
kind: "mutation",
|
|
18473
|
+
auth: "admin"
|
|
18474
|
+
}), method(object({
|
|
18475
|
+
agentNodeId: string(),
|
|
18476
|
+
detect: boolean().nullable().optional(),
|
|
18477
|
+
decode: boolean().nullable().optional(),
|
|
18478
|
+
audio: boolean().nullable().optional(),
|
|
18479
|
+
ingest: boolean().nullable().optional()
|
|
18480
|
+
}), object({ success: literal(true) }), {
|
|
18481
|
+
kind: "mutation",
|
|
18482
|
+
auth: "admin"
|
|
18184
18483
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
18185
18484
|
deviceId: number(),
|
|
18186
18485
|
addonId: string(),
|
|
@@ -21945,6 +22244,18 @@ Object.freeze({
|
|
|
21945
22244
|
addonId: null,
|
|
21946
22245
|
access: "view"
|
|
21947
22246
|
},
|
|
22247
|
+
"dayNight.getOptions": {
|
|
22248
|
+
capName: "day-night",
|
|
22249
|
+
capScope: "device",
|
|
22250
|
+
addonId: null,
|
|
22251
|
+
access: "view"
|
|
22252
|
+
},
|
|
22253
|
+
"dayNight.setSettings": {
|
|
22254
|
+
capName: "day-night",
|
|
22255
|
+
capScope: "device",
|
|
22256
|
+
addonId: null,
|
|
22257
|
+
access: "create"
|
|
22258
|
+
},
|
|
21948
22259
|
"decoder.createSession": {
|
|
21949
22260
|
capName: "decoder",
|
|
21950
22261
|
capScope: "system",
|
|
@@ -22875,6 +23186,18 @@ Object.freeze({
|
|
|
22875
23186
|
addonId: null,
|
|
22876
23187
|
access: "create"
|
|
22877
23188
|
},
|
|
23189
|
+
"imageSettings.getOptions": {
|
|
23190
|
+
capName: "image-settings",
|
|
23191
|
+
capScope: "device",
|
|
23192
|
+
addonId: null,
|
|
23193
|
+
access: "view"
|
|
23194
|
+
},
|
|
23195
|
+
"imageSettings.setSettings": {
|
|
23196
|
+
capName: "image-settings",
|
|
23197
|
+
capScope: "device",
|
|
23198
|
+
addonId: null,
|
|
23199
|
+
access: "create"
|
|
23200
|
+
},
|
|
22878
23201
|
"integrations.create": {
|
|
22879
23202
|
capName: "integrations",
|
|
22880
23203
|
capScope: "system",
|
|
@@ -24057,6 +24380,18 @@ Object.freeze({
|
|
|
24057
24380
|
addonId: null,
|
|
24058
24381
|
access: "create"
|
|
24059
24382
|
},
|
|
24383
|
+
"pipelineOrchestrator.setAgentCapabilities": {
|
|
24384
|
+
capName: "pipeline-orchestrator",
|
|
24385
|
+
capScope: "system",
|
|
24386
|
+
addonId: null,
|
|
24387
|
+
access: "create"
|
|
24388
|
+
},
|
|
24389
|
+
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
24390
|
+
capName: "pipeline-orchestrator",
|
|
24391
|
+
capScope: "system",
|
|
24392
|
+
addonId: null,
|
|
24393
|
+
access: "create"
|
|
24394
|
+
},
|
|
24060
24395
|
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
24061
24396
|
capName: "pipeline-orchestrator",
|
|
24062
24397
|
capScope: "system",
|
package/dist/addon.mjs
CHANGED
|
@@ -4680,7 +4680,7 @@ function preprocess(fn, schema) {
|
|
|
4680
4680
|
});
|
|
4681
4681
|
}
|
|
4682
4682
|
//#endregion
|
|
4683
|
-
//#region ../types/dist/sleep-
|
|
4683
|
+
//#region ../types/dist/sleep-CZDdRBua.mjs
|
|
4684
4684
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4685
4685
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4686
4686
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -7291,7 +7291,16 @@ var DecoderStatsSchema = object({
|
|
|
7291
7291
|
inputFps: number(),
|
|
7292
7292
|
outputFps: number(),
|
|
7293
7293
|
avgDecodeTimeMs: number(),
|
|
7294
|
-
droppedFrames: number()
|
|
7294
|
+
droppedFrames: number(),
|
|
7295
|
+
/**
|
|
7296
|
+
* Pull-mode adaptive-fps telemetry (optional — only pull sessions run the
|
|
7297
|
+
* lag-driven controller; push sessions omit these). `lagMs` is the EWMA of
|
|
7298
|
+
* the decoder's real-time drift (rising = falling behind live); `adaptiveFps`
|
|
7299
|
+
* is the current lag-throttled emit rate (≤ `effectiveFps` ceiling).
|
|
7300
|
+
*/
|
|
7301
|
+
lagMs: number().optional(),
|
|
7302
|
+
effectiveFps: number().optional(),
|
|
7303
|
+
adaptiveFps: number().optional()
|
|
7295
7304
|
});
|
|
7296
7305
|
var DecoderSessionConfigSchema = object({
|
|
7297
7306
|
codec: string(),
|
|
@@ -7332,7 +7341,15 @@ var DecoderSessionConfigSchema = object({
|
|
|
7332
7341
|
* other — `pullFrames` returns nothing for an `'shm'` session and
|
|
7333
7342
|
* `pullHandles` returns nothing for a `'callback'` session.
|
|
7334
7343
|
*/
|
|
7335
|
-
frameSink: _enum(["callback", "shm"]).default("callback")
|
|
7344
|
+
frameSink: _enum(["callback", "shm"]).default("callback"),
|
|
7345
|
+
/**
|
|
7346
|
+
* Per-camera decoder DEBUG facility. When `true`, a pull-mode session emits
|
|
7347
|
+
* a throttled (~1Hz) structured `decoder debug` line (effective/adaptive fps,
|
|
7348
|
+
* real-time lag, dropped-frame delta, avg decode time, hwaccel). Mirrors the
|
|
7349
|
+
* stream-broker's `streamingDebug` gate — off by default so production logs
|
|
7350
|
+
* stay quiet and the emit path pays zero per-frame cost when disabled.
|
|
7351
|
+
*/
|
|
7352
|
+
debug: boolean().optional()
|
|
7336
7353
|
});
|
|
7337
7354
|
var EncodeProfileSchema = object({
|
|
7338
7355
|
video: object({
|
|
@@ -10357,6 +10374,100 @@ var coverCapability = {
|
|
|
10357
10374
|
runtimeState: CoverStatusSchema
|
|
10358
10375
|
};
|
|
10359
10376
|
/**
|
|
10377
|
+
* Vendor-neutral day/night (IR-cut) control — the per-camera config cap
|
|
10378
|
+
* shared by reolink / hikvision / amcrest. Models the common firmware
|
|
10379
|
+
* surface: the IR-cut switching MODE plus the two knobs that gate it
|
|
10380
|
+
* (photocell `sensitivity` + `switchDelaySec`). Each vendor maps these
|
|
10381
|
+
* onto its own ISAPI / Baichuan / Dahua-CGI fields; the cap standardises
|
|
10382
|
+
* the shape so ONE derived-form renders every camera.
|
|
10383
|
+
*
|
|
10384
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
10385
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
10386
|
+
* injected from `status`) reports the live values, and a single
|
|
10387
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
10388
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
10389
|
+
* routing from this surface.
|
|
10390
|
+
*/
|
|
10391
|
+
/** IR-cut switching mode. `schedule` = time-of-day table configured on the camera. */
|
|
10392
|
+
var DayNightModeSchema = _enum([
|
|
10393
|
+
"auto",
|
|
10394
|
+
"day",
|
|
10395
|
+
"night",
|
|
10396
|
+
"schedule"
|
|
10397
|
+
]);
|
|
10398
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
10399
|
+
* getOptions availability convention. Normalized values are 0–100. */
|
|
10400
|
+
var NormalizedRangeSchema$1 = object({
|
|
10401
|
+
min: number(),
|
|
10402
|
+
max: number(),
|
|
10403
|
+
step: number()
|
|
10404
|
+
});
|
|
10405
|
+
/**
|
|
10406
|
+
* Current day/night state. Optional fields are absent when the camera
|
|
10407
|
+
* does not expose that knob (a photocell-less model reports no
|
|
10408
|
+
* `sensitivity`). `lastFetchedAt` feeds the runtime-state bridge.
|
|
10409
|
+
*/
|
|
10410
|
+
var DayNightStatusSchema = object({
|
|
10411
|
+
mode: DayNightModeSchema,
|
|
10412
|
+
/** IR-cut trigger sensitivity, NORMALIZED 0–100 (higher = switches to night sooner). */
|
|
10413
|
+
sensitivity: number().optional(),
|
|
10414
|
+
/** Delay before the IR-cut filter flips, in seconds. */
|
|
10415
|
+
switchDelaySec: number().optional(),
|
|
10416
|
+
lastFetchedAt: number()
|
|
10417
|
+
});
|
|
10418
|
+
/**
|
|
10419
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
10420
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
10421
|
+
* (normalized 0–100); the mode choice-set as an array. A provider returns
|
|
10422
|
+
* honest, camera-probed values — never hardcoded.
|
|
10423
|
+
*/
|
|
10424
|
+
var DayNightOptionsSchema = object({
|
|
10425
|
+
/** Modes this camera accepts. Empty → the camera has no configurable day/night mode. */
|
|
10426
|
+
modes: array(DayNightModeSchema),
|
|
10427
|
+
supportsSensitivity: boolean(),
|
|
10428
|
+
/** Present when `supportsSensitivity` — the normalized 0–100 range. */
|
|
10429
|
+
sensitivity: NormalizedRangeSchema$1.optional(),
|
|
10430
|
+
supportsSwitchDelay: boolean(),
|
|
10431
|
+
/** Present when `supportsSwitchDelay` — the allowed delay range in seconds. */
|
|
10432
|
+
switchDelaySec: NormalizedRangeSchema$1.optional()
|
|
10433
|
+
});
|
|
10434
|
+
/**
|
|
10435
|
+
* Partial change to the day/night config — every field optional. A
|
|
10436
|
+
* provider ignores fields it does not support.
|
|
10437
|
+
*/
|
|
10438
|
+
var DayNightSettingsPatchSchema = object({
|
|
10439
|
+
mode: DayNightModeSchema.optional(),
|
|
10440
|
+
sensitivity: number().optional(),
|
|
10441
|
+
switchDelaySec: number().optional()
|
|
10442
|
+
});
|
|
10443
|
+
var dayNightCapability = {
|
|
10444
|
+
name: "day-night",
|
|
10445
|
+
scope: "device",
|
|
10446
|
+
deviceNative: true,
|
|
10447
|
+
mode: "singleton",
|
|
10448
|
+
deviceTypes: [DeviceType.Camera],
|
|
10449
|
+
deviceConfig: { ui: {
|
|
10450
|
+
kind: "derived-form",
|
|
10451
|
+
builderId: "day-night",
|
|
10452
|
+
tab: "image"
|
|
10453
|
+
} },
|
|
10454
|
+
methods: {
|
|
10455
|
+
getOptions: method(object({ deviceId: number() }), DayNightOptionsSchema),
|
|
10456
|
+
setSettings: method(object({
|
|
10457
|
+
deviceId: number(),
|
|
10458
|
+
settings: DayNightSettingsPatchSchema
|
|
10459
|
+
}), _void(), {
|
|
10460
|
+
kind: "mutation",
|
|
10461
|
+
auth: "admin"
|
|
10462
|
+
})
|
|
10463
|
+
},
|
|
10464
|
+
status: {
|
|
10465
|
+
schema: DayNightStatusSchema,
|
|
10466
|
+
kind: "poll"
|
|
10467
|
+
},
|
|
10468
|
+
runtimeState: DayNightStatusSchema
|
|
10469
|
+
};
|
|
10470
|
+
/**
|
|
10360
10471
|
* Identity envelope for a device's upstream-system metadata.
|
|
10361
10472
|
*
|
|
10362
10473
|
* Two jobs:
|
|
@@ -11015,6 +11126,155 @@ var imageCapability = {
|
|
|
11015
11126
|
runtimeState: ImageStatusSchema
|
|
11016
11127
|
};
|
|
11017
11128
|
/**
|
|
11129
|
+
* Vendor-neutral image / picture-adjustment cap — the per-camera config
|
|
11130
|
+
* cap shared by reolink / hikvision / amcrest. Models the common ISP
|
|
11131
|
+
* surface: the four picture sliders (brightness / contrast / saturation /
|
|
11132
|
+
* sharpness), orientation (mirror / flip / rotate), white-balance,
|
|
11133
|
+
* exposure and backlight-compensation modes.
|
|
11134
|
+
*
|
|
11135
|
+
* NORMALIZATION: every slider is a normalized int 0–100. Vendors expose
|
|
11136
|
+
* these natively as 0–100 or 0–255 (or other ranges); each provider maps
|
|
11137
|
+
* its native range to/from this normalized 0–100 space so the cap surface
|
|
11138
|
+
* (and the derived form) is identical across cameras. `warmth` (manual
|
|
11139
|
+
* white-balance) is likewise normalized 0–100.
|
|
11140
|
+
*
|
|
11141
|
+
* Follows the D14 `deviceConfig` archetype (see `stream-params.cap.ts`):
|
|
11142
|
+
* `getOptions` advertises per-camera availability, `getStatus` (auto-
|
|
11143
|
+
* injected from `status`) reports the live values, and a single
|
|
11144
|
+
* `setSettings` mutation applies a partial change. No hand-written
|
|
11145
|
+
* settings-contribution methods — the framework derives the UI + save
|
|
11146
|
+
* routing from this surface.
|
|
11147
|
+
*/
|
|
11148
|
+
/** Sensor/image rotation, degrees clockwise. */
|
|
11149
|
+
var ImageRotateSchema = _enum([
|
|
11150
|
+
"0",
|
|
11151
|
+
"90",
|
|
11152
|
+
"180",
|
|
11153
|
+
"270"
|
|
11154
|
+
]);
|
|
11155
|
+
/** White-balance mode. `manual` unlocks the normalized `warmth` knob. */
|
|
11156
|
+
var WhiteBalanceModeSchema = _enum(["auto", "manual"]);
|
|
11157
|
+
/** Exposure mode. */
|
|
11158
|
+
var ExposureModeSchema = _enum(["auto", "manual"]);
|
|
11159
|
+
/**
|
|
11160
|
+
* Backlight-compensation mode:
|
|
11161
|
+
* - `off` — disabled
|
|
11162
|
+
* - `blc` — backlight compensation
|
|
11163
|
+
* - `wdr` — wide dynamic range
|
|
11164
|
+
* - `hlc` — highlight compensation
|
|
11165
|
+
*/
|
|
11166
|
+
var BacklightModeSchema = _enum([
|
|
11167
|
+
"off",
|
|
11168
|
+
"blc",
|
|
11169
|
+
"wdr",
|
|
11170
|
+
"hlc"
|
|
11171
|
+
]);
|
|
11172
|
+
/** Normalized numeric range descriptor — `{ min, max, step }` per the
|
|
11173
|
+
* getOptions availability convention. Slider values are normalized 0–100. */
|
|
11174
|
+
var NormalizedRangeSchema = object({
|
|
11175
|
+
min: number(),
|
|
11176
|
+
max: number(),
|
|
11177
|
+
step: number()
|
|
11178
|
+
});
|
|
11179
|
+
/**
|
|
11180
|
+
* Current image-adjustment state. Every field optional — absent when the
|
|
11181
|
+
* camera does not expose that control. Slider values are NORMALIZED 0–100.
|
|
11182
|
+
* `lastFetchedAt` feeds the runtime-state bridge.
|
|
11183
|
+
*/
|
|
11184
|
+
var ImageSettingsStatusSchema = object({
|
|
11185
|
+
/** Normalized 0–100. */
|
|
11186
|
+
brightness: number().optional(),
|
|
11187
|
+
/** Normalized 0–100. */
|
|
11188
|
+
contrast: number().optional(),
|
|
11189
|
+
/** Normalized 0–100. */
|
|
11190
|
+
saturation: number().optional(),
|
|
11191
|
+
/** Normalized 0–100. */
|
|
11192
|
+
sharpness: number().optional(),
|
|
11193
|
+
mirror: boolean().optional(),
|
|
11194
|
+
flip: boolean().optional(),
|
|
11195
|
+
rotate: ImageRotateSchema.optional(),
|
|
11196
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
11197
|
+
/** Manual white-balance warmth, NORMALIZED 0–100. Meaningful only when `whiteBalance === 'manual'`. */
|
|
11198
|
+
warmth: number().optional(),
|
|
11199
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
11200
|
+
backlightMode: BacklightModeSchema.optional(),
|
|
11201
|
+
lastFetchedAt: number()
|
|
11202
|
+
});
|
|
11203
|
+
/**
|
|
11204
|
+
* Per-camera availability descriptor — drives which controls the admin UI
|
|
11205
|
+
* renders. Booleans as `supportsX`; numeric ranges as `{ min, max, step }`
|
|
11206
|
+
* (the normalized 0–100 range); enums as arrays of supported values (empty
|
|
11207
|
+
* array → control hidden). A provider returns honest, camera-probed values
|
|
11208
|
+
* — never hardcoded.
|
|
11209
|
+
*/
|
|
11210
|
+
var ImageSettingsOptionsSchema = object({
|
|
11211
|
+
supportsBrightness: boolean(),
|
|
11212
|
+
brightness: NormalizedRangeSchema.optional(),
|
|
11213
|
+
supportsContrast: boolean(),
|
|
11214
|
+
contrast: NormalizedRangeSchema.optional(),
|
|
11215
|
+
supportsSaturation: boolean(),
|
|
11216
|
+
saturation: NormalizedRangeSchema.optional(),
|
|
11217
|
+
supportsSharpness: boolean(),
|
|
11218
|
+
sharpness: NormalizedRangeSchema.optional(),
|
|
11219
|
+
supportsMirror: boolean(),
|
|
11220
|
+
supportsFlip: boolean(),
|
|
11221
|
+
/** Supported rotation values. Empty → rotation not configurable. */
|
|
11222
|
+
rotateOptions: array(ImageRotateSchema),
|
|
11223
|
+
/** Supported white-balance modes. Empty → white-balance not configurable. */
|
|
11224
|
+
whiteBalanceModes: array(WhiteBalanceModeSchema),
|
|
11225
|
+
supportsWarmth: boolean(),
|
|
11226
|
+
/** Present when `supportsWarmth` — the normalized 0–100 range. */
|
|
11227
|
+
warmth: NormalizedRangeSchema.optional(),
|
|
11228
|
+
/** Supported exposure modes. Empty → exposure not configurable. */
|
|
11229
|
+
exposureModes: array(ExposureModeSchema),
|
|
11230
|
+
/** Supported backlight modes. Empty → backlight-compensation not configurable. */
|
|
11231
|
+
backlightModes: array(BacklightModeSchema)
|
|
11232
|
+
});
|
|
11233
|
+
/**
|
|
11234
|
+
* Partial change to the image config — every field optional. Slider values
|
|
11235
|
+
* are normalized 0–100. A provider ignores fields it does not support.
|
|
11236
|
+
*/
|
|
11237
|
+
var ImageSettingsPatchSchema = object({
|
|
11238
|
+
brightness: number().optional(),
|
|
11239
|
+
contrast: number().optional(),
|
|
11240
|
+
saturation: number().optional(),
|
|
11241
|
+
sharpness: number().optional(),
|
|
11242
|
+
mirror: boolean().optional(),
|
|
11243
|
+
flip: boolean().optional(),
|
|
11244
|
+
rotate: ImageRotateSchema.optional(),
|
|
11245
|
+
whiteBalance: WhiteBalanceModeSchema.optional(),
|
|
11246
|
+
warmth: number().optional(),
|
|
11247
|
+
exposureMode: ExposureModeSchema.optional(),
|
|
11248
|
+
backlightMode: BacklightModeSchema.optional()
|
|
11249
|
+
});
|
|
11250
|
+
var imageSettingsCapability = {
|
|
11251
|
+
name: "image-settings",
|
|
11252
|
+
scope: "device",
|
|
11253
|
+
deviceNative: true,
|
|
11254
|
+
mode: "singleton",
|
|
11255
|
+
deviceTypes: [DeviceType.Camera],
|
|
11256
|
+
deviceConfig: { ui: {
|
|
11257
|
+
kind: "derived-form",
|
|
11258
|
+
builderId: "image-settings",
|
|
11259
|
+
tab: "image"
|
|
11260
|
+
} },
|
|
11261
|
+
methods: {
|
|
11262
|
+
getOptions: method(object({ deviceId: number() }), ImageSettingsOptionsSchema),
|
|
11263
|
+
setSettings: method(object({
|
|
11264
|
+
deviceId: number(),
|
|
11265
|
+
settings: ImageSettingsPatchSchema
|
|
11266
|
+
}), _void(), {
|
|
11267
|
+
kind: "mutation",
|
|
11268
|
+
auth: "admin"
|
|
11269
|
+
})
|
|
11270
|
+
},
|
|
11271
|
+
status: {
|
|
11272
|
+
schema: ImageSettingsStatusSchema,
|
|
11273
|
+
kind: "poll"
|
|
11274
|
+
},
|
|
11275
|
+
runtimeState: ImageSettingsStatusSchema
|
|
11276
|
+
};
|
|
11277
|
+
/**
|
|
11018
11278
|
* Robotic lawn-mower cap. Models HA `lawn_mower.*` entities — anything
|
|
11019
11279
|
* with a mowing lifecycle plus a dock action.
|
|
11020
11280
|
*
|
|
@@ -12013,6 +12273,16 @@ var RunnerCameraConfigSchema = object({
|
|
|
12013
12273
|
* this gate is bypassed.
|
|
12014
12274
|
*/
|
|
12015
12275
|
onboardMotionDrivesAnalyzer: boolean().default(true),
|
|
12276
|
+
/**
|
|
12277
|
+
* Master toggle for the occupancy re-check. When `false` (DEFAULT) the runner
|
|
12278
|
+
* never arms the periodic recheck timer, regardless of `occupancyRecheckSec` —
|
|
12279
|
+
* this is off by default because the recheck re-subscribes a detection session
|
|
12280
|
+
* every N seconds while `watching`, a major source of pull-decoder re-dial
|
|
12281
|
+
* churn (each cycle creates+tears a session → RTSP re-dial → latency). The
|
|
12282
|
+
* `occupancyRecheckSec` / `occupancyRecheckFrames` sliders only take effect
|
|
12283
|
+
* (and only render) when this is enabled.
|
|
12284
|
+
*/
|
|
12285
|
+
occupancyRecheckEnabled: boolean().default(false),
|
|
12016
12286
|
occupancyRecheckSec: number().min(occupancyRecheckSecField.min).max(occupancyRecheckSecField.max).default(occupancyRecheckSecField.default),
|
|
12017
12287
|
occupancyRecheckFrames: number().min(occupancyRecheckFramesField.min).max(occupancyRecheckFramesField.max).default(occupancyRecheckFramesField.default),
|
|
12018
12288
|
/**
|
|
@@ -14018,6 +14288,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
14018
14288
|
contact: contactCapability,
|
|
14019
14289
|
control: controlCapability,
|
|
14020
14290
|
cover: coverCapability,
|
|
14291
|
+
dayNight: dayNightCapability,
|
|
14021
14292
|
deviceDiscovery: deviceDiscoveryCapability,
|
|
14022
14293
|
deviceStatus: deviceStatusCapability,
|
|
14023
14294
|
doorbell: doorbellCapability,
|
|
@@ -14030,6 +14301,7 @@ var DEVICE_LOCAL_STATE_CAPS = {
|
|
|
14030
14301
|
humidifier: humidifierCapability,
|
|
14031
14302
|
humiditySensor: humiditySensorCapability,
|
|
14032
14303
|
image: imageCapability,
|
|
14304
|
+
imageSettings: imageSettingsCapability,
|
|
14033
14305
|
lawnMowerControl: lawnMowerControlCapability,
|
|
14034
14306
|
lockControl: lockControlCapability,
|
|
14035
14307
|
mediaPlayer: mediaPlayerCapability,
|
|
@@ -15944,7 +16216,9 @@ method(object({ codec: string() }), boolean()), method(_void(), object({
|
|
|
15944
16216
|
id: string(),
|
|
15945
16217
|
name: string(),
|
|
15946
16218
|
isPullMode: boolean().optional(),
|
|
15947
|
-
priority: number().optional()
|
|
16219
|
+
priority: number().optional(),
|
|
16220
|
+
hwaccel: string().optional(),
|
|
16221
|
+
probedBestHwaccel: string().optional()
|
|
15948
16222
|
})), method(DecoderSessionConfigSchema, object({
|
|
15949
16223
|
sessionId: string(),
|
|
15950
16224
|
nodeId: string()
|
|
@@ -17875,7 +18149,17 @@ var AgentAddonConfigSchema = object({
|
|
|
17875
18149
|
});
|
|
17876
18150
|
var AgentPipelineSettingsSchema = object({
|
|
17877
18151
|
addonDefaults: record(string(), AgentAddonConfigSchema).readonly(),
|
|
17878
|
-
maxCameras: number().int().nonnegative().nullable().default(null)
|
|
18152
|
+
maxCameras: number().int().nonnegative().nullable().default(null),
|
|
18153
|
+
/** Per-node detection weight (relative share for the quota balancer). */
|
|
18154
|
+
detectWeight: number().positive().optional(),
|
|
18155
|
+
/** Node is eligible to run the detection pipeline (decode + inference). */
|
|
18156
|
+
detect: boolean().optional(),
|
|
18157
|
+
/** Node is eligible to host decoder sessions. */
|
|
18158
|
+
decode: boolean().optional(),
|
|
18159
|
+
/** Node is eligible to run audio-analyzer sessions. */
|
|
18160
|
+
audio: boolean().optional(),
|
|
18161
|
+
/** Node is eligible to be the ingest / source-owner (serve the restream). */
|
|
18162
|
+
ingest: boolean().optional()
|
|
17879
18163
|
});
|
|
17880
18164
|
var CameraPipelineForAgentSchema = object({
|
|
17881
18165
|
steps: array(PipelineStepInputSchema).readonly(),
|
|
@@ -18181,6 +18465,21 @@ method(object({
|
|
|
18181
18465
|
}), object({ success: literal(true) }), {
|
|
18182
18466
|
kind: "mutation",
|
|
18183
18467
|
auth: "admin"
|
|
18468
|
+
}), method(object({
|
|
18469
|
+
agentNodeId: string(),
|
|
18470
|
+
detectWeight: number().positive().nullable()
|
|
18471
|
+
}), object({ success: literal(true) }), {
|
|
18472
|
+
kind: "mutation",
|
|
18473
|
+
auth: "admin"
|
|
18474
|
+
}), method(object({
|
|
18475
|
+
agentNodeId: string(),
|
|
18476
|
+
detect: boolean().nullable().optional(),
|
|
18477
|
+
decode: boolean().nullable().optional(),
|
|
18478
|
+
audio: boolean().nullable().optional(),
|
|
18479
|
+
ingest: boolean().nullable().optional()
|
|
18480
|
+
}), object({ success: literal(true) }), {
|
|
18481
|
+
kind: "mutation",
|
|
18482
|
+
auth: "admin"
|
|
18184
18483
|
}), method(object({ deviceId: number() }), CameraPipelineSettingsSchema.nullable()), method(object({
|
|
18185
18484
|
deviceId: number(),
|
|
18186
18485
|
addonId: string(),
|
|
@@ -21945,6 +22244,18 @@ Object.freeze({
|
|
|
21945
22244
|
addonId: null,
|
|
21946
22245
|
access: "view"
|
|
21947
22246
|
},
|
|
22247
|
+
"dayNight.getOptions": {
|
|
22248
|
+
capName: "day-night",
|
|
22249
|
+
capScope: "device",
|
|
22250
|
+
addonId: null,
|
|
22251
|
+
access: "view"
|
|
22252
|
+
},
|
|
22253
|
+
"dayNight.setSettings": {
|
|
22254
|
+
capName: "day-night",
|
|
22255
|
+
capScope: "device",
|
|
22256
|
+
addonId: null,
|
|
22257
|
+
access: "create"
|
|
22258
|
+
},
|
|
21948
22259
|
"decoder.createSession": {
|
|
21949
22260
|
capName: "decoder",
|
|
21950
22261
|
capScope: "system",
|
|
@@ -22875,6 +23186,18 @@ Object.freeze({
|
|
|
22875
23186
|
addonId: null,
|
|
22876
23187
|
access: "create"
|
|
22877
23188
|
},
|
|
23189
|
+
"imageSettings.getOptions": {
|
|
23190
|
+
capName: "image-settings",
|
|
23191
|
+
capScope: "device",
|
|
23192
|
+
addonId: null,
|
|
23193
|
+
access: "view"
|
|
23194
|
+
},
|
|
23195
|
+
"imageSettings.setSettings": {
|
|
23196
|
+
capName: "image-settings",
|
|
23197
|
+
capScope: "device",
|
|
23198
|
+
addonId: null,
|
|
23199
|
+
access: "create"
|
|
23200
|
+
},
|
|
22878
23201
|
"integrations.create": {
|
|
22879
23202
|
capName: "integrations",
|
|
22880
23203
|
capScope: "system",
|
|
@@ -24057,6 +24380,18 @@ Object.freeze({
|
|
|
24057
24380
|
addonId: null,
|
|
24058
24381
|
access: "create"
|
|
24059
24382
|
},
|
|
24383
|
+
"pipelineOrchestrator.setAgentCapabilities": {
|
|
24384
|
+
capName: "pipeline-orchestrator",
|
|
24385
|
+
capScope: "system",
|
|
24386
|
+
addonId: null,
|
|
24387
|
+
access: "create"
|
|
24388
|
+
},
|
|
24389
|
+
"pipelineOrchestrator.setAgentDetectWeight": {
|
|
24390
|
+
capName: "pipeline-orchestrator",
|
|
24391
|
+
capScope: "system",
|
|
24392
|
+
addonId: null,
|
|
24393
|
+
access: "create"
|
|
24394
|
+
},
|
|
24060
24395
|
"pipelineOrchestrator.setAgentMaxCameras": {
|
|
24061
24396
|
capName: "pipeline-orchestrator",
|
|
24062
24397
|
capScope: "system",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-provider-dreame",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.24",
|
|
4
4
|
"description": "Dreame robot-vacuum / lawn-mower device-provider addon for CamStack — wraps the @apocaliss92/nodedreame Dreamehome cloud client",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|