Пакет SDK для устройств Azure IOT Hub позволяет приложениям, написанным на C99 или более поздней версии, или C++, легко взаимодействовать с Azure IoT Hub, Azure IoT Central и службой подготовки устройств Azure IoT. Этот репозиторий включает исходный код библиотек, инструкции по установке и примеры, демонстрирующие сценарии использования.
Для устройств с ограниченными возможностями , где память измеряется в килобайтах, а не в мегабайтах, доступны еще более легкие варианты SDK. Дополнительные сведения см. в разделе Другие пакеты SDK для Azure IoT.
Всем пользователям Azure IoT SDK рекомендуется знать о предстоящих изменениях сертификата TLS для Azure IoT Hub и службы подготовки устройств, которые повлияют на возможность SDK подключаться к этим службам. В октябре 2022 года обе службы будут перенесены из текущего корня центра сертификации Baltimore CyberTrust в корень центра сертификации DigiCert Global G2. Заранее будет переходный период, когда ваши устройства IoT должны иметь общедоступные сертификаты Baltimore и Digicert, которые могут быть жестко закодированы в их приложении или записаны на ваш модуль Wi-Fi, чтобы предотвратить проблемы с подключением.
Устройства только с общедоступным сертификатом Балтимора потеряют возможность подключения к Azure IoT Hub и службе подготовки устройств в октябре 2022 года.
Чтобы подготовиться к этому изменению, убедитесь, что в стеке TLS вашего устройства настроены оба общедоступных корневых сертификата доверия.
Более подробное объяснение того, почему службы Интернета вещей делают это, можно найти в этой статье.
Обратите внимание: для сценариев с ограниченными устройствами, таких как mbed и Arduino, доступны лучшие и более легкие варианты SDK. Дополнительные сведения см. в разделе Другие пакеты SDK для Azure IoT.
Самый простой способ начать работу с пакетами SDK Azure IoT на поддерживаемых платформах — использовать следующие пакеты и библиотеки:
Arduino: библиотека SDK устройства в Arduino IDE.
Windows: SDK устройства на Vcpkg
iOS: SDK устройства на CocoaPod
Ограничения iOS
Чтобы получить более полную информацию об iOS, включая две недостающие функции, описанные выше, ознакомьтесь с нашим примером собственной библиотеки Swift, созданной на основе Embedded C SDK.
Для других платформ, включая Linux, вам необходимо клонировать и собрать SDK напрямую. Вы также можете создать его непосредственно для вышеперечисленных платформ.
Для SDK доступно множество образцов. Более подробную информацию можно найти здесь.
Справочную документацию по API для C SDK можно найти здесь.
Чтобы найти пакеты SDK Azure IoT на других языках, обратитесь к руководству здесь.
Чтобы узнать больше о создании приложений Azure IoT, посетите Центр разработки Azure IoT.
Центр Интернета вещей поддерживает несколько протоколов подключения устройства: MQTT, AMQP и HTTPS. MQTT и AMQP могут опционально работать через WebSockets. SDK Device Client позволяет выбирать протокол во время создания соединения.
Клиентский SDK устройства/модуля дополнительно позволяет создавать устройства IoT Plug and Play.
Если вы не уверены, какой протокол использовать, вам следует использовать MQTT или MQTT-WS. MQTT требует значительно меньше ресурсов, чем AMQP, и поддерживает значительно больше функций IoT Hub, чем HTTPS. Ни AMQP, ни HTTPS не гарантируют реализации Device Client SDK для новых функций в будущем, таких как Azure IoT Plug and Play.
✔️ функция доступна ✖️ функция запланирована, но не поддерживается ➖ поддержка не запланирована
Функции | mqtt | mqtt-ws | amqp | amqp-ws | https | Описание |
---|---|---|---|---|---|---|
Аутентификация | ✔️ | ✔️* | ✔️ | ✔️* | ✔️* | Надежно подключите свое устройство к Центру Интернета вещей с помощью поддерживаемой аутентификации, включая закрытый ключ, SASToken, самоподписанный X-509 и подписанный центром сертификации (CA). *В настоящее время Центр Интернета вещей поддерживает только X-509 CA, подписанный через AMQP и MQTT. |
Отправить сообщение с устройства в облако | ✔️* | ✔️* | ✔️* | ✔️* | ✔️* | Отправляйте сообщения с устройства в облако (максимум 256 КБ) в Центр Интернета вещей с возможностью добавления настраиваемых свойств. Центр Интернета вещей на данный момент поддерживает только пакетную отправку через AMQP и HTTPS. Этот SDK поддерживает пакетную отправку по HTTP. * Пакетная отправка через AMQP и AMQP-WS, а также добавление системных свойств в сообщения D2C находятся в процессе. |
Получайте сообщения из облака на устройство | ✔️* | ✔️* | ✔️ | ✔️ | ✔️ | Получайте сообщения из облака на устройство и читайте связанные пользовательские и системные свойства из Центра Интернета вещей с возможностью завершить/отклонить/отказаться от сообщений C2D. *Центр Интернета вещей поддерживает возможность завершать/отклонять/отменять сообщения C2D через HTTPS и AMQP только на данный момент. |
Двойники устройств | ✔️* | ✔️* | ✔️* | ✔️* | ➖ | Центр Интернета вещей сохраняет двойник устройства для каждого устройства, подключаемого к Центру Интернета вещей. Устройство может выполнять такие операции, как получение двойных тегов, подписка на нужные свойства. *Отправка сообщаемой версии свойств и желаемой версии свойств находится в процессе. |
Прямые методы | ✔️ | ✔️ | ✔️ | ✔️ | ➖ | Центр Интернета вещей дает вам возможность вызывать прямые методы на устройствах из облака. SDK поддерживает обработчик для конкретных и общих операций метода. |
Загрузить файл в Blob | ➖ | ➖ | ➖ | ➖ | ✔️ | Устройство может инициировать отправку файла и уведомлять Центр Интернета вещей о завершении загрузки. Загрузка файла требует подключения HTTPS, но может быть инициирована клиентом с использованием любого протокола для других операций. |
Отчеты о состоянии соединения и ошибках | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | Отчеты об ошибках для кода ошибки, поддерживаемого Центром Интернета вещей. *Этот SDK поддерживает отчеты об ошибках при аутентификации и «Устройство не найдено». |
Политики повтора | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | Политика повтора для неудачных сообщений устройства в облако имеет два варианта: без попыток, экспоненциальная задержка с дрожанием (по умолчанию). *Пользовательская политика повторных попыток находится в стадии разработки. |
Устройства, мультиплексирующиеся по одному соединению | ➖ | ➖ | ✔️ | ✔️ | ✔️ | Существует больше ограничений для мультиплексирования, чем указано в этой таблице. Дополнительную информацию см. в этом документе. |
Пул соединений — указание количества соединений | ➖ | ➖ | ✖️ | ✖️ | ✖️ | |
Поддержка Azure IoT Plug and Play | ✔️ | ✔️ | ➖ | ➖ | ➖ | Возможность создавать устройства Azure IoT Plug and Play. |
Этот SDK также содержит параметры, которые вы можете установить, и функции, специфичные для платформы. Подробный список вы можете найти в этом документе.
Этот репозиторий содержит клиентский SDK подготовки для службы подготовки устройств.
✔️ функция доступна ✖️ функция запланирована, но не поддерживается ➖ поддержка не запланирована
Функции | mqtt | mqtt-ws | amqp | amqp-ws | https | Описание |
---|---|---|---|---|---|---|
Индивидуальная регистрация TPM | ➖ | ➖ | Мы объявляем об прекращении поддержки библиотеки utpm-c и поддержки аутентификации DPS-TPM в Azure IoT C-SDK. Начиная с мая 2023 г. Microsoft не будет предоставлять поддержку этой библиотеки. Существующие приложения, использующие эту библиотеку, продолжат работать как есть. Мы настоятельно рекомендуем переключиться на аутентификацию DPS-X509 с использованием механизма OpenSSL tpm2tss. Подключение вашего устройства к Службе подготовки устройств посредством индивидуальной регистрации с помощью модуля Trusted Platform будет продолжать работать как есть. В этом кратком руководстве рассказывается, как создать имитируемое устройство для индивидуальной регистрации с помощью TPM. TPM через MQTT в настоящее время не поддерживается Службой подготовки устройств. | |||
X.509 Индивидуальная регистрация | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Этот SDK поддерживает подключение вашего устройства к Службе подготовки устройств посредством индивидуальной регистрации с использованием листового сертификата X.509. В этом кратком руководстве рассматривается создание имитируемого устройства для индивидуальной регистрации с помощью X.509. |
Группа регистрации X.509 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Этот SDK поддерживает подключение вашего устройства к Службе подготовки устройств через группу регистрации с использованием корневого сертификата X.509. |
Пакет SDK устройства IoT Hub для C можно использовать с широким спектром платформ и устройств ОС.
Минимальные требования заключаются в том, чтобы платформа устройства поддерживала следующее:
Подробности поддержки платформы можно найти в этом документе. Исчерпывающий список платформ ОС, на которых были протестированы различные пакеты SDK, можно найти в каталоге устройств Azure Certified for IoT. Обратите внимание, что вы по-прежнему сможете использовать SDK на ОС и аппаратных платформах, которые не указаны на этой странице: все SDK имеют открытый исходный код и предназначены для переносимости. Если у вас есть предложения, отзывы или проблемы, о которых нужно сообщить, обратитесь к разделам «Вклад» и «Поддержка» ниже.
C SDK и библиотеки:
В репозитории вы найдете инструкции и инструменты сборки для компиляции и запуска SDK клиента устройства для C на платформах Linux, Windows и микроконтроллеров (дополнительную информацию о компиляции клиента устройства для C см. по ссылкам выше).
Если вы планируете перенести SDK клиента устройства для C на новую платформу, ознакомьтесь с руководством по портированию.
MBED OS
Другие важные примечания см. также в разделе «Устаревшие папки» ниже.
Если вы столкнулись с какими-либо ошибками, у вас есть предложения по новым функциям или вы хотите стать активным участником этого проекта, следуйте инструкциям, приведенным в правилах участия.
/c-utility, /deps, /umqtt, /uamqp
-
Это подмодули git, которые содержат код, например адаптеры и реализации протоколов, используемый совместно с другими проектами.
/build, /build_all
Создайте и зарегистрируйте папки, связанные с воротами.
/certs
Содержит сертификаты, необходимые для связи с Azure IoT Hub.
/doc
В этой папке содержатся руководства по разработке приложений и инструкции по настройке устройства.
/iothub_client
Содержит клиентские компоненты Azure IoT Hub, которые предоставляют возможности библиотеки по обмену необработанными сообщениями. Обратитесь к документации API и примерам для получения информации о том, как его использовать.
/provisioning_client
Эта папка содержит клиентскую библиотеку для клиента подготовки устройств.
/samples
Содержит примеры, демонстрирующие более сложные сценарии E2E с использованием SDK.
/testtools
Содержит инструменты, используемые при тестировании библиотек.
/tools
Разные инструменты.
Следующие папки устарели.
/iothub_service_client
Содержит библиотеки, которые обеспечивают взаимодействие со службой Центра Интернета вещей для выполнения таких операций, как отправка сообщений на устройства и управление реестром удостоверений устройств.
/provisioning_service_client
Содержит библиотеки, которые позволяют взаимодействовать со службой подготовки устройств для выполнения таких операций, как настройка политики регистрации.
/serializer
Содержит библиотеки, которые обеспечивают возможности моделирования и сериализации JSON поверх библиотеки необработанных сообщений.
C SDK предлагает выпуски новых функций, исправлений критических ошибок и долгосрочную поддержку (LTS). Общие исправления ошибок не будут выделены в отдельный выпуск, а будут включены в выпуск LTS. Управление версиями следует за семантическим управлением версиями, xyz
или major.minor.patch
. При каждом обновлении версии она будет помечена тегом xyz
.
Новые функции и исправления критических ошибок (включая обновления безопасности) будут выпущены в основной ветке. Эти выпуски будут помечены датой в формате yyyy-mm-dd
. При выпуске функции minor
версия будет изменена, а версия patch
сброшена до 0. Исправление критической ошибки приведет к изменению только версии patch
.
Новые выпуски LTS ответвляются от основного и будут иметь тег LTS_
. Новый выпуск LTS унаследует версию основной ветки на момент выпуска. Ветви LTS называются lts_mm_yyyy
в соответствии с месяцем и годом создания ветки.
Обновленный выпуск LTS выйдет, когда исправление критической ошибки (включая обновления безопасности) будет перенесено из основной ветки. Эти обновленные выпуски будут помечены таким же образом, за исключением измененного Ref##, например LTS_
. Версия patch
также будет улучшена. Никакие новые функции и общие исправления ошибок не будут перенесены в обновление LTS.
Ниже приведена таблица, показывающая сопоставление ветвей LTS с выпущенными пакетами.
Упаковка | Филиал GitHub | LTS-тег | Дата начала долгосрочного периода | Дата окончания технического обслуживания |
---|---|---|---|---|
вкпкг: 2024-08-12 | lts_08_2024 | LTS_08_2024 | 2024-08-12 | 2025-08-12 |
вкпкг: 2024-03-04 | lts_03_2024 | LTS_03_2024 | 04.03.2024 | 2025-03-04 |
«Дата окончания обслуживания» означает окончание срока поддержки соответствующей версии.
Ниже приведен гипотетический пример управления версиями и тегами для C SDK. minor
версии отличаются цветом.
1.9.0
и выпуск имеет тег 2020-02-23
.LTS_07_2020
. Основная ветка переходит на версию 1.10.0 и имеет тег 1.10.0
.2020-08-02
.1.10.1
, а выпуск помечен 2020-09-28
Исправление критической ошибки перенесено в выпуск lts LTS_07_2020
(и любую другую существующую ветку LTS) путем создания ветки с именем lts_07_2020_ref02
, ее версия увеличивается до 1.9.1 и имеет теги 1.9.1
и LTS_07_2020_Ref02
. Любые подмодули, которые были частью исправления критической ошибки, будут помечены LTS_07_2020_Ref02
.1.11.0
, а выпуск помечен как 2020-12-14
.В этом проекте принят Кодекс поведения Microsoft с открытым исходным кодом. Для получения дополнительной информации см. Часто задаваемые вопросы о Кодексе поведения или свяжитесь с нами по адресу [email protected], если у вас возникнут дополнительные вопросы или комментарии.
Microsoft собирает информацию о производительности и использовании, которая может использоваться для предоставления и улучшения продуктов и услуг Microsoft, а также для улучшения вашего опыта. Чтобы узнать больше, ознакомьтесь с заявлением о конфиденциальности.