【问题标题】:Find MQTT Broker in LAN with nodemcu lua zeroconf使用 nodemcu lua zeroconf 在局域网中查找 MQTT Broker
【发布时间】:2023-03-25 12:00:01
【问题描述】:

我想在我的 LAN 上使用我的 ESP 和 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 地址和端口呢? Mosquitto 的设置如下:

http://dagrende.blogspot.com/2017/02/find-mqtt-broker-without-hard-coded-ip.html

LUA mdns 模块不提供发现,对吗?

【问题讨论】:

    标签: lua mqtt mosquitto nodemcu zeroconf


    【解决方案1】:

    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)
    

    【讨论】:

    • 我对此表示赞同,因为它看起来可以回答这个问题,但是,到目前为止我无法让它工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2018-10-22
    • 1970-01-01
    • 2015-11-17
    相关资源
    最近更新 更多