/HomePy

Control home automation with Telegram messenger (based on Python and Raspberry Pi)

Primary LanguagePythonGNU Lesser General Public License v3.0LGPL-3.0

홈파이 (HomePy), 홈 오토메이션 플랫폼

홈 오토메이션 분야는 오래된 미래가 아닌가 싶습니다. 오래전부터 곧 적용될 기술처럼 소개되곤 해왔지만 정작 우리집은 별 변화가 없습니다. 그래서인지 홈 오토메이션은 메이커들의 단골 도전 종목 중 하나입니다.

단순히 하나의 장치를 제어하는걸 목표로 구현하는건 상대적으로 쉽습니다. 하지만 기왕 만드는거 나중에 뭘 만들든 붙여 쓸 수 있는 범용 홈 오토메이션 서버를 이 참에 구축하고 싶었습니다. 그래서 장치 간 동작 시나리오와 프로토콜 스펙을 먼저 만들고, 다양한 장치가 붙을 수 있음을 염두에 두고 제작했습니다. 그 결과물이 홈 오토메이션 서버 홈파이(HomePy) 입니다.

Bot Father 와 Bot 계정

텔레그램 봇(Bot) 이란 텔레그램 메신저 내에서 내 챗을 받아 이런저런 명령을 수행해주는 비서로, 일반 유저처럼 등록되는 가상의 계정입니다. 최신 텔레그램 메신저 앱에서 Bot Father를 통해 나만의 봇을 만들 수 있도록 지원합니다.

홈파이(HomePy)에서도 텔레그램 봇을 사용자 인터페이스로 이용합니다. 즉, 봇 계정을 만들고 봇에게 명령을 내리면 라즈베리파이에서 구동하는 홈파이 파이썬 스크립트가 원하는 작업을 처리한 뒤 챗으로 알려줍니다. 홈파이를 이용한 CCTV on/off 기능, 사진 촬영 및 파일 전송 기능, 센서 장치 관리 및 제어, 데이터 수집 기능이 적용되어 있습니다.

홈파이 사용 방법

홈파이 프로토콜에 맞게 만든 장치들은 홈파이가 자동으로 감지하고 센서데이터를 수집, 제어합니다.

센서 장치들은 주기적으로 홈파이에게 자신의 존재를 알리는 등록 신호를 주기적으로 보내야합니다. HC-11 모듈을 통해 홈파이는 등록 신호를 받아 저장해 둡니다. 텔레그램 챗으로 봇에게 "장치" 라고 입력하면 감지된 장치들을 모두 보실 수 있습니다.

센서 장치들은 등록 신호를 보낼 때 자신이 처리할 수 있는 4개의 제어 신호 정보도 같이 보내줍니다. "장치 상세 (장치넘버)" 명령을 통해 각각의 장치가 지원하는 제어신호 정보를 볼 수 있습니다.

사용자는 제어신호 정보를 보고 여기에 맞게 신호를 보내 장치를 원격 조종하는 방식입니다. "제어 (장치넘버) (신호1) ..." 명령을 봇에게 전달하면 장치로 제어 신호가 전달됩니다. 센서 장치가 동작을 제대로 수행했다면 보낸 신호대로 응답을 줍니다.

그리고 홈파이는 센서 장치들이 보내주는 센서 업데이트 값을 받아 저장해둡니다. 예를 들어 온습도 센서가 주기적으로 온습도값을 보내주면 홈파이는 이걸 계속 저장해둡니다. 사용자가 챗을 통해 시간대별 값의 변화를 열람해 볼 수 있습니다. "출력 (장치넘버) (데이터 갯수)" 명령으로 센서 값의 리스트를 볼 수 있습니다.

하지만 텍스트로 센서값을 보는 것은 가독성이 떨어지기 때문에 그래프로 보여주는 기능도 있습니다. "그래프 (장치넘버) (데이터 갯수)" 명령을 봇에게 보내면 봇은 해당되는 센서값을 추출해 그래프로 그린 뒤, 이미지 파일로 보내줍니다!!

