Temperature sensor data visualisation with Node-RED
Overview
This lesson assumes that a temperature sensor is sending data to The Things Network. In this lesson we will use the MQTT protocol to subscribe to data transmission events. We will create a program in Node-RED to subscribe to the data transmissions and to graph the data coming from the sensor using the in-built Dashboard function in Node-RED.
Learning Objectives
- Learn how to subscribe to a MQTT using the Node-RED MQTT-in node
- Learn how to extract specific sensor data using the Node-RED function node.
- Learn how to create a Dashboard in Node-RED to monitor live data.
Subscribe to MQTT
Open Node-RED
- Click on the Raspberry Pi main drop down menu.
- Select Programming > Node-RED
- Node-RED will automatically open the Terminal on the Raspberry Pi.
- It takes approximately ten seconds for Node-RED to initialise itself.
- To actually use Node-RED you need to open the web browser on the Raspberry Pi.
- Click on the default web browser.
- In the search bar enter localhost:1880
- Localhost is the address of the local or host machine.
- In this example the host address is 192.168.1.168, but your computer will have a different address.
- The number at the end of the URL (1880) is the port number for the Node-RED application.
- Different ports are assigned to different applications using HTTP protocols.
- Note - if you are using UFW (uncomplicated firewall) you may need to open this port otherwise Node-RED will not work.
Subscribing to MQTT
- To subscribe to MQTT we need the 'mqtt in node.
- Find the mqtt in node and drag it onto the Flow 1
- You will notice that the node has both a blue circle and a red triangle.
- The red triangle indicates that the node requires further configuration before it will work
Configuring the mqtt in node
- Double click on the mqtt in node.
- In Properties > Server > select Add new mqtt-broker
- Click on the Edit button to the right - which looks like a pencil
- Enter the following details:
- Properties > Name > pycom-temperature-1
- Connection > Server > au1.cloud.thethings.network
- Connection > Port > 1883
- Leave all other details as shown in the example below.
- Click on the Security tab
- The Username is whi-seedling-1-pycom@ttn
- The Password is NNSXS.Z625CQKKEWAPSQK467JRSAFFYINH7LTHSUC5CYY.MHEVWHKKLPWXQWESSCALZFVHA6EKUNISQH4IVHKAOXYZRMOH6D7A
- If copying these fields from mediawiki or another computer use right mouse button click copy
- Click on the red Add button to commit the changes.
- You will be asked to complete some final configuration settings.
- Update the following fields:
- Topic # - The hash symbol means subscribe to all topics
- QoS 0 - quality of service. A value of zero equates to a low quality. Data losses are acceptable.
- Output a Parsed JSON Object - JSON format output for all data
- Name pycom-temperature-1
- Then click on Done to commit all the edits.
- The finished mqtt in node should now appear in the main flow window.
- It will still have a blue circle because the flow has not been Deployed.
Add a Debug Node
- Before we Deploy this first flow we will need to add a Debug node.
- Drag a Debug node from the pallet and connect it to the output of the mqtt in node (pycom-temperature-1).
Set the Debug Window
- The Debug node will show us all the JSON data output coming from mqtt in node.
- To see the Debug output click on the Debug messages tab.
- Click on the Deploy button to make the flow active.
- Message should appear indicating that the flow has been successfully Deployed.
- The mqtt in node will also show a green connected status message underneath the node.
Receiving mqtt data
- When data arrives from the temperature sensor (approximately every 30 minutes) it will appear in the Debug window on the right of the screen.
- The data is presented in a compacted form.
- By clicking on the drop down arrows in the message the different sections of the message can be expanded.
- Expand the uplink_message and the decoded_payload to see the sensor data.
Extracting specific sensor data
- We can extract specific sensor data using the Node-RED function node.
Obtaining battery data using the function node
- In this example we will prepare a function node to extract the battery data.
- Drag a function node into the Edit window.
- Then drag a Debug node and wire up all nodes as shown.
Editing the Function node
- Double click on the Function node to bring up the edit window.
- Enter the following code to extract just the battery data.
- Then click on Done to commit the edits.
- The code has been reproduced below.
var battery; // battery voltage data
var humidity; // humidity data from within the sensor housing
var soil_temp; // soil temperature data
var temperature; // temperature data from within the sensor housing
battery = msg.payload.uplink_message.decoded_payload.bat;
humidity = msg.payload.uplink_message.decoded_payload.humid;
soil_temp = msg.payload.uplink_message.decoded_payload.soil;
temperature = msg.payload.uplink_message.decoded_payload.temp;
msg.payload = battery; //only the battery voltage data
return msg;
- The complete nodes should appear as in the image below.
- Click on Deploy to make the flow active.
- Click on the Clear log button to clear the Debug window.
- When new messages arrive they can be more clearly seen in the Debug window.
- In this case the voltage of the battery is 4 (4.00 V).


