Reagáljon az IoT Hub-eseményekre az Event Grid használatával a műveletek aktiválásához

Az Azure IoT Hub és az Azure Event Grid integrációja révén eseményekkel kapcsolatos értesítéseket küldhet más szolgáltatásokba, és alsóbb rétegbeli folyamatokat aktiválhat. Üzleti alkalmazásait úgy konfigurálhatja, hogy figyeljék az IoT Hub-eseményeket, így megbízható, skálázható és biztonságos módon reagálhat a kritikus eseményekre. Készíthet például olyan alkalmazást, amely frissít egy adatbázist, létrehoz egy munkajegyet és e-mail-értesítést küld minden alkalommal, amikor új IoT-eszközt regisztrálnak az IoT-központba.

Az Azure Event Grid egy teljes körűen felügyelt esemény-útválasztási szolgáltatás, amely közzétételi-előfizetési modellt használ. Az Event Grid beépített támogatást nyújt az Azure-szolgáltatásokhoz, például az Azure Functionshoz és az Azure Logic Appshez, és webhookok használatával eseményriasztásokat küldhet a nem Azure-szolgáltatásoknak. Az Event Grid által támogatott eseménykezelők teljes listáját az Azure Event Grid bemutatása tartalmazza.

Az integrációt tárgyaló videó megtekintéséhez tekintse meg az Azure IoT Hub és az Azure Event Grid integrációját ismertető videót.

Diagram that shows Azure Event Grid architecture.

Régiónkénti rendelkezésre állás

Az Event Grid-integráció az Event Gridet támogató régiókban található IoT Hubok esetében érhető el. A régiók legújabb listájáért tekintse meg a régiók szerint elérhető termékeket.

Eseménytípusok

Az IoT Hub a következő eseménytípusokat teszi közzé:

Eseménytípus Leírás
Microsoft.Devices.DeviceCreated Egy eszköz IoT-központba regisztrálásakor van közzétéve.
Microsoft.Devices.DeviceDeleted Egy eszköz IoT-központból való törlésekor van közzétéve.
Microsoft.Devices.DeviceConnected Egy eszköz IoT-központhoz csatlakoztatásakor van közzétéve.
Microsoft.Devices.DeviceDisconnected Egy eszköz IoT-központról való leválasztásakor van közzétéve.
Microsoft.Devices.DeviceTelemetry Eszköz-telemetriai üzenet IoT-központba küldésekor van közzétéve.

Az Azure Portal vagy az Azure CLI használatával konfigurálhatja, hogy mely eseményeket tegye közzé az egyes IoT Hubokból. Például próbálja ki az Oktatóanyag e-mail-értesítések küldése az Azure IoT Hub-eseményekről a Logic Apps használatával.

Eseményséma

Az IoT Hub-események tartalmazzák az eszköz életciklusának változásaira való reagáláshoz szükséges összes információt. Az IoT Hub-események azonosításához ellenőrizze, hogy az eventType tulajdonság a Microsoft.Devices szolgáltatással kezdődik-e. Az Event Grid eseménytulajdonságainak használatáról az Event Grid eseményséma nyújt további információt.

Eszközhöz csatlakoztatott séma

Az alábbi példa egy eszközhöz csatlakoztatott esemény sémáját mutatja be:

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

Eszköz telemetriai sémája

Az eszköz telemetriai üzeneteinek érvényes JSON-formátumban kell lenniük, és az üzenetrendszer tulajdonságaiban a contentType értéke application/json, a contentEncoding pedig UTF-8. Mindkét tulajdonság megkülönbözteti a kis- és nagybetűket. Ha a tartalomkódolás nincs beállítva, akkor az IoT Hub a 64-es alapformátumban írja az üzeneteket.

A végpont Event Gridként való kiválasztásával bővítheti az eszköz telemetriai eseményeit, mielőtt közzétennénk őket az Event Gridben. További információkért tekintse meg az üzenet bővítését.

Az alábbi példa egy eszköz telemetriai esemény sémáját mutatja be:

[{  
  "id": "9af86784-8d40-fe2g-8b2a-bab65e106785",
  "topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
  "subject": "devices/LogicAppTestDevice",
  "eventType": "Microsoft.Devices.DeviceTelemetry",
  "eventTime": "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"
        }
  },
  "dataVersion": "",
  "metadataVersion": "1"
}]

Eszköz által létrehozott séma

Az alábbi példa egy eszköz által létrehozott esemény sémáját mutatja be:

