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

问题描述 投票:0回答:1

我正面临着一个奇特的问题。下面的代码片段连接到新的WiFi网络。程序中没有硬编码的ssid或密码。. 我正在使用 AsyncWifiManagerAsyncWebServer 模块。当我连接到家里的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板进行编程的。

esp8266 arduino-esp8266
1个回答
1
投票

由于你的代码使用固定参数的IPsubnetgateway,你必须相应地设置你的不同热点,或者你有以下选项可供选择,因为你把你的ESP8266服务器连接到不同的热点。

  • 始终在同一个网络子网络中(所有的热点都是本地网络的一部分),你可以为所有的设备使用固定的IP地址,与你连接的热点无关。
  • 如果您不想使用上述选项(=固定所有设备的IP)。设置DHCP服务器总是根据MAC地址给NodeMCU提供相同的IP地址。
  • 您使用mDNS,给ESP8266一个固定的名字,并通过以下方式调用 http:/nyPreferredESP.local。 (尽管IP不同),并在你的Android手机上使用一些 喜欢这个APP
  • 如果你想与变化的网关(设备不在同一个网络子网,通过互联网访问)。这将需要更强大的东西。使用动态DNS服务以及域名。如果您的网关地址发生变化,动态DNS将几乎实时更新您的DNS记录。这里的例子

复杂的解决方案的结果总是在同一网络子网和一个固定的网关或一切的因素(除了MAC地址和设备的名称是固定的),其余的可能是可变的。阅读一些基础知识 在这里建立本地网络

© www.soinside.com 2019 - 2024. All rights reserved.