Oefening: Azure Cosmos DB integreren met de IoT-gegevenspijplijn

Voltooid

Deze oefening biedt een overzicht van het instellen van de verzameling, verwerking en opslag van IoT-telemetrie die wordt gegenereerd met behulp van een Azure IoT Central-toepassing.

In deze oefening gaat u het volgende doen:

  • Een Azure IoT Central-toepassing maken.
  • Maak een Azure-functie die een nettolading van een HTTP-aanvraag registreert.
  • IoT-telemetrieregels van een Azure IoT Central-toepassing configureren en valideren.

Vereisten

Als u deze oefening wilt uitvoeren, hebt u het volgende nodig:

  • Een Microsoft-account of een Microsoft Entra-account met de rol Global Beheer istrator in de Microsoft Entra-tenant. De tenant moet zijn gekoppeld aan het Azure-abonnement en aan de rol Eigenaar of Inzender in het Azure-abonnement.
  • De oefeningseenheid Azure Cosmos DB instellen.
  • Een actief Azure-abonnement. Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Een Azure IoT Central-toepassing maken

  1. Navigeer naar de pagina IoT Central-toepassing maken in Azure Portal. Meld u aan met uw Azure-account als u daarom wordt gevraagd.

  2. Voer de volgende informatie in:

    Veld Beschrijving
    Abonnement Het Azure-abonnement dat u wilt gebruiken.
    Resourcegroep De resourcegroep die u wilt gebruiken. Maak een nieuwe resourcegroep of gebruik een bestaande.
    Resourcenaam Een geldige Azure-resourcenaam, zoals adatum-iot-custom-application.
    Toepassings-URL Een URL-subdomein voor uw toepassing, zoals adatum-iot-custom-application. De URL voor een IoT Central-toepassing ziet er als volgt uit https://adatum-iot-custom-application.azureiotcentral.com.
    Template In-Store Analytics - Bewaking van voorwaarden
    Regio De Azure-regio die u wilt gebruiken.
    Prijsoverzicht Selecteer een van de standaardprijsplannen. Zie prijzen voor Azure IoT Central voor meer informatie over prijzen.
  3. Selecteer Controleren + maken. Selecteer vervolgens Maken.

Wanneer de app klaar is, kunt u er vanuit Azure Portal naartoe navigeren:

Screenshot that shows the IoT Central application resource in the Azure portal. The application URL is highlighted.

Tip

Als u alle IoT Central-toepassingen wilt weergeven die u toegang hebt, gaat u naar IoT Central-toepassingen.

In een paar minuten of minder wordt de dashboardpagina weergegeven. Bekijk de telemetrie en analyse van de Azure IoT Central-voorbeeldtoepassing:

  1. Selecteer Apparaten op de dashboardpagina van de IoT Central-toepassingsportal in het verticale menu.

  2. Selecteer Thermostaatzone1 in de sectie Thermostaat.

  3. Controleer in het deelvenster Thermostaatzone1 de inhoud van het tabblad Dashboard .

    Screenshot of the Dashboard tab of the 'Thermostat-Zone1' device pane in the IoT Central Application portal.

  4. Selecteer het tabblad Onbewerkte gegevens en controleer de inhoud.

    Screenshot of the Raw data tab of the 'Thermostat-Zone1' device pane in the IoT Central Application portal.

Een Azure-functie maken die een nettolading van een HTTP-aanvraag registreert