[{
  "id": "56afc886-767b-d359-d59e-0da7877166b2",
  "topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
  "subject": "devices/LogicAppTestDevice",
  "eventType": "Microsoft.Devices.DeviceCreated",
  "eventTime": "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"
  },
  "dataVersion": "1",
  "metadataVersion": "1"
}]

Figyelmeztetés

Az eszközlétrehozási eseményhez társított ikeradatok alapértelmezett konfigurációk, és nem szabad az újonnan létrehozott eszköz tényleges authenticationType és egyéb eszköztulajdonságaira támaszkodni. Az authenticationType újonnan létrehozott eszközökhöz és egyéb eszköztulajdonságokhoz használja az Azure IoT SDK-kban biztosított Register Manager API-t.

Az egyes tulajdonságok részletes leírását az Azure Event Grid IoT Hub-eseménysémában találja.

Események szűrése

Az Event Grid lehetővé teszi az eseménytípusok, témák és adattartalmak szűrését . Az Event Grid-előfizetés létrehozásakor dönthet úgy, hogy feliratkozik a kiválasztott IoT-eseményekre.

  • Esemény típusa: Az IoT Hub-eseménytípusok listájához tekintse meg az eseménytípusokat.
  • Tárgy: Az IoT Hub-események esetében a tárgy az eszköz neve. A tárgy formátumot devices/{deviceId}vesz fel. Szűrheti az alanyokat a kezdőbetű (előtag) és a végződés (utótag) egyezések alapján. A szűrő operátort AND használ, így az előtagnak és az utótagnak megfelelő tárgyú eseményeket a rendszer kézbesíti az előfizetőnek.
  • Adattartalom: Az adattartalmat az IoT Hub tölti ki az üzenetformátum használatával. A telemetriai üzenet tartalma alapján kiválaszthatja, hogy mely események érkeznek. Ilyenek például a speciális szűrés. A telemetriai üzenettörzs szűréséhez a contentType értéket application/json és contentEncoding értékre kell állítania az üzenetrendszer tulajdonságai között UTF-8 értékre. Mindkét tulajdonság megkülönbözteti a kis- és nagybetűket.

Eszköztelemetriaesemények esetén az IoT Hub létrehozza az előfizetés alapján a RouteToEventGrid nevű alapértelmezett üzenetútvonalat. Ha a telemetriai adatok elküldése előtt szeretné szűrni az üzeneteket, frissítse az útválasztási lekérdezést.

Az eszközkapcsolati állapot eseményeinek korlátozásai

Az eszközhöz csatlakoztatott és az eszközről leválasztott események az MQTT vagy AMQP protokollt használó, vagy a WebSocketeken keresztüli protokollokat használó eszközök számára érhetők el. A csak HTTPS-lel küldött kérések nem aktiválják az eszköz kapcsolati állapotának értesítéseit.

Az eszköz állapotának az Event Griddel való monitorozásáról további információt az eszköz kapcsolati állapotának figyelése című témakörben talál.

Eszközkapcsolat állapotának időköze

Az IoT Hub megpróbálja jelenteni az egyes eszközkapcsolati állapotváltozási eseményeket, de előfordulhat, hogy néhány kimarad. Az IoT Hub legalább 60 másodperccel egymástól eltérő kapcsolatállapot-változási eseményeket jelent. Ez a viselkedés olyan kimenetelekhez vezethet, mint például a jelentett több eszközcsatlakozási esemény, amely között nincsenek eszközválasztási események.

Tippek események felhasználásához

Az IoT Hub-eseményeket kezelő alkalmazásokkal érdemes figyelembe venni az alábbi javaslatokat:

  • Több feliratkozás is konfigurálható úgy, hogy ugyanahhoz az eseménykezelőhöz irányítsák az eseményeket, ezért nem szabad feltételezni, hogy az események egy adott forrásból származnak. Az üzenet témakörének vizsgálatával mindig ellenőrizni kell, hogy az abból az IoT-központból érkezett, ahonnan várta.
  • Nem szabad feltételezni, hogy minden kapott esemény a várt típusú. Az eventType értéket mindig ellenőrizni kell az üzenet feldolgozása előtt.
  • Megtörténhet, hogy az üzenetek más sorrendben, vagy késve érkeznek. Az etag mezővel megtudhatja, hogy az objektumok adatai naprakészek-e az eszköz által létrehozott vagy eszköz által törölt eseményekhez.

További lépések