Aracılığıyla paylaş


Azure IoT Hub telemetri dışı olay şemaları

Bu makalede, Azure IoT Hub tarafından yayılan telemetri dışı olaylar için özellikler ve şemalar sağlanır. Telemetri dışı olaylar, IoT Hub'ın cihazlarınızla ilişkili belirli durum değişikliklerine yanıt olarak bu olayları yaydığı cihazdan buluta ve buluttan cihaza iletilerinden farklıdır. Örneğin, oluşturulan veya silinen bir cihaz veya modül gibi yaşam döngüsü değişiklikleri ya da bir cihaz ya da modülün bağlanması veya bağlantısının kesilmesi gibi bağlantı durumu değişiklikleri.

İleti yönlendirmeyi kullanarak telemetri dışı olayları yönlendirebilir veya Azure Event Grid'i kullanarak telemetri dışı olaylara ulaşabilirsiniz. IoT Hub ileti yönlendirme hakkında daha fazla bilgi edinmek için bkz. Event Grid kullanarak IoT Hub ileti yönlendirme ve IoT Hub olaylarına tepki verme.

Bu makaledeki olay örnekleri Azure CLI komutu kullanılarak az iot hub monitor-events yakalanır. İleti yönlendirme uç noktasına ulaşan olaylara dahil edilen özelliklerin bir alt kümesini görebilirsiniz.

Kullanılabilir olay türleri

Azure IoT Hub, telemetri dışı olayları aşağıdaki kategorilerde yayar:

Olay kategorisi Açıklama
Cihaz bağlantı durumu olayları Bir cihaz IoT hub'ına bağlandığında veya bağlantı kesildiğinde yayılır.
Cihaz yaşam döngüsü olayları IoT hub'ından bir cihaz veya modül oluşturulduğunda veya silindiğinde yayılır.
Cihaz ikizi değişiklik olayları Cihaz veya modül ikizi değiştirildiğinde veya değiştirildiğinde yayılır.
Dijital ikiz değişiklik olayları Bir cihazın veya modülün dijital ikizi değiştirildiğinde veya değiştirildiğinde yayılır.

Ortak olay özellikleri

Telemetri dışı olaylar birçok ortak özelliği paylaşır.

Sistem özellikleri

IoT Hub her olay için aşağıdaki sistem özelliklerini ayarlar.

Özellik Türü Açıklama Yönlendirme sorgusu için anahtar sözcük
içerik kodlama Dize utf-8 $contentEncoding
içerik türü Dize application/json $contentType
correlation-id Dize Olayı tanımlayan benzersiz bir kimlik. $correlationId
kullanıcı kimliği Dize Olayı oluşturan IoT Hub'ın adı. $userId
ıothub-bağlantı-cihaz kimliği Dize Cihaz kimliği. $connectionDeviceId
iothub-connection-module-id Dize Modül kimliği. Bu özellik yalnızca modül yaşam döngüsü ve ikiz olayları için çıkıştır. $connectionModuleId
iothub-enqueuedtime Numara Bildirimin gönderildiği tarih ve saat. Yönlendirme sorgularında ISO8601 zaman damgası kullanın; örneğin,$enqueuedTime > "2022-06-06T22:56:06Z" $enqueuedTime
iothub-message-source Dize İleti kaynağını tanımlayan olay kategorisi. Örneğin, deviceLifecycleEvents. Yok

Uygulama özellikleri

IoT Hub her olay için aşağıdaki uygulama özelliklerini ayarlar.

Özellik Türü Açıklama
deviceId Dize Cihaz kimliği.
hubName Dize Olayı oluşturan IoT Hub'ın adı.
iothub-message-schema Dize Olay kategorisiyle ilişkili ileti şeması; örneğin, deviceLifecycleNotification.
moduleId Dize Modül kimliği. Bu özellik yalnızca modül yaşam döngüsü ve ikiz değişiklik olayları için çıkıştır.
operationTimestamp Dize İşlemin ISO8601 zaman damgası.
opType Dize Olayı oluşturan işlemin tanımlayıcısı. Örneğin createDeviceIdentity veya deleteDeviceIdentity.

Yönlendirme sorgularında özellik adını kullanın. Örneğin, deviceId = "my-device".

Bağlantı durumu olayları

Bir cihaz veya modül IoT hub'ına bağlandığında veya bağlantı kesildiğinde bağlantı durumu olayları yayılır.

Uygulama özellikleri: Aşağıdaki tabloda, bağlantı durumu olayları için uygulama özelliklerinin nasıl ayarlandığı gösterilmektedir:

