[python] Django와 MQTT 연동 방법은 어떻게 되는가?

본 문서에서는 Django와 MQTT를 연동하는 방법에 대해 안내합니다.

1. MQTT 라이브러리 설치

먼저, Django 프로젝트에 MQTT 통신을 지원하는 라이브러리를 설치해야 합니다. 가장 인기있는 MQTT 라이브러리 중 하나는 Paho-MQTT입니다. 다음 명령을 사용하여 설치할 수 있습니다.

pip install paho-mqtt

2. MQTT 클라이언트 구현

다음으로, MQTT 클라이언트를 구현해야 합니다. Django 프로젝트의 어디에서든지 MQTT 통신을 사용할 수 있도록, mqtt_client.py와 같은 파일을 생성합니다.

import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("Connected to MQTT Broker!")
        # 연결이 성공했을 때 수행할 동작을 추가합니다.
        # 예: 토픽 구독, 메시지 발행 등
    else:
        print("Failed to connect, return code %d\n", rc)

def on_message(client, userdata, msg):
    # 메시지 수신 시 동작을 추가합니다.
    pass

def mqtt_connect():
    # MQTT 브로커에 연결하는 함수입니다.
    client = mqtt.Client()
    client.on_connect = on_connect
    client.on_message = on_message

    broker_address = "mqtt.example.com"
    port = 1883  # MQTT 브로커 포트 (기본값: 1883)

    client.connect(broker_address, port=port, keepalive=60)
    client.loop_start()  # MQTT 클라이언트를 시작합니다.
    return client

3. Django에서 MQTT 사용

Django 프로젝트의 어디에서든지 MQTT를 사용하려면, mqtt_client.py 파일을 import하여 MQTT 클라이언트를 생성하면 됩니다.

예를 들어, views.py 파일에서 MQTT 메시지를 발행하는 예제를 살펴보겠습니다.

from django.shortcuts import render
from .mqtt_client import mqtt_connect

def publish_message(request):
    # MQTT 메시지를 발행하는 함수입니다.
    
    # MQTT 클라이언트 생성
    client = mqtt_connect()

    topic = "mytopic"
    message = "Hello, MQTT!"

    # 메시지 발행
    client.publish(topic, message)

    # 메시지 발행 후 처리 로직 추가
    # 예: 성공 메시지 반환, 로그 기록 등

    return render(request, 'publish_message.html')

위의 예제에서는 mqtt_client.py 파일에서 정의한 mqtt_connect() 함수를 사용하여 MQTT 클라이언트를 생성한 후, publish_message() 함수에서 메시지를 발행하고 있습니다.

추가 참고 자료