#include <WiFi.h>
#include <DHT.h>
#define DHTPIN 5 // DHT data pin connected to ESP32 pin 5
#define DHTTYPE DHT11 // DHT11 (DHT Sensor Type)
#define SSID "6005" // WiFi Name
#define PASS "12345678" // Password
#define WRITE_API_KEY "JJ98J2RWY7I3S9HX" // ThingSpeak Write API key
#define READ_API_KEY "AT8KEV6YJXCZ35SP" // ThingSpeak Read API key (for private channels)
#define CHANNEL_ID "2713998" // ThingSpeak Channel ID
#define THINGSPEAK_URL "api.thingspeak.com"
DHT dht(DHTPIN, DHTTYPE); // Initialize the DHT sensor
void setup() {
Serial.begin(115200); // Start Serial Monitor
dht.begin(); // Initialize DHT sensor
WiFi.begin(SSID, PASS); // Connect to WiFi
Serial.print("Connecting to WiFi");
unsigned long startAttemptTime = millis();
// Check connection with a timeout
while (WiFi.status() != WL_CONNECTED && millis() - startAttemptTime < 10000) {
delay(500);
Serial.print(".");
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("\nConnected to WiFi");
} else {
Serial.println("\nFailed to connect to WiFi");
}
}
void sendDataToThingSpeak(float temp, float hum) {
// Prepare HTTP request URL for sending data
String url = "/update?api_key=" + String(WRITE_API_KEY) + "&field1=" + String(temp) +
"&field2=" + String(hum);
Serial.print("Sending data: ");
Serial.println(url);
// Send data to ThingSpeak
WiFiClient client;
if (client.connect(THINGSPEAK_URL, 80)) {
client.print("GET " + url + " HTTP/1.1\r\n");
client.print("Host: " THINGSPEAK_URL "\r\n");
client.print("User-Agent: ESP32Client\r\n");
client.print("Connection: close\r\n\r\n");
// Wait for a response from the server
while (client.available() == 0) {
delay(100);
}
// Read and display the response
while (client.available()) {
String line = client.readStringUntil('\n');
Serial.println(line);
}
} else {
Serial.println("Connection failed");
}
client.stop(); // Close the connection
}
void loop() {
// Read temperature and humidity
float temp = dht.readTemperature();
float hum = dht.readHumidity();
// Check if reading was successful
if (isnan(temp) || isnan(hum)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Send data to ThingSpeak
sendDataToThingSpeak(temp, hum);
// Wait for the server to process before the next request
delay(20000); // Wait 20 seconds between updates to avoid rate limits
}