乐鑫技术交流
直播中

gvxiaot

13年用户 1173经验值
私信 关注
[问答]

在IoT设备ESP8266 Arduino上,遇到随机断开连接问题如何解决?

在 IoT 设备 ESP8266 Arduino 上,我遇到了一些随机断开连接的问题
用户可以使用应用程序设置 SSID 和密码,因此代码从标准示例开始进行了一些修改,
在我的代码片段下方
代码:全选

void setup()
{
   Serial.begin(115200);
   WiFi.setAutoConnect(false)
   WiFi.setAutoReconnect(true);
   WiFi.hostname(("MYDEVICE_" + serialNumber).c_str());   
   if (AP)
   {
      turnAP(true);
   }
   else if (WIFI)
   {
      WiFi.mode(WIFI_STA);
      connectToWiFi(&ssid[0], &pass[0]);
   }
   else
   {
      WiFi.mode(WIFI_OFF);
   }

   loopCounter = 0;

} // setup

void loop()
{
   if (WiFi.status() == WL_CONNECTED)
   {
      if (lastConnectionState != WL_CONNECTED)
      {
         initWebSocket();
         connectWebSocket();
      }
      else
      {
         webSocket.loop();
      }
   }
   //Connection error during NORMAL BEHAVIOUR
   else if ((WiFi.status() == WL_NO_SSID_AVAIL ||
          WiFi.status() == WL_CONNECT_FAILED ||
          WiFi.status() == WL_CONNECTION_LOST) && !accessPointIsOn)
   {
      handleNetworkError(false);
   }
   //Connection error during AP
   else if ((WiFi.status() == WL_NO_SSID_AVAIL ||
          WiFi.status() == WL_CONNECT_FAILED ||
          WiFi.status() == WL_CONNECTION_LOST) && accessPointIsOn)
   {
      lastConnectionError = WiFiStatusToString();
      WiFi.disconnect();
      delay(50);
   }

   lastConnectionState = WiFi.status();
   loopCounter++;
}

一切正常,但有时,随机的,也许在一小时或一周后,我发现 ESP 未连接
我知道...我使用了 WiFi.setAutoConnect(false)
原因是我注意到没有它,似乎在设置后更改 SSID很难
没有它,ESP 会立即启动自动连接,这不允许我更改 SSID/PWD
setAutoReconnect 工作正常。事实上,我重新启动路由器,ESP 自动重新连接
问题是,不知道为什么,但有时我发现 ESP 未连接
我错过了什么?
有人可以帮我吗?

更多回帖

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