Özellik Değer
iothub-message-schema deviceConnectionStateNotification
opType deviceConnected veya deviceDisconnected

Hem modüller hem de cihazlar, bağlantı durumu olaylarını raporlamak için ve deviceDisconnected uygulama özelliklerini kullanırdeviceConnected. Olay bir modülden geldiyse, olay bir moduleId özellik de içerir. Özellik yoksa moduleId olay bir cihazdan geldi demektir.

Sistem özellikleri: Aşağıdaki tabloda, bağlantı durumu olayları için sistem özelliklerinin nasıl ayarlandığı gösterilmektedir:

Özellik Değer
iothub-message-source deviceConnectionStateEvents

Gövde: Gövde bir sıra numarası içerir. Sıra numarası, onaltılık bir sayının dize gösterimidir. Daha büyük sayıyı tanımlamak için dize karşılaştırmasını kullanabilirsiniz. Dizeyi onaltılık sayıya dönüştürüyorsanız, sayı 256 bitlik bir sayı olacaktır. Sıra numarası kesinlikle artıyor, bu nedenle en son olay eski olaylardan daha yüksek bir sayıya sahip. Sık sık cihaz bağlantılarınız ve bağlantınız kesiliyorsa ve aşağı akış eylemini tetiklemede yalnızca en son olayın kullanıldığından emin olmak istiyorsanız bu yararlı olur.

Örnek

Aşağıdaki JSON, bir cihaz bağlantısı kesildiğinde ortaya çıkan bir cihaz bağlantı durumu olayını gösterir.

{
    "event": {
        "origin": "contoso-device-1",
        "module": "",
        "interface": "",
        "component": "",
        "properties": {
            "system": {
                "content_encoding": "utf-8",
                "content_type": "application/json",
                "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd",
                "user_id": "contoso-routing-hub"
            },
            "application": {
                "hubName": "contoso-routing-hub",
                "deviceId": "contoso-device-1",
                "opType": "deviceDisconnected",
                "iothub-message-schema": "deviceConnectionStateNotification",
                "operationTimestamp": "2022-06-01T18:43:04.5561024Z"
            }
        },
        "annotations": {
            "iothub-connection-device-id": "contoso-device-1",
            "iothub-enqueuedtime": 1654109018051,
            "iothub-message-source": "deviceConnectionStateEvents",
            "x-opt-sequence-number": 72,
            "x-opt-offset": "37344",
            "x-opt-enqueued-time": 1654109018176
        },
        "payload": {
            "sequenceNumber": "000000000000000001D8713FF7E0851400000002000000000000000000000007"
        }
    }
}

Cihaz yaşam döngüsü olayları

Cihaz yaşam döngüsü olayları, kimlik kayıt defterinden bir cihaz veya modül oluşturulduğunda veya silindiğinde yayılır. Cihaz yaşam döngüsü olaylarının ne zaman oluşturulduğu hakkında daha fazla ayrıntı için bkz . Cihaz ve modül yaşam döngüsü bildirimleri.

Uygulama özellikleri: Aşağıdaki tabloda, cihaz yaşam döngüsü olayları için uygulama özelliklerinin nasıl ayarlandığı gösterilmektedir:

Özellik Değer
iothub-message-schema deviceLifecycleNotification
opType Aşağıdaki değerlerden biri: createDeviceIdentity, deleteDeviceIdentity.

Hem modüller hem de cihazlar, bağlantı durumu olaylarını raporlamak için ve deleteDeviceIdentity uygulama özelliklerini kullanırcreateDeviceIdentity. Olay bir modülden geldiyse, olay bir moduleId özellik de içerir. Özellik yoksa moduleId olay bir cihazdan geldi demektir.

Sistem özellikleri: Aşağıdaki tabloda cihaz yaşam döngüsü olayları için sistem özelliklerinin nasıl ayarlandığı gösterilmektedir:

Özellik Değer
iothub-message-source deviceLifecycleEvents

Gövde: Gövde, cihaz ikizinin veya modül ikizinin bir gösterimini içerir. Cihaz kimliğini ve modül kimliğini, ikiz etag'ini, sürüm özelliğini ve ikizin etiketlerini, özelliklerini ve ilişkili meta verilerini içerir.

Örnek

Aşağıdaki JSON, bir modül oluşturulduğunda yayılan bir cihaz yaşam döngüsü olayını gösterir. Olay, Azure CLI komutu kullanılarak az iot hub monitor-events yakalanır.

