скетч с Mdns на ESP8266 компилируется, но имя в браузере не работает

DyadyaGenya
Offline
Зарегистрирован: 23.06.2022

Доброго времени суток. Разбираюсь с такой штуокй как MDNS. Честно говоря, пока не решил, что лучше DNS или MDNS. Буду потом разбираться. Пока что хотел обращаться в браузере к плате по имени, а не по адресу. И вроде в инете много написано об этой проблеме. В том числе и то, что нужно установить Bonjour. Установил, но не помогло. При этом в консоль выводит, типа все хорошо, все запущено. Пробую делать так:

#include <ESP8266WiFi.h>                                                // Библиотека для создания Wi-Fi подключения (клиент или точка доступа)
#include <WiFiClient.h>
#include <ESP8266WebServer.h>                                           // Библиотека для управления устройством по HTTP (например из браузера)
#include <FS.h>                                                         // Библиотека для работы с файловой системой
#include <ESP8266FtpServer.h>                                           // Библиотека для работы с SPIFFS по FTP
#include <ESP8266mDNS.h>                                                // Библиотека МДНС, позволяющая обращаться к плате по имени, а не по адресу

MDNSResponder mdns;                                                     // назначаем экземпляр класса ESP8266mDNS

const char* ssid = "";                                             // Указываем сид сети, к которой будем подключаться
const char* password = "";                            // Указываем пароль сети, к которой будем подключаться
const int led = 4;
ESP8266WebServer server(80);                                            // Указываем на каком порту слушать вэбсервер

void handleRoot() {
  digitalWrite(led, 1);
  server.send(200, "text/plain", "Привет от esp8266!");
  digitalWrite(led, 0);
}

void setup() {
  pinMode(led, OUTPUT);
  digitalWrite(led, 0);  
  Serial.begin(9600);                                                   // Инициализируем вывод данных на серийный порт со скоростью 9600 бод
  while (!Serial) {
                                                                        // ждём, пока не откроется монитор последовательного порта
                                                                        // для того, чтобы отследить все события в программе
  }
  WiFi.mode(WIFI_OFF);                                                  // Останавливаем вайфай
  delay(1000);
  WiFi.mode(WIFI_STA);                                                  // Запускаем вайфай или возможно стартуем в режиме клиента, пока не разобрался с этой командой
  Serial.println(WiFi.macAddress());                                    // Выводим мак адрес
  WiFi.begin(ssid, password);                                           // Инициализируем подключение к указанной вайфай сети

  WiFi.setHostname("Host_MDNS");                                        // Устанавливаем новое имя нашего клиента
  Serial.println(WiFi.hostname());                                      // Распечатываем имя клиента
  while (WiFi.status() != WL_CONNECTED) {
  Serial.println("waiting...");  
  delay(1000);

  Serial.println(WiFi.localIP());  
  } 
   if (MDNS.begin("esp1")) {
    Serial.println("MDNS responder started");
  }
  server.on("/", handleRoot);
  server.begin();
  Serial.println("HTTP server started");  //активируем сервис MDNS  
  MDNS.addService("http", "tcp", 80); 

}

void loop() {
  // put your main code here, to run repeatedly:
  server.handleClient();
}

Пробовал ещё запускать MDNS с указанием адреса в 43 строке, но тоже не помогает:

  if (MDNS.begin("esp1", WiFi.localIP())) {

При этом реквест от сервера получаю, если зайти по адресу

rkit
Offline
Зарегистрирован: 23.11.2016

DyadyaGenya пишет:

Честно говоря, пока не решил, что лучше DNS или MDNS. Буду потом разбираться.

да вы, батенька, авангарндый программист

DyadyaGenya
Offline
Зарегистрирован: 23.06.2022

rkit пишет:

да вы, батенька, авангарндый программист

Это как? ))) За вчера прочитал несколько тем на эту тему. Некоторые из тех, у кого не получилось запустить MDNS решили настроить у себя DNS. Поскольку я эти темы знаю поверхностно, то и разбираться буду потом, когда научусь настраивать оба варианта.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Ох! Даже сказать нечего. Только вот цытату привести:

Учись, мой сын: наука сокращает

нам опыты быстротекущей жизни

Пушкин А.С. "Борис Годунов"

---------------

Хотя, следует написать, чтобы польза от поста была (ну кроме Пушкина), что начинать понимание системы имен нужно не с микроконтроллеров.

DyadyaGenya
Offline
Зарегистрирован: 23.06.2022

wdrakula пишет:

Хотя, следует написать, чтобы польза от поста была (ну кроме Пушкина), что начинать понимание системы имен нужно не с микроконтроллеров.

Это как раз понятно, потому и говорю, что хотелось бы сперва разобраться с настройкой, а потом уже разбираться, что будет более полезно. Ведь для настройки не особо то и нужны понимания системы имен.

Так-то настройки все вроде как по учебнику, и не одному. Фактически пробовал несколько якобы рабочих вариантов, взятых из разных статей на эту тему. Везде старался хоть как-то отследить результаты, тоесть вывести в монитор порта события. Даже мигание лампочки прикрутил. Не знаю, насколько правильно, но она загорается. А вот в браузере по имени все равно не заходит.

Кстати, а пинговаться по такому имени устройство должно? У меня не пингуется.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DyadyaGenya пишет:

 Ведь для настройки не особо то и нужны понимания системы имен.

очень оригинальное мЫшление )))

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

А чтобы уметь какать в нужном месте не нужно приучаться к горшку. Логично. Понимаешь хоть как dns работает? 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

BOOM пишет:

А чтобы уметь какать в нужном месте не нужно приучаться к горшку. Логично. Понимаешь хоть как dns работает? 

а то не видишь, ЧТО ПОНЯТИЯ НЕ ИМЕЕТ

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

ua6em пишет:

очень оригинальное мЫшление )))

Ты мне тут Михаила Сергеевича не замай! На святое покушаешься!

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

а то не видишь, ЧТО ПОНЯТИЯ НЕ ИМЕЕТ

интересно, откуда это следует?

 

2 ТС - по акому имени в браузере пытались достучаться до сервера?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

интересно, откуда это следует?

из личного 30 летнего опыта (имею право считать, что кое-что об этом предмете представляю), но знаю, кто об этом предмете знает ВСЁ!!!

ТС! Я не зануда! Поправил твой скетч, работает, разницу сам увидишь...Учи матчасть!!!
 

// https://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/sketch-s-mdns...

#include <ESP8266WiFi.h>                                                // Библиотека для создания Wi-Fi подключения (клиент или точка доступа)
#include <WiFiClient.h>
#include <ESP8266WebServer.h>                                           // Библиотека для управления устройством по HTTP (например из браузера)
#include <FS.h>                                                         // Библиотека для работы с файловой системой
#include <ESP8266FtpServer.h>                                           // Библиотека для работы с SPIFFS по FTP
#include <ESP8266mDNS.h>                                                // Библиотека МДНС, позволяющая обращаться к плате по имени, а не по адресу

MDNSResponder mdns;                                                     // назначаем экземпляр класса ESP8266mDNS

const char* ssid = "openwifi";                                             // Указываем сид сети, к которой будем подключаться
const char* password = "1234567890";                            // Указываем пароль сети, к которой будем подключаться
const int led = 4;
ESP8266WebServer server(80);                                            // Указываем на каком порту слушать вэбсервер

void handleRoot() {
  digitalWrite(led, 1);
  server.send(200, "text/plain", "Привет от esp8266!");
  digitalWrite(led, 0);
}

void setup() {
  pinMode(led, OUTPUT);
  digitalWrite(led, 0);  
  Serial.begin(115200);                                                   // Инициализируем вывод данных на серийный порт со скоростью 9600 бод
  while (!Serial) {
                                                                        // ждём, пока не откроется монитор последовательного порта
                                                                        // для того, чтобы отследить все события в программе
  }
  WiFi.mode(WIFI_OFF);                                                  // Останавливаем вайфай
  delay(1000);
  WiFi.mode(WIFI_STA);                                                  // Запускаем вайфай или возможно стартуем в режиме клиента, пока не разобрался с этой командой
  Serial.println(WiFi.macAddress());                                    // Выводим мак адрес
  WiFi.begin(ssid, password);                                           // Инициализируем подключение к указанной вайфай сети

 // WiFi.setHostname("esp1");                                             // Устанавливаем новое имя нашего клиента
//  Serial.println(WiFi.hostname());                                      // Распечатываем имя клиента
  while (WiFi.status() != WL_CONNECTED) {
  Serial.println("waiting...");  
  delay(1000);

  Serial.println(WiFi.localIP());  
  } 
   if (!MDNS.begin("esp1")) {
    Serial.println("Error setting up MDNS responder!");
    while (1) {
      delay(1000);
    }
  }
   Serial.println("MDNS responder started");
  
  server.on("/", handleRoot);
  server.begin();
  Serial.println("HTTP server started");  //активируем сервис MDNS  
  MDNS.addService("http", "tcp", 80); 

}

void loop() {
   MDNS.update();

  // put your main code here, to run repeatedly:
  server.handleClient();
}

 

DyadyaGenya
Offline
Зарегистрирован: 23.06.2022

ua6em пишет:

ТС! Я не зануда! Поправил твой скетч, работает, разницу сам увидишь...Учи матчасть!!!

void loop() {
   MDNS.update();

  // put your main code here, to run repeatedly:
  server.handleClient();
}

Блин, ведь же читал об этом и даже делал вариант с этой строкой. Даже не помню, в какой момент убрал и почему.

Но вообще спасибо ))) Работает.

И матчасть я учу. Что такое ДНС знаю более менее. Доводилось настраивать. Только это не моя специализация, поэтому больше по правилу трех "Зэ": зазубрил, здал, забыл. Но, понимаю, что ДНС настраивается на сервере. С МДНС столкнулся впервые. И до сих пор надобности особой не было разбираться

DyadyaGenya
Offline
Зарегистрирован: 23.06.2022

b707 пишет:

2 ТС - по акому имени в браузере пытались достучаться до сервера?

Все как в статьях по настройке: имя.local

Меня больше интересует, если я снесу этот Бонжур, мДНС останется работать или нет.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DyadyaGenya пишет:

b707 пишет:

2 ТС - по акому имени в браузере пытались достучаться до сервера?

Все как в статьях по настройке: имя.local

Меня больше интересует, если я снесу этот Бонжур, мДНС останется работать или нет.

это полноценный днс, пропиши адреса статикой в винде , почему нет, она жеж сначала текстовый файл просматривает, Дэнвер так и работает )))

DyadyaGenya
Offline
Зарегистрирован: 23.06.2022

ua6em пишет:

это полноценный днс, пропиши адреса статикой в винде , почему нет, она жеж сначала текстовый файл просматривает, Дэнвер так и работает )))

Я понимаю, что можно все в hosts записать, но это не совсем то, что меня интересует. Я ж говорю, только начинаю с этим разбираться.

А вообще, помимо настройки на винде, интересует, можно ли будет настроить на той же ESP, выступающей в качестве точки доступа нечто подобное. Ну или на клиенте ESP. Чтоб без компа, а только на одних ESP построено было. Смогут ли они так между собой "общаться"?