0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Raspberry Pi树莓派使用Python实现MQTT通信设计

jf_Ufm3lVrj 来源:凌顺实验室 2024-03-14 11:45 次阅读

本示例需要MQTT服务端的,所以必须先安装部署 MQTT 服务端

这次的例子,主要讲述如何基于PYTHON的 MQTT 客户端的使用方法

而在本示例中,将会使用paho-mqtt这个开源的Python库。

Paho 项目的创建旨在为机器对机器 (M2M) 和物联网 (IoT) 提供开放和标准消息传递协议的可扩展的开源的应用程序实现。

Paho 官网https://www.eclipse.org/paho/

1,安装Paho

最新的稳定版本可在Python软件包索引(PyPi)中找到,可以用以下方式安装

如果是python2.7,请在命令行输入:

pip install paho-mqtt

或者使用的是python3,请在命令行输入:

pip3 install paho-mqtt

又或者是使用virtualenv虚拟环境中安装

virtualenv paho-mqtt
source paho-mqtt/bin/activate
pip install paho-mqtt

通过git安装

要获得完整的代码,包括例子和测试,你可以git clonePaho的仓库

git clone https://github.com/eclipse/paho.mqtt.python

一旦你有了代码,也可以从仓库中安装它。

cd paho.mqtt.python
python setup.py install

2 订阅主题(subscription topic)

首先我们创建一个用于订阅主题的python程序文件,例如命名为:paho-subscription.py

该程序主要和服务器建立连接,并且订阅指定的主题,例如是:"/lingshun/mqtt_message"

当服务器发布/lingshun/mqtt_message主题的信息时,本程序就会收到并显示该信息内容。

完整代码如下:

# 加载库
import paho.mqtt.client as mqtt

broker = "127.0.0.1" # 使用IP地址需要在服务器端已经部署MQTT服务端,并设置允许远程访问
port = 1883 # MQTT 默认端口
keepalive = 60 # 连接保持时间
topic = "/lingshun/mqtt_message" # 需要订阅的主题

# 当客户端收到服务器的CONNACK响应时的回调
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    # 在on_connect()中订阅意味着,如果我们失去连接并重新连接,那么订阅将被更新。
    client.subscribe(topic)

# 当从服务器收到PUBLISH消息时的回调。
def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))

client = mqtt.Client() #  创建客户 
client.on_connect = on_connect # 当 发生连接时 回调的函数
client.on_message = on_message # 当 收到信息时 回调的函数
client.connect(broker, port, keepalive)  # 建立连接

# 阻断调用,处理网络流量,分配回调并处理重新连接的问题。
# 其他loop*()函数可以提供一个线程接口和一个手动接口。
client.loop_forever()

命令行运行该程序:

python3 paho-subscription.py

此时,程序正在等待着主题 /lingshun/mqtt_message发布新信息。

3 发布主题(publish topic)

现在,我们开始写发布主题的程序,新建一个Python程序,例如文件名为:paho-publish.py

该程序,主要演示如何发布指定主题的信息。大概思路是建立mqtt连接并定义好主题 ,然后每隔1秒发送一次信息,不断循环

完整代码如下:

# 加载库
import paho.mqtt.client as mqtt
import time

broker = "127.0.0.1" # 使用IP地址需要在服务器端已经部署MQTT服务端,并设置允许远程访问
port = 1883 # MQTT 默认端口
keepalive = 60 # 连接保持时间
topic = "/lingshun/mqtt_message" # 需要发布的主题

client = mqtt.Client()
client.connect(broker, port)

send_count = 0
while 1:

    msg = f"This is the {send_count} message."
    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}")
    send_count += 1
    time.sleep(1)

在另一个终端(Terminal)中运行发布主题的程序paho-publish.py

在 命令行输入:

python3 paho-publish.py

实现本地MQTT通信

对比两个终端(Terminal)查看,可以看到mqtt在本地中实现了通信。

a1720d80-e1b4-11ee-a297-92fbcf53809c.png




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2900

    文章

    44052

    浏览量

    370094
  • python
    +关注

    关注

    55

    文章

    4766

    浏览量

    84369
  • Raspberry Pi
    +关注

    关注

    1

    文章

    555

    浏览量

    22149
  • 树莓派
    +关注

    关注

    116

    文章

    1688

    浏览量

    105454
  • MQTT
    +关注

    关注

    5

    文章

    647

    浏览量

    22392

