위즈네트 아카데미

TUTORIAL

튜토리얼

Home  > 튜토리얼

KT 클라우드와 WizFi310 연동하기

WIZnet Academy 2016.08.12 10:58 조회 수 : 116

WizFi310 은 위즈네트의 최신 무선 Wi-Fi 모듈로 임베디드 디바이스에 쉽고 간편하게 WiFi 기능을 추가할 수 있도록 설계된 제품입니다.

이번 튜토리얼에서는 국내 KT 클라우드 서비스인 IoTMakers 서비스 이용을 위해 필요한 내용을 단계적으로 접근해 보고, WizFi310 을 통해 데이터 전송을 시도해보는 방법에 대해서 설명합니다.

Step 1 : IoTMakers 계정 생성하기


1. 계정을 등록하기

아래의 링크에서 계정을 등록합니다.

http://iotmakers.olleh.com/

2. 디바이스 등록하기

아래의 링크에서 동작시키고자 하는 디바이스의 정보를 입력합니다.

http://iotmakers.olleh.com/openp/index.html#/device

디바이스 이름, 아이디, 비밀번호등을 차례로 입력하고 프로토콜은 KT 표준 인터페이스인 MQTT 방식을 선택합니다.

kt_iot_1

디바이스 등록이 끝나면 아래와 같은 화면을 볼 수 있습니다.

(기본 등록 후에 WizFi310 사진을 추가했음)

kt_iot_2

여기에서 중요한 것은 아래와 3가지 정보입니다.

  • 디바이스 아이디

  • 디바이스 패스워드

  • Gateway 연결 ID


 

3. Tag Stream 등록하기

디바이스 등록후에는 태그 스트림을 등록해야 합니다.

태그 스트림에 단위(Unit), 스트림 타입(수집/제어), 밸류 타입(숫자/문자)을 설정합니다. 하나의 디바이스는 여러 개의 태그를 가질 수 있습니다.

테스트를 위해서는 온도 센서를 가정하여 Temperature를 아래와 같이 생성하였습니다.

kt_iot_3

 

Step 2 : IoTMakers에 접속하기


KT에서 IoT 구현을 위해서 사물 디바이스들에게 제시하는 통신 형태에는 아래와 같은 것들이 있습니다.

kt_iot_4

이 중에서 MQTT 방식을 사용하여 통신을 하도록 하겠습니다.

실제 KT에서는 MQTT 기본 프로토콜에 KT 나름의 통신 프로토콜을 정의해서 함수들을 Wrapping하여 사용하고 있습니다. 아래 KT MQTT IoT SDK 구조를 보면, paho MQTT, Json Parser  뿐만 아니라 다양한 라이브러리와 소스들로 이루어진 것을 확인할 수 있습니다.

kt_iot_5

WizFi310은 KT MQTT 스택을 이미 포함, 위의 SDK를 사용하지 않고도 간단한 AT 명령어 몇 개 만으로 KT IoT 클라우드에 쉽게 접속 할 수 있도록 구현 되어 있습니다.

자, 그럼, 이제 WizFi310을 이용하여 KT IoT 클라우드에 접속해 보겠습니다.

먼저, WizFi310을 공유기(AP)에 Association 합니다.
WizFi310 Version 1.0.1.0 (WIZnet Co.Ltd)

AT+WSET=0,WizFiDemoAP
[OK]

AT+WSEC=0,,12345678
[OK]

AT+WNET=1
[OK]

AT+WJOIN

[Link-Up Event]
IP Addr : 192.168.3.52
Gateway : 192.168.3.1
[OK]

그리고, KT MQTT 접속을 위한 설정을 하고 KT IoT 클라우드 서버에 접속합니다.

여기에 사용되는 명령어는 아래와 같습니다.

AT+MQTTSET=<userName>,<password>,<clientID>,<aliveTime>

userName  : MQTT User Name

password   : MQTT password

aliveTime   : MQTT alive Time



AT+MQTTKTSET=<GWID>,<deviceID>,<password>

GWID     : Gateway 연결 ID

deviceID  : Device ID

password : Device Password

AT+MQTTCON=<Con/Discon>,<BrokerIP>,<BrokerPort><SSL_Enable>

Con/Discon : 0(Disconnect) 1(Connect)
  BrokerIP     :  IP address of the broker

  BrokerPort  :  Port of the broker

  SSLEnable   : 0(SSL Disable, Default) 1(SSL Enable)




T+MQTTSET=,,,30,0  (30은 MQTT Alive Time)
[OK]

AT+MQTTKTSET=OPEN_MQTT_00*******_10000*****,WizFi310ID0001,ymyh*****
[OK]

AT+MQTTCON=2,220.90.216.90,10030,0

[MQTT CONNECT]
{Q,out/WizFi310ID0001,,104}{"athnRqtNo":"ymyh*****","athnNo":"00000000*****366000000003B9*****","respCd":"100","respMsg":"SUCCESS"}
[OK]

위의 로그를 보면, 위에서 설명한 디바이스 아이디, 디바이스 패스워드, Gateway 연결 ID 등이 사용된 것을 알 수 있습니다.

지금까지의 설명은 아래 구성도와 같이 PC가 KT IoT 클라우드에 접속하기 위해서 WizFi310을 사용한 경우로,  Linux나 Windows가 아닌 저사양 MCU들(8/16/32 Bit )도 KT MQTT 스택을 내장한 WizFi310을 사용하면, 어렵지 않게 KT IoT 클라우드에 접속할 수 있습니다.

kt_iot_6

Step 3 : IoTMakers에 데이터 전송하기


KT IoT 클라우드에 접속에 성공을 했으니, 이젠 실제 데이터를 클라우드에 보내보도록 하겠습니다.

KT IoT 클라우드에서 지원하는 데이터 타입은 문자 형태와 숫자 형태가 있고, TagID를 식별자로 사용합니다. KT IoT SDK에서는 이를 JSON을 이용하여 데이터를 만들어서, KT IoTMakers 메시지 포맷으로 감싼 후에 이를 MQTT 메시지 데이터를 전송하고 있습니다.

하지만 WizFi310을 이용하면 KT IoT 클라우드에서 요구하는 패킷 형태를 따로 만들 필요 없이, 아래의 명령어만 사용하면 됩니다.

AT+MQTTKTPUB=dataType,dataID,dataValue

dataType  : s(문자형)/d(숫자형)

dataID     : Data ID(Tag Stream ID) (http://ilikethisplus.tistory.com/48 참조)

dataValue : Data Value

ex1) AT+MQTTKT=s,switch,ON


ex2) AT+MQTTKT=s,switch,OFF




ex3) AT+MQTTKT=d,Temperature,11.3



아래는 실제로 WizFi310을 이용하여 데이터를 전송하는 로그 입니다.


WizFi310 Version 1.0.1.0 (WIZnet Co.Ltd)

AT+WSET=0,WizFiDemoAP
[OK]

AT+WSEC=0,,12345678
[OK]

AT+WNET=1
[OK]

AT+WJOIN

[Link-Up Event]
IP Addr : 192.168.3.52
Gateway : 192.168.3.1
[OK]

AT+MQTTSET=,,,30,0
[OK]

AT+MQTTKTSET=OPEN_MQTT_001PTL001_10000*****,WizFi310ID0001,ymy*****x
[OK]

AT+MQTTCON=2,220.90.216.90,10030,0

[MQTT CONNECT]
{Q,out/WizFi310ID0001,,104}{"athnRqtNo":"ymy*****x","athnNo":"000000003B9AD366000000003B9*****","respCd":"100","respMsg":"SUCCESS"}
[OK]

// 여기까지는 지난 포스팅에서 설명한 접속로그 이다.
// 자, 이제 데이터를 전송해 보자.

AT+MQTTKTPUB=d,Temperature,14.8 (숫자형으로 TagID "Termperature"에 14.8 전송)
[OK]
{Q,out/000000003B9AD366000000003B9*****,,74}{"msgHeadVO":{"mapHeaderExtension":{}},"respCd":"100","respMsg":"SUCCESS"}
(KT IoT 클라우드에서는 전송 확인에 대한 ACK가 전송됨)

AT+MQTTKTPUB=d,Temperature,16.5 (숫자형으로 TagID "Termperature"에 16.5 전송)
[OK]
{Q,out/000000003B9AD366000000003B9*****,,74}{"msgHeadVO":{"mapHeaderExtension":{}},"respCd":"100","respMsg":"SUCCESS"}

AT+MQTTKTPUB=d,Temperature,18.1 (숫자형으로 TagID "Termperature"에 18.1 전송)
[OK]
{Q,out/000000003B9AD366000000003B9*****,,74}{"msgHeadVO":{"mapHeaderExtension":{}},"respCd":"100","respMsg":"SUCCESS"}

데이터 전송 후, KT IoT 대쉬 보드를 통해서 전송된 값을 실시간으로 확인할 수 있습니다.

kt_iot_7

kt_iot_8

Step 4 : 이벤트 등록 및 결과 확인하기


지금까지 WizFi310을 이용하여 KT IoT 클라우드에 접속하고 센싱 값을 전송하여 그 결과를 대쉬 보드등으로 확인하는 과정을 알아 보았습니다.

이번에는 KT IoT 클라우드에서 이벤트를 등록하고 이에 따라 적당한 액션을 취하는 과정에 대한 내용입니다.  WizFi310의 센싱 값을 온도라고 가정하고 특정 온도 이상이 되었을 때, 그 결과를 SMS(문자)로 통보 받도록 하는 형태의 테스트를 진행해 보겟습니다

1.이벤트 등록하기

kt_iot_9

kt_iot_10

kt_iot_11

kt_iot_12

좀더 자세한 과정은 아래 링크를 참고하시면 됩니다.

http://iotmakers.olleh.com/openp/index.html#/guideRegistEvent

2. WizFi310을 통한 이벤트 발생

앞서 설명한 것처럼 아래와 같이 WizFi310을 통해 데이터를 전송할 수 있으며, 온도 데이터 31.4를 전송한 것을 확인할 수 있습니다.

kt_13

전송된 값은 대쉬 보드나 로그 창에서 결과를 확인할 수 있습니다. 아래 그림과 같이 대쉬 보드의 마지막 데이터를 보면, 30도가 넘었음을 알 수 있습니다.

kt_14

3. SMS 문자 발생

센싱된 온도 값 30도가 WizFi310을 통하여 KT IoT 클라우드로 전송되었고, 위에서 설정한 대로 이벤트가 발생하여 (약 1분 후에) 아래와 같은 문자 메시지를 전송 받았습니다.

kt_15

 


출처 : IoT WiFi This+