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.