Python实现MQTT消息收发
Python实现MQTT消息收发
介绍使用Python语言实现MQTT消息的接收和发送功能。
1. 环境准备
确保已安装paho.mqtt.client库,可以使用pip安装:
pip install paho-mqtt
2. 连接MQTT代理服务器
import paho.mqtt.client as mqtt
# 创建MQTT客户端对象
client = mqtt.Client()
# 设置连接参数
client.username_pw_set("username", "password") # 可选,如果代理服务器需要身份验证
client.connect("mqtt.example.com", 1883, 60) # 修改为实际的代理服务器地址、端口号和保持连接时间
3. 订阅主题并接收消息
def on_message(client, userdata, msg):
"""
消息回调函数,当订阅的主题有消息到达时触发
:param client: MQTT客户端对象
:param userdata: 用户自定义数据
:param msg: 接收到的消息,包含主题、负载等信息
"""
print(f"Received message on topic '{msg.topic}': {msg.payload.decode()}")
# 订阅主题
client.subscribe("test/topic")
# 注册消息回调函数
client.on_message = on_message
4. 发布消息
# 发布消息到指定主题
client.publish("test/topic", "Hello from Python!")
5. 处理连接和消息循环
# 启动消息循环
client.loop_start()
# 其他业务逻辑
# 断开连接
client.loop_stop()
client.disconnect()
示例
import paho.mqtt.client as mqtt
# 创建MQTT客户端对象
client = mqtt.Client()
# 设置连接参数
client.username_pw_set("username", "password") # 可选,如果代理服务器需要身份验证
client.connect("mqtt.example.com", 1883, 60) # 修改为实际的代理服务器地址、端口号和保持连接时间
def on_message(client, userdata, msg):
"""
消息回调函数,当订阅的主题有消息到达时触发
:param client: MQTT客户端对象
:param userdata: 用户自定义数据
:param msg: 接收到的消息,包含主题、负载等信息
"""
print(f"Received message on topic '{msg.topic}': {msg.payload.decode()}")
# 订阅主题
client.subscribe("test/topic")
# 注册消息回调函数
client.on_message = on_message
4. 发布消息
# 发布消息到指定主题
client.publish("test/topic", "Hello from Python!")
5. 处理连接和消息循环
# 启动消息循环
client.loop_start()
# 其他业务逻辑
# 断开连接
client.loop_stop()
client.disconnect()
示例
# 发布消息到指定主题
client.publish("test/topic", "Hello from Python!")
# 启动消息循环
client.loop_start()
# 其他业务逻辑
# 断开连接
client.loop_stop()
client.disconnect()
示例
以下是一个完整的示例代码,演示了连接MQTT代理服务器、订阅主题、接收消息和发布消息的过程:
import paho.mqtt.client as mqtt
def on_message(client, userdata, msg):
print(f"Received message on topic '{msg.topic}': {msg.payload.decode()}")
client = mqtt.Client()
client.connect("mqtt.example.com", 1883, 60)
client.subscribe("test/topic")
client.on_message = on_message
client.loop_start()
client.publish("test/topic", "Hello from Python!")
# 其他业务逻辑
client.loop_stop()
client.disconnect()
请根据实际情况修改MQTT代理服务器地址、端口号、主题和消息内容等参数。
下载地址
用户评论