O Azure IOT Hub Device SDK permite que aplicações escritas em C99 ou posterior ou C++ comuniquem facilmente com o Azure IoT Hub, o Azure IoT Central e com o Azure IoT Device Provisioning. Este repositório inclui o código-fonte das bibliotecas, instruções de configuração e exemplos que demonstram cenários de uso.
Para dispositivos restritos , onde a memória é medida em kilobytes e não em megabytes, existem opções de SDK ainda mais leves disponíveis. Consulte Outros SDKs do Azure IoT para saber mais.
Todos os utilizadores do Azure IoT SDK são aconselhados a estar cientes das futuras alterações do certificado TLS para o Azure IoT Hub e o Serviço de Provisionamento de Dispositivos que afetarão a capacidade do SDK de se ligar a estes serviços. Em outubro de 2022, ambos os serviços migrarão da atual raiz da CA Baltimore CyberTrust para a raiz da CA DigiCert Global G2. Haverá um período de transição prévio em que seus dispositivos IoT deverão ter os certificados públicos Baltimore e Digicert, que podem ser codificados em seu aplicativo ou flasheados em seu módulo WiFi para evitar problemas de conectividade.
Os dispositivos apenas com o certificado público de Baltimore perderão a capacidade de ligação ao Azure IoT Hub e ao Serviço de Provisionamento de Dispositivos em outubro de 2022.
Para se preparar para essa mudança, certifique-se de que a pilha TLS do seu dispositivo tenha esses dois certificados de raiz pública de confiança configurados.
Para uma explicação mais detalhada sobre por que os serviços IoT estão fazendo isso, consulte este artigo.
Observe que, para cenários de dispositivos restritos, como mbed e Arduino, existem opções de SDK melhores e mais leves disponíveis. Consulte Outros SDKs do Azure IoT para saber mais.
A maneira mais simples de começar a usar os SDKs do Azure IoT em plataformas suportadas é usar os seguintes pacotes e bibliotecas:
Arduino: biblioteca Device SDK no Arduino IDE
Windows: SDK do dispositivo no Vcpkg
iOS: SDK do dispositivo no CocoaPod
Limitações do iOS
Para uma experiência iOS mais completa, incluindo os dois recursos ausentes acima, consulte nosso exemplo de biblioteca nativa Swift construída sobre o SDK C incorporado.
Para outras plataformas – incluindo Linux – você precisa clonar e construir o SDK diretamente. Você também pode construí-lo diretamente para as plataformas acima.
Existem muitos exemplos disponíveis para o SDK. Mais informações podem ser encontradas aqui.
A documentação de referência da API para os SDKs C pode ser encontrada aqui.
Para encontrar SDKs do Azure IoT em outros idiomas, consulte as orientações aqui.
Para saber mais sobre a criação de aplicativos Azure IoT, visite o Azure IoT Dev Center.
O IoT Hub suporta vários protocolos para o dispositivo se conectar: MQTT, AMQP e HTTPS. MQTT e AMQP podem opcionalmente ser executados em WebSockets. O Device Client SDK permite que o protocolo seja escolhido no momento da criação da conexão.
O SDK do cliente do dispositivo/módulo permite opcionalmente a criação de dispositivos IoT Plug and Play.
Se não tiver certeza de qual protocolo usar, você deve usar MQTT ou MQTT-WS. O MQTT requer consideravelmente menos recursos do que o AMQP e suporta consideravelmente mais funcionalidades do IoT Hub do que o HTTPS. Nem o AMQP nem o HTTPS têm a garantia de implementações do Device Client SDK para novos recursos futuros, como o Azure IoT Plug and Play.
✔️ recurso disponível ✖️ recurso planejado, mas não suportado ➖ nenhum suporte planejado
Características | mqtt | mqtt-ws | amqp | amqp-ws | https | Descrição |
---|---|---|---|---|---|---|
Autenticação | ✔️ | ✔️* | ✔️ | ✔️* | ✔️* | Conecte seu dispositivo ao IoT Hub de forma segura com autenticação compatível, incluindo chave privada, SASToken, X-509 autoassinado e autoridade de certificação (CA) assinada. *O IoT Hub suporta apenas X-509 CA assinado por AMQP e MQTT no momento. |
Enviar mensagem do dispositivo para a nuvem | ✔️* | ✔️* | ✔️* | ✔️* | ✔️* | Envie mensagens do dispositivo para a nuvem (máx. 256 KB) para o IoT Hub com a opção de adicionar propriedades personalizadas. O IoT Hub só suporta envio em lote através de AMQP e HTTPS no momento. Este SDK oferece suporte ao envio em lote por HTTP. * O envio em lote por AMQP e AMQP-WS e a adição de propriedades do sistema em mensagens D2C estão em andamento. |
Receba mensagens da nuvem para o dispositivo | ✔️* | ✔️* | ✔️ | ✔️ | ✔️ | Receba mensagens da nuvem para o dispositivo e leia propriedades personalizadas e do sistema associadas do IoT Hub, com a opção de concluir/rejeitar/abandonar mensagens C2D. *O IoT Hub suporta a opção de completar/rejeitar/abandonar mensagens C2D por HTTPS e AMQP apenas no momento. |
Dispositivos gêmeos | ✔️* | ✔️* | ✔️* | ✔️* | ➖ | O IoT Hub mantém um dispositivo gémeo para cada dispositivo que liga ao IoT Hub. O dispositivo pode realizar operações como obter tags duplas e assinar as propriedades desejadas. *O envio da versão das propriedades reportadas e a versão das propriedades desejadas estão em andamento. |
Métodos Diretos | ✔️ | ✔️ | ✔️ | ✔️ | ➖ | O IoT Hub dá-lhe a capacidade de invocar métodos diretos em dispositivos a partir da nuvem. O SDK oferece suporte ao manipulador para operações genéricas e específicas de métodos. |
Carregar arquivo para blob | ➖ | ➖ | ➖ | ➖ | ✔️ | Um dispositivo pode iniciar um upload de ficheiros e notificar o IoT Hub quando o upload estiver concluído. O upload de arquivos requer conexão HTTPS, mas pode ser iniciado pelo cliente usando qualquer protocolo para outras operações. |
Status da conexão e relatório de erros | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | Relatório de erros para código de erro suportado pelo IoT Hub. *Este SDK suporta relatórios de erros na autenticação e Dispositivo não encontrado. |
Políticas de repetição | ✔️* | ✔️* | ✔️* | ✔️* | ✖️ | A política de nova tentativa para mensagens malsucedidas do dispositivo para a nuvem tem duas opções: sem tentativa, espera exponencial com jitter (padrão). *A política de repetição personalizada está em andamento. |
Multiplexação de dispositivos em conexão única | ➖ | ➖ | ✔️ | ✔️ | ✔️ | Existem mais limitações para a multiplexação do que as capturadas nesta tabela. Consulte este documento para obter mais informações. |
Pool de conexões - especificando o número de conexões | ➖ | ➖ | ✖️ | ✖️ | ✖️ | |
Suporte Plug and Play do Azure IoT | ✔️ | ✔️ | ➖ | ➖ | ➖ | Capacidade de criar dispositivos Plug and Play do Azure IoT. |
Este SDK também contém opções que você pode definir e recursos específicos da plataforma. Você pode encontrar a lista detalhada neste documento.
Este repositório contém SDK do cliente de provisionamento para o serviço de provisionamento de dispositivos.
✔️ recurso disponível ✖️ recurso planejado, mas não suportado ➖ nenhum suporte planejado
Características | mqtt | mqtt-ws | amqp | amqp-ws | https | Descrição |
---|---|---|---|---|---|---|
Inscrição Individual TPM | ➖ | ➖ | Estamos anunciando a descontinuação do suporte à biblioteca utpm-c e do suporte à autenticação DPS-TPM no Azure IoT C-SDK. A partir de maio de 2023, a Microsoft não fornecerá suporte para esta biblioteca. Os aplicativos existentes que usam esta biblioteca continuarão funcionando como estão. Recomendamos fortemente mudar para a autenticação DPS-X509 usando o tpm2tss OpenSSL Engine. Conectar seu dispositivo ao serviço de provisionamento de dispositivos por meio de registro individual usando o Trusted Platform Module continuará funcionando como está. Este guia de início rápido analisa como criar um dispositivo simulado para registro individual com o TPM. Atualmente, o TPM sobre MQTT não é compatível com o serviço de provisionamento de dispositivos. | |||
Inscrição individual X.509 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Este SDK suporta a conexão do seu dispositivo ao Serviço de Provisionamento de Dispositivos por meio de registro individual usando certificado folha X.509. Este início rápido analisa como criar um dispositivo simulado para registro individual com X.509. |
Grupo de inscrição X.509 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Este SDK suporta a conexão do seu dispositivo ao Serviço de Provisionamento de Dispositivos por meio do grupo de registro usando o certificado raiz X.509. |
O SDK do dispositivo IoT Hub para C pode ser usado com uma ampla gama de plataformas e dispositivos de SO.
Os requisitos mínimos são para que a plataforma do dispositivo suporte o seguinte:
Detalhes de suporte da plataforma podem ser encontrados neste documento. Você pode encontrar uma lista exaustiva das plataformas de sistema operacional em que vários SDKs foram testados no catálogo de dispositivos certificados pelo Azure para IoT. Observe que você ainda poderá usar os SDKs em sistemas operacionais e plataformas de hardware que não estão listados nesta página: todos os SDKs são de código aberto e projetados para serem portáteis. Se você tiver sugestões, comentários ou problemas a relatar, consulte as seções Contribuição e Suporte abaixo.
Os SDKs e bibliotecas C:
No repositório você encontrará instruções e ferramentas de construção para compilar e executar o SDK do cliente do dispositivo para C em plataformas Linux, Windows e microcontroladores (consulte os links acima para obter mais informações sobre como compilar o cliente do dispositivo para C).
Se você estiver pensando em migrar o SDK do cliente do dispositivo para C para uma nova plataforma, consulte o documento do guia de portabilidade.
MBED OS
Consulte também Pastas obsoletas abaixo para outras notas relevantes.
Se você encontrar algum bug, tiver sugestões para novos recursos ou se quiser se tornar um contribuidor ativo deste projeto, siga as instruções fornecidas nas diretrizes de contribuição.
/c-utility, /deps, /umqtt, /uamqp
-
Estes são submódulos git que contêm código, como adaptadores e implementações de protocolo, compartilhados com outros projetos.
/build, /build_all
Crie e faça check-in de pastas relacionadas ao portão.
/certs
Contém certificados necessários para comunicar com o Azure IoT Hub.
/doc
Esta pasta contém guias de desenvolvimento de aplicativos e instruções de configuração de dispositivos.
/iothub_client
Contém componentes do cliente Azure IoT Hub que fornecem as capacidades de mensagens brutas da biblioteca. Consulte a documentação e os exemplos da API para obter informações sobre como usá-la.
/provisioning_client
Esta pasta contém a biblioteca cliente para o cliente de provisionamento de dispositivos.
/samples
Contém exemplos que demonstram cenários E2E mais complexos usando SDK.
/testtools
Contém ferramentas que são usadas para testar as bibliotecas.
/tools
Ferramentas diversas.
As seguintes pastas estão obsoletas.
/iothub_service_client
Contém bibliotecas que permitem interações com o serviço IoT Hub para realizar operações como o envio de mensagens para dispositivos e a gestão do registo de identidade do dispositivo.
/provisioning_service_client
Contém bibliotecas que permitem interações com o serviço de provisionamento de dispositivos para executar operações como a definição de políticas em torno dos registros.
/serializer
Contém bibliotecas que fornecem recursos de modelagem e serialização JSON além da biblioteca de mensagens brutas.
O C SDK oferece lançamentos para novos recursos, correções de bugs críticos e suporte de longo prazo (LTS). As correções gerais de bugs não receberão uma versão separada, mas estarão contidas na versão LTS. O versionamento segue o versionamento semântico, xyz
ou major.minor.patch
. Sempre que a versão for atualizada, ela será marcada como xyz
.
Novos recursos e correções críticas de bugs (incluindo atualizações de segurança) serão lançados na filial principal. Esses lançamentos serão marcados usando a data formatada yyyy-mm-dd
. Um lançamento de recurso irá eliminar a versão minor
e redefinir a versão patch
para 0. Uma correção de bug crítica irá alterar apenas a versão patch
.
Novos lançamentos LTS ramificam-se de main e serão marcados como LTS_
. Uma nova versão LTS herdará a versão da ramificação principal no momento do lançamento. As filiais LTS são nomeadas lts_mm_yyyy
para o mês e ano em que a filial foi criada.
Uma versão LTS atualizada ocorrerá quando uma correção de bug crítica (incluindo atualizações de segurança) for transferida da ramificação principal. Essas versões atualizadas serão marcadas da mesma maneira, exceto por uma Ref## alterada, por exemplo, LTS_
. A versão patch
também será alterada. Nenhum novo recurso e nenhuma correção geral de bugs serão portados para uma atualização LTS.
Abaixo está uma tabela que mostra o mapeamento das ramificações LTS para os pacotes lançados.
Pacote | Filial GitHub | Etiqueta LTS | Data de início do LTS | Data de término da manutenção |
---|---|---|---|---|
vcpkg: 12/08/2024 | lts_08_2024 | LTS_08_2024 | 12/08/2024 | 12/08/2025 |
vcpkg: 04/03/2024 | lts_03_2024 | LTS_03_2024 | 04/03/2024 | 04/03/2025 |
'Data de término da manutenção' refere-se ao fim da vida útil da versão relacionada.
Abaixo está um exemplo hipotético de controle de versão e marcação para o C SDK. as versões minor
são diferenciadas pela cor.
1.9.0
e o lançamento é marcado como 2020-02-23
.LTS_07_2020
. O branch principal chega a 1.10.0 e é marcado como 1.10.0
.2020-08-02
.1.10.1
e o lançamento é marcado como 2020-09-28
. A correção de bug crítica é portada para a versão lts LTS_07_2020
(e qualquer outra ramificação LTS existente) criando uma ramificação com o nome lts_07_2020_ref02
, sua versão aumenta para 1.9.1 e é marcada como 1.9.1
e LTS_07_2020_Ref02
. Quaisquer submódulos que fizeram parte da correção de bug crítica serão marcados com LTS_07_2020_Ref02
.1.11.0
e o lançamento é marcado como 2020-12-14
.Este projeto adotou o Código de Conduta de Código Aberto da Microsoft. Para obter mais informações, consulte as Perguntas frequentes sobre o Código de Conduta ou entre em contato com [email protected] com perguntas ou comentários adicionais.
A Microsoft coleta informações de desempenho e uso que podem ser usadas para fornecer e melhorar os produtos e serviços da Microsoft e aprimorar sua experiência. Para saber mais, revise a declaração de privacidade.