Friday 19 July 2019

DHT11 Web Server


#include <ESP8266WiFi.h>
#include "DHT.h"
// Uncomment one of the lines below for whatever DHT sensor type you're using!
#define DHTTYPE DHT11   // DHT 11
// Replace with your network details
const char* ssid = "IOT";
const char* password = "Sam123456";
// Web Server on port 80
WiFiServer server(80);
// DHT Sensor
const int DHTPin = D1;
// Initialize DHT sensor.
DHT dht(DHTPin, DHTTYPE);
// Temporary variables
static char celsiusTemp[7];
static char fahrenheitTemp[7];
static char humidityTemp[7];
// only runs once on boot
void setup() {
 // Initializing serial port for debugging purposes
 Serial.begin(115200);
 delay(10);
 dht.begin();
 // Connecting to WiFi network
 Serial.println();
 Serial.print("Connecting to ");
 Serial.println(ssid);
 WiFi.begin(ssid, password);
 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
 }
 Serial.println("");
 Serial.println("WiFi connected");
 // Starting the web server
 server.begin();
 Serial.println("Web server running. Waiting for the ESP IP...");
 delay(10000);
 // Printing the ESP IP address
 Serial.println(WiFi.localIP());
}
// runs over and over again
void loop() {
 // Listening for new clients
 WiFiClient client = server.available();
 if (client) {
   Serial.println("New client");
   // Boolean to locate when the http request ends
   boolean blank_line = true;
   while (client.connected()) {
     if (client.available()) {
       char c = client.read();
       if (c == '\n' && blank_line) {
           // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
           float h = dht.readHumidity();
           // Read temperature as Celsius (the default)
           float t = dht.readTemperature();
           // Read temperature as Fahrenheit (isFahrenheit = true)
           float f = dht.readTemperature(true);
           // Check if any reads failed and exit early (to try again).
           if (isnan(h) || isnan(t) || isnan(f)) {
             Serial.println("Failed to read from DHT sensor!");
             strcpy(celsiusTemp,"Failed");
             strcpy(fahrenheitTemp, "Failed");
             strcpy(humidityTemp, "Failed");        
           }
           else{
             // Computes temperature values in Celsius + Fahrenheit and Humidity
             float hic = dht.computeHeatIndex(t, h, false);      
             dtostrf(hic, 6, 2, celsiusTemp);            
             float hif = dht.computeHeatIndex(f, h);
             dtostrf(hif, 6, 2, fahrenheitTemp);        
             dtostrf(h, 6, 2, humidityTemp);
             // You can delete the following Serial.print's, it's just for debugging purposes
             Serial.print("Humidity: ");
             Serial.print(h);
             Serial.print(" %\t Temperature: ");
             Serial.print(t);
             Serial.print(" *C ");
             Serial.print(f);
             Serial.print(" *F\t Heat index: ");
             Serial.print(hic);
             Serial.print(" *C ");
             Serial.print(hif);
             Serial.print(" *F");
             Serial.print("Humidity: ");
             Serial.print(h);
             Serial.print(" %\t Temperature: ");
             Serial.print(t);
             Serial.print(" *C ");
             Serial.print(f);
             Serial.print(" *F\t Heat index: ");
             Serial.print(hic);
             Serial.print(" *C ");
             Serial.print(hif);
             Serial.println(" *F");
           }
           client.println("HTTP/1.1 200 OK");
           client.println("Content-Type: text/html");
           client.println("Connection: close");
           client.println();
           // your actual web page that displays temperature and humidity
           client.println("<!DOCTYPE HTML>");
           client.println("<html>");
           client.println("<head></head><body><h1>ESP8266 - Temperature and Humidity</h1><h3>Temperature in Celsius: ");
           client.println(celsiusTemp);
           client.println("*C</h3><h3>Temperature in Fahrenheit: ");
           client.println(fahrenheitTemp);
           client.println("*F</h3><h3>Humidity: ");
           client.println(humidityTemp);
           client.println("%</h3><h3>");
           client.println("</body></html>");    
           break;
       }
       if (c == '\n') {
         // when starts reading a new line
         blank_line = true;
       }
       else if (c != '\r') {
         // when finds a character on the current line
         blank_line = false;
       }
     }
   } 
   // closing the client connection
   delay(1);
   client.stop();
   Serial.println("Client disconnected.");
 }
}   

No comments:

Post a Comment