docs: tighten features list in readme

This commit is contained in:
Mathieu Moran
2026-08-11 03:00:35 -04:00
parent 6355869a8d
commit e83e5eaa7c
+29 -57
View File
@@ -32,63 +32,35 @@ Dashboard — mobile (390 px) and desktop (1280 px):
## Features ## Features
- **Live OBD-II data** over a cheap USB ELM327-compatible adapter: speed, RPM, coolant - **Live OBD-II data** — speed, RPM, coolant temp, fuel level, throttle, MIL/DTC via USB ELM327.
temperature, fuel level, throttle position, MIL status, stored DTCs, and odometer when the ECU Automatic reconnects with clear adapter/ECU diagnostics. DTC codes persist across reboots.
supports it. Includes automatic background reconnects, serialized queries, and clear - **Real GPS tracking** — Waveshare SIM868 GNSS HAT with GPIO PWRKEY auto-power-on. Live position
adapter/ELM327/ECU diagnostics plotted on an offline Leaflet map (pre-cached tiles, no internet needed).
- **Real GPS tracking** via a Waveshare SIM868 GNSS/GSM/Bluetooth HAT, plotted live on an - **WiFi hotspot** — auto-switches between home WiFi and a self-hosted AP for in-car phone access
offline Leaflet map (pre-cached map tiles — no internet needed in the car). The module powers at `http://yaris.local` (no port number). Phone hotspot uplink supported for on-the-road sync.
itself on through the HAT's GPIO PWRKEY wiring after a Pi power cycle - **Dashcam workflow** — auto-detects any USB dashcam, mounts read-only, browses files before
- **Self-hosted WiFi hotspot** so you can load the web UI on your phone from inside the car, importing. Import one, selected, or all files. Delete individual or all files directly from the
with automatic switching back to home WiFi when it is available (`http://yaris.local` — no dashcam. Verified against real 28GB/87-file hardware.
port number) - **Local video library** — browse imported clips with cached thumbnails and upload status. Inline
- **Dashcam file retrieval** — detects a USB dashcam automatically (any brand/folder layout, H.264 playback with seeking. Local-only delete. Optional auto-retention after confirmed upload.
no hardcoded device path), mounts it read-only, and safely copies footage locally. Verified - **Remote sync** — trip logs and dashcam footage upload to a self-hosted Flask + Postgres server.
against a real 28GB/87-file import. The web UI can also browse, sort, and delete individual or Dashcam videos stream in resumable 40MB chunks. Independent toggles for trip and dashcam uploads.
all videos directly from the connected dashcam with confirmed, temporary read-write operations, - **Remote web portal** — login-protected at the server URL. Trip history with CARTO live map and
plus import one file or any checkbox selection instead of always importing the whole card route replay, dashcam archive with inline player, overview stats, device management
- **Local video library** — browse imported clips with cached thumbnails and upload status, (create/delete/rotate keys), and server-side device identity sync that hot-reloads on the Pi.
play H.264 footage inline with seeking, and delete only the local Pi copy. Optional retention - **Trip history and replay** — motion-aware detection (OBD wheel speed primary, GPS displacement
can automatically remove older local copies after their exact content is confirmed uploaded fallback). Metric summaries, offline route polyline, play/pause timeline with moving marker and
- **Remote upload** — a self-hosted server (Flask + Postgres, `server/`) receives trip/GPS live reverse-geocoded location names. Tap-to-replay on mobile.
logs and dashcam footage over the internet (via Cloudflare Tunnel or a plain port-forward). - **Status page** — Pi health (temp, RAM, disk, uptime, throttling), service states, uplink/server/
Dashcam videos upload in resumable 40MB chunks (works around tunnel body-size limits and keeps GPS/OBD diagnostics, and quick actions (test server, sync now, reconnect uplink, restart app).
the Pi's memory footprint flat regardless of file size); a UI toggle can pause dashcam uploads - **Offline-first alerts** — notification bell on every page for check-engine, storage pressure,
independently while trip logs keep syncing upload backlog, temperature/power faults, and GPS loss while moving. Optional ntfy push.
- **Remote web portal** — a login-protected browser portal at the same server URL: - **Reverse geocoding** — `/api/geocode` uses `reverse_geocoder` offline (no internet needed),
trip history with OSM/CARTO live map and route replay, dashcam archive browsing with inline upgrades to Nominatim street-level when online. LRU-cached. Results pre-loaded for trip scrubbing.
video player and Range-request seeking, overview stats dashboard, delete buttons for trips and - **Offline web UI** — Flask, Bootstrap 5, Socket.IO, Chart.js, Leaflet. All assets served
clips, and a device-settings page for editing the synced owner/car/avatar values that the Pi locally. Responsive with collapsible sidebar and mobile bottom nav.
pulls from the server. The portal can register/delete multiple devices, reveal a one-time API - **Headless deployment** — systemd service with auto-restart, 10-second hardware watchdog, and
key at creation/rotation time, and request a sync for a selected device. When the Pi has nftables port-80 redirect. Deploy scripts in `deploy/`.
Sync with server enabled, those identity changes hot-reload into the running local UI on the
next successful sync instead of waiting for a manual restart. 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
- **Optional cellular fallback** through the SIM868 for small trip-log uploads when normal
WiFi/Ethernet is unavailable (dashcam video stays off cellular)
- **Dedicated local status page** with live Pi health, service states, uplink/server/GPS/OBD
diagnostics, plus quick actions for server test, sync-now, uplink reconnect, and app restart
- **Motion-aware local-first** SQLite logging — five-second motion checks without five-second
parked writes, plus retry-safe remote sync and automatic backoff
- **Pi health + diagnostics** — a dedicated local Status page shows temperature, RAM, disk,
uptime, undervoltage/throttling warnings, service state, uplink/server reachability, GPS state,
OBD presence, and safe quick actions
- **Offline-first alerts** — a notification bell on every page reports check-engine state,
storage pressure, upload backlog, temperature/power faults, and GPS loss while moving. Optional
ntfy delivery is available but remains disabled until configured
- **Trip history and route replay** — detects motion from OBD wheel speed with sustained GPS
displacement as a fallback, summarizes distance and speed in metric units (km / km/h), and replays
each route as a line on the offline map with a timestamped play/pause timeline, moving marker, and
live reverse-geocoded location name during scrubbing. Tap any trip row on mobile to load the route
- **Offline reverse geocoding** — a `/api/geocode` route on the Pi uses the `reverse_geocoder`
library (20 MB world dataset, no internet needed) for city/region, and upgrades to Nominatim
street-level when an internet uplink is available. Results are LRU-cached in-process. The browser
never calls any external geocoding service
- **Offline web UI** built with Flask, Jinja, Bootstrap 5, Socket.IO, Chart.js, and Leaflet,
all served locally with a shared responsive page shell
- **Headless Pi deployment** as a self-restarting `systemd` service with a 10-second BCM2835
hardware watchdog, verified across a real reboot
## Hardware ## Hardware