Planowanie zadań na wielu urządzeniach
Azure IoT Hub umożliwia szereg bloków konstrukcyjnych, takich jak właściwości bliźniaczej reprezentacji urządzenia i tagi imetody bezpośrednie. Zazwyczaj aplikacje zaplecza umożliwiają administratorom i operatorom urządzeń zbiorcze aktualizowanie i interakcję z urządzeniami IoT oraz w zaplanowanym czasie. Zadania wykonują aktualizacje bliźniaczej reprezentacji urządzenia i metody bezpośrednie względem zestawu urządzeń w zaplanowanym czasie. Na przykład operator będzie używać aplikacji zaplecza, która inicjuje i śledzi zadanie ponownego uruchamiania zestawu urządzeń w budynku 43 i 3 w czasie, które nie byłoby zakłócające działania budynku.
Uwaga
Funkcje opisane w tym artykule są dostępne tylko w warstwie Standardowa IoT Hub. Aby uzyskać więcej informacji na temat warstw podstawowych i standardowych/bezpłatnych IoT Hub, zobacz Wybieranie odpowiedniej warstwy IoT Hub dla rozwiązania.
Rozważ użycie zadań, jeśli musisz zaplanować i śledzić postęp dowolnego z następujących działań na zestawie urządzeń:
- Aktualizowanie żądanych właściwości
- Aktualizowanie tagów
- Wywoływanie metod bezpośrednich
Cykl życia zadania
Zadania są inicjowane przez zaplecze rozwiązania i obsługiwane przez IoT Hub. Zadanie można zainicjować za pomocą identyfikatora URI usługi (PUT https://<iot hub>/jobs/v2/<jobID>?api-version=2021-04-12
) i wykonać zapytanie o postęp wykonywania zadania za pośrednictwem identyfikatora URI usługi (GET https://<iot hub>/jobs/v2/<jobID?api-version=2021-04-12
). Aby odświeżyć stan uruchomionych zadań po zainicjowaniu zadania, uruchom zapytanie o zadanie. Nie ma jawnego przeczyszczenia historii zadań, ale mają czas wygaśnięcia 30 dni.
Uwaga
Po zainicjowaniu zadania nazwy właściwości i wartości mogą zawierać tylko kod alfanumeryczny US-ASCII, z wyjątkiem dowolnego z następujących zestawów: $ ( ) < > @ , ; : \ " / [ ] ? = { } SP HT
Uwaga
Pole jobId
musi zawierać maksymalnie 64 znaki i może zawierać tylko litery US-ASCII, cyfry i znak kreski (-
).
Zadania do wykonywania metod bezpośrednich
Poniższy fragment kodu przedstawia szczegóły żądania HTTPS 1.1 dotyczące wykonywania metody bezpośredniej na zestawie urządzeń przy użyciu zadania:
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>
}
Warunek zapytania może również znajdować się na jednym identyfikatorze urządzenia lub na liście identyfikatorów urządzeń, jak pokazano w poniższych przykładach:
"queryCondition" = "deviceId = 'MyDevice1'"
"queryCondition" = "deviceId IN ['MyDevice1','MyDevice2']"
"queryCondition" = "deviceId IN ['MyDevice1']"
IoT Hub Query Language obejmuje język zapytań IoT Hub szczegółowo.
Poniższy fragment kodu przedstawia żądanie i odpowiedź dla zadania zaplanowanego do wywołania metody bezpośredniej o nazwie testMethod na wszystkich urządzeniach na 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"}
Zadania aktualizacji właściwości bliźniaczej reprezentacji urządzenia
Poniższy fragment kodu przedstawia szczegóły żądania HTTPS 1.1 dotyczące aktualizowania właściwości bliźniaczej reprezentacji urządzenia przy użyciu zadania:
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>
}
Uwaga
Właściwość updateTwin wymaga prawidłowego dopasowania elementu etag; na przykład etag="*"
.
Poniższy fragment kodu przedstawia żądanie i odpowiedź dla zadania zaplanowanego do zaktualizowania właściwości bliźniaczej reprezentacji urządzenia dla urządzenia test-device w usłudze 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"}
Wykonywanie zapytań o postęp zadań
Poniższy fragment kodu przedstawia szczegóły żądania HTTPS 1.1 dotyczące wykonywania zapytań dotyczących zadań:
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
Element continuationToken jest dostarczany z odpowiedzi.
Możesz wykonywać zapytania dotyczące stanu wykonywania zadania na każdym urządzeniu przy użyciu języka zapytań IoT Hub dla bliźniaczych reprezentacji urządzeń, zadań i routingu komunikatów.
Właściwości zadań
Na poniższej liście przedstawiono właściwości i odpowiednie opisy, których można użyć podczas wykonywania zapytań dotyczących zadań lub wyników zadań.
Właściwość | Opis |
---|---|
Jobid | Identyfikator podanej aplikacji dla zadania. |
Starttime | Aplikacja dostarczyła czas rozpoczęcia (ISO-8601) dla zadania. |
Endtime | IoT Hub podaną datę (ISO-8601) dla momentu zakończenia zadania. Prawidłowa tylko po osiągnięciu stanu "ukończono" zadania. |
Typu | Typy zadań: |
scheduleUpdateTwin: zadanie używane do aktualizowania zestawu żądanych właściwości lub tagów. | |
scheduleDeviceMethod: zadanie używane do wywoływania metody urządzenia w zestawie bliźniaczych reprezentacji urządzenia. | |
Stan | Bieżący stan zadania. Możliwe wartości stanu: |
oczekujące: Zaplanowane i oczekujące na odebranie przez usługę zadań. | |
zaplanowane: Zaplanowano czas w przyszłości. | |
uruchomione: Aktualnie aktywne zadanie. | |
anulowano: zadanie zostało anulowane. | |
niepowodzenie: zadanie nie powiodło się. | |
ukończono: zadanie zostało ukończone. | |
deviceJobStatistics | Statystyki dotyczące wykonywania zadania. |
właściwości deviceJobStatistics : | |
deviceJobStatistics.deviceCount: liczba urządzeń w zadaniu. | |
deviceJobStatistics.failedCount: liczba urządzeń, na których zadanie nie powiodło się. | |
deviceJobStatistics.succeededCount: liczba urządzeń, na których zadanie zakończyło się pomyślnie. | |
deviceJobStatistics.runningCount: liczba urządzeń, na których aktualnie uruchomiono zadanie. | |
deviceJobStatistics.pendingCount: liczba urządzeń oczekujących na uruchomienie zadania. |
Dodatkowy materiał referencyjny
Inne tematy referencyjne w przewodniku dla deweloperów IoT Hub obejmują:
IoT Hub punktach końcowych opisano różne punkty końcowe udostępniane przez każde centrum IoT na potrzeby operacji czasu wykonywania i zarządzania.
Ograniczanie przepustowości i limity przydziału opisują przydziały, które mają zastosowanie do usługi IoT Hub, oraz zachowanie ograniczania przepustowości oczekiwane podczas korzystania z usługi.
Zestawy SDK urządzeń i usług azure IoT wyświetla listę różnych zestawów SDK języka, których można użyć podczas tworzenia aplikacji urządzeń i usług, które współdziałają z IoT Hub.
IoT Hub język zapytań dla bliźniaczych reprezentacji urządzeń, zadań i routingu komunikatów opisuje język zapytań IoT Hub. Użyj tego języka zapytań, aby pobrać informacje z IoT Hub o bliźniaczych i zadaniach urządzenia.
IoT Hub obsługa MQTT zawiera więcej informacji o obsłudze IoT Hub protokołu MQTT.
Następne kroki
Aby wypróbować niektóre pojęcia opisane w tym artykule, zobacz następujący samouczek IoT Hub: