Been using the above setup for 2 weeks, works great. Overall I've found that there is a lot more to this project than simply finding the requests/responses/format - a lot of it needs be validated over days and miles. This lead me to build out the software stack to support that. Very easy to see when a formula or datapoint is wrong when it's live updating on the head unit.
Here is the foundation:
python-can - read/write to the CAN bus with little effort, even in our car. supports virtual devices for bench testing.
couchdb - easy to use database with GUI admin, but most importantly, it has a web API built in. easy to pull, replicate.
web app - simple HTML, CSS, Javascript app consumes the couchdb data to make a UI. No backend, internet, or fancy stuff.
Obligatory screenshot. Data is live, but some formulas not right. Still working out the layout/data visualization, but taking inspiration from Tesla and Bolt:
Current features:
- Speed, gear, soc, range estimates, steering wheel lines, gauges, and a line at the bottom thats supposed to represent how aggressive you are driving. Consistent speeds, it levels out, hard launch/stops create the color spikes.
- Dark main panel switches when charging, parked, or driving. Current setup is HDMI only so the screen is not touchable, so relies on automated switching.
- Car overlays for doors/trunk open, placeholder for TPMS once I figure it out
- History panel shows kW used/added but I plan on making it more useful with m/kw, historical temps, speed, and aggressiveness to sort of represent an energy "score"
- Tied into my aftermarket blindspot/cross traffic alerts to show yellow warnings to left/right behind car
I'll eventually share the source once the project matures a bit - had a bug just this morning showing me at 102mph on residential streets
