Raspberry Pi + Node.js + Blynk App + DHT11/DHT22/AM2302

About: Blynk Co-Founder, Senior Engineer, Public Speaker, Dreamer and Doer

This time we will display some sensor values (DHT11 in example) on the Smartphone using Blynk App.
You will need:

  1. Raspberry Pi with internet connection
  2. Temperature and humidity sensors: DHT11 or DHT22 or AM2302
  3. Jumper wires

Please check my tutorial about getting Blynk and Node.JS running on Raspberry Pi and other single-board computers (BeagleBone, Intel Edison, Galileo, VoCore, OpenWrt... ):

After you get Blynk JavaScript library running, we can move on to reading sensor values.

Step 1: Install Sensor Libraries

For DHT11/DHT22/AM2302 sensors, you need to download and install:

Here are the commands I run on my Raspberry to do this (it may take some time to execute...):

wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.46.tar.gz
tar zxvf bcm2835-1.46.tar.gz
cd bcm2835-1.46
./configure
make
sudo make check
sudo make install
sudo npm install -g node-dht-sensor

Note: You may want to read the node-dht-sensor Readme, and run "First Example" ;)

Step 2: Scan/create Blynk Project

After logging in to the Blynk App, you can scan the QR code and get the project I have prepared for you (only Android, for now...).

Alternatively, you can create it manually:

  1. Create a new dashboard of type Generic, and send yourself an Auth Token.
  2. Add a Graph widget and bind it to V3
    Set range to 10..40,
    reading frequency to "PUSH"
  3. Add a Value Display widget and bind it to V4
  4. Press Run (triangle in the upper right corner)

Step 3: Blynk Script for DHT11

Wire Raspberry Pi and DHT11:

  • GND to GND
  • sensor Signal to gpio4
  • sensor VCC to 3.3v

On the board, create a new file (call it blynk-sensor-test.js):

var blynkLib = require('blynk-library');
var sensorLib = require('node-dht-sensor');

var AUTH = 'YOUR_AUTH_TOKEN';

// Setup Blynk
var blynk = new blynkLib.Blynk(AUTH);

// Setup sensor, exit if failed
var sensorType = 11; // 11 for DHT11, 22 for DHT22 and AM2302
var sensorPin  = 4;  // The GPIO pin number for sensor signal
if (!sensorLib.initialize(sensorType, sensorPin)) {
    console.warn('Failed to initialize sensor');
    process.exit(1);
}

// Automatically update sensor value every 2 seconds
setInterval(function() {
    var readout = sensorLib.read();
    blynk.virtualWrite(3, readout.temperature.toFixed(1));
    blynk.virtualWrite(4, readout.humidity.toFixed(1));
    
    console.log('Temperature:', readout.temperature.toFixed(1) + 'C');
    console.log('Humidity:   ', readout.humidity.toFixed(1)    + '%');
}, 2000);

Replace YOUR_AUTH_TOKEN with your token from the App.
You may also want to change sensorType and sensorPin.

Now run it:

sudo NODE_PATH=/usr/local/lib/node_modules node ./blynk-sensor-test.js

The output should look like this:

OnOff mode
Connecting to TCP: cloud.blynk.cc 8442
Connected
Temperature: 18.0C
Humidity:    26.0%
Temperature: 18.0C
Humidity:    26.0%

Note:

  • You need to run our script with sudo as the sensor library requires privileged access to the hardware
  • NODE_PATH=.. is set because Node.js may fail to locate global modules otherwise

Step 4: Enjoy Sensor Values in the Blynk App

Now, check the Blynk App on your smartphone, it should display a nice plot of temperature and current value of humidity. Congratulations! ;)

3 People Made This Project!

Recommendations

  • PCB Contest

    PCB Contest
  • Toys Contest

    Toys Contest
  • Big and Small Contest

    Big and Small Contest

15 Discussions

1
None
unmanagedtn

3 months ago

If you get "permission denied" isues with installing the node-dht-sensor module


--unsafe-perm flag should fix your issue according to: nodejs/node-gyp#454

sudo npm i -g --unsafe-perm node-dht-sensor

This is definitely not a good solution. But for now --unsafe-perm should do the trick

0
None
nickpagazani

2 years ago

By far one of the most frustrating things I've ever tried to do is to get my DHT22 sensor to display on anything! I've tried at least 4 different tutorials using different platforms. They all fail in one form or another. This one looked easy, but it also fails! I've installed, re-installed, read the readme's, whatever you can think of. Can you help? I'm running an RPi 2 Model B v1.1. Here's a screen shot of the result of running "the sudo npm install -g node-dht-sensor" command.

Screen Shot 2016-11-04 at 1.13.36 PM.png
1 reply
0
None
akr6

1 year ago

The script works perfect

but i didn't get any data only 0.0% shows

pi@raspberrypi:~ $ sudo NODE_PATH=/usr/local/lib/node_modules node ./blynk-sensor-test.js

OnOff mode

Connecting to: blynk-cloud.com 8441

SSL authorization...

Connected

Authorized

Temperature: 0.0C

Humidity: 0.0%

Temperature: 0.0C

Humidity: 0.0%

1 reply
0
None
tomf1990akr6

Reply 9 months ago

Did you manage to get it working because I cant get it to work at all

0
None
NickM332

11 months ago

Hello.

Would this work with the SenseHat? If so, how do i do it?

0
None
ealansilehto

1 year ago

Help! What does it mean at this point;

On the board, create a new file (call it blynk-sensor-test.js):

var blynkLib = require('blynk-library');
var sensorLib = require('node-dht-sensor');....etc


0
None
Thorstenk

1 year ago

The script works perfekt.

But when I use the pwm (over the app) for one LED on Pin18, I get the error:

"Illegal arguments for construction of _exports_Pwm"

and the script stops working

Can you help me?

0
None
IrshatA

2 years ago

Thanx. How add autostart to rc.local?

Снимок экрана 2016-10-21 в 20.59.59.png
0
None
Satish Ajodha

2 years ago

Excellent, thanks works like a charm!

0
None
SURAJS56losgat

Reply 2 years ago

The problem is with node-dht-sensor 0.0.11 , However 0.0.8 works fine.

So install the package as

sudo npm install -g node-dht-sensor@0.0.8 --unsafe-perm=true

and it should work as charm.

0
None
LoganB35

2 years ago

Hi,

I'm having trouble running any examples and tutorials I've tried, including this one. I keep getting the following output...

module.js:338
throw err;
^
Error: Cannot find module 'blynk-library'
at Function.Module._resolveFilename (module.js:336:15)
at Function.Module._load (module.js:278:25)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/usr/local/lib/node_modules/firstjs.js:1:75)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)

any ideas or tips? :/

1 reply
0
None
SURAJS56LoganB35

Reply 2 years ago

Follow the steps as in http://docs.blynk.cc/#hardware-set-ups-raspberry-pi

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install build-essential
sudo npm install -g npm
sudo npm install -g onoff
sudo npm install -g blynk-library

0
None
mrcoolkaran007

3 years ago

If i want to use the blynk local server, how do I enter the local server IP in

var blynk = new blynkLib.Blynk(AUTH);

I tried AUTH,"LocalServerIP" but its not working. On the blynk community page they have mentioned about Arduino but not RPI and nodeJS.