DHT22
Jump to navigation
Jump to search
Connects to specified network with static ip configuration and hosts a basic web page to show current sensor information, you can also query with /data to get a "|" delimeted plain text version.
// DHT code adapted from code written by ladyada, public domain
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include "DHT.h"
#define DHTPIN 5 // sensor data pin D1 == 5
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
const char* ssid = "nubnano";
const char* password = "1234567890";
const String esp-name = "blue-esp";
IPAddress ip(10, 10, 10, 222);
IPAddress gateway(10, 10, 10, 1);
IPAddress subnet(255, 255, 255, 0);
ESP8266WebServer server(80);
const int led = 13;
// DHT Params
DHT dht(DHTPIN, DHTTYPE);
unsigned long nextTime = 1;
float humidity = dht.readHumidity();
float celsius = dht.readTemperature();
float fahrenheit = dht.readTemperature(true);
void handleRoot() {
String response = "";
digitalWrite(led, 1);
response += "Humidity: " + String(humidity) + "%<br/>";
response += "Temperature: " + String(celsius) + "C/" + String(fahrenheit) + "F<br/>";
response += "Garden Mesh sensor node";
server.send(200, "text/html", response);
digitalWrite(led, 0);
}
void handleData() {
String response = "";
digitalWrite(led, 1);
response += String(humidity) + "|";
response += String(celsius) + "|" + String(fahrenheit);
server.send(200, "text/plain", response);
digitalWrite(led, 0);
}
void handleNotFound(){
digitalWrite(led, 1);
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET)?"GET":"POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i=0; i<server.args(); i++){
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
digitalWrite(led, 0);
}
void setup(void){
pinMode(led, OUTPUT);
digitalWrite(led, 0);
Serial.begin(115200);
WiFi.config(ip, gateway, subnet);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (MDNS.begin(esp-name)) {
Serial.println("MDNS responder started");
MDNS.addService("http", "tcp", 80);
}
server.on("/", handleRoot);
server.on("/data", handleData);
server.on("/inline", [](){
server.send(200, "text/plain", "this works as well");
});
server.onNotFound(handleNotFound);
server.begin();
Serial.println("HTTP server started");
Serial.println("Initialize DHT22 Sensor");
dht.begin();
}
void sampleDHT() {
humidity = dht.readHumidity();
celsius = dht.readTemperature();
fahrenheit = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(humidity) || isnan(celsius) || isnan(fahrenheit)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
nextTime = millis() + 2000;
}
void loop(void) {
server.handleClient();
if (millis() > nextTime)
sampleDHT();
}