Sdílet prostřednictvím


Reakce na události ioT Hubu pomocí Event Gridu k aktivaci akcí

Azure IoT Hub se může integrovat s Azure Event Gridem, abyste mohli posílat oznámení o událostech jiným službám a aktivovat podřízené procesy. Nakonfigurujte obchodní aplikace na naslouchání událostem IoT Hubu, abyste mohli reagovat na kritické události a současně zajistili spolehlivost, škálovatelnost a zabezpečení. Například sestavíte aplikaci, která aktualizuje databázi, vytvoří pracovní lístek a doručí e-mailové oznámení pokaždé, když se do vašeho centra IoT (neboli IoT Hubu) zaregistruje nové zařízení IoT.

Azure Event Grid je plně spravovaná služba směrování událostí, která používá model publikování a odběru. Event Grid nabízí integrovanou podporu služeb Azure, jako jsou Azure Functions nebo Azure Logic Apps, a dokáže posílat upozornění na události do služeb mimo Azure s využitím webhooků. Úplný seznam obslužných rutin událostí, které Event Grid podporuje, najdete v tématu Co je Azure Event Grid?

Pokud se chcete podívat na video popisující tuto integraci, podívejte se na integraci služby Azure IoT Hub se službou Azure Event Grid.

Diagram znázorňující architekturu služby Azure Event Grid

Regionální dostupnost

Integrace Event Grid je dostupná pro centra IoT umístěná v oblastech, kde je služba Event Grid podporovaná. Nejnovější seznam oblastí najdete v tématu Produkty dostupné v jednotlivých oblastech.

Typy událostí

IoT Hub publikuje následující typy událostí:

Typ události Popis
Microsoft.Devices.DeviceCreated Publikuje se při zaregistrování zařízení do centra IoT (IoT Hub).
Microsoft.Devices.DeviceDeleted Publikuje se při odstranění zařízení ze centra IoT (IoT Hub).
Microsoft.Devices.DeviceConnected Publikuje se při připojení zařízení k centru IoT (IoT Hub).
Microsoft.Devices.DeviceDisconnected Publikuje se při odpojení zařízení od centra IoT (IoT Hub).
Microsoft.Devices.DeviceTelemetry Publikováno při odeslání zprávy telemetrie zařízení do IoT Hubu.

Ke konfiguraci událostí, které se mají publikovat z každého centra IoT, použijte Azure Portal nebo Azure CLI. Vyzkoušejte například kurz Odesílání e-mailových oznámení o událostech azure IoT Hubu pomocí Event Gridu a Logic Apps.

Schéma událostí

Události IoT Hubu obsahují všechny informace, které potřebujete k reakci na změny v životním cyklu zařízení. Událost IoT Hubu můžete identifikovat tak, že zkontrolujete, jestli vlastnost eventType začíná microsoft.Devices. Další informace o použití vlastností událostí Event Gridu najdete ve schématu událostí služby Azure Event Grid.

Schéma zařízení připojených

Následující příklad ukazuje schéma události připojené k zařízení:

[{  
  "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"
}]

Schéma telemetrie zařízení

Zprávy telemetrie zařízení musí být v platném formátu JSON s typem contentType nastaveným na application/json a contentEncoding nastaveným na UTF-8 ve vlastnostech systému zpráv. Tyto dvě vlastnosti nerozlišují mezi malými a velkými písmeny. Pokud kódování obsahu není nastavené, IoT Hub zapíše zprávy ve formátu kódování base 64.

Před publikováním do Event Gridu můžete rozšířit události telemetrie zařízení tak, že jako Event Grid vyberete koncový bod. Další informace najdete v tématu Rozšiřování zpráv pro zprávy IoT Hubu typu zařízení-do-cloudu.

Následující příklad ukazuje schéma události telemetrie zařízení:

[{  
  "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"
}]

Schéma vytvořené zařízením

Následující příklad ukazuje schéma události vytvořené zařízením:

[{
  "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"
}]

Výstraha

Data dvojčat přidružená k události vytvoření zařízení jsou výchozí konfigurací a neměli byste se spoléhat na skutečné authenticationType a další vlastnosti zařízení v nově vytvořeném zařízení. Pro vlastnosti nově vytvořeného zařízení, včetně authenticationType a dalších vlastností zařízení, použijte rozhraní API správce registru, které poskytují sady SDK pro Azure IoT.

Podrobný popis jednotlivých vlastností najdete ve službě Azure IoT Hub jako zdroj Event Gridu.

Filtrování událostí

Event Grid umožňuje filtrovat typy událostí, předměty a datový obsah. Při vytváření odběru služby Event Grid se můžete rozhodnout přihlásit k odběru vybraných událostí IoT.

  • Typ události: Seznam typů událostí ioT Hubu najdete v tématu Typy událostí.
  • Předmět: Pro události ioT Hubu je předmětem název zařízení. Předmět má formát devices/{deviceId}. Předměty můžete filtrovat na základě shody Začíná na (předpona) a Končí na (přípona). Filtr využívá operátor AND, takže události s předmětem, který odpovídá jak předponě, tak příponě, jsou doručovány odběrateli.
  • Datový obsah: IoT Hub naplní datový obsah pomocí formátu zprávy. Na základě obsahu zprávy telemetrie můžete zvolit, které události se doručí. Příklady najdete v části Rozšířené filtrování. Pro filtrování textu zprávy telemetrie je nutné nastavit contentType na application/json a contentEncoding na UTF-8 ve vlastnostech systému zpráv. Obě tyto vlastnosti neberou ohled na malá a velká písmena.

Pro události telemetrie zařízení ioT Hub vytvoří výchozí trasu zpráv s názvem RouteToEventGrid na základě předplatného. Pokud chcete filtrovat zprávy před odesláním telemetrických dat, aktualizujte směrovací dotaz.

Omezení událostí stavu připojení zařízení

Události připojené k zařízení a odpojené zařízení jsou k dispozici pro zařízení, která se připojují pomocí protokolu MQTT nebo AMQP, nebo pomocí některého z těchto protokolů přes WebSockets. Požadavky provedené pouze pomocí protokolu HTTPS neaktivují oznámení o stavu připojení zařízení.

Další informace o monitorování stavu zařízení pomocí Event Gridu najdete v tématu Monitorování stavu připojení zařízení.

Interval stavu připojení zařízení

IoT Hub se pokusí hlásit každou událost změny stavu připojení zařízení, ale některé se můžou zmeškat. IoT Hub minimálně hlásí události změny stavu připojení, ke kterým dochází 60 sekund od sebe. Toto chování může vést k výsledkům, jako je několik událostí připojení zařízení hlášených bez událostí odpojení zařízení.

Tipy pro využívání událostí

Aplikace, které zpracovávají události IoT Hubu, by měly fungovat v souladu s následujícími doporučenými postupy:

  • Je možné nakonfigurovat více odběrů na směrování událostí na stejnou obslužnou rutinu událostí, takže nepředpokládejte, že události pocházejí z konkrétního zdroje. Vždy zkontrolujte téma zprávy, abyste zajistili, že pochází z očekávaného centra IoT (IoT Hub).
  • Nepředpokládejte, že všechny přijímané události představují typ, který očekáváte. Před zpracováním zprávy vždy zkontrolujte vlastnost eventType.
  • Zprávy se můžou doručovat v odlišném pořadí nebo se zpožděním. Pole etag vám umožní zjistit, jestli jsou vaše informace o objektech aktuální pro události vytvoření nebo odstranění zařízení.

Další kroky