Megosztás a következőn keresztül:


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 olyan Azure szolgáltatásokhoz, mint az Azure Functions és az Azure Logic Apps, és képes eseményriasztásokat küldeni nem-Azure szolgáltatásoknak webhorgok használatával. Az Event Grid által támogatott eseménykezelők teljes listájáért lásd : Mi az Azure Event Grid?.

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.

Az Azure Event Grid architektúráját bemutató ábra.

Regionális 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ény típusa Leírás
Microsoft.Devices.EszközLétrehozva Egy eszköz IoT-központba regisztrálásakor van közzétéve.
Microsoft.Eszközök.EszközTörölve 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 Közzétéve, amikor az eszköz telemetriai üzenetét elküldik egy IoT Hubnak

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 az Event Grid és 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 további információt az Azure Event Grid eseménysémában talál.

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 nem érzékeny a kis- és nagybetűkre. 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 eszközről a felhőbe irányuló IoT Hub-üzenetek üzeneteinek kibővítése című témakört.

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 IoT Hub mint Event Grid-forrás tartalmazza.

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 a témaköröket a "Kezdődik ezzel" (előtag) és a "Végződik ezzel" (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 IoT Hub az üzenetformátum használatával tölti ki az adattartalmat. A telemetriai üzenet tartalma alapján kiválaszthatja, hogy mely események érkeznek. Példák: 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 kis- és nagybetű érzéketlen.

Eszköztelemetriaesemények esetén az IoT Hub létrehozza az alapértelmezett RouteToEventGridüzenetútvonalat az előfizetés alapján. 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.

További információ az eszköz állapotának az Event Griddel való monitorozásáról: Eszközkapcsolat állapotának figyelése.

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 akkor jelent kapcsolatállapot-változási eseményeket, ha azok 60 másodperc különbséggel következnek be egymástól. Ez a viselkedés olyan kimenetelekhez vezethet, mint például több eszközcsatlakozási esemény, amely között nincsenek eszközlevá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.

Következő lépések