2016-03-02 4 views
0

Azure внедрил протокол MQTT в своем IoTHub, поэтому я пытаюсь использовать москит для отправки сообщений с моего компьютера. Я создаю лазурные устройства, используя Device Explorer. В начале я сгенерировал токен SAS оттуда, но у него не была часть « skn =», поэтому я попытался создать новый SAS, используя совместимый центр событий из visual studio. После этого я попытался использовать mosquitto брокера, чтобы отправить сообщение MQTT на мой IoTHub с использованием параметров в пакете CONNECT, как описано здесь:Mosquitto отправляет сообщения Azure IoTHub

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

Однако соединение не работает, и я не знаю, где Я поступаю неправильно. Используя отладку mosquitto_pub, я получаю этот вывод: «Клиент Mosquitto отправляет CONNECT Ошибка: соединение было потеряно» Можете ли вы помочь мне решить эту проблему? Спасибо заранее.

Это моя команда mosquitto, первый из них с SAS маркер генерируется с помощью проводника устройства, второй с помощью Visual Studio:

mosquitto_pub -h {IotHub Hostname} -p 8883 -t устройств/{DeviceId}/сообщения/события -v -V mqttv311 -i {deviceId} -d -u {Имя узла} .azure-devices.net/{deviceId} -P "HostName = {Имя узла} .azure-devices.net; DeviceId = { DeviceId}; SharedAccessSignature ср = HTTPS% 3a% 2f% 2f {Событие концентратор совместимое имя} .servicebus.windows.net% 2fdevices & сиг = k030AmvBkmlNwy% 2fLd47N8jQuj808jJg9EXnAGmEUan4% 3d & се = 2913829726 & СКН = iothubowner»

Mosq uitto_pub -h {IotHub Hostname} -p 8883 -t devices/{deviceId}/messages/events -v -V mqttv311 -i {deviceId} -d -u {Имя узла} .azure-devices.net/{deviceId} - P "HostName = {Имя узла} .azure-devices.net; DeviceId = {deviceId}; SharedAccessSignature = SharedAccessSignature sr = {Имя узла} .azure-devices.net% 2fdevices% 2f {deviceId} & sig = BYvo8GE% 2fcOdnD8G3wsP7VElU4SwsVTSaACnif% 2ffBj1k% 3d & se = 1456911258 "

+0

Вы можете отредактировать свой вопрос, включив в него командную строку mosquitto_pub (с подходящим вариантом для замены apikey/password) – hardillb

+0

спасибо hardillb, я отредактировал вопрос. – Mario

+0

Azure IoT Hub работает с SSL, который они не рекламируют в разделе, которое вы, вероятно, искали для информации о имени пользователя и пароле. Однако упоминается в [главах конечных точек здесь] (https://azure.microsoft.com/en-us/documentation/articles/iot-hub-devguide/#endpoints). Однако я не смог подключиться к Azure и добавил [мой собственный вопрос] (http: // stackoverflow.com/questions/35863841/connect-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" 

Кроме того, там, кажется, проблема в данный момент (марше 2016 года) между mosquitto и Azure связи. See this question for further details.

Смежные вопросы