• 검색 결과가 없습니다.

Ⅳ. CoAP 프로토콜을 기반으로 인터넷을 연결하고 스마트 폰 상에 데이터 정제

3. 스마트 폰 미들웨어구현

3.1. CoAP Client 구현

CoAP 클라이언트를 구현하기위하여 Java Runtime Environment (JRE) 상에 Java를 이용한 CoAP 프레임워크인 Californium 라이브러리를 이용한다[13]. 표 2 는Californium 라이브러리에 존재하는 주요한 클래스들이다. Server API는 CoapServer, CoapResource, CoapExchange 등의 클래스를 포함한다. 이 클래스 들은 CoapResource측에서 자원를 받고, 서버측에 자원을 추가하고 서버를 시동

하는 기능을 가지고 있다. Client API는 CoapClient, CoapHandler, CoapResponse, CoapObserveRelation 등의 클래스를 포함한다. 이 클래스들을 이 용하여 대상 URI의 CoapClient를 인스턴스화하는 등의 기능을 사용할 수 있다.

표 5. Californium 라이브러리 구조

그림 30은 CoAP Client 프로세스 클래스 다이어그램이다. CoAPClient 프로세 스는 Respond클래스, Handler클래스, Request클래스, CoAPClient 클래스 등으로 구성한다. CoAPRequest의 부모클래스로서 CoAPClient에서는 CoAPRequest를 통 하여 객체를 생성한다. Handler 클래스는 요청이나 응답을 처리하는 클래스이다.

CoAPClient 클래스는 요청 및 응답을 모두 제공한다. Respond 클래스와 CoAPClient 클래스는 관련 관계가 있다. Handler 클래스 과 CoAPClient 클래스 는 의존관계가 있다. Request 클래스와 CoAPClient 클래스는 관련관계가 있다.

그림 30. CoAP Client 프로세스 클래스 다이어그램 3.2. Repetition Data 프로세스 구현

그림 31. Repetition Data 프로세스 클래스 다이어그램

그림31은 Repetition Data 프로세스 클래스 다이어그램이다. Repetition Data 프로세스는 UniqueIdentifierCompare 클래스, ChunkData 클래스, DataManage 클래스로 구성한다. ChunkData 클래스는 원시 데이터를 청크 데이터로 나누는 기능을 제공하며 UniqueIdentifierCompare 클래스는 유니크 블록이 존재하는지 확인하는 기능을 제공하고 DataManage 클래스는 데이터 관리 기능을 제공한다.

UniqueIdentifierCompare 클래스, ChunkData 클래스, DataManage 클래스와 CoAPClient 클래스의 관계는 의존관계이다. CoAPClient 클래스를 통하여 각 클래 스는 StandardDeviationCalculate 클래스, DataCompare 클래스, DataConfirm 클 래스로 구성한다. StandardDeviationCalculate 클래스는 표준편차 계산 기능을 제 공한다. DataCompare 클래스는 표준편차와 수신한 데이터를 비교하는 기능을 제공한다. DataConfirm 클래스는 데이터 제거 및 전송 기능을 제공한다.

CoAPClient 클래스를 통하여 각 클래스의 객체생성, 함수를 호출한다.

3.4. UI 구현

그림 33. UI 구현 클래스 다이어그램

그림 33은 UI 구현 클래스 다이어그램이다. UI 구현는 MainWindow 클래스, UserRegister 클래스, UserLogin 클래스, DeviceConnecter 클래스, DeviceManager 클래스, DeviceControler 클래스로 구성한다. MainWindow 클래 스는 MainWindow 출력 역할을 한다. UserRegister 클래스는 사용자의 ID,

MainWindow 클래스와 UserLogin 클래스, UserRegister클래스는 의존관계에 있 으며 UserLogin 클래스와 DeviceManager 클래스는 의존관계가 있고

DeviceManager 클래스와 DeviceController 클래스, DeviceConnecter 클래스는 의 존괸계가 있다. CoAPClient와 DeviceControler 클래스도 의존관계가 있다.

V. 시험 및 성능평가

4 장의 구현방안을 통하여 시스템이 구현되었다. 다음에 유스 케이스를 통하여 시스템이 지원되는 기능을 나타낸다.

그림 34. 시스템 유스 케이스

그림 34는 시스템 유스 케이스 관계를 나타내고 있다. 사용자는 MainWindow 를 통하여 사용자생성, 사용자등록을 수행하고 사용자가 등록되면 Device를 연결 한다. DeviceConnector 에서 IP 및 Endpoint 이름을 입력하고 연결을 시키며 CoAP 메시지생성 및 CoAP 메시지 발송기능이 있다. CoAPServer에서 메시지를 받아서 해석한다. CoAPServer는 Endpoint를 연결하고 DeviceConnector에게 응답 데이터를 보낸다. DeviceConnector는 데이터 중복처리, 이상한 데이터처리, 데이

터 뷰 기능 등이 있다.

그림 35. CoAP 서버 배치 단계도

