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如何将jaxb插件扩展与gradlejaxbplugin一起使用   java Hibernate列表<Object[]>到特定对象   java使用多态性显示arraylist的输出   java水平堆叠卡,带有一定偏移量   java错误:找不到符号方法liesInt()   java客户机/服务器文件收发中的多线程流管理   在java中可以基于访问重载方法吗?   包含空元素的java排序数组   swing Java按钮/网格布局   java BottomNavigationView getmaxitemcount   java空指针异常字符串生成器   java Xamarin升级导致“类文件版本错误52.0,应为50.0”错误   java我正在尝试打印它,而不只是对每一行进行println   Tomcat7中的java是否需要复制上下文。将xml转换为conf/Catalina/locahost以使其生效   带有注入服务的java REST端点在何处引发自定义WebServiceException?   在Java中使用GPS数据   java如何将JFreeChart ChartPanel导出到包含添加的CrosshairOverlay的图像对象?   内置Eclipse期间的Java 8堆栈溢出   java在GWT编译的JavaScript中如何表示BigDecimal