Prototype/IoT Platform

  ThingPlug 대시보드  


Node-Red 대시보드

Node.js 대시보드








해당 ThingPlug 대시보드는 SKT의 ThingPlug-LoRa-Staterkit을 수정하여 만들어졌습니다. 

(https://github.com/SKT-ThingPlug/thingplug-lora-starter-kit)






Prototype/IoT Platform

1. WizFi310

image

WizFi310은 Embedded Wi-Fi 모듈로서 기본적인 TCP, UDP통신 이외에도 MQTT 프로토콜을 AT Command로 구현되어 있다.

또한 앞서 살펴보았던 IoTMakers SDK가 구현되어 있어 AT Command 몇 개로 IoTMakers에 접속하거나 데이터 전송, 제어 데이터 수신을 할 수 있다.

이번 포스팅에서는 WizFi310으로 IoTMakers에 접속하고 데이터를 보내는 방법에 대한 내용이며, IoTMakers에서 디바이스를 등록하고 대시보드를 생성하는 방법은 가이드 문서에 자세히 나와 있다.

 

EX)

AT+TKTSET1=<Gateway 연결 ID>,<Device ID>,<Device Password>

AT+TKTCON=2,<IoTMakers IP>,<IoT Makers Port>,0,1111

AT+TKTSEND=<Tag Stream Type>,<Tag Stream ID>,<Value>

 

  • AT+TKTSET1: IoTMakers에 접속하기 위해 필요한 인증 정보들이다.
  • AT+TKTCON: IoTMakers의 IP와 Port 정보를 입력하고, 실제 MQTT접속과 디바이스 인증과정을 수행한다.
  • AT+TKTSEND: 데이터를 전송할 때 사용한다.
    • <Tag Stream Type>: 숫자형은 ‘d’, 문자형은 ‘s’를 입력한다.

image

 

2. 디바이스 구성하기

 

image

 

WizFi310에 구현된 IoTMakers SDK를 활용하기 위한 디바이스를 구성했다.

개발환경은 mbed IDE를 사용했다.

보드는 Nucleo-F401RE보드를 사용했고, 센서로는 CDS 조도센서와 Tact 스위치를 사용했다. 조도 센서의 센싱 데이터를 주기적으로 IoTMakers에 보내고, Tact 스위치를 눌렀을 때 이벤트적으로 알림용 데이터를 보낸다.

 

Nucleo-F401RE보드에 대한 설명은 아래 링크를 참고.

https://developer.mbed.org/platforms/ST-Nucleo-F401RE/

 

image

image

IoTMakers_proto

핀 연결은 위와 같이 했다.

WizFi310과 연결된 UART 핀은 Tx, Rx, cts, rts, reset핀 순이다.

PA_1에는 조도센서, LED에는 PC_7, 사용자 버튼에는 PC_13에 연결했다.

 

 

3. 소스코드 설정

https://developer.mbed.org/users/jehoon/code/KT_IoTMakers_WizFi310_Example/

 

image

  • AP_SSID: 디바이스가 접속할 공유기의 SSID를 입력한다.
  • AP_PASSWORD: 공유기의 PASSWORD를 입력한다.
  • AP_SECURITY: 공유기의 보안 타입을 입력한다.(현재 WPA2로 설정됨)

 

  • IoTMakers_GW_ID: Gateway 연결 ID
  • IoTMakers_DEV_ID: Device ID
  • IoTMakers_DEV_PWD: Device Password

 

  • IoTMakers_MQTT_IP: IoTMakers의 MQTT Broker IP
  • IoTMakers_MQTT_PORT: IoTMakers의 MQTT Broker Port

 

  • DELAY_SEND_TIME_MS: 주기 데이터를 전송할 주기(milliseconds)

 

4. 소스코드 메인 loop

image

메인 loop에서는 AP에 접속, IoTMakers에 접속 하는 과정과  주기적으로 센싱 데이터 전송(Periodic_Event())와 사용자 버튼 이벤트(Button_Push_Event()), 제어 신호를 프린트 하도록 구현되어 있다.

 

5. AP에 접속

image

 

 

6. 데이터 전송

image

주기 데이터(illumination, 숫자형)과 버튼 푸시 데이터(switch, 문자형)

 

7. 제어 데이터 수신

image

제어 데이터를 수신했을 때, IoTMakers의 oneM2M 포맷으로 프린트 한다.

snsnTagCd: Tag Stream ID

strVal: 문자형 제어 신호(ex: on, off)

 

 

8. 대시 보드로 센싱 데이터 표현 및 제어

image

Prototype/IoT Platform

1. 프로토콜 선택

앞서 설명했듯이 IoTMakers에서는 아래와 같은 프로토콜을 지원하고 있다.

개발 환경에 따라서 JAVA를 사용할지, C를 사용할지, 아니면 아두이노를 사용할지 선택해야 한다.

 

 

기본적으로 각각의 SDK는 위와 같은 연동 구조로 되어있으며, 디바이스와 IoTMakers 사이의 접속, 데이터 전송, 제어 등을 위한 API(Application Programming Interface)가 구현되어 있다.

 

이번 포스팅에서는 C SDK의 MQTT프로토콜 가이드 문서를 통해 IoTMakers에 접속하는 방법에 대해 알아볼 것이다.

 

2. IoTMakers MQTT API

IoTMakers에 접속해 데이터를 전송해서는 위에 나타난 정도의 함수들로 처리할 수 있다. (1, 3, 6, 11, 14, 15, 17)

 

1. im_init(): 이 함수에서는 IoTMakers의 IP, Port, Gateway 연결 ID, Device ID, Device Password 등 IoTMakers에 접속하기 위한 기본 설정 과정이다.

3. im_connect(): 위의 IP, Port 정보들로 바탕으로 MQTT 연결을 수행하고, receive 핸들러를 등록한다.

6. im_auth_device(): Gateway 연결 ID, Device ID, Device Password 정보로 인증 요청을 수행한다.

11. im_send_numdata(): 숫자 형태의 데이터를 전송할 때 사용한다. 문자형은 im_send_strdata()를 사용하며, 숫자형와 문자형을 동시에 여러 개 보낼 경우 im_send_complexdata()를 사용한다.

14. dataresp_handler(): (3)에서 등록한 receive 핸들러로 수신된 데이터를 확인할 수 있다.

15. im_disconnect(): mqtt disconnect함수

17. im_release(): 메모리 할당 해제

 

함수에 대한 자세한 사용방법이나 예제 소스코드는 가이드 문서를 참고하세요.

http://iotmakers.olleh.com/openp/assets/files/C_SDK_manual_MQTT_2.2.0.pdf

1 ··· 10 11 12 13 14
블로그 이미지

IoT 개발자 블로그이고 싶다.

1byte