CoAP 서버 배치 단계는 다음과 같다

1) 화면에 “galileo”호스트클릭, “Default User”와 “ip”를 입력한다.

2) Edisonl2C 메뉴 선택, “Debug Configurations…”를 클릭한다.

3) ”C/C++ Remote Application”를 클릭, EdisonI2C 를 원격 응용 프로그램으로 설정한다.

4) 원격 시스템에 있는 실행 파일 경로를 설정한다.

그림36. CoAP 서버 배치 성공화면

그림 36은 CoAP 서버 배치 성공화면이다. 이제 CoAP클라이언트는 IoT 노드에 게 요청을 보내면 자원을 받을 수 있다.

그림 37. 사용자 리스트 및 등록화면

그림 37은 사용자 리스트 및 등록화면 이다. 사용자 ID 및 비밀번호가 없으면 Register를 클릭한다. 리스트화면이 나오고 사용자의 ID, 비밀번호, 이름, 도시 등 정보를 입력하고 사용자를 리스트 한다. 사용자가 리스트 되면 등록화면으로 다 시 들어간다. 등록화면에서 사용자의 ID, 비밀번호를 입력하면 등록이 된다.

그림 38. 디바이스 추가화면

그림 38은 IoT 노드 추가 화면 이다. Add(Delete)Device로 IoT 노드 리스트 정보를 추가할 수 있다.

그림 39. IoT 노드 리스트 정보 및 IoT 노드와 스마트 폰 연결화면

그림 39는 IoT 노드 리스트 정보 및 IoT 노드와 스마트 폰 연결화면 이다.

Add를 클릭한다. IoT 노드 리스트 정보를 입력하고 IoT 노드에 연결한다. IP 는 IoT 노드의 주소이다. 이 주소는 서버의 IP 주소이다. DeviceName 은 IoT 노드상

의 물리 노드 이다. 여기에서 물리노드 이름은 unit001 이다. Unit001는 온도센 서 Endpoint 이름 이다.

CoAP 클라이언트는 관리자 측에서 동작하는 노드로 서버에게 요청메시지를 전달하고, 서버 측으로 부터 응답메시지를 수신하는 기능을 수행하는 노드이다.

이 노드는 헤더를 생성하여 요청메시지를 전달한다. “T”필드에 Confirmable(0), Non-Confirmable(1), Acknowledgement(2), Reset(3) 중 하나를 선택하여 메시지 를 만들고, Code 필드는 GET(1), POST(2), PUT(3), DELETE(4)등을 선택한다.

Content-Type, URI_SCHEME, URI-Authority 등과 같은 옵션을 필요한 경우 추가 할 수 있다.

그림40. CoAP 프로토콜 요청 및 응답 흐름도

그림 40은 CoAP 프로토콜 요청 및 응답흐름도 이다. CoAP 프로토콜메시지는 4 byte 헤더로 시작되며 토큰(Token), 옵션(Option)과 페이로드(Payload) 등이 있

다. CoAPClient는 “CON” 메시지를 통해 요청한다. Server가 “CON” 메시지를 수 신하면 응답메시지를 응답한다. CoAP 요청은 0.01 GET 방법을 이용한다. 성공하 면 CoAP Server가 ”2.05 Content”메시지를 보낸다. 요청과 응답에서 “MID”가 일 치해야 된다. 여기서는 “0x7d34”이다. 요청응답 토큰 필드는 공백으로 되어 있다.

옵션유형은 “Uri-Path”이며 Option Value유형은 문자열이다. CoAP 응답 값은 온 도와 시간이 포함되어 있다. 온도는 626 이다. 시간은“2015/4/14 11:04:09”이다.

그림 41. 수집된 라이트센서 데이터

그림41는 온도센서를 이용하여 수집된 데이터이다. 왼 쪽은 처리하기 전의 데 이터이다. 오른쪽은 처리 후의 데이터이다. 표기 1,2에 데이터 집합 표준편차의 값은:

표기 1,2 에 데이터 집합 표준편차의 값은 15.5로 계산되었다. 3배 표준 편차 는46.5이다. 표기1,2에서 데이터 집합 평균값은 296 이다. 3에 데이터의 값과 평 균값의 차가 3배 표준편차보다 더 크므로 이상한 센서 값으로 정한다. 오른쪽은 처리 후의 데이터에 이상한 데이터가 제거된 모습이다.

그림 42. 수집된 온도센서 데이터

그림42는 온도센서를 이용하여 수집된 데이터이다. 왼 쪽은 처리하기 전의 데 이터이다. 오른쪽은 처리 후의 데이터이다.

표기1 의 원시 데이터:

표기1의 원시 데이터를 Chunk 처리하여 [626], [2015/4/14 11:04:0]로 나누고 이러한 값이 존재하는지 확인한다. 저장소에 [2015/4/14 11:04:09] 블록이 있으므 로 중복 데이터로 확인한다. 오른쪽에 처리된 데이터를 보면 데이터가 줄어들었 다.

표기 2,3의 데이터 집합 표준편차의 값은:

