Car Parker
Where the car is parked, and when it needs to move for street sweeping. Saga doesn't track parking itself — it reads and phrases what the existing "Car Parker" Home Assistant automation (GPS + SF street-sweeping schedule) already knows.
How to use it
"where's my car parked"
"when do I need to move my car"
"how soon until street sweeping"
How it works
Car questions are answered two different ways depending on how they reach the brain, both reading the same HA entities (owned/written by Car Parker, Saga only ever reads them): binary_sensor.car_away_from_parked_spot, binary_sensor.car_tracker_stale, binary_sensor.move_car_now, sensor.parked_location, sensor.car_parker_status (carries next_sweeping in its attributes).
- Power responses (
brain/api.py):_car_location_response/_car_move_responsematch on_CAR_LOCATION_RE/_CAR_MOVE_REand answer deterministically — no LLM involved. This exists specifically because live testing showed the narrating model would drop the address or (observed once) hallucinate something unrelated when asked to phrase a car fact itself. Hour-precise, address-precise, every time. - Tools (
brain/tools.py):get_car_status/get_next_street_sweepingare the fallback for phrasings the power-response regexes don't catch — same underlying logic, reached through the normal tool round-trip instead. - Phrasing:
_format_parked_location()builds an unambiguous "on X between Y and Z, SIDE side" phrase from structured attributes (street, side, block_limits) instead of the dashboard's comma/dash-joined string, which reads to a small model like one garbled street name. Street abbreviations (St/Ave/Blvd) are expanded for TTS. Times are spelled out viatime_phrase.pythe same way reminders are (see notes-and-reminders.md). - Urgency: the "where's it parked" answer adds an urgency warning only when sweeping starts within
URGENT_WINDOW(4 hours) of now, or Car Parker's ownmove_car_nowalert is already firing — otherwise "where" and "when to move it" stay separate answers.
Status & known limits
- Entirely read-only from Saga's side — it has no way to correct or override what Car Parker reports (stale-tracker data is flagged, not fixed).
- Depends on Car Parker's automation being healthy; if its sensors are unreachable, Saga says so rather than guessing.