Почему этот код для ESP8266 переходит в режим STA+AP?

Я использую Arduino IDE 1.6 nightly с платой Generic ESP8266.

Почему этот код работает в режиме Mesh, а не просто подключается к моему Wi-Fi? Моя цель — протестировать MDNS, но пока что я нашел вот что:

  • плата подключается к моему Wi-Fi
  • но плата также открывает точку доступа ESP-
  • при подключении к Wi-Fi на моем компьютере я не могу разрешить http://esp8266-webupdate.local/update
  • при подключении к открытому ESP- Wi-Fi я могу разрешить http://esp8266-webupdate.local/update

Насколько я понимаю, такой код должен просто подключаться к моему Wi-Fi, и тогда я смогу перейти на http://esp8266-webupdate.local/update, я что-то упускаю?

выход (обратите внимание на STA+AP)

Booting Sketch...
......
Connected, IP address: 192.168.1.20
Mode: STA+AP
PHY mode: N
Channel: 10
AP id: 0
Status: 5
Auto connect: 1

код

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <ESP8266HTTPUpdateServer.h>

const char* host = "esp8266-webupdate";
const char* ssid = "myhomeap";
const char* password = "blabla";

ESP8266WebServer httpServer(80);
ESP8266HTTPUpdateServer httpUpdater;

void setup(void){

  Serial.begin(115200);
  Serial.println();
  Serial.println("Booting Sketch...");
  WiFi.mode(WIFI_AP_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();

  Serial.print("Connected, IP address: ");
  Serial.println(WiFi.localIP());
  WiFi.printDiag(Serial);
  MDNS.begin(host);

  httpUpdater.setup(&httpServer);
  httpServer.begin();

  MDNS.addService("http", "tcp", 80);
  Serial.printf("HTTPUpdateServer ready! Open http://%s.local/update in your browser\n", host);
}

void loop(void){
  httpServer.handleClient();
}

, 👍1


1 ответ


Лучший ответ:

3

Он переходит в режим STA+AP, потому что ваш код говорит ему сделать это.

Если вы хотите, чтобы он просто перешел в режим STA, то ваша строка:

WiFi.режим(WIFI_AP_STA);

должно быть

WiFi.режим(WIFI_STA);

,