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




审核编辑:刘清

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

    关注

    2869

    文章

    41622

    浏览量

    358380
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83467
  • Raspberry Pi
    +关注

    关注

    1

    文章

    552

    浏览量

    22054
  • 树莓派
    +关注

    关注

    113

    文章

    1639

    浏览量

    104742
  • MQTT
    +关注

    关注

    5

    文章

    537

    浏览量

    21975

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

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

收藏 人收藏

    评论

    相关推荐

    e络盟2012上海 树莓 (Raspberry Pi)发烧友见面会

    ,报名以邮件确认为准。主题:树莓 (Raspberry Pi)发烧友见面会玩过树莓
    发表于 09-27 14:59

    如何制作Raspberry Pi树莓的SD卡

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

    树莓权威用户指南

    给出了python程序代码和hdmi显示模式。   《raspberry pi用户指南》适合程序员、计算机软硬件爱好者,以及对树莓感兴趣的
    发表于 07-01 00:23

    树莓新书!!《爱上Raspberry Pi》热销中!!

    爱上Raspberry Pi 爱上树莓首本中文教材 正版全新(现货疯抢)《爱上Raspberry Pi
    发表于 09-02 15:12

    树莓必备资料《爱上Raspberry Pi

    应用案例,具有很强的实操性,还有大量珍贵程序代码。配上爱上Raspberry Pi套件来学习,可以轻松快速掌握电路设计、程序编写,顺利地让你实现从开始策划到完成项目的全过程。本出版物适合电子专业、互交设计专业
    发表于 06-03 16:07

    极致小巧的树莓新成员,仅 5 美金的 Raspberry Pi Zero 登场

    到 25 美金,不过他们仍希望能更进一步压低价格,于是在稍早树莓家族的新成员 Raspberry Pi Zero 亮相,将价格定在仅 5 美金。新闻来源:
    发表于 11-26 22:46

    树莓 raspberry 资料

    最近同事问我要树莓3B的结构尺寸图,然后发现论坛里很多人也在找相关的资料索性,就分享给大家raspberry git地址,里面资料很全文档资料https://github.com
    发表于 08-03 10:39

    请问Arduino和树莓Raspberry Pi有什么差别?

    Arduino和树莓Raspberry Pi)都是电子创意设计的常用开发工具,那么它们之间到底有什么区别和特点呢?
    发表于 04-19 03:17

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

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

    树莓Python与自美人工智能系统实现人脸识别

    `今天和大家来聊聊树莓python和自美人工智能系统。可能有很多人对此不是很了解,我来逐一为大家介绍一下。一、树莓:英文名为
    发表于 12-26 11:24

    树莓Raspberry+Pi)实战指南+手把手教你掌握100个精彩案例

    树莓Raspberry+Pi)实战指南+手把手教你掌握100个精彩案例
    发表于 04-02 14:18

    分享一款不错的基于树莓Raspberry Pi CM的物联网网关方案

    分享一款不错的基于树莓Raspberry Pi CM的物联网网关方案
    发表于 06-15 07:01

    什么是树莓Raspberry Pi

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

    完整版Raspberry Pi树莓电路图

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

    Raspberry Pi树莓4 Model B产品介绍

    免费分享Raspberry Pi树莓 4 Model B产品简介、机械制图、示意图
    发表于 09-25 07:49