• 검색 결과가 없습니다.

노드 제어 설계

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

3. IoT 노드 설계

3.4. 노드 제어 설계

그림 11. IoT노드의 실시간 환경데이터 수집 시퀀스

그림 11은 IoT노드의 실시간 환경데이터 수집 시퀀스이다. 사용자는 IoT local server를 통하여 노드의 목록을 조회한다. 목록에서 특정된 노드를 선택하여 IoT Local Server에 노드의 상황 데이터를 수집하는 요청을 전송한다. IoT Local Server는 노드에 CoAP 요청을 하여 노드가 수집한 실시간 상황데이터를 반환받

아 다시 사용자에게 전송한다.

CoAP기반의 스마트 폰과 IoT 노드 간 통신을 하기 위하여 스마트 폰에 미들웨 어로 CoAPClient 설계, 데이터 처리설계, UI설계를 구성한다. 본 장 1절은 CoAPServer를 설계하고 2절은 데이터 처리를 설계한다. 3절은 UI를 설계한다.

4.1. CoAPServer 설계

그림 12. CoAPServer 동작 시퀀스 다이어그램

이 그림은 요청 예로 CoAP 서버와 클라이언트를 설명하고 있다. 요청에 URI HOST, URI PORT, URI PATH 와 URI QUERY가 포함된다. URI QUERY를 통하여

식별자를 포함하여 CoAP 요청을 하여 데이터베이스에서 해당 CoAP노드의 정보 를 조회한다. 그리고 다시 CoAP 클라이언트로 정보를 Json 포맷으로 전송한다.

Json은 여러가지 데이터타입을 표현할 수 있다. CoAP 메시지에 노드의 ID와 Token값을 포함함과 동시 Json데이터도 포함하여 UDP를 통하여 Android 클라이 언트로 전송한다[18].

4.2. 데이터 처리설계

그림13. 데이터 처리 흐름도

그림 13은 데이터 처리 흐름도 이다. 처리 단계는 다음과 같다.

1) 원시 데이터를 청크 데이터로 나눈다.

2) 유니크 식별자를 통하여 유니크 블록을 식별한다.

3) 저장소에 유니크 블록이 존재하는지 확인한다. 없으면 추후 중복을 검사하기

위해 저장소에 등록한다.

4) 표준편차를 계산한다.

5) 표준편차와 수신한 데이터를 비교 한다

6) 조건을 만족하면 UI 에 표출한다. 아니면 데이터를 제거한다.

4.2.1. 중복 데이터 처리 알고리즘

그림14. 중복 데이터 처리 알고리즘

그림 14는 중복 데이터 처리 단계도 이다. 먼저 원시 데이터를 청크 데이터로 나눈다. 다중 블록 또는 오브젝트는 유니크 식별자를 통하여 유니크 블록 또는 오브젝트를 식별한다. 저장소에 유니크 블록 또는 오브젝트의 존재여부를 확인한 다. 있으면 중복 데이터를 줄이고 없으면 사용자에게 전달한다.

4.2.2. Outlier 데이터 처리 알고리즘

표 3 수집된 원시 데이터

표 3은 시간에 따라 측량된 값의 예 이다. T는 측량할 때의 시간 이고 L 은 측량된 값 이다. 구간 [−3σ, 3σ]에 속할 확률은 정상상태에서 99.8% 를 넘는 반면에 사고 등으로 진전되어 갈수록 점차 줄어드는 것을 볼 수 있다[5].

수식 1 은 표준편차의 값을 계산하는 수식이다. Li는 측량된 값 이다,L 는 센서 값에 대한 평균값 이다. σ 는 표준편차 이며 여기서는 9.03 이다.

수식 2에 L1의 값은 10.35 이고, L 의 값은 11.25 이다. 수식2에서 계산된 값 은 표준편차의 3배수 값보다 작으므로 L1은 적합한 데이터 이다.

수식 3에 L10 의 값을 20.33 이고, L 의 값을 11.25 이다. 수식3에서 계산된 값은 표준편차의 3배수 값보다 크므로 L10은 부적합한 데이터 이다.

4.3. UI 설계

그림15. UI 동작 시퀀스 다이어그램

그림15는 UI 동작 시퀀스 다이어그램이다. 위의 과정은 MainWindow, UserLogin, UserRegister, DeviceManage, DeviceConnect, DeviceControl로 구성 되여 있다. 먼저 MainWindow에 접속하여 UserRegister에서 사용자의 ID, Password, 위치, 이름을 입력하여 사용자를 생성한다. UserLogin에서 사용자 등 록을 한다. DeviceConnect에서 IoT Node 상의 디바이스의 IP 및 Endpoint를 입 력하고 스마트 폰 미들웨어에 디바이스를 추가한다. DeviceManager, DeviceControl은 디바이스를 선택하여 디바이스 측에서 데이터를 수집 및 제어한 다.

