#include <WiFi.h>
#include <ESPAsyncWebServer.h>
#include <DHT.h>
char index_html[] = R"rawliteral(
<!DOCTYPE html>
<html lang="uk">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=2.0">
<title>DHT11 ESP32 AsyncServer</title>
<style>
body { font-family: Arial, sans-serif; text-align: center; background: #121212; color: #fff; margin-top: 50px; }
</style>
</head>
<body>
<h1>DHT11 ESPAsyncWebServer</h1>
<br>Temperature: <span id="temp">--</span>°C
<br>Humidity: <span id="humi">--</span>%
<script>
setInterval(() => { fetch('/data') .then(r => r.json()) .then(d => Object.keys(d).forEach(k => { let el = document.getElementById(k); if (el) el.textContent = d[k] || ''; }) ) .catch(e => console.error(e)); }, 1000);
</script>
</body>
</html>
)rawliteral";
#define DHTPIN 13
DHT dht(DHTPIN, DHT11);
AsyncWebServer server(80);
void setup() {
Serial.begin(115200);
dht.begin();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.print("\nWiFi connected!\nhttps://");
Serial.println(WiFi.localIP());
server.on("/data", HTTP_GET, [](AsyncWebServerRequest *request){
String temp = String(dht.readTemperature());
String hum = String(dht.readHumidity());
String json = "{\"temp\": " + temp + ", \"humi\": " + hum + "}";
request->send(200, "application/json", json);
});
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/plain", index_html);
});
server.begin();
}
void loop() {}