AM2302 (DTH22) on Adafruit Feather HUZZAH reporting via Wi-Fi (step 4)

Next we’ll connect the Feather to Wi-Fi and report the temperature and humidity data to a cloud MySQL database server through a web page.

Using the MAC address for the Feather you found in step 2, register the Feather on Devicenet.

Paste the is sketch and make necessary edits (indicated with //TODO):


// https://github.com/openhomeautomation/esp8266-cloud/blob/master/cloud_data_logger/cloud_data_logger.ino
// Import required libraries
#include "ESP8266WiFi.h"
#include "DHT.h"

// WiFi parameters
const char* ssid = "put your SSID between these quotes"; // TODO
const char* password = "put your wi-fi password between these quotes"; // TODO

// Data Pin
#define DHTPIN 2 // Ensure the data wire (yellow) for the DHT22 is on pin 2

// Use DHT22 sensor
#define DHTTYPE DHT22 //for AM2302

// Initialize DHT sensor
DHT dht(DHTPIN, DHTTYPE);

// Host
const char* host = "put the web host between these quotes"; // TODO

void setup() {

// Start Serial
Serial.begin(115200);
delay(10);

// Init DHT
dht.begin();

// We start by connecting to a WiFi network
Serial.println();
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");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}

void loop() {

Serial.print("Connecting to ");
Serial.println(host);

// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}

// Reading temperature and humidity
float h = dht.readHumidity();
// Read temperature as Celsius
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);

// This will send the request to the server
// TODO
// /iot?sensor=0 <-- this should be changed to reflect the page and sensor ID
// it is passing sensor, temp, and humidity as URL GET parameters
// the iot page is parsing these parameters into variables and writing them to the database
client.print(String("GET /iot?sensor=0&temp=") + String(f) + "&humidity=" + String(h) + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
delay(10);

Serial.print("data written to db");

Serial.println();
Serial.println("closing connection");

// Repeat every 15 minutes
delay(900000); // TODO - change this to reflect how frequently you want the data written to the database

}

At this point, you should visit the website, click on your sensor ID and see data on the web site. It sends the first data as soon as it’s powered on and (in this case) every ~15 minutes.

You can open the serial monitor (magnifying glass), set the baud to 115200, and see the serial print output. Press the reset button on your Feather. Each time it is reset it will write to the serial monitor and the database.