7주차_참고 : 텍스트 기반 ESP32 DHT11 웹서버 코드 - dhryu60/SmartDevice_2025-1 GitHub Wiki

텍스트 기반 버전

  • 웹 브라우저로 접속 시 HTML 없이 순수 텍스트만 출력되도록 변경되었으며,
    루트 경로(/)를 열면 온도와 습도 값을 텍스트로 확인할 수 있고,
    별도로 /temperature, /humidity 경로로도 각각 요청할 수 있음

✅ 텍스트 기반 ESP32 + DHT11 웹서버 코드

#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebSrv.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>

// Wi-Fi 정보 입력
const char* ssid = "네트워크_SSID";
const char* password = "네트워크_비밀번호";

// DHT 센서 설정
#define DHTPIN 18
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

// 웹서버 객체 생성
AsyncWebServer server(80);

// 온도 읽기 함수
String readDHTTemperature() {
  float t = dht.readTemperature();
  if (isnan(t)) {
    Serial.println("온도 읽기 실패");
    return "--";
  } else {
    Serial.print("온도: ");
    Serial.println(t);
    return String(t);
  }
}

// 습도 읽기 함수
String readDHTHumidity() {
  float h = dht.readHumidity();
  if (isnan(h)) {
    Serial.println("습도 읽기 실패");
    return "--";
  } else {
    Serial.print("습도: ");
    Serial.println(h);
    return String(h);
  }
}

void setup() {
  Serial.begin(115200);
  dht.begin();

  // Wi-Fi 연결
  Serial.print("Wi-Fi 연결 중: ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println("\nWi-Fi 연결됨. IP 주소:");
  Serial.println(WiFi.localIP());

  // 루트 페이지: 텍스트로 온습도 정보 출력
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    String msg = "=== ESP32 온습도 정보 ===\n";
    msg += "온도: " + readDHTTemperature() + " °C\n";
    msg += "습도: " + readDHTHumidity() + " %\n";
    msg += "\n개별 확인: /temperature 또는 /humidity";
    request->send(200, "text/plain", msg);
  });

  // 온도 전용 요청 처리
  server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(200, "text/plain", readDHTTemperature());
  });

  // 습도 전용 요청 처리
  server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(200, "text/plain", readDHTHumidity());
  });

  server.begin();
}

void loop() {
  // 비동기 웹서버: loop 비워둠
}

🧪 실습 방법

  1. ESP32와 DHT11 연결
  2. 스마트폰 핫스팟이나 공유기에 연결
  3. 시리얼 모니터로 IP 주소 확인
  4. 브라우저에서 접속
주소 기능
http://<ESP32_IP>/ 텍스트 기반 온도/습도 확인
http://<ESP32_IP>/temperature 온도만 표시
http://<ESP32_IP>/humidity 습도만 표시

✅ 장점

  • HTML, CSS 없이도 작동 가능
  • 모바일 브라우저나 커맨드라인(curl)으로 쉽게 테스트 가능
  • 메모리 사용량이 적어 더 안정적

⚠️ **GitHub.com Fallback** ⚠️