MQTT中文站
  • 首页
  • MQTT 学习
    • MQTT 入门
    • MQTT 进阶
    • MQTT 编程
    • MQTT 实例
    • MQTT 要点
    • MQTT5 要点
    • MQTT 工具
    • MQTT 客户端库
    • MQTT 服务器
    • Zigbee2MQTT
    • Sparkplug
    • Home Assistant
    • Node-RED
      • Node-RED 安装部署
      • Node-RED 用户指南
      • Node-RED 创建节点
      • Node-RED 示例教程
      • Node-RED 开发流程
      • Node-RED 接口参考
      • Node-RED 配置模板
      • Node-RED 常见问题
  • MQTT 规范
    • MQTT 5 规范
    • MQTT 3.1.1 规范
    • MQTT 3.1 规范
    • MQTT-SN v1.2规范
    • Sparkplug® v3.0.0规范
  • 产品中心
  • 解决方案
    • 环境监测
    • 工业制造
    • 智慧水利
    • 水利管网
    • 积水监测
    • 综合管廊
    • 档案库房
    • 交通物流
    • 智慧城市
    • 智慧农业
    • 智慧养殖
    • 能源电力
    • 石油石化
    • 智能家居
    • 物联网
    • 汽车与出行
  • 使用文档
  • MQTT 云平台
  • 登录
  • 注册

Python MQTT教程:连接、发布和订阅

2 年前 • MQTT 编程

如何在 Python 中使用 MQTT

Python是一种广泛使用的解释型、高级编程、通用型编程语言。Python的设计哲学强调代码的可读性和简洁的语法,使得开发者能够用更少的代码表达想法,不管是小型还是大型程序。本文将介绍如何在Python项目中使用paho-mqtt客户端库来实现与MQTT服务器的连接、订阅、取消订阅、消息发布和接收等功能。

项目初始化

首先,确保您的Python版本为3.6或更高版本。

python3 --version

选择MQTT客户端库

在Python中,paho-mqtt是一种常用的MQTT客户端库,它提供了对MQTT v3.1和v3.1.1的支持。您可以使用Pip来安装paho-mqtt。

pip3 install -i https://pypi.doubanio.com/simple paho-mqtt

Python MQTT 使用

连接MQTT服务器

本文将使用EMQX提供的免费公共MQTT服务器,服务器接入信息如下:

  • Broker: iot.mqtt.cn
  • TCP Port: 1883
  • Websocket Port: 8083

首先,导入paho-mqtt客户端库:

from paho.mqtt import client as mqtt_client

然后,设置MQTT Broker连接参数:

broker = 'iot.mqtt.cn'
port = 1883
topic = "/python/mqtt"
client_id = f'python-mqtt-{random.randint(0, 1000)}'

接下来,编写连接MQTT Broker的函数:

def connect_mqtt():
    def on_connect(client, userdata, flags, rc):
        if rc == 0:
            print("Connected to MQTT Broker!")
        else:
            print(f"Failed to connect, return code {rc}\n")

    client = mqtt_client.Client(client_id)
    client.on_connect = on_connect
    client.connect(broker, port)
    return client

发布消息

您可以使用以下代码发布消息到指定主题:

def publish(client):
    msg_count = 0
    while True:
        time.sleep(1)
        msg = f"messages: {msg_count}"
        result = client.publish(topic, msg)
        status = result[0]
        if status == 0:
            print(f"Send `{msg}` to topic `{topic}`")
        else:
            print(f"Failed to send message to topic {topic}")
        msg_count += 1

订阅消息

编写消息回调函数on_message,在客户端从MQTT Broker收到消息后将被调用:

def subscribe(client: mqtt_client):
    def on_message(client, userdata, msg):
        print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic")

    client.subscribe(topic)
    client.on_message = on_message

完整代码

发布消息的代码:

# python 3.6

import random
import time
from paho.mqtt import client as mqtt_client

# ...(前面的代码)

def run():
    client = connect_mqtt()
    client.loop_start()
    publish(client)

if __name__ == '__main__':
    run()

订阅消息的代码:

# python3.6

import random
from paho.mqtt import client as mqtt_client

# ...(前面的代码)

def run():
    client = connect_mqtt()
    subscribe(client)
    client.loop_forever()

if __name__ == '__main__':
    run()

测试

发布消息:运行发布消息的代码,您将看到客户端成功连接并成功发布消息。

python3 pub.py

订阅消息:运行订阅消息的代码,您将看到客户端成功连接并成功接收到发布的消息。

python3 sub.py

总结

通过paho-mqtt客户端库,我们可以轻松地在Python项目中实现与MQTT服务器的连接、消息发布和订阅功能。Python在物联网领域的应用越来越广泛,其简洁的语法和高可读性使其成为设备侧业务逻辑实现的理想选择。希望本文能帮助您更好地理解如何在Python中使用MQTT。

打赏赞(6)微海报分享
mqtt python python函数 科技新闻

深入探讨MQTT 5.0的新特性:使用MQTTX CLI的示例

构建 Vue 项目中的 MQTT 集成:实现实时消息传递

猜你喜欢

改善基础设施:HiveMQ如何推动智能城市发展

改善基础设施:HiveMQ如何推动智能城市发展

08/07
2024
为什么企业选择全托管HiveMQ云进行MQTT部署

为什么企业选择全托管HiveMQ云进行MQTT部署

07/01
2024
MQTT 赋能工业 PLC 数据采集与应用

MQTT 赋能工业 PLC 数据采集与应用

06/30
2024
  • 解决方案
    • 智能家居
    • 汽车与出行
    • 工业制造
    • 能源电力
    • 石油石化
    • 交通物流
    • 零售
  • 学习
    • MQTT 规范
    • MQTT 教程
    • MQTT 软件
    • MQTT 客户端库
    • MQTT 服务器
    • 工具和应用程序
  • 关于我们
    • 了解创科慧仁
    • 加入创科慧仁
    • 投资者关系
    • 新闻动态
    • 合作伙伴
    • 联系我们
  • 友情链接
    • Modbus中文网
    • 跳动符号官网
    • 物联网世界
    • RFID世界网
    • 深圳物联网协会
    • isoftstone软通动力
    • 中国发展战略学研究会
    • B.P商业伙伴
  • 在线客服
  • 全国客户服务热线
    4006909885
  • 官方公众号
  • 联系邮箱
    contact@mqtt.cn
Copyright © 2025 MQTT中文站. All rights reserved.Designed by nicetheme. 京ICP备20029519号
在线客服

微信咨询

微信咨询

4006909885

服务热线 7*24小时

电话咨询
  • 首页
  • MQTT 学习
    • MQTT 入门
    • MQTT 进阶
    • MQTT 编程
    • MQTT 实例
    • MQTT 要点
    • MQTT5 要点
    • MQTT 工具
    • MQTT 客户端库
    • MQTT 服务器
    • Zigbee2MQTT
    • Sparkplug
    • Home Assistant
    • Node-RED
  • MQTT 规范
    • MQTT 5 规范
    • MQTT 3.1.1 规范
    • MQTT 3.1 规范
    • MQTT-SN v1.2规范
    • Sparkplug® v3.0.0规范
  • 产品中心
  • 解决方案
    • 环境监测
    • 工业制造
    • 智慧水利
    • 水利管网
    • 积水监测
    • 综合管廊
    • 档案库房
    • 交通物流
    • 智慧城市
    • 智慧农业
    • 智慧养殖
    • 能源电力
    • 石油石化
    • 智能家居
    • 物联网
    • 汽车与出行
  • 使用文档
  • MQTT 云平台
  • 登录
  • 注册
string(5) "2.0.0"