(二):python mqtt通信接口开发
文章目录
前言
需求来源于AI算法通信接口编写…
一、mqtt是什么?
1.1,简介
- MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
- MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用
-
1.2,参数说明
- QoS:发布消息的服务质量,即:保证消息传递的次数
QoS 0:最多一次,即:<=1
QoS 1:至少一次,即:>=1
QoS 2:一次,即:=1
QoS 3:预留
此处有更详细的介绍-参考转自 mqtt是什么
https://blog.csdn.net/u010632165/article/details/118503059
二、使用步骤
1.引入库
代码如下(示例):
import json
import paho.mqtt.client as mqtt
2.完整代码实现
订阅:
import json
import paho.mqtt.client as mqtt
# 一旦连接成功,回调此方法
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("连接成功")
print("Connected with result code " + str(rc))
# 一旦订阅到消息,回调此方法
def on_message(client, userdata, msg):
print('收到')
print(msg)
print(msg.topic + " " + str(msg.payload))
print(msg.payload)
return msg.payload
client = mqtt.Client(protocol=3)
client.username_pw_set("admin", "password")
client.on_connect = on_connect
client.on_message = on_message
client.connect(host="127.0.0.1", port=1883, keepalive=60) # 订阅频道
time.sleep(1)
#订阅主题
test = client.subscribe("AI/set/time", 0)
client.loop_forever()
发布:
import json
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
def on_subscribe(client, userdata, mid, granted_qos):
print("消息发送成功")
client = mqtt.Client(protocol=3)
client.username_pw_set("admin", "password")
client.on_connect = on_connect
client.on_subscribe = on_subscribe
client.connect(host="127.0.0.1", port=1883, keepalive=60) # 订阅频道
time.sleep(1)
#封装数据
data = {
"timestamp": "20211101T12351",
"status": "OK"
}
# 发布MQTT信息
data_pub = json.dumps(data)
#此处发布的主题如果被订阅,订阅者就会收到消息
client.publish(topic="AI/set/time", payload=data_pub, qos=0)
client.loop_forever()
3.测试
3.1 mqtt服务器搭建
- EMQTT:http://emqtt.io/
- 运行程序,打开EMQ的控制台(关于EMQ的使用:使用EMQ 平台搭建MQTT服务器)至此服务器搭建完毕。
启动命令
cd /bin
emqx start
3.2 测试结果
先运行订阅,再运行发布,可以看到:
3.3 拓展
除了python代码,还可以用MQTTfx模拟订阅/发布,搭配EMQTT进行测试。MQTTfx使用详情参考MQTT.fx的安装和使用
总结
现在mqtt的应用已经越来越广泛,记录总结学习。