Telematics Dashboard via Grafana - CAN Bus IoT [100% Free]
Need to visualize your CAN bus data in a dashboard?
The CANedge2 logs CAN data from e.g. vehicles or machinery. Data is stored on an SD and pushed to your server via WiFi.
In fleet telematics, you often need to display speed, GPS, SoC%, rates etc. in dashboards - for analysis, reports and alerts.
Luckily, this is easy and 100% free to set up via Grafana.
Learn more below - and try the playground!
Tip: Start by checking out our 5 min intro video above!
Note: We've added a new 'CANedge Grafana Backend' integration method - see details below.
Set up in <15 minutes. No coding required. Try it right now
Visualize your data via customizable, brandable dashboards
Easily add data alerts and be notified via slack, email, SMS, ...
Self-host on your own PC/server - or use easy cloud hosting
Use with any # of CANedge devices. Start small. Easily scale up
Zero subscription fees. 100+ plugins. Huge community. Free support
How to integrate your data: Backend vs. Writer
We provide two options for integrating your CANedge data with Grafana dashboards.
1: 'CANedge Grafana Backend'
CANedge data is processed by a backend app in 'real time' in response to dashboard interaction. No separate database.
2: 'CANedge InfluxDB Writer'
CANedge data is processed by a backend app periodically or in response to log file uploads and written to an InfluxDB database.
The CANedge is a series of 2 x CAN/LIN data loggers. The CANedge1 lets you log raw data to an SD card for periodic extraction. The data can be integrated with various free & open source software tools. The CANedge2 adds support for automatic upload via WiFi (incl. through 3G/4G routers). The data can be uploaded to your own S3 server (self-hosted or cloud).
Both the CANedge1 and CANedge2 can be integrated with Grafana as outlined in this article, though the CANedge2 is naturally ideal for this as log files automatically get uploaded to your server - making them readily available for dashboard visualization.
This integration can be setup as below:
- Add your DBC(s) in your log file folder / S3 bucket
- Setup Grafana (e.g. via their free cloud in <5 min)
- Deploy the Python app on your PC/EC2
- Link Grafana with the app via a JSON datasource plugin
- Customize & share your Grafana dashboards
Your CANedge2 periodically uploads MF4 data to your AWS S3 server. You use our guide to set up an EC2 instance (a virtual machine) to host the backend app. Using Grafana, you set up custom dashboards for visualizing the data stored on your S3 server. When a user interacts with the Grafana dashboard, the backend prepares the relevant data in real-time for visualization in Grafana.
You extract the SD card from your CANedge1 and insert it into your PC. Here, both the Python app and Grafana run as local services. Via your browser you open Grafana locally, which visualizes the data from the inserted SD card in decoded form.
Your CANedge2 uploads data via a local WiFi router to a self-hosted MinIO S3 server. The PC hosting the server also runs the backend app and Grafana. Via port forwarding, you can remotely view and analyze the data from your MinIO S3 server.
This integration can be setup as below:
- Setup InfluxDB + Grafana (e.g. free clouds in <5 min)
- Deploy Python script with details (S3, InfluxDB, DBC path)
- Automate execution (Task Scheduler, cron, Lambda)
- Customize & share your Grafana dashboards
Your CANedge2 periodically uploads MF4 data to your AWS S3 server. You use our guide to set up an AWS Lambda function to auto-process log files on-upload, writing the DBC decoded data to your InfluxDB database. Using Grafana, you set up custom dashboards for visualizing the data stored in the InfluxDB database.
You extract data from your CANedge1 SD card onto your local disk. Using the Python script, you manually process the data and write it to your InfluxDB cloud bucket for visualization in Grafana.
Your CANedge2 uploads data to your own self-hosted S3 server. On the PC running the server you also self-host InfluxDB and Grafana. Every 15 minutes, a scheduled task triggers the Python script to process any new log files uploaded, write the decoded signals to InfluxDB.
In this section we outline some of the pros & cons of the CANedge Grafana Backend vs. the CANedge InfluxDB Writer.
Overall, the best solution will depend on your use case requirements - and you can of course also decide to mix them.
Note: If you are in doubt which to select, contact us for free technical sparring.
1: CANedge Grafana Backend
Ideal for use cases where you need access to all your data via the dashboards (in particular from many devices) - and loading speed is less critical.
- You skip InfluxDB entirely - your disk/S3 is your "data lake"
- As a result, you can visualize any part of your data - which would be too complex/costly on InfluxDB
- You can easily set up 'near real-time dashboard visualization' (data is immediately available when uploaded)
- Annotations let you quickly identify what log files contain visualized data (letting you load the logs in other tools)
- The backend can also be deployed as an 'offline tool' e.g. for visualizing contents of a CANedge1 SD card
- As data is processed 'real-time', dashboard loading speed decreases significantly if you view long time periods
- Visualizing data from multiple devices "at the same time" (e.g. comparing signals across 10 trucks) is slow
2: CANedge InfluxDB Writer
Ideal when you need to visualize resampled data for a few signals and the most recent time period - and/or when dashboard loading speed is critical.
- Data is pre-processed so the dashboard loading time is fast
- In particular, this integration is faster for viewing long time periods and/or data from many devices
- Signals that are computationally intensive to decode (e.g. ISO TP) do not cause longer dashboard loading time
- Since all data gets processed systematically, this integration is well-suited if automated alerts are required
- Storing data in the paid InfluxDB Cloud is 60x+ more expensive than storing it on AWS S3
- Scaling for large data volumes can be complex/expensive
- Near real-time visualization is complex/costly
Easily set up your own dashboard in minutes
Want to get started fast? Easily integrate your CANedge data with Grafana in < 5 minutes by following our step-by-step guide!
Create amazing CAN data visualizations
Display your data your way with beautiful graphs, GPS maps, gauges, tables, heatmaps, KPIs, pies, alert lists and more - practically anything is possible.
Fully customize your dashboard
Easily customize your dashboard panels and structure including dark/light theme, chart colors, styles, pictures and logos.
Add context and information to your data
Want to highlight a specific event, DTC, issue or pattern? Add annotations with descriptions and meta tags that display when hovering the chart.
Easily identify underlying MDF log files
With the 'CANedge Grafana Backend' integration method you can see what log files your visualized data is based on - letting you e.g. quickly fetch relevant logs for in-depth analysis.
Set alerts to automate your data monitoring
With the 'CANedge InfluxDB Writer' integration method, you can visually define alert thresholds to trigger e.g. an SMS or e-mail with details on the trigger event.
Make your dashboards interactive (and scalable)
Enable users to interactively select devices and parameters via dropdowns to e.g. compare data patterns across assets.
Want to try the browser dashboards yourself? Open the playground - or set it up yourself in < 15 min!
Learn more about using the CANedge for J1939, OBD2 or marine telematics:
Monitor data across OEM prototype fleet
Need to monitor a fleet of vehicles during late-stage testing?
You can easily deploy the CANedge2 in a fleet of e.g. 50 prototype vehicles to auto-push CAN data to your own server via WiFi or 3G/4G access points. Your data can be pushed to e.g. an AWS S3 cloud server. On an AWS EC2 instance you can then host the 'CANedge Grafana Backend' Python app and link it to your S3 backend and your Grafana Cloud dashboards. Your engineers can then gain access to the dashboards as admins, editors or viewers and visualize data across all devices & log files stored on your S3 bucket.
Setup local warehouse predictive maintenance
Want to set up a local self-hosted fleet management dashboard?
If you need to set up a basic predictive maintenance system to e.g. monitor state of charge (SoC) across a warehouse fleet of forklifts or AGVs, you can set up a MinIO S3 server on your local network and connect your CANedge2 devices via local WiFi routers. Using docker, you can quickly deploy InfluxDB + Grafana, set up your dashboard and add alert triggers. In this setup, everything is 100% local, offline and self-hosted - ideal for warehouse telematics.
Build analytics platform towards your users
Need to create an IoT + dashboard solution for your customers?
The CANedge2 is designed for white labeling by OEMs and integrators. Since all the tools are open source, you can easily create custom commercial dashboard solutions for your specific target audience - e.g. for predictive maintenance, marine telematics, heavy-duty fleet management or OBD2 logging.
Case study: CAN telematics
Learn how HAVELSAN use the CANedge2 to collect CAN bus data from their UGVs via SD/WiFi - and visualize it via dashboards.
"The CANedge2 is an autonomous way to collect, transfer & analyse data. Set it up - and watch the data from your office."full case study
There are a couple of concepts being mentioned in this article - below we provide a simple overview.
S3 server: The CANedge2 logs raw CAN/LIN data into log files, which are uploaded to an S3 server that you've setup. You can e.g. choose a cloud server (AWS S3, Google Cloud, Azure, Wasabi, DigitalOcean) or a local/dedicated server (MinIO S3). The S3 server is simply a method of storing your data from your devices.
Python script: In order to visualize your CAN data, it first needs to be decoded to human-readable form (see our intro to CAN bus). This requires a DBC file, which is a simple text file that contains the rules for how to interpret the raw CAN data from a specific machine (e.g. a truck, car or robot). The Python script uses our API modules to load the raw CAN data (either from local disk or an S3 server) and DBC decode it using your DBC file. For the 'CANedge Grafana Backend', this process happens in response to user queries in the dashboard, with data sent on-request. With the 'CANedge InfluxDB Writer', data is sent to your InfluxDB database in response to e.g. a manual/periodic execution of the script, or upon log file upload (if you've set up AWS Lambda trigger functions). Examples of DBC files include our free OBD2 DBC for cars and our J1939 DBC for heavy-duty vehicles.
InfluxDB: InfluxDB is one of many available 'data sources' for Grafana. It is a "time series database", which means it is optimized for storing and querying time series data. Grafana is not able to directly fetch data from your S3 server or local disk, hence an 'intermediary database' is required. We recommend InfluxDB because it's very popular, simple-to-use and has a free cloud version for getting started. However, you could also push your data into e.g. Microsoft SQL, Graphite or one of the other 30+ data sources supported by Grafana, though in this case you'd need to modify the script slightly. As explained, you can even "skip" the database step by only processing required data on-demand, though this also means that the loading speed is reduced.
Grafana: Grafana is the #1 most popular open source dashboard tool, with 37K+ github stars and a massive community. The tool lets you load data from many different data sources and build custom dashboards based on the data. There are other open source dashboard tools like Dash, though we've found Grafana to be the most simple-to-use and powerful option available.
Note: You do not need any prior experience with the above concepts - we explain every step in our get started guides.
Yes, in the sense that you can host everything yourself. For example, you can deploy your CANedge2 devices so that they upload data to your own self-hosted MinIO S3 server, which is 100% free and open source. Next to your MinIO server, you can self-host InfluxDB and Grafana, which are also 100% free and open source. Such a solution will not cost anything (except of course the cost of the PC/server you use to host the solution). You can scale this to any level required (MinIO, InfluxDB and Grafana are all used in enterprise solutions). You can also use e.g. an AWS S3 server and host InfluxDB and Grafana on an AWS EC2 instance. In this case you'd of course pay for the AWS costs (though minimal), but not for InfluxDB or Grafana.
Of course, selfhosting can be a bit more technical if you're not e.g. familiar with e.g. docker and port forwarding.
Free cloud hosting
A simple solution is to setup an AWS S3 server and use free Grafana cloud account. The AWS S3 server cost is very limited (<1 EUR per device per month per device) and the free Grafana cloud will suffice for most use cases.
If you want to use the CANedge Grafana Backend integration, we recommend deploying this on an AWS EC2 instance (for speed performance and to avoid having to 'download' data from S3 to an external system). An EC2 instance costs ~15-20$/month. Importantly, the EC2 cost is not per device - so this solution becomes increasingly attractive as you scale the number of devices and/or the amount of data.
Alternatively, if you aim to use the CANedge InfluxDB Writer integration, you can start with the free InfluxDB Cloud account. This is suitable for small volumes of data (as it has a write-limit of 1 MB/minute), meaning you can typically use it with 1-10 devices depending on how heavily you resample the data.
Scaling up to larger volumes
If you need to scale up your solution (e.g. as part of a fleet telematics roll-out), the CANedge Grafana Backend will often become increasingly attractive financially. This is particularly so because storing data in e.g. the InfluxDB Cloud 'paid version' is 60x+ more expensive than storing it on AWS S3. In other words, if you aim to cloud host everything, the InfluxDB solution may become rather expensive if you have many devices or large volumes of data.
You can of course also self-host everything on an on-premise machine, or e.g. an AWS EC2 instance. All the tools involved are open source, so in this case you do not pay directly for e.g. Grafana or InfluxDB. However, this approach does require that you have expertise in scaling your solution and making it stable for large volumes of data and devices.
You are able to deploy each element of your solution either in the cloud or on-premise via self-hosting.
- Log file storage: Data can be stored on local disk, a self-hosted S3 server or a cloud S3 server (AWS, Google Cloud, Azure, ...)
- Python script: The Python app (backend, writer) can e.g. be hosted on your PC, an AWS EC2 instance or via AWS Lambda
- Database: If you use the InfluxDB Writer, you can write data to an InfluxDB cloud or self-host InfluxDB on a PC/EC2
- Grafana: You can host Grafana via their cloud (incl. their free version), or self-host it on a PC/EC2
Generally, cloud options are easy to use because they are 'consistent' - making them ideal for getting started. In particular, we recommend using Grafana's cloud option as their free version will suffice for most use cases. However, all combinations of above can be deployed as you see fit.
Yes. The CANedge is designed for 100% interoperability - and you can integrate the data into practically any database and visualization tool.
To achieve this, the CANedge uses open standards, open source API tools (e.g. the S3 API and our Python CAN bus API) and popular data structures (e.g. pandas dataframes). This enables easy integration with practically any database injection APIs.
Backend JSON output
In our CANedge Grafana Backend integration, the Python app listens to JSON query requests from Grafana and responds with JSON structured data responses. Naturally, this can quickly be modified for use with any other tool that produces/consumes JSON-style communication.
InfluxDB vs. other databases
In our CANedge InfluxDB Writer integration we take outset in InfluxDB, which is a popular, free open source time series database. However, you could quickly modify our plug & play Python scripts to instead push data into MySQL, Graphite, Microsoft SQL Server, OpenTSDB etc. Once you've pushed your 'physical values' data into your preferred database, you can use any visualization tool that integrates with the database. For example, Grafana can load data from any of the databases mentioned above (and many more). You could also e.g. use Tableu, Microsoft Power BI, Kibana, Splunk and many others.
As another example, you could also simply push your data into InfluxDB and use the built-in dashboard tools. Some users also visualize the CANedge2 data using Dash by Plotly. In short, the CANedge2 can integrate with practically any database and tool you'd like. The purpose of the InfluxDB/Grafana integration is to serve as an illustration of this - and a plug & play solution for getting started.
Your telematics dashboard is great for visualization, sharing of insights, reporting and quick high level CAN diagnostics.
In some cases, however, you may identify an event via the dashboard that you want to deep-dive on via other tools. Here, you can identify the start/stop period of the event and then easily fetch the raw log files. For example, you can quickly find the data via CANcloud - or you can set up a simple Python API script to download files for a specific device and period. With the CANedge Grafana Backend, you can also directly view which log files are behind the data you see through Annotations.
With the files locally on your PC, you can either use an MF4 converter to get the raw data into Vector ASC, PEAK TRC, CSV for use in other tools. Or, you can load the raw log files in the free asammdf CAN software for easy DBC decoding and graphical visualization.
The CANedge2 lets you configure the log file split size/time. If you e.g. set this to 10 seconds, a new log file is created every 10 seconds - and if the device is connected to your server, it will immediately uplod the file.
The two integration options then allow for near real-time streaming as follows:
- 1: CANedge Grafana Backend: As soon as data is available on your server backend, it can be parsed by the app. This makes it very simple to set up 'near real-time streaming' as you simply need to configure Grafana to show the last X minutes/hours and apply "auto refreshing" in the upper right corner of the dashboard
- 2: CANedge InfluxDB Writer: With this integration, you can set up an AWS Lambda trigger function to process log files immediately upon upload - writing the decoded data to InfluxDB. This way, data is immediately available in Grafana for visualization as well
One challenge with the InfluxDB integration is that the free InfluxDB Cloud version has a 'write restriction' of 1 MB/min. Thus, if you e.g. have multiple CANedge2 devices uploading data in parallel, you may hit this limit - and thus experience that requests are queued or time out. Thus, for AWS Lambda integrations, it's recommended to either self-host InfluxDB or use the paid cloud version. In contrast, the CANedge Grafana Backend integration does not risk 'bottle necks' on the data processing side, as this is not linked to the amount/timing of uploaded data, but instead to end user requests.
If you're new to terms like Grafana and Python, this solution may seem technical. However, we encourage you to try the get started guide. It is designed for non-technical readers and we detail every step.
Using our sample data, most users are able to set up a basic vehicle telematics dashboard in 15 minutes.
Yes, we generally offer free support for our customers, which includes getting started with your own fleet management dashboard.
We also provide step-by-step guides for self-hosting incl. how to install via docker. You can contact us regarding this as well, though we may refer you to the InfluxDB/Grafana support teams for technical questions.
The vehicle telematics dashboard solution is designed with OEM engineers in mind. Here, there is often a requirement of performing more advanced CAN bus data processing - for example decoding of multi-frame response data (J1939 TP, UDS). This can be integrated easily in the script since the data processing is done via Python - with open interfaces (e.g. pandas dataframes). To showcase how you can e.g. implement decoding of J1939 transport protocol data and UDS (Unified Diagnostic Services) data, you can see our api-examples library, where we provide Python classes and script examples. These can be integrated into the dashboard data processing script with minimal development effort.
Note that the CANedge can be configured with custom transmit lists. This is used e.g. for OBD2 logging (and thus creating OBD2 dashboards) - but it can also be extended to e.g. transport protocol requests, as the device can be configured to send flow control frames. For details see the CANedge documentation.
Yes, if you use the CANedge InfluxDB Writer, you can generally use the alert system in InfluxDB or Grafana to set alerts based on data thresholds being crossed. If you send DBC decoded diagonstic trouble code (DTC) data to InfluxDB, you can thus set up alert rules that trigger if e.g. a DTC flag changes. This can be useful as it allows you to quickly zoom in on specific issues - as well as optionally send slack/text/mail alerts upon specific DTC events. When an alert triggers, you can quickly fetch the relevant log files via your browser using the open source telematics platform CANcloud for further deep-dive analysis.
The CANedge Grafana Backend integration, in contrast, does not process all incoming data systematically - it only processes the data of interest to the dashboard users. As such, Grafana would not be well-suited for setting up alerts in this case, and instead we would recommend to e.g. use AWS Lambda functions or similar trigger scripts to analyze incoming data separately from the dashboard visualization.
Grafana will automatically "resample" your data in each panel to a frequency that ensures that the number of data points do not exceed the number of pixels in a panel chart.
As you zoom in on a chart, the dashboard will automatically resample the data until you reach the minimum resolution. Both integration methods allow you to zoom in to the underlying resolution of your data. For example, if you write 100 ms data to InfluxDB, you can set up Grafana to allow you to zoom into this level of detail.
Yes, both the backend/writer integrations allow you to set up everything for use with your CANedge1 data as well. For example, the CANedge Grafana Backend can be deployed as a local tool on your PC to directly visualize data from an inserted CANedge1 SD card. Similarly, you can process data from your CANedge1 units via the CANedge InfluxDB Writer and push it to InfluxDB.
With that said, the CANedge2 is of course well-suited for dashboard visualization since the data is automatically uploaded to your server - thus automating the entire workflow.
Yes, you can create in-dashboard links to your other CAN bus telematics dashboards. For example, you can set up a 'fleet dashboard' that displays data across multiple telematics devices - and switch to a 'device dashboard', where you can switch between specific devices via dropdowns.
For many automotive dashboard use cases, it's useful to add a GPS dashboard panel. With Grafana, you can thus hover specific timestamps in a chart panel and see the exact vehicle position during that time.
Some CAN bus applications provide GPS data via the CAN bus - for example some modern trucks and ships. In this case, the CANedge can record this data and you can decode it to physical values (assuming you have the decoding rules).
If GPS longitude/latitude data is not already available on the CAN bus, you can alternatively connect the CANmod.gps GPS-2-CAN module to the CANedge. This lets you log CAN data via channel 1 and GNSS/IMU data via channel 2 (powering the module via the 2nd port of the CANedge). You can also use this setup to log 2 x CAN channels by directly connecting the GPS-to-CAN module to your CAN application (the bit rate and CAN IDs are 100% configurable).
The CANedge2 lets you record CAN bus data - and if you have a sensor-2-CAN module, the simplest solution would be to log data from this sensor via CAN as well.
In some cases you may have a separate IoT sensor that is not CAN based, but sends data directly to e.g. a cloud server. This could be a GPS, temperature sensor or similar. In such a case, you can still combine the data if the sensor module provides an API interface to the stored data - ideally in Python. In this case, you could load the sensor data into a pandas dataframe and use the CANedge Python script to push the sensor data into InfluxDB as separate signals.
The CANedge lets you record both CAN FD and LIN bus data. The Python API used in the dashboard integration supports these, meaning that you can DBC decode your CAN FD data and LIN bus data to visualize the physical values - just as for the Classical CAN examples described in this article.
Ready to visualize your CAN data in browser dashboards?
Get your CANedge today!