From 7ffbd12ac8122a60a8fc6bd326f5854f2ea37305 Mon Sep 17 00:00:00 2001 From: Erich Blume Date: Sun, 15 Feb 2026 17:48:14 -0800 Subject: [PATCH] Fix Frigate parked car re-detection and enable writable config (#193) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Remove car-specific `max_frames: 150` which was causing a forget-and-re-detect loop on parked cars (every ~30 seconds at 5fps) - Set `stationary.interval: 0` so Frigate never re-runs detection on stationary objects - Replace read-only configmap subPath mount with initContainer + emptyDir, so Frigate UI changes (zones, masks) persist at runtime ## Context Frigate was spamming notifications because `max_frames` for cars caused it to "forget" a parked car after 150 frames, then immediately re-detect it as a brand new object. The fix follows [Frigate's official parked cars guide](https://docs.frigate.video/guides/parked_cars/). The writable config change also unblocks using `required_zones` for car alerts — zones can now be drawn in the Frigate UI and will survive until pod reschedule (at which point they should be baked into the configmap via IaC). ## Test plan - [ ] Sync frigate app via ArgoCD and verify pod starts with initContainer - [ ] Confirm parked cars no longer trigger repeated alerts - [ ] Draw a zone/mask in Frigate UI, save, verify it persists after Frigate restart - [ ] Set up `driveway_entrance` required zone for car alerts 🤖 Generated with [Claude Code](https://claude.com/claude-code) Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/193 --- argocd/manifests/frigate/configmap.yaml | 13 +++++++++++-- argocd/manifests/frigate/deployment.yaml | 16 +++++++++++++--- .../changelog.d/frigate-stationary-fix.bugfix.md | 1 + 3 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 docs/changelog.d/frigate-stationary-fix.bugfix.md diff --git a/argocd/manifests/frigate/configmap.yaml b/argocd/manifests/frigate/configmap.yaml index 629f8ee..c038b8b 100644 --- a/argocd/manifests/frigate/configmap.yaml +++ b/argocd/manifests/frigate/configmap.yaml @@ -33,8 +33,17 @@ data: stationary: max_frames: default: 1500 - objects: - car: 150 + motion: + mask: + - 0.401,0.026,0.4,0.078,0.587,0.072,0.585,0.02 + zones: + driveway_entrance: + coordinates: 0.85,0.366,0.689,0.347,0.661,0.175,0.795,0.255 + objects: [car, dog, person] + review: + alerts: + required_zones: + - driveway_entrance objects: track: [person, car, dog, cat, bird] diff --git a/argocd/manifests/frigate/deployment.yaml b/argocd/manifests/frigate/deployment.yaml index 34c50ef..9310a50 100644 --- a/argocd/manifests/frigate/deployment.yaml +++ b/argocd/manifests/frigate/deployment.yaml @@ -14,6 +14,15 @@ spec: labels: app: frigate spec: + initContainers: + - name: copy-config + image: busybox:1.37 + command: ["cp", "/config-ro/config.yml", "/config/config.yml"] + volumeMounts: + - name: config-ro + mountPath: /config-ro + - name: config + mountPath: /config containers: - name: frigate image: ghcr.io/blakeblackshear/frigate:0.16.4-standard-arm64 @@ -37,8 +46,7 @@ spec: key: password volumeMounts: - name: config - mountPath: /config/config.yml - subPath: config.yml + mountPath: /config - name: recordings mountPath: /media/frigate - name: database @@ -65,9 +73,11 @@ spec: initialDelaySeconds: 15 periodSeconds: 10 volumes: - - name: config + - name: config-ro configMap: name: frigate-config + - name: config + emptyDir: {} - name: recordings persistentVolumeClaim: claimName: frigate-recordings diff --git a/docs/changelog.d/frigate-stationary-fix.bugfix.md b/docs/changelog.d/frigate-stationary-fix.bugfix.md new file mode 100644 index 0000000..2010cda --- /dev/null +++ b/docs/changelog.d/frigate-stationary-fix.bugfix.md @@ -0,0 +1 @@ +Fix Frigate repeatedly alerting on parked cars by removing per-object max_frames and setting stationary interval to 0. Make Frigate config writable so UI changes (zones, masks) persist within a pod lifecycle.