Dela via


Begär enhetsanslutningshändelser från Azure IoT Hub med hjälp av Azure Cosmos DB

Med Azure Event Grid kan du skapa händelsebaserade program och enkelt integrera IoT-händelser i dina affärslösningar. Den här artikeln vägleder dig genom en konfiguration med cosmos DB, logikapp, IoT Hub-händelser och en simulerad Raspberry Pi för att samla in och lagra anslutnings- och frånkopplingshändelser för en enhet.

Från det ögonblick enheten körs aktiveras en åtgärdsordning:

  1. Pi-enheten, med hjälp av din IoT Hub-enhetsnyckel, startas och stoppas sedan

  2. En IoT Hub-händelse registrerar enhetsaktiviteten och skickar sedan en HTTP-begäran till logikappen

  3. Logikappen bearbetar HTTP-begäran baserat på ett villkor som du anger

  4. Logikappen loggar anslutnings- eller frånkopplingshändelser till ett nytt dokument i Cosmos DB

    Skärmbild av konfigurationen som vi skapar för den här artikeln. Den här konfigurationen visar hur alla tjänster och enheter är anslutna.

Förutsättningar

  • Ett aktivt Azure Cosmos DB för NoSQL-konto. Om du inte har skapat något ännu kan du läsa Skapa ett databaskonto för en genomgång.

  • En samling i databasen. Se Lägga till en samling för en genomgång. När du skapar samlingen använder /id du för partitionsnyckeln.

  • En Azure-prenumeration Om du inte har en Azure-prenumeration skapar du en kostnadsfritt innan du börjar.

  • En IoT-hubb i din Azure-prenumeration. Om du inte har någon hubb ännu kan du följa stegen i Skapa en IoT-hubb.

Skapa en logikapp

Nu ska vi skapa en logikapp och lägga till en Event Grid-utlösare som övervakar resursgruppen för den virtuella datorn.

Skapa en resurs för en logikapp

  1. I Azure-portalen väljer du +Skapa en resurs, väljer Integrering och sedan Logikapp.

    Skärmbild av hur du hittar och väljer en logikapp i Azure-portalen.

  2. Fyll i formuläret för att skapa en ny logikapp som innehåller:

    • Din prenumeration

    • Din resursgrupp (eller skapa en ny)

    • Ett Logic App-namn som är unikt i din prenumeration

    • Regionen för din IoT-hubb

    • Ett nej för att aktivera log analytics

    • En plantyp för förbrukning

      Kommentar

      Typ av förbrukningsplan är det alternativ som aktiverar logikappdesignern i användargränssnittet. Om du väljer Standard (standard) måste du skapa ett nytt arbetsflöde för att logikappdesignern ska bli tillgänglig.

    Skärmbild av hur du skapar en logikapp i Azure-portalen.

  3. Välj Granska + Skapa för att granska konfigurationen och välj sedan Skapa för att skapa logikappen.

  4. Du har nu skapat en Azure-resurs för din logikapp. När Azure har distribuerat logikappen väljer du Gå till resurs. Logikappdesignern visar mallar för vanliga mönster så att du kan komma igång snabbare.

  5. I Logikappdesignern bläddrar du tills du ser avsnittet Mallar och väljer sedan Tom logikapp så att du kan skapa logikappen från grunden.

Välj en utlösare

En utlösare är en specifik händelse som startar din logikapp. I den här självstudien tar utlösaren som utlöser arbetsflödet emot en begäran via HTTP.

  1. I sökfältet för anslutningsappar och utlösare skriver du HTTP och trycker på Retur.

  2. Välj begäran När en HTTP-begäran tas emot som utlösare.

    Skärmbild av hur du hittar välj utlösare för HTTP-begäran.

  3. Välj Använd exempel på nyttolast för att skapa schema.

    Skärmbild av hur du använder en exempelnyttolast för att generera ett schema.

  4. Klistra in följande JSON-exempelkod i textrutan och välj sedan Klar.

    Den här JSON-filen används bara som en mall, så de exakta värdena är inte viktiga.

    [{
     "id": "fbfd8ee1-cf78-74c6-dbcf-e1c58638ccbd",
     "topic":
       "/SUBSCRIPTIONS/DEMO5CDD-8DAB-4CF4-9B2F-C22E8A755472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/MYIOTHUB",
     "subject": "devices/Demo-Device-1",
     "eventType": "Microsoft.Devices.DeviceConnected",
     "eventTime": "2018-07-03T23:20:11.6921933+00:00",
     "data": {
       "deviceConnectionStateEventInfo": {
         "sequenceNumber":
           "000000000000000001D4132452F67CE200000002000000000000000000000001"
       },
       "hubName": "MYIOTHUB",
       "deviceId": "48e44e11-1437-4907-83b1-4a8d7e89859e",
       "moduleId": ""
     },
     "dataVersion": "1",
     "metadataVersion": "1"
    }]
    

    Skärmbild av JSON-exempelnyttolasten som klistras in i textrutan i Azure.

