Home IoT Hub Series · 20

[20편] 집 안 상태가 한 화면에 보이기 시작했다 - 우리집 IoT 허브 20슬롯 완성기

[20편] 집 안 상태가 한 화면에 보이기 시작했다 - 우리집 IoT 허브 20슬롯 완성기 대표 이미지
시스템 아키텍처 및 데이터 파이프라인 안내
이 글은 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초 간격으로 자동 전환됩니다.

IoT Hub [1/5]
Living Temp24.5
Living Hum58.0
Outside Temp18.0
ACON
IoT Hub [2/5]
BoilerON
Stove0
Gas Leak0
Fire0
IoT Hub [3/5]
Front Door0
Door Lock1
Living LightON
Fridge Temp3.5
IoT Hub [4/5]
CO2620
Dust PM2.535
Power320
Water2.5
IoT Hub [5/5]
Hot Water42.0
Rain0
Bath Hum62.0
Pet Bowl120

각 센서의 역할과 판단 기준

#OLED 표시측정하는 것정상 범위주의·경고 기준
1Living Temp 24.5거실 기온18~28℃
2Living Hum 58.0거실 습도40~65%70%↑ 곰팡이 주의
3Outside Temp 18.0바깥 기온계절 따라빙점 이하→수도 동파 주의
4AC ON/OFF에어컨 가동
5Boiler ON/OFF보일러 가동겨울 ON여름 ON→이상
6Stove 0/1가스레인지 사용평소 0외출 시 1→확인
7Gas Leak 0/1가스 누출01이면 즉시 점검
8Fire 0/1화염 감지01이면 즉시 점검
9Front Door 0/1현관문 열림0 (외출 시)외출·취침 중 1→경고
10Door Lock 0/1도어락 잠금1외출 시 0→확인
11Living Light ON/OFF거실 조명밤 ON외출 시 ON→확인
12Fridge Temp 3.5냉장실 온도0~5℃8℃↑→고장 의심
13CO2 620이산화탄소400~800ppm1000↑→환기 필요
14Dust PM2.5 35초미세먼지0~30㎍/m³50↑→공기청정기 가동
15Power 320순간 소비전력가구에 따라평소보다 급증→누전 의심
16Water 2.5수도 사용량연속 사용→누수 의심
17Hot Water 42.0온수 배관 온도35~50℃60℃↑→과열
18Rain 0/1강수 여부1→창문·빨래 확인
19Bath Hum 62.0욕실 습도40~65%70%↑→환풍기 가동
20Pet Bowl 120사료 무게50g↑50g↓→밥 보충

하루 루틴: 이 시스템을 어떻게 활용하나

아침 기상 — OLED를 한 번 훑는다.

  • Outside Temp 보고 옷차림 결정
  • Rain이 1이면 우산 챙김

외출 전 — 5초 확인.

  • Front Door 0, Door Lock 1, Stove 0, Living Light OFF → 이상 없음

외출 중 — 웹 대시보드로 확인 (선택).

  • Gas Leak, Fire가 0인지 수시로 확인 가능
  • Pet Bowl이 50 이하면 반려견 산책 중 들러서 밥 보충

귀가 — 자동 환영.

  • 문 열면 Front Door가 1로 바뀌고 부저가 잠깐 울림 (누군가 들어왔다는 걸 집이 알려줌)
  • 거실 PIR이 사람을 감지 → 더우면 에어컨 자동 ON

취침 전 — 마지막 확인.

  • Front Door 0, Gas Leak 0, Fire 0 → 안심하고 취침
  • Bath Hum 보고 환풍기 타이머 결정

웹 대시보드: 또 하나의 화면

두뇌의 STA IP(예: http://192.168.0.50)로 접속하면 20개 카드가 그리드로 표시된다. OLED보다 더 많은 정보를 한눈에 볼 수 있다. 경고 카드는 빨간색으로 강조. 30초 자동 갱신.

스마트폰도 같은 네트워크에 연결되어 있으면 바로 접속할 수 있습니다. 홈 화면에 바로가기를 추가해 두면 앱처럼 사용할 수 있습니다.

향후 확장 아이디어

현재는 20개 슬롯이지만, 시스템 구조상 슬롯을 더 확장할 수 있습니다.

바로 추가할 만한 센서 (1~3만 원)

확장 아이디어필요한 센서가격어디에
TV 시청 시간 측정PIR + 조도센서 결합~2,000원거실 TV 앞
침대 점유 감지압력 센서 FSR-4025,000원매트리스 아래
냉동실 온도DS18B20 하나 더2,000원보일러 편과 동일 코드
반려견 물그릇수위 센서1,000원밥그릇 편 참고
우편함 도착리드스위치 하나 더800원현관문 편과 동일 코드
화분 수분토양 수분 센서1,500원베란다 화분

좀 더 투자할 만한 센서 (3~10만 원)

확장 아이디어필요한 센서가격
실내 포름알데히드 (새집증후군)ZE08-CH2O15,000원
실내 라돈RD200M50,000원
소음 레벨MAX4466 + FFT 라이브러리3,000원
창문 열림 (전체)리드스위치 n개 + 멀티플렉서5,000원
태양광 발전량INA219 전압전류3,000원

시스템 업그레이드 (소프트웨어)

확장설명난이도
MQTT 연동HTTP GET 대신 MQTT 브로커로 전환. 양방향 통신, QoS 보장, 오프라인 버퍼링⭐⭐
ESP-NOWWi-Fi 라우터 없이 ESP8266 간 직접 통신. 전력 소모 1/10, 배터리 구동 가능⭐⭐
Deep Sleep센서 노드가 측정→전송→슬립 반복. AA 배터리 2개로 수개월 구동⭐⭐
외부 접속공유기 포트포워딩 + DDNS로 외부에서 집 상태 확인. 보안 주의⭐⭐⭐
알림 연동경고 발생 시 텔레그램·슬랙으로 푸시 알림. ESP8266에서 직접 HTTP POST⭐⭐
데이터 로깅SPIFFS나 SD카드에 측정값 저장. 1년치 데이터로 계절 패턴 분석⭐⭐
음성 안내DFPlayer Mini + 스피커로 "현관문이 열렸습니다" 음성 출력⭐⭐⭐
컬러 TFT1.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의 슬롯 번호와 센서 배선을 함께 확인합니다.
우리집 IoT HUB 20슬롯 시스템 맵

이 글은 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편] 집 안 상태가 한 화면에 보이기 시작했다 · 슬롯 전체