{
    "event": {
        "origin": "contoso-device-2",
        "module": "module-1",
        "interface": "",
        "component": "",
        "properties": {
            "system": {
                "content_encoding": "utf-8",
                "content_type": "application/json",
                "correlation_id": "c5a4e6986c",
                "user_id": "contoso-routing-hub"
            },
            "application": {
                "hubName": "contoso-routing-hub",
                "deviceId": "contoso-device-2",
                "operationTimestamp": "2022-05-27T18:49:38.4904785Z",
                "moduleId": "module-1",
                "opType": "createDeviceIdentity",
                "iothub-message-schema": "deviceLifecycleNotification"
            }
        },
        "annotations": {
            "iothub-connection-device-id": "contoso-device-2",
            "iothub-connection-module-id": "module-1",
            "iothub-enqueuedtime": 1653677378534,
            "iothub-message-source": "deviceLifecycleEvents",
            "x-opt-sequence-number": 62,
            "x-opt-offset": "31768",
            "x-opt-enqueued-time": 1653677378643
        },
        "payload": {
            "deviceId": "contoso-device-2",
            "moduleId": "module-1",
            "etag": "AAAAAAAAAAE=",
            "version": 2,
            "properties": {
                "desired": {
                    "$metadata": {
                        "$lastUpdated": "0001-01-01T00:00:00Z"
                    },
                    "$version": 1
                },
                "reported": {
                    "$metadata": {
                        "$lastUpdated": "0001-01-01T00:00:00Z"
                    },
                    "$version": 1
                }
            }
        }
    }
}

Cihaz ikizi değişiklik olayları

Cihaz ikizi değişiklik olayları, bir cihaz ikizi veya modül ikizi güncelleştirildiğinde veya değiştirildiğinde yayılır. Bazı durumlarda, birkaç değişiklik tek bir olayda paketlenebilir. Daha fazla bilgi edinmek için bkz . Cihaz ikizi arka uç işlemleri veya Modül ikizi arka uç işlemleri.

Uygulama özellikleri: Aşağıdaki tabloda, cihaz ikizi değişiklik olayları için uygulama özelliklerinin nasıl ayarlandığı gösterilmektedir:

Özellik Değer
iothub-message-schema twinChangeNotification
opType Aşağıdaki değerlerden biri: replaceTwin veya updateTwin.

Sistem özellikleri: Aşağıdaki tabloda, cihaz ikizi değişiklik olayları için sistem özelliklerinin nasıl ayarlandığı gösterilmektedir:

Özellik Değer
iothub-message-source twinChangeEvents

Gövde: Bir güncelleştirmede gövde, ikizin sürüm özelliğini, güncelleştirilmiş etiketleri ve özellikleri ve bunların ilişkili meta verilerini içerir. Bir değiştirmede gövde cihaz kimliğini ve modül kimliğini, ikiz etag'ini, sürüm özelliğini ve cihaz veya modül ikizinin tüm etiketlerini, özelliklerini ve ilişkili meta verilerini içerir.

Örnek

Aşağıdaki JSON, istenen özelliğin bir güncelleştirmesi ve modül ikizinde bir etiket için yayılan bir ikiz değişiklik olayını gösterir. Olay, Azure CLI komutu kullanılarak az iot hub monitor-events yakalanır.

{
    "event": {
        "origin": "contoso-device-3",
        "module": "module-1",
        "interface": "",
        "component": "",
        "properties": {
            "system": {
                "content_encoding": "utf-8",
                "content_type": "application/json",
                "correlation_id": "4d1f1e2e74f",
                "user_id": "contoso-routing-hub"
            },
            "application": {
                "hubName": "contoso-routing-hub",
                "deviceId": "contoso-device-3",
                "operationTimestamp": "2022-06-01T22:27:50.2612586Z",
                "moduleId": "module-1",
                "iothub-message-schema": "twinChangeNotification",
                "opType": "updateTwin"
            }
        },
        "annotations": {
            "iothub-connection-device-id": "contoso-device-3",
            "iothub-connection-module-id": "module-1",
            "iothub-enqueuedtime": 1654122470282,
            "iothub-message-source": "twinChangeEvents",
            "x-opt-sequence-number": 17,
            "x-opt-offset": "12352",
            "x-opt-enqueued-time": 1654122470329
        },
        "payload": {
            "version": 7,
            "tags": {
                "tag1": "new value"
            },
            "properties": {
                "desired": {
                    "property1": "new value",
                    "$metadata": {
                        "$lastUpdated": "2022-06-01T22:27:50.2612586Z",
                        "$lastUpdatedVersion": 6,
                        "property1": {
                            "$lastUpdated": "2022-06-01T22:27:50.2612586Z",
                            "$lastUpdatedVersion": 6
                        }
                    },
                    "$version": 6
                }
            }
        }
    }
}

Sonraki adımlar