Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:
IoT Edge 1.5
Внимание
IoT Edge 1.5 LTS — это поддерживаемый выпуск. IoT Edge 1.4 LTS достиг срока окончания службы 12 ноября 2024 года. Если вы используете более ранний выпуск, ознакомьтесь с Update IoT Edge.
модули Azure IoT Edge могут подключаться к другим службам Azure и вносить свой вклад в более крупный облачный конвейер данных. В этой статье описывается, как разрабатывать модули для взаимодействия с средой выполнения IoT Edge и IoT Hub и, следовательно, остальной частью облака Azure.
среда выполнения IoT Edge
Среда выполнения IoT Edge предоставляет инфраструктуру для интеграции функциональных возможностей нескольких модулей IoT Edge и развертывания их на IoT Edge устройствах. Любую программу можно упаковыть в виде модуля IoT Edge. Чтобы воспользоваться всеми преимуществами функций связи и управления IoT Edge, программа, запущенная в модуле, может использовать пакет SDK для устройств Azure IoT для подключения к локальному центру IoT Edge.
Упаковка программы в виде модуля IoT Edge
Чтобы развернуть программу на устройстве IoT Edge, необходимо сначала контейнеризировать ее и запустить с помощью подсистемы, совместимой с Docker. IoT Edge использует Moby, проект с открытым исходным кодом, лежащий в основе Docker, как движок, совместимый с Docker. Вы можете передать те же параметры, которые вы использовали с Docker в модули IoT Edge. Дополнительные сведения см. в разделе Как настроить параметры создания контейнеров для модулей IoT Edge.
Использование центра IoT Edge
Концентратор IoT Edge предоставляет две основные функциональные возможности: прокси-сервер для IoT Hub и локальных коммуникаций.
Подключение к центру IoT Edge из модуля
Подключение к локальному центру IoT Edge из модуля включает те же шаги подключения, что и для всех клиентов. Для получения дополнительной информации см. Подключение к концентратору IoT Edge.
Чтобы использовать маршрутизацию IoT Edge через AMQP, можно использовать ModuleClient из Azure IoT SDK. Создайте экземпляр ModuleClient для подключения модуля к концентратору IoT Edge, работающему на устройстве, аналогично тому, как экземпляры DeviceClient подключают устройства Интернета вещей к IoT Hub. Дополнительные сведения о классе ModuleClient и его методах связи см. в справочнике по API для предпочитаемого языка SDK: C#C, Python, Java или Node.js.
Примитивы IoT Hub
IoT Hub видит экземпляр модуля аналогично устройству. Экземпляр модуля может:
- Отправка сообщений из устройства в облако.
- Получение прямых методов, предназначенных специально для его идентичности.
- У вас есть двойник модуля, который отличается и изолирован от двойника устройства и других двойников модуля этого устройства.
Сейчас модули не могут получать сообщения из облака на устройство или использовать функцию передачи файлов.
При разработке модуля вы можете подключиться к концентратору IoT Edge и использовать основные функции IoT Hub, как и при работе с приложением устройства. Единственное различие между модулями IoT Edge и приложениями устройств Интернета вещей заключается в том, что с модулями необходимо ссылаться на идентификатор модуля вместо идентификатора устройства.
Отправка сообщений с устройства в облако
Модуль IoT Edge может отправлять сообщения в облако через центр IoT Edge, который выступает в качестве локального брокера и распространяет сообщения в облако. Чтобы обеспечить сложную обработку сообщений из устройства в облако, модуль IoT Edge может перехватывать и обрабатывать сообщения, отправленные другими модулями или устройствами в локальный IoT Edge концентратор. Затем модуль IoT Edge отправляет новые сообщения с обработанными данными. Таким образом можно создать цепочки модулей IoT Edge для создания локальных конвейеров обработки.
Для отправки сообщений телеметрии устройства в облако с помощью маршрутов:
- Используйте класс
ModuleClientкласса Azure IoT SDK. Каждый модуль имеет конечные точки ввода и вывода . - Чтобы отправить сообщения на выходную конечную точку модуля, используйте метод отправки сообщений из
ModuleClientкласса. - Чтобы отправить эту выходную конечную точку в IoT Hub, настройте маршрут в модуле
edgeHubустройства.
Обработка сообщений с помощью маршрутов:
- Настройте маршрут для отправки сообщений из другой конечной точки (модуля или устройства) в входную конечную точку модуля.
- Слушайте сообщения на входной конечной точке вашего модуля. Каждый раз при возврате нового сообщения Azure IoT SDK активирует функцию обратного вызова.
- Обработайте сообщение с помощью этой функции обратного вызова и (необязательно) отправьте новые сообщения в очередь конечной точки модуля.
Примечание.
Дополнительные сведения о объявлении маршрута см. в статье Learn, как развертывать модули и устанавливать маршруты в IoT Edge.
Двойники
Twins являются одним из примитивов, предоставляемых IoT Hub. Двойники — это документы JSON, которые хранят сведения о состоянии, включая метаданные, конфигурацию и условия. У каждого модуля или устройства есть собственный двойник.
- Чтобы получить двойник модуля с помощью метода Azure IoT SDK вызовите метод
ModuleClient.getTwin. - Чтобы получить патч двойника модуля с помощью Azure IoT SDK, реализуйте функцию обратного вызова и зарегистрируйте ее с помощью метода
ModuleClient.moduleTwinCallback, чтобы ваша функция обратного вызова активировалась каждый раз, когда приходит патч двойника.
Получить прямые методы
Чтобы получить прямой метод с помощью метода Azure IoT SDK, реализуйте функцию обратного вызова и зарегистрируйте ее с помощью метода ModuleClient.methodCallback, чтобы функция обратного вызова активируется при каждом запуске прямого метода.
Поддерживаемые языки и архитектуры
IoT Edge поддерживает несколько операционных систем, архитектур устройств и языков разработки, чтобы создать сценарий, соответствующий вашим потребностям. В этом разделе описаны варианты разработки пользовательских модулей IoT Edge. Дополнительные сведения о поддержке и требованиях к инструментам для каждого языка можно узнать в статье Подготовка среды разработки и тестирования для IoT Edge.
Линукс
Для всех языков в следующей таблице IoT Edge поддерживает разработку для AMD64 и большинства контейнеров Linux ARM64. Он также поддерживает контейнеры Debian 11 ARM32.
| Язык разработки | Средства разработки |
|---|---|
| С | Visual Studio Code Visual Studio 2019/2022 |
| C# | Visual Studio Code Visual Studio 2019/2022 |
| Java | Visual Studio Code |
| Node.js | Visual Studio Code |
| Python | Visual Studio Code |
Примечание.
Для кроссплатформенной компиляции, например компиляции модуля ARM32 IoT Edge на компьютере разработки AMD64, необходимо настроить компьютер разработки для компиляции кода на целевой архитектуре устройства, соответствующей модулю IoT Edge. Дополнительные сведения об архитектуре целевых устройств см. в разделе Tutorial: разработка модулей Azure IoT Edge с помощью Visual Studio Code.
Windows
Корпорация Майкрософт больше не поддерживает контейнеры Windows. IoT Edge для Linux на Windows — рекомендуемый способ запуска IoT Edge на устройствах Windows.
Безопасность модуля
Разработка модулей с учетом безопасности. Дополнительные сведения о защите модулей см. в разделе "Безопасность подсистемы Docker".
Чтобы повысить безопасность модуля, IoT Edge отключает некоторые функции контейнера по умолчанию. При необходимости можно переопределить значения по умолчанию, чтобы предоставить привилегированные возможности модулям.
Разрешить повышенные разрешения Docker
В файле конфигурации на устройстве IoT Edge параметр с именем allow_elevated_docker_permissions управляет повышенными разрешениями Docker. Если установлено значение
Примечание.
В настоящее время этот флаг имеет значение true по умолчанию, которое предоставляет привилегированные разрешения для развертываний. Задайте для этого флага значение false , чтобы повысить безопасность устройства.
Включение CAP_CHOWN и CAP_SETUID
Возможности Docker CAP_CHOWN и CAP_SETUID отключены по умолчанию. Эти возможности могут выполнять запись в защищенные файлы на хост-устройстве и потенциально получить корневой доступ.
Если вам нужны эти возможности, повторно включите их вручную с помощью CapADD параметров создания контейнера.
Следующие шаги
- Подготовьте вашу среду разработки и тестирования для IoT Edge
- Tutorial: разработка модулей Azure IoT Edge с помощью Visual Studio Code
- Отладка модулей Azure IoT Edge с помощью Visual Studio Code
- пакеты SDK Azure IoT Hub