• 검색 결과가 없습니다.

A Real Time Location Based IoT Messaging System using MQTT

N/A
N/A
Protected

Academic year: 2021

Share "A Real Time Location Based IoT Messaging System using MQTT"

Copied!
10
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

*정회원, 한성대학교 컴퓨터공학부

접수일자 2018년 7월 24일, 수정완료 2018년 8월 10일 게재확정일자 2018년 8월 10일

Received: 24 July, 2018 / Revised: 10 August, 2018 / Accepted: 10 August, 2018

*Corresponding Author: [email protected]

Dept. of Computer Engineering, Hansung University, Korea https://doi.org/10.7236/JIIBC.2018.18.4.27

JIIBC 2018-4-4

MQTT 활용 실시간 위치 기반 IoT 메시징 시스템

A Real Time Location Based IoT Messaging System using MQTT

정인환

*

In-Hwan Jung

*

요 약 본 논문에서는 MQTT 프로토콜을 이용하여 이동 중인 차량 및 보행자의 위치 정보를 실시간으로 수집하고 행정구역 단위의 위치기반 정보 서비스를 제공할 수 있는 실시간 IoT 메시징 시스템을 설계하고 구현하였다. 차량 위 치정보 수집 및 통신을 위한 MQTT 기반 IoT 기기와 보행자 위치정보 서비스를 위해 MQTT 기반 스마트폰 앱을 구 현하였다. IoT 클라이언트들은 행정구역 명을 MQTT Topic으로 가입(Subscribe)함으로써 위치 기반 응용프로그램에 서 클라이언트들에게 행정구역 단위로 메시지 전달이 가능하다. 본 연구에서 구현한 위치기반 IoT 메시징 시스템 (SLIMS : Seoul Location based IoT Messaging System)에서는 서울시 행정구역 단위인 구와 동을 기준으로 클라 이언트들의 위치를 추적하여 보행자 및 차량의 실시간 통행량 분석이 가능하며 행정구역 단위 및 좌표 범위 기준으로 메시지 전달이 가능하다. SLIMS는 실시간 유동인구 파악과 차량 통행량 분석 및 위치기반 메시지 전달과 같은 대규모 IoT 기기들을 대상으로 실시간 위치기반 정보 제공 서비스로 활용될 수 있다.

Abstract

In this paper, we design and implement a real time IoT messaging system that can collect location information of moving vehicles and pedestrians in real time using MQTT protocol and provides location based information service in administrative area. We implemented MQTT based IoT device for vehicle location information collection and communication and MQTT based smartphone application for pedestrian location information service. IoT clients can send messages to the server in administrative units by using the MQTT Topic which is equal to administrative names. The SLIMS (Seoul Location based IoT Messaging System) implemented in this study is able to analyze the real time traffic volume of pedestrians and vehicles by tracking clients. It also can deliver messages to clients based on coordinate range. SLIMS can be used as a real-time location-based information service for large-scale IoT devices such as real-time flow population and vehicle traffic analysis and location-based message delivery.

Key Words :

MQTT, IoT, LBS, Administrative District Name, Topic Based

Ⅰ. 서 론

최근 사물인터넷 (IoT : Internet of Things)이 발전하고 있는 환경에서 보행자나 차량과 같이 이동성(Mobility)를 갖는 기기들의 데이터를 위치정보와 함께 수집하고 처리

하는 위치기반(Location Based) IoT 시스템의 필요성이

증가하고 있다. 특히 차량용 IoT 기기와 같이 이동성을

갖는 기기들이 등장하면서 기존 IoT 기기의 센서 정보와

GPS 정보를 함께 처리하는 위치기반 IoT 응용 시스템이

등장하고 있다.

(2)

이러한 위치기반 IoT 시스템에서는 IoT 기기들을 행 정구역과 같은 특정 범위를 기준으로 위치를 추적하고 또 행정구역 단위로 메시지 전달이 가능해야한다. 또 IoT 기기들이 점점 더 스마트해짐에 따라 단순히 데이터를 서버에게 전달하는 것 뿐 만 아니라 서버로부터 메시지 를 수신하여 처리하는 기능도 중요하게 되었다.

본 논문에서는 보행자나 차량과 같이 이동하는 개체 또는 IoT 기기들의 데이터를 실시간 위치 정보와 함께 효율적으로 수집하면서 행정구역과 같은 특정 지역에 존 재하는 보행자나 차량 운전자에게 메시지를 전달할 수 있는 위치기반 IoT 메시징 시스템을 구현하고자 한다.

다음과 같은 예를 들어 보자.

“서울시 전역의 보행자 유동인구 현황과 차량의 통행 량을 실시간으로 확인하고 성북구 또는 삼선동과 같이 특정 행정구역에 머물고 있는 보행자 또는 차량 운전자 에게만 그 행정구역과 관련된 메시지를 전달하고자 한 다.”

