Created
October 5, 2015 05:00
-
-
Save funkfinger/4b260699a1c22a31279a to your computer and use it in GitHub Desktop.
Huzzah 8266 / DHT22 example mashup
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <ESP8266WiFi.h> | |
#include <WiFiClient.h> | |
#include <ESP8266WebServer.h> | |
#include <ESP8266mDNS.h> | |
////////////////////////// | |
// DHT sensor stuff.... | |
////////////////////////// | |
#include "DHT.h" | |
#define DHTPIN 2 | |
#define DHTTYPE DHT22 | |
DHT dht(DHTPIN, DHTTYPE); | |
////////////////////////// | |
// debug mode | |
////////////////////////// | |
#define DEBUG false | |
////////////////////////// | |
// ESP8266 stuff.... | |
////////////////////////// | |
const char* ssid = "...................."; | |
const char* password = "...................."; | |
MDNSResponder mdns; | |
ESP8266WebServer server(80); | |
const int led = 0; | |
void handleRoot() { | |
////////////////////////// | |
// read DHT sensor | |
////////////////////////// | |
String response = ""; | |
char buf1[80]; | |
char buf2[16]; | |
float h = dht.readHumidity(); | |
float c = dht.readTemperature(); | |
float f = dht.readTemperature(true); | |
float hif = dht.computeHeatIndex(f, h); | |
float hic = dht.computeHeatIndex(c, h, false); | |
if (isnan(h) || isnan(f)) { | |
response = "Failed to read from DHT sensor!"; | |
} | |
else { | |
response += "{"; | |
// temp in fahrenheit | |
dtostrf(f, 5, 2, buf2); | |
sprintf(buf1, "\"tempF\": \"%s\",", buf2); | |
response += buf1; | |
// temp in celsius | |
dtostrf(c, 5, 2, buf2); | |
sprintf(buf1, "\"tempC\": \"%s\",", buf2); | |
response += buf1; | |
// humidity | |
dtostrf(h, 5, 2, buf2); | |
sprintf(buf1, "\"humidity\": \"%s\",", buf2); | |
response += buf1; | |
// heat index in fahrenheit | |
dtostrf(hif, 5, 2, buf2); | |
sprintf(buf1, "\"heatIndexF\": \"%s\",", buf2); | |
response += buf1; | |
// heat index in Ce;sius | |
dtostrf(hic, 5, 2, buf2); | |
sprintf(buf1, "\"heatIndexC\": \"%s\"", buf2); | |
response += buf1; | |
response += "}"; | |
if (DEBUG) doDebug(h, c, f, hic, hif); | |
} | |
digitalWrite(led, 1); | |
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 doDebug(float h, float t, float f, float hic, float hif) { | |
Serial.print("Humidity: "); | |
Serial.print(h); | |
Serial.print(" %\t"); | |
Serial.print("Temperature: "); | |
Serial.print(t); | |
Serial.print(" *C "); | |
Serial.print(f); | |
Serial.print(" *F\t"); | |
Serial.print("Heat index: "); | |
Serial.print(hic); | |
Serial.print(" *C "); | |
Serial.print(hif); | |
Serial.println(" *F"); | |
} | |
void setup(void) { | |
////////////////////////// | |
// start DHT sensor | |
////////////////////////// | |
dht.begin(); | |
pinMode(led, OUTPUT); | |
digitalWrite(led, 0); | |
if (DEBUG) Serial.begin(115200); | |
WiFi.begin(ssid, password); | |
if (DEBUG) Serial.println(""); | |
// Wait for connection | |
while (WiFi.status() != WL_CONNECTED) { | |
delay(500); | |
if (DEBUG) Serial.print("."); | |
} | |
if (DEBUG) { | |
Serial.println(""); | |
Serial.print("Connected to "); | |
Serial.println(ssid); | |
Serial.print("IP address: "); | |
Serial.println(WiFi.localIP()); | |
} | |
if (mdns.begin("esp8266", WiFi.localIP())) { | |
if (DEBUG) Serial.println("MDNS responder started"); | |
} | |
server.on("/", handleRoot); | |
server.onNotFound(handleNotFound); | |
server.begin(); | |
if (DEBUG) Serial.println("HTTP server started"); | |
} | |
void loop(void) { | |
server.handleClient(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment