From 5de5cee3c6203222e907f81ded0d5381303754be Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Fri, 28 Aug 2026 12:26:05 -0500 Subject: [PATCH] Fix LPR vehicle message for multiple models (#24119) * use the camera's model for the lpr vehicle check `FrigateConfig.model` became `models[]` in the detector refactor, so this didn't compile on 0.19. Each camera has its own detector/model pair now, so the check resolves the camera's scene with `getModelForCamera` instead of looking at every model. * use camera config model * fix export test --- frigate/camera/state.py | 2 +- frigate/test/http_api/test_http_export.py | 2 +- web/src/components/config-form/section-configs/lpr.ts | 11 +++++------ 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/frigate/camera/state.py b/frigate/camera/state.py index 3bf923b22c..1fc52c0c0d 100644 --- a/frigate/camera/state.py +++ b/frigate/camera/state.py @@ -63,7 +63,7 @@ class CameraState: self.lpr_min_obj_area: int = 0 self.lp_objects = { label - for label, attributes in config.model.attributes_map.items() + for label, attributes in self.model.attributes_map.items() if "license_plate" in attributes } diff --git a/frigate/test/http_api/test_http_export.py b/frigate/test/http_api/test_http_export.py index 1469d80bb2..51f10c7abb 100644 --- a/frigate/test/http_api/test_http_export.py +++ b/frigate/test/http_api/test_http_export.py @@ -1530,7 +1530,7 @@ class TestHttpExport(BaseTestHttp): ) with tempfile.TemporaryDirectory() as tmpdir: - video_path = os.path.join(tmpdir, "multibyte_export.mp4") + video_path = os.path.join(tmpdir, "現場カメラ.mp4") with open(video_path, "wb") as handle: handle.write(b"video") diff --git a/web/src/components/config-form/section-configs/lpr.ts b/web/src/components/config-form/section-configs/lpr.ts index 46781e610a..fa1f7f2cb5 100644 --- a/web/src/components/config-form/section-configs/lpr.ts +++ b/web/src/components/config-form/section-configs/lpr.ts @@ -1,3 +1,4 @@ +import { getModelForCamera } from "@/utils/modelUtil"; import type { SectionConfigOverrides } from "./types"; const lpr: SectionConfigOverrides = { @@ -21,12 +22,10 @@ const lpr: SectionConfigOverrides = { if (ctx.level !== "camera" || !ctx.fullCameraConfig) return false; if (ctx.fullCameraConfig.type === "lpr") return false; const tracked = ctx.fullCameraConfig.objects?.track ?? []; - const vehicles = Object.entries( - ctx.fullConfig.model?.attributes_map ?? {}, - ) - .filter(([, attributes]) => attributes.includes("license_plate")) - .map(([label]) => label); - return !tracked.some((o) => vehicles.includes(o)); + const model = getModelForCamera(ctx.fullConfig, ctx.cameraName); + return !tracked.some((o) => + model?.attributes_map?.[o]?.includes("license_plate"), + ); }, }, ],