Temperature sensor data visualisation with Node-RED

From Sensors in Schools
Jump to navigation Jump to search

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.

900pc

  • 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.

Obtaining data from the temperature sensor