ESP8266IoT Projects

DHT11 Temperature and Humidity Monitor with NodeMCU on ThingSpeak

This tutorial is all about DHT11 Temperature and Humidity Monitor with NodeMCU on the ThingSpeak server. It clarifies how we can use the ThingSpeak cloud service provider to log DHT11 Temperature and Humidity data using NodeMCU.

Here I am using Arduino IDE to program NodeMCU ESP8266. Actually, you will learn to configure NodeMCU ESP8266 board to monitor DHT11 sensor temperature and humidity values.

Also check these previous articles:

Components Required

You just need a NodeMCU ESP-12E Wi-Fi Development board and a humidity sensor DHT11 or DHT22. Besides this, it requires a breadboard and connecting wires.

S.NComponents NameDescriptionQuantityGet Products from Amazon
1NodeMCUESP8266 12E Board1
2DHT11 SensorDHT11 Temperature & Humidity Sensor1
3BreadboardSolderless Breadboard MIni1
4Jumper WiresConnecting Wires4
Components Required to monitor DHT11 data on ThingSpeak Server

DHT11 Temperature & Humidity Sensor:

The DHT11 is a primary, ultra-low-cost digital temperature, and humidity sensor. To measure the surrounding air DHT11 uses a capacitive humidity sensor and a thermistor. And then spits out a digital signal on the data pin (no analog input pins needed).

DHT11 Sensor pinouts

It’s quite simple to use but requires precise timing to capture data. The entire real drawback of this sensor is you can only get new data from it once every 2 seconds. So when using the DHT library, sensor readings are up to 2 seconds old.

Circuit Diagram & Connection:

The wiring of DHT11 sensor with NodeMCU is very simple. You can follow below schematic diagram to assemble the circuit.

Circuit Diagram of DHT11 Sensor and NodeMCU

Setting ThingSpeak & Getting API Key:

  • Create a new channel by clicking on the button. Enter the basic details of the channel. Then Scroll down and save the channel. You can follow the video guide below.
  • Then go to API keys, copy and paste this key in a separate file. You will require it again while programming.

Source Code/Program:

We have provided the program code for DHT11 Temperature and Humidity Monitor with NodeMCU on ThingSpeak below.

But, before that make sure you have the DHT library and ESP8266 Library are installed. If not, install them from the library manager on Arduino IDE.

#include <DHT.h>  // Including library for dht
#include <ESP8266WiFi.h>
String apiKey = "xxxxxxxxxxx";     //  Enter your Write API key from ThingSpeak
const char *ssid =  "xxxxxxxxxx";     // replace with your wifi ssid and wpa2 key
const char *pass =  "YYYYY";
const char* server = "";
#define DHTPIN 0          //pin where the dht11 is connected
WiFiClient client;
void setup() 
       Serial.println("Connecting to ");
       WiFi.begin(ssid, pass);
      while (WiFi.status() != WL_CONNECTED) 
      Serial.println("WiFi connected");
void loop() 
      float h = dht.readHumidity();
      float t = dht.readTemperature();
              if (isnan(h) || isnan(t)) 
                     Serial.println("Failed to read from DHT sensor!");
                         if (client.connect(server,80))   //   "" or
                             String postStr = apiKey;
                             postStr +="&field1=";
                             postStr += String(t);
                             postStr +="&field2=";
                             postStr += String(h);
                             postStr += "\r\n\r\n";
                             client.print("POST /update HTTP/1.1\n");
                             client.print("Connection: close\n");
                             client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
                             client.print("Content-Type: application/x-www-form-urlencoded\n");
                             client.print("Content-Length: ");
                             Serial.print("Temperature: ");
                             Serial.print(" degrees Celcius, Humidity: ");
                             Serial.println("%. Send to Thingspeak.");
  // thingspeak needs minimum 15 sec delay between updates
  • Copy this program and paste it on Arduino IDE.
  • Download the DHT11/DHT22 library from GitHub and include it to your library manager.
  • Select the NodeMCU ESP-12E board from the board manager.
  • Paste your API Key from ThingSpeak, which you created earlier. 
  • Edit the program to change the Wi-Fi SSID and password with your own.
  • Compile the code and upload it to the NodeMCU board

Monitor Temperature & Humidity Data on ThingSpeak

After successful upload of a program code. Open the Serial Monitor and you should be able to see the Temperature and Humidity data sent to the ThingSpeak IoT server.

DHT11 sensor data monitor on Serial Monitor

Similarly, on the Thingspeak Private View, you can see the Temperature and Humidity log data.

ThingSpeak server for Monitoring Temperature and Humidity


So, I hope you have learned to monitor DHT11 Temperature and Humidity data with NodeMCU on the ThingSpeak server. If you have any doubts and queries then, do let me know in the comment section below:

Recommended Readings

Related Articles

One Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button