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???
如果您需要相关功能的代码定制化开发,可以留言私信作者;
(✿◡‿◡)
感谢各位大佬童鞋们的支持!
( ´ ▽´ )ノ ( ´ ▽´)っ!!!