Usługa Azure IoT Hub jako źródło usługi Event Grid

Ten artykuł zawiera właściwości i schemat zdarzeń usługi Azure IoT Hub. Aby zapoznać się ze schematami zdarzeń, zobacz Schemat zdarzeń usługi Azure Event Grid.

Dostępne typy zdarzeń

Usługa Azure IoT Hub emituje następujące typy zdarzeń:

Typ zdarzenia opis
Microsoft.Devices.DeviceCreated Publikowane w przypadku zarejestrowania urządzenia w centrum IoT.
Microsoft.Devices.DeviceDeleted Publikowane w przypadku usunięcia urządzenia z centrum IoT.
Microsoft.Devices.DeviceConnected Publikowane w przypadku połączenia urządzenia z centrum IoT.
Microsoft.Devices.DeviceDisconnected Publikowane w przypadku rozłączenia urządzenia z centrum IoT.
Microsoft.Devices.DeviceTelemetry Opublikowane po wysłaniu komunikatu telemetrii do centrum IoT Hub.

Przykładowe zdarzenie

Schematy dla zdarzeń Device Połączenie ed i DeviceDisconnected mają taką samą strukturę. To przykładowe zdarzenie pokazuje schemat zdarzenia zgłoszonego, gdy urządzenie jest połączone z centrum IoT:

[{
  "id": "f6bbf8f4-d365-520d-a878-17bf7238abd8", 
  "source": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>", 
  "subject": "devices/LogicAppTestDevice", 
  "type": "Microsoft.Devices.DeviceConnected", 
  "time": "2018-06-02T19:17:44.4383997Z", 
  "data": {
    "deviceConnectionStateEventInfo": {
      "sequenceNumber":
        "000000000000000001D4132452F67CE200000002000000000000000000000001"
    },
    "hubName": "egtesthub1",
    "deviceId": "LogicAppTestDevice",
    "moduleId" : "DeviceModuleID"
  }, 
  "specversion": "1.0"
}]

Zdarzenie DeviceTelemetry jest zgłaszane po wysłaniu zdarzenia telemetrii do usługi IoT Hub. Poniżej przedstawiono przykładowy schemat dla tego zdarzenia.

[{
  "id": "9af86784-8d40-fe2g-8b2a-bab65e106785",
  "source": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>", 
  "subject": "devices/LogicAppTestDevice", 
  "type": "Microsoft.Devices.DeviceTelemetry",
  "time": "2019-01-07T20:58:30.48Z",
  "data": {        
      "body": {            
          "Weather": {                
              "Temperature": 900            
          },
          "Location": "USA"        
      },
        "properties": {            
          "Status": "Active"        
        },
        "systemProperties": {            
            "iothub-content-type": "application/json",
            "iothub-content-encoding": "utf-8",
            "iothub-connection-device-id": "d1",
            "iothub-connection-auth-method": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
            "iothub-connection-auth-generation-id": "123455432199234570",
            "iothub-enqueuedtime": "2019-01-07T20:58:30.48Z",
            "iothub-message-source": "Telemetry"        
        }    
    },
  "specversion": "1.0"
}]

Schematy zdarzeń DeviceCreated i DeviceDeleted mają taką samą strukturę. To przykładowe zdarzenie pokazuje schemat zdarzenia zgłoszonego podczas rejestrowania urządzenia w centrum IoT:

[{
  "id": "56afc886-767b-d359-d59e-0da7877166b2",
  "source": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
  "subject": "devices/LogicAppTestDevice",
  "type": "Microsoft.Devices.DeviceCreated",
  "time": "2018-01-02T19:17:44.4383997Z",
  "data": {
    "twin": {
      "deviceId": "LogicAppTestDevice",
      "etag": "AAAAAAAAAAE=",
      "deviceEtag": "null",
      "status": "enabled",
      "statusUpdateTime": "0001-01-01T00:00:00",
      "connectionState": "Disconnected",
      "lastActivityTime": "0001-01-01T00:00:00",
      "cloudToDeviceMessageCount": 0,
      "authenticationType": "sas",
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      },
      "version": 2,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2018-01-02T19:17:44.4383997Z"
          },
          "$version": 1
        },
        "reported": {
          "$metadata": {
            "$lastUpdated": "2018-01-02T19:17:44.4383997Z"
          },
          "$version": 1
        }
      }
    },
    "hubName": "egtesthub1",
    "deviceId": "LogicAppTestDevice"
  },
  "specversion": "1.0"
}]

Właściwości zdarzenia

Wszystkie zdarzenia zawierają te same dane najwyższego poziomu:

Właściwość Type opis
id string Unikatowy identyfikator zdarzenia.
source string Pełna ścieżka zasobu do źródła zdarzeń. To pole nie jest możliwe do zapisu. Ta wartość jest podawana przez usługę Event Grid.
subject string Zdefiniowana przez wydawcę ścieżka do tematu zdarzenia.
type string Jeden z zarejestrowanych typów zdarzeń dla tego źródła zdarzeń.
time string Czas generowania zdarzenia na podstawie czasu UTC dostawcy.
data obiekt Dane zdarzeń usługi IoT Hub.
specversion string Wersja specyfikacji schematu CloudEvents.

W przypadku wszystkich zdarzeń usługi IoT Hub obiekt danych zawiera następujące właściwości:

