4

Android 6.0 marshmallow モバイル経由で接続する ESP8266 を使用してソフト AP を作成しました。接続後、モバイルで「Wifi にインターネット アクセスがありません」という通知が表示されますが、それを無視してブラウザ ウィンドウを開いて Web サーバー ページを開くか、カスタム ビルド アプリを使用して ESP Web サーバーと通信すると、ESP8266 によってリクエストが処理されません。ただし、その通知で接続状態を維持するオプション「はい」をクリックすると、すべて正常に機能します。ユーザーによる手動操作を避けようとしているため、プログラムで修正しようとしています。インターネットにアクセスせずにESPをルーターAPとして使用し、この通知を手動で処理せずにAndroidアプリを使用して接続することは可能ですか.

更新: プログラムでカスタム ビルド アプリを介してこの AP に接続すると、この通知は表示されず、ESP へのすべての通信は Android によってブロックされたままになります。

ESP コード:

  WiFiServer server(80);
  WiFi.softAP("ssid", "password");
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  server.begin();
  delay(500); 
  Serial.println("Server started");
  Serial.println(WiFi.localIP());
4

1 に答える 1

0

mDNS でキャプティブ ポータルを使用します。

これがそのであり、ここにいくつかのハイライトがあります:

const char *softAP_ssid = "ESP_ap";
const char *softAP_password = "12345678";

/* hostname for mDNS. Should work at least on windows. Try http://esp8266.local */
const char *myHostname = "esp8266";

// Web server
ESP8266WebServer server(80);

// DNS server
const byte DNS_PORT = 53;
DNSServer dnsServer;

/* Soft AP network parameters */
IPAddress apIP(192, 168, 4, 1);
IPAddress netMsk(255, 255, 255, 0);

void setup() {
  /* Setup the DNS server redirecting all the domains to the apIP */  
  dnsServer.setErrorReplyCode(DNSReplyCode::NoError);
  dnsServer.start(DNS_PORT, "*", apIP);

  /* Setup web pages: root, wifi config pages, SO captive portal detectors and not found. */
  server.on("/", handleRoot);
  server.on("/generate_204", handleRoot);  //Android captive portal. .
  server.on("/fwlink", handleRoot); //Microsoft captive portal. 
  server.onNotFound ( handleNotFound );
}
于 2016-11-15T09:19:35.560 に答える