표기 2,3의 데이터 집합 표준편차의 값은 10.27로 계산되었다. 3배 표준 편차

는30.81이다. 표기2,3의 데이터 집합 평균값은 619.7 이다. 3에 데이터의 값과 평 균값의 차가 3배 표준편차보다 더 크므로 이상한 센서 값으로 정한다.

4

4.1 데이터 프로세스 성능분석 4.1.1 라이트 센서 데이터 분석

그림 43. Original Light Data

그림 44. After Processing Light Data

그래프의 가로축은 시간은 나타내고 세로축은 측량된 라이트 센서 값이다. 그 림 43에서 표기 1,2,3,4는 이상한 데이터이다. Outlier Data 프로세스를 이용하여 처리되며 그림 44에 제거된 데이터가 표시되었다.

4.1.2 온도 센서 데이터 분석

그림 45. Original Temp Data

그림 46. After Processing Temp Data

그래프의 가로축은 시간은 나타내고 세로축은 측량된 온도센서 값이다. 그림

45의 표기 1,3 에 중복된 데이터가 있음을 나타낸다. Repetition Data 프로세스

VI. 결론

IETF (Internet Engineering Task Force)의 CoAP (Constrained Application Protocol) 프로토콜은 작은 용량의 메모리와 저전력 등 제한된 환경에서 센서나 구동체 노드 간에 통신을 지원한다. CoAP 프로토콜은 HTTP와 쉽게 상호 변환 할 수 있으며, 사물인터넷(Internet of Things : IoT)와 M2M (Machine-to-Machine) 환경에서 저전력 센서와 구동체 네트워크를 통한 기반 시설을 감시하거나 관리할 수 있다. IETF CoRE(Constrained RESTful environments) 워킹그룹(Working Group)에서 2010년에 CoAP 프로토콜에 대한 표준화를 시작하여 최근에 RFC(Request for Comments) 7252로 발표하였다 [9][11].

참고문헌

[1] 박동환, 방효찬. "개방형 시맨틱 USN/IoT 서비스 플랫품 기술", 전자파학회 제24권 제4호, 2013.7,12-19

[2] S.Bandyopadhyay, M. Sengupta,S.Dutta. "A Survey of Middleware for Internet of Things" Recent Trends in Wireless and Mobile Networks Communications in Computer and Information Science Volume 162,2011,pp.

288-296

[3] ISO/IEC CD 30128 "Generic Sensor Network Application Interface"

[4] 최진철, 이준욱, 박동환, 방효찬. "스마트 단말을 위한 IoT 미들웨어 시스템에 관한 연구"

[5] Seung-Wook Jee, Kyung-Gea Ok, Shi-Kuk Kim, Chun-Ha Lee "표준편차 와 확률분포를 이용한 모의전기설비에서 사고 징후 검출"

[6] Z. Shelby, B. Frank, D. Sturek, “Constrained Application Protocol(CoAP)”, RFC 7252, June, 2014.

[7] A. Famili, Wei-Min Shen, Richard Weber, Evangelos Simoudis. "Data Preprocessing and Intelligent Data Analysis".

[8] 진남, "실내환경 제어를 위한 구동체 웹과 미들웨어 설계 및 구현" 석사논문 2013년 6월

[9] Wenquan Jin, "A Study of CoAP Extension Based on ID for IoT Node Registration and Message Queuing", 석사논문 2015년2월

[10] 왕건, 사공준, 곽호영, 김도현, "CoAP 기반의 IoT 노드와 스마트폰 간 Connectivity 연구",

[11] 김문권, 김도현 "Implementation and Experiment of CoAP Protocol Based on IoT for Verification of Interoperability"

[12] “libCoAP: C-Implementation of CoAP ",http://libCoAP.sourceforge.net, 2014

[13] “Californium (Californium library) CoAP framework - Java CoAP Implementation", https://github.com/mkovatsc/Californium, 2014

[14] 민경주, 김용운, 유상근, 김형준, 정회경, "CoAP 프로토콜 구현과 USN 환경 적용", 한국 해양 정보통신학회 논문지 제15권 제5호, p1189-1197, May, 2011 [15] 표철식, 강호용, 김내수, 방효찬," IoT(M2M) 기술 동향 및 발전 전망", 한국 통신학회지 (정보와 통신) 제30권

[16] 강정호, 김형주, 전문석, "사물인터넷 시장 및 기술 동향", 한국콘텐츠학회지 13(1) 14-17 1598-9437

[17] Copper(Cu),<https://addons.mozilla.org/en-US/firefox/addon/coper-270430>

[18] cJSON,<http://sourceforge.net/projects/cjson/>

[19] CoAP<http://en.wikipedia.org/wiki/Constrained_Application_Protocol>

[20] E. Bontrager et al., GAIT-ER-AID: "An Expert System for Analysis of Gait with Automatic Intelligent Preprocessing of Data", 4th Annual Symposium on Computer Applications in MED CARE (1990), 625-629.

관련 문서