El SDK de dispositivo Azure IoT Hub permite que las aplicaciones escritas en C99 o posterior o C++ se comuniquen fácilmente con Azure IoT Hub, Azure IoT Central y Azure IoT Device Provisioning. Este repositorio incluye el código fuente de las bibliotecas, instrucciones de configuración y ejemplos que demuestran escenarios de uso.
Para dispositivos con limitaciones , donde la memoria se mide en kilobytes y no en megabytes, hay disponibles opciones de SDK aún más livianas. Consulte Otros SDK de Azure IoT para obtener más información.
Se recomienda a todos los usuarios del SDK de Azure IoT que estén al tanto de los próximos cambios en los certificados TLS para Azure IoT Hub y el servicio de aprovisionamiento de dispositivos que afectarán la capacidad del SDK para conectarse a estos servicios. En octubre de 2022, ambos servicios migrarán de la actual raíz de CA Baltimore CyberTrust a la raíz de CA DigiCert Global G2. Habrá un período de transición previo en el que sus dispositivos IoT deberán tener los certificados públicos Baltimore y Digicert, que pueden estar codificados en su aplicación o flasheados en su módulo WiFi para evitar problemas de conectividad.
Los dispositivos que solo tengan el certificado público de Baltimore perderán la capacidad de conectarse a Azure IoT Hub y al servicio de aprovisionamiento de dispositivos en octubre de 2022.
Para prepararse para este cambio, asegúrese de que la pila TLS de su dispositivo tenga configurados estos dos certificados públicos de raíz de confianza.
Para obtener una explicación más detallada de por qué los servicios de IoT hacen esto, consulte este artículo.
Tenga en cuenta que, para escenarios de dispositivos restringidos como mbed y Arduino, existen opciones de SDK mejores y más livianas disponibles. Consulte Otros SDK de Azure IoT para obtener más información.
La forma más sencilla de empezar a utilizar los SDK de Azure IoT en plataformas compatibles es usar los siguientes paquetes y bibliotecas:
Arduino: biblioteca SDK de dispositivo en el IDE de Arduino
Windows: SDK del dispositivo en Vcpkg
iOS: SDK del dispositivo en CocoaPod
Limitaciones de iOS
Para obtener una experiencia de iOS más completa, incluidas las dos funciones que faltan anteriormente, consulte nuestra biblioteca Swift nativa de muestra creada sobre el SDK de C integrado.
Para otras plataformas, incluido Linux, es necesario clonar y compilar el SDK directamente. También puedes crearlo directamente para las plataformas anteriores.
Hay muchos ejemplos disponibles para el SDK. Puede encontrar más información aquí.
La documentación de referencia de API para los SDK de C se puede encontrar aquí.
Para buscar SDK de Azure IoT en otros idiomas, consulte la guía aquí.
Para obtener más información sobre cómo crear aplicaciones de Azure IoT, puede visitar el Centro de desarrollo de Azure IoT.
IoT Hub admite varios protocolos para que el dispositivo se conecte: MQTT, AMQP y HTTPS. MQTT y AMQP pueden ejecutarse opcionalmente sobre WebSockets. El SDK de Device Client permite elegir el protocolo en el momento de la creación de la conexión.
El SDK de cliente de dispositivo/módulo permite opcionalmente la creación de dispositivos IoT Plug and Play.
Si no está seguro de qué protocolo utilizar, debe utilizar MQTT o MQTT-WS. MQTT requiere considerablemente menos recursos que AMQP y admite muchas más funciones de IoT Hub que HTTPS. No se garantiza que AMQP ni HTTPS tengan implementaciones de Device Client SDK para nuevas funciones en el futuro, como Azure IoT Plug and Play.
✔️ función disponible ✖️ función planificada pero no compatible ➖ no hay soporte planificado
Características | mqtt | mqtt-ws | amqp | amqp-ws | https | Descripción |
---|---|---|---|---|---|---|
Autenticación | ✔️ | ✔️* | ✔️ | ✔️* | ✔️* | Conecte su dispositivo a IoT Hub de forma segura con autenticación compatible, incluida clave privada, SASToken, X-509 autofirmado y autoridad de certificación (CA) firmada. *IoT Hub solo admite X-509 CA firmado sobre AMQP y MQTT por el momento. |
Enviar mensaje del dispositivo a la nube | ✔️* | ✔️* | ✔️* | ✔️* | ✔️* | Envíe mensajes del dispositivo a la nube (máximo 256 KB) a IoT Hub con la opción de agregar propiedades personalizadas. Por el momento, IoT Hub solo admite el envío por lotes a través de AMQP y HTTPS. Este SDK admite el envío por lotes a través de HTTP. * El envío por lotes a través de AMQP y AMQP-WS y la adición de propiedades del sistema en mensajes D2C están en curso. |
Reciba mensajes de la nube al dispositivo | ✔️* | ✔️* | ✔️ | ✔️ | ✔️ | Reciba mensajes de la nube al dispositivo y lea las propiedades personalizadas y del sistema asociadas desde IoT Hub, con la opción de completar/rechazar/abandonar mensajes C2D. *IoT Hub admite la opción de completar/rechazar/abandonar mensajes C2D a través de HTTPS y AMQP solo por el momento. |
Dispositivos gemelos | ✔️* | ✔️* | ✔️* | ✔️* | ➖ | IoT Hub conserva un dispositivo gemelo para cada dispositivo que se conecta a IoT Hub. El dispositivo puede realizar operaciones como obtener etiquetas gemelas y suscribirse a las propiedades deseadas. *El envío de la versión de las propiedades reportadas y la versión de las propiedades deseadas están en progreso. |
Métodos directos | ✔️ | ✔️ | ✔️ | ✔️ | ➖ | IoT Hub le brinda la posibilidad de invocar métodos directos en dispositivos desde la nube. El SDK admite controladores para operaciones genéricas y específicas de métodos. |
Subir archivo a Blob | ➖ | ➖ | ➖ | ➖ | ✔️ | Un dispositivo puede iniciar la carga de un archivo y notifica a IoT Hub cuando se completa la carga. La carga de archivos requiere una conexión HTTPS, pero se puede iniciar desde el cliente utilizando cualquier protocolo para otras operaciones. |
Estado de conexión e informes de errores | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | Informe de errores para el código de error compatible con IoT Hub. *Este SDK admite informes de errores en la autenticación y Dispositivo no encontrado. |
Reintentar políticas | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | La política de reintento para mensajes fallidos del dispositivo a la nube tiene dos opciones: sin intento, retroceso exponencial con fluctuación (predeterminado). *La política de reintento personalizada está en curso. |
Dispositivos multiplexados sobre una sola conexión | ➖ | ➖ | ✔️ | ✔️ | ✔️ | Hay más limitaciones para la multiplexación que las que se reflejan en esta tabla. Consulte este documento para obtener más información. |
Agrupación de conexiones: especificación del número de conexiones | ➖ | ➖ | ✖️ | ✖️ | ✖️ | |
Compatibilidad con Azure IoT Plug and Play | ✔️ | ✔️ | ➖ | ➖ | ➖ | Capacidad para crear dispositivos Azure IoT Plug and Play. |
Este SDK también contiene opciones que puede configurar y funciones específicas de la plataforma. Puede encontrar una lista detallada en este documento.
Este repositorio contiene el SDK del cliente de aprovisionamiento para el servicio de aprovisionamiento de dispositivos.
✔️ función disponible ✖️ función planificada pero no compatible ➖ no hay soporte planificado
Características | mqtt | mqtt-ws | amqp | amqp-ws | https | Descripción |
---|---|---|---|---|---|---|
Inscripción individual de TPM | ➖ | ➖ | Anunciamos la desactivación de la compatibilidad con la biblioteca utpm-c y la compatibilidad con la autenticación DPS-TPM dentro del C-SDK de Azure IoT. A partir de mayo de 2023, Microsoft no brindará soporte para esta biblioteca. Las aplicaciones existentes que utilizan esta biblioteca seguirán funcionando tal como están. Recomendamos encarecidamente cambiar a la autenticación DPS-X509 utilizando el motor OpenSSL tpm2tss. La conexión de su dispositivo al Servicio de aprovisionamiento de dispositivos mediante inscripción individual mediante el Módulo de plataforma segura seguirá funcionando tal como está. Este inicio rápido revisa cómo crear un dispositivo simulado para la inscripción individual con TPM. Actualmente, el servicio de aprovisionamiento de dispositivos no admite TPM sobre MQTT. | |||
X.509 Inscripción Individual | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Este SDK admite la conexión de su dispositivo al Servicio de aprovisionamiento de dispositivos mediante inscripción individual utilizando el certificado hoja X.509. Este inicio rápido revisa cómo crear un dispositivo simulado para inscripción individual con X.509. |
Grupo de inscripción X.509 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Este SDK admite la conexión de su dispositivo al Servicio de aprovisionamiento de dispositivos a través del grupo de inscripción utilizando el certificado raíz X.509. |
El SDK del dispositivo IoT Hub para C se puede utilizar con una amplia gama de dispositivos y plataformas de sistema operativo.
Los requisitos mínimos son que la plataforma del dispositivo admita lo siguiente:
Los detalles de soporte de la plataforma se pueden encontrar en este documento. Puede encontrar una lista exhaustiva de las plataformas de sistema operativo con las que se han probado los distintos SDK en el catálogo de dispositivos certificados de Azure para IoT. Tenga en cuenta que es posible que aún pueda utilizar los SDK en sistemas operativos y plataformas de hardware que no figuran en esta página: todos los SDK son de código abierto y están diseñados para ser portátiles. Si tiene sugerencias, comentarios o problemas que informar, consulte las secciones Contribución y Soporte a continuación.
Los SDK y bibliotecas de C:
En el repositorio encontrará instrucciones y herramientas de compilación para compilar y ejecutar el SDK del cliente de dispositivo para C en Linux, Windows y plataformas de microcontrolador (consulte los enlaces anteriores para obtener más información sobre cómo compilar el cliente de dispositivo para C).
Si está pensando en migrar el SDK del cliente del dispositivo para C a una nueva plataforma, consulte el documento de la guía de migración.
MBED OS
Consulte también Carpetas obsoletas a continuación para obtener otras notas relevantes.
Si encuentra algún error, tiene sugerencias para nuevas funciones o si desea convertirse en un colaborador activo de este proyecto, siga las instrucciones proporcionadas en las pautas de contribución.
/c-utility, /deps, /umqtt, /uamqp
-
Estos son submódulos de git que contienen código, como adaptadores e implementaciones de protocolos, compartidos con otros proyectos.
/build, /build_all
Cree y registre carpetas relacionadas con la puerta.
/certs
Contiene los certificados necesarios para comunicarse con Azure IoT Hub.
/doc
Esta carpeta contiene guías de desarrollo de aplicaciones e instrucciones de configuración del dispositivo.
/iothub_client
Contiene componentes de cliente de Azure IoT Hub que proporcionan las capacidades de mensajería sin formato de la biblioteca. Consulte la documentación y los ejemplos de la API para obtener información sobre cómo utilizarla.
/provisioning_client
Esta carpeta contiene la biblioteca del cliente para el cliente de aprovisionamiento de dispositivos.
/samples
Contiene ejemplos que demuestran escenarios E2E más complejos utilizando SDK.
/testtools
Contiene herramientas que se utilizan para probar las bibliotecas.
/tools
Herramientas varias.
Las siguientes carpetas están en desuso.
/iothub_service_client
Contiene bibliotecas que permiten interacciones con el servicio IoT Hub para realizar operaciones como enviar mensajes a dispositivos y administrar el registro de identidad del dispositivo.
/provisioning_service_client
Contiene bibliotecas que permiten interacciones con el servicio Device Proviosining para realizar operaciones como la configuración de políticas en torno a las inscripciones.
/serializer
Contiene bibliotecas que proporcionan capacidades de modelado y serialización JSON además de la biblioteca de mensajería sin formato.
El SDK de C ofrece versiones de nuevas funciones, correcciones de errores críticos y soporte a largo plazo (LTS). Las correcciones de errores generales no recibirán una versión separada, sino que estarán incluidas en la versión LTS. El control de versiones sigue el control de versiones semántico, xyz
o major.minor.patch
. Cada vez que se actualice la versión, se etiquetará como xyz
.
Se publicarán nuevas funciones y correcciones de errores críticos (incluidas actualizaciones de seguridad) en la rama principal. Estos lanzamientos se etiquetarán con la fecha con el formato yyyy-mm-dd
. Una versión de función mejorará la versión minor
y restablecerá la versión patch
a 0. Una corrección de error crítico solo mejorará la versión patch
.
Las nuevas versiones de LTS se derivan de main y se etiquetarán como LTS_
. Una nueva versión de LTS heredará la versión de la rama principal en el momento del lanzamiento. Las sucursales de LTS se denominan lts_mm_yyyy
para el mes y año en que se creó la sucursal.
Se producirá una versión LTS actualizada cuando se transfiera una corrección de error crítico (incluidas actualizaciones de seguridad) desde la rama principal. Estas versiones actualizadas se etiquetarán de la misma manera, excepto por un Ref## modificado, por ejemplo, LTS_
. La versión patch
también será modificada. No se trasladarán nuevas funciones ni correcciones de errores generales a una actualización LTS.
A continuación se muestra una tabla que muestra la asignación de las ramas LTS a los paquetes publicados.
Paquete | Sucursal GitHub | Etiqueta LTS | Fecha de inicio de LTS | Fecha de finalización del mantenimiento |
---|---|---|---|---|
vcpkg: 2024-08-12 | lts_08_2024 | LTS_08_2024 | 2024-08-12 | 2025-08-12 |
vcpkg: 2024-03-04 | lts_03_2024 | LTS_03_2024 | 2024-03-04 | 2025-03-04 |
La 'Fecha de finalización del mantenimiento' se refiere al final de la vida útil de la versión relacionada.
A continuación se muestra un ejemplo hipotético de control de versiones y etiquetado para C SDK. Las versiones minor
se distinguen por el color.
1.9.0
y la versión está etiquetada como 2020-02-23
.LTS_07_2020
. La rama principal llega a 1.10.0 y está etiquetada como 1.10.0
.2020-08-02
.1.10.1
y la versión está etiquetada como 2020-09-28
. La corrección de errores críticos se traslada a la versión lts LTS_07_2020
(y a cualquier otra rama LTS existente) creando una rama con el nombre lts_07_2020_ref02
, su versión pasa a 1.9.1 y está etiquetada como 1.9.1
y LTS_07_2020_Ref02
. Cualquier submódulo que formara parte de la corrección de errores críticos se etiquetará con LTS_07_2020_Ref02
.1.11.0
y la versión está etiquetada como 2020-12-14
.Este proyecto ha adoptado el Código de conducta de código abierto de Microsoft. Para obtener más información, consulte las preguntas frecuentes sobre el Código de conducta o comuníquese con [email protected] si tiene alguna pregunta o comentario adicional.
Microsoft recopila información de rendimiento y uso que puede usarse para proporcionar y mejorar los productos y servicios de Microsoft y mejorar su experiencia. Para obtener más información, revise la declaración de privacidad.