• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Доступ к веб интерфейсу по адресу

Zvezdochot

New member
Доброго времени суток.
Берем пример mDNS_Web_Server. Заливаем, подключаемся к локалке. Доступ имеем только по IP. Почитали - установили на комп (вин10) все что нужно, и получаем доступ по адресу esp8266.local. Хорошо. Делаем маленький стендик, цепляем пару датчков, кнопочек, бла, бла. Добавляем функционал в веб интерфейс. Все гуд. На том компе что был изначально - все работает как нужно. Есть доступ и по IP и по адресу блаблабла.local. Но я захотел зайти с мобилы(ведроид). А с мобилы - есть только доступ по ІР(. Поискав - не нашел инструкций как можно сделать доступ к веб интефейсу, на арндроиде. Да и танци с бубном мне не очень то и нравятся....
Есть что то подобное типа mDNS, но чтобы оно работало и на ведроиде (желательно без танцев) тоже?
Прописать статический ІР не вариант вообще.

Просто если не получится это реализовать на ЕСП - прийдется городить отдельный сервак на одноплатке с АРМ. Или же писать прогу чтобы она сама перебирала ІР и подключалсь к модулю.
Или как по другому решить проблему?
 

tretyakov_sa

Moderator
Команда форума
Просто если не получится это реализовать на ЕСП - прийдется городить отдельный сервак на одноплатке с АРМ. Или же писать прогу чтобы она сама перебирала ІР и подключалсь к модулю.
Или как по другому решить проблему?
Перебирать IP точно не нужно. SSDP работает на windows. Для androida нашелся бы добрый человек который бы написал программку поиска SSDP устройств. Под линукс думаю тоже можно найти готовое. Для маков не знаю.
 

Zvezdochot

New member
Перебирать IP точно не нужно. SSDP работает на windows. Для androida нашелся бы добрый человек который бы написал программку поиска SSDP устройств. Под линукс думаю тоже можно найти готовое. Для маков не знаю.
Я думал, над тем чтобы использовать этот протокол. Но увы, он работает походу только с виндой. Да и проще ведь, когда ты просто забиваеш адрес в браузере и попадаеш на страницу из любого устройства.
Я натыкнулся на примеры из DNSServer. Тестил - все прекрасно работает на всех доступных мне устройствах. Но почему DNS работает только в режиме точки доступа? А при подключении к сети - нет? Как сделать что то подобное но в локалке? Мож что в роутере прописать нужно?
 

pvvx

Активный участник сообщества
Перебирать IP точно не нужно. SSDP работает на windows. Для androida нашелся бы добрый человек который бы написал программку поиска SSDP устройств. Под линукс думаю тоже можно найти готовое. Для маков не знаю.
Ничего не надо писать. Всё и везде работает по умолчанию :)
Например в Windows и при подключении телефона к роутеру:
Снимок1322.jpg
В Windows и при подключении телефона к AP модуля:
Снимок1324.jpg
Тоже самое и на роутере:
Снимок1325.gif
Имя назначено по умолчанию - для интерфейса [inline]0[/inline], оно заканчивается на '0', для [inline]1[/inline] - на '1'. Чтобы выбрать к кому подключаться, если есть оба соединения, к примеру - через роутер и через свисток. Просто надо взять нормальный модуль, где на это всё даны исходники. :)

Беды могут быть только с Яблочковыми - там к имени надо добавлять .local, если огрызок не понимает стандартов и разрешает имена только через mDNS.

Поискав - не нашел инструкций как можно сделать доступ к веб интефейсу, на арндроиде.
Просто указать имя в dhcp. Он стандартный у LwIP.
Единственное, что сложно - это обрезать ".local" для яблока, чтобы имена всегда и везде были одинаковыми. Там придется лезть в mDNS драйвер... Можно добавить ".local" и для всех интерфейсов, но зачем лишние буквы во всех интерфейсах?
Объединять имена для AP и Station надо до уровня имени их netif. Желательно, чтобы NETBIOS, DHCP, mDNS брали имя из netif. Не будет путаницы и дублей.
 
Последнее редактирование:

Zvezdochot

New member
@pvvx, извините, я нубас. Из прочитаного понял только что нужно добавить NETBIOS, mDNS, DHCP (как и зачем?)
netif - что это и счем его едят?
Да и зачем все остальное, если работает достуа к интерфейсу по SSDP имени устройтсва.
Можно мне как то все на пальцах рассказать?
 

pvvx

Активный участник сообщества
@pvvx, извините, я нубас. Из прочитаного понял только что нужно добавить NETBIOS, mDNS, DHCP (как и зачем?)
netif - что это и счем его едят?
Да и зачем все остальное, если работает достуа к интерфейсу по SSDP имени устройтсва.
Можно мне как то все на пальцах рассказать?
Чтобы был доступ по имени, а не IP "А с мобилы - есть только доступ по ІР".
  • NETBIOS - это система определения IP по имени для Windows
  • DHCP - это система определения IP по имени для Линух и Андроида
  • mDNS - это система определения IP по имени для Яблока