In deze taak maakt u een Azure Function-app waarmee de HTTP-webhookfunctionaliteit wordt geïmplementeerd. Pas deze functionaliteit toe om de telemetriegegevens van de Azure IoT Central-toepassing door te sturen door een toepassingsregel te maken.

  1. Start een webbrowser, navigeer naar Azure Portal en meld u aan bij het Azure-abonnement dat u voor deze module gebruikt.

  2. Gebruik het tekstvak Zoekbronnen, services en documenten om te zoeken naar functie-app.

  3. Selecteer + Maken in het deelvenster Functie-app.

  4. Configureer de volgende instellingen op het tabblad Basisbeginselen en selecteer Vervolgens Beoordelen en maken.

    Instelling Configuratie
    Abonnement Selecteer de naam van het Azure-abonnement dat u voor deze module gebruikt.
    Resourcegroep Maak een nieuwe resourcegroep met de naam function-app-RG.
    Functions App-naam Voer een unieke naam in die bestaat uit kleine letters, cijfers of streepjes en begint met een letter.
    Publiceren Selecteer Code.
    Runtimestack Selecteer .NET.
    Versie Selecteer versie 6 (LTS), procesmodel.
    Regio Selecteer de Azure-regio die het dichtst bij de locatie van uw testomgeving ligt, bij voorkeur die overeenkomt met de locatie die u hebt gekozen voor de Azure IoT Central-implementatie.
    Besturingssysteem Vensters
    Abonnementtype Verbruik (serverloos)

    Screenshot of the Basics tab of the Create Function App pane in the Azure portal.

  5. Selecteer Maken.

    Notitie

    Wacht tot het inrichten van de Azure Function-app is voltooid. Dit kan ongeveer twee minuten duren.

  6. Wanneer de implementatie van de Azure Function-app is voltooid, selecteert u Ga naar de resource.

  7. Selecteer in het deelvenster Azure-functie-app onder Maken in Azure Portal de optie Functie Maken.

  8. Geef in het deelvenster Functie toevoegen de volgende instellingen op en selecteer Vervolgens Maken.

    Instelling Configuratie
    Ontwikkelomgeving Ontwikkelen in portal
    Template HTTP-trigger
    Nieuwe functie HttpTrigger1
    Autorisatieniveau Functie

    Screenshot of the 'Add function' pane of the Azure Function app in the Azure portal.

  9. Selecteer In het deelvenster HttpTrigger1 integratie in het menu.

    Screenshot of the Integration function pane of the Azure Function app in the Azure portal.

  10. Selecteer + Uitvoer toevoegen in de rechthoek met het label Uitvoer.

  11. Configureer de volgende instellingen en selecteer Vervolgens Toevoegen:

    Instelling Configuratie
    Bindingstype Selecteer Azure Cosmos DB.
    Parameternaam van document Vervang de standaardwaarde door outDoc.
    Databasenaam Voer de naam in van de database die u in de vorige oefening hebt gemaakt, iotdb.
    Verzamelingsnaam Voer iotcollection in.
    Indien waar, wordt de Cosmos DB-database gemaakt Selecteer Ja.
    Cosmos DB-accountverbinding Selecteer Nieuw. Controleer in het pop-upvenster nieuwe Cosmos DB-verbinding of de optie Azure Cosmos DB-account is geselecteerd. Selecteer in de vervolgkeuzelijst Databaseaccount de vermelding die het Cosmos DB-account vertegenwoordigt dat u in de vorige oefening hebt gemaakt en selecteer vervolgens OK.
    Partitiesleutel (optioneel) Voer /pk/timestamp/deviceid in.

    Screenshot of the Create Output pane of the HttpTrigger1 Integration pane of an Azure function in the Azure portal.

    Notitie

    Wanneer u een optimale partitiesleutel kiest, is het belangrijk om rekening te houden met de gebruikspatronen en de limiet voor de grootte van logische partities van 20 GB. U kunt bijvoorbeeld een synthetische partitiesleutel maken die bestaat uit een combinatie van deviceId en datum.

  12. Selecteer Code + Test.

  13. Vervang de bestaande code door de volgende inhoud en selecteer Opslaan.

    #r "Newtonsoft.Json"
    
    using Microsoft.Azure.WebJobs.Host;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;
    using Microsoft.Extensions.Logging;
    using Microsoft.AspNetCore.Mvc;
    
    public static void Run(HttpRequest req, out object outDoc, ILogger log)
    {
      log.LogInformation($"C# Queue trigger function processed: {req.Body}");
    
      string requestBody = new StreamReader(req.Body).ReadToEnd();
      dynamic iotDataJson = JObject.Parse(requestBody);
      dynamic iotData = JsonConvert.DeserializeObject<dynamic>(iotDataJson.ToString());
    
      log.LogInformation($"{iotData}");
    
      outDoc = new {
        pk = iotData.device.id + "-" + iotData.timestamp.ToString("yyyyMMdd"),
        timestamp = iotData.timestamp,
        deviceId = iotData.device.id,
        temperature = iotData.device.telemetry.Thermostat_1o.temp.value
      };
    }
    

    Screenshot of the Code + Test pane of the HttpTrigger1 of the Azure Function app in the Azure portal displaying the code.

    Notitie

    De functie registreert de nettolading op basis van JSON van de HTTP-aanvraag en maakt afzonderlijke JSON-elementen die moeten worden opgeslagen in een afzonderlijk document van de Cosmos DB-doelverzameling die overeenkomt met de functie-uitvoer die u hebt geconfigureerd. U kunt het pk-element gebruiken, dat bestaat uit de samengevoegde eigenschap deviceId en de datum van het verzamelde telemetriegegevenspunt, als partitiesleutel.

  14. Selecteer Functie-URL ophalen voor de functiesleutel en noteer de waarde ervan.

    Screenshot of the Code + Test pane of the HttpTrigger1 of the Azure Function app in the Azure portal, with the Get function URL pop-up window.

