Birden fazla cihazda işleri zamanlama

Azure IoT Hub, Device ikizi özellikleri ve etiketleri ve doğrudan yöntemlerigibi çeşitli yapı taşlarına izin vermez. Tipik olarak, arka uç uygulamaları cihaz yöneticilerinin ve işleçlerin, IoT cihazlarını toplu ve zamanlanan bir zamanda güncelleştirme ve bunlarla etkileşime geçmesini sağlar. İşler cihaz ikizi güncelleştirmelerini ve doğrudan yöntemleri zamanlanan bir süre içinde bir cihaz kümesine karşı yürütür. Örneğin, bir operatör, derleme işlemlerine kesintiye uğramayan bir zamanda 43 ve 2. binadaki bir cihaz kümesini yeniden başlatmak için bir işi başlatan ve izleyen bir arka uç uygulaması kullanır.

Not

Bu makalede açıklanan özellikler yalnızca IoT Hub standart katmanında kullanılabilir. Temel ve standart/ücretsiz IoT Hub katmanları hakkında daha fazla bilgi için bkz. doğru IoT Hub katmanını seçme.

Bir cihaz kümesi üzerinde aşağıdaki etkinliklerden herhangi birini zamanlamanıza ve izlemenize gerek duyduğunuzda işleri kullanmayı düşünün:

  • İstenen özellikleri güncelleştirme
  • Etiketleri Güncelleştir
  • Doğrudan metotları çağır

İş yaşam döngüsü

İşler, çözüm arka ucu tarafından başlatılır ve IoT Hub tarafından sürdürülür. Hizmete yönelik bir URI () aracılığıyla bir işi başlatabilir ve bir PUT https://<iot hub>/jobs/v2/<jobID>?api-version=2018-06-30 hizmet TEMELLI URI () aracılığıyla yürütülen iş üzerinde ilerleme durumunu sorgulayın GET https://<iot hub>/jobs/v2/<jobID?api-version=2018-06-30 . İş başlatıldığında çalışan işlerin durumunu yenilemek için bir iş sorgusu çalıştırın.

Not

Bir iş başlattığınızda, özellik adları ve değerleri yalnızca ABD-ASCII yazdırılabilir alfasayısal içerebilir (aşağıdaki küme dışında): $ ( ) < > @ , ; : \ " / [ ] ? = { } SP HT

Doğrudan Yöntemler yürütülecek işler

Aşağıdaki kod parçacığında, bir işi kullanarak bir dizi cihazda doğrudan yöntem YÜRÜTMEYE yönelik https 1,1 istek ayrıntıları gösterilmektedir:

PUT /jobs/v2/<jobId>?api-version=2018-06-30

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>
}

Sorgu koşulu, aşağıdaki örneklerde gösterildiği gibi tek bir cihaz KIMLIĞINDE ya da cihaz kimliklerinin bir listesinde bulunabilir:

"queryCondition" = "deviceId = 'MyDevice1'"
"queryCondition" = "deviceId IN ['MyDevice1','MyDevice2']"
"queryCondition" = "deviceId IN ['MyDevice1']"

IoT Hub sorgu dili IoT Hub sorgu dilini ek ayrıntılarla kapsamaktadır.

Aşağıdaki kod parçacığında, contoso-hub-1 ' deki tüm cihazlarda testMethod adlı doğrudan bir yöntemi çağırmak üzere zamanlanan bir işin isteği ve yanıtı gösterilmektedir:

PUT https://contoso-hub-1.azure-devices.net/jobs/v2/job01?api-version=2018-06-30 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"}

Cihaz ikizi özelliklerini güncelleştirmek için işler

Aşağıdaki kod parçacığında, bir işi kullanarak Device ikizi özelliklerini güncelleştirmek için HTTPS 1,1 istek ayrıntıları gösterilmektedir:

PUT /jobs/v2/<jobId>?api-version=2018-06-30

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>
}

Not

UpdateTwin özelliği geçerli bir ETag eşleşmesi gerektirir; Örneğin, etag="*" .

Aşağıdaki kod parçacığında, contoso-hub-1 ' deki test cihazının cihaz ikizi özelliklerini güncelleştirmek üzere zamanlanan bir iş için istek ve yanıt gösterilmektedir:

PUT https://contoso-hub-1.azure-devices.net/jobs/v2/job02?api-version=2018-06-30 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"}

İşlerin ilerleme durumunu sorgulama

Aşağıdaki kod parçacığında, işleri sorgulamak için HTTPS 1,1 istek ayrıntıları gösterilmektedir:

GET /jobs/v2/query?api-version=2018-06-30[&jobType=<jobType>][&jobStatus=<jobStatus>][&pageSize=<pageSize>][&continuationToken=<continuationToken>]

Authorization: <config.sharedAccessSignature>
Content-Type: application/json; charset=utf-8

ContinuationToken, yanıttan sağlanır.

Her cihazda iş yürütme durumunu sorgulama işlemini cihaz İKESİ , işler ve ileti yönlendirme için IoT Hub sorgu dilinikullanarak yapabilirsiniz.

İş özellikleri

Aşağıdaki listede, işler veya iş sonuçları sorgulanırken kullanılabilecek özellikler ve ilgili açıklamalar gösterilmektedir.

Özellik Açıklama
No İş için uygulama KIMLIĞI belirtildi.
startTime Uygulama için başlangıç saati (ISO-8601).
endTime İşin tamamlandığı tarih (ISO-8601) IoT Hub. Yalnızca iş ' tamamlandı ' durumuna ulaştıktan sonra geçerlidir.
türüyle İş türleri:
scheduleUpdateTwin: istenen özelliklerden veya etiketlerin bir kümesini güncelleştirmek için kullanılan bir iş.
Scheduledevicemethod: bir cihaz-WINS kümesi üzerinde bir cihaz yöntemi çağırmak için kullanılan bir iş.
durum İşin geçerli durumu. Durum için olası değerler:
bekliyor: zamanlanan ve iş hizmeti tarafından çekilmek üzere bekleniyor.
zamanlandı: gelecekte bir zaman için zamanlandı.
çalışıyor: Şu anda etkin iş.
iptal edildi: iş iptal edildi.
başarısız: iş başarısız oldu.
tamamlandı: iş tamamlandı.
deviceJobStatistics İşin yürütülmesiyle ilgili istatistikler.
Devicejobstatistics özellikleri:
Devicejobstatistics. deviceCount: işteki cihaz sayısı.
Devicejobstatistics. failedCount: işin başarısız olduğu cihaz sayısı.
Devicejobstatistics. succeededCount: işin başarılı olduğu cihaz sayısı.
Devicejobstatistics. runningCount: Şu anda işi çalıştıran cihazların sayısı.
Devicejobstatistics. pendingCount: işi çalıştırmak için bekleyen cihazların sayısı.

Ek başvuru malzemeleri

IoT Hub geliştirici kılavuzundaki diğer başvuru konuları şunları içerir:

Sonraki adımlar

Bu makalede açıklanan kavramların bazılarını denemek için aşağıdaki IoT Hub öğreticisine bakın: