- Overview
- Prerequisites
- Create Converter templates
- Create Integration template
- Modify the Edge Root Rule chain for Downlinks
- Assign Integration to Edge
- Installing and running external UDP Integration
- Send uplink message
- Send the downlink message
- Next steps
Overview
UDP Integration allows data to be streamed to ThingsBoard Edge from devices that use a UDP transport protocol, and converts payloads from these devices to the ThingsBoard Edge format.
To learn more, review the integration diagram:
Prerequisites
In this tutorial, we will use:
- ThingsBoard Edge Professional Edition;
- UDP Integration: The integration that runs externally and is connected to the ThingsBoard Edge instance.
- echo command: To display a line of text, and redirect its output to the netcat (nc) utility.
- netcat (nc) utility: To establish TCP connections, receive data from there, and transmit it.
Let’s assume that we have a sensor which is sending current temperature and humidity readings. Our sensor device SN-001 publishes the temperature and humidity readings to UDP Integration on port 11560 to the machine where UDP Integration is running.
For demonstration purposes, we assume that our device is smart enough to send data in 3 different payload types:
- Text: The payload is
1
SN-001,default,temperature,25.7,humidity,69
- JSON: The payload is
1
2
3
4
5
6
7
8
[
{
"deviceName": "SN-001",
"deviceType": "default",
"temperature": 25.7,
"humidity": 69
}
]
- Binary: The binary payload is (in HEX string):
1
\x53\x4e\x2d\x30\x30\x31\x64\x65\x66\x61\x75\x6c\x74\x32\x35\x2e\x37\x36\x39
Here is the description of the bytes in this payload:
- 0-5 bytes: \x53\x4e\x2d\x30\x30\x3 - The device name. If we convert it to the text, it is SN-001.
- 6-12 bytes: \x64\x65\x66\x61\x75\x6c\x74 - The device type. If we convert it to the text, it is default.
- 13-16 bytes: \x32\x35\x2e\x37 - The temperature telemetry. If we convert it to the text, it is 25.7.
- 17-18 bytes: \x36\x39 - The humidity telemetry. If we convert it to text, it is 69.
- Hex: The payload is a hexadecimal string:
1
534e2d30303164656661756c7432352e373639
Here is the description of the bytes in this payload:
- 0-5 bytes: 534e2d303031 - The device name. If we convert it to the text, it is SN-001;
- 6-12 byte: 64656661756c74 - The device type. If we convert it to the text, it is default;
- 13-16 byte: 32352e37 - The temperature telemetry. If we convert it to the text, it is 25.7;
- 17-18 byte: 3639 - The humidity telemetry. If we convert it to the text, it is 69;
Based on your device capabilities and business cases, you can choose the payload type:
Create Converter templates
To create Converter and Integration templates, log in to the Cloud instance as Tenant administrator.
Uplink Converter template
Before creating the Integration template, create an Uplink and Downlink converter templates in Converters templates section.
The uplink data converter is needed to convert the incoming data from the device into the format required for display on ThingsBoard Edge.
- Log in to the Cloud and go to the Edge management > Converter templates section. To create a Converter template, click the “Add data converter” button (the + icon) and select the “Create new converter” option.
- In the “Add data converter” pop-up window:
- Name: Enter the name of the data converter.
- Type: Select the “Uplink” converter type from the drop-down menu.
- To view the events, enable Debug mode.
- function Decoder: Enter a script to parse and transform data.
- Click the “Add” button.
Select the device payload type to use for a decoder configuration:
Now copy & paste the following script to the Decoder function section:
The purpose of the decoder function is to parse the incoming data and metadata to a format that ThingsBoard can consume. deviceName and deviceType are required, while attributes and telemetry are optional. attributes and telemetry are flat key-value objects. Nested objects are not supported. |
Now copy & paste the following script to the Decoder function section:
The purpose of the decoder function is to parse the incoming data and metadata to a format that ThingsBoard can consume. deviceName and deviceType are required, while attributes and telemetry are optional. attributes and telemetry are flat key-value objects. Nested objects are not supported. |
Now copy & paste the following script to the Decoder function section:
The purpose of the decoder function is to parse the incoming data and metadata to a format that ThingsBoard can consume. deviceName and deviceType are required, while attributes and telemetry are optional. attributes and telemetry are flat key-value objects. Nested objects are not supported. |
Now copy & paste the following script to the Decoder function section:
The purpose of the decoder function is to parse the incoming data and metadata to a format that ThingsBoard can consume. deviceName and deviceType are required, while attributes and telemetry are optional. attributes and telemetry are flat key-value objects. Nested objects are not supported. |
You can change the function Decoder while creating the converter or after creating it:
- If the converter has already been created, click it to open the “Data converter details” window.
- Click the “Edit” buton (the ‘pencil’ icon) to edit the data converter.
- Copy the configuration example or create your own converter configuration and paste it into the “function Decoder” field.
- To save the changes, click the “Save” button (the ‘checkmark’ icon).
Downlink Converter template
Also create the Downlink Converter Template in the Converter Templates section:
- On the Edge management > Converter templates section page, click the “Add data converter” button (the + icon) to create another Converter template, and select the “Create new converter” option.
- In the “Add data converter” pop-up window:
- Name: Enter the name of the data converter.
- Type: Select the “Downlink” converter type from the drop-down menu.
- To view the events, enable Debug mode.
- function Decoder: Enter a script to parse and transform data.
- Click the “Add” button.
You can customize a downlink according to your configuration. Let’s consider an example where we send an attribute update message. An example of a downlink converter:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Encode downlink data from incoming Rule Engine message
// msg - JSON message payload downlink message json
// msgType - type of message, for ex. 'ATTRIBUTES_UPDATED', 'POST_TELEMETRY_REQUEST', etc.
// metadata - list of key-value pairs with additional data about the message
// integrationMetadata - list of key-value pairs with additional data defined in Integration executing this converter
var result = {
// downlink data content type: JSON, TEXT or BINARY (base64 format)
contentType: "JSON",
// downlink data
data: JSON.stringify(msg),
// Optional metadata object presented in key/value format
metadata: {
}
};
return result;
Create Integration template
Now that the Uplink and Downlink converter templates have been created, it is possible to create the Integration:
- Go to the Edge management > Integration templates section, click the “Add new integration” button (the + icon) and select the “Create new integration” option.
- In the “Add integration” pop-up window and fill out the “Basic settings” block:
- Integration type: Select the “UDP” integration type from the drop-down menu.
- Name: Enter the name of the integration.
- In the “Uplink data converter” block:
- Select the “Select existing” tab.
- Uplink data converter: Select the uplink data converter from the drop-down menu.
- In the “Downlink data converter” block:
- Select the “Select existing” tab.
- Downlink data converter: Select the uplink data converter from the drop-down menu.
- In the “Connection” block:
- Enter the Port and Size of the buffer for inbound socket (in KB) in the corresponding fields. By default, the UDP Integration will use the port 11560, but can be changed to any available port.
- Enter the Cache Size and Cache time to live in minutes in the corresponding fields.
- Enable broadcast - integration will accept broadcast address packets: Flag to indicate that integration accepts UDP packets sent to broadcast address.
- Integration key and Integration secret: Copy the values to use later in the configuration.
- Handler Configuration: Select the device payload type from the drop-down menu.
Select the device payload type for Handler Configuration:
Please select Handler Type as TEXT. To parse the payload properly, please make sure that next values are set:
Click “Add” to finish adding integration. |
Please select Handler Type as JSON. Click “Add” to finish adding integration. |
Please select Handler Type as BINARY. Click “Add” to finish adding integration. |
Please select Handler Type as HEX. Click “Add” to finish adding integration. |
To save the Integration, click the Add button.
Modify the Edge Root Rule chain for Downlinks
We can send a downlink message to the device from the Rule chain using the rule node. To send downlink via integration, modify the Edge Root Rule chain.
For example, you can add an integration downlink node and set the ‘Attributes Updated’ link to it. When the device attribute changes, the downlink message is sent to the integration.
Assign Integration to Edge
Once the converter and integration templates are created, we can assign the integration template to Edge.
- Go to the Edge management > Instances section and click the Manage edge integrations button.
- On the Integration page, click the "Assign to edge" button. In the "Assign the Integration to the Edge" pop-up window, select the integration from the drop-down menu and click the "Assign" button.
- Login to your ThingsBoard Edge instance and go to the Integrations center > Integrations section. Confirm the UDP integration on the Edge.



