Как устройство получает прямые методы в Центре Интернета вещей?

Согласно документации прямого метода в Центре Интернета вещей, указано, что пользователь вызывает прямой метод через URI-адрес службы "{iot hub} / twins / {device id} / methods /" , и устройство получает его в теме MQTT "$ iothub / methods / POST / {method name} /"
У меня есть некоторая путаница относительно того, как работает это сопоставление.
Есть ли в центре Интернета вещей какое-либо внутреннее сопоставление, которое перенаправляет запрос на конкретное устройство?
Как другие устройства определяют, что метод не предназначен для них, потому что тема, которую прослушивает устройство, не кажется специфичной для устройства, и нам нужно только конкретное устройство для получения вызова этого метода?


person trailblazer    schedule 05.10.2017    source источник
comment
Центр Интернета вещей Azure не является универсальным брокером MQTT.   -  person Roman Kiss    schedule 06.10.2017


Ответы (3)


Центр Интернета вещей Azure - это шлюз двунаправленной интеграции между устройством и облаком (стек Интернета вещей). Его основная цель - быстрая передача данных телеметрии устройства в конвейер облачного потока через стандартные (встроенные) или настраиваемые конечные точки.

По сути, Центр Интернета вещей Azure имеет два типа конечных точек, такие как конечные точки, обращенные к устройствам, и конечные точки, обращенные к службам. Более подробная информация об этих конечных точках находится здесь.

Внутри Azure IoT Hub не ориентирован на шину, это не общий брокер MQTT, это не общий посредник связи, это шлюз интеграции с связью по топологии точка-точка, например, устройство-облако (D2C). ) и обмен сообщениями из облака на устройство (C2D). Нет прямого обмена сообщениями с устройства на устройство.

Обмен сообщениями C2D имеет некоторые ограничения, см. Квоты и регулирование Центра Интернета вещей. Обмен сообщениями C2D может быть асинхронным или синхронным с использованием двойных функций устройства.

По сути, обмен сообщениями C2D основан на двухточечной звездообразной связи, другими словами, вы не можете отправлять многоадресное широковещательное сообщение на устройства. В этом случае рекомендуется создать задание для отправки сообщения на устройства одно за другим.

Вызов прямого метода на устройстве через Azure IoT Hub осуществляется только через конечную точку, обращенную к службам, с использованием протокола Http. На другом конце, например, на конечной точке, обращенной к устройству, он может использоваться только устройством с протоколом, ориентированным на соединение, таким как MQTT или AMQP.

Конечная точка, обращенная к устройству, поддерживает протокол связи MQTT v3.1.1, подробнее см. здесь.

Оценить поведение устройства MQTT с помощью Центра Интернета вещей Azure можно с помощью сторонних инструментов, таких как MQTTBox Client, https://iotdevtool.com, Azure IoT Hub Tester и т. д.

Следующие фрагменты экрана показывают вызов прямого метода на устройстве MQTT. Обратите внимание, что тестер Центра Интернета вещей Azure использует прямой протокол MQTT с Центром Интернета вещей Azure.

Шаг 1. Вызов прямого метода на конечной точке службы (Http). Обратите внимание, что URL-адрес имеет идентификатор целевого устройства (в этом тестовом Device10). step1

Шаг 2. Устройство (Device10) получило прямой метод  step2

Шаг 3. Устройство (Device10) отправило ответ вызывающей стороне  step3

Шаг 4: вызывающая сторона получила ответ от устройства 10 в течение лимита времени ожидания  step4

person Roman Kiss    schedule 06.10.2017

Когда устройство аутентифицируется в Центре Интернета вещей, оно включает его идентификатор. См .: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support#using-the-mqtt-protocol-directly

Затем Центр Интернета вещей может гарантировать, что устройства получают правильные вызовы прямых методов.

person Dominic Betts    schedule 05.10.2017
comment
Мы как бы ищем внутренний процесс, который происходит при вызове прямого метода. Как Центр Интернета вещей обрабатывает его на целевом устройстве через общую тему, которую прослушивают все устройства. - person trailblazer; 06.10.2017

Каждый прямой метод нацелен на одно устройство, даже если несколько прямых методов имеют одно и то же имя, только целевое устройство может получить метод.

Так что не стесняйтесь тестировать и использовать его.

person Rita Han    schedule 06.10.2017
comment
Мы хотим использовать темы MQTT непосредственно в нашем коде, поэтому нам нужно знать, как устройства получают свои конкретные запросы, потому что все устройства прослушивают общую тему, а не конкретные темы устройства. - person trailblazer; 06.10.2017
comment
@RahulBansal Вы тестировали и с какой проблемой столкнулись? - person Rita Han; 06.10.2017
comment
Мы это еще не тестировали. Мы оцениваем это теоретически, исходя из того, будет ли это соответствовать нашей постановке задачи или нет. Мы пытаемся понять, как это работает на самом деле, внутреннее сопоставление IoT Hub и устройств для прямого метода. - person trailblazer; 06.10.2017