- [2创建py文件:`mqtt\_demo.py`](#2pymqtt_demopy_9)
- [3.代码实现](#3_12)
- [4.项目运行](#4_85)
+ [测试](#_89)
+ - [1、测试消息接收](#1_91)
- [2、 测试消息发布](#2__106)
+ [扩展](#_113)
Flask + MQTT 实现消息订阅发布
准备
- 本次项目主要使用到的库:
flask_mqtt
pip install flask_mqtt
开始
1.创建Flask项目
2创建py文件:mqtt_demo.py
- *也可以直接在项目中的 `app.py` 文件进行代码编写*
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中设置
host
和port
- 设置好后直接运行项目
测试
使用
MQTTX
进行消息测试
1、测试消息接收
- 创建连接
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!
点,真正体系化!**
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!