MQTT工具。

mqttools的Python项目详细描述


buildstatuscoverage

MQTT工具

Python3.7及更高版本中的MQTT工具。

客户机和代理都使用 asyncio

客户端功能:

  • 订阅并发布QoS级别0主题。
  • Broker会话恢复(或干净启动支持)的初始值较低 沟通。
  • 较小发布数据包的主题别名。
  • monitorsubscribepublish命令行命令。

代理功能:

  • 订阅并发布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

项目主页:https://github.com/eerimoq/mqttools

文档:https://mqttools.readthedocs.org/en/latest

安装

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/#
https://github.com/eerimoq/mqttools/raw/master/docs/monitor.png

监视器底部的菜单显示可用的命令。

  • 退出:退出显示器。也可以使用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())

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java文件分块,获取长度字节   java嵌入式Tomcat不执行jsf页面   java我的数据库中有2个实体,但hibernate返回其中6个。   java如何基于逗号拆分字符串   java取消已经运行的CompletableFutures的预期模式是什么   java如何在informix中从另一个数据库复制表ddl和数据   为什么图片是黑色的?   java根据字符串数组中的单词筛选列表   Java8的集合。平行流有效吗?   Kotlin中的java静态内部类   java如何在GUI中生成一列字符串   javafx如何正确使用高对比度主题?   带空格的javascript Httpurlconnection参数   java如何设置GridBagLayout的约束   java如何在一个线程可能尚未初始化时关闭另一个线程   java将简单时间格式转换为特殊时间格式(hhmmt)   安卓/java阵列重复过滤器的问题   java在队列的链接实现下,入队和出队是如何工作的   java更新sql外键约束