Python实现MQTT发布与订阅:基于paho-mqtt库的完整指南

Ivy
Ivy
发布时间:2026-10-11 | 3人浏览过
原创

本文详细介绍如何使用Python的paho-mqtt库实现MQTT协议的发布与订阅功能。通过安装依赖、配置连接参数、编写发布与订阅代码,并结合阿里云服务器部署实例,帮助开发者快速掌握物联网通信的核心实现方法。

环境准备与依赖安装

在Python中实现MQTT通信,首先需要安装官方推荐的第三方库 paho-mqtt。该库提供了完整的MQTT客户端实现,支持MQTT 3.1和3.1.1协议。

通过pip命令即可完成安装:

pip install paho-mqtt

安装完成后,即可在Python代码中通过 import paho.mqtt.client as mqtt 引入相关模块。

MQTT发布功能实现

发布消息是MQTT通信的基础操作。以下代码展示了如何连接到MQTT服务器并发布一条消息。

# encoding: utf-8
import paho.mqtt.client as mqtt

HOST = "101.200.46.138"
PORT = 1883

def test():
    client = mqtt.Client()
    # 连接到MQTT服务器,保持心跳时间为60秒
    client.connect(HOST, PORT, 60)
    # 发布消息:主题为'chat',内容为'hello liefyuan',QoS为2
    client.publish("chat", "hello liefyuan", 2)
    # 保持连接,处理网络消息收发
    client.loop_forever()

if __name__ == '__main__':
    test()

在上述代码中:

  • client.connect() 用于建立与MQTT服务器的连接,参数分别为主机地址、端口号和心跳间隔。
  • client.publish() 用于发布消息,参数包括主题(topic)、负载(payload)和质量服务等级(QoS)。
  • client.loop_forever() 启动网络循环,处理与服务器之间的消息收发。

MQTT订阅功能实现

订阅消息允许程序作为接收者,监听特定主题的消息。以下代码展示了如何实现订阅功能。

# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt

MQTTHOST = "101.200.46.138"
MQTTPORT = 1883
mqttClient = mqtt.Client()

# 连接MQTT服务器
def on_mqtt_connect():
    mqttClient.connect(MQTTHOST, MQTTPORT, 60)
    mqttClient.loop_start()

# 发布消息
def on_publish(topic, payload, qos):
    mqttClient.publish(topic, payload, qos)

# 消息处理函数
def on_message_come(client, userdata, msg):
    print(msg.topic + " " + ":" + str(msg.payload))

# 订阅消息
def on_subscribe():
    mqttClient.subscribe("/server", 1)
    mqttClient.on_message = on_message_come  # 设置消息到来处理函数

def main():
    on_mqtt_connect()
    on_publish("/test/server", "Hello Python!", 1)
    on_subscribe()
    while True:
        pass

if __name__ == '__main__':
    main()

在订阅功能中,需要注意以下几点:

  • mqttClient.subscribe() 用于订阅特定主题,参数为主题名和质量服务等级(QoS)。
  • mqttClient.on_message 用于设置消息到来时的处理函数,当收到消息时会调用该函数。
  • on_message_come() 是自定义的消息处理函数,用于打印收到的消息主题和内容。

核心API说明

paho-mqtt 库提供了丰富的API,以下是几个核心方法的说明:

client.connect(self, host, port, keepalive, bind_address)
client.publish(self, topic, payload, qos, retain)
client.subscribe(self, topic, qos)
  • connect():建立与MQTT服务器的连接。
  • publish():发布消息到指定主题。
  • subscribe():订阅指定主题。

完整示例:连接、订阅与消息处理

以下代码展示了如何完整实现MQTT的连接、订阅和消息处理功能。

# encoding: utf-8
import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))
    client.subscribe("chat")

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

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("www.liefyuan.top", 1883, 60)
client.loop_forever()

在该示例中:

  • on_connect() 是连接成功后的回调函数,用于打印连接结果码并订阅主题。
  • on_message() 是收到消息时的回调函数,用于打印消息主题和内容。
  • client.connect() 用于建立连接,参数为主机地址、端口号和心跳间隔。
  • client.loop_forever() 启动网络循环,处理与服务器之间的消息收发。

总结

通过本文的介绍,我们了解了如何使用Python的 paho-mqtt 库实现MQTT协议的发布与订阅功能。从环境准备、依赖安装,到具体的代码实现,每一步都详细展开,帮助开发者快速掌握物联网通信的核心技术。无论是发布消息还是订阅消息,paho-mqtt 都提供了简洁易用的API,使得MQTT通信变得简单高效。

以上就是使用Python实现MQTT发布与订阅的详细内容,更多关于Python、MQTT、paho-mqtt、发布订阅、物联网通信的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表