Python을 배워보자

Paho-MQTT Python: IoT 개발의 핵심 도구 탐구

_Blue_Sky_ 2024. 10. 22. 09:30
728x90
728x90

 

IoT(Internet of Things) 시대를 맞이하여 다양한 기기들이 네트워크로 연결되고, 실시간 데이터 교환이 활발해지면서 경량화된 메시징 프로토콜인 MQTT(Message Queuing Telemetry Transport)가 주목받고 있습니다. Python 개발자라면 Paho-MQTT 라이브러리를 통해 손쉽게 MQTT 프로토콜을 활용한 IoT 애플리케이션을 개발할 수 있습니다. 이 글에서는 Paho-MQTT의 기본 개념부터 실제 예제까지 자세히 다루어, MQTT를 처음 접하는 개발자도 쉽게 이해하고 활용할 수 있도록 돕겠습니다.

MQTT란 무엇인가?

MQTT는 Publish/Subscribe 모델을 기반으로 하는 경량화된 메시징 프로토콜입니다. IoT 환경에서 제한된 네트워크 환경에서도 효율적으로 데이터를 전송할 수 있도록 설계되었습니다. 주요 특징은 다음과 같습니다.

  • 경량성: 작은 메시지 크기와 간단한 프로토콜 구조로 제한된 자원 환경에서도 사용 가능합니다.
  • Publish/Subscribe 모델: 발행자(Publisher)가 특정 주제(Topic)에 메시지를 발행하면, 해당 주제를 구독하는 구독자(Subscriber)에게 메시지가 전달됩니다.
  • QoS(Quality of Service): 메시지 전달 보장 수준을 설정하여 신뢰성을 높일 수 있습니다.

Paho-MQTT란 무엇인가?

Paho-MQTT는 Eclipse IoT 프로젝트에서 제공하는 오픈 소스 MQTT 클라이언트 라이브러리입니다. Python뿐만 아니라 Java, C++, JavaScript 등 다양한 프로그래밍 언어를 지원하며, MQTT 3.1.1 및 5.0 프로토콜을 준수합니다. Paho-MQTT를 사용하면 MQTT 브로커에 연결하여 메시지를 발행하고 구독하는 기능을 간편하게 구현할 수 있습니다.

728x90

Paho-MQTT 설치 및 기본 사용법

pip install paho-mqtt
 

위 명령어를 통해 Paho-MQTT를 설치할 수 있습니다.

1. MQTT 클라이언트 생성:

import paho.mqtt.client as mqtt

client = mqtt.Client()
 

2. 콜백 함수 설정:

  • on_connect: 브로커에 연결 성공 시 호출되는 함수
  • on_disconnect: 브로커에서 연결 해제 시 호출되는 함수
  • on_message: 메시지 수신 시 호출되는 함수
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))

def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))

client.on_connect = on_connect
client.on_message = on_message
 

3. 브로커 연결:

client.connect("broker.mqttdashboard.com", 1883, 60)
 

4. 메시지 발행:

client.publish("home/temperature", "25")
 

5. 메시지 구독:

client.subscribe("home/temperature")
 

6. 메시지 루프 실행:

client.loop_forever()
 

심화: QoS, Will 메시지, Last Will, Retain 메시지

  • QoS: 메시지 전달 보장 수준(0: 최대 1회, 1: 최소 1회, 2: 정확히 1회)
  • Will 메시지: 클라이언트가 비정상적으로 종료될 때 발행되는 메시지
  • Last Will: 클라이언트가 연결 해제될 때 발행되는 메시지
  • Retain 메시지: 브로커에 영구적으로 저장되어 새로운 구독자가 연결될 때 자동으로 전달되는 메시지

실제 예제: IoT 기기 데이터 수집 및 시각화

  • Raspberry Pi에 온도 센서를 연결하고 Paho-MQTT를 이용하여 온도 데이터를 MQTT 브로커에 발행
  • 웹 페이지에서 MQTT 데이터를 수신하여 실시간으로 시각화

결론

Paho-MQTT는 Python 개발자가 IoT 애플리케이션을 개발하는 데 있어 강력한 도구입니다. 이 글을 통해 Paho-MQTT의 기본 개념과 사용법을 익혔으므로, 다양한 IoT 프로젝트에 활용하여 자신만의 IoT 시스템을 구축해 보세요.

추가 학습 자료

728x90
728x90