使用pip安装封装好的DXR插件
pip install DXR
安装完成后会得到两个包分别为Dxr_mqtt以及Dxr_log,使用下列方式导入包内所有函数,也可以单独引用相应内容
from Dxr_mqtt.dxr_mqtt_2 import *
from Dxr_mqtt.dxr_mqtt import *
from Dxr_log.log import *
dxr_mqtt以及dxr_mqtt_2区别在于2使用了qos为2的方式进行发布话题和订阅话题,dxr_mqtt使用qos为0的方式进行发布话题和订阅话题,可以根据业务具体需求进行选择
MQTT设计了一套保证消息稳定传输的机制,包括消息应答、存储和重传。在这套机制下,提供了三种不同层次QoS(Quality of Service):
- QoS0,At most once,至多一次;
- QoS1,At least once,至少一次;
- QoS2,Exactly once,确保只有一次。
QoS 是消息的发送方(Sender)和接受方(Receiver)之间达成的一个协议:
- QoS0 代表,Sender 发送的一条消息,Receiver 最多能收到一次,也就是说 Sender 尽力向 Receiver 发送消息,如果发送失败,也就算了;
- QoS1 代表,Sender 发送的一条消息,Receiver 至少能收到一次,也就是说 Sender 向 Receiver 发送消息,如果发送失败,会继续重试,直到 Receiver 收到消息为止,但是因为重传的原因,Receiver 有可能会收到重复的消息;
- QoS2 代表,Sender 发送的一条消息,Receiver 确保能收到而且只收到一次,也就是说 Sender 尽力向 Receiver 发送消息,如果发送失败,会继续重试,直到 Receiver 收到消息为止,同时保证 Receiver 不会因为消息重传而收到重复的消息。
dxr_mqtt包类和方法的介绍,(dxr_mqtt_2一致,只是qos不一样)
# setServerUrl(选用)
# 用于设置mqtt连接的服务器,
# 默认url为127.0.0.1,默认clientID为随机时间戳,
# 根据也无需要进行相应修改
setServerUrl('xx.xx.xx.xx', clientID='server')
# dxr_mqtt_2中方法为以下方法内容,后续所有方法都相似,方法名+'_2'
# clientID 不能和上面一样,会有冲突
setServerUrl_2('39.101.69.111', clientID='server_2')
# 设置是否打印mqtt日志,默认为False
# setMqttLog(False)
# Dxr_Publisher(消息发布者)
# 申请一个消息发布者后
# 可以直接使用发布至调用publish方法进行话题发布
dxr_publish = Dxr_Publisher('/cmd_vel')
# 直接使用publish方法进行消息发布(消息为json对象)
dxr_publish.publish({
"op": "test",
"cmd": '/test',
"msg": {
"test": 'test'
}
})
# 订阅消息回调方法
def callback_test1(msg):
print('test1', msg)
# 申明一个订阅者
# topic 订阅一个话题
# callback 定义一个回调函数用于接受话题消息
dxr_subscriber = Dxr_Subscriber('/test1', callback=callback_test1)
dxr_log包类和方法的介绍
# log存放在项目下的log文件加下,log文件夹不存在会自动创建文件夹
# 第一个版本还无法设置日志存储时长,目前为3天一覆盖,后续会更新
# 设置相应类型日志是否打印在终端
setLogPrint(info=True, debug=True, error=True)
# 日志存储在all.log中
print_info('test')
# 日志存储在debug.log中
print_debug('test')
# 日志存储在error.log以及all.log中
print_error('test')
其它介绍,上篇文章有介绍如何安装mosquitto,本篇会讲解下如何使用mosquitto查看DXR插件包中订阅和发布的相应客户端
root@iZzpmczawpjrqvZ:~# mosquitto_sub -t /topic/#
server_pub:
/cmd_vel
/test2
/test3
server_sub:
/test1
/test2
/test3
server_2_pub2:
/test4
/pub_test2
使用mosquitto_sub -t /topic/#查看所有正在发布和订阅者发布和订阅的话题类型
也可以使用mosquitto_sub -t /topic/<client_id> (client_id为订阅发布这的client_id)来查看特定发布者发布和订阅的话题
如果发布者意外掉线后,发布和订阅的话题会被清空,也可以根据这个方式来检验发布订阅者程序是否正常运行
根据上述查看到的话题使用mosquitto_sub -t <topic>查看具体话题发布的消息
也可以使用mosquitto_pub -t <topic> -m <msg>消息内容来发布一条测试消息给相应话题