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

64K9235

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

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! ;)

19 Comments

My problem is that after 1-2 days blynk says „device are offline“ and i have no solition for this problem
The 2000 of the end of the blynk code is it the 2 seconds interval?
I got this :
module.js:549
throw err;
^
Error: Cannot find module '/home/pi/blynk-sensor-test.js'
at Function.Module._resolveFilename (module.js:547:15)
at Function.Module._load (module.js:474:25)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:188:16)
at bootstrap_node.js:609:3

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

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.

Mine fails also in the same manner. No fix in two years.

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%

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

Hello.

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

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


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?

Thanx. How add autostart to rc.local?

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.

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? :/

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

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.