* ensure disabled and offline messages don't overlay each other

* clean up enabled logic

* fix on demand recording button

* clean up
This commit is contained in:
Josh Hawkins 2025-03-12 07:09:09 -05:00 committed by GitHub
parent b3d5cd9e4b
commit 4806d30406
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 25 additions and 37 deletions

View File

@ -606,23 +606,24 @@ def process_frames(
startup_scan = True
stationary_frame_counter = 0
camera_enabled = True
region_min_size = get_min_region_size(model_config)
prev_enabled = None
while not stop_event.is_set():
_, enabled_config = enabled_config_subscriber.check_for_update()
current_enabled = (
enabled_config.enabled
if enabled_config
else (prev_enabled if prev_enabled is not None else True)
)
if prev_enabled is None:
prev_enabled = current_enabled
_, updated_enabled_config = enabled_config_subscriber.check_for_update()
if prev_enabled and not current_enabled and camera_metrics.frame_queue.empty():
if updated_enabled_config:
prev_enabled = camera_enabled
camera_enabled = updated_enabled_config.enabled
if (
not camera_enabled
and prev_enabled != camera_enabled
and camera_metrics.frame_queue.empty()
):
logger.debug(f"Camera {camera_name} disabled, clearing tracked objects")
prev_enabled = camera_enabled
# Clear norfair's dictionaries
object_tracker.tracked_objects.clear()
@ -638,9 +639,7 @@ def process_frames(
for tracker in object_tracker.default_tracker.values():
tracker.tracked_objects = []
prev_enabled = current_enabled
if not current_enabled:
if not camera_enabled:
time.sleep(0.1)
continue

View File

@ -301,22 +301,6 @@ export default function LivePlayer({
player = <ActivityIndicator />;
}
// if (cameraConfig.name == "lpr")
// console.log(
// cameraConfig.name,
// "enabled",
// cameraEnabled,
// "prev enabled",
// prevCameraEnabledRef.current,
// "offline",
// offline,
// "show still",
// showStillWithoutActivity,
// "live ready",
// liveReady,
// player,
// );
return (
<div
ref={cameraRef ?? internalContainerRef}
@ -413,7 +397,7 @@ export default function LivePlayer({
/>
</div>
{offline && !showStillWithoutActivity && (
{offline && !showStillWithoutActivity && cameraEnabled && (
<div className="absolute inset-0 left-1/2 top-1/2 flex h-96 w-96 -translate-x-1/2 -translate-y-1/2">
<div className="flex flex-col items-center justify-center rounded-lg bg-background/50 p-5">
<p className="my-5 text-lg">Stream offline</p>

View File

@ -155,15 +155,20 @@ export interface CameraConfig {
record: {
enabled: boolean;
enabled_in_config: boolean;
events: {
objects: string[] | null;
alerts: {
post_capture: number;
pre_capture: number;
required_zones: string[];
retain: {
default: number;
days: number;
mode: string;
};
};
detections: {
post_capture: number;
pre_capture: number;
retain: {
days: number;
mode: string;
objects: Record<string, unknown>;
};
};
expire_interval: number;

View File

@ -1013,7 +1013,7 @@ function FrigateCameraFeatures({
<div className="font-semibold">
Started manual on-demand recording.
</div>
{!camera.record.enabled || camera.record.retain.days == 0 ? (
{!camera.record.enabled || camera.record.alerts.retain.days == 0 ? (
<div>
Since recording is disabled or restricted in the config for this
camera, only a snapshot will be saved.