Particle has released the TrackerOne and TrackerSOM, a “a field-ready asset tracking solution” and reference design for a custom tracking solution. The board includes an integrated CAN Bus controller and transceiver able to connect to a car’s OBD-II port.
A couple years ago I built the same thing from parts and an Electron. CAN/OBD-II data comes through the port encoded and the decoding library couldn’t be run on the STM32F205RGT6 120MHz ARM Cortex M3, so I built a service that could be called via a Particle webhook. I’ve been sitting on it for ages, so now I’m making it public:
http://api.greencam.xyz/canbus
The service can be used to translate a single CAN frame or in a batch mode. For single frames, simply include the HEX data in the query parameter:
http://api.greencam.xyz/canbus/single_frame?can_frame=cf00300;d1000014ff0f5e7d
and receive a plaintext result. This method is effective for basic calls from a webhook or script.
To batch process CANbus data, POST the CANbus data as a JSON object, either as a set of frames:
{ "can_frames": [ 'cf00300;d1000014ff0f5e7d', '18fedf00;7da0287d7dfffff0', '18feef00;ffffff00067dfffa', '18fee000;4624040042240400' ] }
or as a stream separated by \n
line endings:
{ "can_stream": "18fedf00;7da0287d7dfffff0\ncf00300;d1000014ff0f5e7d\n18feef00;ffffff00067dfffa\n18fee000;4624040042240400n", }
to the URL: http://api.greencam.xyz/canbus/json.
Note: there is a limit of 1000 frames and 200 calls per day or 1 call per second on all of these services.
Feel free to reach out if you’d like to know more, and if you are interested in a tailored tracking solution for more sophisticated applications or original products I am available for consulting or contract.