ESP8266 nodemcu 解析树莓派的本地 dns

ESP8266 nodemcu resolving raspberry's local dns

我在通过 mqtt 连接覆盆子上的 esp 模块时遇到问题。经过大量搜索,我想我现在有点迷路了。

问题来了

我已经将我的树莓派的本地 dns 设置为 cubex.local,我按照这里的说明操作:

http://www.howtogeek.com/167190/how-and-why-to-assign-the-.local-domain-to-your-raspberry-pi/

在这一端似乎一切正常...
我可以在本地网络上使用 cubex.local 来通过 ssh 和 ftp 访问树莓派,但是当涉及到 esp 试图解析该地址时,它总是失败。

这是esp上的代码运行:

function broker_connect()
 m = mqtt.Client(ID, 120, BRUSER, BRPWD)
 m:on("message", on_message_received)
 m:on("connect", on_connect)
 m:on("offline", on_mqqt_offline)

 tmr.alarm(0, 1000, 1,function() 
 print("Connecting to MQTT broker at "..HOST..". Please wait...")
 m:connect( HOST , PORT, 0)
end)

和输出:

Connecting to MQTT broker at cubex.local. Please wait...
DNS retry 1!
DNS retry 2!
DNS retry 3!
DNS retry 4!
DNS Fail!
Connecting to MQTT broker at cubex.local. Please wait...
DNS retry 1!
DNS retry 2!
DNS retry 3!
DNS retry 4!
DNS Fail!
Connecting to MQTT broker at cubex.local. Please wait...
DNS retry 1!
DNS retry 2!
DNS retry 3!
DNS retry 4!
DNS Fail!

主机变量保存cubex.local,端口为1883.
当我使用树莓派的 IP 192.168.0.3 时,一切正常。
我仍然不明白为什么它总是无法解析地址。

您的主机名 cubex.local 是通过 mDNS 注册的,但是 mqtt 查询 DNS 来解析主机名。

一种选择是像mdns-proxy一样使用mDNS的DNS代理,另一种是修改nodemcu直接查询mDNS。