Add real-time live gauge dashboard (--dash)

In-place updating CLI dashboard for watching data while cranking/running.
Pure-ANSI (no new deps; works on Windows 10+ terminals).

- Color-coded gauges (green/yellow/red) by no-start thresholds
- Live min/max per gauge -> captures PEAK ICP during a crank
- ASCII bars for ICP and FICM main voltage
- Presets: crank (ICP/FICM/batt/RPM, fastest), vitals (default), full
- Dead-PID auto-skip keeps refresh rate up when 09xx FICM PIDs no-respond
- --dash-log PATH writes a CSV while you watch (streaming log preserved)
- q=quit, r=reset min/max; cross-platform non-blocking key input

Validated: render + decoders vs the truck's real scan bytes, and the full
dashboard() loop via a mock ELM (ICP climb across the 500psi firing
threshold, peak capture, battery-sag capture, CSV logging, clean exit).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016yT89n4zR4qbrySoSiEyZs
This commit is contained in:
2026-06-29 23:27:29 -04:00
parent 36b233f02c
commit c94caefd50
2 changed files with 350 additions and 0 deletions
+21
View File
@@ -32,6 +32,27 @@ python obd_reader.py COM5 --clear # read, then optionally clear (asks to confi
python obd_reader.py COM5 -v # verbose: show raw ELM327 traffic
```
### Live dashboard (real-time gauges)
Updates in place as you crank or run the engine — color-coded, with live
min/max so a crank's **peak ICP** is captured. No extra dependencies (ANSI;
works on any Windows 10+ terminal). `q` quits, `r` resets min/max.
```
python obd_reader.py COM5 --dash # vitals preset (ICP, FICM, IPR, batt, RPM, temps)
python obd_reader.py COM5 --dash crank # cranking preset: ICP / FICM main / batt / RPM (fastest)
python obd_reader.py COM5 --dash full # every PID
python obd_reader.py COM5 --dash crank --dash-log crank.csv # + write a CSV while you watch
```
**No-start use:** run `--dash crank`, then crank. A healthy 6.0 builds
**~500+ psi ICP within 12 s**; if ICP stalls below 500 (red), that confirms
the high-pressure oil bleed-off. FICM Main should hold ~48V. The `--dash-log`
CSV is your streaming log — paste it back for analysis.
Note: the FICM PIDs (`09xx`) are `[DOC]` (not yet confirmed on this truck); if
they read `--`, they auto-drop after a few frames so the refresh rate stays up.
Or just double-click **`RUN_OBD.bat`** on Windows (auto-installs `pyserial`).
On the truck: plug into the OBD port under the dash, key to **RUN** (engine off is fine