///
Search
🏸

11.MQTT 설치 및 실습 그리고 소개

이전 자료

아래의 링크로 접속
본인 운영체제에 맞는 mqtt 파일 다운로드
설치가 완료 되면 윈도우 검색창에 '서비스' 라고 검색해서 mqtt가 설치가 잘 되었는지 확인한다.

MQTT 서버 실행파일 (참고로 포트는 1883을 사용한다.)

일반적으로 설치했다면 다음 경로에 파일들이 있을 것이다.
파일 경로
C:\Program Files\mosquitto
JavaScript
복사
도스창 3개 열어서 mosquitto 파일로 간다.
C:\Users\glory>cd .. C:\Users>cd .. C:\>cd "Program Files" C:\Program Files>cd mosquitto C:\Program Files\mosquitto>
JavaScript
복사
실행화면
아래의 명령어를 순서대로 열어준다.
netstat -an mosquitto_sub -d –t /test mosquitto_pub -d -t /test -m "abc"
JavaScript
복사
실행 화면
실행 화면 2
왼쪽 상단에 본인 포트의 상태를 확인할 수 있다. 1883 열린것 확인할 것
실행 화면 2에 보면 왼쪽 아래에 sub 하는 부분에서 실행 시켜서 대기중으로 냅둔다.
오른쪽에 명령어를 넣는데 필자는 abc를 넣어서 출력해보는 작업을 하였는데 왼쪽 cmd 창에 저렇게 떠 있는것을 확인할 수 있다.

MQTT 소개

MQTT는 M2M, IoT를 위한 프로토콜로서, 최소한의 전력과 패킷량으로 통신하는 프로토콜 이다.
따라서 IoT와 모바일 어플리케이션 등의 통신에 매우 적합한 프로토콜이다.
MQTT는 경량의 Publish/Subscribe(Pub/Sub) 메시징 프로토콜이다.
M2M(machine-to-machine)와 IoT(Internet of things)에서의 사용하려고 만들었다.
IoT를 위해서 낮은 전력, 낮은 대역폭 환경에서도 사용할 수 있도록 설계됐다.
MQTT는 HTTP, TCP등의 통신과 같이 클라이언트-서버 구조로 이루어지는 것이 아닌, Broker, Publisher, Subscriber 구조로 이루어진다.
Publisher는 Topic을 발행(publish) 하고, Subscriber는 Topic에 구독(subscribe)합니다. Broker는 이들을 중계하는 역할을 한다.
단일 Topic에 여러 Subscriber가 구독할 수 있기 때문에, 1:N 통신 구축에도 매우 유용하다.
MQTT에서 Topic은 /를 사용해서 구성된다.
위와 같이 계층을 구성한다면, IOT 센서와 같은 데이터를 관리하기에 매우 용이하다.
MQTT는 QoS(Quality of Service)를 제공하는데, 총 3단계로 나뉘어져 있다.
0 : 메세지는 한번만 전달되며, 전달이후의 수신과정을 체크하지 않는다.
1 : 메세지는 한번 이상 전달되고, 핸드셰이킹 과정을 추적하나, 엄격하게 추적하지 않기 때문에 중복수신의 가능성이 있다.
2 : 메세지는 한번만 전달되고, 핸드셰이킹의 모든 과정을 체크한다.
QoS의 단계가 높아질 수록 통신의 품질은 향상되지만, 그에 따라 성능 저하의 가능성이 있으므로. MQTT의 QoS는 프로젝트의 특성에 따라 결정되어야 한다.

MQTT 브로커

MQTT 프로토콜을 구현하는 브로커들은 아래와 같이 여러 것들이 있습니다.
Mosquitto
HiveMQ
mosca
ActiveMQ
RabbitMQ (Plug-in 형태로 지원)

MQTT 실습 요약

MQTT 프로토콜은 메시지를 pub하고 관심 있는 주제를 sub하는 것을 기본 원칙으로 한다.
Publisher와 Subscriber은 모두 Broker에 대한 클라이언트로 작동한다.
Publisher는 토픽을 발행하기 위한 목적이다.
Subscriber은 토픽을 구독하기 위한 목적으로 Broker 서버에 연결한다.
하나 이상의 Pub과 Sub가 브로커에 연결해서 토픽을 발행하거나 구독할 수 있다.
그리고 다수의 클라이인트가 하나의 주제를 구독할 수도 있다.
SUB 명령어에 사용된 옵션은 아래와 같다.
-h : host, 접속할 MQTT 브로커(서버)
-V : MQTT 버전
-t : Topic 이름
-d : debug 메시지 모드 (MQTT 브로커의 로그를 볼 수 있다.)
정상적으로 실행된다면, MQTT 브로커로부터 CONNACK 응답을 받고, SUBSCRIBE 요청을 한 후, SUBACK 응답을 받는다.
Subscriber 클라이언트는 주기적으로 MQTT 서버와 통신하며 PINGREQ, PINGRESP를 출력한다.
이 대목에서 MQTT Subscriber는 Pull 방식으로 Broker와 통신하고 있음을 알 수 있다.
Pub 명령어에서 사용된 옵션은 아래와 같다.
정상적으로 명령이 실행되면 Publisher 클라이언트는 CONNACK 응답을 받고, 메시지를 PUBLISH 한 후, DISCONNECT된다. 이 대목에서 Publisher 는 메시지를 보내고, 접속을 끊고 다시 접속하는 Stateless 상태로 운영됨을 알 수 있다.
Publish 된 메시지는 MQTT 브로커를 통해 Subscirber에게 수신된다.