Introduction: 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:
- Raspberry Pi with internet connection
- Temperature and humidity sensors: DHT11 or DHT22 or AM2302
- 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:
node-dht-sensor npm package
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:
- Create a new dashboard of type Generic, and send yourself an Auth Token.
- Add a Graph widget and bind it to V3
Set range to 10..40,
reading frequency to "PUSH" - Add a Value Display widget and bind it to V4
- 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
2 years ago
hi,how to fix
Connecting to: blynk-cloud.com 443
SSL authorization...
SSL not authorized
3 years ago
My problem is that after 1-2 days blynk says „device are offline“ and i have no solition for this problem
3 years ago
The 2000 of the end of the blynk code is it the 2 seconds interval?
3 years ago
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
5 years 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
This is definitely not a good solution. But for now --unsafe-perm should do the trick
7 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.
Reply 5 years ago
Mine fails also in the same manner. No fix in two years.
6 years 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%
Reply 5 years ago
Did you manage to get it working because I cant get it to work at all
5 years ago
Hello.
Would this work with the SenseHat? If so, how do i do it?
6 years ago
Help! What does it mean at this point;
On the board, create a new file (call it blynk-sensor-test.js):
6 years 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?
7 years ago
Thanx. How add autostart to rc.local?
7 years ago
Excellent, thanks works like a charm!
7 years ago
Hi
After following
https://www.instructables.com/id/Blynk-JavaScript-i...
i get
module.js:339
throw err;
^
Error: Cannot find module 'node-dht-sensor'
please help what do I do to fix this.
Pi2
Reply 7 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.
7 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? :/
Reply 7 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
8 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.