Skapa ett villkor

Villkor hjälper dig att köra specifika åtgärder när du har godkänt det specifika villkoret. För den här artikeln är villkoret att kontrollera om eventType antingen är ansluten till enheten eller om enheten är frånkopplad. Åtgärden som körs när eventType är sant är skapandet av ett dokument i Azure Cosmos DB. Det här villkoret skapas i logikappdesignern.

  1. Välj + Nytt steg, sedan fliken Inbyggd och leta sedan upp och välj kontrollen Med namnet Villkor.

  2. I ditt villkor ändrar du Och till Eller, eftersom vi vill samla in anslutningshändelser eller frånkopplingshändelser i en enda pars.

  3. Välj i rutan Välj ett värde så visas ett popup-fönster som visar dynamiskt innehåll – de fält som kan väljas.

    • Välj eventType. Popup-fönstret stängs och brödtexten placeras automatiskt i Välj utdata från föregående steg. Välj Villkor för att öppna villkorssatsen igen.

    • Behåll är lika med värdet.

    • Skriv in Microsoft.Devices.DeviceConnected som det sista värdet för den raden.

    • Välj + Lägg till för att lägga till ytterligare en rad.

    • Den andra raden liknar den första raden, förutom att vi letar efter frånkopplingshändelser.

      Använd eventType, är lika med och Microsoft.Devices.DeviceDisconnected för radvärdena.

      Skärmbild av det fullständiga villkoret För varje villkor.

  4. I dialogrutan if true klickar du på Lägg till en åtgärd.

    Skärmbild av rutan

  5. Sök efter Cosmos DB och välj Azure Cosmos DB – Skapa eller uppdatera dokument (V3)

    Skärmbild av sökningen efter Azure Cosmos DB.

  6. Du ser panelen Skapa eller uppdatera dokument (V3). Ange följande värden för fälten:

    Azure Cosmos DB-kontonamn: {Lägg till ditt kontonamn}

    Databas-ID: ToDoList

    Samlings-ID: Objekt

    Dokument: Välj Current item från parameterlistan för dynamiskt innehåll

    Skärmbild som visar objektet Kör lagrad procedur (V3) med

  7. Spara logikappen.

Kopiera HTTP-URL:en

Innan du lämnar Logic Apps Designer kopierar du url:en som logikappen lyssnar på efter en utlösare. Du använder den här URL:en för att konfigurera Event Grid.

  1. Expandera konfigurationsrutan När en HTTP-begäran tas emot genom att välja den.

  2. Kopiera värdet för HTTP POST-URL genom att välja kopieringsknappen bredvid det.

    Skärmbild av var du hittar HTTP-URL:en som ska kopieras.

  3. Spara den här URL:en så att du kan använda den i nästa avsnitt.

Konfigurera prenumerationen för IoT Hub-händelser

I det här avsnittet ska du konfigurera din IoT-hubb så att den publicerar händelser när de inträffar.

  1. Gå till din IoT-hubb på Azure Portal.

  2. Välj händelser.

    Skärmbild av var knappen Händelser finns på IoT Hub-menyn.

  3. Välj + Händelseprenumeration.

    Skapa ny händelseprenumeration

  4. Fyll i information om händelseprenumeration: ange ett beskrivande namn och välj Event Grid-schema som händelseschema.

  5. Skapa ett systemämnesnamn för din IoT Hub-resurs.

  6. Fyll i fälten Händelsetyper . I listrutan väljer du endast Enhet ansluten och Enheten är frånkopplad från menyn. Klicka någon annanstans på skärmen för att stänga listan och spara dina val.

    Ange händelsetyper som ska sökas efter

  7. För Slutpunktsinformation väljer du Slutpunktstyp som Web Hook och klickar på välj slutpunkt och klistrar in url:en som du kopierade från logikappen och bekräftar markeringen.

    Välj slutpunkts-URL

  8. Formuläret bör nu se ut ungefär som i följande exempel:

    Skärmbild av formuläret för att skapa en händelseprenumeration.

    Välj Skapa för att spara händelseprenumerationen.

    Viktigt!

    Vänta några minuter tills händelsen har bearbetats innan du kör enheten. När Azure-tjänster skapas eller ändras kan det leda till onödiga fel när du initierar nästa steg i pipelinen för tidigt. Om din IoT-hubb till exempel inte är i ett aktivt tillstånd är den inte redo att ta emot händelser. Kontrollera sidan Översikt över IoT Hub för att se om din IoT-hubb är i ett aktivt tillstånd eller inte. Om det inte är det visas en varning överst på sidan.

    Skärmbild av ett IoT Hub-fel som säger att det inte är i ett aktivt tillstånd.

