#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <uri/UriBraces.h>
#include <DHTesp.h>
#define WIFI_SSID "Pham Van Tien"
#define WIFI_PASSWORD "emkhongbiet"
#define WIFI_CHANNEL 6
#define DHT_PIN 15
bool isCelsius = true;
DHTesp dhtSensor;
WebServer server(80);
void sendHtml() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float tem = data.temperature;
float hum = data.humidity;
float temF = (tem * 9.0 / 5.0) + 32.0;
String temperatureUnit = isCelsius ? "℃" : "℉";
String response = R"(
<!DOCTYPE html><html>
<head>
<title>ESP32 Web Server Demo</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
html { font-family: sans-serif; text-align: center; }
body { display: inline-flex; flex-direction: column; }
h1 { margin-bottom: 1.2em; }
h2 { margin: 0; }
div { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: auto auto; grid-auto-flow: column; grid-gap: 1em; }
.btn { background-color: #5B5; border: none; color: #fff; padding: 0.5em 1em;
font-size: 2em; text-decoration: none }
.btn.OFF { background-color: #333; }
</style>
</head>
<body>
<h1>ESP32 Web Server</h1>
<p>Temperature: <span id="temp">__TEMP__</span> __TEMP_UNIT__;</p>
<p>Humidity: <span id="hum">__HUM__</span> %</p>
<form action="/switch" method="get">
<button type="submit">Switch Unit</button>
</form>
</body>
</html>
)";
response.replace("__TEMP__", isCelsius ? String(tem) : String(temF));
response.replace("__TEMP_UNIT__", temperatureUnit);
response.replace("__HUM__", String(hum));
server.send(200, "text/html", response);
}
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT11);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD, WIFI_CHANNEL);
Serial.print("Connecting to WiFi ");
Serial.print(WIFI_SSID);
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println("Connected!");
Serial.println("IP address: " + WiFi.localIP());
server.on("/", sendHtml);
server.on("/switch", []() {
isCelsius = !isCelsius; // Đảo trạng thái chuyển đổi
sendHtml(); // Gửi lại trang HTML để cập nhật trạng thái chuyển đổi
});
server.begin();
Serial.println("HTTP server started");
}
void loop() {
server.handleClient();
delay(2000);
}