top of page

Monitoring CAN Bus J1939 devices on a cloud platform using the nodeG5 edge IIoT Gateway
Collect, process and send CAN Bus J1939 data & GPS location to a cloud platform such as AWS IoT Core or Azure IoT Hub via cellular 4G/LTE.

Screen Shot 2023-11-10 at 2.32.20 pm.png
  • The nodeG5 gateway comes with 2 built-in CAN ports & GPS as a standard. The CAN bus is driven by a high-speed CAN transceiver that provides a robust & reliable interface with high noise immunity.

  • In this tutorial, we run through how to set up an OZEN Elektronik OE91C1700 J1939 CAN BUS ECU simulator to the nodeG5 edge IIoT gateway which translates the data to JSON strings for storing, processing (either with our integrated SQL functions, Python scripts or Docker) & sending to a designated cloud end point or server. 

  • AWS, Azure and Ubidots cloud clients are integrated. In this tutorial we will look at connecting our data to a designated AWS IoT Core Service.

1. Hardware Wiring
Screen Shot 2023-11-13 at 10.34.11 am.png

The above diagram shows the signal connection from the OZEN board to the CAN Port E of the nodeG5 using a shielded twisted pair cable. 

2. Ozen ECU simulator Configuration

By default the J1939 ECU Simulator CAN Bus communicates using 29-bit protocol and 250000 bps baud rate.

The baud rate set on the nodeG5 gateway CAN BUS later in step 3 must match that of your CAN device.

3. Connecting the ECU Simulator to the Gateway

3A. Configuring the data to be read


We will be using an iotasset.json file to map the required Parameter Group Number (PGN) data to be read by the gateway. This flexible method allows us to read from different brands of CAN J1939 devices. At the same time it also allows us to configure the gateway different the requirements set by different cloud platforms.

We have an example below to show you a step-by-step of how we configure our iotasset.json file to read engine temperature data from the OZEN device.

We begin by obtaining the below PGN info from the product's user manual.

PGN 1.png
PGN 2.png

Using the PGN info we can set the details below for the "engine coolant temperature" in the sample iotasset.json file.

  • “FEEE” is the PGN 0xFEEE (65262 decimal).

  • We put SPN=0 to reserve it for future development.

  • We set the response data to be located at start byte position 1 with a length of 1 byte. 

  • The gateway is able to apply a customer multiplier (x1 in this case) and offset (-40 in this case) to match the requirements of our AWS cloud service.

  • We name this data field as “EngineCoolantTemp".









































The same process can be mapped for other data such as 'engine rpm' and 'vehicle speed' (as above).

3B. Loading the iotasset.json to your nodeG5 gateway

Once you have configured your device configuration file, we can update to your nodeG5 gateway securely over the air. The gateway HTTPS connected web console must be accessible, if you do not have an Internet connection, you can follow the alternative steps here). 

Log into the nodeG5 (the default address is and enter in the user name and password. Go to the <Management> tab in the web configuration menu. Enable the SSH option (see below) and click the 'UPDATE' button to save your settings. Then reboot the gateway.

Screen Shot 2023-11-08 at 11.06.36 pm.png

Then log in again, go to the <IOT Hardware> menu to set the CAN bus mode to "J1939 mode" and register the polling configuration as required by the user. Click 'UPDATE' to save your settings. 

(Note that all other interfaces like Modbus and BLE can also run concurrently).

Screen Shot 2023-11-13 at 10.48.45 am.png

Next, click “Upload iotasset.txt” button and in the new window, use the 'CHOOSE FILE' tab to select the above prepared file from your local folder to to send over to nodeG5After the upload is successful you will need to close the page and log in again for security purpose. The user can also confirm the status of iotasset.txt file upload by clicking on Diagnostics::Check File.

Screen Shot 2020-07-07 at 11.22.16

We will now also configure the gateway's CAN BUS baud rate. Go to the <Port Settings> tab and enter the following settings below. Once you are done click the 'UPDATE' button to save your settings.

Screen Shot 2023-11-13 at 10.53.04 am.png

After these settings are updated, REBOOT the gateway. The user can then check the CAN BUS vehicle data collected (Diagnostics::JSON Data) or delete for testing.

4. Connecting to an AWS IoT Cloud Service

Now that the connectivity between the ECU Simulator and the nodeG5 gateway has been set, we will then look at getting the data onto a designated cloud service. We support an open customer software and 3rd party API (e.g. REST API for HTTP, HTTPS and MQTT) integration to connect to a chosen cloud data or dashboard service (or to use for on board data processing).

 Direct deployment on Azure, AWS IoT or Ubidots can also be done as these IoT clients have been integrated on the nodeG5 Gateway. For this project, we are going to showcase using AWS IoT
(note that an AWS
account is required to continue this tutorial).

4A. Create a new AWS IoT Thing

First log into your AWS IoT Management Console and create a Thing:

AWS IoT > Manage > Thing > Create

Next go to:

Secure > Certificates

Then download the 'Certificate' & 'Private Key File'.

Ensure the Certificate is "Active", otherwise activate it under ACTIONS in 

Things > Your Certificate > Security

AWS Certificate Download.png
4B. Update your IIoT Gateway
Create a new local folder and name it "AWS". 

Save the downloaded certificate files into this folder and rename them as the following:



Next zip the folder (ensure that you zip the entire folder and not just the files inside).

Then log into your web console and go to the <Management> tab.

Patch the zipped folder to the gateway using the UPDATE FIRMWARE button.

4C. Create a Security Policy for your Thing

In your AWS IoT Management Console go to:

Secure > Policies > Create

Create AWS Policy.png
At <Things>, select your new Thing then click on

Security > Certificates > Policies

Under <Actions>, choose to Attach a Policy:

Attach AWS Policy.png
4D. Configure your nodeG5 IIoT Gateway to send data to your AWS Account

Now, you are ready to configure your gateway to send AWS IoT endpoint to feed data to your AWS applications. In the web configuration menu, go to the <IoT Client> tab and configure your AWS client settings according as per your AWS end point and Thing settings. Then REBOOT your gateway.

Next go back to go your AWS IoT console and subscribe to the Topic to "Test" that data is being received.

Congratulations! You have succesfully sent your Modbus or CAN bus data to your AWS IoT endpoint and ready to, for example, push the data to a S3 bucket using a Rule in 'Act > Rules'.

The nodeG5 AWS IoT client side is built using AWS IoT Device SDK for Python and users are free to install, modify our device client codes for enhanced edge capabilities or other required functionalities.

See our guides below for connecting to other supported IoT platforms includes Azure IoT and Ubidots. Here is a sample dashboard from Ubidots. 


Guides to connect other Cloud Platforms

Connecting to Microsoft Azure IoT Hub

Connect to Ubidots IOT Platform

Have a question for us?
bottom of page