MQTT工具。
mqttools的Python项目详细描述
MQTT工具
Python3.7及更高版本中的MQTT工具。
客户机和代理都使用 asyncio。
客户端功能:
- 订阅并发布QoS级别0主题。
- Broker会话恢复(或干净启动支持)的初始值较低 沟通。
- 较小发布数据包的主题别名。
- monitor、subscribe和publish命令行命令。
代理功能:
- 订阅并发布QoS级别0主题。
- 会话恢复(或干净启动支持)的初始值较低 沟通。RAM中的会话状态存储。
- broker命令行命令。
限制:
客户和经纪人都有很多限制。在这里 其中一些是:
- 不支持QoS级别1和2消息。会话状态存储 客户和经纪人都需要这样做。
- 不支持身份验证。
MQTT 5.0版规范: https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html
安装
pipinstallmqttools
示例
在examples folder中有很多例子。
命令行
订阅
连接到给定的mqtt代理并订阅主题。全部收到 消息被打印到标准输出。
$ mqttools subscribe /test/# Connecting to 'localhost:1883'. Topic: /test Message: 3131 Topic: /test/mqttools/foo Message: 626172
发布
连接到给定的mqtt代理并将消息发布到主题。
$ mqttools publish /test/mqttools/foo 626172 Connecting to 'localhost:1883'. Published 1 message(s) in 0 seconds from 1 concurrent task(s).
使用--count将多条消息尽快发布到 对客户和经纪人进行基准测试。
$ mqttools publish --count 100 /test/mqttools/foo Connecting to 'localhost:1883'. Published 100 message(s) in 0.39 seconds from 10 concurrent task(s).
监视器
连接到给定的mqtt代理并以基于文本的方式监视给定主题 用户界面。
$ mqttools monitor /test/#
监视器底部的菜单显示可用的命令。
- 退出:退出显示器。也可以使用ctrl-c。
- 播放/暂停:在播放和暂停(或运行和冻结)之间切换。
经纪人
找个经纪人为客户服务。
$ mqttools broker Starting a broker at 'localhost:1883'.
脚本
订阅
连接到mqtt代理的示例,订阅主题 /test/#,并打印所有已发布的邮件。
importasyncioimportmqttoolsasyncdefsubscriber():client=mqttools.Client('localhost',1883)awaitclient.start()awaitclient.subscribe('/test/#')whileTrue:topic,message=awaitclient.messages.get()iftopicisNone:print('Broker connection lost!')breakprint(f'Topic: {topic}')print(f'Message: {message}')asyncio.run(subscriber())
发布
连接到mqtt代理并发布消息的示例 bar到主题/test/mqttools/foo。
importasyncioimportmqttoolsasyncdefpublisher():client=mqttools.Client('localhost',1883)awaitclient.start()client.publish('/test/mqttools/foo',b'bar')awaitclient.stop()asyncio.run(publisher())