乐鑫技术交流
直播中

万航渡路

8年用户 1295经验值
擅长:电源/新能源
私信 关注
[问答]

MQTT如何退出重新连接循环?

嗨,我正在使用 ESP8266 以 15 分钟的间隔向 MQTT 代理发送数据(ESP 在不发送数据时处于深度睡眠状态)。我的 ESP 是电池供电的,所以我想限制重新连接尝试的持续时间以防止电池耗尽。有人可以帮我用下面的代码吗?如果在 45 秒内没有建立连接,我想退出重新连接循环,而且这个循环应该在深度睡眠周期之间只运行一次。
我正在使用 pubsub 库。
void reconnect() {
  /* 循环直到我们重新连接 */
  while (!mqttClient.connected()) {
/*#ifdef SERIAL_DEBUG*/
    Serial.print("Attempting MQTT broker connection...");
/*#endif*/
    /* 尝试连接 */
    if (mqttClient.connect(clientId.c_str(),mqttUser,mqttPassword)) {
/*#ifdef SERIAL_DEBUG*/
      Serial.println("已连接");
/*#endif*/
      /* 一旦连接,重新订阅 */
           mqttClient.subscribe(command1_topic,1); // 在这里订阅主题
    }
    else {
/*#ifdef SERIAL_DEBUG*/
      Serial.print("Failed, rc=");
      Serial.print(mqttClient.state());
      Serial.println("。5 秒后重试...");
/*#endif
      /* 重试之间等待 5 秒 */
      delay(5000);
    } }
                                       
                 
  }

更多回帖

发帖
×
20
完善资料,
赚取积分