How provrb/obdium works
OBDium is a desktop vehicle-diagnostics application. The user connects through the GUI to an ELM327 adapter, after which the backend requests and decodes live OBD-II data for dashboard metrics, graphs, trouble codes, and readiness tests; users can also decode a VIN offline. The graph includes documented capabilities whose detailed wiring was not sampled, such as custom PIDs, settings, and demo replay. Source excerpts are partial, so uncertain internal call paths are omitted.
Main entry points: main.js Dashboard UI · events.rs Event handlers · obd.rs OBD connection · stats.rs Metric tracking
Components 23
Desktop interface
- Dashboard UI
frontend/scripts/main.js - UI features
frontend/scripts/features.js - Preferences
frontend/scripts/settings.js - VIN entry
frontend/scripts/main.js
Application bridge
- Event handlers
backend/src/bridge/events.rs - Connection state
backend/src/bridge/mod.rs - App runtime
backend/src/main.rs - Metric tracking
backend/src/stats.rs - VIN request handler
backend/src/bridge/events.rs
OBD diagnostics
- OBD connection
backend/src/obd.rs - Live PID decoding
backend/src/pid/engine.rs - Response decoding
backend/src/response.rs - PID catalog
backend/src/dicts.rs - Codes and readiness
backend/src/pid/diagnostics.rs - Custom PIDs
backend/src/bridge/events.rs - Demo replay
backend/src/replay.rs
VIN decoding
- VIN parser
backend/src/vin/parser.rs - VPIC lookups
backend/src/vin/attributes.rs
Offline data
- Code descriptions
backend/data/code-descriptions.sqlite - VPIC database
backend/data/vpic.sqlite.xz - Recorded requests
backend/data/requests.json
Other components
- Driver
- ELM327 adapter
Connections 22
- Driver → Dashboard UI: uses
- Dashboard UI → Event handlers: emits events
- Event handlers → App runtime: starts tracking
- Event handlers → Connection state: stores connection
- Event handlers → OBD connection: connects and queries
- OBD connection → ELM327 adapter: sends commands
- OBD connection → Live PID decoding: queries PIDs
- Live PID decoding → Response decoding: decodes responses
- App runtime → Metric tracking: runs polling
- Metric tracking → OBD connection: requests metrics
- Metric tracking → Dashboard UI: emits updates
- Dashboard UI → Codes and readiness: requests codes and tests
- Codes and readiness → Code descriptions: reads descriptions
- Dashboard UI → PID catalog: displays PID list
- Dashboard UI → Custom PIDs: submits custom PID
- Dashboard UI → Preferences: saves preferences
- VIN entry → VIN request handler: requests decoding
- VIN request handler → VIN parser: parses VIN
- VIN parser → VPIC lookups: looks up attributes
- VPIC lookups → VPIC database: queries database
- Dashboard UI → Demo replay: selects demo mode
- Demo replay → Recorded requests: reads recordings