센서 장치에서 사용자에게 중요한 이벤트가 발생했을 때 봇이 알려줘야할 필요도 있을 것입니다. 이때는 알림 기능을 사용하면 됩니다. "알림 추가 (장치넘버) (조건1) ... (조건4)" 명령을 통해 알림을 추가할 수 있습니다. 센서장치가 보내주는 값이 지정한 조건에 맞으면 봇이 메시지로 알려줍니다. 모든 알림은 "알림" 명령으로 열람할 수 있습니다.

매크로를 만들어 작업을 자동화 할 수 있습니다. "매크로" 명령으로 현재 설정된 모든 매크로를 볼 수 있으며, "매크로 추가 (알림ID) (명령어)" 명령으로 특정 알림이 활성화 될 때 자동으로 명령어가 실행되도록 할 수 있습니다. 여기서 (명령어) 부분에 입력 가능한 명령어는 제한이 없습니다. 예를 들어 "매크로 추가 1 pic" 이란 매크로를 생성하면... 센서값 업데이트 메시지가 들어왔을 때 알림 1의 조건에 부합한다면 자동으로 사진을 촬영해서 챗으로 전송해줍니다.

이 외에도 CCTV, 사진 촬영 등의 기본 기능들을 명령어로 제어할 수 있습니다.

홈파이에서 제공하는 명령어 리스트는 아래 링크를 참고하세요.

링크 : http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=lecture_rpi&wr_id=31

라즈베리파이로 홈파이 서버 만들기

홈파이 서버를 구성하기 위해서는 아래와 같은 준비물이 필요합니다.

  • 라즈베리파이 (SD카드 및 USB, HDMI, 랜 케이블 등 포함)
  • 파이 카메라
  • HC-11 433MHz RF 모듈

라즈베리파이에 홈파이 서버를 구성하기 위해서는 긴 설정 과정을 거쳐야 합니다. 다뤄야 할 양이 꽤 되므로 별도의 문서로 만들었습니다.

링크 : http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=lecture_rpi&wr_id=38

홈파이 서버만 고독하게 돌아가서는 CCTV, 사진 촬영 정도의 기능 정도만 쓸 수 있을 뿐... 센서 장치도 만들어서 연동해봐야 합니다. 간단하게 온습도 센서와 LED 제어장치를 만들어서 연동해 볼 수 있도록 예제 매뉴얼을 만들어 뒀습니다.

링크 : http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=lecture_rpi&wr_id=34

홈파이 프로토콜

자신이 직접 만든 장치를 홈파이와 연동하고 싶다면 홈파이 프로토콜 문서를 보고 필요한 값 들을 설정해줘야 합니다. 홈파이가 동작하는 세부 시나리오와 프로토콜의 구성, 사용자가 선택해야 할 항목을 정리해 뒀습니다.

링크 : http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=lecture_rpi&wr_id=33

공유와 개선

홈파이는 오픈소스 프로젝트이며 LGPL v3 (GNU LESSER GENERAL PUBLIC LICENSE v3)를 적용하고 있습니다. 소스코드의 업데이트는 아래 공식 배포 페이지를 통해 이루어집니다.

홈파이(HomePy) 다운로드 : https://github.com/godstale/HomePy

홈파이를 이용한 홈 오토메이션, 자동화, 모니터링 사례가 생기는 대로 Project 게시판에 올리도록 하겠습니다. 자신만의 홈 오토메이션 사례를 제작하셨다면 아래 게시판을 통해 소개해주세요.

내 프로젝트 게시판 : http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=project_my

홈파이의 코드 개선, 기능 개선 등 알려주실게 있으시면 가차없이 자유게시판에 글을 올려주시길 부탁드립니다. 궁금하신게 있다면 QnA 게시판을 이용해주세요.

자유게시판 : http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=freeboard

QnA 게시판 : http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=qna