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.
O Hub IoT do Azure habilita vários blocos de construção, como propriedades e tags gêmeas de dispositivo e métodos diretos. Normalmente, os aplicativos back-end permitem que os administradores e operadores de dispositivos atualizem e interajam com dispositivos IoT em massa e em um horário agendado. Os trabalhos executam atualizações gêmeas de dispositivos e direcionam métodos em relação a um conjunto de dispositivos em um horário agendado. Por exemplo, um operador usaria um aplicativo de back-end que inicia e rastreia um trabalho para reiniciar um conjunto de dispositivos no edifício 43 e no piso 3 em um momento que não seria perturbador para as operações do edifício.
Observação
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 e o tamanho certos do Hub IoT para sua solução.
Considere o uso de trabalhos quando precisar agendar e acompanhar o progresso de qualquer uma das seguintes atividades num conjunto de dispositivos.
- Atualizar propriedades desejadas
- Atualizar tags
- Invocar métodos diretos
Ciclo de vida do trabalho
Os trabalhos são iniciados pelo back-end da solução e mantidos pelo Hub IoT. Você pode iniciar um trabalho por meio de um URI voltado para o serviço (PUT https://<iot hub>/jobs/v2/<jobID>?api-version=2021-04-12
) e consultar o progresso de um trabalho em execução por meio de um URI voltado para o serviço (GET https://<iot hub>/jobs/v2/<jobID?api-version=2021-04-12
). Para atualizar o status dos trabalhos em execução depois que um trabalho for iniciado, execute uma consulta de trabalho. Não há um expurgo explícito do histórico de trabalho, mas eles têm um TTL de 30 dias.
Observação
Ao iniciar um trabalho, os nomes e valores de propriedade só podem conter caracteres alfanuméricos imprimíveis US-ASCII, exceto quaisquer presentes no seguinte conjunto: $ ( ) < > @ , ; : \ " / [ ] ? = { } SP HT
Observação
O jobId
campo deve ter 64 caracteres ou menos e só pode conter US-ASCII letras, números e o caractere traço (-
).
Tarefas para executar métodos diretos
O trecho a seguir mostra os detalhes da solicitação HTTPS 1.1 para executar um método direto em um conjunto de dispositivos usando um trabalho:
PUT /jobs/v2/<jobId>?api-version=2021-04-12
Authorization: <config.sharedAccessSignature>
Content-Type: application/json; charset=utf-8
{
"jobId": "<jobId>",
"type": "scheduleDeviceMethod",
"cloudToDeviceMethod": {
"methodName": "<methodName>",
"payload": <payload>,
"responseTimeoutInSeconds": methodTimeoutInSeconds
},
"queryCondition": "<queryOrDevices>", // query condition
"startTime": <jobStartTime>, // as an ISO-8601 date string
"maxExecutionTimeInSeconds": <maxExecutionTimeInSeconds>
}
A condição de consulta também pode estar em um único ID de dispositivo ou em uma lista de IDs de dispositivo, conforme mostrado nos exemplos a seguir:
"queryCondition" = "deviceId = 'MyDevice1'"
"queryCondition" = "deviceId IN ['MyDevice1','MyDevice2']"
"queryCondition" = "deviceId IN ['MyDevice1']"
A Linguagem de Consulta do Hub IoT aborda a linguagem de consulta do Hub IoT em detalhes adicionais.
O trecho a seguir mostra a solicitação e a resposta para uma tarefa agendada para chamar um método direto chamado testMethod em todos os dispositivos no contoso-hub-1:
PUT https://contoso-hub-1.azure-devices.net/jobs/v2/job01?api-version=2021-04-12 HTTP/1.1
Authorization: SharedAccessSignature sr=contoso-hub-1.azure-devices.net&sig=68iv------------------------------------v8Hxalg%3D&se=1556849884&skn=iothubowner
Content-Type: application/json; charset=utf-8
Host: contoso-hub-1.azure-devices.net
Content-Length: 317
{
"jobId": "job01",
"type": "scheduleDeviceMethod",
"cloudToDeviceMethod": {
"methodName": "testMethod",
"payload": {},
"responseTimeoutInSeconds": 30
},
"queryCondition": "*",
"startTime": "2019-05-04T15:53:00.077Z",
"maxExecutionTimeInSeconds": 20
}
HTTP/1.1 200 OK
Content-Length: 65
Content-Type: application/json; charset=utf-8
Vary: Origin
Server: Microsoft-HTTPAPI/2.0
Date: Fri, 03 May 2019 01:46:18 GMT
{"jobId":"job01","type":"scheduleDeviceMethod","status":"queued"}
Trabalhos para atualizar propriedades gêmeas do dispositivo
O trecho a seguir mostra os detalhes da solicitação HTTPS 1.1 para atualizar as propriedades gêmeas do dispositivo usando um trabalho:
PUT /jobs/v2/<jobId>?api-version=2021-04-12
Authorization: <config.sharedAccessSignature>
Content-Type: application/json; charset=utf-8
{
"jobId": "<jobId>",
"type": "scheduleUpdateTwin",
"updateTwin": <patch> // Valid JSON object
"queryCondition": "<queryOrDevices>", // query condition
"startTime": <jobStartTime>, // as an ISO-8601 date string
"maxExecutionTimeInSeconds": <maxExecutionTimeInSeconds>
}
Observação
A propriedade updateTwin requer uma correspondência de etag válida; por exemplo, etag="*"
.
O trecho a seguir mostra a solicitação e a resposta para um trabalho agendado para atualizar as propriedades gêmeas do dispositivo para test-device no contoso-hub-1:
PUT https://contoso-hub-1.azure-devices.net/jobs/v2/job02?api-version=2021-04-12 HTTP/1.1
Authorization: SharedAccessSignature sr=contoso-hub-1.azure-devices.net&sig=BN0U-------------------------------------RuA%3D&se=1556925787&skn=iothubowner
Content-Type: application/json; charset=utf-8
Host: contoso-hub-1.azure-devices.net
Content-Length: 339
{
"jobId": "job02",
"type": "scheduleUpdateTwin",
"updateTwin": {
"properties": {
"desired": {
"test1": "value1"
}
},
"etag": "*"
},
"queryCondition": "deviceId = 'test-device'",
"startTime": "2019-05-08T12:19:56.868Z",
"maxExecutionTimeInSeconds": 20
}
HTTP/1.1 200 OK
Content-Length: 63
Content-Type: application/json; charset=utf-8
Vary: Origin
Server: Microsoft-HTTPAPI/2.0
Date: Fri, 03 May 2019 22:45:13 GMT
{"jobId":"job02","type":"scheduleUpdateTwin","status":"queued"}
Consultando o progresso dos trabalhos
O trecho a seguir mostra os detalhes da solicitação HTTPS 1.1 para consulta de trabalhos:
GET /jobs/v2/query?api-version=2021-04-12[&jobType=<jobType>][&jobStatus=<jobStatus>][&pageSize=<pageSize>][&continuationToken=<continuationToken>]
Authorization: <config.sharedAccessSignature>
Content-Type: application/json; charset=utf-8
O continuationToken é fornecido a partir da resposta.
Você pode consultar o estado de execução do trabalho em cada dispositivo usando a linguagem de consulta do Hub IoT para gêmeos de dispositivo, trabalhos e roteamento de mensagens.
Propriedades de Empregos
A lista a seguir mostra as propriedades e descrições correspondentes, que podem ser usadas ao consultar trabalhos ou resultados de trabalho.
Propriedade | Descrição |
---|---|
jobId | A aplicação forneceu o ID para a tarefa. |
startTime | A aplicação forneceu a hora de início (ISO-8601) para o trabalho. |
endTime | O Hub IoT forneceu a data (ISO-8601) para quando o trabalho foi concluído. Válido somente após a tarefa atingir o estado 'concluído'. |
tipo | Tipos de emprego: |
scheduleUpdateTwin: Um trabalho usado para atualizar um conjunto de propriedades ou tags desejadas. | |
scheduleDeviceMethod: Um trabalho usado para invocar um método de dispositivo em um conjunto de gêmeos de dispositivo. | |
status | Estado atual do trabalho. Valores possíveis para o status: |
pendente: Agendado e à espera de ser levantado pelo serviço de tarefas. | |
programado: Agendado para um momento no futuro. | |
executando: Trabalho atualmente ativo. | |
foi cancelado: O trabalho foi cancelado. | |
falhou: A tarefa falhou. | |
concluído: O trabalho foi concluído. | |
deviceJobStatistics | Estatísticas sobre a execução do trabalho. |
propriedades do deviceJobStatistics | |
deviceJobStatistics.deviceCount: Número de dispositivos na tarefa. | |
deviceJobStatistics.failedCount: Número de dispositivos onde o trabalho falhou. | |
deviceJobStatistics.succeededCount: Número de dispositivos em que o trabalho foi bem-sucedido. | |
deviceJobStatistics.runningCount: Número de dispositivos que estão presentemente a executar a tarefa. | |
deviceJobStatistics.pendingCount: Número de dispositivos pendentes para executar o trabalho. |
Material de referência adicional
Outros tópicos de referência no guia do desenvolvedor do Hub IoT incluem:
Os endpoints do Hub IoT descrevem os vários pontos que cada hub IoT expõe para operações de gerenciamento e tempo de execução.
Limitação e cotas descreve as cotas que se aplicam ao serviço Hub IoT e o comportamento de limitação esperado quando você usa o serviço.
Os SDKs de dispositivo e serviço do Azure IoT listam os vários SDKs de idioma que você pode usar ao desenvolver aplicativos de dispositivo e serviço que interagem com o Hub IoT.
A linguagem de consulta do Hub IoT para gêmeos de dispositivo, trabalhos e roteamento de mensagens descreve a linguagem de consulta do Hub IoT. Use esta linguagem de consulta para recuperar informações do Hub IoT sobre seus gêmeos de dispositivo e trabalhos.
O suporte MQTT do IoT Hub fornece mais informações sobre o suporte do Hub IoT para o protocolo MQTT.
Próximos passos
Para experimentar alguns dos conceitos descritos neste artigo, consulte o seguinte tutorial do Hub IoT: