我正面临着一个奇特的问题。下面的代码片段连接到新的WiFi网络。程序中没有硬编码的ssid或密码。. 我正在使用 AsyncWifiManager 和 AsyncWebServer 模块。当我连接到家里的WiFi路由器时,在自动连接门户中提供ssid和密码,NodeMCU就会被连接上,服务器工作正常。但每当我改变WiFi,连接到手机热点时,虽然我在Serial Monitor中获得了本地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板进行编程的。
由于你的代码使用固定参数的IPsubnetgateway,你必须相应地设置你的不同热点,或者你有以下选项可供选择,因为你把你的ESP8266服务器连接到不同的热点。
复杂的解决方案的结果总是在同一网络子网和一个固定的网关或一切的因素(除了MAC地址和设备的名称是固定的),其余的可能是可变的。阅读一些基础知识 在这里建立本地网络