Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan integrera Azure IoT Hub med Azure Event Grid så att du kan skicka händelseaviseringar till andra tjänster och aktivera underordnade processer. Konfigurera dina företagsprogram så att de lyssnar efter IoT Hub-händelser. Då kan du reagera på kritiska händelser på ett tillförlitligt, skalbart och säkert sätt. Du kan till exempel skapa ett program som uppdaterar en databas, skapar ett arbetsärende och levererar en e-postavisering varje gång en ny IoT-enhet registreras i din IoT-hubb.
Azure Event Grid är en fullständigt hanterad händelseroutningstjänst som använder en publicera-och-prenumerera-modell. Event Grid har inbyggt stöd för Azure-tjänster som Azure Functions och Azure Logic Apps, och du kan skicka händelseaviseringar till tjänster utanför Azure med hjälp av webhooks. En fullständig lista över de händelsehanterare som Event Grid stöder finns i Vad är Azure Event Grid?.
Om du vill titta på en video som diskuterar den här integreringen kan du läsa Azure IoT Hub-integrering med Azure Event Grid.
Regional tillgänglighet
Event Grid-integreringen är tillgänglig för IoT-hubbar som finns i de regioner där Event Grid stöds. Den senaste listan över regioner finns i Produkter tillgängliga per region.
Händelsetyper
IoT Hub publicerar följande händelsetyper:
| Händelsetyp | Beskrivning |
|---|---|
| Microsoft.Devices.DeviceCreated | Publiceras när en enhet registreras i en IoT-hubb. |
| Microsoft.Devices.EnhetRaderad | Publiceras när en enhet tas bort från en IoT-hubb. |
| Microsoft.Devices.DeviceConnected | Publiceras när en enhet är ansluten till en IoT-hubb. |
| Microsoft.Devices.DeviceDisconnected | Publiceras när en enhet kopplas bort från en IoT-hubb. |
| Microsoft.Devices.DeviceTelemetry | Publicerad när ett enhetstelemetrimeddelande skickas till en IoT-hubb |
Använd antingen Azure Portal eller Azure CLI för att konfigurera vilka händelser som ska publiceras från varje IoT-hubb. Prova till exempel självstudien Skicka e-postmeddelanden om Azure IoT Hub-händelser med Event Grid och Logic Apps.
Händelseschema
IoT Hub-händelser innehåller all information du behöver för att svara på ändringar i enhetens livscykel. Du kan identifiera en IoT Hub-händelse genom att kontrollera att egenskapen eventType börjar med Microsoft.Devices. Mer information om hur du använder Event Grid-händelseegenskaper finns i Händelseschema för Azure Event Grid.
Enhetsanslutet schema
I följande exempel visas schemat för en enhetsansluten händelse:
[{
"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"
}]
Schema för enhetstelemetri
Enhetens telemetrimeddelanden måste vara i ett giltigt JSON-format med contentType inställt på application/json och contentEncoding inställt på UTF-8 i egenskaperna för meddelandesystemet. Båda dessa egenskaper är skiftlägesokänsliga. Om innehållskodningen inte har angetts skriver IoT Hub meddelandena i bas 64-kodat format.
Du kan utöka enhetstelemetrihändelser innan de publiceras till Event Grid genom att välja slutpunkten som Event Grid. Mer information finns i Meddelandeberikanden för IoT Hub-meddelanden från enhet till moln.
I följande exempel visas schemat för en enhetstelemetrihändelse:
[{
"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"
}]
Schema som skapats av enheten
I följande exempel visas schemat för en händelse som skapats av en enhet:
[{
"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"
}]
Varning
Tvillingdata som är associerade med en händelse för enhetsskapande är en standardkonfiguration och bör inte användas för faktiska authenticationType och andra enhetsegenskaper i en nyskapade enhet. För authenticationType och andra enhetsegenskaper i en nyskapad enhet använder du registerhanterarens API som anges i Azure IoT SDK:er.
En detaljerad beskrivning av varje egenskap finns i Azure IoT Hub som en Event Grid-källa.
Filtrera händelser
Event Grid möjliggör filtrering av händelsetyper, ämnen och datainnehåll. När du skapar Event Grid-prenumerationen kan du välja att prenumerera på valda IoT-händelser.
- Händelsetyp: En lista över händelsetyper för IoT Hub finns i Händelsetyper.
- Ämne: För IoT Hub-händelser är ämnet enhetsnamnet. Ämnet har formatet
devices/{deviceId}. Du kan filtrera ämnen utifrån Börjar med (prefix) och Slutar med (suffix) matchningar. Filtret använder enANDoperator, så händelser med ett ämne som matchar både prefixet och suffixet levereras till prenumeranten. - Datainnehåll: IoT Hub fyller i datainnehållet med hjälp av meddelandeformatet. Du kan välja vilka händelser som levereras baserat på innehållet i telemetrimeddelandet. Exempel finns i Avancerad filtrering. För filtrering på telemetrimeddelandetexten måste du ange contentType till application/json och contentEncoding till UTF-8 i egenskaperna för meddelandesystemet. Båda dessa egenskaper är skiftlägesokänsliga.
För enhetstelemetrihändelser skapar IoT Hub standardmeddelandevägenRouteToEventGrid baserat på prenumerationen. Om du vill filtrera meddelanden innan telemetridata skickas uppdaterar du routningsfrågan.
Begränsningar för enhetsanslutningstillståndshändelser
Anslutnings- och frånkopplingshändelser är tillgängliga för enheter som ansluter med antingen MQTT- eller AMQP-protokollet, eller något av dessa protokoll via WebSockets. Begäranden som görs endast med HTTPS utlöser inte meddelanden om enhetsanslutningstillstånd.
Mer information om övervakning av enhetsstatus med Event Grid finns i Övervaka enhetens anslutningsstatus.
Intervall för enhetsanslutningstillstånd
IoT Hub försöker rapportera varje ändringshändelse för enhetsanslutningstillstånd, men vissa kan missas. IoT Hub rapporterar åtminstone ändringshändelser för anslutningstillstånd som inträffar 60 sekunder från varandra. Det här beteendet kan leda till konsekvenser, till exempel där flera enhetsanslutningar rapporteras utan enhetsfrånkopplingshändelser mellan dem.
Tips för att konsumera händelser
Program som hanterar IoT Hub-händelser bör följa de här rekommendationerna:
- Flera prenumerationer kan konfigureras för att dirigera händelser till samma händelsehanterare, så anta inte att händelser kommer från en viss källa. Kontrollera alltid meddelandets ämne för att se till att det kommer från den IoT-hubb som du förväntar dig.
- Anta inte att alla händelser som du tar emot är av de typer som du förväntar dig. Kontrollera alltid händelsetypen innan du bearbetar meddelandet.
- Meddelanden kan tas emot i annan ordning eller efter en fördröjning. Använd fältet etag för att förstå om din information om objekt är uppdaterad för händelser som skapats eller tagits bort av enheten.