#include <WiFi.h>
#include <HTTPClient.h>
#include "DHT.h"
// Cấu hình DHT
#define DHTPIN 4 // GPIO4 cho cảm biến DHT
#define DHTTYPE DHT11 // Hoặc DHT22 nếu bạn sử dụng cảm biến DHT22
DHT dht(DHTPIN, DHTTYPE);
// Cấu hình LED
#define LEDPIN 5 // GPIO5 cho đèn LED
// Thông tin WiFi
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// URL API server
String serverNameDHT = "https://ozfihfqi5i.sharedwithexpose.com/ptiot/dht_history.php";
String serverNameLED = "https://ozfihfqi5i.sharedwithexpose.com/ptiot/led_history.php";
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(LEDPIN, OUTPUT);
// Kết nối WiFi
Serial.print("Connecting to WiFi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nWiFi connected!");
delay(2000); // Thời gian khởi động cảm biến
}
void loop() {
// Đọc dữ liệu từ cảm biến DHT
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Kiểm tra dữ liệu hợp lệ
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return; // Không gửi dữ liệu nếu cảm biến trả về lỗi
}
Serial.printf("Temp: %.2f°C, Humidity: %.2f%%\n", temperature, humidity);
// Gửi dữ liệu cảm biến DHT lên server
HTTPClient httpDHT;
String urlDHT = serverNameDHT + "?temperature=" + String(temperature) + "&humidity=" + String(humidity);
httpDHT.begin(urlDHT);
int httpResponseCodeDHT = httpDHT.GET();
if (httpResponseCodeDHT > 0) {
Serial.println("DHT Data sent successfully!");
} else {
Serial.println("Error sending DHT data.");
}
httpDHT.end();
// Lấy trạng thái LED từ server và điều khiển
HTTPClient httpLED;
httpLED.begin(serverNameLED);
int httpResponseCodeLED = httpLED.GET();
if (httpResponseCodeLED > 0) {
String payload = httpLED.getString();
Serial.println("Server Response: " + payload);
if (payload.indexOf("ON") >= 0) {
digitalWrite(LEDPIN, HIGH); // Bật đèn
Serial.println("LED is ON");
} else if (payload.indexOf("OFF") >= 0) {
digitalWrite(LEDPIN, LOW); // Tắt đèn
Serial.println("LED is OFF");
}
} else {
Serial.println("Error getting LED state from server.");
}
httpLED.end();
delay(5000); // Gửi và kiểm tra mỗi 5 giây
}