Difference between revisions of "Modbus and Bluetooth data sending to Node-RED"

From Teltonika Networks Wiki
Line 137: Line 137:
  
 
In order for the broker to be available, add broker node to the flowchart. Now the flowchart should look like this:
 
In order for the broker to be available, add broker node to the flowchart. Now the flowchart should look like this:
 +
 +
[[File:Using node red broker.png|border|400px|class=tlt-border]]
 +
 +
====Adjusting Teltonika device configuration====

Revision as of 17:34, 12 January 2023

Introduction

The information in this page is updated in accordance with the RUTXXX_R_00_07_03 firmware version.

Node-RED is a flow-based programming tool developed by IBM Emerging Technology and written in Node.js. It provides a browser-based editor for wiring together hardware devices, APIs, and online services using a visual programming interface.

This article provides an extensive configuration example with details on how to use Node-RED with Teltonika Routers via MQTT and HTTP protocols.

Configuration overview and prerequisites

Before we begin, let's overview the configuration that we are attempting to achieve and the prerequisites that make it possible.

Prerequisites:

  • Teltonika RUTXXX router or TRBXXX gateway. We are going to use the RUTX11 in this example.
  • At least one end device (PC, Laptop, Tablet, Smartphone) to configure the devices.
  • Linux Virtual Machine to host Node-RED server.

There are a couple of different use cases with Node-RED and Teltonika devices and here are the connection topologies for these use cases.

Topology 1 – Modbus data to server using either Node-RED or Teltonika device as MQTT broker.

Topology 2 – Bluetooth data to server using Teltonika device as MQTT broker.

Topology 3 – MQTT gateway using either Node-RED or Teltonika device as MQTT broker.

Topology 4 – HTTP data to Node-RED server. Italic text

Node-RED installation and setup

We are going to set up Node-RED in Linux virtual machine. For Node-RED to work, you would need to install Node.js version 14.00 or higher, if you already have Node.js installed, verify Node.js version using this command:

node -v

If you do not have Node.js installed, run these commands to install it:

sudo apt install curl
curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash –
sudo apt-get install -y nodejs

Once we have Node.js installed, we can install Node-RED. Use this command to install:

sudo npm install -g –unsafe-perm node-red

Use the command node-red to start a local server. Here is how the terminal should look like if the server starts correctly: Server is running node red terminal.png


Once you have the local server running, use the local IP and port number in your internet browser. In this case, we are using 127.0.0.1:1880: Use server address in web browser.png

For MQTT usage, we are going to need MQTT-specific nodes. Use the side menu to navigate to Manage Palette section and install these nodes:

  • node-red-contrib-aedes
  • node-red-contrib-mqtt-broker

Manage palette and download these mqtt nodes.png

MQTT Gateway

Using Teltonika device as an MQTT broker

Router setup when using the router as a broker consists of two parts. First, we are going to set up a local broker. In order to do so, navigate to Services -> MQTT -> Broker and enable the broker.

Enable broker node red local broker on router.png

Once done, navigate to Services -> Modbus -> MQTT Gateway. Follow these steps for the configuration:

  • Enable the instance
  • Host: since we are using a local broker on the router – input 127.0.0.1
  • Leave everything else as default, or adjust according to your needs

MQTT gateway settings node red local router.png

Node-RED setup when using Teltonika device as an MQTT broker


For this example, we are going to need MQTT-in and MQTT-out nodes. We are not going to need a broker node for now, since we are using our router as an MQTT broker. In order to send request and get response messages, we are also going to need inject and debug nodes. Drag required nodes onto the screen and click on them to configure accordingly:

  • MQTT-out node - click on this node and then click on the pencil icon to configure Node-RED for Teltonika broker usage.

Click on the pencil nodered broker local.png

In the next screen configure settings accordingly:

  • Name: RUT_broker for this example
  • Server: 192.168.10.1 (Router's LAN IP address)
  • Port: Default port 1883
  • Leave everything else as default or adjust to your needs

Mqtt broker on our router settings.png


Now we are going to go back to MQTT-out node configuration and adjust settings as shown below:

  • Server: RUT_broker
  • Topic: request

Mqtt out request node red.png


  • MQTT-in node - configure settings as shown below:
  • Server: RUT_broker
  • Action: Subscribe to single topic
  • Topic: response
  • QoS: 0
  • Output: auto-detect

Mqtt in response node red.png


For this example, we will try to get router's temperature, so we are going to use payload in this format: 0 65432 0 192.168.10.1 502 5 1 3 6 2

Inject node red example.png

There is no need to configure debug node. Here is how the finished flowchart should look like:

Flowchart nodered local broker on router.png


In order to test the configuration, press Deploy in the top right corner:

Deploy button nodered.png

Now press on Inject node and look for incoming message on the right side of the screen:

Router temperature nodered.png

Here we can see that the router's temperature is 38.0 degrees.

Using Node-RED as an MQTT broker


Adjusting Node-RED configuration

If you would like to use Node-RED as a broker, there are a couple of changes needed to be made. Similarly as shown before, we are going to need to set up local broker like this:

Local broker settings nodered.png

In order for the broker to be available, add broker node to the flowchart. Now the flowchart should look like this:

Using node red broker.png

Adjusting Teltonika device configuration