How to monitor a thermal sensor with a Raspberry Pi, Node-RED, InfluxDB and Grafana

Sylvain Nicolet
4 min readJun 17, 2020

--

Introduction

Hi, today we will see how to monitor values from a thermal sensor using a Raspberry Pi, Node-RED, InfluxDB and Grafana.

Equipments

  • Raspberry Pi
  • SD card
  • Keyboard
  • Mouse
  • Sensor DS18B20

Installation

The first part is to connect the sensor with the Raspberry Pi. We have to connect all cables referencing this diagram.

Raspberry Pi

The Raspberry Pi is a series of small single-board computers developed in the United Kingdom by the Raspberry Pi Foundation to promote teaching of basic computer science in schools and in developing countries. It now is widely used even in research projects, such as for weather monitoring because of its low cost and portability.

Then we have to install RaspbianOS on the Raspberry Pi. We just have to activate two options in the Raspberry Pi settings.

  • SSH : To access our Raspberry Pi with SSH.
  • Wire : To enable the wire interface for our sensor.

Configuration

The setup is ready. The next step is to check that our values ​​are correctly captured. It’s time to use Node-RED.

Node-RED

Node-RED is a programming tool for wiring together hardware devices, APIs and online services in new and interesting ways.

Node-RED is installed by default on RaspbianOS. To start it use this command (default port is 1880)

node-red-start

Go to “https://raspberry-ip/1880” to use the graphic interface. We have to install two palettes.

  • node-red-contrib-influxdb
  • node-red-contrib-sensor-ds18b20

The palette contains all of the nodes that are installed and available to use.

To display our values we will use two nodes.

  • node-red-contrib-sensor-ds18b20
  • debug

We have to configure the sensor node :

  • Sensor ID : ID of our sensor.
  • Periodic : Check to capture a value periodically. (We have to check it)
  • Period (secs) : Interval of captures in second. (For exemple every 5s)

Then we can link our two nodes and start a deploy. A measurement must be displayed every 5s.

Fine, now we want to send these measurements to a database.

InfluxDB

InfluxDB open source time series database, purpose-built by InfluxData for monitoring metrics and events, provides real-time visibility into stacks, sensors, and systems. Use InfluxDB to capture, analyze, and store millions of points per second and much more.

First we have to install InfluxDB

sudo apt install influxdb

Then we can start the service (default port is 8086)

influx -precision rfc3339

We want to create a new database called “TEMPERATURES

CREATE DATABASE TEMPERATURES

We can show all databases

SHOW DATABASES

In Node-RED we can add a node called “influxdb out” and configure it.

We have to add a new server :

  • Host : raspberry_ip
  • Port : 8086 (default port)
  • Database : Name of our database (TEMPERATURES)

Then we have to put a name for our measurements in the measurement field. (for exemple : temp)

Finally we can link our nodes and restart a deploy.

To check that the values ​​are correctly sent to the database go back to InfluxDB.

We can select our TEMPERATURES database.

USE TEMPERATURES

Display the list of measures.

SHOW MEASUREMENTS

The measurement “temp” must be displayed.
To display the values of “temp”.

SELECT * FROM temp

Values are in our InfluxDB database. We just have to monitor them.

Grafana

Grafana is a multi-platform open source analytics and interactive visualization web application. It provides charts, graphs, and alerts for the web when connected to supported data sources.

To install Grafana

wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list sudo apt-get update sudo apt-get install -y grafana

Then start the service (default port is 3000)

sudo service grafana-server start

We have to add a data source :

  • Name : Name of data source (for exemple : Temperatures)
  • Type : Type of database (influxDB)
  • URL : raspberry_ip:8086 (default port)
  • Databases : Name of our database (TEMPERATURES)

After that we can create a dashboard and add a new panel.

We can select “Temperatures” for the Data Source. Put the measure “temp” in the section “FROM”. After that we can adjust the settings according to the desired result.

Conclusion

We saw how to set up a small monitoring system using a Raspberry Pi and different services.

Have a nice day !

Syl

--

--