我想使用我的ESP和LAN上的LUA找到我的Mosquitto MQTT经纪人。我的ESP8266在同一网络上。
我在跑步
NodeMCU custom build by frightanic.com
branch: master
commit: 4905381c004bdeaf744a60bb940c1906c2e052d4
SSL: false
modules: bme280,dht,file,gpio,http,mdns,mqtt,net,node,rtctime,sjson,sntp,tmr,uart,wifi
build created on 2019-04-28 18:59
powered by Lua 5.1.4 on SDK 2.2.1(6ab97e9)
当我连接到知道IP为端口的代理时,所有操作均按预期进行:
m:connect("10.0.1.97", 1883, 0, function(client)
...
但是如何找到运行代理和端口的设备的IP地址?蚊帐的设置如下:
http://dagrende.blogspot.com/2017/02/find-mqtt-broker-without-hard-coded-ip.html
LUA mdns模块不提供发现功能,对吗?
答案 0 :(得分:2)
NodeMCU mDNS模块的documentation顶部有一条注释,说它只是一个mDNS服务器,不是客户端,但指向替代服务器。
注意
这是一个mDNS服务器模块。如果您正在寻找一个mDNS客户端 NodeMCU(即查询mDNS),则udaygin/nodemcu-mdns-client可能是 一个选择。
替代方法的自述文件包括解决本地MQTT代理的示例
mc = require('mdnsclient')
local service_to_query = '_mqtt._tcp' --service pattern to search. this is for mqtt brokers
local query_timeout = 2 -- 2 seconds
-- handler to do some thing useful with mdns query results
local query_result_handler = function(err,query_result)
if (query_result ~= nil) then
print("Got Query results")
local broker_ip,broker_port = mc.extractIpAndPortFromResults(res,1)
print('Broker '..broker_ip ..":"..broker_port)
else
print('no mqtt brokers found in local network. please ensure that they are running and advertising on mdns')
end
end
print('Connecting to wifi')
wifi.setmode(wifi.STATION)
wifi.sta.config('<SSID>', '<PASSWORD>')
wifi.sta.getip()
wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, function(T)
print("\n\tSTA - GOT IP".."\n\tStation IP: "..T.IP)
mc.mdns_query( service_to_query, query_timeout, T.IP, query_result_handler)
end)