无法将NodeMCU连接到Microsoft Azure IoT Hub

时间:2017-01-24 17:32:08

标签: azure lua mqtt esp8266 nodemcu

我正在尝试通过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 - 有什么想法吗?

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的错误Error Connecting: -5,我已经在ESP上设置了时间并修复了这个错误。

您可以在http://thinglabs.io/workshop/esp8266/sending-d2c-messages/上找到有关sntp的一些信息(如您所述)。