侧边栏壁纸
博主头像
喵记博主等级

行动起来,活在当下

  • 累计撰写 18 篇文章
  • 累计创建 4 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Paho-mqtt 使用样例

张秋平
2024-02-22 / 0 评论 / 0 点赞 / 21 阅读 / 2557 字

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)

0

评论区