CANbus data to JSON API
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.