* 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 startup_scan = True
stationary_frame_counter = 0 stationary_frame_counter = 0
camera_enabled = True
region_min_size = get_min_region_size(model_config) region_min_size = get_min_region_size(model_config)
prev_enabled = None
while not stop_event.is_set(): while not stop_event.is_set():
_, enabled_config = enabled_config_subscriber.check_for_update() _, updated_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
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") logger.debug(f"Camera {camera_name} disabled, clearing tracked objects")
prev_enabled = camera_enabled
# Clear norfair's dictionaries # Clear norfair's dictionaries
object_tracker.tracked_objects.clear() object_tracker.tracked_objects.clear()
@ -638,9 +639,7 @@ def process_frames(
for tracker in object_tracker.default_tracker.values(): for tracker in object_tracker.default_tracker.values():
tracker.tracked_objects = [] tracker.tracked_objects = []
prev_enabled = current_enabled if not camera_enabled:
if not current_enabled:
time.sleep(0.1) time.sleep(0.1)
continue continue

View File

@ -301,22 +301,6 @@ export default function LivePlayer({
player = <ActivityIndicator />; 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 ( return (
<div <div
ref={cameraRef ?? internalContainerRef} ref={cameraRef ?? internalContainerRef}
@ -413,7 +397,7 @@ export default function LivePlayer({
/> />
</div> </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="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"> <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> <p className="my-5 text-lg">Stream offline</p>

View File

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

View File

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