2016-03-02 76 views
0

Azure在其IoTHub中實現了MQTT協議,因此我試圖使用mosquitto從我的電腦發送消息。 我使用Device Explorer創建天藍色的設備。在開始時我從那裏生成了SAS令牌,但它沒有「& skn =」部分,所以我嘗試使用visual studio的兼容事件中心生成一個新的SAS。從那以後,我試圖用mosquitto經紀人在CONNECT包使用參數解釋這裏給我MQTT消息,我IoTHub:Mosquitto向Azure發送消息IoTHub

https://azure.microsoft.com/en-us/documentation/articles/iot-hub-devguide/#endpoints

但是連接不工作,我真的不知道在哪裏我做錯了。使用mosquitto_pub調試我得到這個輸出: 「客戶端mosquitto發送連接 錯誤:連接丟失」 你能幫我解決這個問題嗎? 在此先感謝。

這些是我mosquitto命令,第一個是與SAS令牌使用設備資源管理器生成,所述第二使用視覺工作室:

mosquitto_pub -h {IotHub主機名} -p 8883個-t設備/ {DEVICEID} /消息/事件-v -V mqttv311 -i {deviceId} -d -u {Hub名稱} .azure-devices.net/{deviceId} -P「HostName = {Hub名稱} .azure-devices.net; DeviceId = { DEVICEID}; SharedAccessSignature SR = HTTPS%3A%2F%2F {事件轂兼容名稱} .servicebus.windows.net%2fdevices & SIG = k030AmvBkmlNwy%2fLd47N8jQuj808jJg9EXnAGmEUan4%3D & SE = 2913829726 & SKN = iothubowner」

誘蚊誘卵uitto_pub -h {IotHub Hostname} -p 8883 -t devices/{deviceId}/messages/events -v -V mqttv311 -i {deviceId} -d -u {Hub Name} .azure-devices.net/{deviceId} - P「HostName = {Hub name} .azure-devices.net; DeviceId = {deviceId}; SharedAccessSignature = SharedAccessSignature sr = {Hub name} .azure-devices.net%2fdevices%2f {deviceId} & sig = BYvo8GE%2fcOdnD8G3wsP7VElU4SwsVTSaACnif% 2ffBj1k%3d & se = 1456911258「

+0

你可以編輯你的問題,包括您正在使用的mosquitto_pub命令行(與apikey /密碼適當替換一些地方持有人) – hardillb

+0

謝謝hardillb,我編輯的問題。 – Mario

+0

Azure IoT Hub正在使用SSL,他們在您可能查看的用戶名/密碼信息部分未公佈廣告。 但是在[端點章節]中提到了它(https://azure.microsoft.com/zh-cn/documentation/articles/iot-hub-devguide/#endpoints)。 但是,我無法連接到Azure,並添加了[我自己的問題](http:// stackoverflow。com/questions/35863841/connecting-mosquitto-to-the-new-azure-mqtt-backend) – Deadolus

回答

0

Azure IoT Hub只與SSL協作,他們在您可能查看的用戶名/密碼信息部分未公佈廣告。 然而,它在endpoints chapter here簡要提及。 您的命令中不使用SSL。

此外您的密碼似乎不對。 如果你看看前面提到的章節,你可以抓取DeviceId = *和HostName = *部分。 此外,您的SharedAccessKey的一部分似乎已被轉義。也許這只是因爲你將它複製到SO中,但確保它在使用蚊子時不是這樣。 您的密碼應該是這樣的:

-P "SharedAccessSignature sr=yourtarget.azure-devices.net&sig=a_string_here&se=a_number&skn=policyname" 

此外,還有似乎是mosquitto和Azure的通信之間的那一刻(2016年3月)的問題。 See this question for further details