docs: update PLAN.md and readme for phases 24.5-24.7

- PLAN.md: add Phase 24.7 section (diagnose.sh, map tile fixes, app.py cleanup)
- readme.md: update project status to reflect phases 24-24.7 complete,
  add remote portal to features list, add diagnostics/recovery section

Co-authored-by: Copilot <[email protected]>
This commit is contained in:
Mathieu Moran
2026-08-10 05:55:37 -04:00
co-authored by Copilot
parent f90a5e5826
commit a7ab088cf5
2 changed files with 37 additions and 18 deletions
+27 -18
View File
@@ -55,6 +55,12 @@ Dashboard — mobile (390 px) and desktop (1280 px):
Dashcam videos upload in resumable 40MB chunks (works around tunnel body-size limits and keeps
the Pi's memory footprint flat regardless of file size); a UI toggle can pause dashcam uploads
independently while trip logs keep syncing
- 🌐 **Remote web portal** — a full read-only browser portal at the same server URL (Phase 24):
login-protected (Flask-Login + bcrypt), trip history with OSM/CARTO live map and route replay,
dashcam archive browsing with inline video player and Range-request seeking, overview stats
dashboard, and delete buttons for trips and clips. Shared `history.js` code runs on both the
Pi and the server — tile source and zoom limits are configured per-deployment via HTML data
attributes. Accessible at `https://your-cloudflare-tunnel-url/`
- 📡 **Optional cellular fallback** through the SIM868 for small trip-log uploads when normal
WiFi/Ethernet is unavailable (dashcam video stays off cellular)
- 🗄️ **Motion-aware local-first SQLite logging** — five-second motion checks without five-second
@@ -109,24 +115,15 @@ For the remote server (receives trip logs + dashcam uploads), see [server/README
## Project status
Phases 1–13, 15–23, and 23.5 are complete. The full responsive web UI redesign (Phase 23) is done,
followed by a major polish and hardware upgrade pass (Phase 23.5):
Phases 1–24.7 are complete. The system is fully built and audited, ready for the Phase 25 real-vehicle test:
- **Async dashcam import** with progress polling — no more mobile timeouts
- **Per-file Convert button** with real ffmpeg progress (reads `out_time_ms` via `-progress pipe:1`)
- **Odometer tracking** from OBD in every trip row and the overview dashboard
- **Separate upload toggles** for trips/logs vs dashcam videos
- **Download button** on Pi video files
- **Offline reverse geocoding** — `/api/geocode` route on the Pi uses `reverse_geocoder` (20 MB,
no internet needed); falls back to Nominatim for street-level accuracy when online. Browser never
calls any external service
- **Live location name** on dashboard GPS card (updates every ~50 m) and trip scrubber timeline
- **Recenter button** on dashboard and history maps
- **Imperial units removed** — metric only (km / km/h)
- **Mobile trip replay** — tap any trip row to load the route; Replay button kept on desktop only
- **TP-Link Archer T3U WiFi dongle** — RTL8812BU DKMS driver installed; all WiFi traffic moved to
`wlan1` (AC1300, dual-band). `wlan0` onboard stays silent as automatic fallback if dongle is
absent. Consistent phone-hotspot IP via `dhcp-client-id`
- **Phases 1–23.5**: core Pi system — GPS, OBD, dashcam, trip history, web UI redesign, WiFi upgrade, cellular fallback, alerts, settings, upload
- **Phase 24**: remote web portal at `https://yaris.ceaf.dev/` — login-protected, trip history with CARTO live map, dashcam archive, delete, overview stats
- **Phase 24.5**: full code audit — 6 bugs fixed across Pi modules and server, 63 tests passing
- **Phase 24.6**: Yaris 2013 OBD compatibility hardening — `_decode_odometer` no longer kills the OBD session on unsupported PIDs, sensor globals reset on reconnect, `OBD_SKIP_VOLTAGE_CHECK` escape hatch for clone ELM327 adapters
- **Phase 24.7**: diagnostic script (`scripts/diagnose.sh`), map tile switch to CARTO, zoom limit fix
**Next**: Phase 25 — temporary real-vehicle test in the 2013 Yaris (see PLAN.md for the full acceptance checklist). Phase 26 (Android companion app) follows after that.
Phase 14 is partially complete: the Pi's hardware watchdog is deployed and reboot-verified.
Read-only-root storage hardening is deferred until persistent storage is moved off the SD root
@@ -134,7 +131,7 @@ partition, and clean shutdown still needs delayed-power or ignition-sense hardwa
The browser-based phone relay was removed after real-world testing confirmed that mobile browsers
cannot reliably use the Pi's WiFi and cellular data simultaneously. A native Android companion is
planned later instead.
planned later instead (Phase 26).
The local Web UI includes a Settings page for safe runtime configuration: dashcam uploads,
uploaded-video retention, cellular APN fallback, optional ntfy delivery, and alert thresholds.
@@ -151,3 +148,15 @@ A temporary, removable real-vehicle compatibility test in the 2013 Yaris (Phase
final low-priority Android phase (Phase 26). Permanent installation is owner-handled and is not a
roadmap phase. Full phase history, verification notes, and current scope live in
[PLAN.md](./PLAN.md).
## Diagnostics & recovery
If something goes wrong in the car, SSH in and run:
```bash
bash ~/app/yaris-obd/scripts/diagnose.sh # read-only health check
bash ~/app/yaris-obd/scripts/diagnose.sh --fix # attempt auto-fix
```
Checks service state, OBD/UART hardware, disk/DB health, upload backlog, Pi throttling, and
prints a cheatsheet of recovery commands. Exit code = number of critical issues found.