Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A Atualização de Dispositivo para o Hub IoT usa o IoT Plug and Play para descobrir e gerir dispositivos com capacidade de atualização via transmissão remota. Este artigo descreve como o serviço de Atualização de Dispositivo envia e recebe propriedades e mensagens de e para dispositivos usando interfaces IoT Plug and Play.
Para obter mais informações, consulte o Guia do desenvolvedor de dispositivos IoT Plug and Play e Como criar o Device Update Agent.
Modelos de atualização de dispositivo
Os dispositivos inteligentes usam IDs de modelo IoT Plug and Play para anunciar seus recursos para aplicativos IoT do Azure. A Atualização de Dispositivo requer que o dispositivo inteligente IoT Plug and Play anuncie um ID de modelo como parte da conexão do dispositivo. Para mais informações, consulte o anúncio de ID do modelo.
O Device Update tem vários modelos IoT Plug and Play pré-definidos que suportam funcionalidades do Device Update. O modelo **dtmi:azure:iot:deviceUpdateContractModel;3** de Atualização de Dispositivo suporta a funcionalidade principal de Atualização de Dispositivo e usa a interface principal de Atualização de Dispositivo para enviar ações de atualização e metadados para dispositivos e receber status de atualização de dispositivos.
O outro modelo suportado é **dtmi:azure:iot:deviceUpdateModel;3**, que estende **deviceUpdateContractModel;3** e também usa interfaces IoT Plug and Play que enviam informações de propriedade do dispositivo e habilitam recursos de diagnóstico. Para essas e outras versões, consulte Modelos de atualização de dispositivo Plug and Play do Azure IoT.
Os agentes de Atualização de Dispositivo utilizam dtmi:azure:iot:deviceUpdateModel;3, que é suportado na versão 1.1.0 da implementação de referência do agente de Atualização de Dispositivo e versões posteriores. Este modelo suporta manifesto de importação versão 5.0. Manifestos mais antigos continuam a funcionar com versões mais recentes da implementação de referência, mas as novas funcionalidades exigem a versão mais recente do manifesto.
Metadados do agente
Os agentes de Atualização de Dispositivo reportam os seguintes campos de metadados ao serviço de Atualização de Dispositivo.
| Nome | Esquema | Direção | Descrição |
|---|---|---|---|
| propriedadesDoDispositivo | Mapa | Do dispositivo para a nuvem | O conjunto de propriedades que contêm o fabricante, o modelo e outras informações do dispositivo. Consulte Propriedades do dispositivo para obter detalhes. |
| compatPropertyNames | String (separada por vírgula) | Do dispositivo para a nuvem | Até cinco propriedades que são usadas para verificar a compatibilidade do dispositivo para direcionar a implantação da atualização. Exemplo: "compatPropertyNames": "fabricante,modelo" |
| ResultadoDaÚltimaInstalação | Mapa | Do dispositivo para a nuvem | O resultado relatado pelo agente, contendo código de resultado, código de resultado estendido e detalhes do resultado para atualização principal e outras atualizações de etapa. |
| Código de resultado | número inteiro | Do dispositivo para a nuvem | Um código que contém informações sobre o resultado da última ação de atualização. Pode ser preenchido para sucesso ou fracasso. Exemplo: 700 |
| CódigoDeResultadoExtendido | número inteiro | Do dispositivo para a nuvem | Um código que contém mais informações sobre o resultado. Pode ser preenchido para sucesso ou fracasso. Exemplo: 0x80004005 |
| Detalhes do Resultado | cadeia (de caracteres) | Do dispositivo para a nuvem | Uma cadeia de caracteres de forma livre fornecida pelo usuário para fornecer mais detalhes do resultado. Voltou para o gêmeo sem analisar. |
| stepResultados | mapa | Do dispositivo para a nuvem | O resultado relatado pelo agente, contendo código de resultado, código de resultado estendido e detalhes do resultado para atualizações de etapa. Exemplo: "step_1": { "resultCode": 0,"extendedResultCode": 0, "resultDetails": ""} |
| estado | número inteiro | Do dispositivo para a nuvem | Um inteiro que indica o estado atual do agente de Atualização de Dispositivo. Consulte Estado para obter detalhes. |
| fluxo de trabalho | complexo | Do dispositivo para a nuvem | Um conjunto de valores que indicam a implantação na qual o agente está a trabalhar atualmente, o ID da implantação instalada neste momento, e a confirmação de qualquer solicitação de nova tentativa enviada do serviço para o agente. O workflow ID relata um "nodeployment" valor quando uma implantação é cancelada. Exemplo: "workflow": {"action": 3,"ID": "11b6a7c3-6956-4b33-b5a9-87fdd79d2f01","retryTimestamp": "2022-01-26T11:33:29.9680598Z"} |
| idAtualizaçãoInstalada | cadeia (de caracteres) | Do dispositivo para a nuvem | Um ID da implementação da Atualização de Dispositivo atualmente instalada. Esse valor captura a ID de atualização JSON ou null para um dispositivo que nunca teve uma atualização por meio da Atualização de Dispositivo. Exemplo: "installedUpdateID": "{\"provider\":\"contoso\",\"name\":\"image-update\",\"version\":\"1.0.0\"}" |
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\"}"
},
Nota
O dispositivo ou módulo deve adicionar o {"__t": "c"} marcador para indicar que o elemento se refere a um componente. Para mais informações, consulte as convenções IoT Plug and Play.
Propriedades do dispositivo
O campo deviceProperties contém as informações do fabricante e do modelo de um dispositivo.
| Nome | Esquema | Direção | Descrição |
|---|---|---|---|
| fabricante | cadeia (de caracteres) | Do dispositivo para a nuvem | O fabricante do dispositivo, informado através de deviceProperties.A DeviceUpdateCore interface primeiro tenta ler o aduc_manufacturer valor do ficheiro de configuração. Se o valor não estiver definido no ficheiro de configuração, a interface reverte para reportar a definição de tempo de compilação para ADUC_DEVICEPROPERTIES_MANUFACTURER. Esta propriedade é informada apenas durante a inicialização. Valor padrão: 'Contoso' |
| modelo | cadeia (de caracteres) | Do dispositivo para a nuvem | O modelo do dispositivo, relatado através de deviceProperties. A DeviceUpdateCore interface primeiro tenta ler o aduc_model valor do ficheiro de configuração. Se o valor não estiver definido no ficheiro de configuração, a interface reverte para reportar a definição de tempo de compilação para ADUC_DEVICEPROPERTIES_MODEL. Esta propriedade é informada apenas durante a inicialização. Valor padrão: 'Vídeo' |
| contractModelId | cadeia (de caracteres) | Do dispositivo para a nuvem | Propriedade que o serviço usa para identificar a versão do modelo base que o agente de Atualização de Dispositivo está usando para gerenciar e se comunicar com o agente. Valor: dtmi:azure:iot:deviceUpdateContractModel;3 para dispositivos que utilizam o Device Update agent versão 1.1.0 ou posterior. Nota: Os agentes que usam dtmi:azure:iot:deviceUpdateModel;2 devem relatar o contractModelId como dtmi:azure:iot:deviceUpdateContractModel;3, porque deviceUpdateModel;3 é estendido de deviceUpdateContractModel;3. |
| aduVer | cadeia (de caracteres) | Do dispositivo para a 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 estiver definido como 1 (true) durante o tempo de compilação. Você pode optar por desativar o relatório de versão definindo o valor como 0 (false). Para obter mais informações, consulte Como criar o Device Update Agent. |
| doVer | cadeia (de caracteres) | Do dispositivo para a nuvem | Versão do agente de Otimização de Entrega em execução no dispositivo. O valor é lido da compilação somente se ENABLE_ADU_TELEMETRY_REPORTING estiver definido como 1 (true) durante o tempo de compilação. Você pode optar por desativar o relatório de versão definindo o valor como 0 (false). Para obter mais informações, consulte Como personalizar as propriedades do agente de Otimização de Entrega. |
| Propriedades de compatibilidade personalizadas | Definidas pelo utilizador | Do dispositivo para a nuvem | Outras propriedades de dispositivo definidas pelo usuário a serem usadas para a verificação de compatibilidade ao direcionar a implantação da atualização. |
Estado
O campo de estado é o status relatado pelo agente de Atualização de Dispositivo em resposta a uma Ação enviada ao 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, consulte o fluxo de trabalho do Agente.
| 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 retorna ao Idle. |
| Implantação em Progresso | 6 | Uma implantação está em andamento. |
| Com falhas | 255 | Ocorreu uma falha durante a atualização. |
| BaixarBem sucedido | 2 | Ocorreu um download bem-sucedido. Somente dispositivos com agente versão 0.7.0 ou anterior relatam esse status. |
| InstalaçãoBem-Sucedida | 4 | Ocorreu uma instalação bem-sucedida. Somente dispositivos com agente versão 0.7.0 ou anterior relatam esse status. |
Ação
O campo de ação representa a ação que o agente de Atualização de Dispositivo deve executar conforme as instruções do serviço de Atualização de Dispositivo. O agente de Atualização de Dispositivo comunica um estado ao processar a ação que recebe. 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, consulte o fluxo de trabalho do Agente.
| Nome | valor | Descrição |
|---|---|---|
| applyDeployment | 3 | Aplique a atualização implantada. |
| Cancelar | 255 | Pare de processar a ação atual e volte para Idle, ou diga a um agente no Failed estado para voltar para Idle. |
| descarregamento | 0 | Descarregue o conteúdo publicado ou atualize-o, assim como qualquer outro conteúdo necessário. Esta ação é enviada apenas para dispositivos com a versão 0.7.0 ou anterior do agente. |
| instalar | 1 | Instale o conteúdo ou atualize, normalmente para chamar o instalador para o conteúdo ou atualização. A Atualização de Dispositivo envia essa ação somente para dispositivos com a versão 0.7.0 ou anterior do agente. |
| aplicar | 2 | Finalize a atualização reinicializando, se necessário. A Atualização de Dispositivo envia essa ação somente para dispositivos com a versão 0.7.0 ou anterior do agente. |
Metadados do serviço
Os metadados do serviço contêm campos que o serviço de Atualização de Dispositivo usa 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 dispositivo | Um inteiro que corresponde a uma ação que o agente deve executar. Consulte Ação para obter detalhes. |
| updateManifest | cadeia (de caracteres) | nuvem para dispositivo | Descreve o conteúdo de uma atualização. Gerado a partir do manifesto de importação. |
| atualizaçãoAssinaturaManifesto | Objeto JSON | nuvem para dispositivo | Uma assinatura da Web JSON (JWS) com chaves da Web JSON para usar na verificação do código-fonte. |
| URLs de ficheiros | Mapa | nuvem para dispositivo | Mapa de FileID até DownloadUrl. Informa ao agente quais arquivos baixar e o hash a ser usado para verificar se os arquivos baixados corretamente. |
Interface de informações do dispositivo
A interface de informações do dispositivo é um conceito usado dentro da arquitetura IoT Plug and Play. A interface 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 usa as propriedades DeviceInformation.manufacturer e DeviceInformation.model para telemetria e diagnósticos. Para obter um exemplo da interface de informações do dispositivo, consulte https://devicemodels.azure.com/dtmi/azure/devicemanagement/deviceinformation-1.json.
Quando você implementa essa interface, o nome do componente esperado em seu modelo é deviceInformation. Para obter mais informações, consulte o guia de modelagem IoT Plug and Play.
| Nome | Tipo | Esquema | Direção | Descrição | Exemplo |
|---|---|---|---|---|---|
| fabricante | Propriedade | cadeia (de caracteres) | Do dispositivo para a nuvem | Nome da empresa do fabricante do dispositivo. Fabricante pode ser o mesmo que o nome do fabricante do equipamento original (OEM). | Contoso |
| modelo | Propriedade | cadeia (de caracteres) | Do dispositivo para a nuvem | Nome ou ID do modelo do dispositivo. | Dispositivo IoT Edge |
| Versão do Software | Propriedade | cadeia (de caracteres) | Do dispositivo para a nuvem | Versão do software no seu dispositivo. swVersion pode ser a versão do seu firmware. | 4.15.0-122 |
| osName | Propriedade | cadeia (de caracteres) | Do dispositivo para a nuvem | Nome do sistema operativo no dispositivo. | Ubuntu Server 18.04 |
| arquiteturaDoProcessador | Propriedade | cadeia (de caracteres) | Do dispositivo para a nuvem | Arquitetura do processador no dispositivo. | ARM64 |
| processadorFabricante | Propriedade | cadeia (de caracteres) | Do dispositivo para a nuvem | Nome do fabricante do processador no dispositivo. | Microsoft |
| totalArmazenamento | Propriedade | cadeia (de caracteres) | Do dispositivo para a nuvem | Armazenamento total disponível no dispositivo em kilobytes. | 2048 |
| memóriaTotal | Propriedade | cadeia (de caracteres) | Do dispositivo para a nuvem | Total de memória disponível no dispositivo em kilobytes. | 256 |