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:
Pi-enheten, med hjälp av din IoT Hub-enhetsnyckel, startas och stoppas sedan
En IoT Hub-händelse registrerar enhetsaktiviteten och skickar sedan en HTTP-begäran till logikappen
Logikappen bearbetar HTTP-begäran baserat på ett villkor som du anger
Logikappen loggar anslutnings- eller frånkopplingshändelser till ett nytt dokument i Cosmos DB
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
I Azure-portalen väljer du +Skapa en resurs, väljer Integrering och sedan Logikapp.
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.
Välj Granska + Skapa för att granska konfigurationen och välj sedan Skapa för att skapa logikappen.
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.
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.
I sökfältet för anslutningsappar och utlösare skriver du HTTP och trycker på Retur.
Välj begäran När en HTTP-begäran tas emot som utlösare.
Välj Använd exempel på nyttolast för att skapa schema.
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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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" }]
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.
Välj + Nytt steg, sedan fliken Inbyggd och leta sedan upp och välj kontrollen Med namnet Villkor.
I ditt villkor ändrar du Och till Eller, eftersom vi vill samla in anslutningshändelser eller frånkopplingshändelser i en enda pars.
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.
I dialogrutan if true klickar du på Lägg till en åtgärd.
Sök efter Cosmos DB och välj Azure Cosmos DB – Skapa eller uppdatera dokument (V3)
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ållSpara 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.
Expandera konfigurationsrutan När en HTTP-begäran tas emot genom att välja den.
Kopiera värdet för HTTP POST-URL genom att välja kopieringsknappen bredvid det.
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.
Gå till din IoT-hubb på Azure Portal.
Välj händelser.
Välj + Händelseprenumeration.
Fyll i information om händelseprenumeration: ange ett beskrivande namn och välj Event Grid-schema som händelseschema.
Skapa ett systemämnesnamn för din IoT Hub-resurs.
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.
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.
Formuläret bör nu se ut ungefär som i följande exempel:
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.
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
Från din IoT-hubb väljer du Enheter.
Välj + Lägg till enhet överst i fönstret.
Ange
Demo-Device-1
för Enhets-ID.Välj Spara.
Klicka på enheten igen. nu fylls niska veze och nycklar i. Kopiera och spara den primära anslutningssträngen för senare användning.
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.
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.
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.
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.
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.
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.
Gå till logikappen.
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
Gå till IoT-hubben.
På bladet Översikt väljer du Ta bort.
Ä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.
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
Läs mer om att reagera på IoT Hub-händelser med Event Grid för att utlösa åtgärder
Lär dig mer om vad du kan göra med Event Grid
Lär dig hur du använder Event Grid och Azure Monitor för att övervaka, diagnostisera och felsöka enhetsanslutningar till IoT Hub