Eclipse Paho MQTT Python Client 使用手册
原文地址:https://www.cooooder.com/archives/20210303
目录
介绍
paho.mqtt.python 是一个MQTT客户端python库,能够让应用程序简单方便的连接到MQTT代理进行消息发布、订阅主题和消息接收。
目前 paho.mqtt.python-1.5.1 版本支持5.0、3.1.1和3.1 MQTT协议,同时支持Python 2.7.9+或3.5+。
环境
- MQTT代理:EMQ X Broker 4.2.6
- Python 3.9.0
- paho-mqtt 1.5.1
准备
-
参照 EMQ X Broker安装启动教程
成功启动EMQ后,可通过浏览器访问 http://localhost:18083 admin/public 进入EMQ控制台,在【工具 > Websocket】模块可方便进行客户端连接、订阅、消息接收、发布等测试和调试工作 -
Python 安装省略
-
paho-mqtt 安装
pip install paho-mqtt
快速开始
Python快速实现MQTT主题订阅和消息接收
import paho.mqtt.client as mq_tt
def on_connect(client, userdata, flags, rc):
"""
回调函数:当MQTT代理响应客户端连接请求时触发
:param client: 回调返回的客户端实例
:param userdata: Client()或user_data_set()中设置的私有用户数据
:param flags: MQTT代理发送的响应标识
:param rc: 连接结果
0:连接成功
1:连接被拒绝 - 协议版本
2: 连接被拒绝 - 客户端标识符无效
3:连接被拒绝 - 服务器不可用
4:连接被拒绝 - 用户名或密码错误
5:连接被拒绝 - 未授权6-255:当前未使用
:return:
"""
print("Connected with result code "+str(rc))
# 在on_connect()中进行消息订阅,是因为如果丢失连接进行重连,主题也会重新被订阅
client.subscribe("testTopic/#")
def on_message(client, userdata, message):
"""
回调函数:当接收到MQTT代理发布的消息时触发
:param client: 回调返回的客户端实例
:param userdata: Client()或user_data_set()中设置的私有用户数据
:param message: MQTTMessage的一个实例,这是一个包含主题,有效负载,qos,retain的类
:return:
"""
print(message.topic+" "+str(message.payload))
mq_client = mq_tt.Client(client_id='www.cooooder.com')
mq_client.on_connect = on_connect
mq_client.on_message = on_message
# 连接到EMQX Broker MQTT代理
mq_client.connect("127.0.0.1", 1883, 60)
# 阻塞式自动处理收发数据、自动处理重新连接,所有的数据处理逻辑都在预先设定好的回调函数中进行的
mq_client.loop_forever()
在 EMQ X Broker - 【客户端】可以看到客户端已连接
查看原图
在 EMQ X Broker - 【Websocket】发布testTopic主题消息
查看原图
Python程序打印出接收到的消息
Connected with result code 0
testTopic b'{ "msg": "Hello, World!" }'
testTopic b'{ "msg": "Hello, World2!" }'