라즈베리파이로 슬랙 봇 개발하기

27
임임임임 임임임 임임 201002632 임임임 - 임임 임임 임임임 (a.k.a JARVIS) -

Upload: yunseop-song

Post on 15-Apr-2017

112 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: 라즈베리파이로 슬랙 봇 개발하기

임베디드 시스템 설계

201002632 송윤섭

- 개인 비서 만들기 (a.k.a JARVIS) -

Page 2: 라즈베리파이로 슬랙 봇 개발하기

목차

1. 시스템 기획2. 개발 과정3. 기능4. 후기 5. Q & A

-2-

Page 3: 라즈베리파이로 슬랙 봇 개발하기

시스템 기획

+

개인 비서 만들기 (a.k.a JARVIS)

-3-

Page 4: 라즈베리파이로 슬랙 봇 개발하기

예상 시스템 구성도

라즈베리파이메신저 플랫폼온습도센서

카메라

적외선센서초음파센서

시스템 기획

-4-

Page 5: 라즈베리파이로 슬랙 봇 개발하기

시스템 기획

개발 경험선행 사례API 문서화인지도예상 개발 난이도

메신저 플랫폼 ?

있음없음 없음보통많음 적음

잘 되어 있음 ( 게다가 한글 !)매우 잘 되어있음 보통Facebook 안쓰는 사람 ?아는 사람 별로 없음 글로벌 메신저

보통쉬움 어려워 보임흥미 이미 해봐서 별로해보고 싶음 나중에

Facebook MessengerSlack LINE

-5-

Page 6: 라즈베리파이로 슬랙 봇 개발하기

온습도센서

카메라

완성된 시스템 구성도

python-rtmbot

+

-6-

시스템 기획

Page 7: 라즈베리파이로 슬랙 봇 개발하기

개발 과정Slack Bot UserBot User 생성 https://my.slack.com/services/new/bot 접속하고 이름만 적고 버튼 클릭하면 생성됨

-7-

Page 8: 라즈베리파이로 슬랙 봇 개발하기

개발 과정Slack Bot UserAPI Token 을 사용해서 Real Time Messaging API 를 사용할 수 있음Token 은 노출되지 않게 조심

더 자세한 가이드는 홈페이지 (https://api.slack.com/bot-users) 에서 -8-

Page 9: 라즈베리파이로 슬랙 봇 개발하기

개발 과정python-rtmbot

Jarvis 플러그인

A Slack bot written in Python that connects via the RTM API.Slack 의 Real Time Messaging API 를 편리하게 사용하는 Python 라이브러리자세한 사용법은 Github(https://github.com/slackhq/python-rtmbot) 페이지에 나와있음

-9-

개발중 에러가 발생하면 메세지를 보내 디버깅이 쉬워짐

Page 10: 라즈베리파이로 슬랙 봇 개발하기

개발 과정DjangoThe web framework for perfectionists with deadline.Python Full Stack 웹 프레임 워크문서는 공식 홈페이지 (https://www.djangoproject.com/) 에 잘 나와있음장고걸스 튜토리얼 (https://djangogirlsseoul.gitbooks.io/tutorial/content/) 이 한국어로 잘 되어 있음터미널에서 4 줄만 치면 웹 서버가 올라감$ pip install django$ django-admin startproject myproject$ cd myproject$ python manage.py runserver

-10-

Page 11: 라즈베리파이로 슬랙 봇 개발하기

개발 과정Django-crontabdead simple crontab powered job scheduling for django (1.8+).역시 Github(https://github.com/kraiz/django-crontab) 에 문서화가 잘 되어있음장고의 ORM 을 그대로 사용할 수 있어서 코드량이 매우 감소함온습도를 1 분 마다 측정해서 DB 에 저장하기 위해 사용

-11-

$ python manage.py crontab add

Page 12: 라즈베리파이로 슬랙 봇 개발하기

개발 과정Chart.jsSimple yet flexible JavaScript charting for designers & developersJavascript 차트 라이브러리Chart.js 역시 API 문서 (http://www.chartjs.org/docs/) 가 잘 되어 있어서 참고하면 됨

-12-

Page 13: 라즈베리파이로 슬랙 봇 개발하기

개발 과정날씨 크롤러기상청 홈페이지에서 아래 빨간 영역을 가져오는 기능http://www.kma.go.kr/weather/forecast/timeseries.jsp?searchType=INTEREST&dongCode=1159068000URL 을 보면 알수 있듯이 각 동에 해당하는 코드를 넣어서 조회를 할 수 있음동 코드는 행정표준코드관리시스템 (https://www.code.go.kr/jsp/index.jsp) 에서 다운로드하지만 법정동코드와 기상청 동코드가 시 / 구 아래로 내려가면 다른구역이 많음

-13-

Page 14: 라즈베리파이로 슬랙 봇 개발하기

개발 과정날씨 크롤러Python 라이브러리인 requests, BeautifulSoup 을 사용함requesets 는 Http 라이브러리BeautifulSoup 은 HTML parsing 라이브러리

-14-

Page 15: 라즈베리파이로 슬랙 봇 개발하기

기능기능 목록

-15-

Page 16: 라즈베리파이로 슬랙 봇 개발하기

기능온습도

-16-

Page 17: 라즈베리파이로 슬랙 봇 개발하기

기능사진 캡쳐

-17-

Page 18: 라즈베리파이로 슬랙 봇 개발하기

기능날씨 검색

-18-

Page 19: 라즈베리파이로 슬랙 봇 개발하기

기능Todo list

-19-

Page 20: 라즈베리파이로 슬랙 봇 개발하기

기능메뉴 추천

-20-

Page 21: 라즈베리파이로 슬랙 봇 개발하기

기능홈 화면

-21-

Page 22: 라즈베리파이로 슬랙 봇 개발하기

기능온습도 그래프

-22-

Page 23: 라즈베리파이로 슬랙 봇 개발하기

기능사진 갤러리

-23-

Page 24: 라즈베리파이로 슬랙 봇 개발하기

기능Todo List

-24-

Page 25: 라즈베리파이로 슬랙 봇 개발하기

후기

- 문서만 잘 봐도 이미 개발 반은 함- 자연어 처리에 능력이 있었다면 더 고급진 챗봇을 만들수 있었을텐데 그 점이 조금 아쉬움- 라즈베리파이 성능이 생각보다 좋아서 개인 블로그용 서버로 사용해도 좋을것 같음

-25-

Page 26: 라즈베리파이로 슬랙 봇 개발하기

Q & A

Page 27: 라즈베리파이로 슬랙 봇 개발하기

감사합니다

201002632 송윤섭

- 개인 비서 만들기 (a.k.a JARVIS) -