위와 같은 요구를 처리하기 위해서는 보행자와 차량 의 위치 정보를 수집하여 데이터베이스에 저장하고 있어 야 되며 특히 GPS 위치 정보를 기준으로 보행자와 차량 이 어느 행정구역에 위치하는지 확인하고 추적 관리하는 절차가 필요하다.

본 논문에서는 MQTT(Message Queue Telemetry Transport)[1] 환경을 이용하여 서울시 지역을 대상으로 보행자 및 차량의 실시간 통행량 분석이 가능하며 구와 동 행정구역 단위 및 좌표 범위 기준으로 메시지 전달이 가능한 실시간 위치기반 IoT 메시징 시스템인 서울시 실 시간 유동인구 통합메시징 시스템(SLIMS: Seoul Location Based IoT Messaging System)을 설계하고 구 현하였다. 이를 위해 보행자를 위한 스마트폰 앱 클라이 언트와 차량을 위한 GPS 센서 기능을 갖는 라즈베리파 이[8] 클라이언트를 구현하였으며 위치정보를 저장하고 가시화하며 행정구역 단위의 메시지 전달이 가능한 위치 기반 서버 및 응용 시스템을 구현하였다.

본 논문의 구성은 다음과 같다. 2장에서는 본 논문과 관련된 연구들을 설명하고, 3장에서는 MQTT 토픽을 활 용한 실시간 위치기반 메세징 시스템 설계에 대해 설명 한다. 4장에서는 구현 및 실험 내용을 소개하며 5장에서 결론 및 향후 연구에 대하여 기술한다.

Ⅱ. 관련 연구

1. IoT 데이터 처리

IoT 기기들의 데이터를 효율적으로 처리하기 위하여 CoAP(Constrained Application Protocol)[2], XMPP (Extensible Messaging and Presence Protocol)[3] 그리 고 MQTT(Message Queue Telemetry Transport)와 같 은 다양한 통신 수단이 등장하였다.

MQTT 프로토콜은 특정 토픽(Topic)에 Subscribe Publish 방식으로 메시지를 주고받는 통신 프로토콜이며 송수신 데이터가 길이가 짧고 통신 절차가 간단하여 대 량의 IoT 기기들의 데이터를 수집하는 효율적인 통신 환 경을 제공하여 많은 분야에서 활용되고 있다[4][5][6].

MQTT는 본 연구에서 고려하는 대량의 클라언트를 대 상으로 데이터 수집에 적합하지만 본 논문에서 핵심으 로 고려하는 것과 같이 보행자나 차량과 같은 이동 중인 클라이언트의 데이터를 수집하는 경우 MQTT 에서는 위치정보를 처리할 수 있는 기능이 기본적으로 제공되지 않는다.

따라서 본 논문에서는 MQTT 의 장점인 효율적인 IoT기기 데이터 처리 기능을 이용하면서 행정구역 단위 의 위치관리 및 메시지 전달을 위해 행정구역 이름을 MQTT Topic으로 관리하는 기능을 추가하였다.

2. MQTT Topic 과 행정구역

MQTT의 Topic을 이용한 데이터 흐름은 그림 1과 같다.

MQTT 구조의 장점은 Topic을 이용하여 Multicasting 또는 Broadcasting이 가능하다는 점이다. 그림 1에서와 같이 Client-A와 Client-B는 Topic1에 한번만 Publish함 으로써 Client-D와 Client-E 모두에게 데이터를 전달할 수 있다.

Broker

Client-A

Client-B

Client-C

Client-D

Client-E

Client-F Topic1

Topic2

Topic3

Publish Subscribe

Subscribe

Subscribe

Subscribe Publish

Publish

Publish

그림 1. MQTT Topic 과 Publish/Subscribe 데이터 흐름 Fig. 1. MQTT Topic and Publish/SubscribeData Flow

(3)

서 울 시

성 북 구

정 릉 동

서 울 시

성 북 구

길 음 동 U n s u b s c r ib e (정 릉 동 )

S u b s c r ib e (길 음 동 ) S u b s c r ib e (서 울 시 )

S u b s c r ib e (성 북 구 )

S u b s c r ib e (정 릉 동 )

그림 2. MQTT Topic과 행정구역 Fig. 2. MQTT Topic and District Name

MQTT의 중요한 특징 중 하나는 Topic을 계층구조로 구성할 수 있다는 점이다. 본 논문에서는 MQTT Topic 의 계층구조를 행정구역에 적용하였다. 그림 2는 Client-A가 “서울시/성북구/정릉동”에서 “서울시/성북구 /길음동”으로 이동하는 경우 Client-A가 가입한 Topic의 변화를 보여준다. Client-A의 최초 위치가 “서울시/성북 구/정릉동”인 경우 Client-A는 “서울시”, “성북구”, “정릉 동” 이라는 Topic에 모두 가입한다. 만약 Client-A가 “길 음동”으로 이동을 한다면 Client-A는 “정릉동”을 Unsubscribe 하고 “길음동”을 Subscribe 하게 된다.

이렇게 클라이언트들이 행정구역을 Topic으로 모두 가입이 되어 있으므로 응용프로그램에서는 클라이언트 들이 어떤 행정구역에 머물고 있는지 파악할 수 있으며 특정 행정구역을 지정해서 그 곳에 있는 클라이언트들에 게 메시지를 전달할 수 있게 된다.

본 논문에서는 서울시를 대상으로 행정구역을 구분할 수 있는 데이터를 사용하였으며 우리나라의 행정구역을 토픽으로 사용하는 경우 계층별 필요한 Topic의 수는 그 림 3과 같다. 서울시의 경우 총 “25개의 구”와 “424개의 동”이 있으며 대한민국 전체를 구분 가능한 행정구역으 로 나눌 경우 총 3763개의 Topic이 필요하다.

L e v e l 1 -나 라 2 - 3 - 4 - 5 - 6 - 7 - 8 - L e v e l 3 - 4 - 5 - 6 - 7 - 8 -

그림 3. 대한민국의 행정구역 수

Fig. 3. Number of Administrative District Names of Korea

III. 시스템 설계

1. 시스템 구성

구현된 SLIMS는 그림 4와 같이 구성되어 있다.

MQTT 프로토콜의 핵심인 MQTT Broker, 스마트폰 클 라이언트와 차량용 라즈베리파이 클라이언트 및 운전자 를 위한 스마트폰 앱, 위치 정보를 저장하는 LBS Data Server, LBS Data Server를 통해 얻은 정보를 가시화하 고 클라이언트들에게 위치정보 기반 메시지 전송을 하는 LBS Application Server로 구성되어 있다.

MQTT Broker는 Moquitto[9][10] 오픈소스 개발환경 을 사용하였으며 Topic을 기반으로 클라이언트들과 서 버사이에 통신 중계 역할을 담당한다. 스마트폰 클라이 언트와 차량용 클라이언트는 MQTT publish 기능을 이 용하여 MQTT Broker 를 통해 GPS 위치 정보를 주기 적으로 서버에게 전달한다. LBS Data Server는 클라이 언트가 보내주는 위치정보 및 GPS 정보를 행정구역으로 변환하여 저장한다. LBS Application Server는 위치기반 응용프로그램으로 데이터베이스에 저장된 클라이언트 위치정보를 다양한 방법으로 가시화 하며 행정구역 단위 의 메시지 전달 기능을 갖는다. 그림 5는 데이터 흐름을 보여준다.

그림 4. SLIMS 시스템 구성도

Fig. 4. System Architecture of SLIMS

그림 5. 데이터 흐름도 Fig. 5. Data Flow

(4)

2. GPS 정보 > 행정구역 변환 및 Topic 등록

그림 2와 같이 이동 중인 클라이언트들이 기기가 위치 한 행정구역에 MQTT Topic으로 가입하기 위해서는 현 재 위치 정보를 행정구역으로 변환하는 과정이 필요하다.

스마트폰과 같은 기기의 경우 Google API와 같은 Open API 를 시용하면 현재 위치를 행정구역으로 변환이 가능 하다. 차량용 IoT 기기와 같이 Google API를 사용할 수 없는 기기의 경우 LBS 서버와 Application 서버에서 행 정구역을 파악해서 클라이언트에게 전달할 수 있도록 설 계하였다. 스마트폰 클라이언트의 경우 자체적으로 행정 구역 확인이 가능하지만 본 논문에서는 행정구역의 확인 을 차량용 기기와 마찬가지로 서버에서 담당하는 것으로 설계하였다. 그 이유는 위치기반 서비스 응용 시스템의 경우 클라이언트들의 위치 정보를 반드시 행정구역으로 만 관리하지 않을 수 도 있기 때문이다. 즉, 응용시스템에 서 정한 위치정보를 사용할 수 도 있다. 예를 들어 “서울 시/성북구/정릉동” 대신 “R1/R11/R112" 와 같은 특수한 코드를 사용할 수 도 있다. 이러한 경우 모든 클라이언트 들은 LBS 서버가 정해준 Topic 명을 사용해서 가입을 하게 되며 서버에서 일관성 있게 Topic을 관리할 수 있 게 된다.

그림 6은 클라이언트가 GPS 위치정보를 서버에게 전 달하고 새로운 행정구역 이름을 수신하여 행정구역 이름 을 Topic으로 Subscribe하는 과정을 보여준다.

그림 6. GPS 좌표 > 행정구역 이름 변환 과정

Fig. 6. Converting GPS Coordinate to District Name

(1) 클라이언트는 GPS 센서를 통해 얻어진 현재 위치 (경도, 위도)를 Topic-LBS 로 주기적으로 Publish 하고 LBS Server는 Topic-LBS에 Subsribe 되어 있으며 수신된 클라이언트들의 현재 위치를 데이 터페이스에 저장한다.

(2) Application Server는 GPS 위치정보를 행정구역 (district) 이름으로 변환한다. “서울시/성북구/삼 선동” 이라고 가정하자.

(2-1) Application Server는 새로운 행정구역 이름(“서 울시/성북구/삼선동”)를 Client-ID를 Topic으로 Publish 하여 클라이언트에게 새로운 행정구역 이 름을 알려준다.

(2-2) 클라이언트는 Client-ID를 Topic으로 Subscribe 해 놓으며 이를 통해 새로운 행정구역 이름(“서울 시/성북구/삼선동”)을 수신한다.

(3) 클라이언트는 새로운 행정구역 이름(“서울시/성북 구/삼선동”)을 Topic으로 Subscribe 한다. 이때 클 라이언트는 그림 2에서와 같이 행정구역의 계층 구조를 모두 Subscribe 한다. 즉 Subscribe(서울), Subscribe(성북구), Subscribe(삼선동) 이다. 만약 행정 구역이 변경되었다면 이전 위치는 Unsubscribe 하고 새로운 위치로 Subscribe 한다.

(4-1) Appilcation Server에서 특정 행정구역에 있는 클라이언트들에게 메시지를 전송한다. 예를 들어

“삼선동”이라고 가정하자.

(4-2) 해당 행정구역 “삼선동”을 Topic으로 가입한 모 든 클라이언트들은 해당 메시지를 수신하게 된다.

가. 클라이언트 설계

클라이언트가 이동하여 행정구역이 변하면 서버로부 터 새로운 행정구역 이름을 수신한다. 행정구역이 변경 되면 기존의 행정구역 Topic을 Unsubscribe하고 새로운 행정구역명을 Topic으로 Subscribe한다. 이렇게 행정구 역을 Topic으로 Subscribe 되어 있으므로 Application Server에서 보내주는 행정구역을 위치기반으로 하는 메 시지를 수신할 수 있다. 그림 7는 클라이언트 위치가 행 정구역 기준으로 변경될 때 처리 알고리즘이다.

// GPS 위치 확인

CurGPS = Get_Current_GPS();

// GPS 정보를 서버에 전송하고 서버가 보내주는 새로운 행정구 역을 Topic으로 가입

Send_Current_GPS_to_Server(CurGPS);

NewMsg = Receive_Msg_from_Server();

NewTopic = NewMsg.NewTopic;

if (NewTopic!=CurTopic) { // 행정구역이 변경되면 Unsubscribe(CurTopic);

Subscribe(NewTopic);

CurTopic = NewTopic;

}

그림 7. 클라이언트의 행정구역 변경 알고리즘 Fig. 7. Client District Change Algorithm

(5)

스마트폰 클라이언트와 차량용 클라이언트 모두 그림 7의 알고리즘을 사용한다. 스마트폰의 경우 스스로 지도 와 메시지 표시를 할 수 있으나 차량용 클라이언트의 경 우 그림 8과 같이 블루투스 통신을 이용하여 차량 운전자 의 스마트폰 화면에 내용을 표시하도록 설계하였다.

그림 8. 차량용 Client Fig. 8. Client for Vehicles

그림 9(a)는 스마트폰 클라이언트 화면이며 그림 9(b) 는 차량용 라즈베리파이와 연결된 차량 운전자의 스마트 폰 화면이다. 스마트폰 클라이언트의 경우 사람 모양의 아이콘으로 현재위치가 표시되고 차량 운전자를 위한 앱 에서는 자동차 모양으로 현재 위치가 표시된다.

(a) 스마트폰 클라이언트 (a) 차량 운전자용 앱 그림 9. 클라이언트 화면

Fig. 9. Client Screen

그림 10. 서울시 행정구역 경계선 좌표 CSV 파일 포맷 Fig. 10. CSV File of Seoul District Border Coordinates

나. 서버 설계

본 논문에서 구현한 SLIMS 에서 서버는 LBS 서버와 Application 서버로 구성되어 있다. LBS 서버는 다음과 같은 기능을 갖는다.

(1) 위치정보 저장 : LBS 서버는 MQTT Broker에게 Topic_LBS 로 가입(Subscribe)하고 클라이언트들이 보 내는 위치정보를 수신하여 저장한다. 각각의 클라이언트 들의 위치정보를 저장하는 형식은 (Client-ID, Time,

GPS-XY) 이다.

(2) 위치정보 > 행정구역 변환 : LBS 서버는 서버는 클라이언트가 보내는 GPS-XY 정보를 행정구역으로 변 환한다. GPS 위치를 행정구역으로 변환하기 위해서 서 울시 지역의 행정구역 지도를 대상으로 Ray Casting Algorithm[7]을 이용한다. 이에 앞서 서울시 공공데이터 [12]에서 제공하는 행정구역 좌표 데이터를 그림 10과 같 은 CSV 형태로 저장하여야 한다.

client_GPS = mqtt_subscribe_client(Topic_LBS);

location_Name = getLocationName(client_GPS);

// GPS 정보를 그림 12와 같이 얻어옴

mqtt_publish_client(ClinetID, location_Name);

그림 11. 서버 위치정보 처리 알고리즘

Fig. 11. Server Location Processing Algorithm

성북구

성북구

Algorithm getLocationName(client_GPS)

그림 12. GPS 좌표 > 행정구역 찾는 알고리즘

Fig. 12. GPS Coordinates to District Name Search Algorithm

LBS 서버는 그림 11과 그림 12에서와 같이 클라이언 트가 publish한 GPS 정보를 수신하고 행정구역 이름을 찾아 클라이언트에게 전송한다. 클라이언트가 “성북구”

안에 있는 예이다. 그림과 같이 서버는 그림 10과 같은

형식으로 저장된 각각의 행정구역 경계선 좌표를 이용하

여 행정구역 구분 지도를 그리고 Ray Casting Algorithm

의 Even-Odd Algorithm을 이용하영 행정구역을 찾는다.

(6)

그림 12에서 우선 (1) GPS 위치룰 기준으로 그 좌표를 포함할 수 있는 가장 인접한 직교좌표를 갖는 행정구역 들을 찾는다. (2) 인접한 행정구역들을 대상으로 Even-Odd 알고리즘으로 교점의 수를 구했을 때 Odd Number의 교점을 갖는 “성북구” 안에 있다. 이렇게 구한 행정구역 이름을 Publish를 이용하여 클라이언트에게 전 달한다.

SLIMS Application 서버는 LBS 서버에 저장된 클라 이언트 위치정보를 이용하여 실시간 유동인구 파악과 같 은 정보를 가시화하고 다양한 방식의 위치정보를 기반으 로 클라이언트에게 메시지를 전송할 수 있도록 다음과 같은 기능을 설계하였다.

(1) 실시간 유동인구 현황 표시: 지도 위에 스마트폰 사용자와 차량용 클라이언트들의 실시간 위치 정보를 시 각화한다. 아이콘과 열지도를 이용하여 표시한다.

(2) 위치기반 메시지 전송 : 행정구역, 좌표 등을 기준 으로 클라이언트에게 메시지 전송을 한다. 선택 가능한 위치 기준은 다음과 같다.

z 구 단위 메시지 전송 : 지도 화면에서 원하는 구를 선택하고 메시지를 입력하면 MQTT Topic에서 해당 구 이름으로 Publish 한다.

(예: publish -t “성북구” -m “성북구민께 ...”) z 동 단위 메시지 전송 : 지도 화면에서 원하는 동을

선택하고 메시지를 입력하면 MQTT Topic에서 해당 동 이름으로 Publish 한다.

(예: publish -t “삼선동” -m “삼선동주민께..”) z 관리자 지정 [사각형] 좌표 기준 메시지 전송 : 지

도위에서 마우스로 사각형을 지정하면 그 안에 있 는 모든 클라이언트들에게 메시지가 전송된다.

z 관리자 지정 [원]좌표 기준 메시지 전송 : 디도 위 에서 마우스로 원을 지정하면 그 안에 있는 모든 클아이언트들에게 메시지가 전송된다.

z KNN (K Nearest Neighbor) 전송 : 특정 좌표를 기준으로 가까운 거리에 K 개 클라이언트를 선택 하여 메시지 전송한다.

(3) 실시간 유동인구 변화 표시 : 선택된 구 단위의 유 동인구 현황을 주기적으로 보여준다.

(4) 클라이언트 트랙킹 : LBS 서버에 저장된 각각의 클라이언트들의 좌표 변화를 지도위에 표시하여 클라이 언트들의 이동 경로를 추적할 수 있다.

IV. 구현 및 실험

본 연구에서는 서울시 지역을 대상으로 행정구역 단 위의 위치기반 메시징 서비스가 가능한 시스템을 구현하 였다. 이를 위해 보행자를 위한 안드로이드 앱 클라이언 트와 차량을 위한 라즈베리파이 기기를 구현하였으며 LBS Data Server와 LBS Application Server를 구현하였 다. 본 장에서는 구현된 SLIMS에서 위치기반 메시징을 이용한 실험 내용도 함께 설명한다.

1. 클라이언트 구현

가. 스마트폰 클라이언트

그림 13과 그림 14는 구현된 안드로이드 앱을 실행한 화면이다. 그림 13(a)와 같이 보행자는 현재 위치를 지도 에서 확인할 수 있으며 그림 13(b)는 서버에서 특정 행정 구역 인 “성북구”에 있는 클라이언트에게 보낸 메시지를 수신한 예이다.

(a) 현재위치 보기 (b) 위치기반 메세지 수신 그림 13. 보행자용 안드로이드 클라이언트

Fig. 13. Android Client for Pedestrians

그림 14(a)는 서버에서 특정 행정구역 주변에 긴급 상 황이 발생한 경우 그 위치를 알려주는 예이다. 그림에서

“성북구에 위치한 보행자에게 가까운 거리에 화재가 발

생하였음”을 알려주고 있다. 그림 14(b)는 사용자가 수신

한 메시지 목록을 확인하는 화면이다. 목록에서 메시지

중 붉은색 긴급 메시지를 선택하면 그림 14(a)와 같이 위

치정보를 포함한 메시지가 지도에 표시된다.

(7)

(a) 긴급 메시지 수신 (b) 수신된 메시지 목록 확인 그림 14. 긴급 메시지 수신 및 수신 목록 확인 Fig. 14. Urgent Message and Message History

나. 차량용 클라이언트

라즈베리파이를 기반으로 제작된 차량용 장치는 위치 확인을 위해 GPS 모듈을 가지며 차량 운전자의 스마트 폰과 통신할 수 있도록 블르투스 통신 모듈도 포함한다.

MQTT 브로커와 스마트폰 사이의 통신은 Python[11]을 사용하여 구현하였다.

2. LBS Data Server

LBS Data 서버는 MySql와 Java를 이용하여 구현하 였다. LBS 서버는 MQTT Broker에 Topic_LBS 토픽으 로 Subscribe하고 클라이언트로부터 수신된 위치 정보를 (Client-ID, Time, GPS-XY, [행정구역]) 형식으로 저 장한다. [행정구역]은 다시 [행정구역1][행정구여2]...[행 정구역n]의 형식을 갖는다. 예를 들어 클라이언트가 “서 울시/성북구/삼선동”에 있다면 [서울시][성북구][삼선동]

과 같다. 이렇게 클라이언트들을 행정구역 구분으로 분 류함으로써 Application 서버에서 행정구역별 유동인구 현황을 파악하고 해당 행정구역을 대상으로 메시지 전달 에 이용할 수 있다.

3. LBS Application Server

SLIMS의 LBS Application 서버는 Java와 JSP로 구 현하였으며 메인 화면은 그림 15와 같다. 그림 15에서 화 면 좌측에는 메뉴가 표시되며 우측에는 서울시 지도와 클라이언트들의 위치가 표시된다. 서울시 지도는 Google 지도를 이용하였다. 그림 15는 실시간 유동인구를 아이 콘 형태로 표시하고 있으며 그림 16은 열지도 형태로 유 동인구 현황을 보여준다.

그림 15. Application 서버 화면 Fig. 15. Application Server Screen

그림 16. 실시간 유동인구 열지도

Fig. 16. Real Time Population Thermal Map

가. 위치기반 메시지 전송

그림 17은 구 단위 메시지 전송 화면이다. 관리자가 구 단위 메시지 보내기를 선택하고 지도에서 원하는 지역을 선택하면 선택된 지역이 붉은색으로 표시되면서 메시지 입력창이 표시된다. 메시지를 입력하면 해당 구 지역에 위치한 클라이언트들에게만 메시지가 전송된다. 서버에 서 보낸 메시지는 스마트폰 클라이언트와 차량용 클라이 언트와 연결된 운전자의 스마트폰 화면 상단에 표시된다.

그림 18는 동 단위 메시지 전송이다. 구 단위와 같은 방 법으로 메시지 전송이 가능하다.

그림 19는 관리자가 사각형 영역을 지정하여 메시지 를 전송하는 예이다. 관리자가 선택한 영역의 크기는 두 가지 경우가 가능하다.

(1) 사각형 영역이 행정구역 안에 있는 경우 : 이 경우

클라이언트들은 해당 행정구역을 Topic으로 메시지 전

송을 하면 안 된다. 사각형 영역 밖의 클라이언트들에게

도 메시지가 전송되기 때문이다. 이 경우 서버는 각각의

클라이언트들에게 Unicast 방식으로 메시지를 Publish

한다. 이런 경우를 대비하기 위해 Client-ID 를 Topic으

로 사용한다.

(8)

그림 17. 구 단위 메시지 보내기

Fig. 17. GU District Region Message Sending

그림 18. 동 단위 메시지 보내기

Fig. 18. Dong District Region Message Sending

(2) 사각형 영역이 행정구역 보다 큰 경우 : 이 경우 클 라이언트들은 여러 행정구역에 분포되어 있으므로 직교 좌표 안에 있는 행정구역을 찾는 과정이 선행 되여야 한 다. 직교 좌표 안에 행정구역이 모두 포함된 경우는 해당 행정구역 이름을 Topic으로 Publish 하고 행정구역의 일 부만 선택한 영역 안에 포함된 경우 그 지역의 클라이언 트들에게는 Unicast 방식으로 Publish한다. 이렇게 선택 영역이 행정구역 보다 큰 경우 최대한 행정구역을 Topic 으로 Publish함으로써 메시지 전송 횟수를 줄일 수 있다.

그림 19. 관리자 지정 구역 메시지 보내기 [사각형]

Fig. 19. Rectangular Region Message Sending

그림 20. 사고 발생 긴급 메시지 전송 Fig. 20. Urgent Message Sending

그림 21. 관리자 지정 구역 메시지 보내기 [원] 좌표 Fig. 21. Circular Region Message Sending

그림 22. KNN 선택 전송

Fig. 22. KNN Message Sending

(9)

그림 20는 사고 발생 긴급 메시지 전송 예이다. 메시지 전송 대상 영역을 선택하고 사고 발생 메시지 전송 메뉴 에서 사고 발생 지점을 선택하고 메시지를 입력하여 전 송하면 사고 발생 메시지를 수신한 클라이언트 화면에 클라이언트 위치와 함께 사고발생 지점 위치가 표시된다.

그림 21은 원좌표 영역을 지정해서 메시지 전송을 하 는 예이다. 직교좌표와 마찬가지로 선택한 영역의 크기 에 따라 각각의 클라이언트에게 Unicast와 Topic을 사용 한 Mulicast Publish 를 사용하게 된다.

그림 22은 KNN(K-Nearest Neighbor) 알고리즘을 사 용하여 특정 좌표 기준 가까운 거리에 있는 K개 클라이 언트에게 메시지를 전송하는 예이다.

나. 실시간 유동인구 변화 및 트래킹

SLIMS 에서는 클라이언트들의 위치 정보를 기반으로 각 행정구역별로 유동인구 변동 상황을 실시간으로 모니 터링 할 수 있는 기능을 구현하였다. 아울러 저장된 위치 정보를 이용하여 각각의 클라이어트들의 이동 경로를 파 악할 수 있는 트래킹 기능도 구현하였다.

그림 23. 실시간 유동인구 변화 표시 Fig. 23. Real Time Population Change

그림 23은 구 단위의 유동인구 변화를 실시간으로 보여 주는 화면이다. 모니터링을 원하는 구를 선택하면 그 지 역의 차량을 포함한 유동인구 변화를 실시간으로 보여준다.

그림 24. 날짜별 유동인구 변화 Fig. 24. Daily Population Change

그림 24는 주어진 기간 동안 유동인구 변화를 보여준 다. 지역과 기간을 설정하면 그래프 형태로 날짜별 유동 인구 현황을 보여준다. LBS Data 서버에 저장된 클라이 언트들의 위치정보에서 행정구역과 기간을 조건으로 검 색한 결과를 보여주도록 구현하였다.

그림 25. 경로 추적 화면 Fig. 25. Tacking Screen

그림 25는 클라언트의 경로를 추적하는 화면을 보여 준다. 클라이언트를 선택하고 기간을 선택하면 그 기간 동안 클라이언트들이 어떻게 이동했는지 지도위에 보여 준다. 스마트폰 클라이언트의 경우 화살표로 표시되고 차량의 경우 자동차 아이콘으로 표시된다.

Ⅴ. 결 론

본 논문에서는 MQTT 프로토콜을 이용하여 이동 중 인 차량 및 보행자의 위치 정보를 실시간으로 수집하고 행정구역 단위의 위치기반 정보 서비스를 제공할 수 있 는 실시간 IoT 메시징 시스템을 설계하고 구현하였다.

MQTT 프로토콜의 장점인 Topic 대상 Subscribe 및

Publish 구조를 위치정보 서비스에 적용하기 위해서

GPS 정보를 행정구역으로 변환하여 Topic으로 사용할

수 있도록 변환 기능을 LBS 서버에 구현하였다. 클라이

언트들은 서버가 정해준 행정구역을 Topic으로 가입함

으로써 행정구역 단위의 클라이언트 현황 파악과 메시지

송/수신이 가능하다. 본 논문에서는 Topic 기반 행정구

역 단위 메시징 서비스 검증을 위해 서울시 행정구역 단

위의 유동인구 및 차량 대상 실시간 정보 수집 및 메시지

(10)

※ 본 연구는 한성대학교 교내연구비 지원 과제임.

전송이 가능한 SLIMS(Seoul Locastion based IoT Messaging System)을 설계하고 구현하였다. SLIMS에 서는 서울시 행정구역 단위인 구와 동을 기준으로 클라 이언트들의 위치를 추적하여 보행자 및 차량의 실시간 통행량 분석이 가능하며 행정구역 기준 및 좌표 범위 기 준으로 메시지 전달이 가능하다.

