docs: FEAT-03 extended — simulated odometer in trip replay + trip list

This commit is contained in:
Mathieu Moran
2026-08-12 17:12:45 -04:00
parent 0d5aea5947
commit e8746e5d69
2 changed files with 19 additions and 3 deletions
+10 -2
View File
@@ -63,13 +63,21 @@ dedicated PLAN.md phase (or fold it into the relevant existing work) and mark it
first, add pairing only if provisioning still feels annoying. first, add pairing only if provisioning still feels annoying.
### FEAT-03 — Manual start odometer fallback when OBD odometer is unavailable ### FEAT-03 — Manual start odometer fallback when OBD odometer is unavailable
- **Status**: `SHIPPED` 2026-08-11 - **Status**: `SHIPPED` 2026-08-11 (extended 2026-08-12)
- **Area**: Settings page, Dashboard, `modules/app_settings.py`, `modules/app_sql.py` - **Area**: Settings page, Dashboard, trip history, `modules/app_settings.py`, `modules/app_sql.py`,
`modules/app_trip.py`, `server/modules/db.py`, `static/js/history.js`
- **Phase**: Phase 27 - **Phase**: Phase 27
- **What**: Settings page now has an "Odometer baseline (km)" field. The app stores - **What**: Settings page now has an "Odometer baseline (km)" field. The app stores
this value and computes `odometer_km = baseline + cumulative trip distance`. Dashboard this value and computes `odometer_km = baseline + cumulative trip distance`. Dashboard
shows "(manual)" label when using baseline. When baseline is 0, falls back to live shows "(manual)" label when using baseline. When baseline is 0, falls back to live
OBD reading (the original behavior). Also appears in `/api/stats` response. OBD reading (the original behavior). Also appears in `/api/stats` response.
- **2026-08-12 — simulated odometer in trip history**: the trip replay scrubber now
shows an "Odometer" line below speed. Per-point odometer is the raw OBD value when
the vehicle reports one (PID 0xA6), otherwise a **continuous simulation**:
`baseline + Σ(prior trips' distance) + within-trip distance`. The trip-list
"Odometer" column uses the same continuous formula on both Pi and server (previously
the server hardcoded `None` and the Pi ignored the baseline). The 2013 Yaris doesn't
report PID 0xA6, so every point uses the simulated value.
### FEAT-04 — Replace SIM868 2G GSM hat with 4G LTE modem (Huawei E3372h-153) ### FEAT-04 — Replace SIM868 2G GSM hat with 4G LTE modem (Huawei E3372h-153)
- **Status**: `IDEA` - **Status**: `IDEA`
+9 -1
View File
@@ -1971,7 +1971,15 @@ Unraid now uses SSH deploy key for git operations. BUGS.md Open section is empty
tracked in FEATURES.md. tracked in FEATURES.md.
**Shipped:** **Shipped:**
- **FEAT-03 — Manual odometer baseline** (2026-08-11) - **FEAT-03 — Manual odometer baseline** (2026-08-11, extended 2026-08-12): Settings
"Odometer baseline (km)" field; dashboard shows baseline + trip distance. Extended
2026-08-12 with a **simulated odometer in trip history**: replay scrubber shows an
"Odometer" line below speed, and the trip-list column uses a continuous formula
`baseline + Σ(prior trips) + within-trip distance` (raw OBD value when PID 0xA6 is
reported). Fixed a latent bug where the Pi's list_trips fallback ignored the baseline
and the server hardcoded `odo_start_km/end_km = None`. Changed: `modules/app_trip.py`,
`modules/app_sql.py`, `server/modules/db.py`, `static/js/history.js`,
`templates/history.html`, `server/templates/history.html`.
- **FEAT-06 — Trip ID column in history** (2026-08-11) - **FEAT-06 — Trip ID column in history** (2026-08-11)
- **FEAT-07 — Phone-hotspot auto-connect docs** (2026-08-11) - **FEAT-07 — Phone-hotspot auto-connect docs** (2026-08-11)
- **FEAT-05 — DTC history sync to server** (2026-08-12): Pi pushes DTC snapshots - **FEAT-05 — DTC history sync to server** (2026-08-12): Pi pushes DTC snapshots