본문 바로가기
카테고리 없음

MQTT : 사물인터넷(IoT)의 핵심 프로토콜 특징, 작동방식, 실습예제

by 쨔우쨔우 2025. 3. 17.
반응형

글 제목 이미지

1. MQTT란 무엇인가?

MQTT(Message Queuing Telemetry Transport)는 사물인터넷(IoT) 환경에서 널리 사용되는 경량 메시지 프로토콜입니다. 저전력 장치와 네트워크 대역폭이 제한된 환경에서도 안정적인 데이터 전송이 가능하도록 설계되었습니다.

MQTT 주요 특징

  • 경량성: 메시지 오버헤드가 작아 데이터 전송이 빠름
  • 게시/구독 모델: 브로커를 통한 비동기 데이터 교환
  • QoS 지원: 3가지 품질 수준으로 신뢰성 보장
  • 낮은 전력 소비: 배터리 기반 IoT 기기에서도 효율적

2. MQTT 작동 방식

MQTT는 게시(Publish) / 구독(Subscribe) 모델을 사용하며, 클라이언트(Client)브로커(Broker)로 구성됩니다.

메시지 전송 흐름

  1. 센서가 브로커에 "temperature/room1" 토픽으로 온도 데이터를 게시
  2. 브로커는 해당 토픽을 구독하는 모든 클라이언트에게 메시지 전송
  3. 스마트폰 앱이 "temperature/room1"을 구독하여 실시간 데이터 수신

3. MQTT QoS 수준

QoS 수준 설명
QoS 0 (At most once) 메시지를 한 번만 전송, 확인 응답 없음 (손실 가능)
QoS 1 (At least once) 메시지를 최소 한 번 이상 전달, 중복 가능성 있음
QoS 2 (Exactly once) 메시지를 정확히 한 번만 전달, 가장 신뢰성 높음

4. MQTT와 HTTP 비교

항목 MQTT HTTP
통신 방식 게시/구독 (비동기) 요청/응답 (동기)
데이터 크기 경량 메시지 상대적으로 큼
연결 유지 지속 연결 요청마다 새로운 연결 생성

5. MQTT 실습 예제 (Python)

설치

pip install paho-mqtt

MQTT 메시지 게시

import paho.mqtt.client as mqtt

broker = "test.mosquitto.org"
port = 1883
topic = "test/topic"

client = mqtt.Client()
client.connect(broker, port, 60)

client.publish(topic, "Hello MQTT!")
client.disconnect()

MQTT 메시지 구독

def on_message(client, userdata, message):
    print(f"Received message: {message.payload.decode()}")

client = mqtt.Client()
client.connect(broker, port, 60)

client.subscribe(topic)
client.on_message = on_message

client.loop_forever()

6. MQTT 활용 사례

  • 스마트홈: IoT 기반 조명, 도어록 시스템
  • 스마트 팩토리: 공장 자동화, 기계 상태 모니터링
  • 스마트 농업: 온실 환경 제어, 작물 모니터링
  • 헬스케어: 원격 환자 모니터링
  • 스마트 모빌리티: 차량 텔레매틱스

7. 결론

MQTT는 경량성, 낮은 대역폭 소비, 안정적인 연결 유지 덕분에 IoT 환경에서 가장 널리 사용되는 메시지 프로토콜입니다. HTTP보다 효율적이며, QoS 기능을 통해 신뢰성 높은 데이터 전송이 가능합니다. IoT 프로젝트에 MQTT를 적용해 보세요!

반응형