반응형
이번에는 사물인터넷에서 각광 받고 있는 메시지 전송 프로토콜인 MQTT (Message Queue Telemetry Transport) 에 대해서 알아보겠습니다. MQTT 는 IBM 에 의해서 개발되었고 2014년 국제 민간 표준기구인 오아시스에 의해서 표준으로 제정되었습니다. 이 프로토콜이 사물인터넷의 통신규약으로 각광 받고 있는 이유는 경량화가 가능해서 통신 대역폭이 제한적인 사물인터넷에 적합하기 때문 입니다. 현재 페이스북도 회원들간의 메시지 전송에 MQTT 프로토콜을 이용하고 있다고 합니다.

https://sakshambhatla.wordpress.com

위의 그림을 보면 가운데 MQTT Broker 라는 것이 있고 Publish 와 Subscribe 가 있습니다. Publisher 가 Hi 라는 메시지를 보내면 Subscribe 가 Broker 를 통해서 메시지를 받는 것 입니다. 구독하지 않은 토픽과 Subscriber 는 메시지를 받을 수 없습니다. 

IoT MQTT 활용 예 (http://www.eurotech.com/en/)


이러한 MQTT 오픈소스로 각광을 받고 있는 Mosquitto 를 설치해 보고 테스트를 한 번 해 볼까 합니다. 이 서비스를 설치한 필자의 컴퓨터는 윈7 32비트 입니다.

mosquitto 를 설치 실행하려면 먼저 openSSL 소프트웨어가 설치되어 있어야 합니다. 다음의 URL 에 들어가서 자신의 OS 에 맞는 버전의 OpenSSL 을 다운받아 설치 합니다. 설치 시 DLL 파일을 찾아야 하므로 아래와 같이 설치 옵션을 지정 합니다. 버전은 Light 버전을 설치해 주었습니다.


 
mosquitto 홈페이지에 들어가서 윈도우용 설치 파일을 다운로드 하고 설치 합니다.

아래의 FTP 에 가서 pthreadVC2.dll 파일을 다운로드 해서 mosquitto 설치 폴더에 복사해 줍니다.

OpenSSL 설치폴더 하위의 Bin 폴더에서 libeay32.dll, ssleay32.dll 두 개의 DLL 파일을 복사해서 mosquitto 설치 폴더에 넣습니다.


혹시 mosquitto.exe 는 실행이 되는데 mosquitto_sub, mosquitto_pub 가 아래와 같은 에러가 나면서 실행이 안된다면 다음의 프로그램을 설치해 보세요.

■ Visual C++ 2010 SP1 Redistributable Package


 

■ 설치한 파일들 모음

mosquitto 설치파일들.zip


mosquitto 설치가 끝났습니다. 윈도우 커맨드창으로 들어가서 mosquitto 설치 폴더로 이동하여 다음을 입력하면 mosquitto broker 가 실행 됩니다. 기본 포트는 1883 이며 변경을 원하면 conf 파일에서 설정 가능 합니다.

■ mosquitto broker 실행

mosquitto -v

-v 옵션은 모든 통신과정을 보여주는 옵션 입니다.

실행이 되었습니다. 1883 포트로 실행이 됩니다. 기존의 ipv4 뿐만 아니라 ipv6 으로도 Listen 하고 있습니다. 



■ mosquitto subscriber , publisher 실행

mosquitto_sub -h 호스트 -t 토픽명 
(ex: mosquitto_sub -h 192.168.0.12 -t /deneb)

mosquitto_pub -h 호스트 -t 토픽명 -m 메시지
(ex: mosquitto_pub -h 192.168.0.12 -t /deneb -m "Hello World!!")


좌측 위 publisher, 좌측 아래 subscriber, 오른쪽 mosquitto Broker 입니다. pub 에서 메시지를 발행하면 broker 에서 받아서 해당 토픽을 subscribe 한 subscriber 들에게 보냅니다. subscriber 인 왼쪽 아래의 창에 전송된 메시지가 표시됨을 볼 수 있습니다.


구글 플레이스토어에서 MQTT Client 라는 앱을 다운로드 받아서 테스트해 보았습니다. MQTT Broker 인 192.168.0.12 의 /deneb 토픽을 subscribe 해 보았습니다. 위와 같이 publisher 의 메시지가 잘 보입니다.


MQTT Client 앱은 subscriber 와 publisher 를 모두 지원 합니다. 이번에는 publisher 로 'hello i am smart phone' 이라는 메시지를 보내 보았습니다.


좌측 하단의 Subscriber 에 hello i am smart phone 이라는 메시지가 표시 됩니다.


앞으로 NodeMCU Lua 를 이용해서 위와 같은 MQTT 서비스를 적용해볼 생각 입니다.


반응형

+ Recent posts