티스토리 뷰

HardWare/ARTIK

[ARTIK 050] ARTIK Cloud & MQTT

White Whale 2016. 9. 13. 12:21
728x90

1. ARTIK Cloud 홈페이지

  

  우선 ARTIK 홈페이지로 들어갑니다. 그리고 로그인을 합니다. 


ARTIK(https://www.artik.io/) : 해당 페이지에서는 아틱에 관련한 소개 및 공지사항과 같은 정보를 알 수 있습니다.


ARTIK Cloud(https://artik.cloud/) : ARTIK Cloud 페이지는 클라우드에 연결되어 있는 디바이스가 보내는 값들을 그래프로 하여 시각적을 볼 수있고 또한 연결되어 있는 디바이스에게 신호를 보낼 수 있습니다.


ARTIK Developers(https://developer.artik.cloud/) : 클라우드에 연결되는 장치를 정의하는 페이지 입니다. 쉽게 말하면 장치를 표현하는 class를 만드는 곳이라고 생각하시면 됩니다. 



2. DEVICED TYPES 정의

  

  ARTIK Developers 싸이트에서 DEVICE TYPES을 누릅니다. 앞서 말했듯이 현재 해당 페이지에서 하고 있는 것은 저희가 MQTT를 이용할 디바이스를 정의하는 것입니다.


먼저 NEW DEVICE TYPE을 누릅니다.  


자신이 등록할 디바이스의 이름고유 코드를 지정합니다.


다음은 Fields를 정의합니다. Fields들은 디바이스가 클라우드로 메세지 보낼 때 들어가는 내용이라 생각하면 됩니다. 메세지 내부에서는 'Field' = 'value'와 같은 형태로 보내집니다.


 이후 Actions를 정의합니다. Action은 클라우드가 메세지를 받고 Role과 비교하여 특정 조건에 성립될 시, 클라우드가 디바이스로 보내는 메세지 내용이라고 생각하면 됩니다.


정의한 Fields와 Actions를 확인하고 Device Type을 생성합니다.



3. Cloud에 DEVICED 정의

  

  다시 ARTIK Cloud(https://artik.cloud/)홈페이지로 이동합니다. 그리고 MY ARTIK CLOUD에서 DEVICES를 선택합니다.


Connnect New Device를 누르시고 첫번째는 이전에 만든 Device Type을 아래는 클라우드에 저장될 디바이스 이름을 적으시면 됩니다.


생성된 것을 확인하시면 해당 디바이스의 설정 페이지로 가기위한 톱니바퀴 모양의 버튼을 누릅니다.


토큰을 생성하신 후 DEVICE IDDEVICE TOKEN따로 메모해 둡니다.


RULES 페이지로 이동합니다.


특정 메세지가 왔을 때 디바이스에게 어떤 메세지를 전달할 것인지 정합니다. 그리고 저장합니다.


4. ARTIK MQTT Souce Code

  

  기존 WICED가 제공하는 MQTT 라이브러리를 저가 수정한 라이브러리로 변경합니다.


libraries.zip


이후 기본 예제소스의 int connect(int argc,char *argv[]) 함수 내부를 살짝 변경합니다.


삼성 클라우드 즉 아틱 크라우드는 예전에는 1883포트로 특별한 조치 없이 접근할 수 있었지만 현재 8883으로 변경되면서 SSL로 접속을 해야합니다. 그러나 WICED에서는 SSL로 접근할 시 무조건 인증서를 입력하도록 되어있습니다. 이를 해결하기 위해 라이브러리 코드를 수정하였고 위 사진과 같이 conninfo.password와 conninfo.username의 값을 각각 DEVICE TOKEN과 DEVICE ID로 변경하고 wiced_mqtt_connect 함수를 사용하시면 됩니다. 5번째 파라메터로 들어간 NULL은 인증서이며, 다음 파라메터는 SSL접속 사용 여부를 나타내는 파라메터입니다.


SourceCode는 https://github.com/cckr2/ARITK/에서 다운받으실 수 있습니다. 또한 기존 MQTT 서버를 이용하시면 기존 예제를 사용하셔도 무방합니다.



5. Result

  

  우선 MY ARTIK CLOUD -> CHARTS를 누릅니다.

이후 왼쪽 상단에서 어떤것을 볼것인지 선택을 하시고 우측 상단에 재생버튼을 누릅니다.


다음은 보드입니다. 먼저 ARTIK 050 보드에 해당 코드를 업로드하여 실행시킵니다.


저의 MQTT 예제에서는 기존 MQTT 예제와 다르게 커맨드가 아닌 자동으로 저장된 공유기에 접속합니다.


이후 Samsung Cloud Server ip를 알기 위해 명령 프로토콜에서 ping을 날려봅니다.

 핑을 날리는 이유는 해당 예제에서는 도메인으로 접근하는 것이 안되기 때문입니다. 또한 삼성 서버가 DHCP로 부터 IP를 받아와 일정 시간이 지나면 IP가 변경되기 때문에 자주 확인해 주시던가 따로 코드로 해결하셔야 합니다.


IP 주소를 알아내면 콘솔창에 입력을  합니다. 연결 순서는 다음과 같습니다.


  mqtt_init

  mqtt_connect <server ip> <topic>



연결에 아무 이상이 없으며 메세지를 보내봅니다. 커맨드는 다음과 같습니다.


  mqtt_publish <qos> <topic> <payload> 


qos는 0, 1, 2이며 메세지에 대한 정확성 보장에 대한 파라메터입니다. 0은 보내기만 하며 수신을 보장하지 않습니다.


아래는 ARTIK Cloud의 CHARTS에서 메세지가 들어왔다는 것을 시각적으로 표현해주는것 입니다.


다음은 mqtt subscribe입니다. 해당 subscribe는 기존 MQTT와 다르게 TOPIC에 들어오는 모든 메세지를 출력해 주는것이 아니라 RULES로 설정해서 클라우드가 보드에게 보내는 메세지를 캡쳐합니다.


커맨드는 mqtt_subscribe <topic> <qos>이며 커맨드 입력 시 쓰레드로 하여 백그라운드에서 수신대기하고 있습니다.


ARTIK 2대를 이용한 테스트 결과입니다. 



RULES 설정시 parameters와 조건을 더 넣는다면 효과적으로 디바이스를 제어하실 수 있을 껍니다.



6. 관련 문서 및 출처

  

  •  https://www.artik.io

  •  IoT Innovation Challenge 삼성 ARTIK 기술경진대회 교육자료



'HardWare > ARTIK' 카테고리의 다른 글

[ARTIK 050] Thread  (0) 2016.10.17
[ARTIK 050] RGB LED(LS5050RGB, KY-009)  (0) 2016.10.17
[ARTIK 050] ADC(MCP3208) - SPI Sample  (1) 2016.09.12
[ARTIK 050] GPIO 사용하기  (0) 2016.09.12
[ARTIK 050] 개발 툴 킷 WICED 설치  (0) 2016.09.12
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함