Page 1 of 2

How to resolve ESP32 AP to a name?

Posted: Fri May 12, 2023 3:37 pm
by uTasker
Hi All

I have an ESP32-S2-MINI and have a web server on port 80.
To connect to it I use (from a browser)
http://192.168.4.1

It is possible to use some technique to be able to browse to it by name instead of its IP address?

Eg.

http://MyESP32

(I have used NetBios to do something similar in the past on Ethernet)

Thanks in advance.

Regards

Mark

Re: How to resolve ESP32 AP to a name?

Posted: Sat May 13, 2023 3:36 am
by username

Re: How to resolve ESP32 AP to a name?

Posted: Sun May 14, 2023 3:42 pm
by uTasker
Hi

If I use the standard ESP32-AT is this possible?

Regards

Mark

Re: How to resolve ESP32 AP to a name?

Posted: Mon May 22, 2023 3:58 am
by esp-at
Yes, standard ESP32-AT firmware has already include mDNS command.
For example, if you set the mDNS service by command: AT+MDNS=1,"espressif","_iot",80
and start a web server on port 80.
then after your mobile phone connected to ESP32's AP, open the browser and visit http://espressif.local, it's same to visit the http://192.168.4.1

Re: How to resolve ESP32 AP to a name?

Posted: Fri May 26, 2023 10:26 pm
by uTasker
Hi

Many thanks!!!

I tried
AT+MDNS=1,"espressif","_iot",80
and that did allow connecting on the ULR espressif.local

I haven't yet understood what the "_iot" means but this is a good start since it is much better than needing to know the IP address!

Regards

Mark

Re: How to resolve ESP32 AP to a name?

Posted: Mon May 29, 2023 3:35 am
by esp-at
"_iot" is just a demo, it indicates the service type that the host can serves. The real service type, you can refer to http://www.dns-sd.org/serviceTypes.html for more details.
once you set it, this service type should be in mDNS query and mDNS query response packets.

Read the mDNS services doc: https://docs.espressif.com/projects/esp ... index.html for more details.

~

Re: How to resolve ESP32 AP to a name?

Posted: Tue May 30, 2023 10:15 am
by uTasker
Hi

Thank you.
It sounds that when using port 80 "http" would be the better service type entry to use.

Presently, although the resolution is working, it is taking about 15s before it operates. I retested with "http" set but it didn't seem to make any difference and it still takes a long time before it connection. In addition it often also stops responding (and takes again 15s before it continues) - but works normally if I use the IP address.

Although it works from my PC it doesn't work from my Android phone.

I'll keep investigating but presently the operation is not adequate for real use based on experiences to date.

Regards

Mark

Re: How to resolve ESP32 AP to a name?

Posted: Tue May 30, 2023 10:48 am
by uTasker
Hi

After experimenting with different service types I find no change in behavior.

Also I have monitored the mDNS process and don't see that it is used in any of the queries or replies.

The problem at the moment is the time it takes to resolve - the browser spins for about 15s before it connects.
Then, after a short time of non-use it has to resolve again and the browser again spins for about 15s until it resolves again.

However i don't think it is a problem with the mDNS operation in the ESP since it does immediately respond with a "cache flush 192.168.4.1" but the PC only actually uses it after a number or repetitions.
I also see that the ESP32 gives the address only 2 minutes to live and this is probably why it keeps having to re-resolve, causing the subsequent slowness.

Regards

Mark

Re: How to resolve ESP32 AP to a name?

Posted: Tue May 30, 2023 10:52 am
by uTasker
Hi

Another point.

I don't see why the TCP port is required as a parameter since I also see no reference to the TCP port during the mDNS resolution.

Regards

Mark

Re: How to resolve ESP32 AP to a name?

Posted: Mon Jun 05, 2023 1:03 pm
by esp-at
i tried the mdns, and it seems work well on my side.


1. About the "TCP port is required as a parameter"
For a well-designed application protocol, the SRV record has a name of the form "<Instance>.<Service>.<Domain>"
and gives the target host and port where the service instance can be reached. you can refer to RFC6763 for more details.
About the port resolution, you can refer to RFC6763 section 5.

2. About the "ESP32 gives the address only 2 minutes to live".
IMHO, i don't think this is a place that affects latency or functionality. in RFC6762, section 10. it said:
"As a general rule, the recommended TTL value for Multicast DNS resource records with a host name as the resource record’s name
(e.g., A, AAAA, HINFO) or a host name contained within the resource record’s rdata (e.g., SRV, reverse mapping PTR record) SHOULD
be 120 seconds." so, it's reasonable for mdns. of course, you can change this TTL value at file:

Code: Select all

esp-at/managed_components/espressif__mdns/private_include/mdns_private.h (L70 to L72)
In addition, capturing packets through wireshark, reading mDNS related protocols, and debugging mDNS (esp-at/managed_components/espressif__mdns) code may help quickly analyze mDNS issues.