Як Azure IoT Hub взаємодіє з пристроями Embedded / IoT?


13

Я працюю на платформі Azure IoT і розумію, як пристрої надсилають дані в концентраційний центр IoT (якщо я не помиляюся, це просто виклик веб-служби або щось подібне до цього).

Але мені цікаво, як IoT-центр пересилає дані / команду / введення на пристрої, оскільки ми не працюємо на концентраторі IoT для зв'язку пристрою (у нас немає жодної вимоги до передачі даних на пристрої). Чи може концентратор IoT безпосередньо взаємодіяти з пристроями? (Використання унікального ідентифікатора пристрою або використання унікальної ідентичності, наприклад IP, Mac-адреса тощо).

Десь я читав, що пристрої продовжують запитувати в концентраційний центр IoT, якщо концентратор IoT має для них будь-який вхід, а концентраційний центр IoT потім надсилає дані / команду / введення на пристрої у відповідь. Це правда? Якщо ні, то, будь ласка, поясніть.

Відповіді:


14

Модель, яку використовують пристрої, підключені до IoT Hub, полягає в тому, що вони ніколи не приймуть вхідні з'єднання. Пристрої IoT Hub ніколи не виступають як "сервер", і це важлива частина моделі безпеки в Azure IoT. Остаточна модель щодо цього вкладена у "Спілкування за допомогою сервісу" Клеменса Вастерса .

Тому пристрої завжди "опитують" зовнішню службу для того, щоб надсилати дані або отримувати команди. API дозволяє виглядати так, що дані надсилаються на пристрій, але це завжди пристрій, який здійснює вихідне з'єднання.

IoT-центр робить це двома способами:

  1. Відправляючи дані в кінцеву точку пристрою /devices/{deviceId}/messages/devicebound. Це кінцева точка обміну повідомленнями AMQP, подібна до підписки на чергу чи тему. Пристрій, читаючи команди, потребує підтвердження отримання, якщо це потрібно, що є частиною базового протоколу AMQP. Це працює так само і з MQTT, а https - дійсна резервна версія. API перераховує все це для вас. Існують додаткові поняття, такі як "прямі методи", які є обгорткою API навколо, по суті, одного і того ж базового протоколу повідомлення
  2. Використовуючи серверний пристрій twin, це спосіб логічно зберігати властивості в синхронізації між пристроєм і сервером. Ви встановите властивість на пристрої близнюк, і коли пристрій синхронізує цю властивість, буде синхронізовано з пристроєм. Це менш на основі повідомлень і побудовано на основі протоколу управління пристроєм LWM2M.

Про частину опитування, підключення, спільного доступу, квитанцій тощо слід потурбуватись як частину протоколу AMQP (або MQTT), який, в свою чергу, перетворений в SDK IoT Hub SDK. Отже, вищесказане дуже спрощено, але повторити, IoT Hub не може і не намагатиметься (ніколи) надсилати дані на ip-адресу / порт вашого пристрою.


Дякую @Simon, тепер я зрозумів, що пристрої, які відповідають за виклик концентратора IoT, надсилають або отримують дані. Ви згадали про "Azure IoT" у своїй відповіді, тож просто хочете підтвердити це, вашу заявку на відповіді на всіх платформах IoT? або лише для Azure IoT.
Шрі

@ShrikantBhusalwad Відповідь не може застосовуватися до всіх платформ, оскільки багато з них ще не розроблені. Це звичайна модель, це добре для безпеки, але інші моделі можуть бути виправдані - особливо в нових умовах.
Шон Хуліхане

2
Я не знайомий з усіма платформами, але більшість хмарних платформ будуть подібними. AWS використовує MQTT, який здебільшого той самий. Як зауважує @sean, він не може застосовуватись до всіх платформ, але дуже мало хмарних платформ зможуть вперше використати ризикові практики безпеки. Методи, які використовують моделі пристрою як сервера, або будуть застарілими, або матимуть набагато більшу суворість безпеки (у міру розвитку шаблонів краю або сітки). Azure IoT архітектурно підтримує польові та хмарні шлюзи, щоб подолати проблеми зі застарілими або крайовими пристроями
Simon Munro

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.