Atualização de Dispositivo para Hub IoT e IoT Plug and Play

A Atualização de Dispositivo para Hub IoT usa o IoT Plug and Play para descobrir e gerenciar dispositivos com capacidade para atualização remota. O serviço de Atualização de Dispositivo envia e recebe propriedades e mensagens em dispositivos usando interfaces IoT Plug and Play.

Para mais informações:

Modelos de Atualização de Dispositivo

A ID do modelo é como os dispositivos inteligentes anunciam seus recursos para os aplicativos IoT do Azure com o IoT Plug and Play. Para saber mais sobre como criar dispositivos inteligentes para anunciar seus recursos aos aplicativos IoT do Azure, visite o Guia do desenvolvedor de dispositivos do IoT Plug and Play.

A Atualização de Dispositivo para Hub IoT exige que o dispositivo inteligente de IoT Plug and Play anuncie uma ID de modelo com parte da conexão do dispositivo. Saiba como anunciar uma ID de modelo.

A Atualização de Dispositivo tem vários modelos PnP definidos que dão suporte a recursos de DU. O modelo de Atualização de Dispositivo, "dtmi:azure:iot:deviceUpdateContractModel;3", dá suporte à funcionalidade principal e usa a interface principal de atualização do dispositivo para enviar ações de atualização e metadados para dispositivos e receber o status de atualização de dispositivos.

