현대인들은 집보다 직장에서 더 많은 시간을 보냅니다. 따라서 직장에 있으면서 집 상태를 알 수 있는 홈 모니터링 시스템이 필요합니다. 업무 시간에 "누군가"에게 집에 대해 물어볼 수 있다면 더 좋을 것입니다. 이는 아마존 알렉사를 비서로 활용해 사용자가 필요한 집 정보를 제공받도록 함으로써 가능합니다.
직장뿐만 아니라 인터넷 연결과 알렉사 기기만 있으면 세계 어디서든 집 상태를 알 수 있습니다.
이 프로젝트에 구현된 기능:
가전제품(선풍기, 조명) 제어
기기 상태 확인
집 안 날씨(온도, 습도) 확인
요청 시 집 내부 스냅샷을 지메일로 전송
다음 상황 알림 전송:
침입자 (사진 포함)
화재
방문자 (사진 포함)
1단계: 아두이노와 ESP8266 프로그래밍
공식 웹사이트에서 아두이노 IDE 다운로드: https://www.arduino.cc/en/Main/Software
아두이노 IDE 열기 → 파일 → 환경설정 → 추가 보드 매니저 URL에 입력: https://arduino.esp8266.com/stable/package_esp8266com_index.json
도구 → 보드 → 보드 매니저 → 가장 아래에 있는 esp8266 패키지 설치.
아두이노 프로그래밍: 아두이노를 USB로 컴퓨터에 연결하고 도구 → 보드에서 Arduino/Genuino UNO 선택. 올바른 COM 포트 선택(장치 관리자에서 확인 가능). 프로그램 작성, 컴파일, 오류 없으면 업로드.
ESP8266 프로그래밍: 아래 다이어그램처럼 연결하세요.
아두이노 USB를 컴퓨터에 연결. 도구 → 보드 → Generic ESP8266 선택, 올바른 COM 포트 선택. 프로그램 작성, 컴파일, 오류 없으면 업로드. 아두이노 RST를 GND에 연결해야 함(아두이노가 ESP8266 프로그래머 역할).
이 프로젝트에서는 먼저 ESP8266을 프로그래밍한 후 회로 연결을 해제합니다. 그런 다음 "회로 연결" 그림과 같이 다시 연결한 후 아두이노를 프로그래밍합니다.
2단계: ThingSpeak.com 구성
ThingSpeak.com 계정 생성.
ThingSpeak의 채널을 사용해 기기 제어 정보를 저장하고 아두이노/알렉사로 라우팅합니다. 온습도 값도 채널에 저장합니다. 일종의 정보 저장소입니다.
채널 → 내 채널 → 새 채널 생성. 채널에 이름과 설명 부여.
이 프로젝트에는 8개 채널이 필요합니다(더 적은 채널로도 가능하지만 프로그래밍이 복잡해짐). ThingSpeak는 채널 업데이트 시 시간 제약이 있어 특정 채널 연속 업데이트 간 10-15초 간격이 필요합니다.
여덟 채널의 값과 의미:
기기 제어 (0-조명 켬, 1-조명 끔, 2-선풍기 켬, 3-선풍기 끔)
조명 상태 (0-끔, 1-켜짐)
선풍기 상태 (0-끔, 1-켜짐)
습도 (습도 값)
온도 (온도 값)
침입자 알림 (1-침입 경보)
화재 알림 (1-화재 경보)
방문자 알림 (1-방문자 경보)
채널 클릭 시 채널 ID와 쓰기 API 키를 API 키 탭에서 볼 수 있습니다. 채널 ID는 채널 정보/값을 읽는 데 필요, 쓰기 키는 채널에 값 저장 시 필요.
{
"languageModel": {
"intents": [
{"name": "AMAZON.CancelIntent", "samples": []},
{"name": "AMAZON.HelpIntent", "samples": []},
{"name": "AMAZON.StopIntent", "samples": []},
{"name": "Camera", "samples": ["please send a snapshot of my living room", "please send a snapshot of my home", "please send a photo of my living room", "please send a photo of my home"], "slots": []},
{"name": "FanOff", "samples": ["turn off Fan", "switch off Fan", "turn off the Fan", "switch off the Fan"], "slots": []},
{"name": "FanOn", "samples": ["turn on Fan", "switch on Fan", "turn on the Fan", "switch on the Fan"], "slots": []},
{"name": "Introduction", "samples": ["what you can do", "what can you do", "what can you do for me"], "slots": []},
{"name": "LightsOff", "samples": ["turn off lights", "switch off lights", "turn off the lights", "switch off the lights"], "slots": []},
{"name": "LightsOn", "samples": ["turn on lights", "switch on lights", "turn on the lights", "switch on the lights"], "slots": []},
{"name": "Notification", "samples": ["what are my notifications", "is there any notifications", "is there any updates", "read out my notifications"], "slots": []},
{"name": "Status", "samples": ["what is my device status", "what is the status of my devices"], "slots": []},
{"name": "Weather", "samples": ["what is the weather condition of my home", "what is the weather of my home", "what is the weather", "what is the temperature of my home", "what is the temperature"], "slots": []}
],
"invocationName": "my home"
}
}
구성 탭에서 서비스 엔드포인트 유형으로 HTTPS 선택, 기본 URL에 Backendless의 API URL 입력.
기본 엔드포인트 SSL 인증서에서 2번째 옵션 선택. 테스트 시뮬레이터로 스킬 테스트 가능.
테스트 완료 후 필요한 배포 정보로 스킬 게시.
8단계: 최종 설정 및 마무리!
아래와 같이 회로 연결:
때때로 ESP8266이 전류 부족으로 오작동할 수 있습니다. 회로도에 언급되지 않았지만, ESP8266을 별도 3.3V 전원으로 공급하는 것을 권장합니다. 파워뱅크 사용 시 3.3V 전압 레귤레이터로 5V를 3.3V로 낮춰 사용하세요.
ESP8266과 아두이노에 프로그램 업로드. 전구 연결 예시를 보였으며, 선풍기나 다른 기기도 같은 방식으로 확장 가능.
아마존 에코나 echosim.io로 스킬 테스트.
반드시 호출 이름(제 경우 "my home")으로 스킬을 활성화해야 합니다. 호출 이름 없이 사용하면 작동하지 않을 수 있습니다(영상에서 몇 번 보여드림).
튜토리얼이 도움이 되셨길 바랍니다!
감사합니다!
코드
Smart_bell_ESP8266.ino - 침입자/방문자 알림용 ESP8266 코드
Home_monitor_arduino.ino - 가전제품 제어용 아두이노 코드
Home_Monitor_ESP8266.ino - ThingSpeak에 온습도 업데이트 및 제어 정보 검색용 ESP8266 코드