Installing and running external UDP Integration
Please refer to the Remote Integration guide and install the UDP Integration service locally or on a separate machine.
Please use the Integration key and Integration secret from the above section for the UDP Integration configuration.
Send uplink message
Once the ThingsBoard UDP Integration has been created, the UDP server starts, and then it waits for data from the devices.
Select the device payload type to send the uplink message:
The command to send a message to the UDP server that is running on localhost (127.0.0.1) will look like this:
|
The command to send a message to the UDP server that is running on localhost (127.0.0.1) will look like this:
|
The command to send a message to the UDP server that is running on localhost (127.0.0.1) will look like this:
|
The command to send a message to the UDP server that is running on localhost (127.0.0.1) will look like this:
|
To view the created device with data in the Device groups > All section on the Edge:
The received data can be viewed in the Uplink converter. In the ‘In’ and ‘Out’ blocks of the “Events” tab:
Send the downlink message
Now let’s check the downlink functionality.
Now we need to send another message to the UDP integration to see the downlink response. Please use the same command as before, but replace the parameter q1 with q120. With these changes, the nc utility will wait 120 seconds for the downlink message. In addition, please remove the w1 parameter.
After you’ll send uplink command, you have 120 seconds to add firmware shared attribute:
To make sure that the downlink message sent to the integration, you can check the “Events” tab of integration:
An example of a sent message and a response from ThingsBoard Edge in the terminal:
Next steps
-
Getting started guide - Provide quick overview of main ThingsBoard Edge features. Designed to be completed in 15-30 minutes:
-
Installation guides - Learn how to setup ThingsBoard Edge on various available operating systems and connect to ThingsBoard Server.
-
Edge Rule Engine:
-
Rule Chain Templates - Learn how to use ThingsBoard Edge Rule Chain Templates.
-
Provision Rule Chains from cloud to edge - Learn how to provision edge rule chains from cloud to edge.
-
- Security:
- gRPC over SSL/TLS - Learn how to configure gRPC over SSL/TLS for communication between edge and cloud.
-
Features:
-
Edge Status - Learn about Edge Status page on ThingsBoard Edge.
-
Cloud Events - Learn about Cloud Events page on ThingsBoard Edge.
-
-
Use cases:
-
Manage alarms and RPC requests on edge devices - This guide will show how to generate local alarms on the edge and send RPC requests to devices connected to edge:
-
Data filtering and traffic reduce - This guide will show how to send to cloud from edge only filterd amount of device data:
-
- Roadmap - ThingsBoard Edge roadmap.