공부 내용/직무 공부

아두이노 통신 (MQTT 통신)

Panda72 2025. 5. 14. 17:24

MQTT란? (Message Queing Telemetry Transport)

IOT(사물인터넷) 분야에서 가장 많이 사용되는 통신 프로토콜 중 하나.

 

경량 메시징 프로토콜로, 낮은 대역폭, 낮은 전력, 불안정한 네트워크 환경에서도 안정적으로 작동하도록
설계된 Publish/Subscribe 방식의 통신 프로토콜이다.

 

Publish / Subscribe 구조란?

직접 데이터를 주고 받지 않고, Broker를 통해 간접적으로 통신

구성 요소

Broker 중앙 메시지 서버 (예: Mosquitto, HiveMQ, AWS IoT 등)
Publisher 데이터를 "발행(publish)"하는 클라이언트
Subscriber 특정 주제를 "구독(subscribe)"하는 클라이언트
Topic 메시지를 주고받는 "채널" 이름. 문자열 형태 (예: "sensor/temperature")

 

Qos (Quality of Service)

메시지 전송의 신뢰 수준을 설정할 수 있다.

QOS 레벨 설명
0 최소한 한 번 전송 (보장 없음, 빠름)
1 적어도 한 번 전송 (중복 허용)
2 단 한 번만 전송 (가장 안전, 느림)

 

 

사용 방법

모듈 설치

pip install paho-mqtt

 

예제

import paho.mqtt.client as mqtt

client = mqtt.Client()
client.connect("broker.hivemq.com", 1883, 60)

client.publish("test/topic", "Hello from Python!")
client.disconnect()
import paho.mqtt.client as mqtt

def on_message(client, userdata, msg):
    print("수신된 메시지:", msg.topic, msg.payload.decode())

client = mqtt.Client()
client.connect("broker.hivemq.com", 1883, 60)

client.subscribe("test/topic")
client.on_message = on_message

client.loop_start()

try:
    while True:
        time.sleep(0.1)
except KeyboardInterrupt:
    print("Program terminated")
    client.loop_stop()
    client.disconnect()