SLIMS는 서울시를 대상으로 구현되었지만 행정구역 을 구분하는 지도 데이터만 교체한다면 전국 어느 지역 에도 적용이 가능하다. 또한 본 논문에서는 스마트폰과 차량용 기기를 대상으로 구현하였으나 GPS 센서를 가지 는 어떠한 IoT 기기들이라도 적용이 가능하도록 설계하 고 구현하였다. 즉, IoT 기기들이 GPS 센서와 MQTT 기 본 프로토콜을 실행할 수 있는 환경만 된다면 행정구역 또는 응용시스템에서 원하는 지역 코드를 서버에서 관리 하도록 설계하였기 때문이다.

따라서 본 논문에서 구현한 위치기반 IoT 메시징 시 스템은 실시간 대규모 IoT 기기들을 대상으로 실시간 위 치기반 정보 제공 서비스로 활용될 수 있다.

본 연구에 이은 향후 연구로 클라이언트 부분에 대해 서는, GPS 센서와 MQTT 통신이 가능한 다양한 종류의 IoT 기기들을 대상으로 위치 기반 메시징 시스템을 구현 하고 테스트하는 일이다. MQTT Broker의 경우 본 논문 에서 제안한 Topic=행정구역 방식을 적용할 경우 많은 수의 Topic이 존재하게 된다. 따라서 많은 수의 Topic을 관리할 때 발생하는 오버헤드를 분석하고 성능 개선을 할 필요가 있다. LBS 서버의 경우 실시간 위치정보 추적 을 위해서 메인메모리 데이이터베이스와 같은 고성능 저 장구조를 사용하여 구조 및 성능 개선과 관리자가 정한 직교좌표, 원좌표 외에도 다양한 좌표로 클라이언트들을 검색할 수 있는 기능을 추가할 예정이다.

References

[1] https://en.wikipedia.org/wiki/MQTT [2] https://en.wikipedia.org/wiki/CoAP [3] https://en.wikipedia.org/wiki/XMPP

[4] Hermes Aslava, Luis Alejandro Rojas and Ramon Pereira. “Implementation of Machine-to-Machine

Solutions Using MQTT Protocol in Internet of Things (IoT) Environment to Improve Automation Process for Electrical Distribution Substations in Colombia”. Journal of Power and Energy Engineering, pp. 92-96, 2015.

DOI:https://doi.org/10.4236/jpee.2015.34014 [5] Lampkin V et al. "2Building smarter planet

solutions with MQTT and IBM WebSphere MQ telemetry IBM", ITSO

[6] Kitae Hwang, Heyjin Park, Jisu Kim, Taeyun Lee, Inhwan Jung, “An Implementation of Smart Gardening using Raspberry pi and MQTT”, The Journal of the Institute of Internet, Broadcasting and Communication, Vol. 18, No. 1, pp.151-159, Feb. 2018 DOI:https://doi.org/10.7236/JIIBC.2018.18.1.151 [7] Roth, Scott D. (February 1982), “Ray Casting for

Modeling Solids”, 《Computer Graphics and Image Processing》 18 (2): 109-144

https://doi.org/10.1016/0146-664X(82)90169-1 [8] https://en.wikipedia.org/wiki/Raspberry_Pi [9] https://mosquitto.org/

[10] R. A. Light, “Mosquitto: server and client implementation of the MQTT protocol,” The Journal of Open Source Software, vol. 2, no. 13, May 2017 [11] https://en.wikipedia.org/wiki/Python

[12] SeoulMobilePlatform, “Seoul Metropolitan Government Public Data”,https://data.seoul.go.kr/ , 2018-07-17

저자 소개

정 인 환(정회원)

∙KAIST 정보및통신공학과 박사

∙삼성전자 수석연구원

∙한성대학교 컴퓨터공학부 교수 <관심분야 : IoT, 분산시스템, 망관리>

수치

Fig. 4. System Architecture of SLIMS
Fig. 6. Converting GPS Coordinate to District Name
Fig. 9. Client Screen
그림  12에서  우선  (1)  GPS  위치룰  기준으로  그  좌표를  포함할  수  있는  가장  인접한  직교좌표를  갖는  행정구역 들을  찾는다
+3

참조

관련 문서

In order to compensate for these problems, this paper presents, based on IEEE 802.15.4a chirp signal, a new real time indoor location system using stride measurement

Using Storm, in this paper we collect and aggregate the real-time Twitter data and dynamically visualize the aggregated results through the tag cloud.. In

In this paper, we propose a real-time approach for detecting and tracking a hand region by analyzing depth images.. The moving areas can be identified by

Nashashibi, “Real Time Visual Traffic Lights Recognition Based on Spot Light Detection and Adaptive Traffic Lights Templates,” Proceedings on Intelligent Vehicles

For the verification of proposed real-time context service model of u-conference, we design and implement the conference progress state service included the

The real-time human tracker decides whether the human is included with which furniture (or home appliance) through an analysis of three images, and

One of traffic information collection methods for ATIS research is the method of image analysis.. In this paper, we propose a real-time traffic

Also, by using Zigbee, the wireless sensor network environment was established and by obtaining the location of the moving nodes, the real-time tracking