• Система автоматизации с открытым исходным кодом на базе 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 не ориентируюсь совсем, так-как данная платформа занимает очень малую часть рынка мобильных устройств.
 
Сверху Снизу