레이블이 push notification인 게시물을 표시합니다. 모든 게시물 표시
레이블이 push notification인 게시물을 표시합니다. 모든 게시물 표시

2015년 8월 20일 목요일

Blynk를 사용해 아두이노에서 IoT 맛보기

Blynk (http://www.blynk.cc)를 사용하면 아두이노를 스마트폰이나 PC와 연결하여 매우 쉽게 제어가 가능해진다. 물론 아두이노 뿐 아니고 ESP8266이나 Raspberry Pi등에서도 사용이 가능하다. 현재 사용할 수 있는 하드웨어 목록은 http://community.blynk.cc/t/hardware-supported-by-blynk/16 에서 확인할 수 있다.


여기서는 아두이노 우노에 CC3000 Wifi shield를 사용해 보도록 한다.



먼저 CC3000 Wifi shield를 위해 Adafruit_CC3000 Library를 설치해준다. https://github.com/adafruit/Adafruit_CC3000_Library 에서 다운받을 수 있다. (라이브러리 설치 방법은 이전 포스트 (http://arsviator.blogspot.kr/2015/07/install-library-in-arduino.html)

다음은 Blynk 라이브러리를 설치해 줘야 한다. https://github.com/blynkkk/blynk-library 에서 다운받으면 된다.

정상적으로 설치를 완료했으면 아두이노를 재시동하고 예제 -> Blynk -> BoardsAndShields 에서 CC3000을 선택한다.


코드 구조는 매우 간단하다. 단 코드중에 아래 표시한 부분은 각자 자신에 맞게 변경해 줘야만 한다.


일단 여기까지 진행하였으면 아두이노는 일단 잠시 놔두고 스마트폰을 설정해 준다.



Blynk 홈페이지에 보면 iOS와 안드로이드용 앱을 다운받을 수 있는 링크가 있다. 자신의 폰에 맞는걸 선택해 자신의 폰에 Blynk 앱을 설치해 준다.


앱을 실행해 서비스에 가입해주면 된다. 가입 후 로그인 되면 다음과 같은 초기화면을 볼 수 있을 것이다.


Create New Project를 눌러 새 프로젝트를 생성한다.


프로젝트 이름(여기서는 FirstTest)을 써주고, 사용할 보드(여기서는 아두이노 우노)를 선택한다. 그 아래쪽의 Auth Token이 아두이노 스케치 코드에 넣어줘야 하는 값이다. E-mail 버튼을 누르면 가입시 사용한 메일주소로 이 토큰값이 메일로 보내지기 때문에 메일에서 복사해 붙이면 된다. 이제 Create Project 버튼을 눌러주면 프로젝트가 만들어진다.


이제 화면을 디자인해야 하므로 화면 검은색 부분중에 원하는 부분을 터치한다.


그럼 위와 같이 설치할 수 있는 위젯 목록이 나타난다. 여기서는 단순히 아두이노에 있는 LED on/off를 제어하기 위해 Button을 선택한다.


원하는 위치에 버튼이 추가되었다. 이제 버튼의 설정을 변경해 주기 위해 버튼을 터치한다.


버튼 설정 화면이다. 여기서 버튼의 이름(여기서는 LED)을 지정하고, 이 버튼이 아두이노의 어떤 핀과 연동될 것인지 알려준다. (아두이노 보드에 붙어있는 LED는 D13에 연결되어 있으므로 Digital에 D13을 선택)


설정이 끝나면 스위치의 이름과 연동된 핀 번호가 스위치에 표시된다. 디자인이 다 끝나고 실제 동작을 시키려면 맨 오른쪽 위의 삼각형 버튼을 선택해주면 된다.


아두이노 코드에 Auth Token 값을 넣어주고, setup() 함수에 pinMode(13, OUTPUT); 을 추가한 다음 아두이노에 업로드 하면 된다.

업로드 후 시리얼 모니터를 열어봤을 때 다음과 같이 출력되면 된다.


이제 스마트폰의 버튼을 눌러보면 그에 따라 아두이노의 LED가 on/off 되는걸 볼 수 있을 것이다.

Blynk에는 단순히 스위치 뿐 아니고 슬라이드, 조이스틱, 그래프등의 다양한 위젯이 있어 스마트폰에서 아두이노에 연결된 액츄에이터를 제어하거나, 반대로 아두이노에 연결되어 있는 센서들의 상태를 다양한 방법으로 확인이 가능하다. 또한 Push notification이나 Twitter 위젯도 있어 아두이노가 특정 상태가 되면 폰으로 push 메시지를 보내거나 트위터에 메시지를 트윗하는것도 가능하다. 다음 포스트에서 blynk를 좀 더 다양하게 사용하는걸 다뤄보도록 하겠다.

























2015년 2월 2일 월요일

에디슨에서 pushetta를 사용해 스마트폰으로 푸쉬 메시지 보내기

Pushetta documentation에 보면 실제로 메시지를 보내는 간단한 예제들을 찾아볼 수 있다.
여기서는 에디슨에서 바로 사용할 수 있는 python과 node.js를 사용해 메시지를 보내보겠다.

python 의 경우 documentation에 있는 코드를 그대로 사용하면 된다.


import
urllib2 import json data = { "body" : "Hello World", "message_type" : "text/plain", "expire" : "2015-01-01" } req = urllib2.Request('http://api.pushetta.com/api/pushes/my%20%edision%20alert/') req.add_header('Content-Type', 'application/json') req.add_header('Authorization', 'Token c4d......89') response = urllib2.urlopen(req, json.dumps(data))

위의 코드에서 빨간색 볼드체 부분만 자신의 경우에 맞게 수정해주면 된다. 'Hello World' 부분이 자신이 실제로 보내고자 하는 메시지가 되고, my%20edision%20alert에는 자신이 만든 채널 이름을, c4d......07 부분에 자신의 API key (Pushetta 홈페이지의 Dashboard에서 확인할 수 있음)을 넣어주면 된다.

만일 위의 코드를 pushettatest.py라는 이름으로 저장했다면 다음과 같이 실행하면 된다.

# python pushettatest.py


실행한 후 스마트폰을 보면 아래와 같이 메시지가 온걸 확인할 수 있을 것이다.


Node.js에서도 유사한 방법으로 메시지를 보낼 수 있다.

# cat pushettatest.js
var http=require('http');

var opt = {
  host: 'api.pushetta.com',
  path: '/api/pushes/my%20edison%20alert/',
  headers: {'Content-type': 'application/json',
            'Authorization': 'Token c4d....89'},
  method: 'POST'
};

cb = function(resp) {
  var str = '';
  resp.on('data', function(chunk) {
    str += chunk;
  });

  resp.on('end', function() {
    console.log(str);
  });
}

var msg = {'body':'Hello from nodejs'};
msg.message_type='text/plain';
msg.expire='2015-12-31';

var req = http.request(opt,cb);

req.write(JSON.stringify(msg));
req.end();
# node pushetta.js
{"success": true, "error_code": ""}
#



여기서는 에디슨에서 실행을 시켰지만 리눅스를 실행하는 다른 보드(Raspberry pi, Beaglebone Black 등)에서도 동일하게 적용할 수 있다. 또한 documentation을 참고하면 아두이노에 ethernet shield를 붙여서도 메시지를 보낼 수 있다.




2015년 2월 1일 일요일

아이폰이나 안드로이드폰으로 원하는 푸쉬메시지를 보내는 방법....Pushetta

아이폰이나 안드로이드 폰에 푸쉬를 통해 리얼타임으로 원하는 notification message을 보낼 수 있는 방법으로 pushetta 가 있다.


먼저 pushetta에 가입을 해야 한다. (http://www.pushetta.com)

이메일 주소만 있으면 무료로 쉽게 가입할 수 있다.


가입을 한 후 로그인 하면 나오는 초기화면이다.


Dashboard로 가 보면 자신의 API 키를 확인할 수 있다. 이 API 키를 알아야 추후 푸쉬 메시지를 보낼 수 있다.


이제 'New Channel' 버튼을 눌러 새로운 채널을 생성한다.


'Add a Channel' 버튼을 눌러준다.


새로 만들 채널에 대한 정보를 넣어준다. 채널 사진은 꼭 256x256 픽셀 크기여야만 한다. Channel Name은 나중에 이 채널을 검색할 때 사용하기 때문에 정확하게 넣어줘야 한다. 자신의 채널 이름이 다른 사람에게는 보이지 않게 하려면 'Hidden'을 체크해주면 된다.


'Create' 버튼을 누르면 채널이 생성되었고 위와 같은 채널에 대한 화면이 나오게 된다.

이제 스마트폰에 Pushetta 앱을 설치한다.



앱을 실행하면 아래와 같은 초기화면이 나타난다.


화면 좌측 상단의 '+' 버튼을 클릭해 채널을 등록해준다.


아까 만든 채널 이름을 넣어주면 된다.


채널을 선택하면 바로 메시지를 받을 수 있는게 아니고 채널 오너에게 요청메일이 날라가게 되고 오너가 허가를 해 줘야 메시지를 받을 수 있게 된다.

가입할 때 기입한 이메일로 요청이 왔다는 메일이 날라오게 된다. 메일의 링크를 클릭하면 pushetta 페이지의 채널 정보 페이지로 가게 되고 pending request가 있다고 표시가 되어 있다.


빨간색 'Pending requests' 버튼을 클릭하면 아래 화면이 나오게 된다.


디바이스 정보를 확인하고 녹색 체크 표시를 클릭해주면 허가를 해 주는 것이다.


오른쪽 아래에 방금 허가해 준 장치가 표시되어 있는걸 확인할 수 있다.

이제 스마트폰에서도 앱의 My Channel 탭으로 가 보면 채널이 등록된걸 볼 수 있다.


이제 실제로 푸쉬 메시지를 보내보도록 하겠다. 웹페이지의 'Push a message' 부분에 자신이 원하는 메시지를 써 넣고 'Send' 버튼을 누르면 된다. 버튼을 누르면 스마트폰에 곧바로 푸쉬 메시지가 전송된다.



앱의 'Notification' 탭으로 가 보면 방금 보낸 메시지의 내용을 확인할 수 있다.



이렇게 간단하게 자신이 원하는 메시지를 푸쉬를 통해 스마트폰에 리얼타임으로 바로 보낼 수 있다. 여기서는 테스트를 위해 홈페이지에서 메시지를 보냈지만 표준 web API를 사용하고 있기 때문에 다양한 언어(python, javascript 등등)및 여러 디바이스(아두이노, Raspberry Pi, Edison 등등)에서 스마트폰으로 푸쉬 메시지를 보낼 수 있어 매우 다양한 방법으로 사용할 수 있다.

다음 포스트에서는 에디슨에 센서를 연결해 사람이 문으로 들어오면 스마트폰으로 알려주는 데모를 만들어 보도록 하겠다.