Gerenciamento automático de módulos e dispositivos IoT usando a CLI do Azure
O gerenciamento automático de dispositivo no Hub IoT do Azure automatiza muitas das tarefas repetitivas e complexas de gerenciamento de grande frotas de dispositivos. Com o gerenciamento automático de dispositivo, você pode direcionar um conjunto de dispositivos com base em suas propriedades, definir uma configuração desejada e permitir que o Hub IoT atualize dispositivos sempre que entrem 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, tratar a mesclagem e os conflitos e implementar configurações em uma abordagem em fases.
Observação
Os recursos descritos neste artigo estão disponíveis apenas na camada padrão do Hub IoT. Para obter mais informações sobre as camadas básica e padrão/gratuita do Hub IoT, confira Escolher a camada certa do Hub IoT para sua solução.
O gerenciamento automático de dispositivo trabalha atualizando um conjunto de dispositivos gêmeos ou módulos gêmeos com as propriedades desejadas e informando um resumo com base em propriedades reportadas por gêmeos. Ele apresenta uma nova classe e um documento JSON denominado Configuração que tem três partes:
A condição de destino define o escopo de dispositivos gêmeos ou módulos gêmeos a serem atualizados. A condição de destino é especificada como uma consulta em marcas de dispositivos gêmeos e/ou propriedades reportadas.
O conteúdo de destino define as propriedades desejadas para serem adicionadas ou atualizadas nos dispositivos gêmeos ou módulos gêmeos de destino. O conteúdo inclui um caminho para a seção de propriedades desejadas a ser alterado.
As métricas definem as contagens de resumos de vários estados de configuração como êxito, em andamento, e erro. Métricas personalizadas são especificadas como consultas nas propriedades reportadas do gêmeo. As métricas do sistema são métricas padrão que medem o status de atualização do gêmeo, como o número de gêmeos definidos como destino 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 cada vez que a configuração automática é executada. Há suporte para no máximo 100 configurações automáticas em Hubs IoT da camada standard e no máximo dez em Hubs IoT da camada gratuita. Limitações também se aplicam. Saiba mais em Cotas e limitação.
Pré-requisitos da CLI
Um Hub IoT na assinatura do Azure. Caso você ainda não tenha um hub, poderá seguir as etapas em Criar um hub IoT.
CLI do Azure em seu ambiente. No mínimo, a versão da CLI do Azure deve ser 2.0.70 ou superior. Use
az –-version
para validar. Esta versão dá suporte aos comandos da extensão az e introduz a estrutura de comandos Knack.
Observação
Este artigo usa a versão mais recente da extensão de IoT do Azure, chamada azure-iot
. A versão herdada chama-se azure-cli-iot-ext
. Você deve ter apenas uma versão instalada por vez. Use o comando az extension list
para validar quais extensões estão 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ê tem instaladas, use az extension list
.
Implementar gêmeos
As configurações automáticas de dispositivo requerem o uso de dispositivos gêmeos para sincronizar o estado entre a nuvem e os dispositivos. Para saber mais, veja Noções básicas e uso de dispositivos gêmeos no Hub IoT.
As configurações automáticas de módulo requerem o uso de módulos gêmeos para sincronizar o estado entre a nuvem e os módulos. Para obter mais informações, confira Noções básicas e uso de módulos gêmeos no Hub IoT.
Usar marcas para direcionar gêmeos
Antes de criar uma configuração, especifique quais dispositivos ou módulos você deseja afetar. O Hub IoT do Azure identifica dispositivos e por meio do uso de marcas no dispositivo gêmeo e identifica os módulos que usam marcas no módulo gêmeo. Cada dispositivo ou módulo pode ter várias marcas e você pode defini-las de qualquer modo que faça sentido para sua solução. Por exemplo, se você gerenciar dispositivos em locais diferentes, adicione as seguintes marcas a um dispositivo gêmeo:
"tags": {
"location": {
"state": "Washington",
"city": "Tacoma"
}
},
Definir as métricas e o conteúdo de destino
As consultas de métrica e conteúdo de destino são especificadas como documentos JSON que descrevem as propriedades desejadas de dispositivo gêmeo ou módulo gêmeo a serem definidas e as propriedades relatadas a serem medidas. 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. Você usará os caminhos de arquivo em uma próxima seção quando executar o comando para aplicar a configuração ao 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 de módulo se comportam de modo semelhante, mas você tem como destino moduleContent
, em vez de deviceContent
.
{
"content": {
"moduleContent": {
"properties.desired.chillerWaterSettings": {
"temperature": 38,
"pressure": 78
}
}
}
A seguir estão alguns exemplos de consultas de 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 de métricas para módulos também são semelhantes às consultas de dispositivos, mas você seleciona para moduleId
de 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
É possível criar no máximo 100 configurações automáticas em Hubs IoT da camada standard e no máximo dez em Hubs IoT da camada gratuita. Saiba mais em Cotas e limitação.
Você configura dispositivos de destino criando uma configuração que consiste de métricas e conteúdo de destino. Use o comando a seguir 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ê um nome exclusivo à sua configuração de até 128 caracteres de comprimento. Letras minúsculas e os seguintes caracteres especiais são permitidos:
-+%_*!'
. Espaços não são permitidos.--labels - Adicione rótulos para ajudar a rastrear a configuração. Rótulos são pares de Nome e Valor que descrevem a implantação. Por exemplo,
HostPlatform, Linux
ouVersion, 3.0.1
--content - JSON em linha ou caminho de arquivo para o conteúdo de destino a ser configurado como propriedades desejadas do gêmeo.
--hub-name - Nome do Hub IoT no qual a configuração será criada. O hub deve estar na assinatura atual. Alterne para a assinatura desejada 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 segmentados com essa configuração. Para configuração automática de dispositivo, a condição é baseada nas marcações do dispositivo gêmeo ou nas propriedades desejadas do dispositivo gêmeo e deve corresponder ao formato da expressão. Por exemplo,
tags.environment='test'
ouproperties.desired.devicemodel='4000x'
. Para a configuração automática de módulo, a condição é baseada nas marcas do módulo gêmeo ou nas propriedades desejadas do módulo gêmeo. Por exemplo,from devices.modules where tags.environment='test'
oufrom devices.modules where properties.reported.chillerProperties.model='4000x'
.--priority - Um inteiro positivo. No caso de duas ou mais configurações a serem direcionadas ao mesmo dispositivo ou módulo, será aplicada a configuração com o maior valor numérico para Prioridade.
--metrics - Caminho para as consultas de métricas. As métricas fornecem contagens de resumo dos vários estados que um dispositivo ou módulo pode relatar após aplicar o conteúdo da configuração. Por exemplo, você pode criar uma métrica para alterações de configurações pendentes, uma métrica de erros e uma métrica para alterações de configurações bem-sucedidas.
Monitorar uma configuração
Use o comando a seguir 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. Alterne para a assinatura desejada 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 dispositivos gêmeos ou módulos gêmeos no Hub IoT que correspondem à condição de direcionamento.
appliedCount – uma métrica de 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.
É possível mostrar uma lista de IDs de dispositivos, 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 dispositivos ou IDs de módulos, por exemplo,
appliedCount
.--hub-name - Nome do hub IoT no qual a implantação existe. O hub deve estar na assinatura atual. Alterne para a assinatura desejada com o comando
az account set -s [subscription name]
.--metric-type - O tipo de métrica pode ser
system
ouuser
. Métricas de 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 direcionados.
Se você atualizar a condição de destino, ocorrerão as seguintes atualizações:
Caso um gêmeo não tenha atendido à condição de destino antiga, mas atenda à nova condição de destino e essa configuração tenha a prioridade mais alta para o gêmeo, essa configuração será aplicada.
Se um gêmeo que executa essa configuração no momento não atender mais à condição de destino, as definiçõ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 que executa essa configuração no momento não atende à condição de destino e não atende a condição destino de outras configurações, as definições da configuração serão removidas e nenhuma outra alteração será feita no gêmeo.
Use o comando a seguir 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. Alterne para a assinatura desejada 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
priority
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 atendem a condição destino de qualquer outra configuração, não serão aplicadas outras configurações.
Use o comando a seguir 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. Alterne para a assinatura desejada com o comando
az account set -s [subscription name]
.
Próximas etapas
Neste artigo, você aprendeu a configurar e monitorar dispositivos IoT em escala.
Para aprender a gerenciar identidades de dispositivo do Hub IoT em massa, confira Importar e exportar identidades de dispositivo do Hub IoT em massa