최신 NodeMCU 빌드를 실행하는 ESP8266을 MQTT 프로토콜을 통해 Microsoft Azure IoT 허브에 연결하려고합니다. 나는 MS 푸른 도움말에서 볼 수 있듯이 내가 지금까지 올바른 구문을 사용하고NodeMCU를 Microsoft Azure IoT 허브에 연결하는 중 문제가 발생했습니다.
여기에 표시된대로이 가능한 것 같습니다...
http://thinglabs.io/workshop/esp8266/sending-d2c-messages/
...
NodeMCU를 사용하여 SAS 토큰을 생성 ThingLabs의 예와 달리https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support
는, I는 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)
나는 작동하지 않을 수 있습니다! @ 마르셀 Stör - 어떤 생각?
미리 감사드립니다.