Home IoT Hub Series · 20
[20편] 집 안 상태가 한 화면에 보이기 시작했다 - 우리집 IoT 허브 20슬롯 완성기
![[20편] 집 안 상태가 한 화면에 보이기 시작했다 - 우리집 IoT 허브 20슬롯 완성기 대표 이미지](/iot-lab/assets/home-iot-hub-series-finale-hero.png)
이 글은 2편: 두뇌 만들기에서 구축한 중앙 NodeMCU 서버에 연결되는 우리집 IoT 허브 구성 문서입니다. 3~19편에서 만든 센서·제어 노드가 2편의 두뇌 서버에 모이면서 20개 슬롯 기반 홈 IoT 허브가 완성됩니다. 수집된 데이터는 로컬 무선망
IoT_Hub_Net을 통해 중앙 서버의 1~20번 전체 슬롯 슬롯(/set?noX=값)을 갱신하며, 20채널 스마트홈 통합 컨트롤러의 판단 근거로 사용됩니다.19편까지 따라왔다면, 사용자의 집에는 다음과 같은 IoT 구성이 갖춰집니다.
- 두뇌 1대: NodeMCU + OLED + 부저. 거실 한가운데서 20개 슬롯을 4개씩 스크롤하며 집 상태를 보여줍니다.
- 센서 노드 19대: 집 구석구석에 흩어져 온도, 습도, 문 열림, 가스, 전력, 밥그릇 무게까지 측정합니다.
- Wi-Fi:
IoT_Hub_Net이라는 자체 네트워크로 모든 센서 노드가 두뇌와 연결됩니다. - 경고: 가스 누출, 화재, 현관문 열림, 밥그릇 부족 상황에서 부저가 울리고 OLED가 반전됩니다.
- 자동 제어: 거실에 사람이 있고 더우면 에어컨이 자동으로 켜집니다.
20개 슬롯 한눈에 정리
OLED에서 보이는 모습
OLED 128×64 화면은 4줄씩, 총 5페이지로 나뉘어 3초 간격으로 자동 스크롤된다. 실제 화면에 표시되는 모양은 이렇다.
OLED 128x64 화면은 4줄씩 3초 간격으로 자동 전환됩니다.
각 센서의 역할과 판단 기준
| # | OLED 표시 | 측정하는 것 | 정상 범위 | 주의·경고 기준 |
|---|---|---|---|---|
| 1 | Living Temp 24.5 | 거실 기온 | 18~28℃ | — |
| 2 | Living Hum 58.0 | 거실 습도 | 40~65% | 70%↑ 곰팡이 주의 |
| 3 | Outside Temp 18.0 | 바깥 기온 | 계절 따라 | 빙점 이하→수도 동파 주의 |
| 4 | AC ON/OFF | 에어컨 가동 | — | — |
| 5 | Boiler ON/OFF | 보일러 가동 | 겨울 ON | 여름 ON→이상 |
| 6 | Stove 0/1 | 가스레인지 사용 | 평소 0 | 외출 시 1→확인 |
| 7 | Gas Leak 0/1 ⚠ | 가스 누출 | 0 | 1이면 즉시 점검 |
| 8 | Fire 0/1 ⚠ | 화염 감지 | 0 | 1이면 즉시 점검 |
| 9 | Front Door 0/1 ⚠ | 현관문 열림 | 0 (외출 시) | 외출·취침 중 1→경고 |
| 10 | Door Lock 0/1 | 도어락 잠금 | 1 | 외출 시 0→확인 |
| 11 | Living Light ON/OFF | 거실 조명 | 밤 ON | 외출 시 ON→확인 |
| 12 | Fridge Temp 3.5 | 냉장실 온도 | 0~5℃ | 8℃↑→고장 의심 |
| 13 | CO2 620 | 이산화탄소 | 400~800ppm | 1000↑→환기 필요 |
| 14 | Dust PM2.5 35 | 초미세먼지 | 0~30㎍/m³ | 50↑→공기청정기 가동 |
| 15 | Power 320 | 순간 소비전력 | 가구에 따라 | 평소보다 급증→누전 의심 |
| 16 | Water 2.5 | 수도 사용량 | — | 연속 사용→누수 의심 |
| 17 | Hot Water 42.0 | 온수 배관 온도 | 35~50℃ | 60℃↑→과열 |
| 18 | Rain 0/1 | 강수 여부 | — | 1→창문·빨래 확인 |
| 19 | Bath Hum 62.0 | 욕실 습도 | 40~65% | 70%↑→환풍기 가동 |
| 20 | Pet Bowl 120 ⚠ | 사료 무게 | 50g↑ | 50g↓→밥 보충 |
하루 루틴: 이 시스템을 어떻게 활용하나
아침 기상 — OLED를 한 번 훑는다.
Outside Temp보고 옷차림 결정Rain이 1이면 우산 챙김
외출 전 — 5초 확인.
Front Door0,Door Lock1,Stove0,Living LightOFF → 이상 없음
외출 중 — 웹 대시보드로 확인 (선택).
Gas Leak,Fire가 0인지 수시로 확인 가능Pet Bowl이 50 이하면 반려견 산책 중 들러서 밥 보충
귀가 — 자동 환영.
- 문 열면
Front Door가 1로 바뀌고 부저가 잠깐 울림 (누군가 들어왔다는 걸 집이 알려줌) - 거실 PIR이 사람을 감지 → 더우면 에어컨 자동 ON
취침 전 — 마지막 확인.
Front Door0,Gas Leak0,Fire0 → 안심하고 취침Bath Hum보고 환풍기 타이머 결정
웹 대시보드: 또 하나의 화면
두뇌의 STA IP(예: http://192.168.0.50)로 접속하면 20개 카드가 그리드로 표시된다. OLED보다 더 많은 정보를 한눈에 볼 수 있다. 경고 카드는 빨간색으로 강조. 30초 자동 갱신.
스마트폰도 같은 네트워크에 연결되어 있으면 바로 접속할 수 있습니다. 홈 화면에 바로가기를 추가해 두면 앱처럼 사용할 수 있습니다.
향후 확장 아이디어
현재는 20개 슬롯이지만, 시스템 구조상 슬롯을 더 확장할 수 있습니다.
바로 추가할 만한 센서 (1~3만 원)
| 확장 아이디어 | 필요한 센서 | 가격 | 어디에 |
|---|---|---|---|
| TV 시청 시간 측정 | PIR + 조도센서 결합 | ~2,000원 | 거실 TV 앞 |
| 침대 점유 감지 | 압력 센서 FSR-402 | 5,000원 | 매트리스 아래 |
| 냉동실 온도 | DS18B20 하나 더 | 2,000원 | 보일러 편과 동일 코드 |
| 반려견 물그릇 | 수위 센서 | 1,000원 | 밥그릇 편 참고 |
| 우편함 도착 | 리드스위치 하나 더 | 800원 | 현관문 편과 동일 코드 |
| 화분 수분 | 토양 수분 센서 | 1,500원 | 베란다 화분 |
좀 더 투자할 만한 센서 (3~10만 원)
| 확장 아이디어 | 필요한 센서 | 가격 |
|---|---|---|
| 실내 포름알데히드 (새집증후군) | ZE08-CH2O | 15,000원 |
| 실내 라돈 | RD200M | 50,000원 |
| 소음 레벨 | MAX4466 + FFT 라이브러리 | 3,000원 |
| 창문 열림 (전체) | 리드스위치 n개 + 멀티플렉서 | 5,000원 |
| 태양광 발전량 | INA219 전압전류 | 3,000원 |
시스템 업그레이드 (소프트웨어)
| 확장 | 설명 | 난이도 |
|---|---|---|
| MQTT 연동 | HTTP GET 대신 MQTT 브로커로 전환. 양방향 통신, QoS 보장, 오프라인 버퍼링 | ⭐⭐ |
| ESP-NOW | Wi-Fi 라우터 없이 ESP8266 간 직접 통신. 전력 소모 1/10, 배터리 구동 가능 | ⭐⭐ |
| Deep Sleep | 센서 노드가 측정→전송→슬립 반복. AA 배터리 2개로 수개월 구동 | ⭐⭐ |
| 외부 접속 | 공유기 포트포워딩 + DDNS로 외부에서 집 상태 확인. 보안 주의 | ⭐⭐⭐ |
| 알림 연동 | 경고 발생 시 텔레그램·슬랙으로 푸시 알림. ESP8266에서 직접 HTTP POST | ⭐⭐ |
| 데이터 로깅 | SPIFFS나 SD카드에 측정값 저장. 1년치 데이터로 계절 패턴 분석 | ⭐⭐ |
| 음성 안내 | DFPlayer Mini + 스피커로 "현관문이 열렸습니다" 음성 출력 | ⭐⭐⭐ |
| 컬러 TFT | 1.8인치 TFT LCD + 그래프 라이브러리로 트렌드 시각화 | ⭐⭐ |
| BLE 연동 | ESP32로 업그레이드 시 블루투스로 스마트폰 직접 연결 | ⭐⭐⭐ |
이 시리즈에서 배운 것
처음에는 코드를 그대로 따라 하던 사람도 19편까지 진행하면 이런 판단과 구성 능력을 갖추게 됩니다.
- 아두이노 IDE 사용법: 라이브러리 설치, 보드 설정, 시리얼 모니터 디버깅
- ESP8266 Wi-Fi 프로그래밍: STA, AP, AP+STA 모드, HTTP 클라이언트/서버
- 센서 인터페이스: I2C(OLED), OneWire(DS18B20), SPI(MAX6675), UART(MH-Z19B), 아날로그, 디지털, 인터럽트
- IoT 아키텍처: 중앙 허브 + 분산 노드, REST API 통신, 자체 AP 네트워크
- 문제 해결력: 안 될 때 체크포인트를 읽고 스스로 디버깅하는 습관
이 흐름을 익히면 인터넷에 공개된 여러 ESP8266 프로젝트도 스스로 분석하고 응용할 수 있습니다.
마치며
ESP8266 하나와 OLED 하나로 시작한 프로젝트가 집 전체를 감시하고 제어하는 구조로 확장됐습니다. 중요한 점은 이 구성이 끝이 아니라는 것입니다. 위 확장 아이디어 중 하나를 골라 새로운 제작 글로 이어갈 수 있습니다.
이 시리즈가 실제 IoT 장치를 직접 구성하는 흐름을 정리하는 데 도움이 되었기를 바랍니다.
iothub.co.kr 에서 만나자.
현장 운영 체크포인트(안 될 때 · 실전 팁 · FAQ)
이 노드는 코드만 보면 짧아 보일 수 있지만, 실제 집에 붙이면 센서 위치·전원·무선망·노이즈 때문에 값이 쉽게 흔들립니다. 아래 항목은 두뇌 서버에 잘못된 판단 근거가 들어가지 않도록 현장에서 먼저 점검할 내용입니다.
| 증상 | 가능한 원인 | 현장 해결 방법 |
|---|---|---|
| 슬롯이 채워졌는데 판단이 틀림 | 센서별 측정 주기와 지연 시간이 달라 같은 시점의 집 상태가 아님 | 대시보드에는 값뿐 아니라 마지막 갱신 시각을 함께 표시해 오래된 값을 구분합니다. |
| 경고가 너무 많아 무시하게 됨 | 가스·화재·침입·밥그릇 같은 경고가 같은 강도로 울림 | 안전 경고와 생활 알림을 등급화하고, 생활 알림은 반복 주기를 길게 둡니다. |
| 노드가 늘수록 Wi-Fi가 불안정함 | ESP8266 여러 대가 같은 AP에 몰리고 전원 품질이 제각각임 | 측정 주기를 분산하고, 실패 시 즉시 재시도 폭주가 아니라 다음 주기로 넘깁니다. |
| 유지보수 때 어떤 노드인지 헷갈림 | 각 보드의 위치·슬롯·IP·센서 종류가 문서화되지 않음 | 케이스에 슬롯 번호 라벨을 붙이고, 2편 링크 트리를 운영 인덱스로 사용합니다. |
시리얼 모니터
업로드가 끝나면 Arduino IDE의 툴 → 시리얼 모니터를 열고 보드레이트를 115200으로 맞춥니다. 다음은 정상 동작을 확인하기 위한 시리얼 모니터 출력 예시입니다. 이 로그는 실제 캡처가 아니라, 20개 슬롯을 받는 중앙 허브에서 시리얼 모니터로 확인할 수 있는 전체 상태 갱신 예시입니다.
[BOOT] Home IoT HUB brain - 20 slot dashboard [AP] IoT_Hub_Net started, ip=192.168.1.1 [HTTP] /set?no1=24.6&no2=58.2 -> 200 OK [HTTP] /set?no9=1 -> 200 OK, door=OPEN [HTTP] /set?no13=742&no14=11 -> 200 OK [DISPLAY] OLED page refresh: temp/humidity/door/air/power [STATUS] active_slots=20, stale_slots=0, uptime=03:12:44
Connected또는connected가 보이면 Wi-Fi 연결 단계는 통과한 것입니다.HTTP 200또는200 OK가 보이면 두뇌 서버에 값이 전달된 것입니다.- 값이 갱신되지 않으면 먼저 URL의 슬롯 번호와 센서 배선을 함께 확인합니다.
이 글은 2편의 중앙 두뇌 서버와 3~19편의 분산 엣지 노드가 함께 구성하는 20채널 홈 IoT 시스템의 일부입니다. 필요한 편으로 이동해 슬롯과 센서 흐름을 함께 확인합니다.
[1편] 우리집 IoT 허브 전체 그림[2편] 중앙 두뇌 서버 만들기 · 슬롯 1~20[3편] 집 안 온습도, 감으로 보지 말고 숫자로 보자 · 슬롯 1·2[4편] 문 닫았나 계속 신경 쓰일 때 · 슬롯 9[5편] 냉장고가 제대로 돌고 있는지 눈으로 확인하자 · 슬롯 12[6편] 창문 열어도 될까? · 슬롯 3[7편] 욕실 곰팡이 생기기 전에 습도부터 잡자 · 슬롯 19[8편] 보일러가 실제로 도는지 배관 온도로 확인하자 · 슬롯 5·17[9편] 외출했는데 가스레인지가 켜져 있지 않을까? · 슬롯 6[10편] 가스 냄새가 나기 전에 먼저 경고받자 · 슬롯 7[11편] 집을 비웠을 때 불꽃 징후를 먼저 잡자 · 슬롯 8[12편] 머리가 멍한 이유가 공기 때문인지 확인하자 · 슬롯 13·14[13편] 전기세 무지 나오네, 이번 기회에 눈으로 보자 · 슬롯 15[14편] 물 새는지, 얼마나 쓰는지 숫자로 보자 · 슬롯 16[15편] 비 오는 줄 모르고 창문 열어두지 않게 · 슬롯 18[16편] 불 껐나, 문 잠갔나 한 번에 확인하자 · 슬롯 11·10[17편] 리모컨 없이 에어컨을 IoT 허브에서 제어하자 · 슬롯 4[18편] 강아지 밥그릇이 비었는지 눈으로 보자 · 슬롯 20[19편] 사람 있을 때만 시원하게, 없을 땐 아끼자 · 슬롯 1·4[20편] 집 안 상태가 한 화면에 보이기 시작했다 · 슬롯 전체