umqtt.simple — MQTT客户端

MQTT是一种基于发布 - 订阅的“轻量级”消息传递协议,用于在TCP / IP协议之上使用。 提供订阅/发布模式,更为简约、轻量,易于使用,针对受限环境(带宽低、网络延迟高、网络通信不稳定),可以简单概括为物联网打造。

构建对象

class umqtt.simple.MQTTClient(client_id, server, port=0, user=None, password=None, keepalive=0, ssl=False, ssl_params={})
  • client_id

  • server

  • port

  • user

  • password

  • keepalive

  • ssl

  • ssl_params

方法

MQTTClient.set_callback(f)
  • f - f(topic, msg) 为回调函数,第1参数为 topic 接收到的主题,第2参数为 msg 为该主题消息

为收到的订阅消息设置回调

MQTTClient.set_last_will(topic, msg, retain=False, qos=0)

topicmsg 为字节类型

设置MQTT“last will”消息。应该在 connect()之前调用。

MQTTClient.connect(clean_session=True)

连接到服务器。如果此连接使用存储在服务器上的持久会话,则返回True(如果使用clean_session = True参数,则返回False(默认值))。

MQTTClient.disconnect()

断开与服务器的连接,释放资源。

MQTTClient.ping()

Ping服务器(响应由wait_msg()自动处理)

MQTTClient.publish(topic, msg, retain=False, qos=0)

topicmsg 为字节类型

发布消息

MQTTClient.subscribe(topic, qos=0)

topic 为字节类型

订阅主题

MQTTClient.wait_msg()

等待服务器消息。订阅消息将通过set_callback()传递给回调集,任何其他消息都将在内部处理。

MQTTClient.check_msg()

检查服务器是否有待处理的消息。如果是,则以与wait_msg()相同的方式处理,如果不是,则立即返回。

注意

  • wait_msg()并且check_msg()是“主循环迭代”方法,阻塞和非阻塞版本。wait_msg()如果您没有任何其他前台任务要执行(即您的应用只响应订阅的MQTT消息),check_msg() 如果您也处理其他前台任务,则应定期在循环中调用它们 。

  • 请注意,如果您只发布消息,则不需要调用wait_msg()/ check_msg(),也不要订阅消息。

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

  • 与MQTT消息相关的所有数据均编码为字节。这包括消息内容和主题名称(即使MQTT规范指出主题名称是UTF-8编码的)。原因很简单:通过网络套接字接收的是二进制数据(字节)