본문 바로가기

프로그래밍/아두이노+카카오톡

아두이노와 카카오톡(옐로우아이디) 연동 마무리

이전 포스팅까지는 카카오톡 yellow id와 서버를 연동하여 echo서버를 만드는 것 까지 완료 하였다



위 그림과 같이 echo server가 완벽하게 잘 동작 되는 것을 알 수 있다. 속도도 매우 빠르다. 그럼 이 echo서버에 간단한 구조로 변경시켜 smart home의 가장 기초 중에 하나인 온도를 측정하는 장비와 server가 통신하게 하여 집안 온도를 실시간으로 카카오톡에서 볼 수 있도록 만들고자 하였다.


자세한 구조는 아래 그림과 같다.

원래는 사물인터넷이나 혹은 스마트홈을 구성하기 위해서는 데이터를 저장하는 storage를 따로 생성해야 하지만 이번 포스팅에서는 간략하고 빠른 개발을 위해서 따로 스토리지를 생성하지는 않았다. 만약에 다음에 생성할 경우에는 mongoDB나 혹은 python FLASK과 궁합이 잘 맞는 스토리지를 사용할 것으로 보인다.


이번 포스팅에서는 전역 변수를 생성하여 값을 한개의 값만 저장하도록 하였다.


Arduino wifi shield는 http request를 통해서 매 10초마다 /api/temperature/<temp> 를 호출하게된다. <temp>에는 실시간으로 측정한 온도 데이터가 달려 나가게 되는데, http request가 이루어 지면 <temp>값을 전역변수인 global_temperature에 저장하게되고, date_time을 update한 시간으로 저장한다.


그리고 카카오톡 옐로우아이디로 부터 message request 중에 "temperature"이라는 단어가 오게 되면 global_temperature과 date_time을 적절히 조합하여 메시지로 return하게 되는 구조이다. 코드는 아래와 같다.



코드. 파이썬 flask서버 코드

- 주의 -

IBM Bluemix에서 제공하는 python flask 서버를 사용할 경우 기본적인 favicon.ico에 대한 처리가 없어서 chrome에서 접속 할 경우 404 error가 뜨므로 favicon에 대한 처리가 추가적으로 반드시 들어가야 에러가 뜨지 않는다.(에러가 뜰 경우 서버가 멈추는 현상이 발견됨) 

fabicon.ico의 위치는 static/favicon.ico 이다.



코드. 아두이노 wifi shield 코드



smart home에서 가져오는 데이터는 간단한 온도 센서를 통해서 데이터를 가져오도록 하였다.



3D프린터 위에 wifi shield와 센서를 올려서 3D프린터 위의 온도를 측정하고자 하였다.



기본 옐로우아이디 챗팅방



temperature이라고 문장을 보내면



위 그림과 같이 마지막으로 측정한 시간과 온도를 보여주게 된다.

위 내용을 토대로

2016년 10월 28일 오후 10시 15분에는 섭씨 26도, 11시에는 섭씨 28도로 측정된 것을 볼 수 있다.


매우 단순한 형태의 서버 동작으로 하드웨어와 카카오톡 옐로우아이디를 연동해보았다. 옐로우아이디는 카카오톡 플랫폼을 사용한다는 점에서 매우 활용도가 뛰어나다. 일반적으로 사용자들이 서비스를 사용시에 새로운 앱을 깔기 귀찮아하고 거부감이 있을 수 있다. 그러한 거부감이나 귀차니즘을 카카오톡 플랫폼에서 사용할 수 있다는 점에서 타파할 수 있다고 볼 수 있다.


이번 포스팅에서는 온도만 측정했지만 더 나아가서 릴레이모듈을 사용하면 전구를 제어할 수도 있을 것이며, 서보모터를 이용하여 가스벨브제어, 화염감지센서를 사용한 화재감지 시스템 등 여러가지 방면으로 활용 될 수 있음을 입증하였다


물론 아직 넘어야 할 산은 많다.


어떻게 특정 하드웨어와 특정 옐로우아이디를 연결할 것인지, 보안 issue는 어떻게 할 것인지 등의 문제가 있다.


위와 같은 장애물을 넘고 여러 아이디어를 조합한다면 멋진 아이템들이 나올 수 있을 것으로 보인다.


읽어주셔서 감사합니다.