Netif - это внутренняя базовая структура данных конкретного соединения для LwIP в вашем устройстве.

Назначаете каждому устройству имена и их распределение по IP вас перестает волновать.
Для организации доступа к активным "сервисам" требуется какой-то отдельный вечно работающий сервер типа MQTT. Он сможет собирать информацию о активности устройств и держать их последние данные, если организация устройств по системе IoT (некоторые члены сети не всегда активны, а только изредка передают данные с датчиков на общий сервер).
 
Последнее редактирование:
  • Like
Реакции: AWK

Zvezdochot

New member
@pvvx, извини, но я так и не все понял. Я изучаю эту тему 1,5 дня, и сетевых технологий не знаю вовсе.
Я взял лампу, удалил из нее патроха, поставил туда светодиоды, esp, мосфит, БП и. т.д. Сделал веб интерфейс для управления яркостью освещения и изменения сетевых настроек. Когда включаю лампу в розетку - она конектится к вайфаю с теми параметрами, которые в нее забиты. Если такой сети нет - она через несколько попыток подключений сама становится точкой доступа с задаными параметрами.
И получается так что на веб интерфейс можна обратится через ІР устройства (которое я никак не могу задать статическим, ибо студент, живу в ощаге, и роутеры тут меняются как семечки). Задался вопросом как сделать так, чтобы вводить не ІР, а какой то фиксированый адрес (ссылку).
Первое что пробовал - mDNS. Да, работает он как и в режиме точки доступа, так и в режиме клиента. Из минусов - вовсе не работает на ведроиде. Не на планшетах, не на телефонах. И на винде работает только после неких манипуляций.
Потом был DNS. Он прекрасно работает на всех тестируемых устройствах. Страница отображается быстро. Но работает он только в режиме точки доступа. Как только я не пытался его запустить в режиме клиента - не получалось никак.
Потом пробовал SSDP. Даже удалось отобразить устройство в сетевом окружении. Но опять же. Он работает только на винде, да и то с лишними телодвижениями. Изначально была надежда что можно будет имя устройства в адресную строку забивать - но увы, так не получилось. (Хотя когда я сделал сайт на компе, то у нему можно было обратится по адресу, по ІР и имени компа).
Пробовал NETBIOS - работает на винде быстрей чем mDNS. Но опять же только на винде. Без лишних манипуляций.
Примеров реалицации DHCP я не нашел. Не удалось попробовать.

Так и не удалось мне запустить устройство с режиме вайфай клиента и так, чтобы с мобилы можно было через норм адрес управлять.

Я пока вижу 2 варианта:
- ставить сервак, который будет иметь норм адрес и который просто будет перенаправлять запрос на ІР espшки.
- спецом для ведроида писать прогу, которая сама будет искать нужный ІР espшки, и через которую можно будет управлять устройством.
- DHCP?

В итоге дожно получится устройство (возможно с сервачком в виде запущеной проги на компе), которое можно будет подключить к любой сети вайфая и подлючится к нему по заведома извесному адресу из любого устройства.

П.С. А какой из этих протоколов сама ЕСП может использовать в режиме веб клиента?
 

tretyakov_sa

Moderator
Команда форума
  • NETBIOS - это система определения IP по имени для Windows
  • DHCP - это система определения IP по имени для Линух и Андроида
  • mDNS - это система определения IP по имени для Яблока
Вот у меня есть имя которое видит роутер:
net.png
Как из браузера обратиться по этому имени?
Нужно поднять NETBIOS на модуле?
 

pvvx

Активный участник сообщества
Вот у меня есть имя которое видит роутер:
Посмотреть вложение 3664
Как из браузера обратиться по этому имени?
Обычно - по этому имени и работает в некоторых системах, но не в Win и Яблоке.
Netbios - это только для Win - система Микрософт короче.

В DHCP есть разные объявления (не знаю как проще описать...). Там и прописывается ответ имени устройства с номером по RFC стандартам. У ESP8266 есть драйвер DHCP (включается всегда), но он закрытый (нет исходников). Имя host видно на некоторых роутерах в виде ESP+последние цифры MAC. Но доступа по этому имени - нет ни где. Что там понаписано в DHСP ESP8266 - не вдавался, т.к. я не использую его закрытый драйвер DHCP, а приматываю свой. На RTL871x, в SDK есть опция, объявленная в самом базовом драйвере исходников LwIP, которая включает трансляцию имени в DHCP - [inline]LWIP_NETIF_HOSTNAME[/inline] и с ней всё работает на телефонах.
Пример, что находит Google по LWIP_NETIF_HOSTNAME:
Host ID name in Ethernet Client Stack | mbed
Исходники, что включается в DHCP и как завязано c данной опцией, можно найти во многих примерах к LwIP...
 
Последнее редактирование:
Сверху Снизу