嗨,我正在使用 ESP8266 以 15 分钟的间隔向 MQTT 代理发送数据(ESP 在不发送数据时处于深度睡眠状态)。我的 ESP 是电池供电的,所以我想限制重新连接尝试的持续时间以防止电池耗尽。有人可以帮我用下面的代码吗?如果在 45 秒内没有建立连接,我想退出重新连接循环,而且这个循环应该在深度睡眠周期之间只运行一次。
我正在使用 pubsub 库。
void reconnect() {
/* 循环直到我们重新连接 */
while (!mqttClient.connected()) {
/*#ifdef SERIAL_DEBUG*/
Serial.print("Attemp
ting 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);
} }
}