Попадались мне когда-то разные EvDo\LTE-роутеры от зарубежного оператора Verizon, и вот там была фишка - на первом подключенном устройстве автоматом открывался веб-браузер на страничке веб-морды. При чём это работало и по кабелю и через wifi. Точно работало на компе с windows 8, с телефона не помню чтоб работало. Фишка очень удобная - не нужны закладки, приложения или ещё что-то. Просто подрубаемся к девайсу и сразу попадаем на его "сайт". Есть ли возможность это реализовать для Arduino\ESP8266? Или хотя-бы название технологии подскажите
А реализовывается это на одном-единственном бите, байте - как хотите: при прошивке сбрасываем этот бит. При подключении смотрим, установлен ли этот бит: если нет, то выводим "сайт" и устанавливаем этот бит.
Вот: Код (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(); }
Да нихрена не работает (((( РАБОТАЕТ в варианте если подключиться к AP, потом открыть браузер и в браузере набрать что-то типа 11111.ru или gggggg.com а если в браузере набирать просто 11111 или gggggg - то получаем ответ: НЕ УДАЁТСЯ ПОЛУЧИТЬ ДОСТУП К САЙТУ ((((( вопрос - а тупо сразу после подключения к AP автоматическая загрузка стартовой страницы средствами ардуино не возможна?
чего нашел, а там в комментах вопрос: Интересное видео, у меня Captive Portal заработал, только если адрес начинается с http:// и не работает с https:// Если подключатся к модулю на андроиде, то рут страница сама не отрывается, возможно у меня неправильный андроид или из-за того, что точка доступа модуля без пароля. и ответ автора: Попытка в лоб добавить второй секурный веб-сервер на 443 порту с тупой переадресацией на 80 порт приводит к торможению с последующей перезагрузкой ESP. С другой стороны, учитывая использование самоподписанных сертификатов на ESP, в любом случае без предупреждения о недействительном сертификате сервера браузер не пройдет дальше сам. Так что овчинка выделки не стоит, даже если удастся наладить костыль. ((((
Что-бы страница портала "выскакивала" сама схема работы должна быть несколько другая. - ДНС сервер на все запросы отдает запись самой ESP - веб сервер на все несуществующие страницы должен выдавать не 404 со страницей "я портал", а 302 редирект на другой УРЛ с порталом, т.е. напр на http://192.168.4.1/portal.html Андроид/винда и другие ОС, сами имеют свои сервисы пингеры в инете для проверки подключения в закрытых сетях. Андроид проверяет URL connectivitycheck.gstatic.com. Получив на этот запрос редирект аднроид считает что он не в интернете и открывает страницу логина в портал (ту куда идет редирект). HTTPS поднимать не обязательно. Вот тут есть подробнее про АПИ.