제작 가이드
ESPHome 설치와 첫 ESP32 센서 장치 만들기
ESPHome은 YAML 설정만으로 ESP32나 ESP8266 센서 장치를 만들 수 있게 해주는 도구입니다. Arduino IDE처럼 코드를 직접 길게 작성하기보다, 센서와 통신 방식을 설정 파일에 적고 펌웨어를 생성하는 방식입니다.

ESPHome이 뭔가
ESPHome은 작은 IoT 장치를 빠르게 만들 때 특히 편합니다. 온습도 센서, 릴레이, 스위치, 조도 센서처럼 정해진 부품을 연결하고 값을 읽는 작업은 C++ 코드를 직접 작성하지 않아도 됩니다. 설정 파일에 어떤 보드와 센서를 쓰는지 적으면 ESPHome이 펌웨어를 만들어 줍니다.
Arduino IDE
직접 코드를 작성하고 세밀하게 제어할 때 좋습니다. 특수한 동작, 복잡한 로직, 직접 만든 통신 프로토콜에는 Arduino IDE가 유리합니다.
ESPHome
센서 값 읽기, 릴레이 제어, API, OTA, MQTT 연동처럼 반복되는 IoT 장치 구성에 좋습니다.
설치 방식 선택
- Home Assistant Add-on: Home Assistant를 이미 쓴다면 가장 편합니다.
- ESPHome Dashboard: PC에서 ESPHome을 실행하고 웹 화면에서 장치를 관리하는 방식입니다.
- Command Line: 터미널에서
esphome run device.yaml처럼 실행합니다. 서버나 개발 환경에 익숙한 사람에게 좋습니다. - ESPHome Web: 브라우저로 USB 연결 장치에 초기 펌웨어를 올릴 때 유용합니다.
처음 배우는 목적이라면 Home Assistant Add-on 또는 Dashboard 방식으로 시작하는 편이 좋습니다. 현장 설치용 장치는 최초 1회 USB 업로드 후 OTA로 업데이트하는 흐름을 목표로 잡으면 됩니다.
준비물
- ESP32 개발 보드 또는 ESP8266 개발 보드
- USB 데이터 케이블
- Wi-Fi 이름과 암호
- DHT22, BME280 같은 센서 하나
- Chrome 또는 Edge 브라우저
- 선택: Home Assistant 또는 MQTT 브로커
첫 장치 만들기
- ESPHome Dashboard에서 New Device를 선택합니다.
- 장치 이름을
room-climate-01처럼 위치와 용도를 알 수 있게 정합니다. - 보드는 처음에는 ESP32 Dev Module 또는 실제 사용하는 ESP8266 보드에 가까운 항목을 선택합니다.
- Wi-Fi 이름과 암호를 입력합니다.
- 최초 업로드는 USB로 진행합니다. 이후부터는 같은 Wi-Fi 안에서 OTA 업데이트가 가능합니다.
DHT22 센서 YAML 예제
아래 예제는 ESP32의 GPIO4에 DHT22를 연결한 기준입니다. 보드와 실제 배선에 맞게 board, pin, Wi-Fi 값을 바꿉니다.
esphome: name: room-climate-01 friendly_name: Room Climate 01esp32: board: esp32dev framework: type: arduinowifi: ssid: "YOUR_WIFI_NAME" password: "YOUR_WIFI_PASSWORD"logger:api:ota: platform: esphomesensor: - platform: dht pin: GPIO4 model: DHT22 temperature: name: "Room Temperature" humidity: name: "Room Humidity" update_interval: 30s
확인 방법
- 로그 확인: Dashboard에서 Logs를 열어 Wi-Fi 접속, 센서 읽기, API 연결 상태를 확인합니다.
- Home Assistant 확인: 같은 네트워크라면 ESPHome 장치가 자동 발견될 수 있습니다.
- MQTT 확인: MQTT를 쓰는 경우 MQTT Explorer 같은 도구로 토픽과 값을 확인합니다.
- OTA 확인: USB를 빼고 전원만 연결한 상태에서 설정을 조금 바꾼 뒤 무선 업로드가 되는지 확인합니다.
자주 막히는 부분
- 장치가 온라인으로 안 보이면 PC와 ESP 장치가 같은 Wi-Fi 대역인지 확인합니다.
- 최초 업로드가 안 되면 USB 케이블이 데이터 케이블인지, 드라이버가 필요한 보드인지 확인합니다.
- 센서 값이
nan으로 나오면 전원, GND, DATA 핀, 풀업 저항을 먼저 봅니다. - 장비실이나 현장 장치라면 전원 복구 후 자동 부팅, Wi-Fi 재접속, OTA 실패 대비 방법까지 고려해야 합니다.
다음 단계
ESPHome의 기본 흐름을 이해했다면 다음에는 BME280, DS18B20, 릴레이 모듈, 전력 측정 센서처럼 부품별 설정을 하나씩 쌓아가면 됩니다. 장기 운영 장치에서는 OTA 암호, API 암호, MQTT 인증, 장치명 규칙, 백업 파일 관리까지 함께 정리하는 것이 좋습니다.
ESPHome을 현장 장치에 쓸 때의 판단 기준
ESPHome은 YAML로 빠르게 센서 장치를 만들 수 있어서 편하지만, 모든 프로젝트에 무조건 맞는 것은 아닙니다. Home Assistant와 함께 쓰는 집 안 자동화, 온습도·조도·스위치 같은 반복 센서, OTA와 로그 확인이 필요한 장치에는 강점이 큽니다. 반대로 독립형 제품처럼 외부 서버 없이 자체 웹 UI와 복잡한 로직이 필요한 경우에는 Arduino/ESP-IDF 코드가 더 단순할 수 있습니다.
첫 장치를 만들 때는 센서값이 Home Assistant에 보이는 것만 확인하지 말고, 전원 재부팅 후 자동 복구, Wi-Fi 끊김 후 재접속, OTA 실패 시 복구 가능성까지 봐야 합니다. 현장에 붙인 장치는 손으로 USB를 꽂아 복구하기 어렵기 때문입니다.
운영 기준도 미리 정해야 합니다. 측정 주기, 필터, 단위, 표시 이름, 알림 임계값이 정리되어 있어야 대시보드가 나중에 지저분해지지 않습니다. ESPHome의 장점은 빠른 생성이 아니라, 같은 규칙으로 여러 센서 노드를 일관되게 관리할 수 있다는 점입니다.