• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Помогите разобраться с mDNS

vikmed87

New member
Доброго времени суток всем.
Столкнулся с проблемой с mDNS.
подключаю библиотеку

#include <ESP8266mDNS.h>
MDNSResponder mdns;

В сетапе указываю:
MDNS.begin("test");
MDNS.addService("http", "tcp", 80);

esp8266 настроена в режиме клиента (STA).
В итоге с iphone 4S все работает велеколепно, доступ к esp8266 получаю как по ip так и по имени test.local, а вот с компьютера под Windows 8 и телефонов и планшетов на Android могу зайти только по ip, по DNS имени никак, пробовал разными вариантами: test.local, http://test.local, http://test и т.д.

Куда смотреть? что крутить?
Заранее спасибо.
 

CodeNameHawk

Moderator
Команда форума
Под вин 10 работает только, если включать в такой последовательности есп8266 - роутер - компьютер.
 

vikmed87

New member
Кроме mDNS есть другие инструменты для доступа на esp8266 по имени?
 

vikmed87

New member
Проблема с хостами под windows решена установкой BonjourSDK от Apple.
Теперь не важно в какой последовательности включены роутер, компьютер и ESP8266.

Как быть с Android?
 

vikmed87

New member
"с прописыванием в DHCP" имелось ввиду резервирование? Такой вариант не устраивает в корне, так-как устройство должно подключаться к разным точкам доступа, и внутри сети всегда должен быть доступ по имени, так-как DHCP у каждой последующей точки может быть настроен как угодно, на разные подсети и разные пулы адресов.
 

pvvx

Активный участник сообщества
"с прописыванием в DHCP" имелось ввиду резервирование? Такой вариант не устраивает в корне, так-как устройство должно подключаться к разным точкам доступа, и внутри сети всегда должен быть доступ по имени, так-как DHCP у каждой последующей точки может быть настроен как угодно, на разные подсети и разные пулы адресов.
В таблице DHCP указывается сервис, такое как местный адрес SNTP и т.д.. Это никому не мешает, а помогает...
 

pvvx

Активный участник сообщества
простите, но как это делается в бытовых роутерах?
к примеру TP-Link TL-WR841N
Это делается не в роутере, а в коде модуля. Роутер тут не при чем. Он создает только обмен.
Вам надо поставить драйвер NetBIOS.
Если драйвер NetBIOS over TCP/IP, то прописать опцию 44, 45, ... в DHCP_OPTION в dhcpserver на модуле. Так-же организовать чтение и обработку дополнительных опций в dhcp клиенте. Например чтения адреса местного NTP сервера для точной синхронизации времени (малого пинга, опция 42 /* RFC 2132 8.3 */ ) и т.д.
 
Последнее редактирование:

vikmed87

New member
Примерно понял....
Немогу нигде найти информацию по использованию NetBIOS в Arduino IDE.
Прошу показать на примерах, или где почитать описание библиотеки...
 

pvvx

Активный участник сообщества
Примерно понял....
Немогу нигде найти информацию по использованию NetBIOS в Arduino IDE.
Прошу показать на примерах, или где почитать описание библиотеки...
Он входит в стандартные примеры к LwIP, есть на CИ и без проблем линкуется в систему...
Можно написать и в скетче, примерно как описывают SNTP...
 

vikmed87

New member
Прошу прощения за тупость свою.... как в дремучем лесу...
Если я правильно Вас понял - то в свой скетч в Arduino IDE я могу добавить библиотеку LwIP от Espressif, в ней уже содержится драйвер NetBIOS, который в свою очередь мне и нужно сконфигурировать?
Или все не так радужно?
 

pvvx

Активный участник сообщества
Прошу прощения за тупость свою.... как в дремучем лесу...
Если я правильно Вас понял - то в свой скетч в Arduino IDE я могу добавить библиотеку LwIP от Espressif, в ней уже содержится драйвер NetBIOS, который в свою очередь мне и нужно сконфигурировать?
Или все не так радужно?
Немного сложнее, раз сразу не понятно. Можно добавить код NetBIOS на СИ в систему Arduino IDE, дописав простой класс обращения к нему и выйдет либа для Arduino.
Но есть и другой путь - описать упрошенный драйвер NetBIOS прямо в скетче. Он не сверх сложный.
Задача на вечер или пару часов работы... Дольше готовить код для публикаций и т.д.
Можно и выпросить у писателей Arduino IDE, чтобы включили поддержку NetBIOS.
Т.е. всё зависит от вас и желания, нужна или нет поддержка обращения по имени в Windows систем...
Я Arduino IDE к ESP8266 не занимаюсь. На RtlDuino могу встроить, если попросите хоть сегодня, а так вставлю немного позже.
 
Последнее редактирование:

vikmed87

New member
Да вот с windows системами вопросов нет, mDNS на ESP8266 и Bonjour на Windows решает эту проблему.
Так-же использование будущего устройства особо не предполагает работу с Windows систем, а работа с мобильными платформами, iOS и Android. С iOS все велеколепно работает, а с Android нужно что-то решать.
Как вариант пробовать в приложении Android обращаться не по имени и не по ip а по mac адресу, если такое возможно....
Или все-же описывать NetBIOS...
 

pvvx

Активный участник сообщества
Уже приделал к rtlDuino NETBIOS
Лог:
Код:
TCP_TST: client init on port 12345
NetBIOS init, name AP: 'ARTL871X', ST: 'SRTL871X'
WIFI initialized
<------- тут включил инет на комп с window и она пошла опрашивать NetBios:
nbs: get 192.168.1.2, 'ISATAP'
nbs: get 192.168.1.2, 'ISATAP'
nbs: get 192.168.1.2, 'ISATAP'
<------- запуск эксплорера с запросом http://srtl871x/
nbs: get 192.168.1.2, 'SRTL871X'
nbs: out 192.168.1.122, 'SRTL871X' --------> адрес передан, но web сервер не включен.
<------- тут далее службы win-ды опрашивают свои любимые имена...
nbs: get 192.168.1.2, 'ISATAP'
nbs: get 192.168.1.2, 'ISATAP'
nbs: get 192.168.1.2, 'ISATAP'
nbs: get 192.168.1.2, 'ISATAP'
nbs: get 192.168.1.2, 'ISATAP'
nbs: get 192.168.1.2, 'ISATAP'
nbs: get 192.168.1.2, 'ISATAP'
nbs: get 192.168.1.2, 'ISATAP'
nbs: get 192.168.1.2, 'KYTJJBVIV'
nbs: get 192.168.1.2, 'AUYPQREELUHHZZW'
nbs: get 192.168.1.2, 'OOFTRBIOQ'
nbs: get 192.168.1.2, 'ISATAP'
nbs: get 192.168.1.2, 'OOFTRBIOQ'
nbs: get 192.168.1.2, 'AUYPQREELUHHZZW'
nbs: get 192.168.1.2, 'KYTJJBVIV'
nbs: get 192.168.1.2, 'ISATAP'
nbs: get 192.168.1.2, 'KYTJJBVIV'
nbs: get 192.168.1.2, 'AUYPQREELUHHZZW'
nbs: get 192.168.1.2, 'OOFTRBIOQ'
nbs: get 192.168.1.2, 'ISATAP'
 

pvvx

Активный участник сообщества
Android умеет NetBios... проблем особых нет, что не сказать про windows гаджеты.
Это война Яблока и я в ней не участвую :)
 

vikmed87

New member
на windows mobile не ориентируюсь совсем, так-как данная платформа занимает очень малую часть рынка мобильных устройств.
 
Сверху Снизу