Funcionamiento mDNS

Buenos dias.
Estoy intentado utilizar la libreria ESP8266mDNS.h para asignar un nombre a cada placa ESP8266 y ESP32 que pretendo instalar en una red.
El codigo para iniciar la conexion wifi y asignarle un nombre que utilizo es el siguiente:

void setup_wifi() {
  delay(10);
  Serial.println();
  Serial.print("Conectando a: ");
  Serial.println(ssid);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  randomSeed(micros());
  Serial.println("");
  Serial.println("WiFi conectada");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  //
   if (!MDNS.begin("cotrolreles")) 
   {             
     Serial.println("Error iniciando mDNS");
   }
   Serial.println("mDNS iniciado");
}

Todo va bien pues en pantalla no da mensajes de error, lo que no sé es como acceder a la placa por el nombre que le he asignado pues he mirado en el router y esta placa no aparece por ese nombre.
¿Hay que hacer algo mas que dicha definicion en el codigo ?

Gracias.
Javier.

Aver si entiendo mDNS hace que tu placa esp8266 conectada a tu red con una determinada IP se le asigne un nombre de dominio, ejemplo citando a la libreria que utilizas:

/*
    Maximum length for a full domain name eg. MyESP._http._tcp.local
*/

Entonces en el código que adjuntas como defines el nombre de dominio para tu placa?

Gracias y buenas tardes.

Según los ejemplos que he visto he probado a poner las siguientes sentencias:

if (!MDNS.begin("cotrolreles.local")) 
   {             
     Serial.println("Error iniciando mDNS");
   }
   Serial.println("mDNS iniciado");

y

if (!MDNS.begin("cotrolreles")) 
   {             
     Serial.println("Error iniciando mDNS");
   }
   Serial.println("mDNS iniciado");

Pero ambas no han funcionado, no sé si debo reiniciar el router y ver si se actualiza.
Podrá ser eso?.
Un saudo,
Javier.

La libreria dice lo siguiente:

        // Start the MDNS responder by setting the default hostname
        // Later call MDNS::update() in every 'loop' to run the process loop
        // (probing, announcing, responding, ...)
        // if interfaceAddress is not specified, default interface is STA, or AP when STA is not set
        bool begin(const char* p_pcHostname, const IPAddress& p_IPAddress = INADDR_ANY,
                   uint32_t p_u32TTL = 120 /*ignored*/);
        bool begin(const String& p_strHostname, const IPAddress& p_IPAddress = INADDR_ANY,
                   uint32_t p_u32TTL = 120 /*ignored*/)

Los comentarios afirman que se debe agregar un update dentro del loop para asegurar que funcione constantemente la operación del algoritmo mDNS

 void loop() {
    MDNS.update();
 }

Si esto funciona tendrías que mediante tu computadora ejecutar un ping al dominio cotrolreles.local o como sea el hostname que le vayas a poner

No he trabajado con mDNS pero según entiendo, deberías nombrarla "controlreles" pero accederla con http://controlreles.local

Para ver en el router los dispositivos por el nombre y no por la MAC etc, quizá te valga esto:

String hostname = "NombreDeMiArduino";
WiFi.setHostname(hostname.c_str());

Saludos.

Estupendo, lo pruebo.

Gracias por la idea.

Moderador:
Tema movido a microcontroladores donde corresponde todo lo no AVR o de la empresa Arduino.cc

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.