Согласно документации прямого метода в Центре Интернета вещей, указано, что пользователь вызывает прямой метод через URI-адрес службы "{iot hub} / twins / {device id} / methods /" strong>, и устройство получает его в теме MQTT "$ iothub / methods / POST / {method name} /"
У меня есть некоторая путаница относительно того, как работает это сопоставление.
Есть ли в центре Интернета вещей какое-либо внутреннее сопоставление, которое перенаправляет запрос на конкретное устройство?
Как другие устройства определяют, что метод не предназначен для них, потому что тема, которую прослушивает устройство, не кажется специфичной для устройства, и нам нужно только конкретное устройство для получения вызова этого метода?
Как устройство получает прямые методы в Центре Интернета вещей?
Ответы (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).
Шаг 2. Устройство (Device10) получило прямой метод
Шаг 3. Устройство (Device10) отправило ответ вызывающей стороне
Шаг 4: вызывающая сторона получила ответ от устройства 10 в течение лимита времени ожидания
Когда устройство аутентифицируется в Центре Интернета вещей, оно включает его идентификатор. См .: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support#using-the-mqtt-protocol-directly
Затем Центр Интернета вещей может гарантировать, что устройства получают правильные вызовы прямых методов.
Каждый прямой метод нацелен на одно устройство, даже если несколько прямых методов имеют одно и то же имя, только целевое устройство может получить метод.
Так что не стесняйтесь тестировать и использовать его.