Автопереход на web-интерфейс при подключении

Тема в разделе "ESP8266, ESP32", создана пользователем Voha888, 7 фев 2019.

  1. Voha888

    Voha888 Нуб

    Попадались мне когда-то разные EvDo\LTE-роутеры от зарубежного оператора Verizon, и вот там была фишка - на первом подключенном устройстве автоматом открывался веб-браузер на страничке веб-морды.
    При чём это работало и по кабелю и через wifi. Точно работало на компе с windows 8, с телефона не помню чтоб работало.
    Фишка очень удобная - не нужны закладки, приложения или ещё что-то. Просто подрубаемся к девайсу и сразу попадаем на его "сайт". Есть ли возможность это реализовать для Arduino\ESP8266? Или хотя-бы название технологии подскажите
     
  2. rv9c

    rv9c Гик

    Captive portal это называется. Примеры есть в сдк esp8266 arduino
     
    Voha888 нравится это.
  3. Vovka

    Vovka Гик

    А реализовывается это на одном-единственном бите, байте - как хотите:
    при прошивке сбрасываем этот бит. При подключении смотрим, установлен ли этот бит: если нет, то выводим "сайт" и устанавливаем этот бит.
     
  4. rv9c

    rv9c Гик

    Вот:
    Код (C++):
    #include <ESP8266WiFi.h>
    #include <DNSServer.h>
    #include <ESP8266WebServer.h>

    const byte DNS_PORT = 53;
    IPAddress apIP(192, 168, 1, 1);
    DNSServer dnsServer;
    ESP8266WebServer webServer(80);

    String responseHTML = ""
                          "<!DOCTYPE html><html><head><title>CaptivePortal</title></head><body>"
                          "<h1>Hello World!</h1><p>This is a captive portal example. All requests will "
                          "be redirected here.</p></body></html>";

    void setup() {
      WiFi.mode(WIFI_AP);
      WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
      WiFi.softAP("DNSServer CaptivePortal example");

      // if DNSServer is started with "*" for domain name, it will reply with
      // provided IP to all DNS request
      dnsServer.start(DNS_PORT, "*", apIP);

      // replay to all requests with same HTML
      webServer.onNotFound([]() {
        webServer.send(200, "text/html", responseHTML);
      });
      webServer.begin();
    }

    void loop() {
      dnsServer.processNextRequest();
      webServer.handleClient();
    }
     
    Voha888 нравится это.
  5. parovoZZ

    parovoZZ Гуру

    А первое подключение по Wi-Fi чем-то отличается от второго, третьего и т.д.?
     
  6. parovoZZ

    parovoZZ Гуру

    А ESP точно умеет по USB отдавать html страничку?
     
  7. rv9c

    rv9c Гик

    О каком usb речь)? Автор ветки о wifi вроде как)
     
    Voha888 нравится это.
  8. Voha888

    Voha888 Нуб

    Спасибо огромное! Круто