2017-01-24 6 views
0

최신 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 - 어떤 생각?

미리 감사드립니다.

답변