【Python】Flask + MQTT 实现消息订阅发布

这篇具有很好参考价值的文章主要介绍了【Python】Flask + MQTT 实现消息订阅发布。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Flask + MQTT 实现消息订阅发布

准备

  • 本次项目主要使用到的库:flask_mqtt
pip install flask_mqtt

开始

1.创建Flask项目

2创建py文件:mqtt_demo.py

- *也可以直接在项目中的 `app.py` 文件进行代码编写*

【Python】Flask + MQTT 实现消息订阅发布,物联网,Python,Flask,python,flask,开发语言,物联网,tcp/ip,ubuntu

3.代码实现

from flask import Flask, request, jsonify
from flask_mqtt import Mqtt

app = Flask(__name__)


# 代理地址
app.config['MQTT_BROKER_URL'] = 'broker.emqx.io'
# 端口
app.config['MQTT_BROKER_PORT'] = 1883
# 当需要验证用户名和密码时,请设置该项
app.config['MQTT_USERNAME'] = 'user'
# 当需要验证用户名和密码时,请设置该项
app.config['MQTT_PASSWORD'] = '123456'
# 设置心跳时间,单位为秒
app.config['MQTT_KEEPALIVE'] = 60
# 如果服务器支持 TLS,则设置为 True
app.config['MQTT_TLS_ENABLED'] = False
# 主题
topic = '/flask/mqtt'
# 实例化
mqtt_client = Mqtt(app)


@app.route('/')
def index():
    # 初始路由
    return "Welcome mqtt_flask"


@mqtt_client.on_connect()
def handle_connect(client, userdata, flags, rc):
    """连接回调函数"""
    if rc == 0:
        print('Connected successfully')
        # 订阅主题
        mqtt_client.subscribe(topic)
    else:
        # 连接失败
        print('Bad connection. Code:', rc)


@mqtt_client.on_message()
def handle_mqtt_message(client, userdata, message):
    """ 消息回调函数 """
    # 定义接受到的消息
    data = dict(
        # 主题
        topic=message.topic,
        # 内容
        payload=message.payload.decode()
    )
    # 打印输出接收到的消息
    print('Received message on topic: {topic} with payload: {payload}'.format(**data))


@app.route('/publish', methods=['POST'])
def publish_message():
    """ 消息发布接口(实际应用中,该接口可能需要处理一些复杂业务逻辑) """
    # 格式化数据
    request_data = request.get_json()
    # 发布消息
    publish_result = mqtt_client.publish(request_data['topic'], request_data['msg'])

    return jsonify({'code': publish_result[0]})


if __name__ == '__main__':
    app.run()

4.项目运行

  • 运行项目前可在Pycharm中设置hostport
    【Python】Flask + MQTT 实现消息订阅发布,物联网,Python,Flask,python,flask,开发语言,物联网,tcp/ip,ubuntu
  • 设置好后直接运行项目

测试

使用MQTTX进行消息测试

1、测试消息接收

  • 创建连接

    • Host:为代码中定义好的 broker.emqx.io
    • Port:为代码中定义好的 1883
    • 用户名、密码根据需要添加
      【Python】Flask + MQTT 实现消息订阅发布,物联网,Python,Flask,python,flask,开发语言,物联网,tcp/ip,ubuntu
  • 添加订阅

    • 主题为:/flask/mqtt
      【Python】Flask + MQTT 实现消息订阅发布,物联网,Python,Flask,python,flask,开发语言,物联网,tcp/ip,ubuntu
  • MQTTX中发布消息

    • 主题:/flask/mqtt
      【Python】Flask + MQTT 实现消息订阅发布,物联网,Python,Flask,python,flask,开发语言,物联网,tcp/ip,ubuntu
  • Flask控制台中接收到的消息
    【Python】Flask + MQTT 实现消息订阅发布,物联网,Python,Flask,python,flask,开发语言,物联网,tcp/ip,ubuntu

2、 测试消息发布

  • 订阅使用消息接收的订阅
    • 主题为:/flask/mqtt
  • 使用Postman调用 /publish 接口,并发送消息到 /flask/mqtt 主题中
    【Python】Flask + MQTT 实现消息订阅发布,物联网,Python,Flask,python,flask,开发语言,物联网,tcp/ip,ubuntu
  • MQTTX 中接收到的消息
    【Python】Flask + MQTT 实现消息订阅发布,物联网,Python,Flask,python,flask,开发语言,物联网,tcp/ip,ubuntu

扩展

本次Flask项目在Win10下运行, MQTTX消息消息发送订阅在Ubuntu下进行

  • 内网穿透
    • 使用花生壳进行内网映射
    • 内网地址及端口为:Flask项目所在主机IP,端口为Flask运行端口
    • 使用协议:HTTPS

参考:文章来源地址https://www.toymoban.com/news/detail-756695.html

  • 链接: https://www.emqx.com/zh/blog/how-to-use-mqtt-in-flask
  • 链接: https://blog.csdn.net/emqx_broker/article/details/124816126

