You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Clarify Stage 3 timing + rename Detection tab to Schedule
- Persistent Deterrence delay label now says "Delay Between Warnings"
with hint explaining it's the gap after escalation AND between loops
- Stage description explicitly explains the flow: escalation completes →
wait delay → check person → generate fresh AI description → repeat
- Renamed "Detection" config tab to "Schedule" (clearer purpose)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+39-3Lines changed: 39 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -68,6 +68,8 @@ Frigate NVR MQTT VoxWatch Service MQTT Home Assist
68
68
69
69
Each stage only fires if the person is still detected (Frigate re-check). AI adapts automatically for nightvision — no color descriptions from IR footage.
70
70
71
+
**Persistent Deterrence (optional):** When enabled, Stage 3 loops -- each iteration waits a configurable delay, re-checks whether the person is still present, generates a fresh AI description, and escalates the tone. The loop ends when the person leaves or a configurable max iteration count is reached. Configure in the Pipeline tab under Persistent Deterrence.
72
+
71
73
---
72
74
73
75
## Response Modes
@@ -122,6 +124,36 @@ All customizable — address, agency, callsign, officer voice, radio intensity,
Group cameras by physical area so that one detection triggers one speaker and all cameras in the zone share a single cooldown timer.
132
+
133
+
Useful when multiple cameras cover the same area (e.g. two angles on the front gate) -- without zones, each camera fires independently and the intruder hears duplicate audio.
134
+
135
+
```yaml
136
+
zones:
137
+
front_yard:
138
+
cameras: [frontdoor, driveway]
139
+
speaker: frontdoor # audio always plays on this camera
**Per-camera schedules:** Each camera can override the global active hours with its own schedule. Set a camera's schedule to always, a fixed time window, or sunset-to-sunrise -- independently of every other camera. Cameras with no per-camera schedule fall back to the global setting. Configure per-camera schedules in the **Detection** tab of the Config editor, or in the camera detail panel.
372
+
373
+
You can also specify a city name (e.g. city: "Seattle") instead of explicit latitude/longitude for sunset/sunrise calculations. VoxWatch uses the astral library's built-in geocoder database for city name resolution.
374
+
339
375
---
340
376
341
377
## Legal Considerations
@@ -369,11 +405,11 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for code style and PR guidelines.
After escalation, if the person is still present, VoxWatch will keep generating fresh AI descriptions of their actions every loop until they leave or the max is reached.
620
+
After the Escalation stage completes, VoxWatch waits the configured delay, then checks if the person is still present. If yes, it generates a fresh AI description of their current actions and pushes another warning. This repeats until the person leaves or the max iteration count is reached.
621
621
</p>
622
622
623
623
<divclassName="grid grid-cols-2 gap-3">
624
624
<Field
625
-
label="Loop Delay (seconds)"
626
-
hint="Pause between each deterrence iteration."
625
+
label="Delay Between Warnings (seconds)"
626
+
hint="How long to wait after escalation (and between each loop iteration) before the next warning. The first persistent deterrence warning fires this many seconds after the escalation stage completes."
0 commit comments