O outro modelo com suporte é dtmi:azure:iot:deviceUpdateModel;3, que estende deviceUpdateContractModel;3 e também usa outras interfaces PnP que enviam propriedades e informações do dispositivo e habilitam recursos de diagnóstico. Saiba mais sobre as [versões de interfaces e modelos de Atualização de Dispositivo] (https://github.com/Azure/iot-plugandplay-models/tree/main/dtmi/azure/iot).

O agente de Atualização de Dispositivo usa o dtmi:azure:iot:deviceUpdateModel;3, que dá suporte a todos os recursos mais recentes na versão 1.1.0. Este modelo dá suporte à versão do manifesto V5. Manifestos mais antigos funcionarão com os agentes mais recentes, mas novos recursos exigem o uso da versão mais recente do manifesto.

Metadados do agente

O agente de Atualização de Dispositivo usa campos de metadados do agente para enviar informações aos serviços de Atualização de Dispositivo.

Nome Esquema Direção Descrição Exemplo
deviceProperties Map Dispositivo para nuvem O conjunto de propriedades que contêm o fabricante, o modelo e outras informações do dispositivo. Consulte a seção Propriedades do dispositivo para obter detalhes.
compatPropertyNames Cadeia de caracteres (separada por vírgula) Dispositivo para nuvem O dispositivo relatou propriedades que são usadas para verificar a compatibilidade do dispositivo para direcionar a implantação de atualização. Limitado a cinco propriedades de dispositivo. "compatPropertyNames": "manufacturer,model"
lastInstallResult Map Dispositivo para nuvem O resultado relatado pelo agente. Ele contém código de resultado, código de resultado estendido e detalhes de resultado para atualização principal e outras atualizações de etapa.
resultCode Número inteiro Dispositivo para nuvem Um código que contém informações sobre o resultado da última ação de atualização. Pode ser preenchido com êxito ou falha. 700
extendedResultCode Número inteiro Dispositivo para nuvem Um código que contém informações adicionais sobre o resultado. Pode ser preenchido com êxito ou falha. 0x80004005
resultDetails string Dispositivo para nuvem Cadeia de caracteres de forma livre definida pelo cliente para fornecer detalhes de resultado adicionais. Devolvido para o gêmeo sem análise
stepResults mapa Dispositivo para nuvem O resultado relatado pelo agente que contém o código de resultado, código de resultado estendido e detalhes de resultado para atualizações de etapa. "step_1": { "resultCode": 0,"extendedResultCode": 0, "resultDetails": ""}
state Número inteiro Dispositivo para nuvem Um inteiro que indica o estado atual do agente de Atualização de Dispositivo. Confira a seção de Status para obter detalhes.
fluxo de trabalho complex Dispositivo para nuvem Um conjunto de valores que indica em qual implantação o agente está trabalhando no momento, a ID da implantação atual e a confirmação de qualquer solicitação de repetição enviada do serviço para o agente. Observe que a ID do fluxo de trabalho relata um valor de "nodeployment" depois que a implantação é cancelada. "workflow": {"action": 3,"ID": "11b6a7c3-6956-4b33-b5a9-87fdd79d2f01","retryTimestamp": "2022-01-26T11:33:29.9680598Z"}
installedUpdateId string Dispositivo para nuvem Uma ID da atualização instalada atualmente (por meio da Atualização de Dispositivo). Esse valor é uma cadeia de caracteres capturando a ID de Atualização JSON ou nula para um dispositivo que nunca fez uma atualização por meio da Atualização de Dispositivo. installedUpdateID{"provider":"contoso","name":"image-update","version":"1.0.0"}"

Propriedades do dispositivo

O campo deviceProperties contém as informações do fabricante e do modelo para um dispositivo.

Nome Esquema Direção Descrição
fabricante string Dispositivo para nuvem O fabricante do dispositivo, relatado por meio do deviceProperties. Essa propriedade é lida em um dos dois locais. Primeiro, a interface DeviceUpdateCore tenta ler o valor 'aduc_manufacturer' do arquivo de configuração. Se o valor não for preenchido no arquivo de configuração, é padrão relatar a definição de tempo de compilação para ADUC_DEVICEPROPERTIES_MANUFACTURER. Essa propriedade é relatada somente no momento da inicialização.

Valor padrão: 'Contoso'.
modelo string Dispositivo para nuvem O modelo do dispositivo, relatado por meio de deviceProperties. Essa propriedade é lida em um dos dois locais. Primeiro, a interface DeviceUpdateCore tenta ler o valor 'aduc_model' do arquivo de configuração. Se o valor não for preenchido no arquivo de configuração, é padrão relatar a definição de tempo de compilação para ADUC_DEVICEPROPERTIES_MODEL. Essa propriedade é relatada somente no momento da inicialização.

Valor padrão: 'Video'
contractModelId string Dispositivo para nuvem Essa propriedade é usada pelo serviço para identificar a versão do modelo base que está sendo usada pelo agente de Atualização de Dispositivo para gerenciar e se comunicar com o agente.
Valor: "dtmi:azure:iot:deviceUpdateContractModel; 3" para dispositivos que usam o agente de DU versão 1.1.0.
Observação: agentes que usam o "dtmi:azure:iot:deviceUpdateModel;2" deve relatar contractModelId como "dtmi:azure:iot:deviceUpdateContractModel;3" já que deviceUpdateModel;3 é estendido de deviceUpdateContractModel;3
aduVer string Dispositivo para nuvem Versão do agente de Atualização de Dispositivo em execução no dispositivo. Esse valor é lido da compilação somente se ENABLE_ADU_TELEMETRY_REPORTING for definido como 1 (true) durante o tempo de compilação. Os clientes podem optar por recusar a emissão de relatórios de versão definindo o valor como 0 (falso). Como personalizar as propriedades do agente de Atualização de Dispositivo.
doVer string Dispositivo para nuvem Versão do agente Otimização de Entrega em execução no dispositivo. O valor é lido da compilação somente se ENABLE_ADU_TELEMETRY_REPORTING for definido como 1 (true) durante o tempo de compilação. Os clientes podem optar por recusar a emissão de relatórios de versão definindo o valor como 0 (falso). Como personalizar as propriedades do agente de Otimização de Entrega.
Propriedades de compatibilidade personalizadas User Defined Dispositivo para nuvem O implementador pode definir outras propriedades de dispositivo a serem usadas para a verificação de compatibilidade ao direcionar a implantação de atualização.

Exemplo de dispositivo gêmeo do Hub IoT:

"deviceUpdate": {
                "__t": "c",
                "agent": {
                    "deviceProperties": {
                        "manufacturer": "contoso",
                        "model": "virtual-vacuum-v1",
                        "contractModelId": "dtmi:azure:iot:deviceUpdateContractModel;3",
                        "aduVer": "DU;agent/1.1.0",
                        },
                    "compatPropertyNames": "manufacturer,model",
                    "lastInstallResult": {
                        "resultCode": 700,
                        "extendedResultCode": 0,
                        "resultDetails": "",
                        "stepResults": {
                            "step_0": {
                                "resultCode": 700,
                                "extendedResultCode": 0,
                                "resultDetails": ""
                            }
                        }
                    },
                    "state": 0,
                    "workflow": {
                        "action": 3,
                        "id": "11b6a7c3-6956-4b33-b5a9-87fdd79d2f01",
                        "retryTimestamp": "2022-01-26T11:33:29.9680598Z"
                    },
                    "installedUpdateId": "{\"provider\":\"Contoso\",\"name\":\"Virtual-Vacuum\",\"version\":\"5.0\"}"
                },

Observação

O dispositivo ou módulo devem adicionar o{"__t": "c"}marcador para indicar de que elemento refere-se a um componente. Para obter mais informações, confira as Convenções de IoT Plug and Play.

Estado

O campo Status é o status relatado pelo agente de DU (Atualização de Dispositivo) após receber uma ação do serviço de Atualização de Dispositivo. O Status é relatado em resposta a uma Ação (confira a seção Ação para obter detalhes) enviada para o agente de Atualização de Dispositivo do serviço de Atualização de Dispositivo. Para obter mais informações sobre solicitações que fluem entre o serviço de Atualização de Dispositivo e o agente de Atualização de Dispositivo, confira o fluxo de trabalho de visão geral.

Nome Valor Descrição
Ocioso 0 O dispositivo está pronto para receber uma ação do serviço de Atualização de Dispositivo. Após uma atualização bem-sucedida, o estado é retornado para o Idle.
DeploymentInprogress 6 Uma implantação está em andamento.
Com falha 255 Ocorreu uma falha durante a atualização.
DownloadSucceeded 2 Um download bem-sucedido. Esse status só é relatado por dispositivos com a versão do agente 0.7.0 ou anteriores.
InstallSucceeded 4 Uma instalação bem-sucedida. Esse status só é relatado por dispositivos com a versão do agente 0.7.0 ou anteriores.

Metadados de serviço

Os metadados de serviço contêm campos que os serviços de Atualização de Dispositivo usam para comunicar ações e dados ao agente de Atualização de Dispositivo.

Nome Esquema Direção Descrição
ação Número inteiro Nuvem para o dispositivo Um inteiro que corresponde a uma ação que o agente deve executar. Consulte a seção Ação para obter detalhes.
updateManifest string Nuvem para o dispositivo Usado para descrever o conteúdo de uma atualização. Gerado do Manifesto de Importação.
updateManifestSignature Objeto JSON Nuvem para o dispositivo Uma JWS (Assinatura Web JSON) com Chaves Web JSON usadas para verificação de origem.
fileUrls Map Nuvem para o dispositivo Mapa de FileID para DownloadUrl. Indica ao agente quais os arquivos a transferir e o hash a utilizar para verificar se os arquivos foram transferidos corretamente.

Ação

O campo de ação representa as ações realizadas pelo agente de Atualização de Dispositivo, conforme instruído pelo serviço de Atualização de Dispositivo. O agente de Atualização de Dispositivo relatará um status para processar a ação recebida. Para obter mais informações sobre solicitações que fluem entre o serviço de Atualização de Dispositivo e o agente de Atualização de Dispositivo, confira o fluxo de trabalho de visão geral.

Nome Valor Descrição
ApplyDeployment 3 Aplicar a atualização. Sinaliza para o dispositivo aplicar a atualização implantada
cancel 255 Pare de processar a ação atual e volte para Idle, ou diga a um agente no status Failed para voltar para Idle.
download 0 Baixar ou atualizar conteúdo publicado ou qualquer outro conteúdo necessário. Essa ação só é enviada para dispositivos com a versão do agente 0.7.0 ou anterior.
instalar 1 Instale o conteúdo ou atualize. Normalmente, essa ação significa chamar o instalador para o conteúdo ou atualização. Essa ação só é enviada para dispositivos com a versão do agente 0.7.0 ou anterior.
aplicar 2 Finalize a atualização. Ele sinaliza o sistema para reinicializar, se necessário. Essa ação só é enviada para dispositivos com a versão do agente 0.7.0 ou anterior.

Interface de informações do dispositivo

A interface de informações do dispositivo é um conceito usado na arquitetura de IoT Plug and Play. Ela contém propriedades de dispositivo para nuvem que fornecem informações sobre o hardware e o sistema operacional do dispositivo. A Atualização de Dispositivo para Hub IoT usa as propriedades DeviceInformation.manufacturer e DeviceInformation.model para telemetria e diagnóstico. Para saber mais, confira este exemplo da interface de informações do dispositivo.

O nome do componente esperado em seu modelo é deviceInformation quando essa interface é implementada. Aprenda sobre os componentes IoT Plug and Play do Azure

Nome Tipo Esquema Direção Descrição Exemplo
fabricante Propriedade string Dispositivo para nuvem Nome da empresa do fabricante do dispositivo. Essa propriedade pode ser o mesma que o nome do OEM (fabricante original de equipamentos). Contoso
modelo Propriedade string Dispositivo para nuvem Nome ou ID do modelo de dispositivo. Dispositivo do IoT Edge
swVersion Propriedade string Dispositivo para nuvem Versão do software em seu dispositivo. swVersion pode ser a versão do firmware. 4.15.0-122
osName Propriedade string Dispositivo para nuvem O nome do sistema operacional no dispositivo. Ubuntu Server 18.04
processorArchitecture Propriedade string Dispositivo para nuvem Arquitetura do processador no dispositivo. ARM64
processorManufacturer Propriedade string Dispositivo para nuvem Nome do fabricante do processador no dispositivo. Microsoft
totalStorage Propriedade string Dispositivo para nuvem Total de armazenamento disponível no dispositivo, em kilobytes. 2.048
totalMemory Propriedade string Dispositivo para nuvem Memória total disponível no dispositivo, em kilobytes. 256

Próximas etapas