Gestão automática de módulos e dispositivos IoT com a CLI do Azure
O gerenciamento automático de dispositivos no Hub IoT do Azure automatiza muitas das tarefas repetitivas e complexas do gerenciamento de grandes frotas de dispositivos. Com o gerenciamento automático de dispositivos, você pode direcionar um conjunto de dispositivos com base em suas propriedades, definir uma configuração desejada e, em seguida, permitir que o Hub IoT atualize os dispositivos quando eles entrarem no escopo. Essa atualização é feita usando uma configuração automática de dispositivo ou configuração automática de módulo, que permite resumir a conclusão e a conformidade, lidar com mesclagens e conflitos e implantar configurações em uma abordagem em fases.
Nota
Os recursos descritos neste artigo estão disponíveis somente na camada padrão do Hub IoT. Para obter mais informações sobre as camadas básica e padrão/gratuita do Hub IoT, consulte Escolha a camada certa do Hub IoT para sua solução.
O gerenciamento automático de dispositivos funciona atualizando um conjunto de gêmeos de dispositivo ou gêmeos de módulo com propriedades desejadas e relatando um resumo baseado em propriedades relatadas por gêmeos. Ele introduz uma nova classe e documento JSON chamado uma configuração que tem três partes:
A condição de destino define o escopo dos gêmeos de dispositivo ou gêmeos de módulo a serem atualizados. A condição de destino é especificada como uma consulta em tags gêmeas de dispositivo e/ou propriedades relatadas.
O conteúdo de destino define as propriedades desejadas a serem adicionadas ou atualizadas nos gêmeos de dispositivo ou de módulo de destino. O conteúdo inclui um caminho para a seção de propriedades desejadas a serem alteradas.
As métricas definem as contagens de resumo de vários estados de configuração, como Sucesso, Em Andamento e Erro. As métricas personalizadas são especificadas como consultas em propriedades geminadas relatadas. As métricas do sistema são as métricas padrão que medem o status de atualização de gêmeos, como o número de gêmeos que são direcionados e o número de gêmeos que foram atualizados com êxito.
As configurações automáticas são executadas pela primeira vez logo após a configuração ser criada e, em seguida, em intervalos de cinco minutos. As consultas de métricas são executadas sempre que a configuração automática é executada. Um máximo de 100 configurações automáticas é suportado em hubs IoT de camada padrão; dez em hubs IoT de nível gratuito. Os limites de limitação também se aplicam. Para saber mais, consulte Cotas e limitação.
Pré-requisitos da CLI
Um hub IoT em sua assinatura do Azure. Se você ainda não tiver um hub, siga as etapas em Criar um hub IoT.
CLI do Azure em seu ambiente. No mínimo, sua versão da CLI do Azure deve ser 2.0.70 ou superior. Utilize
az –-version
para validar. Esta versão suporta comandos de extensão az e apresenta a arquitetura de comandos Knack.A extensão IoT para CLI do Azure.
Nota
Este artigo usa a versão mais recente da extensão do Azure IoT, chamada azure-iot
. A versão herdada é chamada azure-cli-iot-ext
de . Você só deve ter uma versão instalada de cada vez. Você pode usar o comando az extension list
para validar as extensões atualmente instaladas.
Use az extension remove --name azure-cli-iot-ext
para remover a versão herdada da extensão.
Use az extension add --name azure-iot
para adicionar a nova versão da extensão.
Para ver quais extensões você instalou, use az extension list
.
Implementar gêmeos
As configurações automáticas de dispositivos exigem o uso de gêmeos de dispositivos para sincronizar o estado entre a nuvem e os dispositivos. Para obter mais informações, veja Understand and use device twins in IoT Hub (Compreender e utilizar dispositivos duplos no Hub IoT).
As configurações automáticas de módulos exigem o uso de gêmeos de módulo para sincronizar o estado entre a nuvem e os módulos. Para obter mais informações, consulte Compreender e usar gêmeos de módulo no Hub IoT.
Use tags para segmentar gêmeos
Antes de criar uma configuração, você deve especificar quais dispositivos ou módulos deseja afetar. O Hub IoT do Azure identifica dispositivos e marcas no gêmeo de dispositivo e identifica módulos usando marcas no gêmeo de módulo. Cada dispositivo ou módulo pode ter várias tags e você pode defini-las de qualquer maneira que faça sentido para sua solução. Por exemplo, se você gerenciar dispositivos em locais diferentes, adicione as seguintes tags a um gêmeo de dispositivo:
"tags": {
"location": {
"state": "Washington",
"city": "Tacoma"
}
},
Definir o conteúdo e as métricas de destino
As consultas de conteúdo e métrica de destino são especificadas como documentos JSON que descrevem as propriedades desejadas do gêmeo de dispositivo ou do gêmeo de módulo a serem definidas e as propriedades relatadas para medir. Para criar uma configuração automática usando a CLI do Azure, salve o conteúdo e as métricas de destino localmente como arquivos .txt. Use os caminhos de arquivo em uma seção posterior quando executar o comando para aplicar a configuração ao seu dispositivo.
Aqui está um exemplo de conteúdo de destino básico para uma configuração automática de dispositivo:
{
"content": {
"deviceContent": {
"properties.desired.chillerWaterSettings": {
"temperature": 38,
"pressure": 78
}
}
}
As configurações automáticas do módulo se comportam de forma muito semelhante, mas você segmenta moduleContent
em vez de deviceContent
.
{
"content": {
"moduleContent": {
"properties.desired.chillerWaterSettings": {
"temperature": 38,
"pressure": 78
}
}
}
Aqui estão exemplos de consultas métricas:
{
"queries": {
"Compliant": "select deviceId from devices where configurations.[[chillerdevicesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='current'",
"Error": "select deviceId from devices where configurations.[[chillerdevicesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='error'",
"Pending": "select deviceId from devices where configurations.[[chillerdevicesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='pending'"
}
}
As consultas métricas para módulos também são semelhantes às consultas para dispositivos, mas você seleciona para moduleId
devices.modules
. Por exemplo:
{
"queries": {
"Compliant": "select deviceId, moduleId from devices.module where configurations.[[chillermodulesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='current'"
}
}
Criar uma configuração
Você pode criar um máximo de 100 configurações automáticas em hubs IoT de camada padrão; dez em hubs IoT de nível gratuito. Para saber mais, consulte Cotas e limitação.
Configure os dispositivos de destino criando uma configuração que consiste no conteúdo e nas métricas de destino. Use o seguinte comando para criar uma configuração:
az iot hub configuration create --config-id [configuration id] \
--labels [labels] --content [file path] --hub-name [hub name] \
--target-condition [target query] --priority [int] \
--metrics [metric queries]
--config-id - O nome da configuração que será criada no hub IoT. Dê à sua configuração um nome exclusivo com até 128 caracteres. São permitidas letras minúsculas e os seguintes caracteres especiais:
-+%_*!'
. Não são permitidos espaços.--etiquetas - Adicione etiquetas para ajudar a controlar a sua configuração. Os rótulos são pares Nome, Valor que descrevem sua implantação. Por exemplo,
HostPlatform, Linux
ouVersion, 3.0.1
--content - JSON embutido ou caminho de arquivo para o conteúdo de destino a ser definido como propriedades desejadas gêmeas.
--hub-name - Nome do hub IoT no qual a configuração será criada. O hub deve estar na assinatura atual. Mude para a subscrição pretendida com o comando
az account set -s [subscription name]
--target-condition - Insira uma condição de destino para determinar quais dispositivos ou módulos serão direcionados com essa configuração. Para a configuração automática do dispositivo, a condição é baseada em tags gêmeas de dispositivo ou propriedades desejadas de gêmeo de dispositivo e deve corresponder ao formato de expressão. Por exemplo,
tags.environment='test'
ouproperties.desired.devicemodel='4000x'
. Para a configuração automática do módulo, a condição é baseada em tags de módulo duplo ou propriedades desejadas de módulo gêmeo. Por exemplo,from devices.modules where tags.environment='test'
oufrom devices.modules where properties.reported.chillerProperties.model='4000x'
.--priority - Um número inteiro positivo. No caso de duas ou mais configurações serem direcionadas para o mesmo dispositivo ou módulo, a configuração com o maior valor numérico para Prioridade será aplicada.
--metrics - Filepath para as consultas de métrica. As métricas fornecem contagens resumidas dos vários estados que um dispositivo ou módulo pode relatar após a aplicação do conteúdo de configuração. Por exemplo, você pode criar uma métrica para alterações de configurações pendentes, uma métrica para erros e uma métrica para alterações de configurações bem-sucedidas.
Monitorar uma configuração
Use o seguinte comando para exibir o conteúdo de uma configuração:
az iot hub configuration show --config-id [configuration id] \
--hub-name [hub name]
--config-id - O nome da configuração que existe no hub IoT.
--hub-name - Nome do hub IoT no qual a configuração existe. O hub deve estar na assinatura atual. Mude para a subscrição pretendida com o comando
az account set -s [subscription name]
Inspecione a configuração na janela de comando. A propriedade metrics lista uma contagem para cada métrica avaliada por cada hub:
targetedCount - Uma métrica do sistema que especifica o número de gêmeos de dispositivo ou gêmeos de módulo no Hub IoT que correspondem à condição de segmentação.
appliedCount - Uma métrica do sistema especifica o número de dispositivos ou módulos que tiveram o conteúdo de destino aplicado.
Sua métrica personalizada - Todas as métricas que você definiu são métricas de usuário.
Você pode mostrar uma lista de IDs de dispositivo, IDs de módulo ou objetos para cada uma das métricas usando o seguinte comando:
az iot hub configuration show-metric --config-id [configuration id] \
--metric-id [metric id] --hub-name [hub name] --metric-type [type]
--config-id - O nome da implantação que existe no hub IoT.
--metric-id - O nome da métrica para a qual você deseja ver a lista de IDs de dispositivo ou IDs de módulo, por exemplo
appliedCount
.--hub-name - Nome do hub IoT no qual a implantação existe. O hub deve estar na assinatura atual. Mude para a subscrição pretendida com o comando
az account set -s [subscription name]
.--tipo métrico - O tipo de métrica pode ser
system
ouuser
. As métricas do sistema sãotargetedCount
eappliedCount
. Todas as outras métricas são métricas do usuário.
Modificar uma configuração
Quando você modifica uma configuração, as alterações são replicadas imediatamente para todos os dispositivos de destino.
Se você atualizar a condição de destino, as seguintes atualizações ocorrerão:
Se um gêmeo não atendesse à condição de destino antigo, mas atendesse à nova condição de destino e essa configuração fosse a prioridade mais alta para esse gêmeo, essa configuração seria aplicada.
Se um gêmeo atualmente executando essa configuração não atender mais à condição de destino, as configurações da configuração serão removidas e o gêmeo será modificado pela próxima configuração de prioridade mais alta.
Se um gêmeo atualmente executando essa configuração não atender mais à condição de destino e não atender à condição de destino de nenhuma outra configuração, as configurações da configuração serão removidas e nenhuma outra alteração será feita no gêmeo.
Use o seguinte comando para atualizar uma configuração:
az iot hub configuration update --config-id [configuration id] \
--hub-name [hub name] --set [property1.property2='value']
--config-id - O nome da configuração que existe no hub IoT.
--hub-name - Nome do hub IoT no qual a configuração existe. O hub deve estar na assinatura atual. Mude para a subscrição pretendida com o comando
az account set -s [subscription name]
.--set - Atualize uma propriedade na configuração. Você pode atualizar as seguintes propriedades:
targetCondition - por exemplo
targetCondition=tags.location.state='Oregon'
rótulos
prioridade
Excluir uma configuração
Quando você exclui uma configuração, qualquer dispositivo gêmeo ou módulo gêmeo assume sua próxima configuração de prioridade mais alta. Se os gêmeos não atenderem à condição de destino de qualquer outra configuração, nenhuma outra configuração será aplicada.
Use o seguinte comando para excluir uma configuração:
az iot hub configuration delete --config-id [configuration id] \
--hub-name [hub name]
--config-id - O nome da configuração que existe no hub IoT.
--hub-name - Nome do hub IoT no qual a configuração existe. O hub deve estar na assinatura atual. Mude para a subscrição pretendida com o comando
az account set -s [subscription name]
.
Próximos passos
Neste artigo, você aprendeu como configurar e monitorar dispositivos IoT em escala.
Para saber como gerenciar identidades de dispositivo do Hub IoT em massa, consulte Importar e exportar identidades de dispositivo do Hub IoT em massa