我在我的Windows机器上安装了Mosquitto,它是一个MQTT v3.1代理(最近从mosquitto.org下载)。
我正在尝试从ESP8266连接到代理,到目前为止我还无法连接到代理。我可以连接到公共代理,但不能连接到我的机器上安装的代理,该代理连接到同一个wifi网络。
我使用build-nodemcu服务构建了固件并使用了master分支。我认为它有MQTT v3.1.1。
我遇到了这个question,我想我遇到了同样的情况。虽然已经提出了问题的原因,但是那里没有提到如何摆脱这个问题。
你能否建议如何摆脱这个问题?
更新[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扩展测试了代理,并且代理运行良好。
答案 0 :(得分:1)
对不起,评论太久了。
NodeMCU MQTT docs和SO question you referenced都明确表示您需要MQTT 3.1。 1 ,3.1赢得不够。
Mosquitto网站指出
Eclipse Mosquitto™是一个开源(EPL / EDL许可)消息代理 实现MQTT协议版本3.1和3.1.1。
然而,根据上述陈述,你声称你的经纪人是3.1,这听起来不是全部真相。
如果您更新问题并提供更多详细信息,我将更新此答案。您既未提供代码也未提供错误消息。事实上,你的NodeMCU / Lua代码可以很好地与公共经纪人合作,这对你的本地经纪人来说是非常有力的。