通过ESP8266中的WiFi管理器连接不一致



我面临一个特殊的问题。下面的代码片段连接到新的WiFi网络程序中没有硬编码的ssid或密码。我正在使用AsyncWifiManagerAsyncWebServer模块。当我在自动连接门户中连接到提供ssid和密码的家庭WiFi路由器时,NodeMCU正在连接,服务器工作正常。但每当我更改WiFi,连接到我的手机热点时,服务器就不会运行,尽管我在串行监视器中获得了本地IP地址。

#include <ESP8266WiFi.h>          
#include <ESPAsyncTCP.h>          
#include <ESPAsyncWebServer.h>     
#include <ESPAsyncWiFiManager.h> 
#include <FS.h>
#include <Wire.h>
AsyncWiFiManager wifiManager(&server,&dns);
// To clean previous settings. Use one time, then comment
// wifiManager.resetSettings();

// set custom static ip for portal
IPAddress staticIP(192,168,0,20);  //ESP static ip
IPAddress gateway(192,168,0,1); //IP Address of your WiFi Router (Gateway)
IPAddress subnet(255,255,255,0); //Subnet mask
wifiManager.setSTAStaticIPConfig(staticIP, gateway, subnet);

// Open WiFi Setup portal
wifiManager.autoConnect();
Serial.println("Connecting to WiFi..");

// Print ESP32 Local IP Address
Serial.println(WiFi.localIP());

WiFi.begin();

while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}

我正在通过Arduino IDE对NodeMCU板进行编程。

由于您的代码使用IP/子网/网关的修复参数,您必须相应地设置不同的热点,或者在将ESP8266服务器连接到不同的热点时,您可以选择以下选项:

  • 始终在同一网络/子网络中(所有热点都是本地网络的一部分(,您可以使用与连接的热点无关的所有设备的固定IP地址
  • 如果您不想使用以上内容(=为所有设备修复IP(:将DHCP服务器设置为始终根据NodeMCU的MAC地址为其提供相同的IP地址
  • 您使用mDNS并为ESP8266提供一个固定名称,然后通过http://nyPreferredESP.local(尽管IP不同(,并在你的Android手机上使用类似于此应用程序的东西
  • 如果你想处理不断变化的网关(不在同一网络/子网上的设备,通过互联网访问(:这需要更强大的功能。使用动态DNS服务和域名。如果您的网关地址发生更改,动态DNS将几乎实时更新您的DNS记录。此处为示例

解决方案的复杂性源于始终在同一网络/子网和固定网关中的因素或所有因素(除了MAC地址和设备名称是固定的(,其余因素可能是可变的。阅读关于在这里建立本地网络的一些基础知识

最新更新