Paho-mqtt python库使用样例
# -*- encoding: utf-8 -*-
"""
@日期 : 2022/9/28 16:58
@作者 : 张秋平
@邮箱 : 1324616745@qq.com
@文件 : main.py
@ 描述 : MQTT 库 paho 测试文件
"""
import time
import paho.mqtt.client as MqttClient
def on_connect(client, userdata, flags, rc):
""" 连接成功回调函数 """
print("连接成功回调函数")
if rc == 0:
print("MQTT 服务器连接成功")
elif rc == 4:
print("MQTT 服务器连接失败, 用户名或密码错误")
else:
print("MQTT 服务器连接失败, rc =", rc)
def on_disconnect(client, userdata, rc):
""" 断开连接回调函数 """
print("断开连接回调函数")
print("client: ", client)
print("userdata: ", userdata)
print("rc: ", rc)
def on_subscribe(client, userdata, mid, granted_qos):
""" 订阅成功回调函数 """
print("订阅成功回调函数")
print("client: ", client)
print("userdata: ", userdata)
print("mid: ", mid)
print("granted_qos: ", granted_qos)
def on_publish(client, userdata, mid):
""" 发布成功回调函数 """
print("发布消息成功, mid: ", mid)
# print("client: ", client)
# print("userdata: ", userdata)
# print("mdi: ", mid)
def on_message(client, userdata, message):
""" 收到消息回调函数 """
print("client: ", client)
print("userdata: ", userdata)
print("message: ", message)
mqtt_client = MqttClient.Client(client_id="client_python", clean_session=True, userdata=None)
mqtt_client.max_inflight_messages_set(20)
# 最大传出消息队列长度
mqtt_client.max_queued_messages_set(30)
# 如果服务器没有响应, 当 pub_qos > 0 时重发的间隔时间
mqtt_client.message_retry_set(3)
# 设置连接得账号密码
mqtt_client.username_pw_set("nhet", "nhet2022.+")
# 重连间隔时间
mqtt_client.reconnect_delay_set(1, 30)
# 设置相关回调函数
mqtt_client.on_connect = on_connect
mqtt_client.on_disconnect = on_disconnect
mqtt_client.on_publish = on_publish
mqtt_client.on_subscribe = on_subscribe
mqtt_client.on_message = on_message
print("开始调用 connect 函数连接 MQTT 服务器")
mqtt_client.connect(host="192.168.31.3", port=1883, keepalive=60)
print("开始调用 loop_start 循环")
mqtt_client.loop_start()
count = 0
while True:
count += 1
res = mqtt_client.publish("topic_debug", payload=f"qos_0: count = {count}", qos=0)
print("qos_0_res: ", res)
time.sleep(1)
res2 = mqtt_client.publish("topic_debug", payload=f"qos_1: count = {count}", qos=1)
print("qos_1_res: ", res2)
time.sleep(1)
res3 = mqtt_client.publish("topic_debug", payload=f"qos_2: count = {count}", qos=2)
print("qos_2_res: ", res3)
time.sleep(1)
评论区