到了这里,关于【Python】Flask + MQTT 实现消息订阅发布的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文搞懂MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布

    1.1 什么是MQTT? MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。 MQTT最大优点在于用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息

    2024年02月10日
    浏览(39)
  • 一文搞懂MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布&MQTT 客户端重连

    简介: 之前介绍了RabbitMQ以及如何在SpringBoot项目中整合使用RabbitMQ,看过的朋友都说写的比较详细,希望再总结一下目前比较流行的MQTT。所以接下来,就来介绍什么MQTT?它在IoT中有着怎样的作用?如何在项目中使用MQTT? 之前介绍了RabbitMQ以及如何在SpringBoot项目中整合使用

    2024年02月05日
    浏览(42)
  • MQTT记录(概述,docker部署,基于spring-integration-mqtt实现消息订阅与发布,客户端工具测试)

    需要spring-boot集成spring-integration-mqtt代码的直接跳到第5部分 1.1 MQTT是什么呢? message queue telemetry translation 是一种基于发布与订阅的轻量级消息传输协议.适用于低带宽或网络不稳定的物联网应用.开发者可以使用极少的代码来实现物联网设备之间的消息传输.mqtt协议广泛应用于物

    2024年02月12日
    浏览(46)
  • 使用Node.js连接和发布/订阅MQTT消息

    Node.js是一种基于事件驱动的异步I/O服务器端JavaScript运行环境,因为其非阻塞I/O和事件驱动模型,使得它非常适合处理大量并发请求的场景。MQTT是一种轻量级的消息传递协议,它是基于发布/订阅模式的,适用于传输小量数据,且具有低带宽、低电量消耗和可靠性高等特点。这

    2024年02月06日
    浏览(39)
  • RuoYi-Vue前后端分离搭建MQTT服务器实现消息订阅、发布、数据存储 (EMQX Windows10)最全,懒人操作

    1、在RuoYi-Vue项目的superVisualizationSys-common模块下的pom.xml加入jar包依赖 3、在superVisualizationSys-commonsrcmainjavacomsuperVisualizationcommonutils目录下新建mqtt文件夹,添加以下三个文件 注:项目报红的地方可以按Alt+Enter键导包 下载路径: https://www.emqx.io/zh/download   1. 在windows上安装

    2024年02月15日
    浏览(50)
  • 【Ubuntu搭建MQTT Broker及面板+发布消息、订阅主题】

    根据自己的服务器是否开始了防火墙放行端口(18083 默认面板端口) 访问:域名:18083 用户名是admin,初始密码是public。登陆后需要立即修改密码,还可以新增用户 至此搭建完成,我们使用本地的进行发布订阅测试 最后一个免费版本下载点击链接下载 https://newbie-typora.oss-cn-

    2024年02月09日
    浏览(35)
  • ESP32的MQTT AT固件烧录+STM32以ESP32的MQTT AT固件的AT指令连接EMQX下mqtt服务器实现消息订阅和发布

    目录 写在前面 三种方案(利用ESP32连接EMQX下的MQTT) 步骤 ESP32烧录固件并AT指令进行测试。 下载固件  烧录工具下载 烧录固件(选择ESP32)  关于AT 指令与MQTT服务器断开后自动重连MQTT服务器 关于AT指令设置上电自动连接WIFI 关于AT指令设置断开后自动重新连接WIFI STM32对接E

    2023年04月12日
    浏览(44)
  • 从零开始用Nodejs搭建一个MQTT服务器,并且用stm32通过esp8266进行消息订阅和发布

    最近在做一个物联网项目,需要用到服务器进行数据的存储和数据的请求和发送,之前我用过onenet平台上的http服务,虽然能通过get和post请求进行数据的提交和发送,但是平台上的数据发生改变却不能主动推送给esp8266,与我此次的项目不符合,所以pass。然后我了解了下mqtt协

    2024年02月04日
    浏览(50)
  • ESP32+MQTT+MySQL实现发布订阅【气味数据收集】

    🔮🔮🔮🔮🔮相关文章🔮🔮🔮🔮🔮 ESP32连接MQ Sensor实现气味反应 🔗 https://blog.csdn.net/ws15168689087/article/details/131365573 ESP32连接云服务器【WebSocket】 🔗 https://blog.csdn.net/ws15168689087/article/details/131406163 个人云服务器搭建MQTT服务器 🔗 https://blog.csdn.net/ws15168689087/article/details/

    2024年02月17日
    浏览(37)
  • 【MQTT协议】使用Mosquitto实现mqtt协议(二):编写视频帧的发布/订阅服务

    更多内容详见 【MQTT协议】使用c++实现mqtt协议(Mosquitto源码编译) MQTT协议中的QoS(Quality of Service)表示消息传输的服务质量等级,它是MQTT协议中非常重要的一个概念。 MQTT协议中定义了三个不同等级的QoS: QoS 0:最多一次(At most once)传输。消息发布者只发送一次消息,不

    2023年04月14日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包