python mqtt通信接口开发

(二):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服务器搭建

cd /bin
emqx start

3.2 测试结果

先运行订阅,再运行发布,可以看到:
消息接收成功

3.3 拓展

除了python代码,还可以用MQTTfx模拟订阅/发布,搭配EMQTT进行测试。MQTTfx使用详情参考MQTT.fx的安装和使用


总结

现在mqtt的应用已经越来越广泛,记录总结学习。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值