ESP8266WiFi.h: WiFi.scanNetworks() liefert kein Ergebnis

Hi zusammen,

hab ein kleines Problem beim Aufbau eines eigenes Wifi Managers:
"WiFi.scanNetworks()" liefert im folgenden Sketch (oder im Anhang samt html) in der Loop einwandfreie Ergebnisse. Rufe ich jedoch die selbe Methode "WLANScan()" über HTTP_GET im Setup Teil auf, liefert diese Methode keine Scanergebnisse. Warum?

Sketch:

#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
//#include <WiFiClient.h>
#include <ESPAsyncWebServer.h>

//Access Point configuration
const char *ap_ssid = "WLAN Konfiguration";
const char *ap_password = "esp8266xx";  //Min. 8 chars, if used

AsyncWebServer HTML_server(80);

//WLANScan results
int vWifisAvailable;
String Wifi_SSID[10];
int Wifi_Strength[10];
//String Wifi[100][2];  //[i][0] = SSID; [i][1] = Strength; i=Wifi 'Nr.'

void notFound(AsyncWebServerRequest *request) {
  request->send(404, "text/plain", "Not found");
}

void setup() {
  Serial.begin(115200);
  delay(200);
  Serial.println();

  WiFi.softAPdisconnect();

  // Initialize SPIFFS
  if(!SPIFFS.begin()){
    Serial.println("An Error has occurred while mounting SPIFFS");
    return;
  }
  
  Serial.print("Configuring access point...");
  // create access point
  while (!WiFi.softAP(ap_ssid, ap_password, 6, false, 15)) { /* You can remove the password parameter if you want the AP to be open. */
    delay(500);
  }

  WiFi.mode(WIFI_AP);
  //WiFi.mode(WIFI_AP_STA);
  
  Serial.print("Access Point started: ");
  Serial.println(ap_ssid);

  IPAddress AP_IP = WiFi.softAPIP();
  Serial.print("HTTP address: ");
  Serial.println(AP_IP);

  // Route for root / web page
  HTML_server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    Serial.print("WLAN Scan beim Öffnen der Seite: ");
    WLANScan();
    request->send(SPIFFS, "/index.html");
  });

  // WLANScan
  HTML_server.on("/vWifisAvailable", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", String(vWifisAvailable).c_str());  //Anzahl gefundener Netzwerke zurückgeben
  });
  // WLANScan result arrays
  HTML_server.on("/String_Wifi_SSID", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", String(StringArrayToString(Wifi_SSID, vWifisAvailable)).c_str());
  });
  HTML_server.on("/String_Wifi_Strength", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", String(IntArrayToString(Wifi_Strength, vWifisAvailable)).c_str());
  });
  HTML_server.on("/SCAN", HTTP_GET, [](AsyncWebServerRequest *request){
    Serial.print("WLAN Scan durch Button: ");
    WLANScan(); //Findet keine WLan -> Muss in der loop ausgeführt werden, um WLANs zu finden
    //request->send_P(200, "text/plain", String(WLANScan()).c_str());
  });

  HTML_server.onNotFound(notFound);
  
  HTML_server.begin();
  
  Serial.println("HTTP server started");
}

void loop() {
  Serial.print("WLAN Scan in loop: ");
  WLANScan();
  delay(30000);
}


//###Methoden###

int WLANScan()
{
  Serial.println("Wifi scan started");

  // WiFi.scanNetworks will return the number of networks found
  vWifisAvailable = WiFi.scanNetworks();
  Serial.println("Wifi scan ended");
  if (vWifisAvailable == 0) {
    Serial.println("no networks found");
  } 
  else {
    Serial.print(vWifisAvailable);
    Serial.println(" networks found");
    for (int i = 0; i < vWifisAvailable; ++i) 
    {
      // Print SSID and RSSI for each network found
      Serial.print(i + 1);
      Serial.print(") ");
      Serial.print(WiFi.SSID(i));// SSID

      Wifi_SSID[i] = WiFi.SSID(i);
      //Wifi[i][0] = WiFi.SSID(i);
           
//      Serial.print(WiFi.RSSI(i));//Signal strength in dBm  
//      Serial.print("dBm (");

      Serial.print(" ");
      Serial.print(dBmtoPercentage(WiFi.RSSI(i)));//Signal strength in %  
      Serial.print("% )"); 

      Wifi_Strength[i] = dBmtoPercentage(WiFi.RSSI(i));
      //Wifi[i][1] = WiFi.SSID(i);
      
      if(WiFi.encryptionType(i) == ENC_TYPE_NONE)
      {
        Serial.println(" <<***OPEN***>>");        
      }
      else{
        Serial.println();        
      }
    }

//    //Debugging
//    for (int i = 0; i < vWifisAvailable; ++i) 
//    {
//      // Print SSID and RSSI for each network found
//      Serial.print(i + 1);
//      Serial.print(". ");
//      Serial.print(Wifi_SSID[i]);
//      Serial.print(" Signal: ");
//      Serial.print(Wifi_Strength[i]);
//      Serial.println(" %");
//    }
  }
  Serial.println("");
 
  WiFi.scanDelete();
  return vWifisAvailable;
}

