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!
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
FREE & OPEN
Zero subscription fees. 100+ plugins. Huge community. Free support
One of the ways you can visualize your data is via Grafana:
- Setup InfluxDB + Grafana (e.g. free clouds in <5 min)
- Setup Python script with details (S3, InfluxDB, DBC path)
- Automate script execution (Task Scheduler, cron, Lambda)
- Build & share your custom Grafana dashboard(s)
Try it out yourself via the below step-by-step guide:Get started Contact us
See the FAQ for more on S3, InfluxDB & Grafana.
Your CANedge2 periodically uploads MF4 data to your AWS S3 server. You host the Python script on your PC (or an AWS EC2 instance) and set it to be executed every 10 minutes. The script identifies new log files, DBC decode them and push the physical values into the InfluxDB database. In Grafana you link to your InfluxDB database, which lets you display the data in custom panels.
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 API) and popular data structures (e.g. pandas dataframes). This enables easy and fleixble integration with practically any database injection APIs.
In this article 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.
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.
Easily set up your own dashboard in minutes
Want to get started fast? Setup & link free InfluxDB and Grafana cloud accounts in < 5 minutes. Run the data processing script - and you're ready!
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.
Set alerts to automate your data monitoring
Visually define alert thresholds to trigger e.g. an SMS, e-mail or slack notification 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 Python data processing script, InfluxDB and Grafana. Your engineers can be get access to the dashboards as admins, editors or viewers.
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 Grafana and InfluxDB 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."learn more
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), DBC decode it using your DBC file - and push the output into your InfluxDB database. 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.
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
In case you want the simplest possible solution, you could setup an AWS S3 server and use free InfluxDB and Grafana cloud accounts. This way you only pay for your AWS S3 server (<1 EUR per device per month).
The free Grafana/InfluxDB clouds have some restrictions, though for most practical use cases you use this setup for 1-10 devices.
The Grafana free cloud restrictions are light: You can have 3 users and 5 dashboards. The InfluxDB free cloud, however, is limited to 5 MB per 5 minutes - which caps the density/volume of data you can write to InfluxDB in the free version.
Scaling up to larger volumes
If you need to scale up your solution (e.g. as part of a fleet telematics roll-out) you can go for the paid cloud version of InfluxDB (and optionally Grafana). Or, you can switch to self-hosting your solution on e.g. an EC2 instance or your own PC/server/Pi. If you use the paid InfluxDB cloud, your cost/device/month will most likely be around 1-3 EUR.
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 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.
You can easily use other dashboard tools to visualize your data.
For example, you can skip the step of linking Grafana to InfluxDB and instead simply use the built-in dashboard tool available natively in InfluxDB.
You can also modify our open source Python code to push your data to another database, rather than InfluxDB. For example, you can write data to Microsoft SQL for visualization in Microsoft Power BI. Or, you could setup telematics dashboards using Dash by plotly. Since the Python script is designed around the use of standard pandas dataframes, it's quite easy to integrate with other database APIs.
The update frequency of your dashboard depends on two main factors: 1) The frequency at which the CANedge2 uploads data to your server and 2) the frequency at the Python script is set to be executed.
As for the CANedge2, you can configure the device to split log files e.g. every 1 minute, which results in near real-time uploads when the device has access to the S3 server. However, it will cause overhead and we recommend 10+ min splits for most automotive telematics use cases. As for the Python script execution, you can also set this to your preferred rate, though we recommend rates of 10+ minutes.
If you're new to terms like InfluxDB, 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, generally you can use the alert system in 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.
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. By default, your data will be resampled to 1 second resolution. However, you can change this to e.g. 1 millisecond (or no resampling).
Yes, our step-by-step guide takes outset in pushing local sample data into your InfluxDB database. As such, you can of course use this method to push data from one or more CANedge1 devices by extracting the data from the SD cards. While it is not automated like the CANedge2 workflow, it may still be a useful way of sharing data in your team or as reports to management.
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!