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.
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átortAND
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
- Ismerje meg, hogyan rendezheti az eszközhöz csatlakoztatott és nem csatlakoztatott eseményeket
- Az útválasztási IoT Hub-események és -üzenetek közötti különbségek összehasonlítása
- További információ arról, hogyan használhatja az Event Gridet és az Azure Monitort az IoT Hubhoz való eszközkapcsolat figyelésére, diagnosztizálására és hibaelhárítására