Kör enheten och observera händelser

Nu när din händelseprenumeration har konfigurerats ska vi testa genom att ansluta en enhet.

Registrera en enhet i IoT Hub

  1. Från din IoT-hubb väljer du Enheter.

  2. Välj + Lägg till enhet överst i fönstret.

  3. Ange Demo-Device-1 för Enhets-ID.

  4. Välj Spara.

    Skärmbild av platsen för knappen Lägg till enhet.

  5. Klicka på enheten igen. nu fylls niska veze och nycklar i. Kopiera och spara den primära anslutningssträngen för senare användning.

    Skärmbild av platsen för enhetens primära anslutningssträng.

Starta Raspberry Pi-simulatorn

Nu ska vi använda Raspberry Pi-webbsimulatorn för att simulera enhetsanslutning.

Starta Raspberry Pi-simulatorn

Kör ett exempelprogram på Raspberry Pi-webbsimulatorn

Den här exempelappen utlöser en enhetsansluten händelse.

  1. I kodningsområdet ersätter du platshållaren på rad 15 med din Azure IoT Hub-enhet niska veze som du sparade i slutet av föregående avsnitt.

    Skärmbild av var du lägger till din primära niska veze i Raspberry Pi-skriptet.

  2. Kör programmet genom att välja Kör.

    Du ser något som liknar följande utdata som visar sensordata och meddelanden som skickas till din IoT-hubb.

    Skärmbild av vad du kan förvänta dig i utdatakonsolen när du kör Raspberry Pi.

  3. Du kan kontrollera sidan Översikt över logikappen för att kontrollera om logiken utlöses. Det står Lyckades eller Misslyckades. Om du checkar in här får du veta logikappens tillstånd om felsökning behövs. Förvänta dig en fördröjning på 15–30 sekunder från när utlösaren körs. Om du behöver felsöka logikappen kan du läsa artikeln Felsöka fel.

    Skärmbild av statusuppdateringarna på sidan Översikt för logikappen.

  4. Välj Stoppa för att stoppa simulatorn, som utlöser en enhets frånkopplad händelse. Den här händelsen loggar in på sidan Översikt över logikappen, precis som anslutningshändelsen loggades där.

Nu har du kört ett exempelprogram för att samla in anslutnings- och frånkopplingshändelser för din enhet, som går till din IoT-hubb.

Observera händelser i Azure Cosmos DB

Du kan se resultatet av den körda logikappen i cosmos DB-dokumentet. Dokumentet visas i samlingen Objekt när du uppdaterar sidan. Varje anslutningstillståndshändelse genererar ett nytt dokument som har tilldelats en unik id. Följande bild visar dokumentet som skapades när enheten startades (ansluten). Den anslutna händelsetypen visas i JSON-utdata.

Skärmbild av den nyligen genererade anslutningstillståndshändelsen i en Cosmos DB-samling.

Använda Azure CLI

I stället för att använda Azure-portalen kan du utföra IoT Hub-stegen med hjälp av Azure CLI. Mer information finns på Azure CLI-sidorna för att skapa en händelseprenumeration och skapa en IoT-enhet.

Rensa resurser

I den här självstudiekursen användes resurser som medför kostnader för din Azure-prenumeration. När du är klar med att testa självstudien och testa dina resultat inaktiverar eller tar du bort resurser som du inte vill behålla.

Logikapp

Om du inte vill förlora det arbete du gjort i logikappen inaktiverar du den i stället för att ta bort den.

  1. Gå till logikappen.

  2. På bladet Översikt väljer du Ta bort eller Inaktivera.

    Varje prenumeration kan ha en kostnadsfri IoT-hubb. Om du har skapat en kostnadsfri hubb för den här självstudiekursen behöver du inte ta bort den för att undvika kostnader.

IoT Hub eller Event Grid

  1. Gå till IoT-hubben.

  2. På bladet Översikt väljer du Ta bort.

  3. Även om du behåller din IoT-hubb kanske du vill ta bort händelseprenumerationen som du skapade. Välj Event Grid i IoT-hubben.

  4. Välj den händelseprenumeration som du vill ta bort och välj sedan Ta bort.

Cosmos DB

Om du vill ta bort ett Azure Cosmos DB-konto från Azure-portalen går du till resursen och väljer Ta bort konto i den översta menyraden. Se detaljerade instruktioner för att ta bort ett Azure Cosmos DB-konto.

Nästa steg