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

как узнать IP, посоветуйте

Legantmar

New member
Опыт работы с контроллерами esp8266 более 2 лет.
Извиняюсь за многобукв, но не знаю как короче объяснить "проблему" ))
Предисловие:
Планирую коммерческое устройство подсоединяемое к роутеру пользователя с выходом в интернет (нужны NTP часы).
Проблема:
У всех роутеров различается третий сегмент IP адреса, примеры
192.168.0.1, 192.168.1.1, 192.168.100.1, 192.168.200.1 и другие..

Как я себе видел решение:
Пользователь при первом включении (esp встает в точку доступа) подключается к устройству, например, с телефона.
На странице настроек задает имя и пароль своего роутера.
После перезагрузки esp подключается к роутеру (включает режим клиента), определяет IP адрес который выдал роутер (при необходимости меняет последний сегмент). И при этом сохраняет режим точки доступа. (т.е. находится в двойном режиме WI-FI)
Пользователь снова заходит с телефона на точку доступа (esp) и смотрит IP адрес по которому esp подключился к роутеру.
Далее может управлять с любого компьютера подключенного к роутеру.

Проблема:
В таком режиме полностью отваливается WI-FI при запросе html страниц буквально через 5-10 минут. Независимо откуда заходит пользователь, напрямую с телефона (на точку доступа esp) или через роутер (esp клиент).
Проблема точно не в блоке питания и не в стабилизаторе 3,3В. Проверял на 3 экземплярах. У всех одинаковые симптомы (подозрение на сам контроллер и мою схему включения). (При этом в режиме приема get запросов без выдачи html ответов живет дольше, чем если каждый раз загружать в браузер html страницы с контроллера)

Текущее решение:
После перезагрузки контроллера и соединения его с роутером (при этом esp меняет 4-й сегмент IP адреса выданного роутеров на 222, для примера фиксированного адреса), контроллер включает только режим клиента.
Пользователю, чтобы управлять контроллером с компьютера, нужно открыть проводник и внизу слева выбрать Сеть. Затем справа в списке "сетевые устройства" 2 раза кликнуть на имени роутера. Откроется браузер с введенным адресом роутера (его стартовая страница). Последний шаг - заменить последний сегмент .1 на .222 и открыть стартовую страницу контроллера esp. Этот вариант наиболее простой для пользователя, НО неидеален, т.к. если компьютер подключен не напрямую к роутеру, а через делители, маршрутизаторы и пр. то в проводнике он не увидит роутер в списке сети.
Да, я знаю, что можно правой кнопкой мыши щелкнуть на иконке монитора возле часов в правом нижнем углу экрана и выбрав Центр управления сетями - Ethernet - Сведения о сетевом подключении увидеть свой локальный IP адрес (или шлюз по умолчанию), нас интересует только 3 сегмент IP адреса. НО это сложно для пользователя блондинки.

Посоветуйте свое решение.
Спасибо за внимание.
 

Сергей_Ф

Moderator
Команда форума
@Legantmar мне кажется вы учли совсем не всё. Локальные адреса совсем не обязательно находятся в подсети 192.168.х.х
Зависание esp скорее всего к адресам и режимам работы никакого отношения не имеет - ищите утечку памяти.
Для "блондинок" смотрите примеры по mmds и captive portal, они более подходящие, имхо.
А что у вас будет делать блондинка, если адрес 222 уже используется? Например вторым вашим же устройством?
 

Вложения

Legantmar

New member
Сергей, речь о роутерах (в основном речь идет о домашних, т.к. устройство бытовое), а не произвольных IP адресах.
Если 222 занят (что совсем нереально для домашней сети), предусмотрел задание своего любимого.
Я не сильно знаком с mmds и captive portal, но что-то мне подсказывает, что это работает когда esp является точкой доступа. (мне не сложно вбить 192.168.4.1) )))
 

CodeNameHawk

Moderator
Команда форума
т.к. если компьютер подключен не напрямую к роутеру, а через делители, маршрутизаторы и пр. то в проводнике он не увидит роутер в списке сети.
Если комп и есп в одной подсети, то посмотрите SSDP, а если они в разных сетках то возможно и не будет подключения.
 

Сергей_Ф

Moderator
Команда форума
@Legantmar у меня на бытовых роутерах в домашней сети адрес не в диапазоне 192.168.х.х
Я не сильно знаком с mmds и captive portal, но что-то мне подсказывает, что это работает когда esp является точкой доступа
Captive portal для точки доступа, mmds для клиента. Потому и посоветовал смотреть обоих. Для блондинок самое то.
Не совсем понял что вам подсказать по теме. Вы же даже не указали язык программирования.
 

Алексей.

Active member
Первый шаг очевиден - начальная настройка когда модуль работает в режиме AP, задаем параметры для соединения со своим wifi роутером (ssid и пароль).
А вот определение адреса, полученного устройством от dhcp сервера, производители всяких там ip-камер делают совсем простым способом, программой (назовем её сканером) отправляют мультикаст на группу, а устройство юникастом отвечает сканеру, рассказывая о себе.
Этим устройствам совсем не обязательно светить в сеть описанием тех сервисов которые они поддерживают, более того, это может быть даже не полезно.
 

Legantmar

New member
CodeNameHawk, а SSDP сам создается или его нужно прописывать в контроллере? а IP адрес нужно указывать? (наводящие вопросы)
Сергей, спасибо, посмотрю про mmds (UPDATE: ничего не нашел, для esp8266, кинь ссылку на пример)
Алексей, тоже думал на эту тему. Могу написать десктопную программку определяющую IP адрес роутера, открывающую браузер с введенным IP адресом контроллера. Но будет ли доверие к такой программке, особенно от антивируса? ))
а чате телеграмма pro.Esp8266 подсказывают про smartconfig - это аналогичная программка (с пингом IP адресов) но для смартфона на андроиде (скачивается из гугл стор).
буду думать.
 
Последнее редактирование:

CodeNameHawk

Moderator
Команда форума
CodeNameHawk, а SSDP сам создается или его нужно прописывать в контроллере? а IP адрес нужно указывать?
Берет автоматом IP адрес, который есп получило от роутера, не нужен "постоянный" адрес.
Есть пример в ардуиноиде.
Не знаю как сейчас, а раньше надо было добавить одну строку - SSDP.setDeviceType("upnp:rootdevice");

Пример моей конфигурации:
Код:
void init_SSDP(void)
{
    SSDP.setDeviceType("upnp:rootdevice");
    SSDP.setSchemaURL("description.xml");
    SSDP.setHTTPPort(80);
    SSDP.setName("Kotlownia");
    SSDP.setSerialNumber("002");
    SSDP.setURL("index.htm");
    SSDP.setModelName("ESP8266 Kotlownia");
    SSDP.setModelNumber("ESP-12E");
    SSDP.setModelURL("http://adres.co.nf/seldata.php");
    SSDP.setManufacturer("(c) KMH");
    SSDP.setManufacturerURL("http://adres.co.nf/selterm.php");
    SSDP.begin();
}
 

Legantmar

New member
Берет автоматом IP адрес, который есп получило от роутера, не нужен "постоянный" адрес.
Не знаю как сейчас, а раньше надо было добавить одну строку - SSDP.setDeviceType("upnp:rootdevice");

Пример моей конфигурации: ...
Я видел урок от Третьякова Сергея
но не понял откуда берется или куда кладется файлик description.xml
и откуда в нем взялся IP адрес 192.168.0.101 ?
Я так понимаю, что я должен заранее определить этот адрес и прописать в этом файлике..
тогда это не подходит (см. пост в начале темы)
 

Сергей_Ф

Moderator
Команда форума
куда кладется файлик description.xml
и откуда в нем взялся IP адрес 192.168.0.101
Кладется в esp, либо в файловую систему, либо генерируется программно. Адрес берется от ответа на запрос своего адреса.
 

Legantmar

New member
Кладется в esp, либо в файловую систему, либо генерируется программно. Адрес берется от ответа на запрос своего адреса.
Спасибо, нужно попробовать.
но чего то не радуют комментарии у него на странице ((
Шаг №3 – SSDP обнаружение | Программирование ESP8266 в среде Arduino IDE
 

Алексей.

Active member
Но будет ли доверие к такой программке, особенно от антивируса? ))
Серьезный аргумент, по этой причине я стараюсь не пользоваться ПО от микрософт.
Если антивирус мешает работе, то проще вынести этот код прям на роутер, избавленный от антивируса :)
 

CodeNameHawk

Moderator
Команда форума
но не понял откуда берется или куда кладется файлик description.xml
и откуда в нем взялся IP адрес 192.168.0.101 ?
Файл description.xml создает сама есп, она же туда добавляет свой адрес.
Есп должна его выдавать по запросу пита http://192.168.1.26/description.xml
Untitled.png
но чего то не радуют комментарии у него на странице ((
У пары не получилось, те, у кого получилось, не пишут.
 
Последнее редактирование:

CodeNameHawk

Moderator
Команда форума
То, что пишут, что комп к роутеру подключен через провод, а есп по WiFi и не работает - ерунда, у меня как работает.
Но есть роутеры, где сеть WiFi и LAN разделены и если не включить режим "Bridge", там может не работать.
Я сомневаюсь, что будет работать, если комп подключен к одному роутеру, а есп к другому, не знаю поможет ли проброс нужного порта через роутер.

Через wifi repeater работает нормально.
 

Legantmar

New member
То, что пишут, что комп к роутеру подключен через провод, а есп по WiFi и не работает - ерунда, у меня как работает.
Но есть роутеры, где сеть WiFi и LAN разделены и если не включить режим "Bridge", там может не работать.
Я сомневаюсь, что будет работать, если комп подключен к одному роутеру, а есп к другому, не знаю поможет ли проброс нужного порта через роутер.

Через wifi repeater работает нормально.
ну это для продвинутых пользователей или офисные компании
сомневаюсь, что такие сети встречаются у блондинок дома, дай бог, чтобы wi-fi роутер был (а то при нынешних безлимитищах все давно сидят на 4G)
 

tretyakov_sa

Moderator
Команда форума
Могу написать десктопную программку определяющую IP адрес роутера, открывающую браузер с введенным IP адресом контроллера. Но будет ли доверие к такой программке, особенно от антивируса? ))
а чате телеграмма pro.Esp8266 подсказывают про smartconfig - это аналогичная программка (с пингом IP адресов) но для смартфона на андроиде (скачивается из гугл стор).
буду думать.
У меня в проекте это все реализовано. И программка уже есть: https://play.google.com/store/apps/details?id=com.tutaf.iotroomfinder
 
Сверху Снизу