我正在尝试通过MQTT协议将运行最新NodeMCU构建的ESP8266连接到Microsoft Azure IoT中心。
看来这是可能的,因为它在这里显示......
http://thinglabs.io/workshop/esp8266/sending-d2c-messages/
就我从MS Azure帮助中看到的而言,我正在使用正确的语法...
https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support
与使用NodeMCU创建SAS令牌的ThingLabs中的示例不同,我已使用MS文档并使用设备资源管理器生成SAS令牌,以进行测试。
我的LUA代码如下......
-- Create variables
DEVICE = "testdevice"
IOTHUB = "mynewiothub.azure-devices.net"
PORT = 8883
USER = IOTHUB.."/"..DEVICE.."/api-version=2016-11-14"
PASS = "SharedAccessSignature sr=mynewiothub.azure-devices.net%2Fdevices%2Ftestdevice&sig=Roa5P8BPiGj...v2Vu%2Bm1j9sas%3D&se=1485704099"
-- Create an MQTT Client
azure = mqtt.Client(DEVICE, 60, USER, PASS)
-- Connect to IoTHub via MQTT
azure:connect(IOTHUB, PORT, 1, 0,
-- Callback for a successful connection
function(client)
print("Connected")
end,
-- Error callback, if connection fails
function(client, reason)
print("Error Connecting: "..reason)
end
)
响应始终为Error Connecting: -5
,转换为“没有经纪人在指定的IP地址和端口进行侦听”。
我怀疑NodeMCU正在努力使用SSL(端口8883)连接。所以我确保我能够使用以下代码建立HTTPS连接(在验证SSL根证书之后),这有效,但没有帮助。
http.get("https://example.com/info", nil,
function (code, resp)
print(code, resp)
end)
我似乎无法让这个工作! @MarcelStör - 有什么想法吗?
非常感谢提前。
答案 0 :(得分:0)
我遇到了同样的错误Error Connecting: -5
,我已经在ESP上设置了时间并修复了这个错误。
您可以在http://thinglabs.io/workshop/esp8266/sending-d2c-messages/上找到有关sntp的一些信息(如您所述)。