Właściwość Type opis
hubName string Nazwa centrum IoT Hub, w którym urządzenie zostało utworzone lub usunięte.
deviceId string Unikatowy identyfikator urządzenia. Ten ciąg uwzględniający wielkość liter może zawierać maksymalnie 128 znaków i obsługuje znaki alfanumeryczne ASCII 7-bitowe oraz następujące znaki specjalne: - : . + % _ # * ? ! ( ) , = @ ; $ '.

Zawartość obiektu danych jest inna dla każdego wydawcy zdarzeń.

W przypadku zdarzeń device Połączenie ed i Device Disconnected IoT Hub obiekt danych zawiera następujące właściwości:

Właściwość Type opis
moduleId string Unikatowy identyfikator modułu. To pole jest danymi wyjściowymi tylko dla urządzeń modułów. Ten ciąg uwzględniający wielkość liter może zawierać maksymalnie 128 znaków i obsługuje znaki alfanumeryczne ASCII 7-bitowe oraz następujące znaki specjalne: - : . + % _ # * ? ! ( ) , = @ ; $ '.
deviceConnectionStateEventInfo obiekt Informacje o zdarzeniu stanu połączenia urządzenia
sequenceNumber string Liczba, która pomaga wskazać kolejność zdarzeń podłączonych do urządzenia lub rozłączonych urządzeń. Najnowsze zdarzenie będzie miało numer sekwencji, który jest wyższy niż poprzednie zdarzenie. Ta liczba może ulec zmianie o więcej niż 1, ale ściśle rośnie. Zobacz , jak używać numeru sekwencji.

W przypadku zdarzenia usługi IoT Hub telemetrii urządzenia obiekt danych zawiera komunikat urządzenie-chmura w formacie komunikatu usługi IoT Hub i ma następujące właściwości:

Właściwość Type opis
body string Zawartość komunikatu z urządzenia.
properties string Właściwości aplikacji to ciągi zdefiniowane przez użytkownika, które można dodać do komunikatu. Te pola są opcjonalne.
system properties string Właściwości systemu ułatwiają identyfikowanie zawartości i źródła komunikatów. Komunikat telemetrii urządzenia musi być w prawidłowym formacie JSON z wartością contentType ustawioną na wartość JSON i contentEncoding ustawioną na wartość UTF-8 we właściwościach systemu komunikatów. Jeśli to nie jest ustawione, usługa IoT Hub napisze komunikaty w formacie zakodowanym w formacie base 64.

W przypadku zdarzeń Usługi IoT Hub utworzonych urządzeń i usuniętych urządzeń obiekt danych zawiera następujące właściwości:

Właściwość Type Opis
twin obiekt Informacje o bliźniaczej reprezentacji urządzenia będącej reprezentacją w chmurze metadanych urządzenia aplikacji.
deviceID string Unikatowy identyfikator bliźniaczej reprezentacji urządzenia.
etag string Moduł sprawdzania poprawności zapewniający spójność aktualizacji bliźniaczej reprezentacji urządzenia. Każdy element etag ma gwarancję, że będzie unikatowy dla bliźniaczej reprezentacji urządzenia.
deviceEtag string Moduł sprawdzania poprawności zapewniający spójność aktualizacji rejestru urządzeń. Każdy tag deviceEtag ma gwarancję unikatowości dla rejestru urządzeń.
status string Wskazuje, czy bliźniacze reprezentacje urządzenia są włączone, czy wyłączone.
statusUpdateTime string Sygnatura czasowa ISO8601 ostatniej aktualizacji stanu bliźniaczej reprezentacji urządzenia.
connectionState string Wskazuje, czy urządzenie jest połączone, czy odłączone.
lastActivityTime string Znacznik czasu ISO8601 ostatniego działania.
cloudToDeviceMessageCount integer Liczba komunikatów z chmury do urządzeń wysyłanych do tego urządzenia.
authenticationType string Typ uwierzytelniania używany dla tego urządzenia: SAS, SelfSignedlub CertificateAuthority.
x509Thumbprint string Odcisk palca to unikatowa wartość certyfikatu x509, często używana do znajdowania określonego certyfikatu w magazynie certyfikatów. Odcisk palca jest generowany dynamicznie przy użyciu algorytmu SHA1 i nie istnieje fizycznie w certyfikacie.
primaryThumbprint string Podstawowy odcisk palca certyfikatu x509.
secondaryThumbprint string Pomocniczy odcisk palca certyfikatu x509.
version integer Liczba całkowita, która jest zwiększana o jedną za każdym razem, gdy bliźniacza reprezentacja urządzenia jest aktualizowana.
desired obiekt Część właściwości, które mogą być zapisywane tylko przez zaplecze aplikacji i odczytywane przez urządzenie.
reported obiekt Część właściwości, które mogą być zapisywane tylko przez urządzenie i odczytywane przez zaplecze aplikacji.
lastUpdated string Sygnatura czasowa ISO8601 ostatniej aktualizacji właściwości bliźniaczej reprezentacji urządzenia.

Samouczki i poradniki

Nazwa opis
Wysyłanie powiadomień e-mail dotyczących zdarzeń usługi Azure IoT Hub przy użyciu usługi Logic Apps Aplikacja logiki wysyła wiadomość e-mail z powiadomieniem za każdym razem, gdy urządzenie jest dodawane do usługi IoT Hub.
Reagowanie na zdarzenia usługi IoT Hub przy użyciu usługi Event Grid w celu wyzwalania akcji Omówienie integracji usługi IoT Hub z usługą Event Grid.
Zamawianie zdarzeń połączonych urządzeń i odłączenia urządzenia Przedstawia sposób zamawiania zdarzeń stanu połączenia urządzenia.

Następne kroki