Тема Azure и отправка сообщения по MQTT

Можно ли отправлять сообщения на лазурь в любую настраиваемую тему через mqtt. Все примеры, которые я нашел до сих пор, работают со стандартными темами.

'devices/' + hubName + '/messages/events/'
'devices/' + hubName + '/messages/devicebound/#'

Кстати, я пытался отправить/подписаться на тему/подписку выше с помощью приложения MQTT.fx и так и не получил сообщения, хотя соединение было успешным.


person amplifier    schedule 29.06.2018    source источник
comment
Что вы имели в виду под «никогда не получал сообщений»? Означало ли это, что серверная часть не может получать сообщения, отправленные из MQTT.fx (устройство-в-облако), или MQTT.fx не может получать сообщения, отправленные из службы (облако-в-устройство)?   -  person Michael Xu - MSFT    schedule 02.07.2018
comment
MQTT.fx подписан на устройства/mydevice/messages/devicebound/#, никогда не получал сообщения, отправленные с MQTT.fx на устройства/mydevice/messages/events/ (я использую приложение как отправителя и получателя). Соединение установлено (загорелся зеленый индикатор)   -  person amplifier    schedule 02.07.2018


Ответы (1)


Фильтр темы devices/{device_id}/messages/devicebound/# предназначен для подписки на получение сообщения от Центра Интернета вещей (сообщение «облако-устройство»), он считает, что вам необходимо понимать разницу между сообщением «устройство-облако» и сообщением «облако-устройство» от здесь. Тема devices/{device_id}/messages/events/ предназначена для отправки сообщения с устройства в облако.

Вы можете использовать Device Explorer, чтобы проверить это. проблема. Когда вы отправляете сообщение на устройство с помощью инструмента, MQTT.fx получит сообщение.

введите здесь описание изображения

person Michael Xu - MSFT    schedule 03.07.2018
comment
Спасибо за разъяснения по MQTT.fx. Вчера мне удалось отправить сообщения на устройства/{device_id}/messages/events/ из исходного кода Python (используя paho.mqtt). В качестве справки я использовал код из github.com/gloveboxes/Azure-IoT-Hub-with-Python-and-MQTT/blob/. Теперь мне нужно опубликовать в пользовательской теме. Я создал конечную точку, назначил тему и маршрут для конечной точки. Но не могу опубликовать. Какой URL следует использовать? Спасибо! - person amplifier; 03.07.2018
comment
@amplifier, IoT Hub не является универсальным брокером обмена сообщениями публикации и подписки, он поддерживает только задокументированные имена тем и фильтры тем, но не поддерживает пользовательские темы. Дополнительные сведения см. в этом документе. . - person Michael Xu - MSFT; 04.07.2018
comment
Наконец, я сделал это с помощью маршрутизации. Взгляните сюда, пожалуйста, stackoverflow.com/questions /51160000/ - person amplifier; 04.07.2018
comment
@amplifier, я просмотрел тему, которую вы упомянули. В этом потоке имя_темы не является настраиваемым фильтром тем для Центра Интернета вещей, $.ct=application%2Fjson&$.ce=utf-8 — это просто параметр. Я не понимаю, какова связь с custom topic и сообщением маршрута к конечной точке в комментарии выше? - person Michael Xu - MSFT; 04.07.2018
comment
@amplifier, в дополнение к комментарию выше. В некоторой степени вы можете ссылаться на имя темы с идентификатором устройства как на настраиваемую тему. Но на самом деле с кастомной темой для брокера mqtt дело обстоит иначе. - person Michael Xu - MSFT; 05.07.2018
comment
да, в сообщение вставляю специальный параметр, потом настраиваю конечные точки (Home-›IoT hub-›Endpoints) и маршруты (Home-›IoT hub-›Routes) и строку запроса для каждого из маршрутов, и вот мои сообщения в итоге попадают в ту или иную тему по специальному параметру - person amplifier; 05.07.2018
comment
как я могу ссылаться на имя темы с идентификатором устройства как на пользовательскую тему c? - person amplifier; 05.07.2018
comment
Вы можете ссылаться на 'devices/{device_id}/messages/events/' как на название темы (для вас это настраиваемая тема) для публикации сообщения в Центре Интернета вещей и devices/{device_id}/messages/devicebound/# как на тему для подписки на сообщение, отправленное из облака. Но я не думаю, что эта концепция связана с маршрутизацией к конечной точке или, другими словами, конфигурация маршрута не связана с этим вопросом. - person Michael Xu - MSFT; 05.07.2018
comment
Майкл, в данный момент я не отправляю c2d-сообщения. И позвольте мне уточнить мою терминологию. Под пользовательской темой я понимаю тему, созданную на портале Azure. Но 'devices/{device_id}/messages/events/' как встроенная тема - person amplifier; 05.07.2018
comment
В приложении MQTT.fx невозможно получить сообщение d2c через подписку на тему devices/{device_id}/messages/devicebound/#. - person Michael Xu - MSFT; 06.07.2018