const int RSSI_MAX =-50;// define maximum strength of signal in dBm
const int RSSI_MIN =-100;// define minimum strength of signal in dBm

//WiFi Signal Strength Calculati
int dBmtoPercentage(int dBm)
{
  int quality;
    if(dBm <= RSSI_MIN)
    {
        quality = 0;
    }
    else if(dBm >= RSSI_MAX)
    {  
        quality = 100;
    }
    else
    {
        quality = 2 * (dBm + 100);
   }

     return quality;
}//dBmtoPercentage 


String StringArrayToString(String *vAdressOfArray, int vPositionInArray)
{ 
  int i = 0;
  String vArrayContent = "0";

  while(i<vPositionInArray)
  {
    if(i == 0)
    {
      vArrayContent = String(*(vAdressOfArray + i));
      i++;
    }
    else
    {
      vArrayContent = vArrayContent +String("|")+ String(*(vAdressOfArray + i));
    i++;
    }
  }
  
  //Debugging
//  Serial.print("Read from vArrayContent: ");
//  Serial.println(vArrayContent);

  return vArrayContent;
}


String IntArrayToString(int *vAdressOfArray, int vPositionInArray)
{ 
  int i = 0;
  String vArrayContent = "0";

  while(i<vPositionInArray)
  {
    if(i == 0)
    {
      vArrayContent = String(*(vAdressOfArray + i));
      i++;
    }
    else
    {
      vArrayContent = vArrayContent +String("|")+ String(*(vAdressOfArray + i));
    i++;
    }
  }
  
  //Debugging
//  Serial.print("Read from vArrayContent: ");
//  Serial.println(vArrayContent);

  return vArrayContent;
}

Serieller Monitor:

00:40:44.555 -> Configuring access point...Access Point started: WLAN Konfiguration
00:40:46.424 -> HTTP address: 192.168.4.1
00:40:46.424 -> HTTP server started
00:40:46.424 -> WLAN Scan in loop: Wifi scan started
00:40:48.638 -> Wifi scan ended
00:40:48.638 -> 5 networks found
00:40:48.638 -> 1) WLAN-194791 40% )
00:40:48.638 -> 2) Telekom_FON 18% ) <<***OPEN***>>
00:40:48.683 -> 3) FRITZ!Box 6490 Cable 30% )
00:40:48.683 -> 4) Castle 32% )
00:40:48.683 -> 5) AccessPoint 100% )
00:40:48.683 -> 
00:41:05.268 -> WLAN Scan beim Öffnen der Seite: Wifi scan started
00:41:05.268 -> Wifi scan ended
00:41:05.268 -> no networks found
00:41:05.268 -> 
00:41:07.440 -> WLAN Scan in loop: Wifi scan started
00:41:09.615 -> Wifi scan ended
00:41:09.615 -> 4 networks found
00:41:09.615 -> 1) WLAN-194791 38% )
00:41:09.615 -> 2) FRITZ!Box 6490 Cable 18% )
00:41:09.615 -> 3) Castle 28% )
00:41:09.615 -> 4) AccessPoint 100% )
00:41:09.615 -> 
00:41:10.909 -> WLAN Scan durch Button: Wifi scan started
00:41:10.909 -> Wifi scan ended
00:41:10.909 -> no networks found

Viele Grüße
Noyen

WLAN_Scan_1.2.zip (7.17 KB)