#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"
#define PASS "12345678"
//
WiFi Name
// 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);
void setup() {
Serial.begin(115200);
//
// Initialize the DHT sensor
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 readDataFromThingSpeak() {
// Prepare HTTP request URL for reading data
String url = "/channels/" + String(CHANNEL_ID) + "/fields/1.json?api_key=" +
String(READ_API_KEY) + "&results=1";
Serial.print("Requesting data from ThingSpeak: ");
Serial.println(url);
// Read data from 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);
}
// Parse and display the response
String response = "";
while (client.available()) {
response += client.readStringUntil('\n');
}
Serial.println("Response from ThingSpeak:");
Serial.println(response);
// Optional: Parse JSON response if needed
// You can use the ArduinoJson library for more complex JSON parsing
} else {
Serial.println("Failed to connect to ThingSpeak");
}
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;
}
// Read data from ThingSpeak
readDataFromThingSpeak();
// Wait before the next cycle
delay(40000); // Total delay of 60 seconds
}