原文标题:Raspberry Pi 树莓派使用Python实现 MQTT通信(Paho库)

文章出处:【微信号:凌顺实验室,微信公众号:凌顺实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    树莓5,Raspberry Pi 5 评测

    Raspberry Pi Zero的15针接线器,而不是原先的22针接线器。还要注意的是,现在有两个相邻的接头,我们现在可以连接两个摄像头、两个DSI显示器或者混合连接。 树莓
    发表于 06-19 14:51

    如何制作Raspberry Pi树莓的SD卡

    如何制作Raspberry Pi树莓的SD卡SD卡将包含Raspberry Pi的操作系统(操
    发表于 06-30 23:53

    【最全】树莓Raspberry Pi)平台资源合集

    `资源目录:树莓Raspberry Pi)平台资源大全树莓的硬件及配置使用Unix系统社区
    发表于 08-29 17:37

    什么是树莓Raspberry Pi

    什么是树莓Raspberry Pi)?树莓可以做什么?
    发表于 07-30 06:21

    完整版Raspberry Pi树莓电路图

    完整版Raspberry Pi树莓电路图大全
    发表于 09-25 08:00

    Raspberry_Pi_B_Mechanical_Schematic树莓B的机械尺寸图纸

    Raspberry Pi B Mechanical Schematic树莓B的机械尺寸图纸
    发表于 01-06 11:12 178次下载

    Raspberry Pi树莓使用说明总结资料免费下载

    本文档的主要内容详细介绍的是Raspberry Pi树莓使用说明总结资料免费下载。
    发表于 05-31 17:54 15次下载
    <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b>使用说明总结资料免费下载

    树莓Raspberry Pi ZeroW的电路原理图免费下载

    本文档的主要内容详细介绍的是树莓Raspberry Pi ZeroW的电路原理图免费下载。
    发表于 08-14 08:00 84次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> ZeroW的电路原理图免费下载

    树莓Raspberry Pi Zero的电路原理图免费下载

    本文档的主要内容详细介绍的是树莓Raspberry Pi Zero的电路原理图免费下载。
    发表于 08-14 08:00 73次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Zero的电路原理图免费下载

    dfrobot树莓Raspberry Pi Zero简介

    树莓Raspberry Pi Zero系列是迄今为止体积最小的卡片式电脑,只有1代原先尺寸的一半大小,却有着更加优异的性能表现。
    的头像 发表于 01-02 11:34 3905次阅读
    dfrobot<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> Zero简介

    dfrobot树莓Raspberry Pi ZeroW介绍

    微型树莓控制器系列树莓Raspberry Pi Zero W 简介
    的头像 发表于 01-02 14:18 2958次阅读
    dfrobot<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> ZeroW介绍

    Raspberry Pi(树莓)操作系统的安装方法

    Raspberry Pi(树莓)需要搭载操作系统才能正常运行。官方支持的操作系统是Raspberry
    的头像 发表于 04-02 15:26 3056次阅读

    学习Python的双重选择: 树莓和行空板

    Python是一种流行并简单和易用的编程语言, 吸引了众多初学者和专业开发人员。许多人选择使用树莓Raspberry Pi)作为学习
    的头像 发表于 09-08 13:53 574次阅读

    树莓Pi5】树莓 Raspberry Pi 5 正式发布!

    这款 Pi 5从英国树莓总部跨洋而来,作为树莓的官方代理商,上海晶珩EDATEC荣幸地在首发时刻,率先揭开了
    的头像 发表于 09-28 17:30 1987次阅读
    【<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>Pi</b>5】<b class='flag-5'>树莓</b><b class='flag-5'>派</b> <b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b> 5 正式发布!

    加热和冷却树莓5(Raspberry Pi5)这是真嘞?

    每当发布新一代的树莓Raspberry Pi)时,热控制问题都会引发广泛讨论。人们都在思考是否有必要采取措施以控制热量,以及如果需要,如何最有效地
    的头像 发表于 10-13 14:41 868次阅读
    加热和冷却<b class='flag-5'>树莓</b><b class='flag-5'>派</b>5(<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>5)这是真嘞?