Ⅳ. CoAP 프로토콜을 기반으로 인터넷을 연결하고 스마트 폰 상에 데이터 정제를 위한 미들웨어를 구현

IoT 노드는 에디슨보드를 사용하며 운영체제는 오픈 임베디드 리눅스이다.

CoAP 서버를 구현하기 위하여 Libcoap 라이브러리를 이용한다[12]. 스마트 폰 에서 사용한 하드웨어는 VEGA IM-A850L 이고 운영체제는 Android 4.1 이다.

CoAP 클라이언트를 구현하기위하여 Californium 프레임워크를 이용하여 스마트 폰에서 받은 데이터를 여러 가지로 처리하기 위하여 미들웨어를 적용한다.

표 4. CoAP 서버 및 미들웨어를 구현하기 위한 개발환경

표 4 에는 CoAP 서버 및 미들웨어를 구현하기 위한 개발환경을 나다내고 있 다.

l 개발환경: Linux OS, JDK1.7, Android SDK, Eclipse juno, MySQL database, Android 4.1 platform, WiFi, Libmraa, C.

l Intel Edison board: IoT 노드 l TINKERKIT: sensor node l Yocto Linux 1.6

그림16. Android SDK Manager 1.1 Intel Edison

그림 17. Intel Edison

IoT 노드를 구현하기 위하여 Intel Edison보드를 이용한다. 개발환경은 Yocto

로 IP를 할당한다.

l putty로 Serial 번호를 이용하여 등록한다.

l “configure_edison -- wifi ”명령을 이용하여 wifi를 검색한다.

l WiFi 번호를 선택한다.

l WiFi 의 ID 및 비밀번호를 입력해서 WiFi 에 연결한다.

그림 19. IP 설정과정

2.1. 노드 등록

그림 20. putty를 통한 노드의 운영체제 접근화면

그림 20은 putty를 통하여 노드의 운영체제에 접근하는 화면이다. “./nodeapp”

명령을 이용하여 이미 설치한 “nodeapp” 프로그램을 실행한다.

그림 21. 노드 등록 과정 및 버전 확인 화면

그림 21은 노드 등록과정 및 버전을 확인하는 화면이다. 노드를 등록할 때 먼 저 본 노드의 존재 여부를 확인하여야 한다. 때문에 질의에 노드의 유일한 식별 자를 포함하여 메시지를 전송한다. 응답메시지에 존재하지 않으면 위와 같이 “0”

값을 반환한다.

그림 22. 노드 등록 과정 및 정보 업데이트화면

그림22는 노드 등록 과정 및 정보를 업데이트하는 화면이다. 노드에서 IoT Local Server의 “conn” 리소스에 노드의 정보를 payload에 포함하여 전송한다.

이 정보는 노드의 프로그램 안에 포함되며 노드의 기본정보를 포함한 노드의 식 별자, 노드 정보의 버전 등을 포함하고 있다.

2.2. 노드 검색

그림 23. 등록된 노드 목록화면

그림 23은 등록된 노드 목록의 정보를 보여주는 화면이다. 이 목록은 Json 포

그림 26. LED Light 켜기 화면

그림 26은 LED Light 를 켜는 화면이다. 이 그림에서 unit002는 하나의 전등 구동체이며 “ON” 과 “OFF” 두 가지 명령을 실행할 수 있다. 사용자 웹브라우저 를 통하여 “ON” 명령을 이 unit에 전송하여 전등을 켜는 화면이다.

그림 27. LED Light 끄기 화면

그림 27은 LED Light를 끄는 화면이다. 이 그림은 사용자가 웹브라우저를 통하 여 “OFF” 명령을 unit에 전송하여 전등을 끄는 화면이다.

2.4. CoAPServer 구현

CoAP 프로토콜은 응용계층프로토콜로 서버 프로그램 구현이 가능하다. CoAP 프로토콜 server는 C로 구현한다. CoAP 프로토콜 server는 CoAP 프로토콜 노드 에 설치되므로 메모리가 작고 하드웨어와 직접 연동하여야 하므로 C와 같은 마 이크로컴퓨터용 프로그램밍언어로 개발한다. 요청메시지는 IETF에서 제안하는 CoAP 프로토콜 포맷과 같아야 하며 서버에서 정확하게 파싱 하여야 한다. 응답 메시지도 요청메시지처럼 포맷에 맞아야 한다.

그림 28. CoAPServer에 Endpoint 추가

여기서 Endpoint로 unit001, unit002, unit003, unit004를 추가한다.

IoT 노드에 센서에서 자원을 받으려면 libmraa 라이브러리를 이용하여 센서와 CoAPServer 를 연결해야 된다. 이러한 연결 기본 정의를 그림 29 에서 보여주고 있다.

그림 29. CoAPServer에 디바이스와 서버 연결

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 장의 구현방안을 통하여 시스템이 구현되었다. 다음에 유스 케이스를 통하여

4 장의 구현방안을 통하여 시스템이 구현되었다. 다음에 유스 케이스를 통하여

관련 문서