MQTT란?
- Message Queueing Telemetry Transport
- M2M(Machine to Machine), IoT(Internet of Things) 통신에 사용되는 표준 기반 메시징 프로토콜
- 리소스 제약이 있는 열악한 네트워크 환경에서 제한된 대역폭으로
센서 하나 달린 작은 기기들의 데이터 전송 및 원격제어를 위해 만들어진 프로토콜
→ 임베디드 장치에 알맞은 프로토콜
- 구현이 쉽고 IoT 데이터를 효율적으로 전달할 수 있어 널리 사용되고 있다.
MQTT 특징
- 실시간, 최소 전력, 신뢰성 있는 비동기적 메시징 방식 (TCP/IP 기반)
- 경량 프로토콜
- 이벤트 방식의 N : N 통신 지원
MQTT 구성
1) Broker : 메시지가 들어오는 통로, 서버
- 반드시 Broker를 통해서만 통신이 가능
- 메시지의 전송 여부, 에러 여부 확인 가능
2) publisher : 토픽을 발행
3) subscriber : 토픽을 구독

MQTT 메시징 방식
- MQTT는 브로커(Broker)라고 불리는 서버를 거쳐서 통신을 한다.
- 이때 주고 받는 메시지는 토픽(Topic)을 기준으로 작동한다.
- 발행자(publisher)는 토픽을 발행하기 위한 목적으로 브로커 서버에 연결한다.
- 구독자(subscriber)는 토픽을 구독하기 위한 목적으로 브로커 서버에 연결한다.
- 하나 이상의 발행자와 구독자가 브로커 서버에 연결해서 토픽을 발행하거나 구독할 수 있다.
일대일, 또는 일대다 통신이 모두 가능
MQTT Broker 설치 및 구동
1. MQTT 서버 다운로드
- Moquitto는 MQTT Broker 오픈소스 프로젝트로 널리 사용되고 있다.
https://mosquitto.org/download/

2. Mosquitto 구동
- mosquitto 설치 폴더로 이동, cmd 실행
mosquitto.exe -v 또는 mosquitto -v 명령 입력 후 설치 버전 출력 시 정상 설치된 것

MQTT Path를 설정하면 cmd 창만 켜면 MQTT 실행 가능
3. MQTT Broker 동작 확인
- Broker 서버 실행 :
mosquitto -v
- "JOY" subscriber 실행 :
mosquitto_sub -t "JOY"
- "JOY"에게 "hi" 메시지 전송 :
mosquitto_pub -t "JOY" -m "hi"
