1.소개
스마트홈 스터디를 하며 날씨와 실내 환경에 반응하는 자동 커튼 시스템을 구상했습니다.
처음에는 조도, 온도, 습도, 날씨 정보에 따라 커튼이 자동으로 열리고 닫히는 장치를 만들고자 했습니다. 단순히 정해진 조건대로 작동하는 장치가 아니라, 사용자가 AI와 대화하면서 작동 조건을 바꿀 수 있는 시스템을 목표로 했습니다.
예를 들어 “실내 온도가 28도를 넘고 햇빛이 강하면 커튼을 80% 닫아줘”라고 말하면, AI가 이 내용을 자동화 조건으로 변환하여 커튼을 작동시키는 방식입니다.
아이디어를 구체화하는 과정에서 커튼에 별도의 AI를 설치하기보다, 집 안에 24시간 작동하는 메인 PC를 두고 Hermes Agent를 설치한 뒤 각종 IoT 장치를 통합 관리하는 구조로 확장했습니다.
최종적으로는 커튼 제어를 첫 번째 프로젝트로 시작하여 사람의 입출입 감시, 화재 감시, 조명 제어 등 집 안의 여러 설비를 하나의 AI 에이전트가 통합 관리하는 스마트홈 시스템을 구현하고자 합니다.
2. 진행 방법
프로젝트의 전체 구조를 중앙 제어 시스템과 현장 제어 장치로 나누어 설계했습니다.
메인 PC에는 Hermes Agent, Home Assistant, MQTT 통신 서버를 설치하고, 각 기구에는 ESP32 제어보드를 배치하는 방식을 계획했습니다.
메인 PC의 Hermes Agent는 사용자의 자연어 명령을 이해하고, 날씨 정보와 센서값을 종합하여 작동 조건을 생성합니다. Home Assistant는 각 장치의 상태와 자동화 규칙을 관리하며, MQTT는 메인 PC와 ESP32 사이에서 명령과 센서값을 전달하는 통신 수단으로 사용합니다.
ESP32는 각 장치 가까이에 설치하여 센서값을 읽고 모터, 릴레이, 경보기 등을 직접 작동시키는 역할을 담당합니다.
전체 작동 흐름은 다음과 같습니다.
사용자 명령 또는 센 서 입력
→ Hermes Agent가 조건 해석
→ Home Assistant가 자동화 규칙 확인
→ MQTT를 통해 ESP32에 명령 전달
→ ESP32가 모터, 조명, 경보기 등을 작동
→ 실행 결과와 현재 상태를 메인 PC로 다시 전송
첫 번째 개발 대상은 날씨 감응형 커튼 시스템입니다.
커튼 시스템에는 ESP32, 조도센서, 온습도센서, 커튼 모터, 모터 드라이버, 리미트 스위치, 수동 버튼을 사용합니다.
조도가 높고 실내 온도가 기준 이상이면 커튼을 닫고, 아침 시간에 날씨가 맑으면 커튼을 여는 방식으로 구성합니다. 커튼이 완전히 열리거나 닫혔을 때는 리미트 스위치가 모터를 정지하도록 하여 기계적인 손상을 방지합니다.
두 번째 단계에서는 사람의 입출입 감시 기능을 추가합니다.
현관문에는 자석식 문 열림 센서를 설치하고, 실내에는 PIR 인체감지 센서 또는 mmWave 존재감지 센서를 설치합니다. 문이 열리고 사람의 움직임이 감지되면 입출입 상황으로 판단하고, 외출 모드에서 문이 열리면 사용자에게 경보를 전송하도록 계획했습니다.
세 번째 단계에서는 조명 제어 기능을 추가합니다.
사람이 방에 들어오고 주변이 어두우면 조명을 켜고, 일정 시간 동안 사람이 감지되지 않으면 조명을 끄도록 합니다. 야간에는 조명을 낮은 밝기로 켜고, 화재 발생 시에는 대피를 돕기 위해 모든 조명을 켜는 연동 기능도 계획했습니다.
네 번째 단계에서는 화재 감시 기능을 추가합니다.
화재 감시는 DIY 센서만 사용하지 않고, 인증된 연기감지기와 열감지기를 기본으로 사용합니다. ESP32는 감지기의 경보 접점을 확인하여 메인 PC에 상태를 전달하고, 화재가 감지되면 사이렌 작동, 사용자 알림, 전체 조명 점등 등의 비상 동작을 실행하도록 설계했습니다.
개발은 다음 순서로 진행할 계획입니다.
1단계: 메인 PC에 Hermes Agent, Home Assistant, MQTT 설치
2단계: ESP32 한 대를 연결하여 통신 확인
3단계: 날씨 감응형 커튼 제작
4단계: 사람 입출입 감시 기능 추가
5단계: 조명 제어 기능 추가
6단계: 화재 감시 및 비상 연동 기능 추가
7단계: 각 기능을 외출 모드, 귀가 모드, 야간 모드, 비상 모드로 통합
3. 활용할 장비와 기술
ChatGpt 의 도움을 받아 작성한 장비 목록입니다.
하나하나 실현보 보려고 합니다.
프로젝트에 사용할 주요 장비와 기술은 다음과 같습니다.
메인 PC
- Hermes Agent: 사용자와 대화하고 장치 작동 조건을 설정하는 중앙 AI 에이전트
- Home Assistant: 센서, 커튼, 조명, 경보기 등 전체 장치를 통합 관리하는 스마트홈 플랫폼
- Mosquitto MQTT: 메인 PC와 각 ESP32 사이에서 명령과 센서값을 전달하는 통신 서버
현장 제어 장치
- ESP32: 센서값을 읽고 모터, 릴레이, 사이렌 등을 직접 제어하는 소형 제어보드
- ESPHome: ESP32를 Home Assistant와 쉽게 연결하기 위한 소프트웨어
커튼 제어 장비
- BH1750 조도센서
- BME280 또는 SHT31 온습도센서
- 커튼 모터 또는 스테퍼모터
- A4988 또는 TMC2209 모터 드라이버
- 리미트 스위치
- 수동 제어 버튼
입출입 감시 장비
- 자석식 문 열림 센서
- HC-SR501 PIR 인체감지 센서
- LD2410 mmWave 존재감지 센서
- 경보용 부저 또는 사이렌
화재 감시 장비
- 인증된 독립형 연기감지기
- 열감지기
- 릴레이 접점 출력 장치
- 온도센서
- 비상 경보 사이렌
조명 제어 장비
- 광절연 릴레이 모듈
- 조도센서
- PIR 또는 mmWave 센서
- 스마트 스위치 또는 디머 모듈
장비 구매를 위해 사용한 검색어는 다음과 같습니다.
ESP32 개발보드 WiFi BLE
BH1750 조도센서 모듈
BME280 온습도센서
자동 커튼 모터 DIY
TMC2209 스테퍼모터 드라이버
소형 롤러형 리미트 스위치
문열림 자석센서 리드스위치
HC-SR501 PIR 인체감지 센서
LD2410 mmWave 존재감지 센서
연기감지기 접점 출력
열감지기 릴레이 출력
ESP32 광절연 릴레이 모듈
Home Assistant 스마트 스위치
12V 경보 사이렌
난연 프로젝트 박스
.
4. 결과와 배운 점
이번 과정을 통해 단순히 센서가 반응하여 모터를 작동시키는 장치와 AI 에이전트가 여러 장치를 통합 관리하는 시스템은 구조적으로 다르다는 점을 배웠습니다.
처음에는 커튼 장치 안에 라즈베리파이를 설치하고 AI 에이전트를 실행해야 한다고 생각했습니다. 그러나 집 안에 24시간 작동하는 메인 PC가 있다면, 그 PC가 라즈베리파이의 역할을 대신할 수 있다는 것을 알게 되었습니다.
메인 PC에는 Hermes Agent와 Home Assistant를 설치하고, 각 장치에는 ESP32만 배치하면 됩니다. 따라서 라즈베리파이는 필수 장비가 아니며, ESP32는 AI를 실행하는 장치가 아니라 센서와 기계를 제어하는 현장 제어기로 사용하는 것이 적합합니다.
또한 각 커튼, 조명, 경보기마다 별도의 AI 에이전트를 설치하는 것이 아니라, 하나의 중앙 에이전트가 각 장치를 도구처럼 호출하는 구조가 효율적이라는 점을 배웠습니다.
예를 들어 중앙 에이전트는 다음과 같은 기능을 호출할 수 있습니다.
거실 커튼 70% 닫기
현관문 상태 확인하기
거실에 사람이 있는지 확인하기
복도 조명 켜기
화재 경보 상태 확인하기
가장 중요한 배움은 AI가 모든 물리 장치를 직접 통제하게 해서는 안 된다는 점입니다.
AI는 사용자의 말을 이해하고 조건을 만드는 역할을 담당하고, 실제 자동화 실행은 Home Assistant와 ESP32가 담당하도록 역할을 분리해야 안정성과 안전성을 확보할 수 있습니다.
특히 커튼 모터의 리미트 스위치, 조명의 220V 전원 제어, 화재감지기와 같은 안전 관련 장치는 AI의 판단과 관계없이 자체적인 안전장치를 갖추어야 합니다.
아직 실제 장비를 구매하거나 회로를 제작하지 않았기 때문에 완성된 결과물은 없습니다. 현재까지의 결과는 전체 시스템의 구조와 단계별 개발 방향, 필요한 장비와 기술을 구체화한 것입니다.
다음 단계에서는 메인 PC에 Home Assistant와 MQTT를 설치하고, ESP32 한 대를 연결하여 센서값을 전송하고 명령을 받는 기본 통신부터 실습할 계획입니다.
그다음 커튼 모터의 수동 열기와 닫기, 리미트 스위치를 이용한 자동 정지를 먼저 구현하고, 조도와 온도 조건을 순차적으로 추가할 예정입니다.
5. 과정중 시행착오
처음에는 AI 에이전트를 사용하려면 각각의 장치에 라즈베리파이 정도의 컴퓨터가 필요하다고 생각했습니다.
그러나 구조를 검토하면서 집 안의 메인 PC 한 대에 중앙 에이전트를 설치하고, 각 기구에는 ESP32를 배치하는 것이 더 경제적이고 관리하기 쉽다는 것을 알게 되었습니다.
또한 처음에는 각 기구를 하나의 에이전트처럼 구성하려 했지만, 실제로는 중앙 에이전트 하나가 각 장치의 기능을 도구로 호출하는 구조가 가능하다는 걸 알게 되었습니다.
도움 받은 글 (옵션)
이번 아이디어의 구조와 개발 방향은 ChatGPT와 대화하면서 구체화했습니