0
点赞
收藏
分享

微信扫一扫

【小沐学Python】Python实现通信协议(mqtt+flask)

1、简介

https://pypi.org/project/paho-mqtt/

MQTT 协议是一种机器对机器 (M2M)/“物联网”连接协议。它被设计为一种极其轻量级的发布/订阅消息传递传输,对于需要少量代码占用空间和/或网络带宽非常宝贵的远程位置的连接非常有用。

2、更多代码(flask)

2.1 安装flask_mqtt库

pip install flask_mqtt

在这里插入图片描述

2.2 编写flask_mqtt脚本

编写代码:

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()
    app.run(host='127.0.0.1', port=5000)

当 Flask 应用启动后,MQTT 客户端将会连接到服务器,并且订阅主题 /flask/mqtt。 在这里插入图片描述

2.3 安装MQTTX(MQTT 客户端)

https://mqttx.app/zh/downloads 在这里插入图片描述 主界面显示如下: 在这里插入图片描述

2.4 测试消息接收

  • 创建连接
Host:为代码中定义好的 broker.emqx.io
Port:为代码中定义好的 1883
用户名、密码根据需要添加

在这里插入图片描述

  • 添加订阅 主题为:/flask/mqtt 在这里插入图片描述 在这里插入图片描述
  • 在MQTTX中发布消息 在这里插入图片描述 Flask控制台中接收到的消息: 在这里插入图片描述

2.5 测试消息发布

  • 订阅使用消息接收的订阅 主题为:/flask/mqtt

使用 Postman 调用 /publish 接口:发送消息 Hello from Flask 至 /flask/mqtt 主题。

在这里插入图片描述 在 MQTTX 中将能看到 Flask 发送过来的消息。 在这里插入图片描述 在 python中将能看到 Flask 发送过来的消息。 在这里插入图片描述

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭ 如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O??? 如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡) 感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

举报

相关推荐

0 条评论