umqtt – a simple MQTT client

umqtt 是 MicroPython 的简单 MQTT 客户端。(请注意,它使用了一些MicroPython 快捷方式,不适用于 CPython )。

支持的 MQTT 功能

发布和订阅均支持 QoS 0 和 1。 不支持 QoS2 以保持较小的代码大小。 除了 ClientID 之外,目前仅支持“clean session”参数进行连接。

设计要求

  • 内存效率。

  • 避免臭名昭著的设计反模式,例如“回调地狱”。

  • 通过单个客户端对象支持发布和订阅(另一种选择是使用单独的客户端类来进行发布和订阅)。

具有自动重新连接功能的 MQTT 客户端

有一个单独的 umqtt.robust 模块,它构建在 umqtt.simple 之上,并在出现网络错误时添加自动重新连接支持。请参阅其 documentation 了解更多详细信息。

带有 SSL 文件的 MQTT 客户端

有一个单独的 umqtt.default 模块,它构建在 umqtt.robust 之上,并且支持 SSL 证书以文件方式传入并为每一个订阅主题设置回调传递。请参阅其 documentation 了解更多详细信息。

API设计

基于上述需求, API 具有以下特征:

  • 所有与 MQTT 消息相关的数据都编码为字节。这包括消息内容和主题名称(即使 MQTT 规范

  • 订阅的消息通过回调传递。这是为了避免对订阅的消息使用队列,否则它们可能会随时收到(

Usage Model:

# uiflow2 uses this class by default
from umqtt import MQTTClient

# If you want to use the `umqtt.default` module, go this way.
from umqtt.simple import MQTTClient

# If you want to use the `umqtt.robust` module, go this way.
from umqtt.robust import MQTTClient

Classes