Atualização de dispositivo para Hub IoT e IoT Plug and Play
A Atualização de Dispositivo para o Hub IoT usa o IoT Plug and Play para descobrir e gerenciar dispositivos com capacidade de atualização over-the-air. 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 mais informações:
- Entenda o cliente de dispositivo IoT Plug and Play.
- Veja como o agente de Atualização de Dispositivo é implementado.
Modelos de atualização de dispositivo
ID do Modelo é como os dispositivos inteligentes anunciam seus recursos para aplicativos IoT do Azure com IoT Plug e Play.To saber mais sobre como criar dispositivos inteligentes para anunciar seus recursos para aplicativos IoT do Azure, visite o Guia do desenvolvedor de dispositivos IoT Plug and Play.
A Atualização de Dispositivo para o Hub IoT requer que o dispositivo inteligente IoT Plug and Play anuncie um ID de modelo como parte da conexão do dispositivo. Saiba como anunciar um ID de modelo.
A Atualização de Dispositivo tem vários modelos PnP definidos que suportam recursos de DU. O modelo de Atualização de Dispositivo, 'dtmi:azure:iot:deviceUpdateContractModel; 3', suporta a funcionalidade principal 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 outras interfaces PnP que enviam propriedades e informações do dispositivo e habilitam recursos de diagnóstico. Saiba mais sobre o [Device Update Models and Interfaces Versions] (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 suporta todas as funcionalidades mais recentes da versão 1.1.0. Este modelo suporta a versão de manifesto V5. Os manifestos mais antigos funcionarão com os agentes mais recentes, mas os 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 | Description | Exemplo |
---|---|---|---|---|
deviceProperties | Mapa | Do dispositivo para a 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 | String (separada por vírgula) | Do dispositivo para a nuvem | O dispositivo relatou propriedades que são usadas para verificar a compatibilidade do dispositivo para direcionar a implantação da atualização. Limitado a cinco propriedades do dispositivo. | "compatPropertyNames": "fabricante, modelo" |
lastInstallResult | Mapa | Do dispositivo para a 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. | |
Código de resultados | integer | 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. | 700 |
extendedResultCode | integer | Do dispositivo para a nuvem | Um código que contém informações adicionais sobre o resultado. Pode ser preenchido para sucesso ou fracasso. | 0x80004005 |
resultDetalhes | string | Do dispositivo para a nuvem | Cadeia de caracteres de formulário livre definida pelo cliente para fornecer detalhes adicionais do resultado. Voltou para o gêmeo sem analisar | |
stepResultados | map | 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. | "step_1": { "resultCode": 0,"extendedResultCode": 0, "resultDetails": ""} |
state | integer | Do dispositivo para a nuvem | Um inteiro que indica o estado atual do agente de Atualização de Dispositivo. | Consulte a seção Estado para obter detalhes. |
fluxo de trabalho | complexo | Do dispositivo para a nuvem | Um conjunto de valores que indicam em qual implantação o agente está trabalhando no momento, ID da implantação atual e confirmação de qualquer solicitação de repetição enviada de serviço para agente. Observe que o ID do fluxo de trabalho relata um valor "nodeployment" quando a implantação é cancelada. | "fluxo de trabalho": {"action": 3,"ID": "11b6a7c3-6956-4b33-b5a9-87fdd79d2f01","retryTimestamp": "2022-01-26T11:33:29.9680598Z"} |
instaladoUpdateId | string | Do dispositivo para a nuvem | Um ID da atualização que está atualmente instalada (através da Atualização de Dispositivo). Esse valor é uma cadeia de caracteres que captura a ID de Atualização JSON ou null 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 de um dispositivo.
Nome | Esquema | Direção | Description |
---|---|---|---|
fabricante | string | Do dispositivo para a nuvem | O fabricante do dispositivo, informado através deviceProperties de . Esta propriedade é lida de um dos dois locais - primeiro, a interface DeviceUpdateCore tenta ler o valor 'aduc_manufacturer' do arquivo de configuração. Se o valor não estiver preenchido no arquivo de configuração, o padrão será relatar a definição de tempo de compilação para ADUC_DEVICEPROPERTIES_MANUFACTURER. Esta propriedade é relatada somente no momento da inicialização. Valor padrão: 'Contoso'. |
modelo | string | Do dispositivo para a nuvem | O modelo do dispositivo, relatado através deviceProperties do . Esta propriedade é lida de um dos dois locais - primeiro, a interface DeviceUpdateCore tenta ler o valor 'aduc_model' do arquivo de configuração. Se o valor não estiver preenchido no arquivo de configuração, o padrão será relatar a definição de tempo de compilação para ADUC_DEVICEPROPERTIES_MODEL. Esta propriedade é relatada somente no momento da inicialização. Valor padrão: 'Vídeo' |
contractModelId | string | Do dispositivo para a 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 DU versão 1.1.0. Nota: Agentes usando o 'dtmi:azure:iot:deviceUpdateModel; 2' deve relatar o contractModelId como 'dtmi:azure:iot:deviceUpdateContractModel; 3' como deviceUpdateModel; 3 é estendido de deviceUpdateContractModel; 3 |
aduVer | string | 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. Os clientes podem optar por desativar o relatório de versão definindo o valor como 0 (false). Como personalizar as propriedades do agente de Atualização de Dispositivo. |
doVer | string | 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. Os clientes podem optar por desativar o relatório de versão definindo o valor como 0 (false). Como personalizar as propriedades do agente de Otimização de Entrega. |
Propriedades de compatibilidade personalizadas | Definido pelo Utilizador | Do dispositivo para a nuvem | O implementador pode definir outras propriedades de dispositivo a serem usadas para a verificação de compatibilidade enquanto direciona a implantação da 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\"}"
},
Nota
O dispositivo ou módulo deve adicionar o {"__t": "c"}
marcador para indicar que o elemento se refere a um componente. Para obter mais informações, consulte Convenções IoT Plug and Play.
Estado
O campo Estado é o status relatado pelo agente de Atualização de Dispositivo (DU) após receber uma ação do serviço de Atualização de Dispositivo. O estado é relatado em resposta a uma Ação (consulte a seção Ação para obter detalhes) enviada ao agente de Atualização de Dispositivo a partir 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 de visão geral.
Nome | valor | Description |
---|---|---|
Períodos | 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 Idle estado é retornado ao estado. |
ImplantaçãoInprogress | 6 | Uma implantação está em andamento. |
Com falhas | 255 | Ocorreu uma falha durante a atualização. |
BaixarBem sucedido | 2 | Um download bem-sucedido. Esse status só é relatado por dispositivos com a versão 0.7.0 ou anterior do agente. |
InstallSuccessful | 4 | Uma instalação bem-sucedida. Esse status só é relatado por 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 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 | Description |
---|---|---|---|
action | integer | nuvem para 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 dispositivo | Usado para descrever o conteúdo de uma atualização. Gerado a partir do manifesto de importação. |
updateManifestSignature | Objeto JSON | nuvem para dispositivo | Uma assinatura da Web JSON (JWS) com chaves da Web JSON usadas para verificação de origem. |
fileUrls | 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 foram baixados corretamente. |
Ação
O campo de ação representa as ações executadas 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 estado 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, consulte o fluxo de trabalho de visão geral.
Nome | valor | Description |
---|---|---|
applyDeployment | 3 | Aplique a atualização. Ele sinaliza para o dispositivo para aplicar 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 . |
download | 0 | Faça o download do conteúdo publicado ou atualize e qualquer outro conteúdo necessário. Esta ação só é enviada para dispositivos com a versão 0.7.0 ou anterior do agente. |
instalar | 1 | Instale o conteúdo ou atualize. Normalmente, essa ação significa chamar o instalador para o conteúdo ou atualização. Esta ação só é enviada para dispositivos com a versão 0.7.0 ou anterior do agente. |
apply | 2 | Finalize a atualização. Ele sinaliza o sistema para reiniciar, se necessário. Esta ação só é enviada para dispositivos com a versão 0.7.0 ou anterior do agente. |
Interface de informações do dispositivo
A interface de informações do dispositivo é um conceito usado dentro da arquitetura IoT Plug and Play. Ele 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 o Hub IoT usa as propriedades e DeviceInformation.model
para telemetria DeviceInformation.manufacturer
e diagnóstico. Para saber mais, consulte este exemplo da interface de informações do dispositivo.
O nome do componente esperado em seu modelo é deviceInformation quando essa interface é implementada. Saiba mais sobre os componentes Plug and Play do Azure IoT
Nome | Tipo | Esquema | Direção | Description | Exemplo |
---|---|---|---|---|---|
fabricante | Property | string | Do dispositivo para a nuvem | Nome da empresa do fabricante do dispositivo. Esta propriedade pode ser o mesmo que o nome do fabricante do equipamento original (OEM). | Contoso |
modelo | Property | string | Do dispositivo para a nuvem | Nome ou ID do modelo do dispositivo. | Dispositivo IoT Edge |
swVersion | Property | string | 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 | Property | string | Do dispositivo para a nuvem | Nome do sistema operativo no dispositivo. | Ubuntu Server 18.04 |
processorArchitecture | Property | string | Do dispositivo para a nuvem | Arquitetura do processador no dispositivo. | ARM64 |
processadorFabricante | Property | string | Do dispositivo para a nuvem | Nome do fabricante do processador no dispositivo. | Microsoft |
totalArmazenamento | Property | string | Do dispositivo para a nuvem | Armazenamento total disponível no dispositivo em kilobytes. | 2048 |
totalMemória | Property | string | Do dispositivo para a nuvem | Total de memória disponível no dispositivo em kilobytes. | 256 |