python实现MQTT客户端通信的示例代码

 更新时间:2025年12月08日 10:15:44   作者:GY_1202  
本文主要介绍了python实现MQTT客户端通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

MQTT协议简介

MQTT(Message Queuing Telemetry Transport)是一个轻量级的发布/订阅消息传输协议,设计用于在低带宽、不可靠的网络环境中进行远程位置设备间的通信。它使用发布/订阅的消息模式,提供了三种消息服务质量(QoS)级别,并允许消息代理(broker)进行消息的持久化存储,从而确保消息的可靠传输。MQTT协议广泛应用于物联网(IoT)领域,因为它具有开销小、协议简单、易于实现等特点。

下面使用Python和paho-mqtt库编写了一个MQTT客户端代码示例。

MQTT客户端

import paho.mqtt.client as mqtt  
import time  
  
# MQTT服务器地址  
broker_address = "localhost"  # 替换为你的MQTT代理地址  
port = 1883  # MQTT代理的端口,默认为1883  
client_id = "python_mqtt_client"  # MQTT客户端的唯一ID  
topic = "test/topic"  # 要发布和订阅的主题  
username = "your_username"  # MQTT代理的用户名  
password = "your_password"  # MQTT代理的密码  
  
# 当连接到MQTT代理时调用的回调函数  
def on_connect(client, userdata, flags, rc):  
    print(f"Connected with result code {rc}")  
    # 订阅主题  
    client.subscribe(topic)  
  
# 当接收到MQTT消息时调用的回调函数  
def on_message(client, userdata, msg):  
    print(f"Received message '{msg.payload.decode('utf-8')}' on topic '{msg.topic}' with QoS {msg.qos}")  
  
# 创建MQTT客户端实例  
client = mqtt.Client(client_id)  
  
# 设置用户名和密码  
client.username_pw_set(username, password)  
  
# 为客户端设置回调函数  
client.on_connect = on_connect  
client.on_message = on_message  
  
# 连接到MQTT代理  
client.connect(broker_address, port)  
  
# 开始网络循环,处理接收到的消息和重连  
client.loop_start()  
  
try:  
    print("Publishing message...")  
    # 发布一条消息  
    client.publish(topic, "Hello, MQTT with username and password!", qos=1)  
      
    # 等待用户输入,以保持程序运行并接收消息  
    print("Press Enter to exit...")  
    input()  
except KeyboardInterrupt:  
    pass  
finally:  
    # 停止网络循环并断开连接  
    client.loop_stop()  
    client.disconnect()  
    print("Disconnected from MQTT broker.")

导入所需库:导入paho.mqtt.client模块,以便使用其提供的MQTT客户端类。
设置MQTT代理信息:设置MQTT代理的地址、端口、客户端ID、主题、用户名和密码。
定义回调函数
on_connect:当客户端成功连接到MQTT代理时调用。在这个函数中,我们订阅了指定的主题。
on_message:当客户端接收到MQTT消息时调用。在这个函数中,我们打印出接收到的消息内容。
创建MQTT客户端实例:使用指定的客户端ID创建一个MQTT客户端实例。
设置用户名和密码:使用username_pw_set方法设置用于连接到MQTT代理的用户名和密码。
设置回调函数:将之前定义的回调函数绑定到客户端实例上。
连接到MQTT代理:使用connect方法连接到MQTT代理。
启动网络循环:使用loop_start方法启动一个独立的线程来处理网络连接和消息传递。
发布消息:使用publish方法发布一条消息到指定的主题。
等待用户输入:使用input函数等待用户输入,以保持程序运行并接收消息。
清理资源:在用户输入或接收到中断信号时,停止网络循环,断开与MQTT代理的连接,并打印断开连接的消息。

:需要将broker_address、username和password替换为自己的MQTT代理地址和认证信息。此外,如果MQTT代理配置需要SSL/TLS加密连接,则还需要进行额外的配置来设置SSL/TLS参数。

到此这篇关于python实现MQTT客户端通信的示例代码的文章就介绍到这了,更多相关python MQTT客户端通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pytorch搭建简单的卷积神经网络(CNN)实现MNIST数据集分类任务

    Pytorch搭建简单的卷积神经网络(CNN)实现MNIST数据集分类任务

    这篇文章主要介绍了Pytorch搭建简单的卷积神经网络(CNN)实现MNIST数据集分类任务,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • python中subplot大小的设置步骤

    python中subplot大小的设置步骤

    matploglib能够绘制出精美的图表,有时候我们希望把一组图放在一起进行比较,就需要用到matplotlib中提供的subplot了,这篇文章主要给大家介绍了关于python中subplot大小的设置方法,需要的朋友可以参考下
    2021-06-06
  • Pandas中字符串和时间转换与格式化的实现

    Pandas中字符串和时间转换与格式化的实现

    本文主要介绍了Pandas中字符串和时间转换与格式化的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • python中封装token问题

    python中封装token问题

    这篇文章主要介绍了python中封装token问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • python实现最小二乘法的方法详解

    python实现最小二乘法的方法详解

    这篇文章主要介绍了如何基于python实现最小二乘法的方法,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2024-02-02
  • python3访问字典里的值实例方法

    python3访问字典里的值实例方法

    在本篇内容里小编给大家整理的是一篇关于python3访问字典里的值实例方法,有兴趣的朋友们可以学习参考下。
    2020-11-11
  • python GUI库图形界面开发之PyQt5拖放控件实例详解

    python GUI库图形界面开发之PyQt5拖放控件实例详解

    这篇文章主要介绍了python GUI库图形界面开发之PyQt5使用拖放控件实例详解,需要的朋友可以参考下
    2020-02-02
  • Python 旋转立方体的实现示例

    Python 旋转立方体的实现示例

    本文主要介绍了Python 旋转立方体的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • python或C++读取指定文件夹下的所有图片

    python或C++读取指定文件夹下的所有图片

    这篇文章主要为大家详细介绍了python或C++读取指定文件夹下的所有图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • 将python脚本打包进docker的完整步骤记录

    将python脚本打包进docker的完整步骤记录

    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,这篇文章主要介绍了将python脚本打包进docker的相关资料,需要的朋友可以参考下
    2025-09-09

最新评论