如何检查Micropython umqtt客户端是否已连接?

时间:2018-01-01 10:27:07

标签: mqtt esp8266 micropython

我想在失败时将MQTT客户端重新连接到服务器。

我正在使用uqmtt.robust进行重新连接:它正在解决某些故障但不处理互联网断开连接。我正在考虑这样做:

while True:
 if c.isConnected():# how to check this?
  c.wait_msg()
 else:
  c=MQTTClient(params)
  c.connect() #reconnect trial

我尝试通过阅读PINGRESP解决但是ping是间隔的,所以我无法确定连接是否有效。

1 个答案:

答案 0 :(得分:1)

您可以以固定间隔发送PING,并在发送PING后立即将标志设置为False。如果您收到PINGRESP,则将标志设置为true。当您要发送下一个PING时,请检查该标志。如果该标志仍然为False意味着您没有收到PINGRESP并且您可以假设连接丢失。实际上我已经修改了umqtt简单库来支持这里git https://github.com/AntonisKekempanos/SonoffMicropythonMQTT