首页 文章

无法从ESP8266连接到MQTT代理

提问于
浏览
0

我在我的Windows机器上安装了Mosquitto,它是一个MQTT v3.1代理(最近从mosquitto.org下载) .

我试图从ESP8266连接到经纪人,到目前为止我还没能连接到经纪人 . 我可以连接到公共代理,但不能连接到我的机器上安装的代理,该代理连接到同一个wifi网络 .

我使用build-nodemcu服务构建了固件并使用了master分支 . 我认为它有MQTT v3.1.1 .

我遇到了这个question,我想我遇到了同样的情况 . 虽然已经提出了问题的原因,但是那里没有提到如何摆脱这个问题 .

你能建议如何摆脱这个问题吗?

UPDATE [13-09-2016]
这是我正在使用的代码:

sensorID = "sen_001"
tgtHost = "192.168.8.101"
tgtPort = "1883"
mqttUserID = "admin"
mqttPass = "word"
mqttTimeOut = 120
topicQueue = "/security"

WIFI_SSID = "Lakmal 4G"
WIFI_PASSWORD = "TF18BNY3M"
WIFI_SIGNAL_MODE = wifi.PHYMODE_N

ESP8266_IP=""
ESP8266_NETMASK=""
ESP8266_GATEWAY=""

if wifi.sta.getip() == nil then
    wifi.setmode(wifi.STATION) 
    wifi.setphymode(WIFI_SIGNAL_MODE)
    wifi.sta.config(WIFI_SSID, WIFI_PASSWORD) 
    wifi.sta.connect()
end

if ESP8266_IP ~= "" then
    wifi.sta.setip({ip=ESP8266_IP,netmask=ESP8266_NETMASK,gateway=ESP8266_GATEWAY})
end

print("IP: " .. wifi.sta.getip())

m = mqtt.Client(sensorID, mqttTimeOut, mqttUserID, mqttPass, 1)
m:lwt("/lwt", "offline", 0, 0)
m:on("connect", function(client) print ("connected") end)
m:on("offline", function(client) print ("offline") end)
m:on("message", function(client, topic, data) 
        print(topic .. ":" ) 
        if data ~= nil then
            print(data)
        end
    end)

m:connect(tgtHost, tgtPort, 0, function(client) print ("connected") end,     
                               function(client, reason) print("failed reason: "..reason) end)

我总是得到“失败的原因:-5”错误 .

我使用MQTTLens chrome扩展测试了代理,并且代理工作得很好 .

1 回答

  • 1

    对不起,评论太久了 .

    NodeMCU MQTT docsSO question you referenced都明确表示您需要MQTT 3.1 . 1 ,3.1还不够 .

    Mosquitto网站指出

    Eclipse Mosquitto™是一个开源(EPL / EDL许可)消息代理,它实现了MQTT协议版本3.1和3.1.1 .

    然而,根据上述陈述,你声称你的经纪人是3.1,这听起来不是全部真相 .

    如果您使用更多详细信息更新您的问题,我会更新此答案 . 您既未提供代码也未提供错误消息 . 但是,您的NodeMCU / Lua代码与公共代理可以正常工作这一事实对您的本地代理来说是一个非常强大的案例 .

相关问题