[파이썬] IoT 통신 프로토콜 (MQTT, CoAP 등) 소개

IoT(Internet of Things)는 다양한 장치들이 인터넷을 통해 통신하고 데이터를 주고받는 기술입니다. 이러한 IoT 시스템에서 효율적이고 안정적인 통신을 위해서는 적절한 통신 프로토콜을 선택하는 것이 중요합니다. 이번 포스트에서는 주요한 IoT 통신 프로토콜인 MQTT (Message Queuing Telemetry Transport)와 CoAP (Constrained Application Protocol)을 소개하고, 파이썬을 이용하여 간단한 예제 코드를 작성해보겠습니다.

MQTT (Message Queuing Telemetry Transport)

MQTT는 경량 프로토콜로, 메시지 기반의 통신에 적합한 프로토콜입니다. 주로 IoT 장치들 간의 실시간 데이터 전송에 활용됩니다. MQTT는 Subscribe/Publish 메커니즘을 기반으로 동작하며, 브로커(Broker)라는 중개자 역할을 담당합니다. 이 프로토콜은 TCP/IP 위에서 동작하며, 다양한 클라이언트와 브로커 간의 연결을 지원합니다.

MQTT 기본 용어

MQTT 예제 코드

import paho.mqtt.client as mqtt

#브로커에 연결되었을 때 호출되는 이벤트 핸들러
def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))
    # 구독할 토픽(sensors/temperature) 설정
    client.subscribe("sensors/temperature")

#메시지가 도착했을 때 호출되는 이벤트 핸들러
def on_message(client, userdata, msg):
    print(msg.topic + " " + msg.payload.decode())

#클라이언트 객체 생성
client = mqtt.Client()

#이벤트 핸들러 설정
client.on_connect = on_connect
client.on_message = on_message

#브로커에 연결
client.connect("mqtt.eclipse.org", 1883, 60)

#메시지 루프 시작
client.loop_forever()

CoAP (Constrained Application Protocol)

CoAP는 제약이 있는 IoT 장치를 위한 통신 프로토콜로, HTTP와 유사한 RESTful 형식으로 동작합니다. 특히, 제한된 대역폭과 에너지를 가진 IoT 장치들을 위해 최적화되어 있습니다. CoAP는 UDP를 기반으로 동작하며, 간단하고 경량화된 헤더 구조를 가지고 있어 메시지 크기를 줄일 수 있습니다.

CoAP 기본 용어

CoAP 예제 코드

from coapthon.client.helperclient import HelperClient

#클라이언트 객체 생성
client = HelperClient(server=("coap.me", 5683))

#GET 요청 보내기
response = client.get("hello")

print(response.pretty_print())

#POST 요청 보내기
payload = "world"
response = client.post("hello", payload)

print(response.pretty_print())

#클라이언트 종료
client.stop()

마무리

이번 포스트에서는 MQTT와 CoAP라는 주요한 IoT 통신 프로토콜을 소개하고, 간단한 예제 코드를 작성해보았습니다. MQTT는 경량 프로토콜로 실시간 데이터 전송에 적합하며, CoAP는 제한된 IoT 장치를 위한 최적화된 프로토콜입니다. 각각의 특징에 맞게 적절히 선택하여 IoT 통신의 효율성을 높일 수 있습니다.