我遇到了通过mqtt
在树莓上连接esp模块的问题。经过大量的搜索,我觉得我现在有点迷失了。
所以这就是问题
我已经将我的raspberry的本地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)
和输出:
在cubex.local连接到MQTT代理。请稍候...
DNS重试1!
DNS重试2!
DNS重试3!
DNS重试4!
DNS失败!
在cubex.local连接到MQTT代理。请稍候...
DNS重试1!
DNS重试2!
DNS重试3!
DNS重试4!
DNS失败!
在cubex.local连接到MQTT代理。请稍候...
DNS重试1!
DNS重试2!
DNS重试3!
DNS重试4!
DNS失败!
主变量包含cubex.local
,端口为1883
当我使用覆盆子的IP为192.168.0.3时,一切正常
我仍然无法理解为什么它一直无法解析地址。
答案 0 :(得分:1)
您的主机名cubex.local
是通过mDNS注册的,但是mqtt查询DNS以解析主机名。
一个选项可能是将DNS代理用于mDNS,如mdns-proxy,另一个选项是修改nodemcu以直接查询mDNS。