IoT-telemetrieregels van een Azure IoT Central-toepassing configureren en valideren

  1. Ga terug naar het browservenster met de pagina Apparaten van de Azure IoT Central-toepassing die u eerder in deze oefening hebt gemaakt.

  2. Selecteer Regels in het verticale menu van de IoT Central-toepassingsportal.

  3. Selecteer + Nieuw en configureer de volgende instellingen:

    Instelling Configuratie
    Naam van de regel Voer een IoT-telemetrieregel voor Adatum in.
    Apparaatsjabloon Selecteer Thermostaat.
    Tijdverzameling Zorg ervoor dat de instellingen zijn uitgeschakeld.
    Telemetrie Selecteer Temperatuur.
    Operator Selecteer is groter dan.
    Voer een waarde in Voer 0 in.
    Actie Selecteer + Webhook.
    Weergavenaam Voer de Webhook van de Azure-functie in.
    URL voor aanroep Plak de waarde van de Azure-functie-URL die u in de vorige taak van deze oefening hebt vastgelegd.

    Screenshot of the first part of the sample Azure IoT Central application rule.

    Screenshot of the second part of the sample Azure IoT Central application rule.

    Notitie

    De waarde van de temperatuurtelemetrie is opzettelijk kunstmatig laag om de webhookfunctionaliteit aan te roepen en de functie te activeren. In praktijkscenario's past u deze aan zodat deze overeenkomt met de voorwaarde die de gegevensverzameling rechtvaardigt die u wilt opslaan in de doelverzameling van Cosmos DB.

  4. Selecteer Gereed en selecteer Opslaan.

  5. Ga terug naar het browservenster met httpTrigger1 | Het deelvenster Code en test in Azure Portal.

  6. Selecteer Controleren en selecteer vervolgens het tabblad Logboeken .

  7. Controleer of in het deelvenster Logboeken de berichten worden weergegeven die zijn gegenereerd als reactie op de HTTP-trigger die afkomstig is van de Azure IoT Central-toepassingswebhook die u eerder in deze taak hebt geconfigureerd.

  8. Ga naar het browservenster met het deelvenster Data Explorer van het Cosmos DB-account dat u in de vorige oefening hebt ingericht.

  9. Selecteer in de sectie NOSQL-API de knop Vernieuwen met cirkelvormige pijl, vouw het iotdb-knooppunt en de iotcollection erin uit. Selecteer het knooppunt Items en selecteer vervolgens het eerste document in de lijst met items.

  10. Controleer of in hetdetailvenster van het tabblad Items in het venster Data Explorer de telemetriegegevens worden weergegeven die zijn gegenereerd door apparaten die zijn geregistreerd bij de Azure Central IoT-toepassing en worden verwerkt door de Azure-functie, inclusief pk, tijdstempel, deviceId en temperatuur.

    Screenshot of the Azure Cosmos DB items. The items represent the telemetry data generated by devices registered with Azure IoT Central and processed by the Azure function.

Resultaten

Gefeliciteerd U hebt de tweede oefening van deze module voltooid. In deze oefening hebt u een Azure IoT Central-toepassing gemaakt.