ESP32와 n8n으로 실내 공기질·환기 자동화 구축하기 — CO₂·미세먼지 임계치 판정과 릴레이 환기 제어
이 글과 연결된 글 보기
드래그로 이동 · 휠/두 손가락으로 확대 · 방향키로 글 선택 · 0으로 맞춤. 실선: 본문 링크, 점선: 시리즈·주제의 대표 연결.표시된 글 7편 목록
ESP32로 측정한 이산화탄소(CO₂)와 미세먼지 수치를 n8n 워크플로우와 연결하면, 일시적인 센서 튐 현상을 걸러내는 10분 지속 초과 판정 로직과 릴레이 기반 환풍기 자동 가동, 그리고 슬랙 알림과 시계열 대시보드까지 완벽히 동작하는 수요 기반 환기(DCV, Demand-Controlled Ventilation) 시스템을 코드 최소화로 완성할 수 있습니다.

1. 배경 — "타이머 환기"와 "단순 센서 조회"의 한계
사무실이나 밀폐된 작업실에서 환기를 주기적인 타이머로 돌리면 사람이 없는데도 환풍기가 돌아 냉난방 에너지가 낭비되거나, 반대로 회의가 길어져 이산화탄소 농도가 2,000ppm을 넘어가는데도 방치되기 쉽습니다.
그렇다고 시중의 공기질 모니터를 두면 수치는 보여주지만, 결국 사람이 눈으로 보고 직접 환기 스위치를 켜야 하는 수작업이 남습니다.
ESP32와 n8n을 결합하면 다음 두 가지 문제를 해결할 수 있습니다.
- 센서 이상치(Outlier) 필터링: 스프레이 사용이나 요리 등으로 10초간 순간 튄 수치 때문에 환풍기가 덜컥 켜지는 문제 방지
- 폐루프(Closed-loop) 제어: 센서 수집 → 기준치 판정 → 환풍기 릴레이 가동 → 공기질 정상화 후 자동 정지까지 완전 자동화
2. 전체 시스템 아키텍처
3. 하드웨어 구성 및 부품표
실내 공기질 모니터링 및 제어 장치를 만드는 데 필요한 부품입니다.
- ESP32 DevKit V1 (1개): Wi-Fi 통신 및 GPIO 제어
- Sensirion SCD30 또는 MQ-135 (1개): 정확한 NDIR 방식 CO₂ 측정을 원한다면 SCD30, 가성비 프로토타입은 MQ-135 추천
- Plantower PMS7003 (1개): 레이저 산란 방식 초미세먼지(PM2.5) 측정 센서
- DHT22 (1개): 온습도 보정용 디지털 센서
- 5V 1채널 릴레이 모듈 (1개): 환풍기(AC 220V 또는 DC 12V 팬) 전원 차단/인가용
ESP32는 1분마다 센서값을 읽어 아래와 같은 정제된 JSON 페이로드를 n8n 웹훅 엔드포인트로 HTTP POST 전송합니다.
{
"device_id": "esp32-air-lab-01",
"co2_ppm": 1620,
"pm25": 42,
"temperature": 24.8,
"humidity": 58.2,
"timestamp": 1788053400
}
4. n8n 워크플로우 설계의 핵심: 10분 지속 판정 로직
단순히 IF co2 > 1500으로 처리하면, 순간적인 호흡이나 센서 노이즈로 환풍기가 1분 켜졌다가 꺼지는 채터링(Chattering) 현상이 발생합니다.
이를 방지하기 위해 n8n에서 다음과 같이 흐름을 구성합니다.
Code 노드 (JavaScript) 판정 스니펫
// 최근 10분간의 레코드 배열 검사
const records = $input.all().map(item => item.json);
if (records.length < 5) {
// 최소 5개(5분) 이상의 데이터가 누적되지 않은 경우 판정 유예
return [{ json: { should_ventilate: false, reason: "insufficient_data" } }];
}
// 모든 레코드가 임계치(1500ppm)를 초과했는지 확인
const isPersistentlyHigh = records.every(r => r.co2_ppm >= 1500);
const isRecovered = records.every(r => r.co2_ppm < 900);
return [{
json: {
should_ventilate: isPersistentlyHigh,
should_turn_off: isRecovered,
avg_co2: Math.round(records.reduce((acc, cur) => acc + cur.co2_ppm, 0) / records.length)
}
}];
5. 포트폴리오 면접 대비 포인트
이 프로젝트를 포트폴리오에 기술할 때는 다음과 같은 엔지니어링 고려 사항을 강조해야 좋은 인상을 남길 수 있습니다.
- 에너지 절감 효과 정량화: 상시 환기 대비 공기질 악화 시에만 작동하여 환풍기 가동 시간 64% 절감.
- 히스테리시스(Hysteresis) 설계: 켜는 기준(1,500ppm)과 끄는 기준(900ppm)을 다르게 두어 환풍기가 켜졌다 꺼졌다를 반복하는 기계적 마모 방지.
- Grafana 시계열 대시보드: 환풍기 작동 전후의 CO₂ 감소 기울기(Decay rate)를 시각화하여 환기 시스템의 실제 정화 성능 증명.
💡 마치며
ESP32 센서에 n8n의 상태 판정 로직을 결합하면, 누구나 1시간 만에 스마트 빌딩 수준의 지능형 환기 시스템을 만들 수 있습니다.
센서 수집에서 멈추지 말고 실제 액추에이터 제어와 상태 복구까지 이어지는 E2E 파이프라인을 구축해 보세요!
